2026-01-07 16:38:09 +08:00
|
|
|
// Copyright (c) Microsoft Corporation
|
|
|
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
|
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
|
|
|
|
|
|
using ManagedCommon;
|
|
|
|
|
|
|
|
|
|
namespace Microsoft.PowerToys.Settings.UI.Library.Helpers
|
|
|
|
|
{
|
|
|
|
|
public static class ModuleHelper
|
|
|
|
|
{
|
|
|
|
|
public static string GetModuleLabelResourceName(ModuleType moduleType)
|
|
|
|
|
{
|
|
|
|
|
return moduleType switch
|
|
|
|
|
{
|
|
|
|
|
ModuleType.Workspaces => "Workspaces/ModuleTitle",
|
|
|
|
|
ModuleType.PowerAccent => "QuickAccent/ModuleTitle",
|
|
|
|
|
ModuleType.PowerOCR => "TextExtractor/ModuleTitle",
|
|
|
|
|
ModuleType.FindMyMouse => "MouseUtils_FindMyMouse/Header",
|
|
|
|
|
ModuleType.MouseHighlighter => "MouseUtils_MouseHighlighter/Header",
|
|
|
|
|
ModuleType.MouseJump => "MouseUtils_MouseJump/Header",
|
|
|
|
|
ModuleType.MousePointerCrosshairs => "MouseUtils_MousePointerCrosshairs/Header",
|
|
|
|
|
ModuleType.CursorWrap => "MouseUtils_CursorWrap/Header",
|
|
|
|
|
ModuleType.GeneralSettings => "QuickAccessTitle/Title",
|
|
|
|
|
_ => $"{moduleType}/ModuleTitle",
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GetModuleTypeFluentIconName(ModuleType moduleType)
|
|
|
|
|
{
|
|
|
|
|
return moduleType switch
|
|
|
|
|
{
|
|
|
|
|
ModuleType.AdvancedPaste => "ms-appx:///Assets/Settings/Icons/AdvancedPaste.png",
|
|
|
|
|
ModuleType.Workspaces => "ms-appx:///Assets/Settings/Icons/Workspaces.png",
|
|
|
|
|
ModuleType.PowerOCR => "ms-appx:///Assets/Settings/Icons/TextExtractor.png",
|
|
|
|
|
ModuleType.PowerAccent => "ms-appx:///Assets/Settings/Icons/QuickAccent.png",
|
|
|
|
|
ModuleType.MousePointerCrosshairs => "ms-appx:///Assets/Settings/Icons/MouseCrosshairs.png",
|
|
|
|
|
ModuleType.MeasureTool => "ms-appx:///Assets/Settings/Icons/ScreenRuler.png",
|
|
|
|
|
ModuleType.PowerLauncher => "ms-appx:///Assets/Settings/Icons/PowerToysRun.png",
|
|
|
|
|
ModuleType.GeneralSettings => "ms-appx:///Assets/Settings/Icons/PowerToys.png",
|
|
|
|
|
_ => $"ms-appx:///Assets/Settings/Icons/{moduleType}.png",
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static bool GetIsModuleEnabled(GeneralSettings generalSettingsConfig, ModuleType moduleType)
|
|
|
|
|
{
|
|
|
|
|
return moduleType switch
|
|
|
|
|
{
|
|
|
|
|
ModuleType.AdvancedPaste => generalSettingsConfig.Enabled.AdvancedPaste,
|
|
|
|
|
ModuleType.AlwaysOnTop => generalSettingsConfig.Enabled.AlwaysOnTop,
|
|
|
|
|
ModuleType.Awake => generalSettingsConfig.Enabled.Awake,
|
|
|
|
|
ModuleType.CmdPal => generalSettingsConfig.Enabled.CmdPal,
|
|
|
|
|
ModuleType.ColorPicker => generalSettingsConfig.Enabled.ColorPicker,
|
|
|
|
|
ModuleType.CropAndLock => generalSettingsConfig.Enabled.CropAndLock,
|
|
|
|
|
ModuleType.CursorWrap => generalSettingsConfig.Enabled.CursorWrap,
|
|
|
|
|
ModuleType.EnvironmentVariables => generalSettingsConfig.Enabled.EnvironmentVariables,
|
|
|
|
|
ModuleType.FancyZones => generalSettingsConfig.Enabled.FancyZones,
|
|
|
|
|
ModuleType.FileLocksmith => generalSettingsConfig.Enabled.FileLocksmith,
|
|
|
|
|
ModuleType.FindMyMouse => generalSettingsConfig.Enabled.FindMyMouse,
|
|
|
|
|
ModuleType.Hosts => generalSettingsConfig.Enabled.Hosts,
|
|
|
|
|
ModuleType.ImageResizer => generalSettingsConfig.Enabled.ImageResizer,
|
|
|
|
|
ModuleType.KeyboardManager => generalSettingsConfig.Enabled.KeyboardManager,
|
|
|
|
|
ModuleType.LightSwitch => generalSettingsConfig.Enabled.LightSwitch,
|
|
|
|
|
ModuleType.MouseHighlighter => generalSettingsConfig.Enabled.MouseHighlighter,
|
|
|
|
|
ModuleType.MouseJump => generalSettingsConfig.Enabled.MouseJump,
|
|
|
|
|
ModuleType.MousePointerCrosshairs => generalSettingsConfig.Enabled.MousePointerCrosshairs,
|
|
|
|
|
ModuleType.MouseWithoutBorders => generalSettingsConfig.Enabled.MouseWithoutBorders,
|
|
|
|
|
ModuleType.NewPlus => generalSettingsConfig.Enabled.NewPlus,
|
|
|
|
|
ModuleType.Peek => generalSettingsConfig.Enabled.Peek,
|
|
|
|
|
ModuleType.PowerRename => generalSettingsConfig.Enabled.PowerRename,
|
|
|
|
|
ModuleType.PowerLauncher => generalSettingsConfig.Enabled.PowerLauncher,
|
|
|
|
|
ModuleType.PowerAccent => generalSettingsConfig.Enabled.PowerAccent,
|
|
|
|
|
ModuleType.RegistryPreview => generalSettingsConfig.Enabled.RegistryPreview,
|
|
|
|
|
ModuleType.MeasureTool => generalSettingsConfig.Enabled.MeasureTool,
|
|
|
|
|
ModuleType.ShortcutGuide => generalSettingsConfig.Enabled.ShortcutGuide,
|
|
|
|
|
ModuleType.PowerOCR => generalSettingsConfig.Enabled.PowerOcr,
|
|
|
|
|
ModuleType.Workspaces => generalSettingsConfig.Enabled.Workspaces,
|
|
|
|
|
ModuleType.ZoomIt => generalSettingsConfig.Enabled.ZoomIt,
|
|
|
|
|
ModuleType.GeneralSettings => generalSettingsConfig.EnableQuickAccess,
|
|
|
|
|
_ => false,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void SetIsModuleEnabled(GeneralSettings generalSettingsConfig, ModuleType moduleType, bool isEnabled)
|
|
|
|
|
{
|
|
|
|
|
switch (moduleType)
|
|
|
|
|
{
|
|
|
|
|
case ModuleType.AdvancedPaste: generalSettingsConfig.Enabled.AdvancedPaste = isEnabled; break;
|
|
|
|
|
case ModuleType.AlwaysOnTop: generalSettingsConfig.Enabled.AlwaysOnTop = isEnabled; break;
|
|
|
|
|
case ModuleType.Awake: generalSettingsConfig.Enabled.Awake = isEnabled; break;
|
|
|
|
|
case ModuleType.CmdPal: generalSettingsConfig.Enabled.CmdPal = isEnabled; break;
|
|
|
|
|
case ModuleType.ColorPicker: generalSettingsConfig.Enabled.ColorPicker = isEnabled; break;
|
|
|
|
|
case ModuleType.CropAndLock: generalSettingsConfig.Enabled.CropAndLock = isEnabled; break;
|
|
|
|
|
case ModuleType.CursorWrap: generalSettingsConfig.Enabled.CursorWrap = isEnabled; break;
|
|
|
|
|
case ModuleType.EnvironmentVariables: generalSettingsConfig.Enabled.EnvironmentVariables = isEnabled; break;
|
|
|
|
|
case ModuleType.FancyZones: generalSettingsConfig.Enabled.FancyZones = isEnabled; break;
|
|
|
|
|
case ModuleType.FileLocksmith: generalSettingsConfig.Enabled.FileLocksmith = isEnabled; break;
|
|
|
|
|
case ModuleType.FindMyMouse: generalSettingsConfig.Enabled.FindMyMouse = isEnabled; break;
|
|
|
|
|
case ModuleType.Hosts: generalSettingsConfig.Enabled.Hosts = isEnabled; break;
|
|
|
|
|
case ModuleType.ImageResizer: generalSettingsConfig.Enabled.ImageResizer = isEnabled; break;
|
|
|
|
|
case ModuleType.KeyboardManager: generalSettingsConfig.Enabled.KeyboardManager = isEnabled; break;
|
|
|
|
|
case ModuleType.LightSwitch: generalSettingsConfig.Enabled.LightSwitch = isEnabled; break;
|
|
|
|
|
case ModuleType.MouseHighlighter: generalSettingsConfig.Enabled.MouseHighlighter = isEnabled; break;
|
|
|
|
|
case ModuleType.MouseJump: generalSettingsConfig.Enabled.MouseJump = isEnabled; break;
|
|
|
|
|
case ModuleType.MousePointerCrosshairs: generalSettingsConfig.Enabled.MousePointerCrosshairs = isEnabled; break;
|
|
|
|
|
case ModuleType.MouseWithoutBorders: generalSettingsConfig.Enabled.MouseWithoutBorders = isEnabled; break;
|
|
|
|
|
case ModuleType.NewPlus: generalSettingsConfig.Enabled.NewPlus = isEnabled; break;
|
|
|
|
|
case ModuleType.Peek: generalSettingsConfig.Enabled.Peek = isEnabled; break;
|
|
|
|
|
case ModuleType.PowerRename: generalSettingsConfig.Enabled.PowerRename = isEnabled; break;
|
|
|
|
|
case ModuleType.PowerLauncher: generalSettingsConfig.Enabled.PowerLauncher = isEnabled; break;
|
|
|
|
|
case ModuleType.PowerAccent: generalSettingsConfig.Enabled.PowerAccent = isEnabled; break;
|
|
|
|
|
case ModuleType.RegistryPreview: generalSettingsConfig.Enabled.RegistryPreview = isEnabled; break;
|
|
|
|
|
case ModuleType.MeasureTool: generalSettingsConfig.Enabled.MeasureTool = isEnabled; break;
|
|
|
|
|
case ModuleType.ShortcutGuide: generalSettingsConfig.Enabled.ShortcutGuide = isEnabled; break;
|
|
|
|
|
case ModuleType.PowerOCR: generalSettingsConfig.Enabled.PowerOcr = isEnabled; break;
|
|
|
|
|
case ModuleType.Workspaces: generalSettingsConfig.Enabled.Workspaces = isEnabled; break;
|
|
|
|
|
case ModuleType.ZoomIt: generalSettingsConfig.Enabled.ZoomIt = isEnabled; break;
|
|
|
|
|
case ModuleType.GeneralSettings: generalSettingsConfig.EnableQuickAccess = isEnabled; break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-01-15 15:29:46 +08:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets the module key name used in IPC messages and settings JSON.
|
|
|
|
|
/// These names match the JsonPropertyName attributes in EnabledModules class.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static string GetModuleKey(ModuleType moduleType)
|
|
|
|
|
{
|
|
|
|
|
return moduleType switch
|
|
|
|
|
{
|
|
|
|
|
ModuleType.AdvancedPaste => AdvancedPasteSettings.ModuleName,
|
|
|
|
|
ModuleType.AlwaysOnTop => AlwaysOnTopSettings.ModuleName,
|
|
|
|
|
ModuleType.Awake => AwakeSettings.ModuleName,
|
|
|
|
|
ModuleType.CmdPal => "CmdPal", // No dedicated settings class
|
|
|
|
|
ModuleType.ColorPicker => ColorPickerSettings.ModuleName,
|
|
|
|
|
ModuleType.CropAndLock => CropAndLockSettings.ModuleName,
|
|
|
|
|
ModuleType.CursorWrap => CursorWrapSettings.ModuleName,
|
|
|
|
|
ModuleType.EnvironmentVariables => EnvironmentVariablesSettings.ModuleName,
|
|
|
|
|
ModuleType.FancyZones => FancyZonesSettings.ModuleName,
|
|
|
|
|
ModuleType.FileLocksmith => FileLocksmithSettings.ModuleName,
|
|
|
|
|
ModuleType.FindMyMouse => FindMyMouseSettings.ModuleName,
|
|
|
|
|
ModuleType.Hosts => HostsSettings.ModuleName,
|
|
|
|
|
ModuleType.ImageResizer => ImageResizerSettings.ModuleName,
|
|
|
|
|
ModuleType.KeyboardManager => KeyboardManagerSettings.ModuleName,
|
|
|
|
|
ModuleType.LightSwitch => LightSwitchSettings.ModuleName,
|
|
|
|
|
ModuleType.MouseHighlighter => MouseHighlighterSettings.ModuleName,
|
|
|
|
|
ModuleType.MouseJump => MouseJumpSettings.ModuleName,
|
|
|
|
|
ModuleType.MousePointerCrosshairs => MousePointerCrosshairsSettings.ModuleName,
|
|
|
|
|
ModuleType.MouseWithoutBorders => MouseWithoutBordersSettings.ModuleName,
|
|
|
|
|
ModuleType.NewPlus => NewPlusSettings.ModuleName,
|
|
|
|
|
ModuleType.Peek => PeekSettings.ModuleName,
|
|
|
|
|
ModuleType.PowerRename => PowerRenameSettings.ModuleName,
|
|
|
|
|
ModuleType.PowerLauncher => PowerLauncherSettings.ModuleName,
|
|
|
|
|
ModuleType.PowerAccent => PowerAccentSettings.ModuleName,
|
|
|
|
|
ModuleType.RegistryPreview => RegistryPreviewSettings.ModuleName,
|
|
|
|
|
ModuleType.MeasureTool => MeasureToolSettings.ModuleName,
|
|
|
|
|
ModuleType.ShortcutGuide => ShortcutGuideSettings.ModuleName,
|
|
|
|
|
ModuleType.PowerOCR => PowerOcrSettings.ModuleName,
|
|
|
|
|
ModuleType.Workspaces => WorkspacesSettings.ModuleName,
|
|
|
|
|
ModuleType.ZoomIt => ZoomItSettings.ModuleName,
|
|
|
|
|
_ => moduleType.ToString(),
|
|
|
|
|
};
|
|
|
|
|
}
|
2026-01-07 16:38:09 +08:00
|
|
|
}
|
|
|
|
|
}
|