Browse Source

fix problems with Toolbox

formsdesignerappdomain
Siegfried Pammer 14 years ago
parent
commit
f33bee8b0c
  1. 3
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Commands/FormsCommands.cs
  2. 191
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormKeyHandler.cs
  3. 1
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesigner.AddIn.csproj
  4. 51
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs
  5. 1
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Toolbox/ToolboxProvider.cs
  6. 33
      src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs
  7. 21
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/FormKeyHandler.cs
  8. 4
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/ComponentLibraryLoader.cs
  9. 3
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/IFormsDesigner.cs
  10. 12
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/MenuCommandService.cs
  11. 2
      src/Main/ICSharpCode.SharpDevelop.Widgets/Project/SideBar/SideBar.cs

3
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Commands/FormsCommands.cs

@ -40,11 +40,10 @@ namespace ICSharpCode.FormsDesigner.Commands @@ -40,11 +40,10 @@ namespace ICSharpCode.FormsDesigner.Commands
}
public override void Run()
{
try {
FormsDesignerViewContent formDesigner = FormDesigner;
if (formDesigner != null && CanExecuteCommand(formDesigner.AppDomainHost)) {
IMenuCommandService menuCommandService = (IMenuCommandService)formDesigner.AppDomainHost.GetService(typeof(IMenuCommandService));
IMenuCommandService menuCommandService = formDesigner.AppDomainHost.MenuCommandService;
menuCommandService.GlobalInvoke(CommandIDEnumConverter.ToCommandID(CommandID));
}
} catch (Exception e) {

191
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormKeyHandler.cs

@ -1,191 +0,0 @@ @@ -1,191 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Reflection;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using System.Windows.Forms.Integration;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.FormsDesigner
{
public sealed class FormKeyHandler : IMessageFilter
{
const int keyPressedMessage = 0x100;
const int leftMouseButtonDownMessage = 0x0202;
readonly Dictionary<Keys, CommandWrapper> keyTable = new Dictionary<Keys, CommandWrapper>();
public static bool inserted = false;
public static void Insert()
{
inserted = true;
Application.AddMessageFilter(new FormKeyHandler());
}
public FormKeyHandler()
{
// normal keys
keyTable[Keys.Left] = new CommandWrapper(MenuCommands.KeyMoveLeft);
keyTable[Keys.Right] = new CommandWrapper(MenuCommands.KeyMoveRight);
keyTable[Keys.Up] = new CommandWrapper(MenuCommands.KeyMoveUp);
keyTable[Keys.Down] = new CommandWrapper(MenuCommands.KeyMoveDown);
keyTable[Keys.Tab] = new CommandWrapper(MenuCommands.KeySelectNext);
keyTable[Keys.Delete] = new CommandWrapper(MenuCommands.Delete);
keyTable[Keys.Back] = new CommandWrapper(MenuCommands.Delete);
// shift modified keys
keyTable[Keys.Left | Keys.Shift] = new CommandWrapper(MenuCommands.KeySizeWidthDecrease);
keyTable[Keys.Right | Keys.Shift] = new CommandWrapper(MenuCommands.KeySizeWidthIncrease);
keyTable[Keys.Up | Keys.Shift] = new CommandWrapper(MenuCommands.KeySizeHeightDecrease);
keyTable[Keys.Down | Keys.Shift] = new CommandWrapper(MenuCommands.KeySizeHeightIncrease);
keyTable[Keys.Tab | Keys.Shift] = new CommandWrapper(MenuCommands.KeySelectPrevious);
keyTable[Keys.Delete| Keys.Shift] = new CommandWrapper(MenuCommands.Delete);
keyTable[Keys.Back| Keys.Shift] = new CommandWrapper(MenuCommands.Delete);
// ctrl modified keys
keyTable[Keys.Left | Keys.Control] = new CommandWrapper(MenuCommands.KeyNudgeLeft);
keyTable[Keys.Right | Keys.Control] = new CommandWrapper(MenuCommands.KeyNudgeRight);
keyTable[Keys.Up | Keys.Control] = new CommandWrapper(MenuCommands.KeyNudgeUp);
keyTable[Keys.Down | Keys.Control] = new CommandWrapper(MenuCommands.KeyNudgeDown);
// ctrl + shift modified keys
keyTable[Keys.Left | Keys.Control | Keys.Shift] = new CommandWrapper(MenuCommands.KeyNudgeWidthDecrease);
keyTable[Keys.Right | Keys.Control | Keys.Shift] = new CommandWrapper(MenuCommands.KeyNudgeWidthIncrease);
keyTable[Keys.Up | Keys.Control | Keys.Shift] = new CommandWrapper(MenuCommands.KeyNudgeHeightDecrease);
keyTable[Keys.Down | Keys.Control | Keys.Shift] = new CommandWrapper(MenuCommands.KeyNudgeHeightIncrease);
}
public bool PreFilterMessage(ref Message m)
{
if (m.Msg != keyPressedMessage /*&& m.Msg != leftMouseButtonDownMessage*/) {
return false;
}
FormsDesignerViewContent formDesigner = WorkbenchSingleton.Workbench.ActiveContent as FormsDesignerViewContent;
if (formDesigner == null || formDesigner.AppDomainHost == null) {
return false;
}
// if (formDesigner.UserContent != null && !((Control)formDesigner.UserContent).ContainsFocus) {
// return false;
// }
//
// Control originControl = Control.FromChildHandle(m.HWnd);
// if (originControl != null && formDesigner.UserContent != null && !(formDesigner.UserContent == originControl || ((WindowsFormsHost)formDesigner.UserContent).Child.Contains(originControl))) {
// // Ignore if message origin not in forms designer
// // (e.g. navigating the main menu)
// return false;
// }
Keys keyPressed = (Keys)m.WParam.ToInt32() | Control.ModifierKeys;
if (keyPressed == Keys.Escape) {
if (formDesigner.IsTabOrderMode) {
formDesigner.HideTabOrder();
return true;
}
}
CommandWrapper commandWrapper;
if (keyTable.TryGetValue(keyPressed, out commandWrapper)) {
if (commandWrapper.CommandID == MenuCommands.Delete) {
// Check Delete menu is enabled.
if (!formDesigner.EnableDelete) {
return false;
}
}
LoggingService.Debug("Run menu command: " + commandWrapper.CommandID);
IMenuCommandService menuCommandService = (IMenuCommandService)formDesigner.AppDomainHost.GetService(typeof(IMenuCommandService));
ISelectionService selectionService = (ISelectionService)formDesigner.AppDomainHost.GetService(typeof(ISelectionService));
ICollection components = selectionService.GetSelectedComponents();
if (components.Count == 1) {
foreach (IComponent component in components) {
if (HandleMenuCommand(formDesigner, component, keyPressed))
return false;
}
}
menuCommandService.GlobalInvoke(commandWrapper.CommandID);
if (commandWrapper.RestoreSelection) {
selectionService.SetSelectedComponents(components);
}
return true;
}
return false;
}
bool HandleMenuCommand(FormsDesignerViewContent formDesigner, IComponent activeComponent, Keys keyPressed)
{
Assembly asm = typeof(WindowsFormsDesignerOptionService).Assembly;
// Microsoft made ToolStripKeyboardHandlingService internal, so we need Reflection
Type keyboardType = asm.GetType("System.Windows.Forms.Design.ToolStripKeyboardHandlingService");
object keyboardService = formDesigner.AppDomainHost.GetService(keyboardType);
if (keyboardService == null) {
LoggingService.Debug("no ToolStripKeyboardHandlingService found");
return false; // handle command normally
}
if (activeComponent is ToolStripItem) {
if (keyPressed == Keys.Up) {
keyboardType.InvokeMember("ProcessUpDown",
BindingFlags.Instance
| BindingFlags.Public
| BindingFlags.InvokeMethod,
null, keyboardService, new object[] { false });
return true; // command was handled specially
} else if (keyPressed == Keys.Down) {
keyboardType.InvokeMember("ProcessUpDown",
BindingFlags.Instance
| BindingFlags.Public
| BindingFlags.InvokeMethod,
null, keyboardService, new object[] { true });
return true; // command was handled specially
}
}
bool active = (bool)keyboardType.InvokeMember("TemplateNodeActive",
BindingFlags.Instance
| BindingFlags.NonPublic
| BindingFlags.GetProperty,
null, keyboardService, null);
if (active) {
return true; // command will handled specially by the text box, don't invoke the CommandID
}
return false; // invoke the CommandID
}
sealed class CommandWrapper
{
CommandID commandID;
bool restoreSelection;
public CommandID CommandID {
get {
return commandID;
}
}
public bool RestoreSelection {
get {
return restoreSelection;
}
}
public CommandWrapper(CommandID commandID) : this(commandID, false)
{
}
public CommandWrapper(CommandID commandID, bool restoreSelection)
{
this.commandID = commandID;
this.restoreSelection = restoreSelection;
}
}
}
}

1
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesigner.AddIn.csproj

@ -90,7 +90,6 @@ @@ -90,7 +90,6 @@
<Compile Include="DesignerSourceCodeStorage.cs" />
<Compile Include="FormsDesignerLoggingServiceImpl.cs" />
<Compile Include="FormsDesignerViewContent.cs" />
<Compile Include="FormKeyHandler.cs" />
<Compile Include="ImageResourceEditorDialog.cs" />
<Compile Include="ImageResourceEditorDialog.Designer.cs">
<DependentUpon>ImageResourceEditorDialog.cs</DependentUpon>

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

@ -177,7 +177,9 @@ namespace ICSharpCode.FormsDesigner @@ -177,7 +177,9 @@ namespace ICSharpCode.FormsDesigner
{
LoggingService.Debug("Forms designer: Load " + file.FileName + "; inMasterLoadOperation=" + this.inMasterLoadOperation);
LoadAppDomain();
if (appDomain == null) {
LoadAppDomain();
}
propertyContainer.PropertyGridReplacementContent = WrapInCustomHost(appDomainHost.CreatePropertyPad());
@ -359,6 +361,12 @@ namespace ICSharpCode.FormsDesigner @@ -359,6 +361,12 @@ namespace ICSharpCode.FormsDesigner
{
vc.HideTabOrder();
}
public Control DesignerContent {
get {
return vc.DesignerContent;
}
}
}
#endregion
@ -424,7 +432,6 @@ namespace ICSharpCode.FormsDesigner @@ -424,7 +432,6 @@ namespace ICSharpCode.FormsDesigner
}
return DefaultProjectContent.DummyProjectContent;
}
SharpDevelopDesignerOptions LoadOptions()
{
@ -595,6 +602,8 @@ namespace ICSharpCode.FormsDesigner @@ -595,6 +602,8 @@ namespace ICSharpCode.FormsDesigner
bool reloadPending;
CustomWindowsFormsHost designView;
void DesignerLoaded(object sender, LoadedEventArgsProxy e)
{
// This method is called when the designer has loaded.
@ -607,7 +616,7 @@ namespace ICSharpCode.FormsDesigner @@ -607,7 +616,7 @@ namespace ICSharpCode.FormsDesigner
// enableFontInheritance: Make sure auto-scaling is based on the correct font.
// This is required on Vista, I don't know why it works correctly in XP
CustomWindowsFormsHost designView = WrapInCustomHost(appDomainHost.DesignSurfaceView, enableFontInheritance: false);
designView = WrapInCustomHost(appDomainHost.DesignSurfaceView, enableFontInheritance: false);
this.UserContent = designView;
LoggingService.Debug("FormsDesigner loaded, setting ActiveDesignSurface to " + appDomainHost.DesignSurfaceName);
@ -728,7 +737,8 @@ namespace ICSharpCode.FormsDesigner @@ -728,7 +737,8 @@ namespace ICSharpCode.FormsDesigner
ICSharpCode.SharpDevelop.Debugging.DebuggerService.DebugStarting -= this.DebugStarting;
FileService.FileRemoving -= this.FileServiceFileRemoving;
this.UnloadDesigner();
this.UnloadDesigner();
Application.Idle -= ApplicationIdle;
// null check is required to support running in unit test mode
@ -786,48 +796,42 @@ namespace ICSharpCode.FormsDesigner @@ -786,48 +796,42 @@ namespace ICSharpCode.FormsDesigner
#endregion
#region IClipboardHandler implementation
bool IsMenuCommandEnabled(CommandID commandID)
bool IsMenuCommandEnabled(CommandIDEnum commandID)
{
if (appDomainHost.DesignSurfaceName == null) {
return false;
}
IMenuCommandService menuCommandService = (IMenuCommandService)appDomainHost.GetService(typeof(IMenuCommandService));
IMenuCommandServiceProxy menuCommandService = (IMenuCommandServiceProxy)appDomainHost.MenuCommandService;
if (menuCommandService == null) {
return false;
}
System.ComponentModel.Design.MenuCommand menuCommand = menuCommandService.FindCommand(commandID);
if (menuCommand == null) {
return false;
}
//int status = menuCommand.OleStatus;
return menuCommand.Enabled;
return menuCommandService.IsCommandEnabled(commandID);
}
public bool EnableCut {
get {
return IsMenuCommandEnabled(StandardCommands.Cut);
return IsMenuCommandEnabled(CommandIDEnum.Cut);
}
}
public bool EnableCopy {
get {
return IsMenuCommandEnabled(StandardCommands.Copy);
return IsMenuCommandEnabled(CommandIDEnum.Copy);
}
}
const string ComponentClipboardFormat = "CF_DESIGNERCOMPONENTS";
public bool EnablePaste {
get {
return IsMenuCommandEnabled(StandardCommands.Paste);
return IsMenuCommandEnabled(CommandIDEnum.Paste);
}
}
public bool EnableDelete {
get {
return IsMenuCommandEnabled(StandardCommands.Delete);
return IsMenuCommandEnabled(CommandIDEnum.Delete);
}
}
@ -914,7 +918,12 @@ namespace ICSharpCode.FormsDesigner @@ -914,7 +918,12 @@ namespace ICSharpCode.FormsDesigner
}
public virtual object ToolsContent {
get { return toolbox.FormsDesignerSideBar; }
get {
if (appDomain == null) {
LoadAppDomain();
}
return toolbox.FormsDesignerSideBar;
}
}
void FileServiceFileRemoving(object sender, FileCancelEventArgs e)
@ -1004,5 +1013,11 @@ namespace ICSharpCode.FormsDesigner @@ -1004,5 +1013,11 @@ namespace ICSharpCode.FormsDesigner
return generator;
}
}
public Control DesignerContent {
get {
return designView.Child;
}
}
}
}

