Browse Source

Project and file templates now support subcategories.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@986 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 20 years ago
parent
commit
a9071e9809
  1. 1
      data/templates/file/CSharp/CSharp.Gtk.Window.xft
  2. 1
      data/templates/file/CSharp/CSharp.WPFFlowDocument.xft
  3. 1
      data/templates/file/CSharp/CSharp.WPFPage.xft
  4. 1
      data/templates/file/CSharp/CSharp.WPFPageFunction.xft
  5. 1
      data/templates/file/CSharp/CSharp.WPFResourceDictionary.xft
  6. 1
      data/templates/file/CSharp/CSharp.WPFUserControl.xft
  7. 1
      data/templates/file/CSharp/CSharp.WPFWindow.xft
  8. 3
      data/templates/project/CSharp/ConsoleProject.xpt
  9. 3
      data/templates/project/CSharp/ControlLibrary.xpt
  10. 3
      data/templates/project/CSharp/Direct3DProject.xpt
  11. 3
      data/templates/project/CSharp/EmptyProject.xpt
  12. 3
      data/templates/project/CSharp/FormsProject.xpt
  13. 5
      data/templates/project/CSharp/GladeProject.xpt
  14. 3
      data/templates/project/CSharp/GtkProject.xpt
  15. 3
      data/templates/project/CSharp/Library.xpt
  16. 3
      data/templates/project/CSharp/Service.xpt
  17. 3
      data/templates/project/CSharp/WPFApplication.xpt
  18. 3
      data/templates/project/CSharp/WPFNavigationApplication.xpt
  19. 10
      src/Main/Base/Project/Resources/NewProjectDialog.xfrm
  20. 49
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
  21. 52
      src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs
  22. 10
      src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs
  23. 11
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs

1
data/templates/file/CSharp/CSharp.Gtk.Window.xft

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
name = "Gtk# Window"
icon = "C#.File.Form"
category = "C#"
subcategory = "Mono"
defaultname = "Window${Number}.cs"
language = "C#"/>

1
data/templates/file/CSharp/CSharp.WPFFlowDocument.xft

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
name = "WinFX Flow Document"
icon = "Icons.32x32.XMLFileIcon"
category = "C#"
subcategory = "WinFX"
defaultname = "FlowDocument${Number}.xaml"
language = "XML"/>

1
data/templates/file/CSharp/CSharp.WPFPage.xft

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
name = "WinFX Page"
icon = "Icons.32x32.XMLFileIcon"
category = "C#"
subcategory = "WinFX"
defaultname = "Page${Number}.xaml"
language = "C#"/>

1
data/templates/file/CSharp/CSharp.WPFPageFunction.xft

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
name = "WinFX Page Function"
icon = "Icons.32x32.XMLFileIcon"
category = "C#"
subcategory = "WinFX"
defaultname = "PageFunction${Number}.xaml"
language = "XML"/>

1
data/templates/file/CSharp/CSharp.WPFResourceDictionary.xft

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
<Config
name = "WinFX Resource Dictionary"
icon = "Icons.32x32.XMLFileIcon"
subcategory = "WinFX"
category = "C#"
defaultname = "Dictionary${Number}.xaml"
language = "XML"/>

1
data/templates/file/CSharp/CSharp.WPFUserControl.xft

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
name = "WinFX User Control"
icon = "Icons.32x32.XMLFileIcon"
category = "C#"
subcategory = "WinFX"
defaultname = "UserControl${Number}.xaml"
language = "XML"/>

1
data/templates/file/CSharp/CSharp.WPFWindow.xft

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
name = "WinFX Window"
icon = "Icons.32x32.XMLFileIcon"
category = "C#"
subcategory = "WinFX"
defaultname = "Window${Number}.xaml"
language = "C#"/>

3
data/templates/project/CSharp/ConsoleProject.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Mike Krueger"
created = "06/10/2001"
lastModified = "23/04/2005">
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.ConsoleProject.Name}</Name>
<Category>C#</Category>
<Subcategory>Windows Applications</Subcategory>
<Icon>C#.Project.DOSProject</Icon>
<LanguageName>C#</LanguageName>
<Description>${res:Templates.Project.ConsoleProject.Description}</Description>

3
data/templates/project/CSharp/ControlLibrary.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Mike Krueger"
created = "06/10/2001"
lastModified = "23/04/2005">
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.UserControlLibrary.Name}</Name>
<Category>C#</Category>
<Subcategory>Windows Applications</Subcategory>
<Icon>C#.Project.ControlLibrary</Icon>
<LanguageName>C#</LanguageName>
<Description>${res:Templates.Project.UserControlLibrary.Description}</Description>

