improve:插件功能
This commit is contained in:
@@ -163,6 +163,32 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
|
|||||||
// 对于资源管理器,使用特定图标
|
// 对于资源管理器,使用特定图标
|
||||||
if (Path.EndsWith("explorer.exe", StringComparison.OrdinalIgnoreCase))
|
if (Path.EndsWith("explorer.exe", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 直接从C:\Windows\explorer.exe获取图标
|
||||||
|
string explorerPath = @"C:\Windows\explorer.exe";
|
||||||
|
if (File.Exists(explorerPath))
|
||||||
|
{
|
||||||
|
Icon icon = System.Drawing.Icon.ExtractAssociatedIcon(explorerPath);
|
||||||
|
if (icon != null)
|
||||||
|
{
|
||||||
|
_iconCache = Imaging.CreateBitmapSourceFromHIcon(
|
||||||
|
icon.Handle,
|
||||||
|
Int32Rect.Empty,
|
||||||
|
BitmapSizeOptions.FromEmptyOptions());
|
||||||
|
|
||||||
|
icon.Dispose();
|
||||||
|
return _iconCache;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"获取资源管理器图标时出错: {ex.Message}", LogHelper.LogType.Warning);
|
||||||
|
// 如果获取Windows图标失败,回退到默认图标
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回退到备用图标
|
||||||
string explorerIconPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "Icons-Fluent", "ic_fluent_folder_24_regular.png");
|
string explorerIconPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "Icons-Fluent", "ic_fluent_folder_24_regular.png");
|
||||||
if (File.Exists(explorerIconPath))
|
if (File.Exists(explorerIconPath))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn
|
|||||||
new LauncherItem
|
new LauncherItem
|
||||||
{
|
{
|
||||||
Name = "资源管理器",
|
Name = "资源管理器",
|
||||||
Path = "explorer.exe",
|
Path = @"C:\Windows\explorer.exe",
|
||||||
IsVisible = true,
|
IsVisible = true,
|
||||||
Position = 0
|
Position = 0
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,23 @@ namespace Ink_Canvas.Helpers.Plugins
|
|||||||
public virtual void Initialize()
|
public virtual void Initialize()
|
||||||
{
|
{
|
||||||
Id = GetType().FullName;
|
Id = GetType().FullName;
|
||||||
|
|
||||||
|
// 添加日志,记录插件名称
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string name = Name;
|
||||||
|
LogHelper.WriteLogToFile($"初始化插件: ID={Id}, 名称={name ?? "未命名"}", LogHelper.LogType.Info);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(name))
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"警告: 插件 {Id} 的名称为空", LogHelper.LogType.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"获取插件名称时出错: {ex.Message}", LogHelper.LogType.Error);
|
||||||
|
}
|
||||||
|
|
||||||
LogHelper.WriteLogToFile($"插件 {Name} 已初始化", LogHelper.LogType.Info);
|
LogHelper.WriteLogToFile($"插件 {Name} 已初始化", LogHelper.LogType.Info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,8 @@
|
|||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
<ColumnDefinition Width="Auto"/>
|
<ColumnDefinition Width="Auto"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Text="{Binding Name}" Grid.Column="0" VerticalAlignment="Center"/>
|
<TextBlock Text="{Binding Name}" Grid.Column="0" VerticalAlignment="Center"
|
||||||
|
Foreground="Black" FontWeight="Normal" FontSize="14"/>
|
||||||
<ui:ToggleSwitch Grid.Column="1" IsOn="{Binding IsEnabled}"
|
<ui:ToggleSwitch Grid.Column="1" IsOn="{Binding IsEnabled}"
|
||||||
Toggled="PluginToggleSwitch_Toggled"
|
Toggled="PluginToggleSwitch_Toggled"
|
||||||
Tag="{Binding}" MinWidth="40"/>
|
Tag="{Binding}" MinWidth="40"/>
|
||||||
@@ -141,11 +142,11 @@
|
|||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="20,0,0,0">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="20,0,0,0">
|
||||||
<Button x:Name="BtnLoadPlugin" Content="加载本地插件" Click="BtnLoadPlugin_Click"
|
<Button x:Name="BtnLoadPlugin" Content="加载本地插件" Click="BtnLoadPlugin_Click"
|
||||||
Padding="15,5" Background="{DynamicResource SystemAccentColor}" Foreground="White"/>
|
Padding="15,5" Background="{DynamicResource SystemAccentColor}" Foreground="White"/>
|
||||||
<Button x:Name="BtnExportPlugin" Content="导出插件" Click="BtnExportPlugin_Click"
|
|
||||||
Padding="15,5" Margin="10,0,0,0" Background="{DynamicResource SystemAccentColor}" Foreground="White"/>
|
|
||||||
<Button x:Name="BtnSaveConfig" Content="保存状态" Click="BtnSaveConfig_Click"
|
<Button x:Name="BtnSaveConfig" Content="保存状态" Click="BtnSaveConfig_Click"
|
||||||
Padding="15,5" Margin="10,0,0,0" Background="{DynamicResource SystemAccentColor}" Foreground="White"
|
Padding="15,5" Margin="10,0,0,0" Background="{DynamicResource SystemAccentColor}" Foreground="White"
|
||||||
ToolTip="手动保存当前所有插件的启用/禁用状态到配置文件"/>
|
ToolTip="手动保存当前所有插件的启用/禁用状态到配置文件"/>
|
||||||
|
<Button x:Name="BtnExportPlugin" Content="导出插件" Click="BtnExportPlugin_Click"
|
||||||
|
Padding="15,5" Margin="10,0,0,0" Background="{DynamicResource SystemAccentColor}" Foreground="White"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
|||||||
@@ -120,6 +120,8 @@ namespace Ink_Canvas.Windows
|
|||||||
{
|
{
|
||||||
Plugins.Clear();
|
Plugins.Clear();
|
||||||
|
|
||||||
|
LogHelper.WriteLogToFile($"开始加载插件列表到UI,插件总数: {PluginManager.Instance.Plugins.Count}", LogHelper.LogType.Info);
|
||||||
|
|
||||||
// 添加所有已加载的插件
|
// 添加所有已加载的插件
|
||||||
foreach (var plugin in PluginManager.Instance.Plugins)
|
foreach (var plugin in PluginManager.Instance.Plugins)
|
||||||
{
|
{
|
||||||
@@ -131,6 +133,10 @@ namespace Ink_Canvas.Windows
|
|||||||
isEnabled = pluginBase.IsEnabled;
|
isEnabled = pluginBase.IsEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 记录插件详细信息
|
||||||
|
LogHelper.WriteLogToFile($"正在加载插件到UI: 类型={plugin.GetType().FullName}, 名称={plugin.Name ?? "未命名"}, 状态={isEnabled}",
|
||||||
|
LogHelper.LogType.Info);
|
||||||
|
|
||||||
// 创建视图模型并添加到集合
|
// 创建视图模型并添加到集合
|
||||||
var viewModel = new PluginViewModel(plugin)
|
var viewModel = new PluginViewModel(plugin)
|
||||||
{
|
{
|
||||||
@@ -142,13 +148,19 @@ namespace Ink_Canvas.Windows
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 绑定到ListView
|
// 绑定到ListView
|
||||||
|
LogHelper.WriteLogToFile($"绑定 {Plugins.Count} 个插件到ListView", LogHelper.LogType.Info);
|
||||||
PluginListView.ItemsSource = Plugins;
|
PluginListView.ItemsSource = Plugins;
|
||||||
|
|
||||||
// 如果有插件,选择第一个
|
// 如果有插件,选择第一个
|
||||||
if (Plugins.Count > 0)
|
if (Plugins.Count > 0)
|
||||||
{
|
{
|
||||||
|
LogHelper.WriteLogToFile($"选择第一个插件: {Plugins[0].Name}", LogHelper.LogType.Info);
|
||||||
PluginListView.SelectedIndex = 0;
|
PluginListView.SelectedIndex = 0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile("没有找到任何插件", LogHelper.LogType.Warning);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -624,7 +636,15 @@ namespace Ink_Canvas.Windows
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 插件名称
|
/// 插件名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name => Plugin.Name;
|
public string Name
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
string name = Plugin?.Name ?? "未命名插件";
|
||||||
|
LogHelper.WriteLogToFile($"获取插件名称: {name},类型: {Plugin?.GetType().FullName ?? "未知"}", LogHelper.LogType.Info);
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 插件是否启用
|
/// 插件是否启用
|
||||||
@@ -650,6 +670,9 @@ namespace Ink_Canvas.Windows
|
|||||||
// 获取实际状态
|
// 获取实际状态
|
||||||
_isEnabled = plugin is PluginBase pluginBase && pluginBase.IsEnabled;
|
_isEnabled = plugin is PluginBase pluginBase && pluginBase.IsEnabled;
|
||||||
|
|
||||||
|
// 记录日志
|
||||||
|
LogHelper.WriteLogToFile($"创建插件视图模型: {plugin?.GetType().FullName ?? "未知"}, 名称: {plugin?.Name ?? "未命名"}", LogHelper.LogType.Info);
|
||||||
|
|
||||||
// 注册插件状态变更事件
|
// 注册插件状态变更事件
|
||||||
if (plugin is PluginBase pb)
|
if (plugin is PluginBase pb)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user