Browse Source

correctly add resource editors

formsdesignerappdomain
Siegfried Pammer 14 years ago
parent
commit
9e9f0da11c
  1. 15
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs
  2. 17
      src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs

15
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs

@ -52,8 +52,6 @@ namespace ICSharpCode.FormsDesigner
readonly DesignerSourceCodeStorage sourceCodeStorage; readonly DesignerSourceCodeStorage sourceCodeStorage;
readonly Dictionary<Type, TypeDescriptionProvider> addedTypeDescriptionProviders = new Dictionary<Type, TypeDescriptionProvider>();
public OpenedFile DesignerCodeFile { public OpenedFile DesignerCodeFile {
get { return this.sourceCodeStorage.DesignerCodeFile; } get { return this.sourceCodeStorage.DesignerCodeFile; }
} }
@ -385,12 +383,8 @@ namespace ICSharpCode.FormsDesigner
appDomainHost.AddService(typeof(IHelpService), new HelpService()); appDomainHost.AddService(typeof(IHelpService), new HelpService());
// appDomainHost.AddService(typeof(IProjectResourceService), CreateProjectResourceService()); appDomainHost.AddService(typeof(IProjectResourceService), CreateProjectResourceService());
// appDomainHost.AddService(typeof(IImageResourceEditorDialogWrapper), new ImageResourceEditorDialogWrapper(ParserService.GetParseInformation(this.DesignerCodeFile.FileName).CompilationUnit.ProjectContent.Project as IProject)); 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.DesignSurfaceLoading += new EventHandlerProxy(DesignerLoading); appDomainHost.DesignSurfaceLoading += new EventHandlerProxy(DesignerLoading);
appDomainHost.DesignSurfaceLoaded += new LoadedEventHandlerProxy(DesignerLoaded); appDomainHost.DesignSurfaceLoaded += new LoadedEventHandlerProxy(DesignerLoaded);
@ -541,10 +535,7 @@ namespace ICSharpCode.FormsDesigner
} }
} }
foreach (KeyValuePair<Type, TypeDescriptionProvider> entry in this.addedTypeDescriptionProviders) { appDomainHost.UnregisterTypeProviders();
TypeDescriptor.RemoveProvider(entry.Value, entry.Key);
}
this.addedTypeDescriptionProviders.Clear();
} }
readonly PropertyContainer propertyContainer = new PropertyContainer(); readonly PropertyContainer propertyContainer = new PropertyContainer();

17
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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design; using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization; using System.ComponentModel.Design.Serialization;
using System.Drawing; using System.Drawing;
@ -13,6 +14,7 @@ using System.Reflection;
using System.Runtime.Remoting.Lifetime; using System.Runtime.Remoting.Lifetime;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.FormsDesigner.Gui; using ICSharpCode.FormsDesigner.Gui;
using ICSharpCode.FormsDesigner.Services; using ICSharpCode.FormsDesigner.Services;
using ICSharpCode.FormsDesigner.UndoRedo; using ICSharpCode.FormsDesigner.UndoRedo;
@ -32,6 +34,7 @@ namespace ICSharpCode.FormsDesigner
IDesignerGenerator generator; IDesignerGenerator generator;
bool unloading; bool unloading;
FormsDesignerAppDomainCreationProperties properties; FormsDesignerAppDomainCreationProperties properties;
readonly Dictionary<Type, TypeDescriptionProvider> addedTypeDescriptionProviders = new Dictionary<Type, TypeDescriptionProvider>();
public string DesignSurfaceName { public string DesignSurfaceName {
get { get {
@ -104,7 +107,11 @@ namespace ICSharpCode.FormsDesigner
container.AddService(typeof(System.ComponentModel.Design.IEventBindingService), eventBindingService); container.AddService(typeof(System.ComponentModel.Design.IEventBindingService), eventBindingService);
container.AddService(typeof(System.ComponentModel.Design.IMenuCommandService), menuCommandService.Proxy); container.AddService(typeof(System.ComponentModel.Design.IMenuCommandService), menuCommandService.Proxy);
container.AddService(typeof(IToolboxService), new SharpDevelopToolboxService(this)); 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(); InitializeEvents();
} }
@ -522,6 +529,14 @@ namespace ICSharpCode.FormsDesigner
{ {
Application.RaiseIdle(EventArgs.Empty); Application.RaiseIdle(EventArgs.Empty);
} }
public void UnregisterTypeProviders()
{
foreach (KeyValuePair<Type, TypeDescriptionProvider> entry in addedTypeDescriptionProviders) {
TypeDescriptor.RemoveProvider(entry.Value, entry.Key);
}
addedTypeDescriptionProviders.Clear();
}
} }
public class FormsDesignerAppDomainCreationProperties : MarshalByRefObject public class FormsDesignerAppDomainCreationProperties : MarshalByRefObject

Loading…
Cancel
Save