2026-05-01 17:20:47 +08:00
|
|
|
using Ink_Canvas.Properties;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
|
|
|
|
|
namespace Ink_Canvas.Controls.Toolbar.Items
|
|
|
|
|
{
|
|
|
|
|
internal abstract class ToolbarImageButtonItemBase : IToolbarItem
|
|
|
|
|
{
|
|
|
|
|
public abstract string Id { get; }
|
|
|
|
|
public abstract string LocalizationKey { get; }
|
|
|
|
|
public abstract ToolbarSlot DefaultSlot { get; }
|
|
|
|
|
public abstract int DefaultOrder { get; }
|
|
|
|
|
public virtual bool DefaultVisible => true;
|
|
|
|
|
public virtual ToolbarInsertPosition DefaultPosition => ToolbarInsertPosition.Prepend;
|
|
|
|
|
public virtual string DefaultAnchorName => null;
|
|
|
|
|
|
2026-05-02 13:41:02 +08:00
|
|
|
public string DisplayName => Strings.GetString(LocalizationKey) ?? LocalizationKey;
|
|
|
|
|
public virtual string MenuPanelName => null;
|
2026-05-01 17:20:47 +08:00
|
|
|
|
2026-05-02 13:41:02 +08:00
|
|
|
protected virtual string IconBrushResourceKey => null;
|
2026-05-01 21:58:09 +08:00
|
|
|
protected virtual string LabelBrushResourceKey => null;
|
|
|
|
|
|
2026-05-01 17:20:47 +08:00
|
|
|
protected abstract void OnClick(IToolbarHost host, object sender, MouseButtonEventArgs e);
|
|
|
|
|
|
|
|
|
|
protected virtual void AfterBuild(IToolbarHost host, ToolbarImageButton view) { }
|
|
|
|
|
|
|
|
|
|
public FrameworkElement BuildView(IToolbarHost host)
|
|
|
|
|
{
|
|
|
|
|
var btn = new ToolbarImageButton
|
|
|
|
|
{
|
2026-05-02 13:41:02 +08:00
|
|
|
Label = Strings.GetString(LocalizationKey) ?? LocalizationKey,
|
|
|
|
|
Tag = "ToolbarRegistryInjected"
|
2026-05-01 17:20:47 +08:00
|
|
|
};
|
|
|
|
|
if (!string.IsNullOrEmpty(IconBrushResourceKey))
|
|
|
|
|
{
|
|
|
|
|
if (btn.TryFindResource(IconBrushResourceKey) is Brush brush) btn.IconBrush = brush;
|
|
|
|
|
else btn.SetResourceReference(ToolbarImageButton.IconBrushProperty, IconBrushResourceKey);
|
|
|
|
|
}
|
2026-05-01 21:58:09 +08:00
|
|
|
if (!string.IsNullOrEmpty(LabelBrushResourceKey))
|
|
|
|
|
{
|
|
|
|
|
if (btn.TryFindResource(LabelBrushResourceKey) is Brush brush) btn.LabelBrush = brush;
|
|
|
|
|
else btn.SetResourceReference(ToolbarImageButton.LabelBrushProperty, LabelBrushResourceKey);
|
|
|
|
|
}
|
2026-05-01 17:20:47 +08:00
|
|
|
btn.ButtonMouseUp += (s, e) => OnClick(host, s, e);
|
|
|
|
|
AfterBuild(host, btn);
|
|
|
|
|
return btn;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|