3
data/templates/project/CSharp/Direct3DProject.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Mike Krueger"
created = "22/01/2003"
lastModified = "23/04/2005">
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.Direct3DApplication.Name}</Name>
<Category>C#</Category>
<Subcategory>Windows Applications</Subcategory>
<Icon>C#.Project.FullProject</Icon>
<LanguageName>C#</LanguageName>
<Description>${res:Templates.Project.Direct3DApplication.Description}</Description>

3
data/templates/project/CSharp/EmptyProject.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Mike Krueger"
created = "01/10/2001"
lastModified = "02/01/2003">
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.EmptyProject.Name}</Name>
<Category>C#</Category>
<Subcategory>Other</Subcategory>
<Icon>C#.Project.EmptyProject</Icon>
<LanguageName>C#</LanguageName>
<Description>${res:Templates.Project.EmptyProject.Description}</Description>

3
data/templates/project/CSharp/FormsProject.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Mike Krueger"
created = "06/10/2001"
lastModified = "23/04/2005">
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.WindowsApplication.Name}</Name>
<Category>C#</Category>
<Subcategory>Windows Applications</Subcategory>
<Icon>C#.Project.Form</Icon>
<LanguageName>C#</LanguageName>
<Description>${res:Templates.Project.WindowsApplication.Description}</Description>

5
data/templates/project/CSharp/GladeProject.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Matt Ward"
created = "01/01/2006"
lastModified = "09/01/2006">
created = "01/10/2001"
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>Glade# Application</Name>
<Category>C#</Category>
<Subcategory>Mono</Subcategory>
<Icon>C#.Project.Form</Icon>
<LanguageName>C#</LanguageName>
<Description>A project that creates a Glade# application</Description>

3
data/templates/project/CSharp/GtkProject.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Matt Ward"
created = "01/01/2006"
lastModified = "09/01/2006">
lastModified = "11/06/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>Gtk# Application</Name>
<Category>C#</Category>
<Subcategory>Mono</Subcategory>
<Icon>C#.Project.Form</Icon>
<LanguageName>C#</LanguageName>
<Description>A project that creates a Gtk# application</Description>

3
data/templates/project/CSharp/Library.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Mike Krueger"
created = "02/01/2003"
lastModified = "23/04/2005">
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.ClassLibrary.Name}</Name>
<Category>C#</Category>
<Subcategory>Other</Subcategory>
<Icon>C#.Project.Library</Icon>
<LanguageName>C#</LanguageName>
<Description>${res:Templates.Project.ClassLibrary.Description}</Description>

3
data/templates/project/CSharp/Service.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Mike Krueger"
created = "02/01/2003"
lastModified = "07/20/2005">
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.WindowsService.Name}</Name>
<Category>C#</Category>
<Subcategory>Windows Applications</Subcategory>
<Icon>C#.Project.ServiceProject</Icon>
<LanguageName>C#</LanguageName>
<Description>${res:Templates.Project.WindowsService.Description}</Description>

3
data/templates/project/CSharp/WPFApplication.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Mathias Simmack"
created = "26/10/2005"
lastModified = "20/11/2005">
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>WinFX Application</Name>
<Category>C#</Category>
<Subcategory>WinFX</Subcategory>
<Icon>C#.Project.Form</Icon>
<LanguageName>C#</LanguageName>
<Description>Creates a simple WinFX application.</Description>

3
data/templates/project/CSharp/WPFNavigationApplication.xpt

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
<?xml version="1.0"?>
<Template originator = "Mathias Simmack"
created = "26/10/2005"
lastModified = "20/11/2005">
lastModified = "11/01/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>WinFX Navigation Application</Name>
<Category>C#</Category>
<Subcategory>WinFX</Subcategory>
<Icon>C#.Project.Form</Icon>
<LanguageName>C#</LanguageName>
<Description>Creates a simple WinFX application with one navigation page.</Description>

10
src/Main/Base/Project/Resources/NewProjectDialog.xfrm

