feat(工具栏设置): 添加工具栏配置页面及功能实现
实现工具栏配置页面,允许用户调整工具栏按钮的顺序和可见性 包含主工具栏、画布控制和尾部按钮三个区域的配置 支持恢复默认布局功能
This commit is contained in:
@@ -35,7 +35,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
AnimationsHelper.HideWithSlideAndFade(EraserSizePanel);
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(PenPalette);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardPenPalette);
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderDrawShape);
|
||||
|
||||
@@ -295,7 +295,7 @@ namespace Ink_Canvas
|
||||
private void HideSubPanelsImmediately()
|
||||
{
|
||||
BorderTools.Visibility = Visibility.Collapsed;
|
||||
BoardBorderTools.Visibility = Visibility.Collapsed;
|
||||
BoardBorderToolsPopup.IsOpen = false;
|
||||
PenPalette.Visibility = Visibility.Collapsed;
|
||||
BoardPenPalette.Visibility = Visibility.Collapsed;
|
||||
BoardEraserSizePanel.Visibility = Visibility.Collapsed;
|
||||
@@ -377,7 +377,7 @@ namespace Ink_Canvas
|
||||
internal async void HideSubPanels(string mode = null, bool autoAlignCenter = false)
|
||||
{
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(PenPalette);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardPenPalette);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardEraserSizePanel);
|
||||
@@ -1100,7 +1100,7 @@ namespace Ink_Canvas
|
||||
LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
if (Settings.RandSettings?.UseNewStyleUI == true)
|
||||
@@ -1152,7 +1152,7 @@ namespace Ink_Canvas
|
||||
private void OperatingGuideWindowIcon_MouseUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
new OperatingGuideWindow().Show();
|
||||
@@ -1172,7 +1172,7 @@ namespace Ink_Canvas
|
||||
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
// 根据设置决定使用哪个点名窗口
|
||||
@@ -1307,7 +1307,7 @@ namespace Ink_Canvas
|
||||
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
// 检查是否启用了外部点名功能
|
||||
@@ -1386,7 +1386,7 @@ namespace Ink_Canvas
|
||||
//if (lastBorderMouseDownObject != sender) return;
|
||||
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
CollapseBorderDrawShape();
|
||||
@@ -1687,10 +1687,10 @@ namespace Ink_Canvas
|
||||
/// <param name="e">鼠标按钮事件参数</param>
|
||||
internal void SymbolIconTools_MouseUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (BorderTools.Visibility == Visibility.Visible || BoardBorderTools.Visibility == Visibility.Visible)
|
||||
if (BorderTools.Visibility == Visibility.Visible || BoardBorderToolsPopup.IsOpen)
|
||||
{
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1702,7 +1702,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
else
|
||||
{
|
||||
AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardBorderTools);
|
||||
AnimationsHelper.ShowPopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ namespace Ink_Canvas
|
||||
if (lastBorderMouseDownObject != sender || inkCanvas.Visibility != Visibility.Visible) return;
|
||||
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
|
||||
GridNotifications.Visibility = Visibility.Collapsed;
|
||||
|
||||
@@ -917,7 +917,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
if (lastBorderMouseDownObject != sender) return;
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
|
||||
var openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.InitialDirectory = Settings.Automation.AutoSavedStrokesLocation;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using System;
|
||||
using Ink_Canvas.Controls;
|
||||
using Ink_Canvas.Controls.Toolbar;
|
||||
using Ink_Canvas.Helpers;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Controls;
|
||||
|
||||
@@ -7,8 +9,6 @@ namespace Ink_Canvas
|
||||
{
|
||||
public partial class MainWindow
|
||||
{
|
||||
// 这批属性替代了 XAML 中原有的 x:Name 自动生成字段;外部代码继续按原名访问。
|
||||
// 由对应 Toolbar Item 的 AfterBuild 回填,Populate 发生在 Window_Loaded 早期。
|
||||
internal ToolbarImageButton SymbolIconDelete { get; private set; }
|
||||
internal ToolbarImageButton Eraser_Icon { get; private set; }
|
||||
internal ToolbarImageButton EraserByStrokes_Icon { get; private set; }
|
||||
@@ -35,22 +35,46 @@ namespace Ink_Canvas
|
||||
internal void AttachToolsBtn(ToolbarImageButton btn) => ToolsFloatingBarBtn = btn;
|
||||
internal void AttachFoldIcon(ToolbarImageButton btn) => Fold_Icon = btn;
|
||||
|
||||
/// <summary>
|
||||
/// 在 Window_Loaded 早期调用:按 Settings.Toolbar 配置把插件化按钮填充到对应容器。
|
||||
/// 必须在 LoadSettings 之前,因为 LoadSettings 会访问 Cursor_Icon/Pen_Icon/Eraser_Icon 等。
|
||||
/// </summary>
|
||||
internal void InitializeToolbarPlugins()
|
||||
{
|
||||
ToolbarHost = new ToolbarHost(this);
|
||||
var slots = new Dictionary<ToolbarSlot, Panel>
|
||||
LogHelper.WriteLogToFile("MW_Toolbar: InitializeToolbarPlugins 开始", LogHelper.LogType.Info);
|
||||
try
|
||||
{
|
||||
{ ToolbarSlot.FloatingBarMain, StackPanelFloatingBar },
|
||||
{ ToolbarSlot.FloatingBarCanvasControls, StackPanelCanvasControls },
|
||||
{ ToolbarSlot.FloatingBarEnd, StackPanelFloatingBarEnd },
|
||||
{ ToolbarSlot.BlackboardLeft, BlackboardLeftSide },
|
||||
{ ToolbarSlot.BlackboardRight, BlackboardRightSide }
|
||||
};
|
||||
ToolbarRegistry.Populate(ToolbarHost, slots, Settings?.Toolbar);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user