509 lines
13 KiB
C#
509 lines
13 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Media;
|
|
|
|
namespace Ink_Canvas.Helpers.Plugins
|
|
{
|
|
/// <summary>
|
|
/// 插件服务管理器,实现IPluginService接口,提供对软件内部功能的访问
|
|
/// </summary>
|
|
public class PluginServiceManager : IPluginService
|
|
{
|
|
private static PluginServiceManager _instance;
|
|
private MainWindow _mainWindow;
|
|
private Dictionary<string, EventHandler> _eventHandlers;
|
|
|
|
/// <summary>
|
|
/// 单例实例
|
|
/// </summary>
|
|
public static PluginServiceManager Instance
|
|
{
|
|
get
|
|
{
|
|
if (_instance == null)
|
|
{
|
|
_instance = new PluginServiceManager();
|
|
}
|
|
return _instance;
|
|
}
|
|
}
|
|
|
|
private PluginServiceManager()
|
|
{
|
|
_eventHandlers = new Dictionary<string, EventHandler>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置主窗口引用
|
|
/// </summary>
|
|
/// <param name="mainWindow">主窗口实例</param>
|
|
public void SetMainWindow(MainWindow mainWindow)
|
|
{
|
|
_mainWindow = mainWindow;
|
|
}
|
|
|
|
#region 窗口和UI访问
|
|
|
|
public Window MainWindow => _mainWindow;
|
|
|
|
public InkCanvas CurrentCanvas => null; // 暂时返回null,避免访问权限问题
|
|
|
|
public List<Canvas> AllCanvasPages => new List<Canvas>(); // 暂时返回空列表
|
|
|
|
public int CurrentPageIndex => 0; // 暂时返回0
|
|
|
|
public int TotalPageCount => 0; // 暂时返回0
|
|
|
|
public FrameworkElement FloatingToolBar => _mainWindow?.ViewboxFloatingBar;
|
|
|
|
public FrameworkElement LeftPanel => _mainWindow?.BlackboardLeftSide;
|
|
|
|
public FrameworkElement RightPanel => _mainWindow?.BlackboardRightSide;
|
|
|
|
public FrameworkElement TopPanel => _mainWindow?.BorderTools;
|
|
|
|
public FrameworkElement BottomPanel => _mainWindow?.BorderSettings;
|
|
|
|
#endregion
|
|
|
|
#region 绘制工具状态
|
|
|
|
public int CurrentDrawingMode => 0; // 暂时返回0
|
|
|
|
public double CurrentInkWidth => 2.5; // 暂时返回默认值
|
|
|
|
public Color CurrentInkColor => Colors.Black; // 暂时返回默认值
|
|
|
|
public double CurrentHighlighterWidth => 20.0; // 暂时返回默认值
|
|
|
|
public int CurrentEraserSize => 2; // 暂时返回默认值
|
|
|
|
public int CurrentEraserType => 0; // 暂时返回默认值
|
|
|
|
public int CurrentEraserShape => 0; // 暂时返回默认值
|
|
|
|
public double CurrentInkAlpha => 255.0; // 暂时返回默认值
|
|
|
|
public int CurrentInkStyle => 0; // 暂时返回默认值
|
|
|
|
public string CurrentBackgroundColor => "#162924"; // 暂时返回默认值
|
|
|
|
#endregion
|
|
|
|
#region 应用状态
|
|
|
|
public bool IsDarkTheme => false; // 暂时返回默认值
|
|
|
|
public bool IsWhiteboardMode => false; // 暂时返回默认值
|
|
|
|
public bool IsPPTMode => false; // 暂时返回默认值
|
|
|
|
public bool IsFullScreenMode => false; // 暂时返回默认值
|
|
|
|
public bool IsCanvasMode => true; // 暂时返回默认值
|
|
|
|
public bool IsSelectionMode => false; // 暂时返回默认值
|
|
|
|
public bool IsEraserMode => false; // 暂时返回默认值
|
|
|
|
public bool IsShapeDrawingMode => false; // 暂时返回默认值
|
|
|
|
public bool IsHighlighterMode => false; // 暂时返回默认值
|
|
|
|
#endregion
|
|
|
|
#region IGetService 实现
|
|
|
|
public bool CanUndo => false; // 暂时返回默认值
|
|
|
|
public bool CanRedo => false; // 暂时返回默认值
|
|
|
|
public T GetSetting<T>(string key, T defaultValue = default(T))
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
return defaultValue;
|
|
}
|
|
|
|
public List<IPlugin> GetAllPlugins()
|
|
{
|
|
return new List<IPlugin>(PluginManager.Instance.Plugins);
|
|
}
|
|
|
|
public IPlugin GetPlugin(string pluginName)
|
|
{
|
|
return PluginManager.Instance.Plugins.FirstOrDefault(p => p.Name == pluginName);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IWindowService 实现
|
|
|
|
public void ShowSettingsWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void HideSettingsWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void ShowPluginSettingsWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void HidePluginSettingsWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void ShowHelpWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void HideHelpWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void ShowAboutWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void HideAboutWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void ShowNotification(string message, NotificationType type = NotificationType.Info)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public bool ShowConfirmDialog(string message, string title = "确认")
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
return false;
|
|
}
|
|
|
|
public string ShowInputDialog(string message, string title = "输入", string defaultValue = "")
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
return defaultValue;
|
|
}
|
|
|
|
public void SetFullScreen(bool isFullScreen)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetTopMost(bool isTopMost)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetWindowVisibility(bool isVisible)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void MinimizeWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void MaximizeWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void RestoreWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void CloseWindow()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetWindowPosition(double x, double y)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetWindowSize(double width, double height)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public (double x, double y) GetWindowPosition()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
return (0, 0);
|
|
}
|
|
|
|
public (double width, double height) GetWindowSize()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
return (800, 600);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IActionService 实现
|
|
|
|
public void ClearCanvas()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void ClearAllCanvases()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void AddNewPage()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void DeleteCurrentPage()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SwitchToPage(int pageIndex)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void NextPage()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void PreviousPage()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetDrawingMode(int mode)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetInkWidth(double width)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetInkColor(Color color)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetHighlighterWidth(double width)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetEraserSize(int size)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetEraserType(int type)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetEraserShape(int shape)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetInkAlpha(double alpha)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetInkStyle(int style)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetBackgroundColor(string color)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SaveCanvas(string filePath)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void LoadCanvas(string filePath)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void ExportAsImage(string filePath, string format)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void ExportAsPDF(string filePath)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void Undo()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void Redo()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SelectAll()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void DeselectAll()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void DeleteSelected()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void CopySelected()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void CutSelected()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void Paste()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SetSetting<T>(string key, T value)
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void SaveSettings()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void LoadSettings()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void ResetSettings()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void EnablePlugin(string pluginName)
|
|
{
|
|
var plugin = GetPlugin(pluginName);
|
|
if (plugin != null)
|
|
{
|
|
PluginManager.Instance.TogglePlugin(plugin, true);
|
|
}
|
|
}
|
|
|
|
public void DisablePlugin(string pluginName)
|
|
{
|
|
var plugin = GetPlugin(pluginName);
|
|
if (plugin != null)
|
|
{
|
|
PluginManager.Instance.TogglePlugin(plugin, false);
|
|
}
|
|
}
|
|
|
|
public void UnloadPlugin(string pluginName)
|
|
{
|
|
var plugin = GetPlugin(pluginName);
|
|
if (plugin != null)
|
|
{
|
|
PluginManager.Instance.UnloadPlugin(plugin);
|
|
}
|
|
}
|
|
|
|
public void RegisterEventHandler(string eventName, EventHandler handler)
|
|
{
|
|
if (!_eventHandlers.ContainsKey(eventName))
|
|
{
|
|
_eventHandlers[eventName] = handler;
|
|
}
|
|
else
|
|
{
|
|
_eventHandlers[eventName] += handler;
|
|
}
|
|
}
|
|
|
|
public void UnregisterEventHandler(string eventName, EventHandler handler)
|
|
{
|
|
if (_eventHandlers.ContainsKey(eventName))
|
|
{
|
|
_eventHandlers[eventName] -= handler;
|
|
}
|
|
}
|
|
|
|
public void TriggerEvent(string eventName, object sender, EventArgs args)
|
|
{
|
|
if (_eventHandlers.ContainsKey(eventName))
|
|
{
|
|
_eventHandlers[eventName]?.Invoke(sender, args);
|
|
}
|
|
}
|
|
|
|
public void RestartApplication()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void ExitApplication()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void CheckForUpdates()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void OpenHelpDocument()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
public void OpenAboutPage()
|
|
{
|
|
// 暂时不实现,避免访问权限问题
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |