From 9e9f0da11cf4f93db409f343a54e78aa0580fe77 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Wed, 14 Sep 2011 21:41:40 +0200 Subject: [PATCH] correctly add resource editors --- .../FormsDesignerViewContent.cs | 15 +++------------ .../Project/FormsDesignerAppDomainHost.cs | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs b/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs index 5851ac0d07..21e2ff5ad2 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs @@ -52,8 +52,6 @@ namespace ICSharpCode.FormsDesigner readonly DesignerSourceCodeStorage sourceCodeStorage; - readonly Dictionary addedTypeDescriptionProviders = new Dictionary(); - public OpenedFile DesignerCodeFile { get { return this.sourceCodeStorage.DesignerCodeFile; } } @@ -385,12 +383,8 @@ namespace ICSharpCode.FormsDesigner appDomainHost.AddService(typeof(IHelpService), new HelpService()); -// appDomainHost.AddService(typeof(IProjectResourceService), CreateProjectResourceService()); -// appDomainHost.AddService(typeof(IImageResourceEditorDialogWrapper), new ImageResourceEditorDialogWrapper(ParserService.GetParseInformation(this.DesignerCodeFile.FileName).CompilationUnit.ProjectContent.Project as IProject)); - - // Provide the ImageResourceEditor for all Image and Icon properties -// this.addedTypeDescriptionProviders.Add(typeof(Image), TypeDescriptor.AddAttributes(typeof(Image), new EditorAttribute(typeof(ImageResourceEditor), typeof(System.Drawing.Design.UITypeEditor)))); -// this.addedTypeDescriptionProviders.Add(typeof(Icon), TypeDescriptor.AddAttributes(typeof(Icon), new EditorAttribute(typeof(ImageResourceEditor), typeof(System.Drawing.Design.UITypeEditor)))); + appDomainHost.AddService(typeof(IProjectResourceService), CreateProjectResourceService()); + appDomainHost.AddService(typeof(IImageResourceEditorDialogWrapper), new ImageResourceEditorDialogWrapper(ParserService.GetParseInformation(this.DesignerCodeFile.FileName).CompilationUnit.ProjectContent.Project as IProject)); appDomainHost.DesignSurfaceLoading += new EventHandlerProxy(DesignerLoading); appDomainHost.DesignSurfaceLoaded += new LoadedEventHandlerProxy(DesignerLoaded); @@ -541,10 +535,7 @@ namespace ICSharpCode.FormsDesigner } } - foreach (KeyValuePair entry in this.addedTypeDescriptionProviders) { - TypeDescriptor.RemoveProvider(entry.Value, entry.Key); - } - this.addedTypeDescriptionProviders.Clear(); + appDomainHost.UnregisterTypeProviders(); } readonly PropertyContainer propertyContainer = new PropertyContainer(); diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs index 8ba46b0353..84a5cf3e95 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs @@ -2,6 +2,7 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; using System.Collections.Generic; +using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Drawing; @@ -13,6 +14,7 @@ using System.Reflection; using System.Runtime.Remoting.Lifetime; using System.Text; using System.Windows.Forms; + using ICSharpCode.FormsDesigner.Gui; using ICSharpCode.FormsDesigner.Services; using ICSharpCode.FormsDesigner.UndoRedo; @@ -32,6 +34,7 @@ namespace ICSharpCode.FormsDesigner IDesignerGenerator generator; bool unloading; FormsDesignerAppDomainCreationProperties properties; + readonly Dictionary addedTypeDescriptionProviders = new Dictionary(); public string DesignSurfaceName { get { @@ -104,7 +107,11 @@ namespace ICSharpCode.FormsDesigner container.AddService(typeof(System.ComponentModel.Design.IEventBindingService), eventBindingService); container.AddService(typeof(System.ComponentModel.Design.IMenuCommandService), menuCommandService.Proxy); container.AddService(typeof(IToolboxService), new SharpDevelopToolboxService(this)); -// container.AddService(typeof(System.ComponentModel.Design.IResourceService), new DesignerResourceService(properties.ResourceStore, this)); + container.AddService(typeof(System.ComponentModel.Design.IResourceService), new DesignerResourceService(properties.ResourceStore, this)); + + // Provide the ImageResourceEditor for all Image and Icon properties + addedTypeDescriptionProviders.Add(typeof(Image), TypeDescriptor.AddAttributes(typeof(Image), new EditorAttribute(typeof(ImageResourceEditor), typeof(System.Drawing.Design.UITypeEditor)))); + addedTypeDescriptionProviders.Add(typeof(Icon), TypeDescriptor.AddAttributes(typeof(Icon), new EditorAttribute(typeof(ImageResourceEditor), typeof(System.Drawing.Design.UITypeEditor)))); InitializeEvents(); } @@ -522,6 +529,14 @@ namespace ICSharpCode.FormsDesigner { Application.RaiseIdle(EventArgs.Empty); } + + public void UnregisterTypeProviders() + { + foreach (KeyValuePair entry in addedTypeDescriptionProviders) { + TypeDescriptor.RemoveProvider(entry.Value, entry.Key); + } + addedTypeDescriptionProviders.Clear(); + } } public class FormsDesignerAppDomainCreationProperties : MarshalByRefObject