mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-06 11:16:51 +02:00
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request Many settings page's deep link is not implemented, this PR complete them and make them aligned with the settings page. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] **Closes:** #xxx - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
146 lines
5.1 KiB
C#
146 lines
5.1 KiB
C#
// 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 System.Diagnostics;
|
|
using System.IO;
|
|
|
|
namespace Common.UI
|
|
{
|
|
public static class SettingsDeepLink
|
|
{
|
|
public enum SettingsWindow
|
|
{
|
|
Dashboard = 0,
|
|
Overview,
|
|
AlwaysOnTop,
|
|
Awake,
|
|
ColorPicker,
|
|
CmdNotFound,
|
|
FancyZones,
|
|
FileLocksmith,
|
|
Run,
|
|
ImageResizer,
|
|
KBM,
|
|
MouseUtils,
|
|
MouseWithoutBorders,
|
|
Peek,
|
|
PowerAccent,
|
|
PowerLauncher,
|
|
PowerPreview,
|
|
PowerRename,
|
|
FileExplorer,
|
|
ShortcutGuide,
|
|
Hosts,
|
|
MeasureTool,
|
|
PowerOCR,
|
|
Workspaces,
|
|
RegistryPreview,
|
|
CropAndLock,
|
|
EnvironmentVariables,
|
|
AdvancedPaste,
|
|
NewPlus,
|
|
CmdPal,
|
|
ZoomIt,
|
|
}
|
|
|
|
private static string SettingsWindowNameToString(SettingsWindow value)
|
|
{
|
|
switch (value)
|
|
{
|
|
case SettingsWindow.Dashboard:
|
|
return "Dashboard";
|
|
case SettingsWindow.Overview:
|
|
return "Overview";
|
|
case SettingsWindow.AlwaysOnTop:
|
|
return "AlwaysOnTop";
|
|
case SettingsWindow.Awake:
|
|
return "Awake";
|
|
case SettingsWindow.ColorPicker:
|
|
return "ColorPicker";
|
|
case SettingsWindow.CmdNotFound:
|
|
return "CmdNotFound";
|
|
case SettingsWindow.FancyZones:
|
|
return "FancyZones";
|
|
case SettingsWindow.FileLocksmith:
|
|
return "FileLocksmith";
|
|
case SettingsWindow.Run:
|
|
return "Run";
|
|
case SettingsWindow.ImageResizer:
|
|
return "ImageResizer";
|
|
case SettingsWindow.KBM:
|
|
return "KBM";
|
|
case SettingsWindow.MouseUtils:
|
|
return "MouseUtils";
|
|
case SettingsWindow.MouseWithoutBorders:
|
|
return "MouseWithoutBorders";
|
|
case SettingsWindow.Peek:
|
|
return "Peek";
|
|
case SettingsWindow.PowerAccent:
|
|
return "PowerAccent";
|
|
case SettingsWindow.PowerLauncher:
|
|
return "PowerLauncher";
|
|
case SettingsWindow.PowerPreview:
|
|
return "PowerPreview";
|
|
case SettingsWindow.PowerRename:
|
|
return "PowerRename";
|
|
case SettingsWindow.FileExplorer:
|
|
return "FileExplorer";
|
|
case SettingsWindow.ShortcutGuide:
|
|
return "ShortcutGuide";
|
|
case SettingsWindow.Hosts:
|
|
return "Hosts";
|
|
case SettingsWindow.MeasureTool:
|
|
return "MeasureTool";
|
|
case SettingsWindow.PowerOCR:
|
|
return "PowerOcr";
|
|
case SettingsWindow.Workspaces:
|
|
return "Workspaces";
|
|
case SettingsWindow.RegistryPreview:
|
|
return "RegistryPreview";
|
|
case SettingsWindow.CropAndLock:
|
|
return "CropAndLock";
|
|
case SettingsWindow.EnvironmentVariables:
|
|
return "EnvironmentVariables";
|
|
case SettingsWindow.AdvancedPaste:
|
|
return "AdvancedPaste";
|
|
case SettingsWindow.NewPlus:
|
|
return "NewPlus";
|
|
case SettingsWindow.CmdPal:
|
|
return "CmdPal";
|
|
case SettingsWindow.ZoomIt:
|
|
return "ZoomIt";
|
|
default:
|
|
{
|
|
return string.Empty;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void OpenSettings(SettingsWindow window, bool mainExecutableIsOnTheParentFolder)
|
|
{
|
|
try
|
|
{
|
|
var directoryPath = System.AppContext.BaseDirectory;
|
|
if (mainExecutableIsOnTheParentFolder)
|
|
{
|
|
// Need to go into parent folder for PowerToys.exe. Likely a WinUI3 App SDK application.
|
|
directoryPath = Path.Combine(directoryPath, "..");
|
|
directoryPath = Path.Combine(directoryPath, "PowerToys.exe");
|
|
}
|
|
else
|
|
{
|
|
// PowerToys.exe is in the same path as the application.
|
|
directoryPath = Path.Combine(directoryPath, "PowerToys.exe");
|
|
}
|
|
|
|
Process.Start(new ProcessStartInfo(directoryPath) { Arguments = "--open-settings=" + SettingsWindowNameToString(window) });
|
|
}
|
|
catch
|
|
{
|
|
// TODO(stefan): Log exception once unified logging is implemented
|
|
}
|
|
}
|
|
}
|
|
}
|