[svn] r6539: vs-plugin/trunk/Nemerle.VsIntegration: NemerleConstants.cs NemerleFileNode.cs Project/Nemerle...

NoiseEHC svnadmin at nemerle.org
Wed Aug 16 18:57:25 CEST 2006


Log:
Image handling updated to work similar to the AUG IronPython sample.
(Unnecessarily duplicated images deleted)

Author: NoiseEHC
Date: Wed Aug 16 18:57:22 2006
New Revision: 6539

Modified:
   vs-plugin/trunk/Nemerle.VsIntegration/NemerleConstants.cs
   vs-plugin/trunk/Nemerle.VsIntegration/NemerleFileNode.cs
   vs-plugin/trunk/Nemerle.VsIntegration/Project/NemerleProjectNode.cs
   vs-plugin/trunk/Nemerle.VsIntegration/Resources/NemerleImageList.bmp

Modified: vs-plugin/trunk/Nemerle.VsIntegration/NemerleConstants.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/NemerleConstants.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/NemerleConstants.cs	Wed Aug 16 18:57:22 2006
@@ -34,5 +34,13 @@
 		public const string GeneralPropertyPageGuidString          = "EDCC3B88-0BAD-11DB-BC1A-00112FDE8B61";
 
 		public const string ProjectImageListName = "Resources.NemerleImageList.bmp";
+
+		/// <summary>
+		/// Indexes to the embedded NemerleImageList.bmp image list.
+		/// </summary>
+		public enum ImageListIndex : int {
+			NemerleSource = 0,
+			NemerleProject = 1,
+		}
 	}
 }

Modified: vs-plugin/trunk/Nemerle.VsIntegration/NemerleFileNode.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/NemerleFileNode.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/NemerleFileNode.cs	Wed Aug 16 18:57:22 2006
@@ -96,17 +96,6 @@
 
 		#region overridden properties
 
-		public override int ImageIndex
-		{
-			get
-			{
-				if (Path.GetExtension(FileName).ToLower() == GlobalConstants.FileExtension)
-					return 6; //FixMe: temporarily for compatibility with old VS SDK //(int)ProjectNode.ImageName.TextFile;
-				else
-					return base.ImageIndex;
-			}
-		}
-
 		internal override object Object { get { return VSProjectItem; } }
 
 		#endregion
@@ -130,6 +119,13 @@
 				new OANemerleFileItem(ProjectMgr.GetAutomationObject() as OAProject, this);
 		}
 
+		// Called since the FileNode.ImageIndex returns -1 by default.
+		public override object GetIconHandle(bool open) {
+			if(this.FileName.ToLower().EndsWith(GlobalConstants.FileExtension))
+				return PackageUtilities.GetIntPointerFromImage(NemerleProjectNode.NemerleImageList.Images[(int)GlobalConstants.ImageListIndex.NemerleSource]);
+			return base.GetIconHandle(open);
+		}
+
 		/// <summary>
 		/// Open a file depending on the SubType property associated with the file item in the project file
 		/// </summary>

Modified: vs-plugin/trunk/Nemerle.VsIntegration/Project/NemerleProjectNode.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/Project/NemerleProjectNode.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/Project/NemerleProjectNode.cs	Wed Aug 16 18:57:22 2006
@@ -19,9 +19,15 @@
 	public class NemerleProjectNode : ProjectNode, IVsProjectSpecificEditorMap2
 	{
 		NemerlePackage _package;
+		static ImageList _nemerleImageList;
 		
 		#region ctor
 
+		static NemerleProjectNode()
+        {
+            NemerleImageList = Utilities.GetImageList(typeof(NemerleProjectNode).Assembly.GetManifestResourceStream("Nemerle.VsIntegration.Resources.NemerleImageList.bmp"));
+        }
+
 		public NemerleProjectNode(NemerlePackage pkg)
 		{
 			FileTemplateProcessor = new TokenProcessorEx();
@@ -31,27 +37,17 @@
 			OleServiceProvider.AddService(typeof (VSProject), VSProject, false);
 			SupportsProjectDesigner = true;
 
-			ImageList = LoadProjectImajeList();
-
 			InitializeCATIDs();
 		}
 
-		private ImageList LoadProjectImajeList()
-		{
-			// Make the name of resource bitmap.
-			// It's bitmap used in project ImageList.
-			Type type = this.GetType();
-			Assembly resourceAssembly = type.Assembly;
-			// "Nemerle.VsIntegration.Resources.NemerleImageList.bmp"
-			string resourceName = GetModuleName(type) + "."
-				+ GlobalConstants.ProjectImageListName;
-
-			Stream imageStream = resourceAssembly.GetManifestResourceStream(
-				resourceName);
-
-			Trace.Assert(imageStream != null);
+		// Needed since ProjectNode.ImageIndex returns ProjectNode.ImageName.Application.
+		public override int ImageIndex {
+			get { return HierarchyNode.NoImage; }
+		}
 
-			return Utilities.GetImageList(imageStream);
+		// We have to override ImageIndex to be called.
+		public override object GetIconHandle(bool open) {
+			return Microsoft.VisualStudio.Shell.PackageUtilities.GetIntPointerFromImage(NemerleProjectNode.NemerleImageList.Images[(int)GlobalConstants.ImageListIndex.NemerleProject]);
 		}
 
 		private static string GetModuleName(Type type)
@@ -168,6 +164,14 @@
 			set { _projectInfo = value; }
 		}
 
+		/// <summary>
+		/// Nemerle specific project images.
+		/// </summary>
+		public static ImageList NemerleImageList {
+			get { return _nemerleImageList; }
+			set { _nemerleImageList = value; }
+		}
+
 		#endregion
 
 		#region overridden properties
@@ -303,7 +307,7 @@
 			if (String.IsNullOrEmpty(strFileName))
 				return false;
 			return
-				(String.Compare(Path.GetExtension(strFileName), ".n",
+				(String.Compare(Path.GetExtension(strFileName), GlobalConstants.FileExtension, 
 					StringComparison.OrdinalIgnoreCase) == 0);
 		}
 

Modified: vs-plugin/trunk/Nemerle.VsIntegration/Resources/NemerleImageList.bmp
==============================================================================
Binary files. No diff available.



More information about the svn mailing list