@ -187,12 +187,12 @@ @@ -187,12 +187,12 @@
<Name value="splitter" />
<TabIndex value="1" />
<Size value="{Width=3, Height=247}" />
<Location value="{X=124,Y=0}" />
<Location value="{X=174,Y=0}" />
</System.Windows.Forms.Splitter>
<System.Windows.Forms.Panel>
<Name value="categoryPanel" />
<Location value="{X=0,Y=0}" />
<Size value="{Width=124, Height=247}" />
<Size value="{Width=174, Height=247}" />
<DockPadding value="" />
<TabIndex value="0" />
<Dock value="Left" />
@ -205,7 +205,7 @@ @@ -205,7 +205,7 @@
<Scrollable value="False" />
<Location value="{X=0,Y=23}" />
<SelectedImageIndex value="-1" />
<Size value="{Width=124, Height=224}" />
<Size value="{Width=174, Height=224}" />
<HotTracking value="True" />
<HideSelection value="False" />
</System.Windows.Forms.TreeView>
@ -214,7 +214,7 @@ @@ -214,7 +214,7 @@
<Text value="${res:Dialog.NewProject.ProjectTypeLabelText}" />
<TextAlign value="BottomLeft" />
<TabIndex value="0" />
<Size value="{Width=124, Height=23}" />
<Size value="{Width=174, Height=23}" />
<Location value="{X=0,Y=0}" />
<Dock value="Top" />
</System.Windows.Forms.Label>
@ -224,4 +224,4 @@ @@ -224,4 +224,4 @@
</System.Windows.Forms.Panel>
</Controls>
</System.Windows.Forms.Form>
</Components>
</Components>

49
src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs

