Browse Source

Add incomplete OK implementation which *mostly* works. Fixed description invalid name.

pull/517/head^2
Ciprian Khlud 11 years ago
parent
commit
d64f0c8dea
  1. 4
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileViewModel.cs
  2. 2
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileWindow.xaml
  3. 47
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileWindow.xaml.cs

4
src/Main/Base/Project/Src/Gui/Dialogs/NewFileViewModel.cs

@ -111,13 +111,15 @@ namespace ICSharpCode.SharpDevelop.Gui
set { _searchFor = value; } set { _searchFor = value; }
} }
public string FileName { get; set; }
public string Description public string Description
{ {
get get
{ {
return SelectedItem == null return SelectedItem == null
? string.Empty ? string.Empty
: SelectedItem.Template.Description; : SelectedItem.Description;
} }
set { } set { }

2
src/Main/Base/Project/Src/Gui/Dialogs/NewFileWindow.xaml

@ -78,7 +78,7 @@
<ColumnDefinition /> <ColumnDefinition />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Text="File name: " VerticalAlignment="Center" /> <TextBlock Text="File name: " VerticalAlignment="Center" />
<TextBox Grid.Column="1" Text="{Binding ItemFileName}" x:Name="fileNameTextBox" /> <TextBox Grid.Column="1" Text="{Binding FileName}" x:Name="fileNameTextBox" />
</Grid> </Grid>
<widgets:UniformGridWithSpacing Columns="2" HorizontalAlignment="Right" Margin="0,4,12,12"> <widgets:UniformGridWithSpacing Columns="2" HorizontalAlignment="Right" Margin="0,4,12,12">
<Button <Button

47
src/Main/Base/Project/Src/Gui/Dialogs/NewFileWindow.xaml.cs

@ -9,7 +9,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.IO;
using System.Linq; using System.Linq;
using System.Text;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using ICSharpCode.Core; using ICSharpCode.Core;
@ -91,6 +93,28 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
private void okButtonClick(object sender, RoutedEventArgs e) private void okButtonClick(object sender, RoutedEventArgs e)
{ {
var selectedTemplate = ViewModel.SelectedItem;
var fileName = ViewModel.FileName;
var standardNamespace = "DefaultNamespace";
var localizedTypeDescriptor = selectedTemplate.Template.CreateCustomizationObject();
var options = new FileTemplateOptions
{
ClassName =
GenerateValidClassOrNamespaceName(Path.GetFileNameWithoutExtension(ViewModel.FileName), false),
FileName = FileName.Create(fileName),
IsUntitled = ViewModel.AllowUntitledFiles,
Namespace = standardNamespace,
CustomizationObject = localizedTypeDescriptor,
Project = ViewModel.Project
};
var result = selectedTemplate.Template.Create(options);
DialogResult = true;
if (result != null)
selectedTemplate.Template.RunActions(result);
Close(); Close();
} }
@ -98,6 +122,29 @@ namespace ICSharpCode.SharpDevelop.Gui
{ {
Close(); Close();
} }
internal static string GenerateValidClassOrNamespaceName(string className, bool allowDot)
{
if (className == null)
throw new ArgumentNullException("className");
className = className.Trim();
if (className.Length == 0)
return string.Empty;
StringBuilder nameBuilder = new StringBuilder();
if (className[0] != '_' && !char.IsLetter(className, 0))
nameBuilder.Append('_');
for (int idx = 0; idx < className.Length; ++idx) {
if (Char.IsLetterOrDigit(className[idx]) || className[idx] == '_') {
nameBuilder.Append(className[idx]);
} else if (className[idx] == '.' && allowDot) {
nameBuilder.Append('.');
} else {
nameBuilder.Append('_');
}
}
return nameBuilder.ToString();
}
void CategoryTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) void CategoryTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{ {
ViewModel.SelectedCategory = (NewFileCategory)categoryTreeView.SelectedItem; ViewModel.SelectedCategory = (NewFileCategory)categoryTreeView.SelectedItem;

Loading…
Cancel
Save