1
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Toolbox/ToolboxProvider.cs

@ -103,6 +103,7 @@ namespace ICSharpCode.FormsDesigner @@ -103,6 +103,7 @@ namespace ICSharpCode.FormsDesigner
foreach (Category category in componentLibraryLoader.Categories) {
if (category.IsEnabled) {
try {
bool domain = DesignerAppDomainManager.IsDesignerDomain;
DesignerSideTab newTab = new DesignerSideTab(this, sideBar, category, toolboxService);
newTab.ItemRemoved += SideTabItemRemoved;
newTab.ItemsExchanged += SideTabItemsExchanged;

33
src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs

@ -6,6 +6,7 @@ using System.ComponentModel.Design; @@ -6,6 +6,7 @@ using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Drawing;
using System.Drawing.Design;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Reflection;
@ -27,6 +28,7 @@ namespace ICSharpCode.FormsDesigner @@ -27,6 +28,7 @@ namespace ICSharpCode.FormsDesigner
ServiceContainer container;
DesignerLoader loader;
IFormsDesignerLoggingService logger;
Services.MenuCommandService menuCommandService;
IDesignerGenerator generator;
bool unloading;
FormsDesignerAppDomainCreationProperties properties;
@ -97,8 +99,10 @@ namespace ICSharpCode.FormsDesigner @@ -97,8 +99,10 @@ namespace ICSharpCode.FormsDesigner
this.designSurface = designSurfaceManager.CreateDesignSurface(container);
var eventBindingService = new Services.EventBindingService(properties.FormsDesignerProxy, designSurface);
this.menuCommandService = new ICSharpCode.FormsDesigner.Services.MenuCommandService(properties.Commands, designSurface);
container.AddService(typeof(System.ComponentModel.Design.IEventBindingService), eventBindingService);
container.AddService(typeof(System.ComponentModel.Design.IMenuCommandService), new ICSharpCode.FormsDesigner.Services.MenuCommandService(properties.Commands, designSurface).Proxy);
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));
@ -325,7 +329,8 @@ namespace ICSharpCode.FormsDesigner @@ -325,7 +329,8 @@ namespace ICSharpCode.FormsDesigner
public object GetService(Type serviceType)
{
return designSurface.GetService(serviceType);
var svc = designSurface.GetService(serviceType);
return svc;
}
public void BeginDesignSurfaceLoad(IDesignerGenerator generator, IDesignerLoaderProvider loaderProvider)
@ -425,6 +430,12 @@ namespace ICSharpCode.FormsDesigner @@ -425,6 +430,12 @@ namespace ICSharpCode.FormsDesigner
}
}
public IMenuCommandService MenuCommandService {
get {
return menuCommandService.Proxy;
}
}
List<IDesignerVerbProxy> designerVerbs;
public List<IDesignerVerbProxy> CommandVerbs {
@ -449,28 +460,30 @@ namespace ICSharpCode.FormsDesigner @@ -449,28 +460,30 @@ namespace ICSharpCode.FormsDesigner
Services.AddService(type, service);
}
public Bitmap LoadComponentIcon(ToolComponent component)
public Stream LoadComponentIconStream(ToolComponent component)
{
Assembly asm = component.LoadAssembly();
Type type = asm.GetType(component.FullName);
Bitmap b = null;
Stream s = null;
if (type != null) {
object[] attributes = type.GetCustomAttributes(false);
foreach (object attr in attributes) {
if (attr is ToolboxBitmapAttribute) {
ToolboxBitmapAttribute toolboxBitmapAttribute = (ToolboxBitmapAttribute)attr;
b = new Bitmap(toolboxBitmapAttribute.GetImage(type));
b.MakeTransparent();
var img = new Bitmap(toolboxBitmapAttribute.GetImage(type));
s = new MemoryStream();
img.Save(s, ImageFormat.Png);
break;
}
}
}
if (b == null) {
if (s == null) {
try {
Stream imageStream = asm.GetManifestResourceStream(component.FullName + ".bmp");
if (imageStream != null) {
b = new Bitmap(Image.FromStream(imageStream));
b.MakeTransparent();
var img = new Bitmap(Image.FromStream(imageStream));
s = new MemoryStream();
img.Save(s, ImageFormat.Png);
}
} catch (Exception e) {
logger.Warn("ComponentLibraryLoader.GetIcon: " + e.Message);
@ -478,7 +491,7 @@ namespace ICSharpCode.FormsDesigner @@ -478,7 +491,7 @@ namespace ICSharpCode.FormsDesigner
}
// TODO: Maybe default icon needed ??!?!
return b;
return s;
}
public AssemblyName GetAssemblyName(ToolComponent component)

21
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/FormKeyHandler.cs

@ -70,19 +70,16 @@ namespace ICSharpCode.FormsDesigner @@ -70,19 +70,16 @@ namespace ICSharpCode.FormsDesigner
IFormsDesigner formsDesigner = host.GetService(typeof(IFormsDesigner)) as IFormsDesigner;
if (formsDesigner == null) {
if (formsDesigner == null || (formsDesigner.DesignerContent != null && !((Control)formsDesigner.DesignerContent).ContainsFocus)) {
return false;
}
Control originControl = Control.FromChildHandle(m.HWnd);
if (originControl != null && formsDesigner.DesignerContent != null && formsDesigner.DesignerContent != originControl) {
// Ignore if message origin not in forms designer
// (e.g. navigating the main menu)
return false;
}
// if (formDesigner.UserContent != null && !((Control)formDesigner.UserContent).ContainsFocus) {
// return false;
// }
//
// Control originControl = Control.FromChildHandle(m.HWnd);
// if (originControl != null && formDesigner.UserContent != null && !(formDesigner.UserContent == originControl || ((WindowsFormsHost)formDesigner.UserContent).Child.Contains(originControl))) {
// // Ignore if message origin not in forms designer
// // (e.g. navigating the main menu)
// return false;
// }
Keys keyPressed = (Keys)m.WParam.ToInt32() | Control.ModifierKeys;
@ -103,7 +100,7 @@ namespace ICSharpCode.FormsDesigner @@ -103,7 +100,7 @@ namespace ICSharpCode.FormsDesigner
}
host.LoggingService.Debug("Run menu command: " + commandWrapper.CommandID);
IMenuCommandService menuCommandService = (IMenuCommandService)host.GetService(typeof(IMenuCommandService));
IMenuCommandService menuCommandService = host.MenuCommandService;
ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService));
ICollection components = selectionService.GetSelectedComponents();
if (components.Count == 1) {

4
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/ComponentLibraryLoader.cs

@ -353,7 +353,9 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -353,7 +353,9 @@ namespace ICSharpCode.FormsDesigner.Gui
public Bitmap GetIcon(ToolComponent component)
{
return appDomainHost.LoadComponentIcon(component);
var img = new Bitmap(appDomainHost.LoadComponentIconStream(component));
img.MakeTransparent();
return img;
}
public ToolComponent GetToolComponent(string assemblyName)

3
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/IFormsDesigner.cs

@ -7,7 +7,7 @@ using System.Globalization; @@ -7,7 +7,7 @@ using System.Globalization;
using System.IO;
using System.Resources;
using System.Security.AccessControl;
using System.Windows.Forms;
using ICSharpCode.FormsDesigner.Services;
namespace ICSharpCode.FormsDesigner
@ -28,6 +28,7 @@ namespace ICSharpCode.FormsDesigner @@ -28,6 +28,7 @@ namespace ICSharpCode.FormsDesigner
SharpDevelopDesignerOptions DesignerOptions { get; }
bool IsTabOrderMode { get; }
bool EnableDelete { get; }
Control DesignerContent { get; }
void MakeDirty();
void HideTabOrder();

12
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/MenuCommandService.cs

@ -44,7 +44,7 @@ namespace ICSharpCode.FormsDesigner.Services @@ -44,7 +44,7 @@ namespace ICSharpCode.FormsDesigner.Services
}
}
public class MenuCommandServiceProxy : MarshalByRefObject, System.ComponentModel.Design.IMenuCommandService
public class MenuCommandServiceProxy : MarshalByRefObject, System.ComponentModel.Design.IMenuCommandService, IMenuCommandServiceProxy
{
MenuCommandService mcs;
@ -93,6 +93,16 @@ namespace ICSharpCode.FormsDesigner.Services @@ -93,6 +93,16 @@ namespace ICSharpCode.FormsDesigner.Services
{
mcs.RemoveVerb(verb);
}
public bool IsCommandEnabled(CommandIDEnum command)
{
return FindCommand(CommandIDEnumConverter.ToCommandID(command)).Enabled;
}
}
public interface IMenuCommandServiceProxy
{
bool IsCommandEnabled(CommandIDEnum command);
}
public interface IDesignerVerbProxy

2
src/Main/ICSharpCode.SharpDevelop.Widgets/Project/SideBar/SideBar.cs

@ -26,11 +26,11 @@ namespace ICSharpCode.SharpDevelop.Widgets.SideBar @@ -26,11 +26,11 @@ namespace ICSharpCode.SharpDevelop.Widgets.SideBar
{
return new SideTabItem(name, tag);
}
public SideTabItem CreateSideTabItem(string name, object tag, Bitmap bitmap)
{
return new SideTabItem(name, tag, bitmap);
}
}
public interface ISideTabFactory

Loading…
Cancel
Save