Files
community/Ink Canvas/MainWindow_cs/MW_Toolbar.cs
T
PrefacedCorg 35c8e980f8 refactor(工具栏): 将BorderTools从Border改为Popup控件并优化显示逻辑
重构工具栏中的BorderTools控件,将其从Border改为Popup控件,并添加自定义位置回调
优化显示/隐藏逻辑,使用IsOpen属性替代Visibility控制
更新相关动画效果调用为对应的Popup版本
调整UI样式和布局,提升视觉一致性
2026-05-02 15:55:37 +08:00

85 lines
4.4 KiB
C#

using System;
using Ink_Canvas.Controls;
using Ink_Canvas.Controls.Toolbar;
using Ink_Canvas.Helpers;
using System.Collections.Generic;
using System.Windows.Controls;
namespace Ink_Canvas
{
public partial class MainWindow
{
internal ToolbarImageButton SymbolIconDelete { get; private set; }
internal ToolbarImageButton Eraser_Icon { get; private set; }
internal ToolbarImageButton EraserByStrokes_Icon { get; private set; }
internal ToolbarImageButton SymbolIconSelect { get; private set; }
internal ToolbarImageButton ShapeDrawFloatingBarBtn { get; private set; }
internal ToolbarImageButton SymbolIconUndo { get; private set; }
internal ToolbarImageButton SymbolIconRedo { get; private set; }
internal ToolbarImageButton CursorWithDelFloatingBarBtn { get; private set; }
internal ToolbarImageButton WhiteboardFloatingBarBtn { get; private set; }
internal ToolbarImageButton ToolsFloatingBarBtn { get; private set; }
internal ToolbarImageButton Fold_Icon { get; private set; }
internal void AttachCursorIconView(ToolbarImageButton btn) => Cursor_Icon = btn;
internal void AttachPenIconView(ToolbarImageButton btn) => Pen_Icon = btn;
internal void AttachSymbolIconDelete(ToolbarImageButton btn) => SymbolIconDelete = btn;
internal void AttachEraserIcon(ToolbarImageButton btn) => Eraser_Icon = btn;
internal void AttachEraserByStrokesIcon(ToolbarImageButton btn) => EraserByStrokes_Icon = btn;
internal void AttachSymbolIconSelect(ToolbarImageButton btn) => SymbolIconSelect = btn;
internal void AttachShapeDrawBtn(ToolbarImageButton btn) => ShapeDrawFloatingBarBtn = btn;
internal void AttachSymbolIconUndo(ToolbarImageButton btn) => SymbolIconUndo = btn;
internal void AttachSymbolIconRedo(ToolbarImageButton btn) => SymbolIconRedo = btn;
internal void AttachCursorWithDelBtn(ToolbarImageButton btn) => CursorWithDelFloatingBarBtn = btn;
internal void AttachWhiteboardBtn(ToolbarImageButton btn) => WhiteboardFloatingBarBtn = btn;
internal void AttachToolsBtn(ToolbarImageButton btn)
{
ToolsFloatingBarBtn = btn;
BorderTools.PlacementTarget = btn;
}
internal void AttachFoldIcon(ToolbarImageButton btn) => Fold_Icon = btn;
internal void InitializeToolbarPlugins()
{
LogHelper.WriteLogToFile("MW_Toolbar: InitializeToolbarPlugins 开始", LogHelper.LogType.Info);
try
{
ToolbarHost = new ToolbarHost(this);
var slots = new Dictionary<ToolbarSlot, Panel>
{
{ ToolbarSlot.FloatingBarMain, StackPanelFloatingBar },
{ ToolbarSlot.FloatingBarCanvasControls, StackPanelCanvasControls },
{ ToolbarSlot.FloatingBarEnd, StackPanelFloatingBarEnd },
{ ToolbarSlot.BlackboardLeft, BlackboardLeftSide },
{ ToolbarSlot.BlackboardRight, BlackboardRightSide }
};
ToolbarRegistry.Populate(ToolbarHost, slots, Settings?.Toolbar);
LogHelper.WriteLogToFile("MW_Toolbar: InitializeToolbarPlugins 完成", LogHelper.LogType.Info);
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"MW_Toolbar: InitializeToolbarPlugins 异常: {ex.GetType().Name}: {ex.Message}\n{ex.StackTrace}", LogHelper.LogType.Error);
}
}
internal void RebuildToolbar()
{
LogHelper.WriteLogToFile("MW_Toolbar: RebuildToolbar 开始", LogHelper.LogType.Info);
try
{
ToolbarRegistry.ClearInjected(StackPanelFloatingBar);
ToolbarRegistry.ClearInjected(StackPanelCanvasControls);
ToolbarRegistry.ClearInjected(StackPanelFloatingBarEnd);
ToolbarRegistry.ClearInjected(BlackboardLeftSide);
ToolbarRegistry.ClearInjected(BlackboardRightSide);
InitializeToolbarPlugins();
LogHelper.WriteLogToFile("MW_Toolbar: RebuildToolbar 完成", LogHelper.LogType.Info);
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"MW_Toolbar: RebuildToolbar 异常: {ex.GetType().Name}: {ex.Message}\n{ex.StackTrace}", LogHelper.LogType.Error);
}
}
}
}