Browse Source

Possibilities to disable Extensions

pull/604/head
jkuehner 11 years ago
parent
commit
0d69188c47
  1. 15
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/Extension.cs
  2. 17
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs

15
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/Extension.cs

@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
using System;
using System.Diagnostics;
using System.Windows;
namespace ICSharpCode.WpfDesign.Extensions
{
@ -32,5 +33,19 @@ namespace ICSharpCode.WpfDesign.Extensions @@ -32,5 +33,19 @@ namespace ICSharpCode.WpfDesign.Extensions
/// </remarks>
public abstract class Extension
{
public static string GetDisabledExtensions(DependencyObject obj)
{
return (string)obj.GetValue(DisabledExtensionsProperty);
}
public static void SetDisabledExtensions(DependencyObject obj, string value)
{
obj.SetValue(DisabledExtensionsProperty, value);
}
public static readonly DependencyProperty DisabledExtensionsProperty =
DependencyProperty.RegisterAttached("DisabledExtensions", typeof(string), typeof(Extension), new PropertyMetadata(null));
}
}

17
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs

@ -65,14 +65,14 @@ namespace ICSharpCode.WpfDesign.Extensions @@ -65,14 +65,14 @@ namespace ICSharpCode.WpfDesign.Extensions
internal readonly Type ExtensionType;
internal readonly ExtensionServer Server;
internal readonly Type OverriddenExtensionType;
internal readonly int Order;
internal readonly int Order;
public ExtensionEntry(Type extensionType, ExtensionServer server, Type overriddenExtensionType, int Order)
public ExtensionEntry(Type extensionType, ExtensionServer server, Type overriddenExtensionType, int Order)
{
this.ExtensionType = extensionType;
this.Server = server;
this.OverriddenExtensionType = overriddenExtensionType;
this.Order = Order;
this.Order = Order;
}
}
@ -106,7 +106,7 @@ namespace ICSharpCode.WpfDesign.Extensions @@ -106,7 +106,7 @@ namespace ICSharpCode.WpfDesign.Extensions
result.Add(entry);
}
}
return result.OrderBy(x => x.Order).ToList();
return result.OrderBy(x => x.Order).ToList();
}
/// <summary>
@ -151,7 +151,10 @@ namespace ICSharpCode.WpfDesign.Extensions @@ -151,7 +151,10 @@ namespace ICSharpCode.WpfDesign.Extensions
foreach (ExtensionEntry entry in GetExtensionEntries(item)) {
if (entry.Server == server) {
yield return server.CreateExtension(entry.ExtensionType, item);
var disabledExtensions = Extension.GetDisabledExtensions(item.View);
if (disabledExtensions == null || !disabledExtensions.Split(';').Contains(entry.ExtensionType.Name))
yield return server.CreateExtension(entry.ExtensionType, item);
}
}
}
@ -186,8 +189,8 @@ namespace ICSharpCode.WpfDesign.Extensions @@ -186,8 +189,8 @@ namespace ICSharpCode.WpfDesign.Extensions
foreach (ExtensionForAttribute designerFor in extensionForAttributes) {
ExtensionServer server = GetServerForExtension(type);
ExtensionAttribute extensionAttribute = type.GetCustomAttributes(typeof(ExtensionAttribute), false).FirstOrDefault() as ExtensionAttribute;
AddExtensionEntry(designerFor.DesignedItemType, new ExtensionEntry(type, server, designerFor.OverrideExtension, extensionAttribute != null ? extensionAttribute.Order : 0));
ExtensionAttribute extensionAttribute = type.GetCustomAttributes(typeof(ExtensionAttribute), false).FirstOrDefault() as ExtensionAttribute;
AddExtensionEntry(designerFor.DesignedItemType, new ExtensionEntry(type, server, designerFor.OverrideExtension, extensionAttribute != null ? extensionAttribute.Order : 0));
}
}
}

Loading…
Cancel
Save