Author: lluis
Date: 2007-05-25 13:19:02 -0400 (Fri, 25 May 2007)
New Revision: 77958

Modified:
   trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Serialization/ClassDataType.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Serialization/DataContext.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/DotNetProject.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/FileFormatManager.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/LanguageBindingService.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectService.cs
Log:
* MonoDevelop.Projects/ProjectService.cs,
  MonoDevelop.Projects/LanguageBindingService.cs,
  MonoDevelop.Projects/FileFormatManager.cs,
  MonoDevelop.Projects.Serialization/DataContext.cs,
  MonoDevelop.Projects.Serialization/ClassDataType.cs: Properly
  handle add-in unload events.
* MonoDevelop.Projects/DotNetProject.cs: Added null check.

Modified: trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog   2007-05-25 
17:16:18 UTC (rev 77957)
+++ trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog   2007-05-25 
17:19:02 UTC (rev 77958)
@@ -1,3 +1,13 @@
+2007-05-25  Lluis Sanchez Gual <[EMAIL PROTECTED]> 
+
+       * MonoDevelop.Projects/ProjectService.cs,
+         MonoDevelop.Projects/LanguageBindingService.cs,
+         MonoDevelop.Projects/FileFormatManager.cs,
+         MonoDevelop.Projects.Serialization/DataContext.cs,
+         MonoDevelop.Projects.Serialization/ClassDataType.cs: Properly
+         handle add-in unload events.
+       * MonoDevelop.Projects/DotNetProject.cs: Added null check.
+
 2007-05-23  Jeffrey Stedfast  <[EMAIL PROTECTED]>
 
        * MonoDevelop.Projects.CodeGeneration/BaseRefactorer.cs (GetOptions):

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/DotNetProject.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/DotNetProject.cs
       2007-05-25 17:16:18 UTC (rev 77957)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/DotNetProject.cs
       2007-05-25 17:19:02 UTC (rev 77958)
@@ -156,7 +156,7 @@
                                DefaultCompilerResult refres = null;
                                if (pr.ReferenceType == ReferenceType.Project) {
                                        // Ignore non-dotnet projects
-                                       Project p = RootCombine.FindProject 
(pr.Reference);
+                                       Project p = RootCombine != null ? 
RootCombine.FindProject (pr.Reference) : null;
                                        if (p != null && !(p is DotNetProject))
                                                continue;
 

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/FileFormatManager.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/FileFormatManager.cs
   2007-05-25 17:16:18 UTC (rev 77957)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/FileFormatManager.cs
   2007-05-25 17:19:02 UTC (rev 77958)
@@ -42,6 +42,11 @@
                        fileFormats.Add (format);
                }
                
+               public void UnregisterFileFormat (IFileFormat format)
+               {
+                       fileFormats.Remove (format);
+               }
+               
                public IFileFormat[] GetFileFormats (string fileName)
                {
                        ArrayList list = new ArrayList ();

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/LanguageBindingService.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/LanguageBindingService.cs
      2007-05-25 17:16:18 UTC (rev 77957)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/LanguageBindingService.cs
      2007-05-25 17:19:02 UTC (rev 77958)
@@ -130,6 +130,8 @@
                                // Make sure the langs list is re-created
                                langs = null;
                        }
+                       else
+                               bindings.Remove ((LanguageBindingCodon) 
args.ExtensionNode);
                }
        }
 }

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectService.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectService.cs
      2007-05-25 17:16:18 UTC (rev 77957)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectService.cs
      2007-05-25 17:19:02 UTC (rev 77958)
@@ -310,6 +310,8 @@
                {
                        if (args.Change == ExtensionChange.Add)
                                formatManager.RegisterFileFormat ((IFileFormat) 
args.ExtensionObject);
+                       else
+                               formatManager.UnregisterFileFormat 
((IFileFormat) args.ExtensionObject);
                }
                
                void OnSerializableExtensionChanged (object s, 
ExtensionNodeEventArgs args)
@@ -321,6 +323,7 @@
                                }
                                DataContext.IncludeType (t);
                        }
+                       // Types can't be excluded from a DataContext, but 
that's not a big problem anyway
                }
                
                void OnPropertiesExtensionChanged (object s, 
ExtensionNodeEventArgs args)
@@ -330,6 +333,11 @@
                                if (cls.Class != null && cls.PropertyType != 
null)
                                        DataContext.RegisterProperty 
(cls.Class, cls.PropertyName, cls.PropertyType);
                        }
+                       else {
+                               ItemPropertyCodon cls = (ItemPropertyCodon) 
args.ExtensionNode;
+                               if (cls.Class != null && cls.PropertyType != 
null)
+                                       DataContext.UnregisterProperty 
(cls.Class, cls.PropertyName);
+                       }
                }
                
                void OnProjectsExtensionChanged (object s, 
ExtensionNodeEventArgs args)

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Serialization/ClassDataType.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Serialization/ClassDataType.cs
 2007-05-25 17:16:18 UTC (rev 77957)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Serialization/ClassDataType.cs
 2007-05-25 17:19:02 UTC (rev 77958)
@@ -183,6 +183,20 @@
                        }
                }
                
+               public void RemoveProperty (string name)
+               {
+                       ItemProperty prop = (ItemProperty) properties [name];
+                       if (prop == null)
+                               return;
+                       properties.Remove (name);
+                       sortedPoperties.Remove (prop);
+                       
+                       if (subtypes != null && subtypes.Count > 0) {
+                               foreach (ClassDataType subtype in subtypes)
+                                       subtype.RemoveProperty (name);
+                       }
+               }
+               
                Exception CreateNestedConflictException (ItemProperty p1, 
ItemProperty p2)
                {
                        return new InvalidOperationException ("There is a 
conflict between the properties '" + p1.Name + "' and '" + p2.Name + "'. Nested 
element properties can't be mixed with normal element properties.");

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Serialization/DataContext.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Serialization/DataContext.cs
   2007-05-25 17:16:18 UTC (rev 77957)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Serialization/DataContext.cs
   2007-05-25 17:19:02 UTC (rev 77958)
@@ -76,6 +76,12 @@
                        ctype.AddProperty (prop);
                }
                
+               public void UnregisterProperty (Type targetType, string name)
+               {
+                       ClassDataType ctype = (ClassDataType) 
GetConfigurationDataType (targetType);
+                       ctype.RemoveProperty (name);
+               }
+               
                public void IncludeType (Type type)
                {
                        GetConfigurationDataType (type);

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to