Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@novell.com>2010-04-27 22:42:33 +0400
committerLluis Sanchez <lluis@novell.com>2010-04-27 22:42:33 +0400
commit67da10d7ee1dd8fa51d5d893749611678e8afe0b (patch)
tree36e1cd4bbc9b6d79b8fd13a65eaa9ebf685bb2a1 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects
parentdaabc6e17a2a01a7e9e8bd85ffdfbf6b8ffcbfe4 (diff)
* gtk-gui/gui.stetic:
* MonoDevelop.Ide.Projects/NewFileDialog.cs: * gtk-gui/MonoDevelop.Ide.Projects.NewFileDialog.cs: * gtk-gui/MonoDevelop.Ide.Projects.NewProjectDialog.cs: * gtk-gui/MonoDevelop.Ide.NavigateToDialog.NavigateToDialog.cs: Improved look of the New File dialog. svn path=/trunk/monodevelop/; revision=156247
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs137
1 files changed, 130 insertions, 7 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs
index 1df3984092..1aa5e8a710 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs
@@ -43,6 +43,7 @@ using Gtk;
using MonoDevelop.Components;
using IconView = MonoDevelop.Components.IconView;
using Gdk;
+using MonoDevelop.Ide.Gui.Components;
namespace MonoDevelop.Ide.Projects
{
@@ -56,6 +57,7 @@ namespace MonoDevelop.Ide.Projects
Dictionary<string, bool> activeLangs = new Dictionary<string, bool> ();
TreeStore catStore;
+ TemplateView iconView;
// Add To Project widgets
string[] projectNames;
@@ -133,6 +135,7 @@ namespace MonoDevelop.Ide.Projects
if (catView.Selection.GetSelected (out treeModel, out treeIter)) {
okButton.Sensitive = false;
FillCategoryTemplates (treeIter);
+ catView.ExpandRow (treeModel.GetPath (treeIter), false);
}
}
@@ -333,7 +336,7 @@ namespace MonoDevelop.Ide.Projects
{
iconView.Clear ();
foreach (TemplateItem item in (List<TemplateItem>)(catStore.GetValue (iter, 2))) {
- iconView.AddIcon (new Gtk.Image (ImageService.GetPixbuf (item.Template.Icon, Gtk.IconSize.Dnd)), GettextCatalog.GetString (item.Name), item);
+ iconView.Add (item);
}
}
@@ -354,13 +357,16 @@ namespace MonoDevelop.Ide.Projects
TemplateItem sel = (TemplateItem)iconView.CurrentlySelected;
if (sel == null) {
okButton.Sensitive = false;
+ infoLabel.Text = string.Empty;
+ labelTemplateTitle.Text = string.Empty;
return;
}
FileTemplate item = sel.Template;
if (item != null) {
- infoLabel.Text = item.Description;
+ labelTemplateTitle.Markup = "<b>" + GettextCatalog.GetString (item.Name) + "</b>";
+ infoLabel.Text = GettextCatalog.GetString (item.Description);
//desensitise the text entry if the name is fixed
//careful to store user-entered text so we can replace it if they change their selection
@@ -387,6 +393,8 @@ namespace MonoDevelop.Ide.Projects
} else {
nameEntry.Sensitive = true;
okButton.Sensitive = false;
+ infoLabel.Text = string.Empty;
+ labelTemplateTitle.Text = string.Empty;
}
} catch (Exception ex) {
LoggingService.LogError (ex.ToString ());
@@ -522,6 +530,10 @@ namespace MonoDevelop.Ide.Projects
void InitializeComponents ()
{
+ iconView = new TemplateView ();
+ iconView.ShowAll ();
+ boxTemplates.PackStart (iconView, true, true, 0);
+
catStore = new TreeStore (typeof(string), typeof(List<Category>), typeof(List<TemplateItem>), typeof(Pixbuf));
TreeViewColumn treeViewColumn = new TreeViewColumn ();
@@ -540,11 +552,14 @@ namespace MonoDevelop.Ide.Projects
nameEntry.Changed += new EventHandler (NameChanged);
nameEntry.Activated += new EventHandler (OpenEvent);
+ infoLabel.Text = string.Empty;
+ labelTemplateTitle.Text = string.Empty;
+
ReadOnlyCollection<Project> projects = null;
if (parentProject == null)
projects = IdeApp.Workspace.GetAllProjects ();
- if (projects != null) {
+ if (projects != null && projects.Count > 0) {
Project curProject = IdeApp.ProjectOperations.CurrentSelectedProject;
boxProject.Visible = true;
@@ -590,13 +605,22 @@ namespace MonoDevelop.Ide.Projects
catView.Selection.Changed += new EventHandler (CategoryChange);
catView.RowActivated += new RowActivatedHandler (CategoryActivated);
- iconView.IconSelected += new EventHandler (SelectedIndexChange);
- iconView.IconDoubleClicked += new EventHandler (OpenEvent);
+ iconView.SelectionChanged += new EventHandler (SelectedIndexChange);
+ iconView.DoubleClicked += new EventHandler (OpenEvent);
InitializeDialog (false);
InitializeView ();
UpdateOkStatus ();
}
+ protected virtual void OnScrolledInfoSizeAllocated (object o, Gtk.SizeAllocatedArgs args)
+ {
+ if (infoLabel.WidthRequest != scrolledInfo.Allocation.Width) {
+ infoLabel.WidthRequest = scrolledInfo.Allocation.Width;
+ labelTemplateTitle.WidthRequest = scrolledInfo.Allocation.Width;
+ }
+ }
+
+
class Category
{
List<Category> categories = new List<Category> ();
@@ -630,7 +654,106 @@ namespace MonoDevelop.Ide.Projects
set { hasSelectedTemplate = value; }
}
}
+
+ class TemplateView: ScrolledWindow
+ {
+ TemplateTreeView tree;
+
+ public TemplateView ()
+ {
+ tree = new TemplateTreeView ();
+ tree.Selection.Changed += delegate {
+ if (SelectionChanged != null)
+ SelectionChanged (this, EventArgs.Empty);
+ };
+ tree.RowActivated += delegate {
+ if (DoubleClicked != null)
+ DoubleClicked (this, EventArgs.Empty);
+ };
+ Add (tree);
+ HscrollbarPolicy = PolicyType.Automatic;
+ VscrollbarPolicy = PolicyType.Automatic;
+ ShadowType = ShadowType.In;
+ ShowAll ();
+ }
+
+ public TemplateItem CurrentlySelected {
+ get { return tree.CurrentlySelected; }
+ set { tree.CurrentlySelected = value; }
+ }
+
+ public void Add (TemplateItem templateItem)
+ {
+ tree.Add (templateItem);
+ }
+
+ public void Clear ()
+ {
+ tree.Clear ();
+ }
+
+ public event EventHandler SelectionChanged;
+ public event EventHandler DoubleClicked;
+ }
+
+ class TemplateTreeView: TreeView
+ {
+ Gtk.ListStore templateStore;
+
+ public TemplateTreeView ()
+ {
+ HeadersVisible = false;
+ templateStore = new ListStore (typeof(string), typeof(string), typeof(TemplateItem));
+ Model = templateStore;
+
+ TreeViewColumn col = new TreeViewColumn ();
+ CellRendererIcon crp = new CellRendererIcon ();
+ crp.StockSize = (uint) Gtk.IconSize.Dnd;
+ crp.Ypad = 2;
+ col.PackStart (crp, false);
+ col.AddAttribute (crp, "stock-id", 0);
+
+ CellRendererText crt = new CellRendererText ();
+ col.PackStart (crt, false);
+ col.AddAttribute (crt, "markup", 1);
+
+ AppendColumn (col);
+ ShowAll ();
+ }
+
+ public TemplateItem CurrentlySelected {
+ get {
+ Gtk.TreeIter iter;
+ if (!Selection.GetSelected (out iter))
+ return null;
+ return (TemplateItem) templateStore.GetValue (iter, 2);
+ }
+ set {
+ Gtk.TreeIter iter;
+ if (templateStore.GetIterFirst (out iter)) {
+ do {
+ TemplateItem t = (TemplateItem) templateStore.GetValue (iter, 2);
+ if (t == value) {
+ Selection.SelectIter (iter);
+ return;
+ }
+ } while (templateStore.IterNext (ref iter));
+ }
+ }
+ }
+
+ public void Add (TemplateItem templateItem)
+ {
+ string name = GLib.Markup.EscapeText (GettextCatalog.GetString (templateItem.Name));
+ if (!string.IsNullOrEmpty (templateItem.Language))
+ name += "\n<span foreground='darkgrey'><small>" + templateItem.Language + "</small></span>";
+ templateStore.AppendValues (templateItem.Template.Icon.IsNull ? "md-project" : templateItem.Template.Icon.ToString (), name, templateItem);
+ }
+
+ public void Clear ()
+ {
+ templateStore.Clear ();
+ }
+ }
}
-
-
}