@ -103,13 +103,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -103,13 +103,9 @@ namespace ICSharpCode.SharpDevelop.Gui
((ListView)ControlDictionary["templateListView"]).SmallImageList = smalllist;
InsertCategories(null, categories);
((TreeView)ControlDictionary["categoryTreeView"]).Sort();
for (int j = 0; j < categories.Count; ++j) {
if (((Category)categories[j]).Name == PropertyService.Get("Dialogs.NewFileDialog.LastSelectedCategory", "C#")) {
((TreeView)ControlDictionary["categoryTreeView"]).SelectedNode = (TreeNode)((TreeView)ControlDictionary["categoryTreeView"]).Nodes[j];
break;
}
}
SelectLastSelectedCategoryNode(((TreeView)ControlDictionary["categoryTreeView"]).Nodes, PropertyService.Get("Dialogs.NewFileDialog.LastSelectedCategory", "C#"));
}
void InsertCategories(TreeNode node, ArrayList catarray)
@ -124,19 +120,52 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -124,19 +120,52 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
// TODO : insert sub categories
Category GetCategory(string categoryname)
TreeNode SelectLastSelectedCategoryNode(TreeNodeCollection nodes, string name)
{
foreach (TreeNode node in nodes) {
if (node.Name == name) {
((TreeView)ControlDictionary["categoryTreeView"]).SelectedNode = node;
node.ExpandAll();
return node;
}
TreeNode selectedNode = SelectLastSelectedCategoryNode(node.Nodes, name);
if (selectedNode != null) {
return selectedNode;
}
}
return null;
}
Category GetCategory(string categoryname, string subcategoryname)
{
foreach (Category category in categories) {
if (category.Name == categoryname) {
return category;
if (subcategoryname == null) {
return category;
} else {
return GetSubcategory(category, subcategoryname);
}
}
}
Category newcategory = new Category(categoryname);
categories.Add(newcategory);
if (subcategoryname != null) {
return GetSubcategory(newcategory, subcategoryname);
}
return newcategory;
}
Category GetSubcategory(Category parentCategory, string name)
{
foreach (Category subcategory in parentCategory.Categories) {
if (subcategory.Name == name)
return subcategory;
}
Category newsubcategory = new Category(name);
parentCategory.Categories.Add(newsubcategory);
return newsubcategory;
}
void InitializeTemplates()
{
foreach (FileTemplate template in FileTemplate.FileTemplates) {
@ -145,7 +174,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -145,7 +174,7 @@ namespace ICSharpCode.SharpDevelop.Gui
icons[titem.Template.Icon] = 0; // "create template icon"
}
if (template.NewFileDialogVisible == true) {
Category cat = GetCategory(titem.Template.Category);
Category cat = GetCategory(titem.Template.Category, titem.Template.Subcategory);
cat.Templates.Add(titem);
if (cat.Selected == false && template.WizardPath == null) {

52
src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs

@ -99,12 +99,8 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -99,12 +99,8 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
((ListView)ControlDictionary["templateListView"]).SmallImageList = smalllist;
InsertCategories(null, categories);
for (int j = 0; j < categories.Count; ++j) {
if (((Category)categories[j]).Name == PropertyService.Get("Dialogs.NewProjectDialog.LastSelectedCategory", "C#")) {
((TreeView)ControlDictionary["categoryTreeView"]).SelectedNode = (TreeNode)((TreeView)ControlDictionary["categoryTreeView"]).Nodes[j];
break;
}
}
((TreeView)ControlDictionary["categoryTreeView"]).Sort();
SelectLastSelectedCategoryNode(((TreeView)ControlDictionary["categoryTreeView"]).Nodes, PropertyService.Get("Dialogs.NewProjectDialog.LastSelectedCategory", "C#"));
}
void InsertCategories(TreeNode node, ArrayList catarray)
@ -119,18 +115,36 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -119,18 +115,36 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
}
}
// TODO : insert sub categories
protected Category GetCategory(string categoryname)
protected Category GetCategory(string categoryname, string subcategoryname)
{
foreach (Category category in categories) {
if (category.Text == categoryname)
return category;
if (category.Text == categoryname) {
if (subcategoryname == null) {
return category;
} else {
return GetSubcategory(category, subcategoryname);
}
}
}
Category newcategory = new Category(categoryname);
categories.Add(newcategory);
if (subcategoryname != null) {
return GetSubcategory(newcategory, subcategoryname);
}
return newcategory;
}
Category GetSubcategory(Category parentCategory, string name)
{
foreach (Category subcategory in parentCategory.Categories) {
if (subcategory.Text == name)
return subcategory;
}
Category newsubcategory = new Category(name);
parentCategory.Categories.Add(newsubcategory);
return newsubcategory;
}
protected virtual void InitializeTemplates()
{
foreach (ProjectTemplate template in ProjectTemplate.ProjectTemplates) {
@ -139,7 +153,7 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -139,7 +153,7 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
icons[titem.Template.Icon] = 0; // "create template icon"
}
if (template.NewProjectDialogVisible == true) {
Category cat = GetCategory(titem.Template.Category);
Category cat = GetCategory(titem.Template.Category, titem.Template.Subcategory);
cat.Templates.Add(titem);
if (cat.Templates.Count == 1)
titem.Selected = true;
@ -367,6 +381,22 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -367,6 +381,22 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
}
}
TreeNode SelectLastSelectedCategoryNode(TreeNodeCollection nodes, string name)
{
foreach (TreeNode node in nodes) {
if (node.Name == name) {
((TreeView)ControlDictionary["categoryTreeView"]).SelectedNode = node;
node.ExpandAll();
return node;
}
TreeNode selectedNode = SelectLastSelectedCategoryNode(node.Nodes, name);
if (selectedNode != null) {
return selectedNode;
}
}
return null;
}
protected void InitializeComponents()
{
SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.NewProjectDialog.xfrm"));

10
src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs

@ -146,6 +146,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -146,6 +146,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
string description = null;
string wizardpath = null;
string defaultName = null;
string subcategory = null;
bool newFileDialogVisible = true;
@ -180,6 +181,11 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -180,6 +181,11 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
return category;
}
}
public string Subcategory {
get {
return subcategory;
}
}
public string LanguageName {
get {
return languagename;
@ -265,6 +271,10 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -265,6 +271,10 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
category = config.GetAttribute("category");
defaultName = config.GetAttribute("defaultname");
languagename = config.GetAttribute("language");
if (config.HasAttribute("subcategory")) {
subcategory = config.GetAttribute("subcategory");
}
string newFileDialogVisibleAttr = config.GetAttribute("newfiledialogvisible");
if (newFileDialogVisibleAttr != null && newFileDialogVisibleAttr.Length != 0) {

11
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs

@ -54,6 +54,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -54,6 +54,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
string description = null;
string icon = null;
string wizardpath = null;
string subcategory = null;
int IComparable.CompareTo(object other)
{
@ -108,6 +109,12 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -108,6 +109,12 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
}
}
public string Subcategory {
get {
return subcategory;
}
}
public string LanguageName {
get {
return languagename;
@ -179,6 +186,10 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -179,6 +186,10 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
category = config["Category"].InnerText;
languagename = config["LanguageName"].InnerText;
if (config["Subcategory"] != null) {
subcategory = config["Subcategory"].InnerText;
}
if (config["Description"] != null) {
description = config["Description"].InnerText;
}

Loading…
Cancel
Save