Author: ankit
Date: 2008-01-19 12:55:37 -0500 (Sat, 19 Jan 2008)
New Revision: 93321

Modified:
   branches/monodevelop/main/1.0/src/addins/AspNetAddIn/ChangeLog
   
branches/monodevelop/main/1.0/src/addins/AspNetAddIn/Project/AspNetMSBuildProjectExtension.cs
   
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/CSharpMSBuildProjectExtension.cs
   branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/ChangeLog
   
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/DefaultMSBuildProjectExtension.cs
   
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildFileFormat.cs
   
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildProjectExtension.cs
   branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/SlnFileFormat.cs
   branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/Utils.cs
   
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/VBNetMSBuildProjectExtension.cs
Log:
In main/src/addins/AspNetAddIn:

        * AspNetMSBuildProjectExtension.cs: Track changes in 
MSBuildProjectExtension.

In main/src/addins/prj2make-sharp-lib:

        * MSBuildProjectExtension.cs (IsLanguage): New.
        (LanguageId): New.
        * DefaultMSBuildProjectExtension.cs: Override the language properties.
        * CSharpMSBuildProjectExtension.cs: Likewise.
        * VBNetMSBuildProjectExtension.cs: Likewise.
        * MSBuildFileFormat.cs (ProjectTypeGuids): Rename to ..
        (LanguageTypeGuids): .. this. Fill this from the extensions.
        * SlnFileFormat.cs: Remove hardcoded .csproj/.vbproj.
        * Utils.cs (GetLanguage): Use the extensions for this.


Modified: branches/monodevelop/main/1.0/src/addins/AspNetAddIn/ChangeLog
===================================================================
--- branches/monodevelop/main/1.0/src/addins/AspNetAddIn/ChangeLog      
2008-01-19 17:42:42 UTC (rev 93320)
+++ branches/monodevelop/main/1.0/src/addins/AspNetAddIn/ChangeLog      
2008-01-19 17:55:37 UTC (rev 93321)
@@ -1,3 +1,7 @@
+2008-01-19  Ankit Jain  <[EMAIL PROTECTED]>
+
+       * AspNetMSBuildProjectExtension.cs: Track changes in 
MSBuildProjectExtension.
+
 2008-01-15  Michael Hutchinson <[EMAIL PROTECTED]> 
 
        * Templates/WebService-CodeBehind.xft.xml,

Modified: 
branches/monodevelop/main/1.0/src/addins/AspNetAddIn/Project/AspNetMSBuildProjectExtension.cs
===================================================================
--- 
branches/monodevelop/main/1.0/src/addins/AspNetAddIn/Project/AspNetMSBuildProjectExtension.cs
       2008-01-19 17:42:42 UTC (rev 93320)
+++ 
branches/monodevelop/main/1.0/src/addins/AspNetAddIn/Project/AspNetMSBuildProjectExtension.cs
       2008-01-19 17:55:37 UTC (rev 93321)
@@ -115,10 +115,10 @@
                        if (project.GetType () != typeof (AspNetAppProject))
                                return null;
 
-                       if (!MSBuildFileFormat.ProjectTypeGuids.ContainsKey 
(project.LanguageName))
+                       if (!MSBuildFileFormat.LanguageTypeGuids.ContainsKey 
(project.LanguageName))
                                return null;
 
-                       return String.Format ("{0};{1}", myguid, 
MSBuildFileFormat.ProjectTypeGuids [project.LanguageName]);
+                       return String.Format ("{0};{1}", myguid, 
MSBuildFileFormat.LanguageTypeGuids [project.LanguageName]);
                }
        }
 

Modified: 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/CSharpMSBuildProjectExtension.cs
===================================================================
--- 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/CSharpMSBuildProjectExtension.cs
        2008-01-19 17:42:42 UTC (rev 93320)
+++ 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/CSharpMSBuildProjectExtension.cs
        2008-01-19 17:55:37 UTC (rev 93321)
@@ -50,6 +50,14 @@
                        get { return "C#";}
                }
 
