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. 49
      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 @@ -111,13 +111,15 @@ namespace ICSharpCode.SharpDevelop.Gui
set { _searchFor = value; }
}
public string FileName { get; set; }
public string Description
{
get
{
return SelectedItem == null
? string.Empty
: SelectedItem.Template.Description;
: SelectedItem.Description;
}
set { }

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

@ -78,7 +78,7 @@ @@ -78,7 +78,7 @@
<ColumnDefinition />
</Grid.ColumnDefinitions>
<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>
<widgets:UniformGridWithSpacing Columns="2" HorizontalAlignment="Right" Margin="0,4,12,12">
<Button

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

@ -9,7 +9,9 @@ @@ -9,7 +9,9 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using ICSharpCode.Core;
@ -90,7 +92,29 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -90,7 +92,29 @@ namespace ICSharpCode.SharpDevelop.Gui
return node;
}
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();
}
@ -98,6 +122,29 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -98,6 +122,29 @@ namespace ICSharpCode.SharpDevelop.Gui
{
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)
{
ViewModel.SelectedCategory = (NewFileCategory)categoryTreeView.SelectedItem;

Loading…
Cancel
Save