diff options
author | Matt Ward <ward.matt@gmail.com> | 2015-05-12 13:18:15 +0300 |
---|---|---|
committer | Matt Ward <ward.matt@gmail.com> | 2015-05-12 13:18:15 +0300 |
commit | fac118140b0e5facd808df00693e15821da1c3e6 (patch) | |
tree | 82d9b0a38c87c743a7300814fa238b557774f211 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects | |
parent | 0c38cde1f37efacb5359223f3b258796e1b06e30 (diff) |
[Ide] Show .git folder in new project dialog preview.
Fixed bug #29950 - New Project Dialog: Dimmed rows in right-hand tree
for hidden files and folders
https://bugzilla.xamarin.com/show_bug.cgi?id=29950
Show .git folder when Use git for version control option is checked.
Show .git and .gitignore icons slightly transparent to indicate they
are hidden files.
Show .git and .gitignore text in light grey to indicate they are
hidden.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs | 1 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectFolderPreviewWidget.cs | 44 |
2 files changed, 42 insertions, 3 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs index 157bdd6cf6..09a2c87f13 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs @@ -127,6 +127,7 @@ namespace MonoDevelop.Ide.Projects {
projectConfiguration.UseGit = useGitCheckBox.Active;
createGitIgnoreFileCheckBox.Sensitive = projectConfiguration.IsGitIgnoreEnabled;
+ projectFolderPreviewWidget.ShowGitFolder ();
projectFolderPreviewWidget.ShowGitIgnoreFile ();
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectFolderPreviewWidget.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectFolderPreviewWidget.cs index a1b51173b9..ef127652bf 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectFolderPreviewWidget.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectFolderPreviewWidget.cs @@ -28,7 +28,7 @@ using System; using Gdk;
using Gtk;
using MonoDevelop.Components;
-using MonoDevelop.Ide.Templates;
+using MonoDevelop.Core;
namespace MonoDevelop.Ide.Projects
{
@@ -39,12 +39,14 @@ namespace MonoDevelop.Ide.Projects const string FileIconId = "md-empty-file-icon";
const int TextColumn = 1;
+ const int ImageColumn = 2;
TreeStore folderTreeStore;
TreeIter locationNode;
TreeIter projectFolderNode;
TreeIter projectNode;
TreeIter solutionFolderNode;
TreeIter solutionNode;
+ TreeIter gitFolderNode;
TreeIter gitIgnoreNode;
FinalProjectConfigurationPage projectConfiguration;
@@ -58,7 +60,7 @@ namespace MonoDevelop.Ide.Projects void CreateFolderTreeViewColumns ()
{
- folderTreeStore = new TreeStore (typeof(string), typeof(string));
+ folderTreeStore = new TreeStore (typeof(string), typeof(string), typeof (Xwt.Drawing.Image));
folderTreeView.Model = folderTreeStore;
folderTreeView.ShowExpanders = false;
folderTreeView.LevelIndentation = 10;
@@ -68,6 +70,7 @@ namespace MonoDevelop.Ide.Projects var iconRenderer = new CellRendererImage ();
column.PackStart (iconRenderer, false);
column.AddAttribute (iconRenderer, "stock-id", column: 0);
+ column.AddAttribute (iconRenderer, "image", ImageColumn);
var textRenderer = new CellRendererText ();
textRenderer.Ellipsize = Pango.EllipsizeMode.Middle;
@@ -115,6 +118,7 @@ namespace MonoDevelop.Ide.Projects solutionNode = folderTreeStore.AppendValues (solutionFolderNode, FileIconId, projectConfiguration.DefaultPreviewSolutionFileName);
projectFolderNode = folderTreeStore.AppendValues (solutionFolderNode, FolderIconId, projectConfiguration.DefaultPreviewProjectName);
+ gitFolderNode = AddGitFolderToTree ();
gitIgnoreNode = AddGitIgnoreToTree ();
projectNode = folderTreeStore.AppendValues (projectFolderNode, FileIconId, projectConfiguration.DefaultPreviewProjectFileName);
}
@@ -124,6 +128,7 @@ namespace MonoDevelop.Ide.Projects UpdateLocation ();
UpdateSolutionName ();
UpdateProjectName ();
+ ShowGitFolder ();
ShowGitIgnoreFile ();
}
@@ -140,6 +145,7 @@ namespace MonoDevelop.Ide.Projects solutionNode = folderTreeStore.AppendValues (projectFolderNode, FileIconId, projectConfiguration.DefaultPreviewSolutionFileName);
}
+ gitFolderNode = AddGitFolderToTree ();
gitIgnoreNode = AddGitIgnoreToTree ();
}
@@ -162,17 +168,37 @@ namespace MonoDevelop.Ide.Projects solutionNode = folderTreeStore.AppendValues (solutionFolderNode, FileIconId, projectConfiguration.DefaultPreviewSolutionFileName);
projectFolderNode = TreeIter.Zero;
+ gitFolderNode = TreeIter.Zero;
gitIgnoreNode = TreeIter.Zero;
projectNode = TreeIter.Zero;
}
+ TreeIter AddGitFolderToTree ()
+ {
+ TreeIter parent = solutionFolderNode;
+ if (parent.Equals (TreeIter.Zero)) {
+ parent = projectFolderNode;
+ }
+ return folderTreeStore.InsertWithValues (parent, 0, IconId.Null, GetLightTextMarkup (".git"), GetTransparentIcon (FolderIconId));
+ }
+
+ static Xwt.Drawing.Image GetTransparentIcon (IconId iconId)
+ {
+ return ImageService.GetIcon (iconId, IconSize.Menu).WithAlpha (0.3);
+ }
+
TreeIter AddGitIgnoreToTree ()
{
TreeIter parent = solutionFolderNode;
if (parent.Equals (TreeIter.Zero)) {
parent = projectFolderNode;
}
- return folderTreeStore.InsertWithValues (parent, 0, FileIconId, ".gitignore");
+ return folderTreeStore.InsertWithValues (parent, 1, IconId.Null, GetLightTextMarkup (".gitignore"), GetTransparentIcon (FileIconId));
+ }
+
+ static string GetLightTextMarkup (string text)
+ {
+ return String.Format ("<span color='#AAAAAA'>{0}</span>", text);
}
public void UpdateLocation ()
@@ -216,6 +242,18 @@ namespace MonoDevelop.Ide.Projects UpdateTextColumn (solutionNode, solutionFileName);
}
+ public void ShowGitFolder ()
+ {
+ if (projectConfiguration.IsUseGitEnabled && projectConfiguration.UseGit && projectConfiguration.IsNewSolution) {
+ if (gitFolderNode.Equals (TreeIter.Zero)) {
+ gitFolderNode = AddGitFolderToTree ();
+ }
+ } else if (!gitFolderNode.Equals (TreeIter.Zero)) {
+ folderTreeStore.Remove (ref gitFolderNode);
+ gitFolderNode = TreeIter.Zero;
+ }
+ }
+
public void ShowGitIgnoreFile ()
{
if (projectConfiguration.IsGitIgnoreEnabled && projectConfiguration.CreateGitIgnoreFile && projectConfiguration.IsNewSolution) {
|