+               public override bool IsLanguage {
+                       get { return true; }
+               }
+
+               public override string LanguageId {
+                       get { return "C#"; }
+               }
+
                public override bool Supports (string type_guid, string 
filename, string type_guids)
                {
                        if (String.IsNullOrEmpty (type_guid)) {

Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/ChangeLog
===================================================================
--- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/ChangeLog       
2008-01-19 17:42:42 UTC (rev 93320)
+++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/ChangeLog       
2008-01-19 17:55:37 UTC (rev 93321)
@@ -1,3 +1,15 @@
+2008-01-19  Ankit Jain  <[EMAIL PROTECTED]>
+
+       * MSBuildProjectExtension.cs (IsLanguage): New.
+       (LanguageId): New.
+       * DefaultMSBuildProjectExtension.cs: Override the language properties.
+       * CSharpMSBuildProjectExtension.cs: Likewise.
+       * VBNetMSBuildProjectExtension.cs: Likewise.
+       * MSBuildFileFormat.cs (ProjectTypeGuids): Rename to ..
+       (LanguageTypeGuids): .. this. Fill this from the extensions.
+       * SlnFileFormat.cs: Remove hardcoded .csproj/.vbproj.
+       * Utils.cs (GetLanguage): Use the extensions for this.
+
 2008-01-14  Ankit Jain  <[EMAIL PROTECTED]>
 
        * VS2003SlnFileFormat.cs: Handle being called in a non-gui mode.

Modified: 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/DefaultMSBuildProjectExtension.cs
===================================================================
--- 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/DefaultMSBuildProjectExtension.cs
       2008-01-19 17:42:42 UTC (rev 93320)
+++ 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/DefaultMSBuildProjectExtension.cs
       2008-01-19 17:55:37 UTC (rev 93321)
@@ -48,6 +48,14 @@
                        get { return "DefaultMSBuildProjectExtension"; }
                }
 
+               public override bool IsLanguage {
+                       get { return false; }
+               }
+
+               public override string LanguageId {
+                       get { return null; }
+               }
+
                public override bool Supports (string type_guid, string 
filename, string type_guids)
                {
                        //Should've been handled by now!

Modified: 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildFileFormat.cs
===================================================================
--- 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildFileFormat.cs
    2008-01-19 17:42:42 UTC (rev 93320)
+++ 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildFileFormat.cs
    2008-01-19 17:55:37 UTC (rev 93321)
@@ -188,7 +188,7 @@
                                string type_guid;
                                string type_guids = String.Empty;
                                string longest_guid = String.Empty;
-                               foreach (MSBuildProjectExtension extn in 
GuidToExtensions) {
+                               foreach (MSBuildProjectExtension extn in 
Extensions) {
                                        string g = extn.GetGuidChain (project);
                                        if (g == null)
                                                continue;
@@ -530,16 +530,16 @@
                MSBuildProjectExtension GetExtensionChainFromTypeGuid (ref 
string type_guids, out string type_guid, string lang, string fname)
                {
                        if (String.IsNullOrEmpty (type_guids)) {
-                               if 
(!MSBuildFileFormat.ProjectTypeGuids.ContainsKey (lang))
+                               if 
(!MSBuildFileFormat.LanguageTypeGuids.ContainsKey (lang))
                                        throw new Exception (String.Format 
("Unknown project type : {0}", fname));
-                               type_guids = type_guid = 
MSBuildFileFormat.ProjectTypeGuids [lang];
+                               type_guids = type_guid = 
MSBuildFileFormat.LanguageTypeGuids [lang];
                        }
                        type_guid = type_guids.Split (';') [0];
 
                        string [] type_guid_list = type_guids.Split (new char 
[] {';'}, StringSplitOptions.RemoveEmptyEntries);
                        MSBuildProjectExtension [] extensions = new 
MSBuildProjectExtension [type_guid_list.Length + 1];
                        for (int i = 0; i < type_guid_list.Length; i ++) {
-                               foreach (MSBuildProjectExtension extn in 
GuidToExtensions) {
+                               foreach (MSBuildProjectExtension extn in 
Extensions) {
                                        if (extn.Supports (type_guid_list [i], 
fname, type_guids)) {
                                                extensions [i] = extn;
                                                break;
@@ -835,23 +835,37 @@
                        return flavor_properties_element;
                }
 
-               static List<MSBuildProjectExtension> GuidToExtensions {
+               internal static List<MSBuildProjectExtension> Extensions {
                        get {
-                               if (extensions == null) {
-                                       extensions = new 
List<MSBuildProjectExtension> ();
-                                       OnProjectExtensionsChanged (null, null);
-                                       AddinManager.AddExtensionNodeHandler 
("/MonoDevelop/Prj2Make/MSBuildProjectExtension", OnProjectExtensionsChanged);
-                               }
+                               if (extensions == null)
+                                       InitExtensions ();
                                return extensions;
                        }
                }
 
+               static void InitExtensions ()
+               {
+                       if (extensions != null)
+                               return;
+
+                       extensions = new List<MSBuildProjectExtension> ();
+                       OnProjectExtensionsChanged (null, null);
+                       AddinManager.AddExtensionNodeHandler 
("/MonoDevelop/Prj2Make/MSBuildProjectExtension", OnProjectExtensionsChanged);
+               }
+
                static void OnProjectExtensionsChanged (object s, 
ExtensionNodeEventArgs args)
                {
                        extensions.Clear ();
+                       if (languageTypeGuids == null)
+                               languageTypeGuids = new 
Dictionary<string,string> ();
+                       else
+                               LanguageTypeGuids.Clear ();
+
                        foreach (MSBuildProjectExtension extn in
                                AddinManager.GetExtensionObjects 
("/MonoDevelop/Prj2Make/MSBuildProjectExtension", typeof 
(MSBuildProjectExtension))) {
                                extensions.Add (extn);
+                               if (extn.IsLanguage)
+                                       LanguageTypeGuids [extn.LanguageId] = 
extn.TypeGuid;
                        }
                        extensions.Add (new DefaultMSBuildProjectExtension ());
                }
@@ -883,21 +897,14 @@
 
                                return assemblyNamesTable;
                        }
-
                }
 
-               static Dictionary<string, string> projectTypeGuids = null;
-               public static Dictionary<string, string> ProjectTypeGuids {
+               static Dictionary<string, string> languageTypeGuids = null;
+               public static Dictionary<string, string> LanguageTypeGuids {
                        get {
-                               if (projectTypeGuids == null) {
-                                       projectTypeGuids = new 
Dictionary<string, string> ();
-                                       // values must be in UpperCase
-                                       projectTypeGuids ["C#"] = 
"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}";
-                                       projectTypeGuids ["VBNet"] = 
"{F184B08F-C81C-45F6-A57F-5ABD9991F28F}";
-                               }
-                               return projectTypeGuids;
+                               InitExtensions ();
+                               return languageTypeGuids;
                        }
                }
-
        }
 }

Modified: 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildProjectExtension.cs
===================================================================
--- 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildProjectExtension.cs
      2008-01-19 17:42:42 UTC (rev 93320)
+++ 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildProjectExtension.cs
      2008-01-19 17:55:37 UTC (rev 93321)
@@ -47,6 +47,15 @@
                        get { return "MSBuildProjectExtension"; }
                }
 
+               public virtual bool IsLanguage {
+                       get { return false; }
+               }
+
+               // Must match the Id used by MonoDevelop for the language
+               public virtual string LanguageId {
+                       get { return null; }
+               }
+
                public virtual bool Supports (string guid, string filename, 
string type_guids)
                {
                        return Next.Supports (guid, filename, type_guids);

Modified: 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/SlnFileFormat.cs
===================================================================
--- 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/SlnFileFormat.cs    
    2008-01-19 17:42:42 UTC (rev 93320)
+++ 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/SlnFileFormat.cs    
    2008-01-19 17:55:37 UTC (rev 93321)
@@ -213,7 +213,7 @@
                                                continue;
                                        }
 
-                                       if 
(!MSBuildFileFormat.ProjectTypeGuids.ContainsKey (project.LanguageName)) {
+                                       if 
(!MSBuildFileFormat.LanguageTypeGuids.ContainsKey (project.LanguageName)) {
                                                // FIXME: Should not happen, 
temp
                                                monitor.ReportWarning 
(GettextCatalog.GetString ("Saving for project {0} not supported. Ignoring.",
                                                        ce.FileName));
@@ -240,7 +240,7 @@
                                        l = msbData.Extra;
 
                                        writer.WriteLine (@"Project(""{0}"") = 
""{1}"", ""{2}"", ""{3}""",
-                                               
MSBuildFileFormat.ProjectTypeGuids [project.LanguageName],
+                                               
MSBuildFileFormat.LanguageTypeGuids [project.LanguageName],
                                                project.Name, 
                                                
FileService.NormalizeRelativePath (FileService.AbsoluteToRelativePath (
                                                        baseDirectory, 
project.FileName)).Replace ('/', '\\'),
@@ -487,8 +487,8 @@
                                        continue;
                                }
 
-                               if 
(!MSBuildFileFormat.ProjectTypeGuids.ContainsValue (projTypeGuid)) {
-                                       LoggingService.LogDebug 
(GettextCatalog.GetString (
+                               if 
(!MSBuildFileFormat.LanguageTypeGuids.ContainsValue (projTypeGuid)) {
+                                       LoggingService.LogWarning 
(GettextCatalog.GetString (
                                                "Unknown project type guid 
'{0}' on line #{1}. Ignoring.",
                                                projTypeGuid,
                                                sec.Start + 1));
@@ -498,50 +498,49 @@
                                        continue;
                                }
 
-                               if (!projectPath.StartsWith("http://";) &&
-                                       (projectPath.EndsWith (".csproj") || 
projectPath.EndsWith (".vbproj")))
-                               {
-                                       DotNetProject project = null;
-                                       string path = SlnMaker.MapPath 
(Path.GetDirectoryName (fileName), projectPath);
-                                       if (String.IsNullOrEmpty (path)) {
-                                               monitor.ReportWarning 
(GettextCatalog.GetString (
-                                                       "Invalid project path 
found in {0} : {1}", fileName, projectPath));
-                                               Console.WriteLine 
(GettextCatalog.GetString (
-                                                       "Invalid project path 
found in {0} : {1}", fileName, projectPath));
+                               if (projectPath.StartsWith("http://";)) {
+                                       monitor.ReportWarning 
(GettextCatalog.GetString (
+                                               "{0}({1}): Projects with 
non-local source (http://...) not supported. '{2}'.",
+                                               fileName, sec.Start + 1, 
projectPath));
+                                       data.UnknownProjects.AddRange 
(lines.GetRange (sec.Start, sec.Count));
+                                       continue;
+                               }
 
+                               DotNetProject project = null;
+                               string path = SlnMaker.MapPath 
(Path.GetDirectoryName (fileName), projectPath);
+                               if (String.IsNullOrEmpty (path)) {
+                                       monitor.ReportWarning 
(GettextCatalog.GetString (
+                                               "Invalid project path found in 
{0} : {1}", fileName, projectPath));
+                                       LoggingService.LogWarning 
(GettextCatalog.GetString (
+                                               "Invalid project path found in 
{0} : {1}", fileName, projectPath));
+
+                                       continue;
+                               }
+
+                               projectPath = Path.GetFullPath (path);
+                               try {
+                                       project = 
Services.ProjectService.ReadCombineEntry (projectPath, monitor) as 
DotNetProject;
+                                       if (project == null) {
+                                               LoggingService.LogError 
("Internal Error: Didn't get the expected DotNetProject for {0} project.",
+                                                       projectPath);
                                                continue;
                                        }
 
-                                       projectPath = Path.GetFullPath (path);
-                                       try {
-                                               project = 
Services.ProjectService.ReadCombineEntry (projectPath, monitor) as 
DotNetProject;
-                                               if (project == null) {
-                                                       Console.WriteLine 
("Internal Error: Didn't get the expected DotNetProject for {0} project.",
-                                                               projectPath);
-                                                       continue;
-                                               }
+                                       MSBuildData msdata = 
Utils.GetMSBuildData (project);
+                                       entries [projectGuid] = project;
+                                       data.ProjectsByGuid [msdata.Guid] = 
project;
 
-                                               MSBuildData msdata = 
Utils.GetMSBuildData (project);
-                                               entries [projectGuid] = project;
-                                               data.ProjectsByGuid 
[msdata.Guid] = project;
+                                       msdata.Extra = lines.GetRange 
(sec.Start + 1, sec.Count - 2);
+                               } catch (Exception e) {
+                                       LoggingService.LogError 
(GettextCatalog.GetString (
+                                                               "Error while 
trying to load the project {0}. Exception : {1}",
+                                                               projectPath, 
e.ToString ()));
+                                       monitor.ReportWarning 
(GettextCatalog.GetString (
+                                               "Error while trying to load the 
project {0}. Exception : {1}", projectPath, e.Message));
 
-                                               msdata.Extra = lines.GetRange 
(sec.Start + 1, sec.Count - 2);
-                                       } catch (Exception e) {
-                                               Console.WriteLine ("Error while 
trying to load the project {0}", projectPath);
-                                               Console.WriteLine (e);
-                                               monitor.ReportWarning 
(GettextCatalog.GetString (
-                                                       "Error while trying to 
load the project {0}. Exception : {1}", projectPath, e.Message));
-
-                                               if (project == null)
-                                                       
data.UnknownProjects.AddRange (lines.GetRange (sec.Start, sec.Count));
-                                       }
-                                       continue;
+                                       if (project == null)
+                                               data.UnknownProjects.AddRange 
(lines.GetRange (sec.Start, sec.Count));
                                }
-                               //FIXME: Non .csproj/.vbproj projects not 
supported (yet)
-                               monitor.ReportWarning (GettextCatalog.GetString 
(
-                                       "{0}({1}): Unsupported or unrecognized 
project : '{2}'. See logs.", fileName, sec.Start + 1, projectPath));
-
-                               data.UnknownProjects.AddRange (lines.GetRange 
(sec.Start, sec.Count));
                        }
                        monitor.EndTask ();
 

Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/Utils.cs
===================================================================
--- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/Utils.cs        
2008-01-19 17:42:42 UTC (rev 93320)
+++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/Utils.cs        
2008-01-19 17:55:37 UTC (rev 93321)
@@ -294,11 +294,10 @@
 
                public static string GetLanguage (string fileName)
                {
-                       string extn = Path.GetExtension (fileName);
-                       if (String.Compare (extn, ".csproj", true) == 0)
-                               return "C#";
-                       if (String.Compare (extn, ".vbproj", true) == 0)
-                               return "VBNet";
+                       foreach (MSBuildProjectExtension extn in 
MSBuildFileFormat.Extensions) {
+                               if (extn.IsLanguage && extn.Supports (null, 
fileName, null))
+                                       return extn.LanguageId;
+                       }
 
                        return null;
                }

Modified: 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/VBNetMSBuildProjectExtension.cs
===================================================================
--- 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/VBNetMSBuildProjectExtension.cs
 2008-01-19 17:42:42 UTC (rev 93320)
+++ 
branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/VBNetMSBuildProjectExtension.cs
 2008-01-19 17:55:37 UTC (rev 93321)
@@ -51,6 +51,14 @@
                        get { return "VBNet";}
                }
 
+               public override bool IsLanguage {
+                       get { return true; }
+               }
+
+               public override string LanguageId {
+                       get { return "VBNet"; }
+               }
+
                public override bool Supports (string type_guid, string 
filename, string type_guids)
                {
                        if (String.IsNullOrEmpty (type_guid)) {

_______________________________________________
Mono-patches maillist  -  Mono-patches@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to