From 41a0114efe903b268b5a2ed27a33b423aa9910ea Mon Sep 17 00:00:00 2001 From: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com> Date: Fri, 26 Apr 2024 19:41:44 +0200 Subject: [PATCH] [EnvVar][Hosts][RegPrev]Decouple and refactor to make it "packable" as nuget package (#32604) * WIP Hosts - remove deps * Add consumer app * Move App and MainWindow to Consumer app. Make Hosts dll * Try consume it * Fix errors * Make it work with custom build targets * Dependency injection Refactor Explicit page creation Wire missing dependencies * Fix installer * Remove unneeded stuff * Fix build again * Extract UI and logic from MainWindow to RegistryPreviewMainPage * Convert to lib Change namespace to RegistryPreviewUILib Remove PT deps * Add exe app and move App.xaml and MainWindow.xaml * Consume the lib * Update Hosts package creation * Fix RegistryPreview package creation * Rename RegistryPreviewUI back to RegistryPreview * Back to consuming lib * Ship icons and assets in nuget packages * Rename to EnvironmentVariablesUILib and convert to lib * Add app and consume * Telemetry * GPO * nuget * Rename HostsPackageConsumer to Hosts and Hosts lib to HostsUILib * Assets cleanup * nuget struct * v0 * assets * [Hosts] Re-add AppList to Lib Assets, [RegPrev] Copy lib assets to out dir * Sign UI dlls * Revert WinUIEx bump * Cleanup * Align deps * version exception dll * Fix RegistryPreview crashes * XAML format * XAML format 2 * Pack .pri files in lib/ dir --------- Co-authored-by: Darshak Bhatti --- .pipelines/ESRPSigning_core.json | 3 + .pipelines/versionAndSignCheck.ps1 | 3 +- Directory.Packages.props | 2 +- PowerToys.sln | 51 ++- nuget.config | 1 + src/common/utils/modulesRegistry.h | 2 +- .../EnvironmentVariables.csproj | 84 +++-- .../EnvironmentVariablesXAML/App.xaml | 154 +-------- .../EnvironmentVariablesXAML/App.xaml.cs | 13 +- .../EnvironmentVariablesXAML/MainWindow.xaml | 4 +- .../MainWindow.xaml.cs | 21 +- .../Styles/TextBlock.xaml | 8 - .../Helpers/LoggerWrapper.cs | 43 +++ .../Helpers/NativeMethods.cs | 2 +- ...nvironmentVariablesVariableChangedEvent.cs | 2 +- .../Telemetry/TelemetryWrapper.cs | 28 ++ .../EnvironmentVariables/app.manifest | 9 +- .../EnvironmentVariables.ico | Bin 0 -> 471154 bytes .../EnvironmentVariables/ProfileIcon.png | Bin .../EnvironmentVariables/SystemIcon.png | Bin .../Assets/EnvironmentVariables/UserIcon.png | Bin .../EnvironmentStateToBoolConverter.cs | 4 +- .../EnvironmentStateToMessageConverter.cs | 6 +- .../EnvironmentStateToTitleConverter.cs | 6 +- .../EnvironmentStateToVisibilityConverter.cs | 4 +- .../VariableTypeToGlyphConverter.cs | 4 +- .../EnvironmentVariablesMainPage.xaml} | 168 +++++++++- .../EnvironmentVariablesMainPage.xaml.cs} | 16 +- .../EnvironmentVariablesUILib.csproj | 68 ++++ .../Helpers/ElevationHelper.cs | 4 +- .../Helpers/EnvironmentVariablesHelper.cs | 9 +- .../Helpers/EnvironmentVariablesService.cs | 6 +- .../Helpers/IElevationHelper.cs | 2 +- .../Helpers/IEnvironmentVariablesService.cs | 4 +- .../Helpers/ILogger.cs | 23 ++ .../Helpers/LoggerInstance.cs | 10 + .../Helpers/NativeMethods.cs | 54 +++ .../Helpers/ResourceLoaderInstance.cs | 8 +- .../Models/DefaultVariablesSet.cs | 2 +- .../Models/EnvironmentState.cs | 2 +- .../Models/ProfileVariablesSet.cs | 15 +- .../Models/Variable.cs | 19 +- .../Models/VariablesSet.cs | 4 +- .../Models/VariablesSetType.cs | 2 +- .../Strings/en-us/Resources.resw | 0 .../Telemetry/ITelemetry.cs | 15 + .../Telemetry/TelemetryInstance.cs | 12 + .../ViewModels/MainViewModel.cs | 41 +-- .../EnvironmentVariablesUILib/app.manifest | 22 ++ src/modules/Hosts/Hosts.Tests/EntryTest.cs | 2 +- .../Hosts/Hosts.Tests/Hosts.Tests.csproj | 2 +- .../Hosts/Hosts.Tests/HostsServiceTest.cs | 9 +- src/modules/Hosts/Hosts/Helpers/Host.cs | 28 ++ .../Hosts/Hosts/Helpers/LoggerWrapper.cs | 43 +++ src/modules/Hosts/Hosts/Hosts.csproj | 67 ++-- src/modules/Hosts/Hosts/HostsXAML/App.xaml | 156 +-------- src/modules/Hosts/Hosts/HostsXAML/App.xaml.cs | 76 +++-- .../Hosts/Hosts/HostsXAML/MainWindow.xaml | 7 +- .../Hosts/Hosts/HostsXAML/MainWindow.xaml.cs | 28 +- src/modules/Hosts/Hosts/Program.cs | 1 - .../Hosts/Hosts/Settings/UserSettings.cs | 10 +- src/modules/Hosts/Hosts/app.manifest | 5 +- .../Assets/HostsUILib/AppList.scale-100.png | Bin 0 -> 567 bytes .../Assets/HostsUILib/AppList.scale-125.png | Bin 0 -> 768 bytes .../Assets/HostsUILib/AppList.scale-150.png | Bin 0 -> 1001 bytes .../Assets/HostsUILib/AppList.scale-200.png | Bin 0 -> 1542 bytes .../Assets/HostsUILib/AppList.scale-400.png | Bin 0 -> 4283 bytes .../HostsUILib/Assets/HostsUILib/Hosts.ico | Bin 0 -> 178017 bytes .../Hosts/{Hosts => HostsUILib}/Consts.cs | 2 +- .../Exceptions/NotRunningElevatedException.cs | 2 +- .../Exceptions/ReadOnlyHostsException.cs | 2 +- .../Helpers/ElevationHelper.cs | 2 +- .../Helpers/ExpressionExtensions.cs | 2 +- .../Helpers/HostsService.cs | 14 +- .../Helpers/IElevationHelper.cs | 2 +- .../Helpers/IHostsService.cs | 4 +- .../Hosts/HostsUILib/Helpers/ILogger.cs | 23 ++ .../HostsUILib/Helpers/LoggerInstance.cs | 10 + .../Helpers}/ResourceLoaderInstance.cs | 4 +- .../Helpers/StringHelper.cs | 2 +- .../Helpers/ValidationHelper.cs | 2 +- .../Helpers/VisualTreeUtils.cs | 2 +- .../HostsMainPage.xaml} | 197 ++++++++++- .../HostsMainPage.xaml.cs} | 28 +- .../Hosts/HostsUILib/HostsUILib.csproj | 69 ++++ .../Models/AddressType.cs | 2 +- .../{Hosts => HostsUILib}/Models/Entry.cs | 4 +- .../{Hosts => HostsUILib}/Models/HostsData.cs | 2 +- .../Settings/HostsAdditionalLinesPosition.cs | 12 + .../HostsUILib/Settings/HostsEncoding.cs | 12 + .../Settings/IUserSettings.cs | 6 +- .../Strings/en-us/Resources.resw | 0 .../ViewModels/MainViewModel.cs | 30 +- .../RegistryPreview/RegistryPreview.ico} | Bin .../RegistryPreview/MainWindow.Events.cs | 33 ++ .../RegistryPreview/MainWindow.Utilities.cs | 95 ++++++ .../RegistryPreview/RegistryPreview.csproj | 91 +++++ .../RegistryPreviewXAML/App.xaml | 3 +- .../RegistryPreviewXAML/App.xaml.cs | 10 +- .../RegistryPreviewXAML/MainWindow.xaml | 52 +++ .../RegistryPreviewXAML/MainWindow.xaml.cs | 69 ++-- .../Strings/en-us/Resources.resw | 123 +++++++ .../RegistryPreview/app.manifest | 19 ++ .../RegistryPreviewUI.csproj | 84 ----- .../RegistryPreviewXAML/MainWindow.xaml | 310 ------------------ .../RegistryPreview/RegistryPreview.ico | Bin 0 -> 138557 bytes .../Assets/RegistryPreview/data32.png | Bin .../RegistryPreview/deleted-folder32.png | Bin .../RegistryPreview/deleted-value32.png | Bin .../Assets/RegistryPreview/error32.png | Bin .../Assets/RegistryPreview/folder32.png | Bin .../Assets/RegistryPreview/string32.png | Bin .../FileName.cs | 2 +- .../OpenFileName.cs | 2 +- .../RegistryKey.xaml.cs | 2 +- .../RegistryPreviewMainPage.Events.cs} | 53 +-- .../RegistryPreviewMainPage.Utilities.cs} | 130 +------- .../RegistryPreviewMainPage.xaml | 270 +++++++++++++++ .../RegistryPreviewMainPage.xaml.cs | 55 ++++ .../RegistryPreviewUILib.csproj | 69 ++++ .../RegistryValue.xaml.cs | 2 +- .../ResourceLoaderInstance.cs | 4 +- .../SaveFileName.cs | 2 +- .../Strings/en-US/Resources.resw | 0 .../app.manifest | 0 125 files changed, 2097 insertions(+), 1212 deletions(-) delete mode 100644 src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Styles/TextBlock.xaml create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/LoggerWrapper.cs create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariables/Telemetry/TelemetryWrapper.cs create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Assets/EnvironmentVariables/EnvironmentVariables.ico rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Assets/EnvironmentVariables/ProfileIcon.png (100%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Assets/EnvironmentVariables/SystemIcon.png (100%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Assets/EnvironmentVariables/UserIcon.png (100%) rename src/modules/EnvironmentVariables/{EnvironmentVariables/EnvironmentVariablesXAML => EnvironmentVariablesUILib}/Converters/EnvironmentStateToBoolConverter.cs (89%) rename src/modules/EnvironmentVariables/{EnvironmentVariables/EnvironmentVariablesXAML => EnvironmentVariablesUILib}/Converters/EnvironmentStateToMessageConverter.cs (90%) rename src/modules/EnvironmentVariables/{EnvironmentVariables/EnvironmentVariablesXAML => EnvironmentVariablesUILib}/Converters/EnvironmentStateToTitleConverter.cs (87%) rename src/modules/EnvironmentVariables/{EnvironmentVariables/EnvironmentVariablesXAML => EnvironmentVariablesUILib}/Converters/EnvironmentStateToVisibilityConverter.cs (89%) rename src/modules/EnvironmentVariables/{EnvironmentVariables/EnvironmentVariablesXAML => EnvironmentVariablesUILib}/Converters/VariableTypeToGlyphConverter.cs (91%) rename src/modules/EnvironmentVariables/{EnvironmentVariables/EnvironmentVariablesXAML/Views/MainPage.xaml => EnvironmentVariablesUILib/EnvironmentVariablesMainPage.xaml} (76%) rename src/modules/EnvironmentVariables/{EnvironmentVariables/EnvironmentVariablesXAML/Views/MainPage.xaml.cs => EnvironmentVariablesUILib/EnvironmentVariablesMainPage.xaml.cs} (98%) create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesUILib.csproj rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Helpers/ElevationHelper.cs (81%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Helpers/EnvironmentVariablesHelper.cs (97%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Helpers/EnvironmentVariablesService.cs (91%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Helpers/IElevationHelper.cs (86%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Helpers/IEnvironmentVariablesService.cs (85%) create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ILogger.cs create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/LoggerInstance.cs create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/NativeMethods.cs rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Helpers/ResourceLoaderInstance.cs (61%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Models/DefaultVariablesSet.cs (90%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Models/EnvironmentState.cs (89%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Models/ProfileVariablesSet.cs (90%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Models/Variable.cs (90%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Models/VariablesSet.cs (96%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Models/VariablesSetType.cs (88%) rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/Strings/en-us/Resources.resw (100%) create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Telemetry/ITelemetry.cs create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Telemetry/TelemetryInstance.cs rename src/modules/EnvironmentVariables/{EnvironmentVariables => EnvironmentVariablesUILib}/ViewModels/MainViewModel.cs (92%) create mode 100644 src/modules/EnvironmentVariables/EnvironmentVariablesUILib/app.manifest create mode 100644 src/modules/Hosts/Hosts/Helpers/Host.cs create mode 100644 src/modules/Hosts/Hosts/Helpers/LoggerWrapper.cs create mode 100644 src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-100.png create mode 100644 src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-125.png create mode 100644 src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-150.png create mode 100644 src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-200.png create mode 100644 src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-400.png create mode 100644 src/modules/Hosts/HostsUILib/Assets/HostsUILib/Hosts.ico rename src/modules/Hosts/{Hosts => HostsUILib}/Consts.cs (95%) rename src/modules/Hosts/{Hosts => HostsUILib}/Exceptions/NotRunningElevatedException.cs (89%) rename src/modules/Hosts/{Hosts => HostsUILib}/Exceptions/ReadOnlyHostsException.cs (89%) rename src/modules/Hosts/{Hosts => HostsUILib}/Helpers/ElevationHelper.cs (95%) rename src/modules/Hosts/{Hosts => HostsUILib}/Helpers/ExpressionExtensions.cs (97%) rename src/modules/Hosts/{Hosts => HostsUILib}/Helpers/HostsService.cs (97%) rename src/modules/Hosts/{Hosts => HostsUILib}/Helpers/IElevationHelper.cs (90%) rename src/modules/Hosts/{Hosts => HostsUILib}/Helpers/IHostsService.cs (92%) create mode 100644 src/modules/Hosts/HostsUILib/Helpers/ILogger.cs create mode 100644 src/modules/Hosts/HostsUILib/Helpers/LoggerInstance.cs rename src/modules/{registrypreview/RegistryPreviewUI => Hosts/HostsUILib/Helpers}/ResourceLoaderInstance.cs (80%) rename src/modules/Hosts/{Hosts => HostsUILib}/Helpers/StringHelper.cs (93%) rename src/modules/Hosts/{Hosts => HostsUILib}/Helpers/ValidationHelper.cs (98%) rename src/modules/Hosts/{Hosts => HostsUILib}/Helpers/VisualTreeUtils.cs (98%) rename src/modules/Hosts/{Hosts/HostsXAML/Views/MainPage.xaml => HostsUILib/HostsMainPage.xaml} (66%) rename src/modules/Hosts/{Hosts/HostsXAML/Views/MainPage.xaml.cs => HostsUILib/HostsMainPage.xaml.cs} (91%) create mode 100644 src/modules/Hosts/HostsUILib/HostsUILib.csproj rename src/modules/Hosts/{Hosts => HostsUILib}/Models/AddressType.cs (91%) rename src/modules/Hosts/{Hosts => HostsUILib}/Models/Entry.cs (98%) rename src/modules/Hosts/{Hosts => HostsUILib}/Models/HostsData.cs (97%) create mode 100644 src/modules/Hosts/HostsUILib/Settings/HostsAdditionalLinesPosition.cs create mode 100644 src/modules/Hosts/HostsUILib/Settings/HostsEncoding.cs rename src/modules/Hosts/{Hosts => HostsUILib}/Settings/IUserSettings.cs (83%) rename src/modules/Hosts/{Hosts => HostsUILib}/Strings/en-us/Resources.resw (100%) rename src/modules/Hosts/{Hosts => HostsUILib}/ViewModels/MainViewModel.cs (94%) rename src/modules/registrypreview/{RegistryPreviewUI/Assets/RegistryPreview/app.ico => RegistryPreview/Assets/RegistryPreview/RegistryPreview.ico} (100%) create mode 100644 src/modules/registrypreview/RegistryPreview/MainWindow.Events.cs create mode 100644 src/modules/registrypreview/RegistryPreview/MainWindow.Utilities.cs create mode 100644 src/modules/registrypreview/RegistryPreview/RegistryPreview.csproj rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreview}/RegistryPreviewXAML/App.xaml (91%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreview}/RegistryPreviewXAML/App.xaml.cs (91%) create mode 100644 src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/MainWindow.xaml rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreview}/RegistryPreviewXAML/MainWindow.xaml.cs (70%) create mode 100644 src/modules/registrypreview/RegistryPreview/Strings/en-us/Resources.resw create mode 100644 src/modules/registrypreview/RegistryPreview/app.manifest delete mode 100644 src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewUI.csproj delete mode 100644 src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/MainWindow.xaml create mode 100644 src/modules/registrypreview/RegistryPreviewUILib/Assets/RegistryPreview/RegistryPreview.ico rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/Assets/RegistryPreview/data32.png (100%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/Assets/RegistryPreview/deleted-folder32.png (100%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/Assets/RegistryPreview/deleted-value32.png (100%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/Assets/RegistryPreview/error32.png (100%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/Assets/RegistryPreview/folder32.png (100%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/Assets/RegistryPreview/string32.png (100%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/FileName.cs (97%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/OpenFileName.cs (97%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/RegistryKey.xaml.cs (96%) rename src/modules/registrypreview/{RegistryPreviewUI/MainWindow.Events.cs => RegistryPreviewUILib/RegistryPreviewMainPage.Events.cs} (88%) rename src/modules/registrypreview/{RegistryPreviewUI/MainWindow.Utilities.cs => RegistryPreviewUILib/RegistryPreviewMainPage.Utilities.cs} (91%) create mode 100644 src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.xaml create mode 100644 src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.xaml.cs create mode 100644 src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewUILib.csproj rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/RegistryValue.xaml.cs (98%) rename src/modules/{Hosts/Hosts/Helpers => registrypreview/RegistryPreviewUILib}/ResourceLoaderInstance.cs (77%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/SaveFileName.cs (98%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/Strings/en-US/Resources.resw (100%) rename src/modules/registrypreview/{RegistryPreviewUI => RegistryPreviewUILib}/app.manifest (100%) diff --git a/.pipelines/ESRPSigning_core.json b/.pipelines/ESRPSigning_core.json index 1388566d1f..c20e38e029 100644 --- a/.pipelines/ESRPSigning_core.json +++ b/.pipelines/ESRPSigning_core.json @@ -96,6 +96,7 @@ "PowerToys.SvgThumbnailProviderCpp.dll", "WinUI3Apps\\PowerToys.HostsModuleInterface.dll", + "WinUI3Apps\\PowerToys.HostsUILib.dll", "WinUI3Apps\\PowerToys.Hosts.dll", "WinUI3Apps\\PowerToys.Hosts.exe", @@ -113,6 +114,7 @@ "WinUI3Apps\\Powertoys.Peek.dll", "WinUI3Apps\\PowerToys.EnvironmentVariablesModuleInterface.dll", + "WinUI3Apps\\PowerToys.EnvironmentVariablesUILib.dll", "WinUI3Apps\\PowerToys.EnvironmentVariables.dll", "WinUI3Apps\\PowerToys.EnvironmentVariables.exe", @@ -186,6 +188,7 @@ "WinUI3Apps\\PowerRenameContextMenuPackage.msix", "WinUI3Apps\\PowerToys.RegistryPreviewExt.dll", + "WinUI3Apps\\PowerToys.RegistryPreviewUILib.dll", "WinUI3Apps\\PowerToys.RegistryPreview.dll", "WinUI3Apps\\PowerToys.RegistryPreview.exe", diff --git a/.pipelines/versionAndSignCheck.ps1 b/.pipelines/versionAndSignCheck.ps1 index 67c5312f95..1b15fe52db 100644 --- a/.pipelines/versionAndSignCheck.ps1 +++ b/.pipelines/versionAndSignCheck.ps1 @@ -20,7 +20,8 @@ $versionExceptions = @( "Microsoft.Xaml.Interactivity.dll", "hyjiacan.py4n.dll", "Microsoft.WindowsAppRuntime.Release.Net.dll", - "Microsoft.Windows.Widgets.Projection.dll") -join '|'; + "Microsoft.Windows.Widgets.Projection.dll", + "WinRT.Host.Shim.dll") -join '|'; $nullVersionExceptions = @( "codicon.ttf", "e_sqlite3.dll", diff --git a/Directory.Packages.props b/Directory.Packages.props index f8e3aa9aba..cad50dc2fa 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -97,4 +97,4 @@ - \ No newline at end of file + diff --git a/PowerToys.sln b/PowerToys.sln index ace30f844d..7d6e2aa8c3 100644 --- a/PowerToys.sln +++ b/PowerToys.sln @@ -448,7 +448,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MeasureToolUI", "src\module EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerAccentKeyboardService", "src\modules\poweraccent\PowerAccentKeyboardService\PowerAccentKeyboardService.vcxproj", "{C97D9A5D-206C-454E-997E-009E227D7F02}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hosts", "src\modules\Hosts\Hosts\Hosts.csproj", "{31D1C81D-765F-4446-AA62-E743F6325049}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HostsUILib", "src\modules\Hosts\HostsUILib\HostsUILib.csproj", "{31D1C81D-765F-4446-AA62-E743F6325049}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Hosts", "Hosts", "{F05E590D-AD46-42BE-9C25-6A63ADD2E3EA}" EndProject @@ -518,7 +518,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PastePlainModuleInterface", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AllExperiments", "src\common\AllExperiments\AllExperiments.csproj", "{9CE59ED5-7087-4353-88EB-788038A73CEC}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RegistryPreviewUI", "src\modules\registrypreview\RegistryPreviewUI\RegistryPreviewUI.csproj", "{FD86C06A-FB54-4D5E-9831-1CDADF60D45F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RegistryPreviewUILib", "src\modules\registrypreview\RegistryPreviewUILib\RegistryPreviewUILib.csproj", "{FD86C06A-FB54-4D5E-9831-1CDADF60D45F}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RegistryPreviewExt", "src\modules\registrypreview\RegistryPreviewExt\RegistryPreviewExt.vcxproj", "{697C6AF9-0A48-49A9-866C-67DA12384015}" EndProject @@ -546,7 +546,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTests-FancyZonesEditor" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EnvironmentVariables", "EnvironmentVariables", "{538ED0BB-B863-4B20-98CC-BCDF7FA0B68A}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EnvironmentVariables", "src\modules\EnvironmentVariables\EnvironmentVariables\EnvironmentVariables.csproj", "{51465DA1-C18B-4B99-93E1-ECF8E0FA0CBA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EnvironmentVariablesUILib", "src\modules\EnvironmentVariables\EnvironmentVariablesUILib\EnvironmentVariablesUILib.csproj", "{51465DA1-C18B-4B99-93E1-ECF8E0FA0CBA}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EnvironmentVariablesModuleInterface", "src\modules\EnvironmentVariables\EnvironmentVariablesModuleInterface\EnvironmentVariablesModuleInterface.vcxproj", "{B9420661-B0E4-4241-ABD4-4A27A1F64250}" EndProject @@ -568,6 +568,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FileLocksmithContextMenu", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FileLocksmithLib", "src\modules\FileLocksmith\FileLocksmithLib\FileLocksmithLib.vcxproj", "{9D52FD25-EF90-4F9A-A015-91EFC5DAF54F}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hosts", "src\modules\Hosts\Hosts\Hosts.csproj", "{02DD46D3-F761-47D9-8894-2D6DA0124650}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RegistryPreview", "src\modules\registrypreview\RegistryPreview\RegistryPreview.csproj", "{8E23E173-7127-4A5F-9F93-3049F2B68047}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EnvironmentVariables", "src\modules\EnvironmentVariables\EnvironmentVariables\EnvironmentVariables.csproj", "{DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UITests-FancyZones", "src\modules\fancyzones\UITests-FancyZones\UITests-FancyZones.csproj", "{FE38FC07-1C05-4B57-ADA3-2FE2F53C6A52}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UITests-FancyZonesEditor", "src\modules\fancyzones\UITests-FancyZonesEditor\UITests-FancyZonesEditor.csproj", "{3A9A791E-94A9-49F8-8401-C11CE288D5FB}" @@ -2507,6 +2513,42 @@ Global {9D52FD25-EF90-4F9A-A015-91EFC5DAF54F}.Release|x64.Build.0 = Release|x64 {9D52FD25-EF90-4F9A-A015-91EFC5DAF54F}.Release|x86.ActiveCfg = Release|x64 {9D52FD25-EF90-4F9A-A015-91EFC5DAF54F}.Release|x86.Build.0 = Release|x64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Debug|ARM64.Build.0 = Debug|ARM64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Debug|x64.ActiveCfg = Debug|x64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Debug|x64.Build.0 = Debug|x64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Debug|x86.ActiveCfg = Debug|x64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Debug|x86.Build.0 = Debug|x64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Release|ARM64.ActiveCfg = Release|ARM64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Release|ARM64.Build.0 = Release|ARM64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Release|x64.ActiveCfg = Release|x64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Release|x64.Build.0 = Release|x64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Release|x86.ActiveCfg = Release|x64 + {02DD46D3-F761-47D9-8894-2D6DA0124650}.Release|x86.Build.0 = Release|x64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Debug|ARM64.Build.0 = Debug|ARM64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Debug|x64.ActiveCfg = Debug|x64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Debug|x64.Build.0 = Debug|x64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Debug|x86.ActiveCfg = Debug|x64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Debug|x86.Build.0 = Debug|x64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Release|ARM64.ActiveCfg = Release|ARM64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Release|ARM64.Build.0 = Release|ARM64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Release|x64.ActiveCfg = Release|x64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Release|x64.Build.0 = Release|x64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Release|x86.ActiveCfg = Release|x64 + {8E23E173-7127-4A5F-9F93-3049F2B68047}.Release|x86.Build.0 = Release|x64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Debug|ARM64.Build.0 = Debug|ARM64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Debug|x64.ActiveCfg = Debug|x64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Debug|x64.Build.0 = Debug|x64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Debug|x86.ActiveCfg = Debug|x64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Debug|x86.Build.0 = Debug|x64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Release|ARM64.ActiveCfg = Release|ARM64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Release|ARM64.Build.0 = Release|ARM64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Release|x64.ActiveCfg = Release|x64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Release|x64.Build.0 = Release|x64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Release|x86.ActiveCfg = Release|x64 + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8}.Release|x86.Build.0 = Release|x64 {FE38FC07-1C05-4B57-ADA3-2FE2F53C6A52}.Debug|ARM64.ActiveCfg = Debug|ARM64 {FE38FC07-1C05-4B57-ADA3-2FE2F53C6A52}.Debug|ARM64.Build.0 = Debug|ARM64 {FE38FC07-1C05-4B57-ADA3-2FE2F53C6A52}.Debug|x64.ActiveCfg = Debug|x64 @@ -2764,6 +2806,9 @@ Global {0014D652-901F-4456-8D65-06FC5F997FB0} = {4C0D0746-BE5B-49EE-BD5D-A7811628AE8B} {799A50D8-DE89-4ED1-8FF8-AD5A9ED8C0CA} = {AB82E5DD-C32D-4F28-9746-2C780846188E} {9D52FD25-EF90-4F9A-A015-91EFC5DAF54F} = {AB82E5DD-C32D-4F28-9746-2C780846188E} + {02DD46D3-F761-47D9-8894-2D6DA0124650} = {F05E590D-AD46-42BE-9C25-6A63ADD2E3EA} + {8E23E173-7127-4A5F-9F93-3049F2B68047} = {929C1324-22E8-4412-A9A8-80E85F3985A5} + {DFF88D16-D36F-40A4-A955-CDCAA76EF7B8} = {538ED0BB-B863-4B20-98CC-BCDF7FA0B68A} {FE38FC07-1C05-4B57-ADA3-2FE2F53C6A52} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD} {3A9A791E-94A9-49F8-8401-C11CE288D5FB} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD} {C0974915-8A1D-4BF0-977B-9587D3807AB7} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD} diff --git a/nuget.config b/nuget.config index cb38015f4a..e6a17ffdfe 100644 --- a/nuget.config +++ b/nuget.config @@ -1,3 +1,4 @@ + diff --git a/src/common/utils/modulesRegistry.h b/src/common/utils/modulesRegistry.h index fce782847d..8b957bd5b9 100644 --- a/src/common/utils/modulesRegistry.h +++ b/src/common/utils/modulesRegistry.h @@ -262,7 +262,7 @@ inline registry::ChangeSet getRegistryPreviewChangeSet(const std::wstring instal changes.push_back({ scope, L"Software\\Classes\\regfile\\shell\\preview\\command", std::nullopt, command }); std::wstring icon_path = installationDir; - icon_path.append(L"\\WinUI3Apps\\Assets\\RegistryPreview\\app.ico"); + icon_path.append(L"\\WinUI3Apps\\Assets\\RegistryPreview\\RegistryPreview.ico"); changes.push_back({ scope, L"Software\\Classes\\regfile\\shell\\preview", L"icon", icon_path }); return { changes }; diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariables.csproj b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariables.csproj index 2c7035035d..b1543c1e78 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariables.csproj +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariables.csproj @@ -1,6 +1,5 @@  - WinExe net8.0-windows10.0.20348.0 @@ -8,6 +7,7 @@ 10.0.19041.0 EnvironmentVariables app.manifest + x86;x64;ARM64 win-x64;win-arm64 true true @@ -16,21 +16,36 @@ false false true + true + DISABLE_XAML_GENERATED_MAIN,TRACE ..\..\..\..\$(Platform)\$(Configuration)\WinUI3Apps PowerToys.EnvironmentVariables - DISABLE_XAML_GENERATED_MAIN,TRACE - Assets/EnvironmentVariables/EnvironmentVariables.ico - true + Assets\EnvironmentVariables\EnvironmentVariables.ico PowerToys.EnvironmentVariables.pri - - - - + + + + + + + + + + + + + + + + + + + @@ -48,24 +63,11 @@ - - - - - - - - - - - - - - - - - - + + + + + @@ -73,23 +75,10 @@ - - - - - - - - - - - - - + + true + diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/App.xaml b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/App.xaml index d4b0dc7bbc..bdf5b059b1 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/App.xaml +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/App.xaml @@ -1,4 +1,4 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/App.xaml.cs b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/App.xaml.cs index ca2fdb72b8..3907a2ba3a 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/App.xaml.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/App.xaml.cs @@ -4,8 +4,11 @@ using System; using System.IO.Abstractions; -using EnvironmentVariables.Helpers; -using EnvironmentVariables.ViewModels; +using EnvironmentVariables.Telemetry; +using EnvironmentVariablesUILib; +using EnvironmentVariablesUILib.Helpers; +using EnvironmentVariablesUILib.Telemetry; +using EnvironmentVariablesUILib.ViewModels; using ManagedCommon; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -47,8 +50,11 @@ namespace EnvironmentVariables services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); }).Build(); UnhandledException += App_UnhandledException; @@ -85,8 +91,7 @@ namespace EnvironmentVariables Logger.LogInfo($"EnvironmentVariables started detached from PowerToys Runner."); } - PowerToysTelemetry.Log.WriteEvent(new EnvironmentVariables.Telemetry.EnvironmentVariablesOpenedEvent()); - + PowerToysTelemetry.Log.WriteEvent(new Telemetry.EnvironmentVariablesOpenedEvent()); window = new MainWindow(); window.Activate(); } diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/MainWindow.xaml b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/MainWindow.xaml index b5d7dafdb1..78d46d85c7 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/MainWindow.xaml +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/MainWindow.xaml @@ -6,7 +6,6 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="using:EnvironmentVariables" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:views="using:EnvironmentVariables.Views" xmlns:winuiex="using:WinUIEx" x:Uid="Window" MinWidth="700" @@ -15,7 +14,7 @@ - + @@ -42,6 +41,5 @@ VerticalAlignment="Center" Style="{StaticResource CaptionTextBlockStyle}" /> - diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/MainWindow.xaml.cs b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/MainWindow.xaml.cs index 4ab2cd4e5f..a40dac4ef2 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/MainWindow.xaml.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/MainWindow.xaml.cs @@ -4,11 +4,14 @@ using System; using System.Runtime.InteropServices; -using EnvironmentVariables.Helpers; -using EnvironmentVariables.Helpers.Win32; -using EnvironmentVariables.ViewModels; +using EnvironmentVariables.Win32; +using EnvironmentVariablesUILib; +using EnvironmentVariablesUILib.Helpers; +using EnvironmentVariablesUILib.ViewModels; using ManagedCommon; using Microsoft.UI.Dispatching; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; using WinUIEx; namespace EnvironmentVariables @@ -18,6 +21,8 @@ namespace EnvironmentVariables /// public sealed partial class MainWindow : WindowEx { + private EnvironmentVariablesMainPage MainPage { get; } + public MainWindow() { this.InitializeComponent(); @@ -35,6 +40,14 @@ namespace EnvironmentVariables RegisterWindow(handle); WindowHelpers.BringToForeground(handle); + + MainPage = App.GetService(); + } + + private void Grid_Loaded(object sender, RoutedEventArgs e) + { + MainGrid.Children.Add(MainPage); + Grid.SetRow(MainPage, 1); } private static readonly DispatcherQueue _dispatcherQueue = DispatcherQueue.GetForCurrentThread(); @@ -61,7 +74,7 @@ namespace EnvironmentVariables if (wParam != (IntPtr)0x12345) { var viewModel = App.GetService(); - viewModel.EnvironmentState = Models.EnvironmentState.EnvironmentMessageReceived; + viewModel.EnvironmentState = EnvironmentVariablesUILib.Models.EnvironmentState.EnvironmentMessageReceived; } } diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Styles/TextBlock.xaml b/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Styles/TextBlock.xaml deleted file mode 100644 index bf6d01383b..0000000000 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Styles/TextBlock.xaml +++ /dev/null @@ -1,8 +0,0 @@ - - - 12 - - \ No newline at end of file diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/LoggerWrapper.cs b/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/LoggerWrapper.cs new file mode 100644 index 0000000000..f91a4467fa --- /dev/null +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/LoggerWrapper.cs @@ -0,0 +1,43 @@ +// 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; +using EnvironmentVariablesUILib.Helpers; +using ManagedCommon; + +namespace EnvironmentVariables +{ + internal sealed class LoggerWrapper : ILogger + { + public void LogDebug(string message) + { + Logger.LogDebug(message); + } + + public void LogError(string message) + { + Logger.LogError(message); + } + + public void LogError(string message, Exception ex) + { + Logger.LogError(message, ex); + } + + public void LogInfo(string message) + { + Logger.LogInfo(message); + } + + public void LogTrace() + { + Logger.LogTrace(); + } + + public void LogWarning(string message) + { + Logger.LogWarning(message); + } + } +} diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/NativeMethods.cs b/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/NativeMethods.cs index 1ca3e2428c..1d94d08fc6 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/NativeMethods.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/NativeMethods.cs @@ -5,7 +5,7 @@ using System; using System.Runtime.InteropServices; -namespace EnvironmentVariables.Helpers.Win32 +namespace EnvironmentVariables.Win32 { public static class NativeMethods { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Telemetry/EnvironmentVariablesVariableChangedEvent.cs b/src/modules/EnvironmentVariables/EnvironmentVariables/Telemetry/EnvironmentVariablesVariableChangedEvent.cs index 1583adb9fa..15b240822d 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Telemetry/EnvironmentVariablesVariableChangedEvent.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/Telemetry/EnvironmentVariablesVariableChangedEvent.cs @@ -3,7 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; -using EnvironmentVariables.Models; +using EnvironmentVariablesUILib.Models; using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Telemetry/TelemetryWrapper.cs b/src/modules/EnvironmentVariables/EnvironmentVariables/Telemetry/TelemetryWrapper.cs new file mode 100644 index 0000000000..30d350a578 --- /dev/null +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/Telemetry/TelemetryWrapper.cs @@ -0,0 +1,28 @@ +// 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 EnvironmentVariablesUILib.Models; +using EnvironmentVariablesUILib.Telemetry; +using Microsoft.PowerToys.Telemetry; + +namespace EnvironmentVariables.Telemetry +{ + internal sealed class TelemetryWrapper : ITelemetry + { + public void LogEnvironmentVariablesProfileEnabledEvent(bool enabled) + { + var telemetryEnabled = new EnvironmentVariablesProfileEnabledEvent() + { + Enabled = enabled, + }; + + PowerToysTelemetry.Log.WriteEvent(telemetryEnabled); + } + + public void LogEnvironmentVariablesVariableChangedEvent(VariablesSetType type) + { + PowerToysTelemetry.Log.WriteEvent(new Telemetry.EnvironmentVariablesVariableChangedEvent(type)); + } + } +} diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/app.manifest b/src/modules/EnvironmentVariables/EnvironmentVariables/app.manifest index cbe8c5420c..dd46c0d7b7 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/app.manifest +++ b/src/modules/EnvironmentVariables/EnvironmentVariables/app.manifest @@ -4,12 +4,9 @@ - - - + diff --git a/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Assets/EnvironmentVariables/EnvironmentVariables.ico b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Assets/EnvironmentVariables/EnvironmentVariables.ico new file mode 100644 index 0000000000000000000000000000000000000000..dc07264100f6422fae778cb0be8d903216e3e605 GIT binary patch literal 471154 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�OQ=inG~mlO7KlYt+uF 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 literal 0 HcmV?d00001 diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Assets/EnvironmentVariables/ProfileIcon.png b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Assets/EnvironmentVariables/ProfileIcon.png similarity index 100% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Assets/EnvironmentVariables/ProfileIcon.png rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Assets/EnvironmentVariables/ProfileIcon.png diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Assets/EnvironmentVariables/SystemIcon.png b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Assets/EnvironmentVariables/SystemIcon.png similarity index 100% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Assets/EnvironmentVariables/SystemIcon.png rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Assets/EnvironmentVariables/SystemIcon.png diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Assets/EnvironmentVariables/UserIcon.png b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Assets/EnvironmentVariables/UserIcon.png similarity index 100% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Assets/EnvironmentVariables/UserIcon.png rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Assets/EnvironmentVariables/UserIcon.png diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToBoolConverter.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToBoolConverter.cs similarity index 89% rename from src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToBoolConverter.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToBoolConverter.cs index 81e1ef1efd..95aae3e874 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToBoolConverter.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToBoolConverter.cs @@ -3,10 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using EnvironmentVariables.Models; +using EnvironmentVariablesUILib.Models; using Microsoft.UI.Xaml.Data; -namespace EnvironmentVariables.Converters; +namespace EnvironmentVariablesUILib.Converters; public class EnvironmentStateToBoolConverter : IValueConverter { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToMessageConverter.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToMessageConverter.cs similarity index 90% rename from src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToMessageConverter.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToMessageConverter.cs index ffe473ef28..5f1103fe21 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToMessageConverter.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToMessageConverter.cs @@ -3,11 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using EnvironmentVariables.Helpers; -using EnvironmentVariables.Models; +using EnvironmentVariablesUILib.Helpers; +using EnvironmentVariablesUILib.Models; using Microsoft.UI.Xaml.Data; -namespace EnvironmentVariables.Converters; +namespace EnvironmentVariablesUILib.Converters; public class EnvironmentStateToMessageConverter : IValueConverter { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToTitleConverter.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToTitleConverter.cs similarity index 87% rename from src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToTitleConverter.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToTitleConverter.cs index 344c9b1072..dbe2843919 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToTitleConverter.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToTitleConverter.cs @@ -3,11 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using EnvironmentVariables.Helpers; -using EnvironmentVariables.Models; +using EnvironmentVariablesUILib.Helpers; +using EnvironmentVariablesUILib.Models; using Microsoft.UI.Xaml.Data; -namespace EnvironmentVariables.Converters; +namespace EnvironmentVariablesUILib.Converters; public class EnvironmentStateToTitleConverter : IValueConverter { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToVisibilityConverter.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToVisibilityConverter.cs similarity index 89% rename from src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToVisibilityConverter.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToVisibilityConverter.cs index 682a93cc13..4c2d2b42da 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/EnvironmentStateToVisibilityConverter.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/EnvironmentStateToVisibilityConverter.cs @@ -3,11 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using EnvironmentVariables.Models; +using EnvironmentVariablesUILib.Models; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Data; -namespace EnvironmentVariables.Converters; +namespace EnvironmentVariablesUILib.Converters; public class EnvironmentStateToVisibilityConverter : IValueConverter { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/VariableTypeToGlyphConverter.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/VariableTypeToGlyphConverter.cs similarity index 91% rename from src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/VariableTypeToGlyphConverter.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/VariableTypeToGlyphConverter.cs index fc6ec01f30..41cf4124cb 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Converters/VariableTypeToGlyphConverter.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Converters/VariableTypeToGlyphConverter.cs @@ -3,10 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using EnvironmentVariables.Models; +using EnvironmentVariablesUILib.Models; using Microsoft.UI.Xaml.Data; -namespace EnvironmentVariables.Converters; +namespace EnvironmentVariablesUILib.Converters; public class VariableTypeToGlyphConverter : IValueConverter { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Views/MainPage.xaml b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesMainPage.xaml similarity index 76% rename from src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Views/MainPage.xaml rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesMainPage.xaml index 5be8dc688d..de06561b50 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Views/MainPage.xaml +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesMainPage.xaml @@ -1,13 +1,13 @@  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12 + + - - - - - diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Views/MainPage.xaml.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesMainPage.xaml.cs similarity index 98% rename from src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Views/MainPage.xaml.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesMainPage.xaml.cs index 7ca3c00456..e99bc6bc53 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariablesXAML/Views/MainPage.xaml.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesMainPage.xaml.cs @@ -3,19 +3,17 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; using System.Windows.Input; using CommunityToolkit.Mvvm.Input; -using EnvironmentVariables.Models; -using EnvironmentVariables.ViewModels; +using EnvironmentVariablesUILib.Models; +using EnvironmentVariablesUILib.ViewModels; using Microsoft.UI.Xaml.Controls; -using Windows.Foundation.Collections; -namespace EnvironmentVariables.Views +namespace EnvironmentVariablesUILib { - public sealed partial class MainPage : Page + public sealed partial class EnvironmentVariablesMainPage : Page { private sealed class RelayCommandParameter { @@ -46,11 +44,13 @@ namespace EnvironmentVariables.Views public ICommand AddDefaultVariableCommand => new RelayCommand(AddDefaultVariable); - public MainPage() + public EnvironmentVariablesMainPage(MainViewModel viewModel) { this.InitializeComponent(); - ViewModel = App.GetService(); + ViewModel = viewModel; DataContext = ViewModel; + + ViewModel.LoadEnvironmentVariables(); } private async Task ShowEditDialogAsync(Variable variable, VariablesSet parentSet) diff --git a/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesUILib.csproj b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesUILib.csproj new file mode 100644 index 0000000000..e0322d5389 --- /dev/null +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesUILib.csproj @@ -0,0 +1,68 @@ + + + + + Library + net8.0-windows10.0.20348 + EnvironmentVariablesUILib + true + true + false + false + PowerToys.EnvironmentVariablesUILib + + PowerToys.EnvironmentVariablesUILib.pri + true + true + + + + + + + + + + + + + + + + + + + + true + DEBUG;TRACE + full + prompt + 4 + false + + + + TRACE + true + pdbonly + prompt + 4 + + + + + + + + + + + + + + + + + + + diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/ElevationHelper.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ElevationHelper.cs similarity index 81% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/ElevationHelper.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ElevationHelper.cs index 9b3bc16e2f..a2b0239c73 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/ElevationHelper.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ElevationHelper.cs @@ -4,7 +4,7 @@ using System.Security.Principal; -namespace EnvironmentVariables.Helpers +namespace EnvironmentVariablesUILib.Helpers { public class ElevationHelper : IElevationHelper { @@ -16,5 +16,7 @@ namespace EnvironmentVariables.Helpers { _isElevated = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); } + + public static IElevationHelper ElevationHelperInstance { get; set; } } } diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/EnvironmentVariablesHelper.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/EnvironmentVariablesHelper.cs similarity index 97% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/EnvironmentVariablesHelper.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/EnvironmentVariablesHelper.cs index 9503f9fb1b..9cd01b970a 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/EnvironmentVariablesHelper.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/EnvironmentVariablesHelper.cs @@ -5,12 +5,11 @@ using System; using System.Collections; using System.Collections.Generic; -using EnvironmentVariables.Helpers.Win32; -using EnvironmentVariables.Models; -using ManagedCommon; +using EnvironmentVariablesUILib.Helpers.Win32; +using EnvironmentVariablesUILib.Models; using Microsoft.Win32; -namespace EnvironmentVariables.Helpers +namespace EnvironmentVariablesUILib.Helpers { internal sealed class EnvironmentVariablesHelper { @@ -73,7 +72,7 @@ namespace EnvironmentVariables.Helpers const int MaxUserEnvVariableLength = 255; // User-wide env vars stored in the registry have names limited to 255 chars if (!fromMachine && variable.Length >= MaxUserEnvVariableLength) { - Logger.LogError("Can't apply variable - name too long."); + LoggerInstance.Logger.LogError("Can't apply variable - name too long."); return; } diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/EnvironmentVariablesService.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/EnvironmentVariablesService.cs similarity index 91% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/EnvironmentVariablesService.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/EnvironmentVariablesService.cs index 6fde9872fc..8a21b793a6 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/EnvironmentVariablesService.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/EnvironmentVariablesService.cs @@ -8,11 +8,11 @@ using System.IO; using System.IO.Abstractions; using System.Text.Json; using System.Threading.Tasks; -using EnvironmentVariables.Models; +using EnvironmentVariablesUILib.Models; -namespace EnvironmentVariables.Helpers +namespace EnvironmentVariablesUILib.Helpers { - internal sealed class EnvironmentVariablesService : IEnvironmentVariablesService + public sealed class EnvironmentVariablesService : IEnvironmentVariablesService { private const string ProfilesJsonFileSubPath = "Microsoft\\PowerToys\\EnvironmentVariables\\"; diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/IElevationHelper.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/IElevationHelper.cs similarity index 86% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/IElevationHelper.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/IElevationHelper.cs index 0b27b0a544..e52a6d374a 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/IElevationHelper.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/IElevationHelper.cs @@ -2,7 +2,7 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -namespace EnvironmentVariables.Helpers +namespace EnvironmentVariablesUILib.Helpers { public interface IElevationHelper { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/IEnvironmentVariablesService.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/IEnvironmentVariablesService.cs similarity index 85% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/IEnvironmentVariablesService.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/IEnvironmentVariablesService.cs index 5a1604ab1b..8213d56920 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/IEnvironmentVariablesService.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/IEnvironmentVariablesService.cs @@ -5,9 +5,9 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -using EnvironmentVariables.Models; +using EnvironmentVariablesUILib.Models; -namespace EnvironmentVariables.Helpers +namespace EnvironmentVariablesUILib.Helpers { public interface IEnvironmentVariablesService : IDisposable { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ILogger.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ILogger.cs new file mode 100644 index 0000000000..86623417a0 --- /dev/null +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ILogger.cs @@ -0,0 +1,23 @@ +// 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; + +namespace EnvironmentVariablesUILib.Helpers +{ + public interface ILogger + { + public void LogError(string message); + + public void LogError(string message, Exception ex); + + public void LogWarning(string message); + + public void LogInfo(string message); + + public void LogDebug(string message); + + public void LogTrace(); + } +} diff --git a/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/LoggerInstance.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/LoggerInstance.cs new file mode 100644 index 0000000000..7adfa208a4 --- /dev/null +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/LoggerInstance.cs @@ -0,0 +1,10 @@ +// 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. +namespace EnvironmentVariablesUILib.Helpers +{ + public static class LoggerInstance + { + public static ILogger Logger { get; set; } + } +} diff --git a/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/NativeMethods.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/NativeMethods.cs new file mode 100644 index 0000000000..d3ce76b5b5 --- /dev/null +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/NativeMethods.cs @@ -0,0 +1,54 @@ +// 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; +using System.Runtime.InteropServices; + +namespace EnvironmentVariablesUILib.Helpers.Win32 +{ + public static class NativeMethods + { + internal const int HWND_BROADCAST = 0xffff; + + internal delegate IntPtr WinProc(IntPtr hWnd, WindowMessage msg, IntPtr wParam, IntPtr lParam); + + [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] + internal static extern int SendNotifyMessage(IntPtr hWnd, WindowMessage msg, IntPtr wParam, IntPtr lParam); + + [DllImport("User32.dll")] + internal static extern int GetDpiForWindow(IntPtr hwnd); + + [DllImport("user32.dll", EntryPoint = "SetWindowLong")] + internal static extern int SetWindowLong32(IntPtr hWnd, WindowLongIndexFlags nIndex, WinProc newProc); + + [DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")] + internal static extern IntPtr SetWindowLongPtr64(IntPtr hWnd, WindowLongIndexFlags nIndex, WinProc newProc); + + [DllImport("user32.dll")] + internal static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, WindowMessage msg, IntPtr wParam, IntPtr lParam); + + [Flags] + internal enum WindowLongIndexFlags : int + { + GWL_WNDPROC = -4, + } + + internal enum WindowMessage : int + { + WM_SETTINGSCHANGED = 0x001A, + } + + internal static IntPtr SetWindowLongPtr(IntPtr hWnd, WindowLongIndexFlags nIndex, WinProc newProc) + { + if (IntPtr.Size == 8) + { + return SetWindowLongPtr64(hWnd, nIndex, newProc); + } + else + { + return new IntPtr(SetWindowLong32(hWnd, nIndex, newProc)); + } + } + } +} diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/ResourceLoaderInstance.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ResourceLoaderInstance.cs similarity index 61% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/ResourceLoaderInstance.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ResourceLoaderInstance.cs index b0a11730b9..f6a6da44ce 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Helpers/ResourceLoaderInstance.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Helpers/ResourceLoaderInstance.cs @@ -3,15 +3,15 @@ // See the LICENSE file in the project root for more information. using Microsoft.Windows.ApplicationModel.Resources; -namespace EnvironmentVariables.Helpers +namespace EnvironmentVariablesUILib.Helpers { - internal static class ResourceLoaderInstance + public static class ResourceLoaderInstance { - internal static ResourceLoader ResourceLoader { get; private set; } + public static ResourceLoader ResourceLoader { get; private set; } static ResourceLoaderInstance() { - ResourceLoader = new ResourceLoader("PowerToys.EnvironmentVariables.pri"); + ResourceLoader = new ResourceLoader("PowerToys.EnvironmentVariablesUILib.pri", "PowerToys.EnvironmentVariablesUILib/Resources"); } } } diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/DefaultVariablesSet.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/DefaultVariablesSet.cs similarity index 90% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Models/DefaultVariablesSet.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/DefaultVariablesSet.cs index 9c07c1df3b..f356f4dbb5 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/DefaultVariablesSet.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/DefaultVariablesSet.cs @@ -4,7 +4,7 @@ using System; -namespace EnvironmentVariables.Models +namespace EnvironmentVariablesUILib.Models { public class DefaultVariablesSet : VariablesSet { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/EnvironmentState.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/EnvironmentState.cs similarity index 89% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Models/EnvironmentState.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/EnvironmentState.cs index 12837055cd..ecf2e9cf3e 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/EnvironmentState.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/EnvironmentState.cs @@ -2,7 +2,7 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -namespace EnvironmentVariables.Models +namespace EnvironmentVariablesUILib.Models { public enum EnvironmentState { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/ProfileVariablesSet.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/ProfileVariablesSet.cs similarity index 90% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Models/ProfileVariablesSet.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/ProfileVariablesSet.cs index db9306efa7..1480de3aef 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/ProfileVariablesSet.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/ProfileVariablesSet.cs @@ -6,10 +6,9 @@ using System; using System.Collections.ObjectModel; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; -using EnvironmentVariables.Helpers; -using ManagedCommon; +using EnvironmentVariablesUILib.Helpers; -namespace EnvironmentVariables.Models +namespace EnvironmentVariablesUILib.Models { public partial class ProfileVariablesSet : VariablesSet { @@ -48,13 +47,13 @@ namespace EnvironmentVariables.Models // Backup the variable if (!EnvironmentVariablesHelper.SetVariableWithoutNotify(variableToOverride)) { - Logger.LogError("Failed to set backup variable."); + LoggerInstance.Logger.LogError("Failed to set backup variable."); } } if (!EnvironmentVariablesHelper.SetVariableWithoutNotify(variable)) { - Logger.LogError("Failed to set profile variable."); + LoggerInstance.Logger.LogError("Failed to set profile variable."); } } @@ -80,7 +79,7 @@ namespace EnvironmentVariables.Models // Unset the variable if (!EnvironmentVariablesHelper.UnsetVariableWithoutNotify(variable)) { - Logger.LogError("Failed to unset variable."); + LoggerInstance.Logger.LogError("Failed to unset variable."); } var originalName = variable.Name; @@ -95,12 +94,12 @@ namespace EnvironmentVariables.Models if (!EnvironmentVariablesHelper.UnsetVariableWithoutNotify(backupVariable)) { - Logger.LogError("Failed to unset backup variable."); + LoggerInstance.Logger.LogError("Failed to unset backup variable."); } if (!EnvironmentVariablesHelper.SetVariableWithoutNotify(variableToRestore)) { - Logger.LogError("Failed to restore backup variable."); + LoggerInstance.Logger.LogError("Failed to restore backup variable."); } } } diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/Variable.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/Variable.cs similarity index 90% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Models/Variable.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/Variable.cs index 029b66feb2..0401384cd8 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/Variable.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/Variable.cs @@ -10,10 +10,9 @@ using System.Linq; using System.Text.Json.Serialization; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; -using EnvironmentVariables.Helpers; -using ManagedCommon; +using EnvironmentVariablesUILib.Helpers; -namespace EnvironmentVariables.Models +namespace EnvironmentVariablesUILib.Models { public partial class Variable : ObservableObject, IJsonOnDeserialized { @@ -38,7 +37,7 @@ namespace EnvironmentVariables.Models { get { - return (ParentType != VariablesSetType.System || App.GetService().IsElevated) && !IsAppliedFromProfile; + return (ParentType != VariablesSetType.System || ElevationHelper.ElevationHelperInstance.IsElevated) && !IsAppliedFromProfile; } } @@ -122,7 +121,7 @@ namespace EnvironmentVariables.Models { if (!EnvironmentVariablesHelper.UnsetVariable(clone)) { - Logger.LogError("Failed to unset original variable."); + LoggerInstance.Logger.LogError("Failed to unset original variable."); } if (parentProfile != null) @@ -137,12 +136,12 @@ namespace EnvironmentVariables.Models if (!EnvironmentVariablesHelper.UnsetVariableWithoutNotify(backupVariable)) { - Logger.LogError("Failed to unset backup variable."); + LoggerInstance.Logger.LogError("Failed to unset backup variable."); } if (!EnvironmentVariablesHelper.SetVariableWithoutNotify(variableToRestore)) { - Logger.LogError("Failed to restore backup variable."); + LoggerInstance.Logger.LogError("Failed to restore backup variable."); } } } @@ -163,14 +162,14 @@ namespace EnvironmentVariables.Models // Backup the variable if (!EnvironmentVariablesHelper.SetVariableWithoutNotify(variableToOverride)) { - Logger.LogError("Failed to set backup variable."); + LoggerInstance.Logger.LogError("Failed to set backup variable."); } } } if (!EnvironmentVariablesHelper.SetVariable(this)) { - Logger.LogError("Failed to set new variable."); + LoggerInstance.Logger.LogError("Failed to set new variable."); } } }); @@ -197,7 +196,7 @@ namespace EnvironmentVariables.Models const int MaxUserEnvVariableLength = 255; // User-wide env vars stored in the registry have names limited to 255 chars if (ParentType != VariablesSetType.System && Name.Length >= MaxUserEnvVariableLength) { - Logger.LogError("Variable name too long."); + LoggerInstance.Logger.LogError("Variable name too long."); return false; } diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/VariablesSet.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/VariablesSet.cs similarity index 96% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Models/VariablesSet.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/VariablesSet.cs index a1e352d4e9..237fe7a910 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/VariablesSet.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/VariablesSet.cs @@ -7,9 +7,9 @@ using System.Collections.ObjectModel; using System.Linq; using System.Text.Json.Serialization; using CommunityToolkit.Mvvm.ComponentModel; -using EnvironmentVariables.ViewModels; +using EnvironmentVariablesUILib.ViewModels; -namespace EnvironmentVariables.Models +namespace EnvironmentVariablesUILib.Models { public partial class VariablesSet : ObservableObject { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/VariablesSetType.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/VariablesSetType.cs similarity index 88% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Models/VariablesSetType.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/VariablesSetType.cs index 6b59b05b68..e9605e0dd6 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/Models/VariablesSetType.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Models/VariablesSetType.cs @@ -2,7 +2,7 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -namespace EnvironmentVariables.Models +namespace EnvironmentVariablesUILib.Models { public enum VariablesSetType { diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/Strings/en-us/Resources.resw b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Strings/en-us/Resources.resw similarity index 100% rename from src/modules/EnvironmentVariables/EnvironmentVariables/Strings/en-us/Resources.resw rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Strings/en-us/Resources.resw diff --git a/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Telemetry/ITelemetry.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Telemetry/ITelemetry.cs new file mode 100644 index 0000000000..509365835b --- /dev/null +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Telemetry/ITelemetry.cs @@ -0,0 +1,15 @@ +// 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 EnvironmentVariablesUILib.Models; + +namespace EnvironmentVariablesUILib.Telemetry +{ + public interface ITelemetry + { + abstract void LogEnvironmentVariablesProfileEnabledEvent(bool enabled); + + abstract void LogEnvironmentVariablesVariableChangedEvent(VariablesSetType type); + } +} diff --git a/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Telemetry/TelemetryInstance.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Telemetry/TelemetryInstance.cs new file mode 100644 index 0000000000..a58fe1f407 --- /dev/null +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/Telemetry/TelemetryInstance.cs @@ -0,0 +1,12 @@ +// 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 EnvironmentVariablesUILib.Telemetry; + +namespace EnvironmentVariablesUILib.Helpers +{ + public static class TelemetryInstance + { + public static ITelemetry Telemetry { get; set; } + } +} diff --git a/src/modules/EnvironmentVariables/EnvironmentVariables/ViewModels/MainViewModel.cs b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/ViewModels/MainViewModel.cs similarity index 92% rename from src/modules/EnvironmentVariables/EnvironmentVariables/ViewModels/MainViewModel.cs rename to src/modules/EnvironmentVariables/EnvironmentVariablesUILib/ViewModels/MainViewModel.cs index 8bc7b208dc..cd261845ab 100644 --- a/src/modules/EnvironmentVariables/EnvironmentVariables/ViewModels/MainViewModel.cs +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/ViewModels/MainViewModel.cs @@ -10,14 +10,12 @@ using System.Globalization; using System.Linq; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; -using CommunityToolkit.Mvvm.Input; -using EnvironmentVariables.Helpers; -using EnvironmentVariables.Models; -using ManagedCommon; -using Microsoft.PowerToys.Telemetry; +using EnvironmentVariablesUILib.Helpers; +using EnvironmentVariablesUILib.Models; +using EnvironmentVariablesUILib.Telemetry; using Microsoft.UI.Dispatching; -namespace EnvironmentVariables.ViewModels +namespace EnvironmentVariablesUILib.ViewModels { public partial class MainViewModel : ObservableObject { @@ -48,10 +46,15 @@ namespace EnvironmentVariables.ViewModels public ProfileVariablesSet AppliedProfile { get; set; } - public MainViewModel(IEnvironmentVariablesService environmentVariablesService) + public MainViewModel(IElevationHelper elevationHelper, IEnvironmentVariablesService environmentVariablesService, ILogger logger, ITelemetry telemetry) { _environmentVariablesService = environmentVariablesService; - var isElevated = App.GetService().IsElevated; + + ElevationHelper.ElevationHelperInstance = elevationHelper; + LoggerInstance.Logger = logger; + TelemetryInstance.Telemetry = telemetry; + + var isElevated = ElevationHelper.ElevationHelperInstance.IsElevated; IsElevated = isElevated; } @@ -85,7 +88,6 @@ namespace EnvironmentVariables.ViewModels } } - [RelayCommand] public void LoadEnvironmentVariables() { LoadDefaultVariables(); @@ -129,7 +131,7 @@ namespace EnvironmentVariables.ViewModels catch (Exception ex) { // Show some error - Logger.LogError("Failed to load profiles.json file", ex); + LoggerInstance.Logger.LogError("Failed to load profiles.json file", ex); Profiles = new ObservableCollection(); } @@ -228,8 +230,7 @@ namespace EnvironmentVariables.ViewModels }); }); - PowerToysTelemetry.Log.WriteEvent(new Telemetry.EnvironmentVariablesVariableChangedEvent(original.ParentType)); - + TelemetryInstance.Telemetry.LogEnvironmentVariablesVariableChangedEvent(original.ParentType); _ = Task.Run(SaveAsync); } } @@ -276,7 +277,7 @@ namespace EnvironmentVariables.ViewModels catch (Exception ex) { // Show some error - Logger.LogError("Failed to save to profiles.json file", ex); + LoggerInstance.Logger.LogError("Failed to save to profiles.json file", ex); } } @@ -293,23 +294,13 @@ namespace EnvironmentVariables.ViewModels UnsetAppliedProfile(); SetAppliedProfile(profile); - var telemetryEnabled = new Telemetry.EnvironmentVariablesProfileEnabledEvent() - { - Enabled = true, - }; - - PowerToysTelemetry.Log.WriteEvent(telemetryEnabled); + TelemetryInstance.Telemetry.LogEnvironmentVariablesProfileEnabledEvent(true); } else { UnsetAppliedProfile(); - var telemetryEnabled = new Telemetry.EnvironmentVariablesProfileEnabledEvent() - { - Enabled = false, - }; - - PowerToysTelemetry.Log.WriteEvent(telemetryEnabled); + TelemetryInstance.Telemetry.LogEnvironmentVariablesProfileEnabledEvent(false); } } } diff --git a/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/app.manifest b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/app.manifest new file mode 100644 index 0000000000..cbe8c5420c --- /dev/null +++ b/src/modules/EnvironmentVariables/EnvironmentVariablesUILib/app.manifest @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/src/modules/Hosts/Hosts.Tests/EntryTest.cs b/src/modules/Hosts/Hosts.Tests/EntryTest.cs index 04b02b4879..c6360af428 100644 --- a/src/modules/Hosts/Hosts.Tests/EntryTest.cs +++ b/src/modules/Hosts/Hosts.Tests/EntryTest.cs @@ -2,7 +2,7 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using Hosts.Models; +using HostsUILib.Models; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Hosts.Tests diff --git a/src/modules/Hosts/Hosts.Tests/Hosts.Tests.csproj b/src/modules/Hosts/Hosts.Tests/Hosts.Tests.csproj index 3e789295e5..340dbebe39 100644 --- a/src/modules/Hosts/Hosts.Tests/Hosts.Tests.csproj +++ b/src/modules/Hosts/Hosts.Tests/Hosts.Tests.csproj @@ -33,7 +33,7 @@ - + diff --git a/src/modules/Hosts/Hosts.Tests/HostsServiceTest.cs b/src/modules/Hosts/Hosts.Tests/HostsServiceTest.cs index d76beebd60..1eeef3b752 100644 --- a/src/modules/Hosts/Hosts.Tests/HostsServiceTest.cs +++ b/src/modules/Hosts/Hosts.Tests/HostsServiceTest.cs @@ -5,14 +5,13 @@ using System.IO.Abstractions.TestingHelpers; using System.Linq; using System.Threading.Tasks; -using Hosts.Exceptions; -using Hosts.Helpers; -using Hosts.Models; -using Hosts.Settings; using Hosts.Tests.Mocks; +using HostsUILib.Exceptions; +using HostsUILib.Helpers; +using HostsUILib.Models; +using HostsUILib.Settings; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; -using Settings.UI.Library.Enumerations; namespace Hosts.Tests { diff --git a/src/modules/Hosts/Hosts/Helpers/Host.cs b/src/modules/Hosts/Hosts/Helpers/Host.cs new file mode 100644 index 0000000000..1627f359ea --- /dev/null +++ b/src/modules/Hosts/Hosts/Helpers/Host.cs @@ -0,0 +1,28 @@ +// 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; +using Microsoft.Extensions.Hosting; + +namespace Hosts.Helpers +{ + public static class Host + { + public static IHost HostInstance + { + get; set; + } + + public static T GetService() + where T : class + { + if (HostInstance!.Services.GetService(typeof(T)) is not T service) + { + throw new ArgumentException($"{typeof(T)} needs to be registered in ConfigureServices within App.xaml.cs."); + } + + return service; + } + } +} diff --git a/src/modules/Hosts/Hosts/Helpers/LoggerWrapper.cs b/src/modules/Hosts/Hosts/Helpers/LoggerWrapper.cs new file mode 100644 index 0000000000..89ec07d25e --- /dev/null +++ b/src/modules/Hosts/Hosts/Helpers/LoggerWrapper.cs @@ -0,0 +1,43 @@ +// 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; +using HostsUILib.Helpers; +using ManagedCommon; + +namespace Hosts +{ + internal sealed class LoggerWrapper : ILogger + { + public void LogDebug(string message) + { + Logger.LogDebug(message); + } + + public void LogError(string message) + { + Logger.LogError(message); + } + + public void LogError(string message, Exception ex) + { + Logger.LogError(message, ex); + } + + public void LogInfo(string message) + { + Logger.LogInfo(message); + } + + public void LogTrace() + { + Logger.LogTrace(); + } + + public void LogWarning(string message) + { + Logger.LogWarning(message); + } + } +} diff --git a/src/modules/Hosts/Hosts/Hosts.csproj b/src/modules/Hosts/Hosts/Hosts.csproj index ba13f01b00..e097b575dd 100644 --- a/src/modules/Hosts/Hosts/Hosts.csproj +++ b/src/modules/Hosts/Hosts/Hosts.csproj @@ -1,6 +1,6 @@  - + WinExe net8.0-windows10.0.20348.0 @@ -16,15 +16,34 @@ false true ..\..\..\..\$(Platform)\$(Configuration)\WinUI3Apps - Hosts PowerToys.Hosts DISABLE_XAML_GENERATED_MAIN,TRACE - Assets/Hosts/Hosts.ico true + Assets/Hosts/Hosts.ico PowerToys.Hosts.pri + + + + + + + + + + + + + + + + + + + + @@ -32,6 +51,10 @@ + + + + win-x64 @@ -46,38 +69,38 @@ $(OutDir) false - - - - - - - - - - - - + - - - + + - - - + + + + - + + + true + diff --git a/src/modules/Hosts/Hosts/HostsXAML/App.xaml b/src/modules/Hosts/Hosts/HostsXAML/App.xaml index 7d19cc0d8d..e053137314 100644 --- a/src/modules/Hosts/Hosts/HostsXAML/App.xaml +++ b/src/modules/Hosts/Hosts/HostsXAML/App.xaml @@ -1,4 +1,5 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/src/modules/Hosts/Hosts/HostsXAML/App.xaml.cs b/src/modules/Hosts/Hosts/HostsXAML/App.xaml.cs index 34080ce130..2d03c2ea28 100644 --- a/src/modules/Hosts/Hosts/HostsXAML/App.xaml.cs +++ b/src/modules/Hosts/Hosts/HostsXAML/App.xaml.cs @@ -1,48 +1,43 @@ -// Copyright (c) Microsoft Corporation +// 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; using System.IO.Abstractions; using System.Threading; -using Hosts.Helpers; -using Hosts.Settings; -using Hosts.ViewModels; -using Hosts.Views; +using Common.UI; +using HostsUILib.Helpers; +using HostsUILib.Settings; +using HostsUILib.ViewModels; +using HostsUILib.Views; using ManagedCommon; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.PowerToys.Telemetry; using Microsoft.UI.Dispatching; using Microsoft.UI.Xaml; +using static HostsUILib.Settings.IUserSettings; +using Host = Hosts.Helpers.Host; +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. namespace Hosts { + /// + /// Provides application-specific behavior to supplement the default Application class. + /// public partial class App : Application { - private Window _window; - - public IHost Host - { - get; - } - - public static T GetService() - where T : class - { - if ((App.Current as App)!.Host.Services.GetService(typeof(T)) is not T service) - { - throw new ArgumentException($"{typeof(T)} needs to be registered in ConfigureServices within App.xaml.cs."); - } - - return service; - } - + /// + /// Initializes a new instance of the class. + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// public App() { InitializeComponent(); - Host = Microsoft.Extensions.Hosting.Host. + Host.HostInstance = Microsoft.Extensions.Hosting.Host. CreateDefaultBuilder(). UseContentRoot(AppContext.BaseDirectory). ConfigureServices((context, services) => @@ -50,28 +45,33 @@ namespace Hosts // Core Services services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); // Views and ViewModels - services.AddTransient(); - services.AddTransient(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(() => + { + SettingsDeepLink.OpenSettings(SettingsDeepLink.SettingsWindow.Hosts, true); + }); + + services.AddSingleton(); + services.AddSingleton(); }). Build(); - UnhandledException += App_UnhandledException; - var cleanupBackupThread = new Thread(() => { // Delete old backups only if running elevated - if (!GetService().IsElevated) + if (!Host.GetService().IsElevated) { return; } try { - GetService().CleanupBackup(); + Host.GetService().CleanupBackup(); } catch (Exception ex) { @@ -81,8 +81,14 @@ namespace Hosts cleanupBackupThread.IsBackground = true; cleanupBackupThread.Start(); + + UnhandledException += App_UnhandledException; } + /// + /// Invoked when the application is launched. + /// + /// Details about the launch request and process. protected override void OnLaunched(LaunchActivatedEventArgs args) { var cmdArgs = Environment.GetCommandLineArgs(); @@ -105,15 +111,17 @@ namespace Hosts Logger.LogInfo($"Hosts started detached from PowerToys Runner."); } - PowerToysTelemetry.Log.WriteEvent(new Hosts.Telemetry.HostsFileEditorOpenedEvent()); + PowerToysTelemetry.Log.WriteEvent(new Telemetry.HostsFileEditorOpenedEvent()); - _window = new MainWindow(); - _window.Activate(); + window = new MainWindow(); + window.Activate(); } private void App_UnhandledException(object sender, Microsoft.UI.Xaml.UnhandledExceptionEventArgs e) { Logger.LogError("Unhandled exception", e.Exception); } + + private Window window; } } diff --git a/src/modules/Hosts/Hosts/HostsXAML/MainWindow.xaml b/src/modules/Hosts/Hosts/HostsXAML/MainWindow.xaml index 37c43fa4fc..2537c462ca 100644 --- a/src/modules/Hosts/Hosts/HostsXAML/MainWindow.xaml +++ b/src/modules/Hosts/Hosts/HostsXAML/MainWindow.xaml @@ -1,9 +1,8 @@ - - + @@ -42,7 +41,5 @@ VerticalAlignment="Center" Style="{StaticResource CaptionTextBlockStyle}" /> - - diff --git a/src/modules/Hosts/Hosts/HostsXAML/MainWindow.xaml.cs b/src/modules/Hosts/Hosts/HostsXAML/MainWindow.xaml.cs index d6a474b841..3f8c01de83 100644 --- a/src/modules/Hosts/Hosts/HostsXAML/MainWindow.xaml.cs +++ b/src/modules/Hosts/Hosts/HostsXAML/MainWindow.xaml.cs @@ -1,17 +1,28 @@ -// Copyright (c) Microsoft Corporation +// 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 Hosts.Helpers; +using HostsUILib.Helpers; +using HostsUILib.Views; using ManagedCommon; using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Media; +using Microsoft.Windows.ApplicationModel.Resources; using WinUIEx; +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. namespace Hosts { + /// + /// An empty window that can be used on its own or navigated to within a Frame. + /// public sealed partial class MainWindow : WindowEx { + private HostsMainPage MainPage { get; } + public MainWindow() { InitializeComponent(); @@ -20,15 +31,18 @@ namespace Hosts SetTitleBar(titleBar); AppWindow.SetIcon("Assets/Hosts/Hosts.ico"); - var loader = ResourceLoaderInstance.ResourceLoader; - var title = App.GetService().IsElevated ? loader.GetString("WindowAdminTitle") : loader.GetString("WindowTitle"); + var loader = new ResourceLoader("PowerToys.HostsUILib.pri", "PowerToys.HostsUILib/Resources"); + + var title = Host.GetService().IsElevated ? loader.GetString("WindowAdminTitle") : loader.GetString("WindowTitle"); Title = title; AppTitleTextBlock.Text = title; var handle = this.GetWindowHandle(); - WindowHelpers.BringToForeground(handle); + WindowHelpers.BringToForeground(handle); Activated += MainWindow_Activated; + + MainPage = Host.GetService(); } private void MainWindow_Activated(object sender, WindowActivatedEventArgs args) @@ -42,5 +56,11 @@ namespace Hosts AppTitleTextBlock.Foreground = (SolidColorBrush)App.Current.Resources["WindowCaptionForeground"]; } } + + private void Grid_Loaded(object sender, RoutedEventArgs e) + { + MainGrid.Children.Add(MainPage); + Grid.SetRow(MainPage, 1); + } } } diff --git a/src/modules/Hosts/Hosts/Program.cs b/src/modules/Hosts/Hosts/Program.cs index 4b41f3c71a..5b7c21861b 100644 --- a/src/modules/Hosts/Hosts/Program.cs +++ b/src/modules/Hosts/Hosts/Program.cs @@ -16,7 +16,6 @@ namespace Hosts public static void Main(string[] args) { Logger.InitializeLogger("\\Hosts\\Logs"); - WinRT.ComWrappersSupport.InitializeComWrappers(); if (PowerToys.GPOWrapper.GPOWrapper.GetConfiguredHostsFileEditorEnabledValue() == PowerToys.GPOWrapper.GpoRuleConfigured.Disabled) diff --git a/src/modules/Hosts/Hosts/Settings/UserSettings.cs b/src/modules/Hosts/Hosts/Settings/UserSettings.cs index 5c73dd3a17..42e2848c18 100644 --- a/src/modules/Hosts/Hosts/Settings/UserSettings.cs +++ b/src/modules/Hosts/Hosts/Settings/UserSettings.cs @@ -5,10 +5,11 @@ using System; using System.IO.Abstractions; using System.Threading; +using HostsUILib.Helpers; +using HostsUILib.Settings; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Utilities; -using Settings.UI.Library.Enumerations; namespace Hosts.Settings { @@ -38,8 +39,10 @@ namespace Hosts.Settings } } + // Moved from Settings.UI.Library public HostsAdditionalLinesPosition AdditionalLinesPosition { get; private set; } + // Moved from Settings.UI.Library public HostsEncoding Encoding { get; set; } public UserSettings() @@ -72,6 +75,7 @@ namespace Hosts.Settings if (!_settingsUtils.SettingsExists(HostsModuleName)) { + // Logger needs to be abstracted Logger.LogInfo("Hosts settings.json was missing, creating a new one"); var defaultSettings = new HostsSettings(); defaultSettings.Save(_settingsUtils); @@ -81,8 +85,8 @@ namespace Hosts.Settings if (settings != null) { ShowStartupWarning = settings.Properties.ShowStartupWarning; - AdditionalLinesPosition = settings.Properties.AdditionalLinesPosition; - Encoding = settings.Properties.Encoding; + AdditionalLinesPosition = (HostsAdditionalLinesPosition)settings.Properties.AdditionalLinesPosition; + Encoding = (HostsEncoding)settings.Properties.Encoding; LoopbackDuplicates = settings.Properties.LoopbackDuplicates; } diff --git a/src/modules/Hosts/Hosts/app.manifest b/src/modules/Hosts/Hosts/app.manifest index 6417c11e2d..ca937b4b2a 100644 --- a/src/modules/Hosts/Hosts/app.manifest +++ b/src/modules/Hosts/Hosts/app.manifest @@ -1,5 +1,6 @@ - + @@ -18,4 +19,4 @@ - + \ No newline at end of file diff --git a/src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-100.png b/src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..adcd8d708a6c94e27261b5833fe2b4fec72f5d30 GIT binary patch literal 567 zcmV-70?7S|P)T6ps7Uw|u7PB|fEVXhgs-n#hsi}$ZT%LvstE%eIB3^IuGfvn{GLuTFQc83DnR}l5?B1Oa zJmthp&4kRTj`k=i)hW-7ZC>-*UC)1a7pK+Ww9F*TKs>t%#*qVkzW?w`>Ww<7Aalx_ zz#@=m8(?Bll~5ZESYDlFFqq=dzQYdo_rgR>z&RiuMijlCSHQTsn;k9&gf$YEU`7I2i}qhd@UhF%@NDb%x&I z0j-H<%+60TvouL#q6x_S`aD>IOhz6N#gy&eyC=3_`?oHbQL6{-pSM}PZcQ@-VFW^g zLK;`xy5+>|xEnXF6Ux-`j8U&stJlJk2F9fg%oC37-#RW`z7R+MI%4P74mqq`ziBgu zgUbDXbR-2vBb>0kgGcH9T3ow%lPhn(Dtd?e)SGqp{?U%X;hrd(BM~A@0Q-lI#%~}0 zcw%J(qYNs{6h#Fc`Nm(7E7h~fS*k$93=~sCkle><9Rv2cd?N!^gFFBL002ovPDHLk FV1jzu2EhOT literal 0 HcmV?d00001 diff --git a/src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-125.png b/src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..4ff1604ac8d710dc132d6bba7fa2260d45f58c7c GIT binary patch literal 768 zcmV+b1ONPqP)bLVtfH3X`H)Fm!5y`eFlA6%{6AA253UnK-R?BSPy@8`You}DowH4J_ zp06=8vEcb5LsZwUj#cFdlu#&oC@f_H5N52~IAC>czgOM1kLo}lm)*Qqfxfo&tM0qP z<=Lg!cIh^U4h@0=(6eQNP#sv?AHRKl!c9BYQ8Zf2O)QWm>$a@1uUcX9>;!wR+Z(2$ zB>oqeBqWj|h=S72kjw$b0FW@t(hQ~-Pa%Uy+IXD4m6t)BhmY}DF?oc``aoc;bpw3>ydzBx*((Q;vA zCa{QTADO)~GypT&xpDs2^ImrM6*L=7s_Uw>AyHj7z^)ti#puCv?dEF+fQHfo2%sz1 zw#~8653y%VHcjU;wt#O%lQMXa!jHr=DDo^0000X1^@s6D=Y3@000B9Nkl`2Y3EbTw1$2!hfJXvh;I=0a+`YfzoEhM`wR`oo zVlN5^LTQlzAZQvJHm|$$@bKF6fGm*)GbY785-O>RR9cw`r~!rcoAHpdC!fE&4b+MN zCYF|<3X}k9KT3)g5@0YqeeCJdkQsn7rP@i*b-@G_RqV&VYy&0oDA|cGEa{c^_668wi?hdHe7?K0Fy=&}w6PWRZt1?4{*qwQ-$-#!8UnKz%@h z>Wl*?cHq;iNjjdz*@{V?K!#^v=HGHH_+v}bZg%Le`qF8(V8{WQQndX*+Km>r z9^6XxujUkiAb~}uQ9`2E?b9o|3}KhbW{czSl zPN7iGBb`oT{@WZ0qP(+$teeH^)C%@qJ|xSd^I*g;s?C+O4!#EXZbPr#lYIl@6HmUx&kZ();hKz5t(w@z$kXrGc4Rx8qKEz056huDC*hPl zaR>J!_dcNA2na(MaJUXsgEckPH9$e9*~aM8ZvrAzt*T(R**3V*bX6bfm=tl79Yn+= zqlOFP4F?^qDdn%_f%r21H%Jm1Fvd;pGlmVf;;m*P1&v-}jGN%hpmQ|%xq03XVP*mV XqGl$9@}BWF00000NkvXXu0mjfQmfq% literal 0 HcmV?d00001 diff --git a/src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-200.png b/src/modules/Hosts/HostsUILib/Assets/HostsUILib/AppList.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..a585ff9ad6cd56a1565e5ba7ccbeceacb15c806a GIT binary patch literal 1542 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 - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/modules/Hosts/Hosts/HostsXAML/Views/MainPage.xaml.cs b/src/modules/Hosts/HostsUILib/HostsMainPage.xaml.cs similarity index 91% rename from src/modules/Hosts/Hosts/HostsXAML/Views/MainPage.xaml.cs rename to src/modules/Hosts/HostsUILib/HostsMainPage.xaml.cs index e573fbeb54..8af0289975 100644 --- a/src/modules/Hosts/Hosts/HostsXAML/Views/MainPage.xaml.cs +++ b/src/modules/Hosts/HostsUILib/HostsMainPage.xaml.cs @@ -6,18 +6,16 @@ using System; using System.Threading.Tasks; using System.Windows.Input; using CommunityToolkit.Mvvm.Input; -using Hosts.Helpers; -using Hosts.Models; -using Hosts.Settings; -using Hosts.ViewModels; -using ManagedCommon; +using HostsUILib.Helpers; +using HostsUILib.Models; +using HostsUILib.ViewModels; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Input; -namespace Hosts.Views +namespace HostsUILib.Views { - public sealed partial class MainPage : Page + public partial class HostsMainPage : Page { public MainViewModel ViewModel { get; private set; } @@ -35,10 +33,11 @@ namespace Hosts.Views public ICommand ExitCommand => new RelayCommand(() => { Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread().TryEnqueue(Application.Current.Exit); }); - public MainPage() + public HostsMainPage(MainViewModel viewModel) { InitializeComponent(); - ViewModel = App.GetService(); + ViewModel = viewModel; + DataContext = ViewModel; } @@ -128,7 +127,9 @@ namespace Hosts.Views private async void Page_Loaded(object sender, RoutedEventArgs e) { - var userSettings = App.GetService(); + ViewModel.ReadHosts(); + + var userSettings = ViewModel.UserSettings; if (userSettings.ShowStartupWarning) { var resourceLoader = Helpers.ResourceLoaderInstance.ResourceLoader; @@ -219,11 +220,14 @@ namespace Hosts.Views { // Based on the template from dev/CommonStyles/ContentDialog_themeresources.xaml in https://github.com/microsoft/microsoft-ui-xaml var border = VisualTreeUtils.FindVisualChildByName(sender as ContentDialog, "BackgroundElement") as Border; - border.Margin = new Thickness(0, 32, 0, 0); // Should be the size reserved for the title bar as in MainWindow.xaml + if (border is not null) + { + border.Margin = new Thickness(0, 32, 0, 0); // Should be the size reserved for the title bar as in MainWindow. + } } catch (Exception ex) { - Logger.LogError("Couldn't set the margin for a content dialog. It will appear on top of the title bar.", ex); + LoggerInstance.Logger.LogError("Couldn't set the margin for a content dialog. It will appear on top of the title bar.", ex); } } } diff --git a/src/modules/Hosts/HostsUILib/HostsUILib.csproj b/src/modules/Hosts/HostsUILib/HostsUILib.csproj new file mode 100644 index 0000000000..2ae4fe4068 --- /dev/null +++ b/src/modules/Hosts/HostsUILib/HostsUILib.csproj @@ -0,0 +1,69 @@ + + + + + Library + net8.0-windows10.0.20348 + HostsUILib + true + true + false + false + PowerToys.HostsUILib + + PowerToys.HostsUILib.pri + + true + true + + + + + + + + + + + + + + + + + + + + true + DEBUG;TRACE + full + prompt + 4 + false + + + + TRACE + true + pdbonly + prompt + 4 + + + + + + + + + + + + + + + + + + + diff --git a/src/modules/Hosts/Hosts/Models/AddressType.cs b/src/modules/Hosts/HostsUILib/Models/AddressType.cs similarity index 91% rename from src/modules/Hosts/Hosts/Models/AddressType.cs rename to src/modules/Hosts/HostsUILib/Models/AddressType.cs index f89a950218..46987144a2 100644 --- a/src/modules/Hosts/Hosts/Models/AddressType.cs +++ b/src/modules/Hosts/HostsUILib/Models/AddressType.cs @@ -2,7 +2,7 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -namespace Hosts.Models +namespace HostsUILib.Models { public enum AddressType { diff --git a/src/modules/Hosts/Hosts/Models/Entry.cs b/src/modules/Hosts/HostsUILib/Models/Entry.cs similarity index 98% rename from src/modules/Hosts/Hosts/Models/Entry.cs rename to src/modules/Hosts/HostsUILib/Models/Entry.cs index a1c62edd24..8cc8530d38 100644 --- a/src/modules/Hosts/Hosts/Models/Entry.cs +++ b/src/modules/Hosts/HostsUILib/Models/Entry.cs @@ -6,9 +6,9 @@ using System; using System.Net; using System.Text; using CommunityToolkit.Mvvm.ComponentModel; -using Hosts.Helpers; +using HostsUILib.Helpers; -namespace Hosts.Models +namespace HostsUILib.Models { public partial class Entry : ObservableObject { diff --git a/src/modules/Hosts/Hosts/Models/HostsData.cs b/src/modules/Hosts/HostsUILib/Models/HostsData.cs similarity index 97% rename from src/modules/Hosts/Hosts/Models/HostsData.cs rename to src/modules/Hosts/HostsUILib/Models/HostsData.cs index abb79a69ef..706660f56b 100644 --- a/src/modules/Hosts/Hosts/Models/HostsData.cs +++ b/src/modules/Hosts/HostsUILib/Models/HostsData.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; -namespace Hosts.Models +namespace HostsUILib.Models { /// /// Represents the parsed hosts file diff --git a/src/modules/Hosts/HostsUILib/Settings/HostsAdditionalLinesPosition.cs b/src/modules/Hosts/HostsUILib/Settings/HostsAdditionalLinesPosition.cs new file mode 100644 index 0000000000..62c78f64ab --- /dev/null +++ b/src/modules/Hosts/HostsUILib/Settings/HostsAdditionalLinesPosition.cs @@ -0,0 +1,12 @@ +// 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. + +namespace HostsUILib.Settings +{ + public enum HostsAdditionalLinesPosition + { + Top = 0, + Bottom = 1, + } +} diff --git a/src/modules/Hosts/HostsUILib/Settings/HostsEncoding.cs b/src/modules/Hosts/HostsUILib/Settings/HostsEncoding.cs new file mode 100644 index 0000000000..ae72516e29 --- /dev/null +++ b/src/modules/Hosts/HostsUILib/Settings/HostsEncoding.cs @@ -0,0 +1,12 @@ +// 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. + +namespace HostsUILib.Settings +{ + public enum HostsEncoding + { + Utf8 = 0, + Utf8Bom = 1, + } +} diff --git a/src/modules/Hosts/Hosts/Settings/IUserSettings.cs b/src/modules/Hosts/HostsUILib/Settings/IUserSettings.cs similarity index 83% rename from src/modules/Hosts/Hosts/Settings/IUserSettings.cs rename to src/modules/Hosts/HostsUILib/Settings/IUserSettings.cs index fabea87e62..13f1761ceb 100644 --- a/src/modules/Hosts/Hosts/Settings/IUserSettings.cs +++ b/src/modules/Hosts/HostsUILib/Settings/IUserSettings.cs @@ -3,9 +3,9 @@ // See the LICENSE file in the project root for more information. using System; -using Settings.UI.Library.Enumerations; +using System.Net; -namespace Hosts.Settings +namespace HostsUILib.Settings { public interface IUserSettings { @@ -18,5 +18,7 @@ namespace Hosts.Settings public HostsEncoding Encoding { get; } event EventHandler LoopbackDuplicatesChanged; + + public delegate void OpenSettingsFunction(); } } diff --git a/src/modules/Hosts/Hosts/Strings/en-us/Resources.resw b/src/modules/Hosts/HostsUILib/Strings/en-us/Resources.resw similarity index 100% rename from src/modules/Hosts/Hosts/Strings/en-us/Resources.resw rename to src/modules/Hosts/HostsUILib/Strings/en-us/Resources.resw diff --git a/src/modules/Hosts/Hosts/ViewModels/MainViewModel.cs b/src/modules/Hosts/HostsUILib/ViewModels/MainViewModel.cs similarity index 94% rename from src/modules/Hosts/Hosts/ViewModels/MainViewModel.cs rename to src/modules/Hosts/HostsUILib/ViewModels/MainViewModel.cs index 414fb8fce2..1a756d5124 100644 --- a/src/modules/Hosts/Hosts/ViewModels/MainViewModel.cs +++ b/src/modules/Hosts/HostsUILib/ViewModels/MainViewModel.cs @@ -10,19 +10,18 @@ using System.Linq; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; -using Common.UI; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.WinUI; using CommunityToolkit.WinUI.Collections; -using Hosts.Exceptions; -using Hosts.Helpers; -using Hosts.Models; -using Hosts.Settings; -using ManagedCommon; +using HostsUILib.Exceptions; +using HostsUILib.Helpers; +using HostsUILib.Models; +using HostsUILib.Settings; using Microsoft.UI.Dispatching; +using static HostsUILib.Settings.IUserSettings; -namespace Hosts.ViewModels +namespace HostsUILib.ViewModels { public partial class MainViewModel : ObservableObject, IDisposable { @@ -90,13 +89,22 @@ namespace Hosts.ViewModels public int NextId => _entries?.Count > 0 ? _entries.Max(e => e.Id) + 1 : 0; - public MainViewModel(IHostsService hostService, IUserSettings userSettings) + public IUserSettings UserSettings => _userSettings; + + public static MainViewModel Instance { get; set; } + + private OpenSettingsFunction _openSettingsFunction; + + public MainViewModel(IHostsService hostService, IUserSettings userSettings, ILogger logger, OpenSettingsFunction openSettingsFunction) { _hostsService = hostService; _userSettings = userSettings; _hostsService.FileChanged += (s, e) => _dispatcherQueue.TryEnqueue(() => FileChanged = true); _userSettings.LoopbackDuplicatesChanged += (s, e) => ReadHosts(); + + LoggerInstance.Logger = logger; + _openSettingsFunction = openSettingsFunction; } public void Add(Entry entry) @@ -270,7 +278,7 @@ namespace Hosts.ViewModels [RelayCommand] public void OpenSettings() { - SettingsDeepLink.OpenSettings(SettingsDeepLink.SettingsWindow.Hosts, true); + _openSettingsFunction(); } [RelayCommand] @@ -335,7 +343,7 @@ namespace Hosts.ViewModels } catch (OperationCanceledException) { - Logger.LogInfo("FindDuplicates cancelled"); + LoggerInstance.Logger.LogInfo("FindDuplicates cancelled"); return; } } @@ -424,7 +432,7 @@ namespace Hosts.ViewModels } catch (Exception ex) { - Logger.LogError("Failed to save hosts file", ex); + LoggerInstance.Logger.LogError("Failed to save hosts file", ex); var resourceLoader = ResourceLoaderInstance.ResourceLoader; errorMessage = resourceLoader.GetString("FileSaveError_Generic"); } diff --git a/src/modules/registrypreview/RegistryPreviewUI/Assets/RegistryPreview/app.ico b/src/modules/registrypreview/RegistryPreview/Assets/RegistryPreview/RegistryPreview.ico similarity index 100% rename from src/modules/registrypreview/RegistryPreviewUI/Assets/RegistryPreview/app.ico rename to src/modules/registrypreview/RegistryPreview/Assets/RegistryPreview/RegistryPreview.ico diff --git a/src/modules/registrypreview/RegistryPreview/MainWindow.Events.cs b/src/modules/registrypreview/RegistryPreview/MainWindow.Events.cs new file mode 100644 index 0000000000..34de7f1752 --- /dev/null +++ b/src/modules/registrypreview/RegistryPreview/MainWindow.Events.cs @@ -0,0 +1,33 @@ +// 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 Microsoft.UI.Xaml; +using Windows.Data.Json; +using WinUIEx; + +namespace RegistryPreview +{ + public sealed partial class MainWindow : WindowEx + { + /// + /// Event handler to grab the main window's size and position before it closes + /// + private void AppWindow_Closing(Microsoft.UI.Windowing.AppWindow sender, Microsoft.UI.Windowing.AppWindowClosingEventArgs args) + { + jsonWindowPlacement.SetNamedValue("appWindow.Position.X", JsonValue.CreateNumberValue(appWindow.Position.X)); + jsonWindowPlacement.SetNamedValue("appWindow.Position.Y", JsonValue.CreateNumberValue(appWindow.Position.Y)); + jsonWindowPlacement.SetNamedValue("appWindow.Size.Width", JsonValue.CreateNumberValue(appWindow.Size.Width)); + jsonWindowPlacement.SetNamedValue("appWindow.Size.Height", JsonValue.CreateNumberValue(appWindow.Size.Height)); + } + + /// + /// Event that is will prevent the app from closing if the "save file" flag is active + /// + public void Window_Closed(object sender, WindowEventArgs args) + { + // Save window placement + SaveWindowPlacementFile(settingsFolder, windowPlacementFile); + } + } +} diff --git a/src/modules/registrypreview/RegistryPreview/MainWindow.Utilities.cs b/src/modules/registrypreview/RegistryPreview/MainWindow.Utilities.cs new file mode 100644 index 0000000000..9104969280 --- /dev/null +++ b/src/modules/registrypreview/RegistryPreview/MainWindow.Utilities.cs @@ -0,0 +1,95 @@ +// 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; +using System.Diagnostics; +using System.IO; +using System.Threading.Tasks; +using Windows.Storage; +using WinUIEx; + +namespace RegistryPreview +{ + public sealed partial class MainWindow : WindowEx + { + private void OpenWindowPlacementFile(string path, string filename) + { + string fileContents = string.Empty; + string storageFile = Path.Combine(path, filename); + if (File.Exists(storageFile)) + { + try + { + StreamReader reader = new StreamReader(storageFile); + fileContents = reader.ReadToEnd(); + reader.Close(); + } + catch + { + // set up default JSON blob + fileContents = "{ }"; + } + } + else + { + Task.Run(() => SaveWindowPlacementFile(path, filename)).GetAwaiter().GetResult(); + } + + try + { + jsonWindowPlacement = Windows.Data.Json.JsonObject.Parse(fileContents); + } + catch + { + // set up default JSON blob + fileContents = "{ }"; + jsonWindowPlacement = Windows.Data.Json.JsonObject.Parse(fileContents); + } + } + + /// + /// Save the window placement JSON blob out to a local file + /// + private async void SaveWindowPlacementFile(string path, string filename) + { + StorageFolder storageFolder = null; + StorageFile storageFile = null; + string fileContents = string.Empty; + + try + { + storageFolder = await StorageFolder.GetFolderFromPathAsync(path); + } + catch (FileNotFoundException ex) + { + Debug.WriteLine(ex.Message); + Directory.CreateDirectory(path); + storageFolder = await StorageFolder.GetFolderFromPathAsync(path); + } + + try + { + storageFile = await storageFolder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists); + } + catch (FileNotFoundException ex) + { + Debug.WriteLine(ex.Message); + storageFile = await storageFolder.CreateFileAsync(filename); + } + + try + { + if (jsonWindowPlacement != null) + { + fileContents = jsonWindowPlacement.Stringify(); + await Windows.Storage.FileIO.WriteTextAsync(storageFile, fileContents); + } + } + catch (Exception ex) + { + Debug.WriteLine(ex.Message); + } + } + } +} diff --git a/src/modules/registrypreview/RegistryPreview/RegistryPreview.csproj b/src/modules/registrypreview/RegistryPreview/RegistryPreview.csproj new file mode 100644 index 0000000000..26623d6ee3 --- /dev/null +++ b/src/modules/registrypreview/RegistryPreview/RegistryPreview.csproj @@ -0,0 +1,91 @@ + + + + WinExe + net8.0-windows10.0.20348.0 + 10.0.19041.0 + 10.0.19041.0 + RegistryPreview + app.manifest + x86;x64;ARM64 + win-x64;win-arm64 + true + true + true + None + false + false + true + true + ..\..\..\..\$(Platform)\$(Configuration)\WinUI3Apps + PowerToys.RegistryPreview + Assets\RegistryPreview\RegistryPreview.ico + + PowerToys.RegistryPreview.pri + + + + + + + + + + + + + + + + + win-x64 + + + win-arm64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + \ No newline at end of file diff --git a/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/App.xaml b/src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/App.xaml similarity index 91% rename from src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/App.xaml rename to src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/App.xaml index 9ccb7447ef..7c2836890c 100644 --- a/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/App.xaml +++ b/src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/App.xaml @@ -1,4 +1,5 @@ - + @@ -20,6 +19,8 @@ namespace RegistryPreview { /// /// Initializes a new instance of the class. + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). /// public App() { @@ -27,8 +28,7 @@ namespace RegistryPreview } /// - /// Invoked when the application is launched normally by the end user. Other entry points - /// will be used such as when the application is launched to open a specific file. + /// Invoked when the application is launched. /// /// Details about the launch request and process. protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) diff --git a/src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/MainWindow.xaml b/src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/MainWindow.xaml new file mode 100644 index 0000000000..95ab0e4331 --- /dev/null +++ b/src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/MainWindow.xaml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/MainWindow.xaml.cs b/src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/MainWindow.xaml.cs similarity index 70% rename from src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/MainWindow.xaml.cs rename to src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/MainWindow.xaml.cs index 37e455c503..2cbc80b22c 100644 --- a/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/MainWindow.xaml.cs +++ b/src/modules/registrypreview/RegistryPreview/RegistryPreviewXAML/MainWindow.xaml.cs @@ -1,16 +1,14 @@ -// Copyright (c) Microsoft Corporation +// 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; -using System.Collections.Generic; -using System.IO; using ManagedCommon; using Microsoft.UI; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Media; -using Microsoft.Windows.ApplicationModel.Resources; +using RegistryPreviewUILib; using Windows.Data.Json; using Windows.Graphics; using WinUIEx; @@ -20,39 +18,31 @@ namespace RegistryPreview public sealed partial class MainWindow : WindowEx { // Const values - private const string REGISTRYHEADER4 = "regedit4"; - private const string REGISTRYHEADER5 = "windows registry editor version 5.00"; private const string APPNAME = "RegistryPreview"; - private const string KEYIMAGE = "ms-appx:///Assets/RegistryPreview/folder32.png"; - private const string DELETEDKEYIMAGE = "ms-appx:///Assets/RegistryPreview/deleted-folder32.png"; - private const string ERRORIMAGE = "ms-appx:///Assets/RegistryPreview/error32.png"; // private members private Microsoft.UI.Windowing.AppWindow appWindow; - private ResourceLoader resourceLoader; - private bool visualTreeReady; - private Dictionary mapRegistryKeys; - private List listRegistryValues; private JsonObject jsonWindowPlacement; private string settingsFolder = string.Empty; private string windowPlacementFile = "app-placement.json"; + private RegistryPreviewMainPage MainPage { get; } + internal MainWindow() { this.InitializeComponent(); - // Initialize the string table - resourceLoader = ResourceLoaderInstance.ResourceLoader; - // Open settings file; this moved to after the window tweak because it gives the window time to start up settingsFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Microsoft\PowerToys\" + APPNAME; OpenWindowPlacementFile(settingsFolder, windowPlacementFile); // Update the Win32 looking window with the correct icon (and grab the appWindow handle for later) IntPtr windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(this); - WindowId windowId = Win32Interop.GetWindowIdFromWindow(windowHandle); + Microsoft.UI.WindowId windowId = Win32Interop.GetWindowIdFromWindow(windowHandle); appWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(windowId); - appWindow.SetIcon("Assets\\RegistryPreview\\app.ico"); + appWindow.SetIcon("Assets\\RegistryPreview\\RegistryPreview.ico"); + + // TODO(stefan) appWindow.Closing += AppWindow_Closing; Activated += MainWindow_Activated; @@ -92,12 +82,7 @@ namespace RegistryPreview } } - // Update Toolbar - if ((App.AppFilename == null) || (File.Exists(App.AppFilename) != true)) - { - UpdateToolBarAndUI(false); - UpdateWindowTitle(resourceLoader.GetString("FileNotFound")); - } + MainPage = new RegistryPreviewMainPage(this, this.UpdateWindowTitle, App.AppFilename); WindowHelpers.BringToForeground(windowHandle); } @@ -107,12 +92,44 @@ namespace RegistryPreview if (args.WindowActivationState == WindowActivationState.Deactivated) { titleBarText.Foreground = - (SolidColorBrush)App.Current.Resources["WindowCaptionForegroundDisabled"]; + (SolidColorBrush)Application.Current.Resources["WindowCaptionForegroundDisabled"]; } else { titleBarText.Foreground = - (SolidColorBrush)App.Current.Resources["WindowCaptionForeground"]; + (SolidColorBrush)Application.Current.Resources["WindowCaptionForeground"]; + } + } + + private void Grid_Loaded(object sender, RoutedEventArgs e) + { + MainGrid.Children.Add(MainPage); + Grid.SetRow(MainPage, 1); + } + + public void UpdateWindowTitle(string title) + { + string filename = title; + + if (string.IsNullOrEmpty(filename)) + { + titleBarText.Text = APPNAME; + appWindow.Title = APPNAME; + } + else + { + string[] file = filename.Split('\\'); + if (file.Length > 0) + { + titleBarText.Text = file[file.Length - 1] + " - " + APPNAME; + } + else + { + titleBarText.Text = filename + " - " + APPNAME; + } + + // Continue to update the window's title, after updating the custom title bar + appWindow.Title = titleBarText.Text; } } } diff --git a/src/modules/registrypreview/RegistryPreview/Strings/en-us/Resources.resw b/src/modules/registrypreview/RegistryPreview/Strings/en-us/Resources.resw new file mode 100644 index 0000000000..61550769a3 --- /dev/null +++ b/src/modules/registrypreview/RegistryPreview/Strings/en-us/Resources.resw @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/modules/registrypreview/RegistryPreview/app.manifest b/src/modules/registrypreview/RegistryPreview/app.manifest new file mode 100644 index 0000000000..c3f3db0141 --- /dev/null +++ b/src/modules/registrypreview/RegistryPreview/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewUI.csproj b/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewUI.csproj deleted file mode 100644 index 5c38551b43..0000000000 --- a/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewUI.csproj +++ /dev/null @@ -1,84 +0,0 @@ - - - - WinExe - net8.0-windows10.0.20348.0 - 10.0.19041.0 - 10.0.19041.0 - x86;x64;arm64 - ..\..\..\..\$(Platform)\$(Configuration)\WinUI3Apps - true - False - Assets\RegistryPreview\app.ico - app.manifest - true - false - false - true - None - true - true - $(AssemblyName) - PowerToys.RegistryPreview - PowerToys.RegistryPreview - PowerToys RegistryPreview - RegistryPreview - true - true - - PowerToys.RegistryPreview.pri - - - - - - - - - - - - win-x64 - - - win-arm64 - - - - - - - - - PowerToys.GPOWrapper - $(OutDir) - false - - - - - - - - - - - - - - - - - - - - - - Never - - - Never - - - - diff --git a/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/MainWindow.xaml b/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/MainWindow.xaml deleted file mode 100644 index 3bce0037d6..0000000000 --- a/src/modules/registrypreview/RegistryPreviewUI/RegistryPreviewXAML/MainWindow.xaml +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/modules/registrypreview/RegistryPreviewUILib/Assets/RegistryPreview/RegistryPreview.ico b/src/modules/registrypreview/RegistryPreviewUILib/Assets/RegistryPreview/RegistryPreview.ico new file mode 100644 index 0000000000000000000000000000000000000000..0b83ebb9fd92a8ae7fe8e71fdfb8cadcc5ee7363 GIT binary patch literal 138557 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�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

jnLz4+IGS)kV9z|j zEck>5a4ryj!1tDAyg~e7ePVV55R%*|8@@GdKVmkzO>{3dV+D_ z+NQcd%e*7!oOAr5PMwrr29e#AP>kK$RB4NU`{X(q#n?^=N^H^19LAh)QD6Yk_L$S z;I-qA>pr4^%Lc$-g+bUyFb7BnB>u<+$$@Y`xAbxK-F#lJvi?1Oni2o2E64}X3s4gz z_NG37zF^=0=L6~$GS0Z>jl*o;(9kc&EcjaS$4nQ|zYoA`h5*0ptOCY1IR(Ws^;5-2Sj<{<)pe%qK04@NwG8Yogm<4$62(*B)=N>Wn0QL$5FR&(% z9H9OHxH_O_ceX_LQ(Z}u&|AxcUk^OTYrS-3IKxTo0szD2w3#0{F zkC1qvYroC`x%Mghkq>COfP03N39&|`{est0|3x))iHL&tlLow1#9R)^1L*~%1&{?X z47(m>pv3oAGsj#7e~s2nhqcb zuqM!WAh{sxgZi#_!t1-f@z;p%8)W;<-hp;1aDege4;<*9Ro&eec>tpiaG`e=1vsE= z@0D5I-ZOJN@Sx|`o|(Oj^YF5d0sG~w0fo>9hzFbpq#s}wfb~rS>jKmW^a08P@-bqs z`2gla!2#|Q5&qO0U{9d6pC4bN{L=4RgV#Hufpak74){kS2PFOm4xknob%1LE%7d%{ zx(-k-)bb$ufuGx5(1AC`fgK?(Hv0zKo!>VI@J9{|)HtA`4&Wdi01hDjJ9=j(4s7e0 zS>4t%ld`o(ruZ%0GxgluEz?WaE?1WqE(sjC3j^@iIKcW(H9$ed=mneyxjxjg0_H>N z7h~?j3?K*RK=uO72V^dQzmu8&Pyd}#bAC@~;1mp)t2o5^M-8BXYhP%9Q3sd@m;*%~ z5OtyCfmRn_4xr&jc>r|4?Tv6CHrT#G>|lEZ@n;S&{^SGw5&tX-WC7^|qyyWT0}AMX zvXwcYZs~5LZ0Ty9xVf8k@aC>IFMJ<3;NJ4;%0ds!IY4^A9DsFh$b;wyCjBAO0@Q@3 z>i~E@)qPwS0{-wfQkQza^qj)`$V=>%3ApwfIPv-y_#1QpJVE3@_57tUY$`I>WAo&)|7`-j*o`+)=d2iXx1Py>V)Xc~Y%fLQ?YAnJe$ zJ|J~K0WUxuP`7r^q-^eHqi*hMt!(OQeR^XT>#&VoY@YeLZ}}YL@yhZ-p!E-!qc4b>fILC>0g(gb-Vv{V!3EX=ytf#}&#>m_XDsz9A%E|S9w#((3WlKq z2M}{w|ET>q&P+e%!ACg=^4w&@@&a@Z>#Jx;J-&^0m_7+1Bibg$b@Db0Q?oie=Fz!bHGN~)Wuo>4yYSD zTc6+1$tvu}&emnV?`HA0-t&rS=+u?4C;S~@?K>Iqr^ivC1tJrGFSuyy--HLK0o)%l z?G5<3JW(6Ux{x?f-}S+Gzt_Wo10nWh;zAtM*kBlhzr6}s0DJ&BV5foy(4ZUuc@TVn z@}SNE(f|c>fXD*Gfi2y@3t(*OYNLV<0RC1Aa6kbLs6Pf-on9Yg`Py~tc^rRTpNnbe z*mYt1?w zwSejZz#e-8+#kUHAmsq85nX8*@W;AP4(tyg4~%_c6?{M$Ti>$MX12W4j02~lL0C|9PfPFyOz&d~&xVE8_ z&2#@Q+^byM>-^qHjU4O1+J68;g+Z8u58zSP0>}c)0TVyaG6DJlVK4n(_6L{;h(G%P z*9E8ngum7sU=GOrBJ2^O4yaHYR(hFhjUVn%67W}X2o9hQfDhP-EC61BHNimQfr%GD ze-M2@rM>`i0JETh1409+CV(se8o*wFKClV!$K#Kv1D!0td70<_SANf=h7K+d>7SQT}Jy;V`T_}2l=mX>h zq8@<$kjMh+7N`lp3slSkzyZ~e2UW}hFkb5YLSN>3U-o+d`{pnd7_|0v9x(ob114G! zjdcO%0OEnjg6s#V1CR+dA27)QTo;PkkotnC1Ec}02U@RK%LKrIG4)+uxIYirC&m;0 z4#WY#UvdEQAZ7un15^_VAE5rQx*NR!v!Lh;h&(9kLcl+>3cW#*1t<&3nh@(k%7d5# zV7yZA?PW22k?)(-&@l}3pYg{ddw}o(@&fV$gBPF=0Pb3C2= zS|IBJsRud-ur_$wp5Y7iTMmUf`Xq!pDG4K-)cE0!iW~+VKn`F{z#5?ELDL>F)dS=O zoCQz^xG%t20DD8&7Xl5?`vRH{ApY;Z{x@iH$=SwstF_qs6U8(A+8D72RIL6U*O@!E*3AWTQ9P9 zU&q&i|JQ_p_^Wt~!NFdD8epyiCV5~2a07h+*T2vJV-}!n0A3*T0M~;$2e3zI-Y1rx zz&=3zLDv`d|HC7l;t~HtBUuAL2MikE2tHtsUZBJYA7C9|9}qoa%!7~vY{3f*eF3Nm zaDPDbhSY7K1y~aR{+I(u2RI8rf3S=78~eN0uLF1aGa?#i%{r-}{duVWRH*~nk#zua zpCb;+0NUEe+CbEW=JvSsP-XkoSuy2dE+wN*};pP-XdC|I9IQ zjFVU5XlLc{C?~+*Sv@3u0I~r30M`Vl1NPJxU=GOMfW`r;4Y5B&S&%uPVof0Si@7dD zFEFbK34hW6>sP8>|ID?%uCIahUIFmG3q#WZ$pO*;s0jrApa)bJVt+tt0r3DdpVmI< zfXIdh9%wy6fj{N|$^z&Sqyv-%I15S+KrRe=(Q7<1%B5H0XcxfWS!E3%A5hT?;)M=y zO$a)`eF0VK0M-PeH^e<+-YYcCgWMY;9oUXNV(ts5#ytY+4Rp7D?e`J9=v=(W*T)19 z2X0T696%31Prz&-bO37u$pg>FXaMz!uum*>0PZQo z{0IFa|Cj6i92w&rkL#Z`fH;5}AawvWfO3H73kVK?7HIuJO#^7Z7=1wV0`3doK9TGX z;yw`#@&U|)m<77o#J|YgzbjuG6W~w*@V{mB0^k7V0qO}5{+tIj9nk6m_5#oXtu~}= zNSV-}2Ur(M4G?_bTp)D-`$K*%17BuN62n~b93AWW@W>b!1qbMWnm7t`0QrE_0ICVt z2e>!HS%7;(T1^0Zg?lLv68@YAxF*#02#ozf$O3rZ2;slAhfU9ydH(Oh_rx@`F9Y~z zU>2Orbph&t z74TP&jwSq6;sE&oWdTKI0n@~a#-#4j|y$^9f&xC-xRu?Fs6YK-11!9OkA!h>6fTz?0A`4O@Qh$*53LyiC9x?U^aj%H( z8Nl8U-9t$DV}F?L8Nl9P;=6$1t3C(N0Uz*!OXLNBJ>~$R1E>KsxGo?aAPq400`#u*=6+(F+XKK~!2ujV4`2;IAHbRbYr;_B1)K#nFM##0LLQ_& z0+9u%FCgw2;r<}!LB4ko_X}aby<>WB2y4S$ng8_r0>3IoZ~FTu2RL{E2TW>1)B!^t z)at^g*9Dpv$UYI^E&7AR1JN7scaC_~YdI0_*7A6`t8#ptn|f><;g321JkYZM=>YTu zFb{$bsHQ%EeF5MA_65)fpg+iag>W>#Z%FiqpXd?e{e!(;{NAuvz4kZx{m22x0>}Z@ z0Nn?q4xkrc7C;TqYXVUpLZ8@}2lPzHIsp3r>e%D;pA2_f4jfQ$fDfn!4FDZ*R*o2I z0_+PJdP7nJs5ij)i{23Sh{ZmU&H=h_1hRm(N5FZIYl5UViN)Lc*^>k8fCKjD4Yi@* z0`?5KHZX8N_64*a0dau)14jI@Ke!xUSMoZp>*RR1#1rry%7DLm95`?cb%1?9J!)DH zP)z_mLgoPL0CIr#iXjh>4&eO)&?7dh3*mkNt_k%1AlC%g8$urldmY#EF8&PZ1%ds~(RfXw^#F5#`vQ7@ z5cdj29z+kI9H4>^h%AUYfEvJq?j1Aa!F>blUb%nqSI*7r{9X8WfItT}X#D})H$*P5 z2A~)0K%TtL-}$0HD-m7;3iUu8;J|Fi0zZ=vh`tc^2*q9@?io{mka|Ou2kD*xdEbyp z7Jxj!_YFZFgqpDCi$14+($`~_hnip@XaV$#QGXoy)*|V`1O} z=cq@l?Gea4!1aK3?^uZaxws*3_HW1hQ|9*Xb{&UCIhQ;f>NF}L)G>*AgXVpK5c|WR z1zvx*>-z8czW59r3bprvdk1^L9>MhZVGa>c6V^C9;`R5iUi_K;_Z@$S8Q7^mNoy7U zh3My&c&?vXSp0YXx1JAkJPB`!FJg=T-st%Sv!8EK$>jIlG&>Km$Y=cgBMZ~>3ufo= z)SV4q4_|I_e$VXuCY)z6e7*Vk1+&lNxwYZz&Cl`sji1MJOT*WjpX2i}ejd*)3}0`4 zj@M)SJe>#Q2l1b(nx8B9VflH$p3W=b2jL%Jub(sW^sDLf&pD@`XZXDFJOq9&{Sfha zIOqA$&lyi~z7wA{d=Kdgd~7GcVR~N4*zol?olVc-%;fX0^L!}%Fzx3n@;Qs= z^T;Atd;vedd%$G=$LBYJxyJJgz)a&gT{?Y$zdi&3Qg;T+>j?p-fHuQ7@#o?HaE>3O zbA&P&0jr_(g-pI zOFGA=!N1gkekz?4lb$#aW`e_)^XG$k0X*}Zo)!H*@$)WdzaJjJRp{p-aBfZK`tyZ9 zj|3m(^9%6E*>H}(IUk+#_2M(DL|4V$`Y3;09~=Qk1Wo%-kR;Wu8;&mZA8;%ymKI*{fB09~!lF(w9&`@>iw_C6&X&qn7+X47 zDw~5Wm5m)Ol?^a{>|m*`Z*QrrYiFUX#Q~4`^^thr1B_rhYPb3oS*bFdlaU=z+kkfkc-K%qHkZ=tN~0M{@2 z{RfB99KijcI0tb3I0u8Xsx%KY2QUxX9M~vu{WvDQ>~+iUo6yktKFk5!CoBH0mNp0Y z_fy>9by6lg;OiH2FwQTVvbU$zv*tjR9N5yyLh!&s@<3S+*A9G84swlavgg4(fa|Au zcsdVa`@;42wK*-X<7JO<{cyh!zLs3ffe8=f-h@V7&< zp+2awy{+{*04>n;;5l<3HDMEILp<#N#KS(IJ_o%2M|vQ60PBD?L0b!Q4qo~CV;af( zC3qdkIUqeiO%Uq=uiu;ps10#&{U&puuLbsnXYc@h0p}rpl#84L0}t?i7~%o01=d9J z2GT_1T6pE_pM=*h=KxlSz)d;O$6ASl5!>5}c>wFd zpa-UFp{tc@)PpVXH+vFbKlsTxfc1d)1JN89^Z@nHR1;r${qx=#&w*hruqHMnP2|^0 z2p$;c0R1w)ueD(g3~Ry21CzC2spW&MU98lEF|JAi+$$ST^FV7sXd=x4>4BaRgeDHL zRY4a~4_+C6`Fbi_Bb3AaZIna(c@A(b90V;OO&}hyCOk_IcHs4o z%La3hjpqPfJ3?I0*8=(iRe3Y?Q+= zOy)pp0(t}T0M-M~fhA;RjR)$^?r{C#?s5*)1mc3W7F6Ux0^BFX-YDh(?u`<9fWGj` z{GST=Az;o5mEAP=U#Z0?ia zhu1$XkmtaJ2gCsb4}=~_Z@@Xg$H(CMP3HhGeTE+3THw5Fr63RX!1>|G>`%@CYoeN9 zq6aRjVGi!V94vr+p;xYdQ^qMArg`EzP;ouL9H@r1pyFE4*MrF%ymtOyUg%Zw^1^(>FE7Zq9md?t z3-Uhqy%dbr=(2T!I1bzwU+ayA1EYo)3>S4D-mZ}EtEi(hg z&+s0@@IJ$Eo#un)fUjSlhkQRg^ZFy)@cL=s9HdG;AYb4)kea~0V9-SH$1^i>t276K z1Cj@wI-O+;^$dZ5Bu_|w-9*WMT3YYDDhAMhURX7d2&fIo8qIG}Oi?&SquPEVVI z)W~c~s$mXNNe@5|%yYv>6xldBFFjg}G?-%BcddVXFD!WW*x z1JVQZ1{h~&<$*cKqngfv)Pvl5KERBi`J>25fAad%7JE4Y_K*0zw)j2P#9ROu;Mz<% zf%Cw6V7fLIJ@xvd+||@5;6P+HRqz1k!Ker54XVhAtOdY>6dZ8<=kWUf+#CoVU{2!e zhkWp-^$*@(Bv!kASO@eN`GAj&*N=~h3+8R-7T98~gHC?U+Gal%g_yX6@>!06yQ(U)k9&j%7c~CV@ zn68U2%{g#-f`_8b0rLR$Kytz8jo=F+Cqcb{nur6hU(NyWK$U9&bP+TGuV0@7nH4D~ z@f^I!^%qX(_Z!3a8x(`)0pE8Bc|f{A>%x>1JQq9<)6K8{)P(HHsR_6hk5DhDG9y9FkZ%5bo_7w{f0X8c-<$hc z^FTa+c@R2jq7TS*(DB{`SR`m{r`8q_dWOToacGo@ELpWfd98gd4Tp1^aqj$m>(wd zL|+dEF*fXn|3m+-dB8T{`UBR3{5-fTnJezuwD6wLmRf%!w$xhnALY+HkRz%KtOr^b zTpf`5;PZlGXZeEgIeYJTv-cL%$j-f3) zIJjwHS7=MEzY&xDY>BzZc3{5C-;xI|{u*PmNggD5;ra&cAIcGTK-y9gzn3w*<Ov){56ly*3w93kp=|Bqw$LWumjroa zaqMj#bgA?HY(wj9_FJp7DtexNKvx~`=#ORc~7&*AL{5!e+^Y?K* zU>t9qQA*mbp_q>X7-j2TEywG?4t@&g1 zg?WH{a{YyG3p$_1yOp$u3iCjZ6HxwJ&uB)uAIRjv7Z8`#)dyE6hS5jdi=!9yxbXeg z;(H>Nqwhab^+5Xr|4t!!aKikTGTXM~WPI9fOMZmwcftP)58PjFPnUJx zXZ2rWoN8adc9LleE)UQi;2R4St`0=nL`Kp674+ zS{U1r^(Kn%9QOx#d2mAfPy28@pM5*>v5qYds?`J62JS7tas0O!@5l$nbaeGV`-Hep zlyO1EhBt!$NzCIQ&Z+hXNn7ya0>%c6e{PP1b3^5SOYi&^#2UE~xT$9mcXY?iy`6t} zJau;}?sf5BeIJ_i2a*Ss{5(M0zNkE(OS=>@6g=-40X3Xt~Q+qySv?@FhM*uejdL*v6U zPQ1p0PqhWf2gLv8S@OWfg)gSl3qM11txvI(z)KKM8pL67aT%>0Fcu?Y?~Ne_-(Q7k zRQnrxsq>+Wb%Ze$Ee|AC24iSSoRqd#5F_QjudZoXiCAg5b71(s0LPaRA6e^x+gi1XFA6fakCtIIMkd*Es6K<<z z3oI_5#^7KbaP@$B@R3@!K`U`Pb(1BA2DS4gevZUY(^v^w2P{5<#7uNCb6-WQ%xQ^} z1?{1~f&R=mv6N1Kj&*=Kl)f&YFVGkik`FHaNDzw-eF577xE95E0IjGw&<#E6^dh}> zytD(S4arymt{q4WVaAPQ+)$SX#}F^_Ew%Evk?*0)w+IJgdIB4xnv6aVoIbzR1Iq&& z7dS6)a|7)QG!KRmhcCB3hhEkPB({!dCp)b?Xk=+$pgP&m#?*MaE`B28B}pDIcCNzJy308HzqheTFD2?18EDc4xlaU#jz;Q9%xH1PqgKM6($~z zc_8}1K8{4vAF57t(iccQX#JP3a5B9WmWZ#?o+lsXm^b_J@p@fqKyTwxaZ>;yUWU`*0w> zmHO}d#4rznF+p(EIxf73d2+eP251bnL09a@$ODNtp|NI?xRcTsP)nXVLDCl_bEBXy zc&;e@sl5JK#`$9&h)!QYJqYt)Wyb-`5v$^rpsjblXl;wmHgxt?Q`NN9r5{0=&kmy6!?&7w05ZOKGa z)U-sy{?Nsgk#Ui6<(LPEA#--E=S=1I$b$<|2YwahL7>x%JoqX4!)RZk==pm#be#ds z?bk$WSM|1C+$D>(Vf~@=rw*|?$0n!Ja;nB zfYxR+{C_w4!VS>Y+ix*9FfV|nX1YI2=7$&)CiT3@*qC<@{4S#%+z9>3erOd|?d$UH z&$|Xqxh7}}{yyr!dW?ztR8x|9keVCaFzb8J4Q$Fw3XIfobeO+Ue5SW&bWV= z_ai+yBYi#hcf%h%dSKazoQL|xI z<$Rdi&_Ard95&t>d8=G|OKBUZ#sxGjKG}ORdE6D#wlFTg`e0fH;O{#hsAXU}4xYO& zJYDd0sbgUp7KslH&%cG2?RZxq2Q$wHYE*n9;NMm&2m0_Ol*c#8!S~wJDgA-a2Wn7U z)7B7fjRoa-Q!?LoS`)hdC1qiCiM)E&DdS0bK7GI=x4LB7A{iY4(GaNW!=Z*M4}Pp1 zIN?INwLH%Urv089PuuB>;{iwIKy3)COXPu@K1!ei5OCmQzOUCr(Yn-d{tL%lIBd#s zHx6H1m$Xf@P6?k`xy*$=SUEfbUzEr0`P;_P%W7F@U252Vd3PW;7w^wjmrScb_7>2l zt#68W>46Wzy(I6_mxJS?gNvNv-A3i$v{@28j_YSMY`?{=FkY$okXH`$LpjyW0hgFM z8_F9L4z2eAJZkdD$r&V%JmC(feBjy$+5~kJZkXAy{mKoExv{#Qqx|5oZ)Kf&8hlv# z;Pn9Z{maFKVu$i9C-DiVf!~-G+Q{nMdje@5^VRp=3F0~-ihe` z2$wnHF~>fD&u_fdgtN+WXx#pQryThp?LphL`oQwQx=6rFPM3q{<|`MOeB_B|ZUqn5 z@sJZAph-Y|j@SokGJLDi{xi+7jeH3DCHlaFyjt@iYU{C6bfpc$tI1nJ3)b zxExYk%nHikxaSq$#W~oF~$+_1u}IhryLrxA9&DK z;CJ2$EaOc$_8O)UyixKccfPb`QD%*R+^E=xfHUpe1L_mFp*+Y3Q!ZSH_fN_pC3hphy$S1zIa3AWA@0PRo0e<=Vq<)Ozb2%)7LE(v!7vp`HNH{?WFNz#Va^pNF%JE>V zJ>>bY`?J;aADE-lVgIQ2;eKLMaS)40+ruL%ht;9|;5a#+SL_41O)0Ktn%CvIJnDn- zxe}f;xSdt=9~|u_a5Hu#{0wKm_k+Hq{McIF5!tW&oWKY8VZ0pUtQtQJ+$`f|c}`MM zIY7SvJfy+!S$Tg0>(iHTO=v%HQ2BoFI?7}eT%%JgEzdLZT(f{*ME-H$!ywv3#3?df zRpf&&hnK&*Y2lyRbBfO3Mw}(st&lh5agF(Y!2ZiDJ;nWLIVtwjW1z_e04GAYK@*M} zM9tGF{|7wYUXMW|4$U7{9;q_f+T$@k4!0-ujCIX0yf*g9**H#{yQj(ir8fztkhsEp z?vCSN2-o*vwC`D#i4J$C^^W$Fqmpp75?+G(FfI0jd-Ki&BkO!f{1``hJcf3173%-n z(*3{jObW|E#|`ykOL>~?U(yQR#FL2+OOK))9>wwZusauPk>tO_ge(5h^}p60v_8og zqWq9)v7fd8pL;TnD{y=eSj{(^eYMUBu3PYnuKz-N(YmB(^1Y_n{#texeecUGz~lNp z*nF_|a9@4(2WxdRfwg-J&MigHovQ2k*lPAy?udP;S$}{HIt$q016*%}4`01ydFR}z zvNbOq#mVR4!_5b_1y`T$>p7N}hF#mRqT@`gnI0nEkB9SN=Pk>-WZ%YqHalz0bu&%_F6k4%>fQi+-dQ`YI;mVuVmD~DciQ+hl7yd^K4$8Mb63|!4_kGa0O zeH_@jJ&#`1whkD}bAT_*_yUae3LJ+cA0m9U_u&x6j|?soIEkK(@1OUAYVSEbxyKP_ zeAtC@SdeEsuK^Qsp5S5xGYvcpaPx+d1U_&a7||DimA>`iRn71EpH(f*Md{Rg9e9Vu zSS#H}ENp=HQB1t^;Z}zQCm%rCLvPo2KDoRz7oQ1y)2)VUA>LJRJ&O6BKp803cTMYr z!}&f9taDerwx)jvyv9ke|2e_031%nu!LW<0OG$h7K0MXGJch46{cm$yu+Q`&F=z)t)gf{B7gb=HCH4<{9weWfvKzz}{H z_7~3Mfg8MzxIx9tDSlY+a@17~u*23C&?oJjoR!t@0v_^ol*0>(gCkFX`#19jKfQ8p zZhvp7?cUIJ^79)`-XXX@tw#<6ZCEdD&wgyXZsr=hcdF08@|^}BzTgVV1%-{2KpPqN}`GSn%c|`5#8156h zI);|%d7xWRX&wC?Vpm70eF!VvfMK-^;Wh;CX&Q*nE%F)P_w#zC)ZWkEBkGf$2fAq& z@LtRGJlr=VpGPVqun$I5DmW9TRmSli93H2IsZ|=Mg}wLBBW}gGa0^3x7BEeW+e1tf zWA!jj5Ahp}#lbiv8k5H1u(-!g{F32*1oP864(!#Z@%XC$uy;G|u>hRY1~w3vMEz&6 z0ek*w8+<$%!|zD^6NjHt+)+)vFvBE>4Gv#qHgH~T8q{eU1WP3GNT{=|b0fiW#WvJ@ zzQzyG{rGe~gt(x*eDLuwFs_>3d&-8I&)0F07@4dMtP`fupUnqgVL}`X_xu&Jpco#> zhnY2>Z~OXr`5^HEpp9*qkhBfNMrk|%hhvd^ATG^eq55Xkd_Fb2EuKNz29^i)>WL>X z8;B#YvY;lrU?5C~o;VcdgJ9#thM!ig{P@yv4#dkyS){NH)C$kDLGXHL8={9!97e{5 zxnszOn(dD`g+!-Q_hUt~8GHJ~CUEae_RUPA+i5a8EW(jm{?+4n9YyhSKHWWS|x_M1l z-#r({daRKSa-CH5b-Qm5pRXFCPEXmi)&1UbxG!$H;i`@6FbTQO#~STw>?iHdXq@U= z?O|xU>PQDeWPj53>Mb9r-Rf-MzOd~@T3M(@uV_?fo{znrHmt{t+B&h{YfSbTxp%tE z@<6pTu}2#2X}Nr0o$xxD9v=|o!<`E=&u6-L{w^H4=FT(L=u&pvX3yt7r?-K7{4({(>826^;ecoc*efQ4YJo1+7R0@#QMQ|oR(suDH__~_VsdY_}r=EXq$J2&$Yj? zH}MYL>w@pH{}AVe=12J){$AFTxrQlg;ck!4?Q21=?lnuZ(KGf)1~Yqa$sXu9Y#@xh z6s@C%Hn6U4IiBY)U9Wop(cak)P%m!B;dR}-jkGPB50m$Q+mg3p&t*Ss*oVBJ2H(4& zF_u{y)P0sz=pOuaI?YBtV|{r%wjs)g%(_0-3)XY}&#gI; zdk^i2u2n_PgvP{btQS9sb&U^$M|?{9cUa^8eAWiZhjG-?NPiaVchCsoTDEEdFs78t z2kJj$R;{q+y9jF&W8|_@;{$7SqyKwl+oNAu({csYs!vVZQtdO|+o{o!tVcT=lC?u> zP;`DQOap5?S8&~#>myuqroM!%)nc6!Yt3U1f28>@!`~PEjd$(^cs?{T=5pP`+wdva zpzFxyqoU$rdv0bb#JU0bKRc02Gn(c4V#Ld8D7VlY8!0$HrFo1 z2F88EA({lJ3#<<=A0D*(@ScAP)+t8GspDFgtT$qvi|eJR3!*Ck8+z^cwa!?>It4cD z3T@z8sOdr=A07q=-mgnwt>kj7l?cz7YYbd_rVU(o=6WaU!Y{#TkLE(PY`|Jt7i@Ss z$A%qP1B}wby4eFH_vLj$o~-@V=t-j^{c!j&rbHa}nyo=kSiWGDwT77*!6gVpJXn*$k@+BbYZ1^cSB#juB}`$Xhh@qK*9YF&?zbpWmba1DZdmuuU;ANVJK^8J?Y zbGFX$*hh6;foaHlG~XSW2H#u%xji$ll62e9uhM z=#Y0hrtvuJAZLm1k&NHu(#Y5^?`fQq^WA7|yS$eX6Z>tvkKtV`GfvWJyzlhjeMjaT zGOxv)R_66cgYPwbw{vOu`!NSvjJfhU%+dGoodt0aE@N8qp1`@WOM~wPK8-sUCimap z^HG_5V-5j480Y%`#rtKRO?_;a2IsUv8ZYrT{D=AK+oL(_)}EtChw%(#jw&{7=?3$$ z_#ft4dvI{>JA(Tjf=_dFZi6&v*S+QH_itPJUd+ob!95;dAoC=fOKtL0{P-Yq%^8J2*4@KX(k^@(_*#rP7?fQfWpR Ry%fG0#(4zC*kz^C{{!SbKw /// Class representing an each item in the tree view, each one a Registry Key; diff --git a/src/modules/registrypreview/RegistryPreviewUI/MainWindow.Events.cs b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.Events.cs similarity index 88% rename from src/modules/registrypreview/RegistryPreviewUI/MainWindow.Events.cs rename to src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.Events.cs index dadcdd2a0e..74726a651a 100644 --- a/src/modules/registrypreview/RegistryPreviewUI/MainWindow.Events.cs +++ b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.Events.cs @@ -13,33 +13,17 @@ using CommunityToolkit.WinUI.UI.Controls; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Data; -using Microsoft.UI.Xaml.Media; -using Windows.Data.Json; using Windows.Foundation.Metadata; using Windows.Storage; -using Windows.Storage.Pickers; -using WinRT.Interop; -using WinUIEx; -namespace RegistryPreview +namespace RegistryPreviewUILib { - public sealed partial class MainWindow : WindowEx + public sealed partial class RegistryPreviewMainPage : Page { - ///

- /// Event handler to grab the main window's size and position before it closes - /// - private void AppWindow_Closing(Microsoft.UI.Windowing.AppWindow sender, Microsoft.UI.Windowing.AppWindowClosingEventArgs args) - { - jsonWindowPlacement.SetNamedValue("appWindow.Position.X", JsonValue.CreateNumberValue(appWindow.Position.X)); - jsonWindowPlacement.SetNamedValue("appWindow.Position.Y", JsonValue.CreateNumberValue(appWindow.Position.Y)); - jsonWindowPlacement.SetNamedValue("appWindow.Size.Width", JsonValue.CreateNumberValue(appWindow.Size.Width)); - jsonWindowPlacement.SetNamedValue("appWindow.Size.Height", JsonValue.CreateNumberValue(appWindow.Size.Height)); - } - /// /// Event that is will prevent the app from closing if the "save file" flag is active /// - public void Window_Closed(object sender, WindowEventArgs args) + public void MainWindow_Closed(object sender, WindowEventArgs args) { // Only block closing if the REG file has been edited but not yet saved if (saveButton.IsEnabled) @@ -69,13 +53,10 @@ namespace RegistryPreview DispatcherQueue.TryEnqueue(async () => { await Task.Delay(100); - App.Current.Exit(); + Application.Current.Exit(); }); return; } - - // Save window placement - SaveWindowPlacementFile(settingsFolder, windowPlacementFile); } /// @@ -87,20 +68,20 @@ namespace RegistryPreview visualTreeReady = true; // Check to see if the REG file was opened and parsed successfully - if (OpenRegistryFile(App.AppFilename) == false) + if (OpenRegistryFile(_appFileName) == false) { - if (File.Exists(App.AppFilename)) + if (File.Exists(_appFileName)) { // Allow Refresh and Edit to be enabled because a broken Reg file might be fixable UpdateToolBarAndUI(false, true, true); - UpdateWindowTitle(resourceLoader.GetString("InvalidRegistryFileTitle")); + _updateWindowTitleFunction(resourceLoader.GetString("InvalidRegistryFileTitle")); textBox.TextChanged += TextBox_TextChanged; return; } else { UpdateToolBarAndUI(false, false, false); - UpdateWindowTitle(); + _updateWindowTitleFunction(string.Empty); } } else @@ -155,7 +136,7 @@ namespace RegistryPreview // Pull in a new REG file - we have to use the direct Win32 method because FileOpenPicker crashes when it's // called while running as admin - IntPtr windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(this); + IntPtr windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(_mainWindow); string filename = OpenFilePicker.ShowDialog( windowHandle, resourceLoader.GetString("FilterRegistryName") + '\0' + "*.reg" + '\0' + resourceLoader.GetString("FilterAllFiles") + '\0' + "*.*" + '\0' + '\0', @@ -173,8 +154,8 @@ namespace RegistryPreview // mute the TextChanged handler to make for clean UI textBox.TextChanged -= TextBox_TextChanged; - App.AppFilename = storageFile.Path; - UpdateToolBarAndUI(OpenRegistryFile(App.AppFilename)); + _appFileName = storageFile.Path; + UpdateToolBarAndUI(OpenRegistryFile(_appFileName)); // disable the Save button as it's a new file saveButton.IsEnabled = false; @@ -199,7 +180,7 @@ namespace RegistryPreview { // Save out a new REG file and then open it - we have to use the direct Win32 method because FileOpenPicker crashes when it's // called while running as admin - IntPtr windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(this); + IntPtr windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(_mainWindow); string filename = SaveFilePicker.ShowDialog( windowHandle, resourceLoader.GetString("SuggestFileName"), @@ -211,9 +192,9 @@ namespace RegistryPreview return; } - App.AppFilename = filename; + _appFileName = filename; SaveFile(); - UpdateToolBarAndUI(OpenRegistryFile(App.AppFilename)); + UpdateToolBarAndUI(OpenRegistryFile(_appFileName)); } /// @@ -225,7 +206,7 @@ namespace RegistryPreview textBox.TextChanged -= TextBox_TextChanged; // reload the current Registry file and update the toolbar accordingly. - UpdateToolBarAndUI(OpenRegistryFile(App.AppFilename), true, true); + UpdateToolBarAndUI(OpenRegistryFile(_appFileName), true, true); saveButton.IsEnabled = false; @@ -305,7 +286,7 @@ namespace RegistryPreview } // pass in the filename so we can edit the current file - OpenRegistryEditor(App.AppFilename); + OpenRegistryEditor(_appFileName); } /// @@ -315,7 +296,7 @@ namespace RegistryPreview { // use the REG file's filename and verb so we can respect the selected editor Process process = new Process(); - process.StartInfo.FileName = string.Format(CultureInfo.InvariantCulture, "\"{0}\"", App.AppFilename); + process.StartInfo.FileName = string.Format(CultureInfo.InvariantCulture, "\"{0}\"", _appFileName); process.StartInfo.Verb = "Edit"; process.StartInfo.UseShellExecute = true; diff --git a/src/modules/registrypreview/RegistryPreviewUI/MainWindow.Utilities.cs b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.Utilities.cs similarity index 91% rename from src/modules/registrypreview/RegistryPreviewUI/MainWindow.Utilities.cs rename to src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.Utilities.cs index aada6f1b5e..a738b8cc27 100644 --- a/src/modules/registrypreview/RegistryPreviewUI/MainWindow.Utilities.cs +++ b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.Utilities.cs @@ -11,18 +11,17 @@ using System.IO; using System.Linq; using System.Reflection; using System.Text; -using System.Threading.Tasks; using Microsoft.UI.Input; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Windows.Foundation.Metadata; -using Windows.Storage; -using WinUIEx; -namespace RegistryPreview +namespace RegistryPreviewUILib { - public sealed partial class MainWindow : WindowEx + public sealed partial class RegistryPreviewMainPage : Page { + public delegate void UpdateWindowTitleFunction(string title); + /// /// Method that opens and processes the passed in file name; expected to be an absolute path and a first time open /// @@ -34,7 +33,7 @@ namespace RegistryPreview long fileLength = new System.IO.FileInfo(filename).Length; if (fileLength > 10485760) { - ShowMessageBox(resourceLoader.GetString("LargeRegistryFileTitle"), App.AppFilename + resourceLoader.GetString("LargeRegistryFile"), resourceLoader.GetString("OkButtonText")); + ShowMessageBox(resourceLoader.GetString("LargeRegistryFileTitle"), _appFileName + resourceLoader.GetString("LargeRegistryFile"), resourceLoader.GetString("OkButtonText")); ChangeCursor(gridPreview, false); return false; } @@ -53,7 +52,7 @@ namespace RegistryPreview ClearTable(); // update the current window's title with the current filename - UpdateWindowTitle(filename); + _updateWindowTitleFunction(filename); // Load in the whole file in one call and plop it all into textBox FileStream fileStream = null; @@ -204,7 +203,7 @@ namespace RegistryPreview case REGISTRYHEADER5: break; default: - ShowMessageBox(APPNAME, App.AppFilename + resourceLoader.GetString("InvalidRegistryFile"), resourceLoader.GetString("OkButtonText")); + ShowMessageBox(APPNAME, _appFileName + resourceLoader.GetString("InvalidRegistryFile"), resourceLoader.GetString("OkButtonText")); ChangeCursor(gridPreview, false); return false; } @@ -600,7 +599,7 @@ namespace RegistryPreview { AddTextToTree(resourceLoader.GetString("NoNodesFoundInFile"), ERRORIMAGE); - // ShowMessageBox(APPNAME, App.AppFilename + resourceLoader.GetString("InvalidRegistryFile"), resourceLoader.GetString("OkButtonText")); + // ShowMessageBox(APPNAME, _appFileName + resourceLoader.GetString("InvalidRegistryFile"), resourceLoader.GetString("OkButtonText")); } ChangeCursor(gridPreview, false); @@ -614,7 +613,7 @@ namespace RegistryPreview // last check, to see if anything got parsed! if (treeView.RootNodes.Count <= 0) { - ShowMessageBox(APPNAME, App.AppFilename + resourceLoader.GetString("InvalidRegistryFile"), resourceLoader.GetString("OkButtonText")); + ShowMessageBox(APPNAME, _appFileName + resourceLoader.GetString("InvalidRegistryFile"), resourceLoader.GetString("OkButtonText")); ChangeCursor(gridPreview, false); return false; } @@ -646,34 +645,6 @@ namespace RegistryPreview registryKey.Tag = arrayList; } - /// - /// Adds the REG file that's being currently being viewed to the app's title bar - /// - private void UpdateWindowTitle(string filename) - { - string[] file = filename.Split('\\'); - if (file.Length > 0) - { - titleBarText.Text = file[file.Length - 1] + " - " + APPNAME; - } - else - { - titleBarText.Text = filename + " - " + APPNAME; - } - - // Continue to update the window's title, after updating the custom title bar - appWindow.Title = titleBarText.Text; - } - - /// - /// No REG file was opened, so leave the app's title bar alone - /// - private void UpdateWindowTitle() - { - titleBarText.Text = APPNAME; - appWindow.Title = APPNAME; - } - /// /// Helper method that assumes everything is enabled/disabled together /// @@ -861,7 +832,7 @@ namespace RegistryPreview } // if we got here, we should try to close again - App.Current.Exit(); + Application.Current.Exit(); } /// @@ -939,7 +910,7 @@ namespace RegistryPreview fileStreamOptions.Share = FileShare.Write; fileStreamOptions.Mode = FileMode.Create; - fileStream = new FileStream(App.AppFilename, fileStreamOptions); + fileStream = new FileStream(_appFileName, fileStreamOptions); StreamWriter streamWriter = new StreamWriter(fileStream, System.Text.Encoding.Unicode); // if we get here, the file is open and writable so dump the whole contents of textBox @@ -980,85 +951,6 @@ namespace RegistryPreview ChangeCursor(gridPreview, false); } - private void OpenWindowPlacementFile(string path, string filename) - { - string fileContents = string.Empty; - string storageFile = Path.Combine(path, filename); - if (File.Exists(storageFile)) - { - try - { - StreamReader reader = new StreamReader(storageFile); - fileContents = reader.ReadToEnd(); - reader.Close(); - } - catch - { - // set up default JSON blob - fileContents = "{ }"; - } - } - else - { - Task.Run(() => SaveWindowPlacementFile(path, filename)).GetAwaiter().GetResult(); - } - - try - { - jsonWindowPlacement = Windows.Data.Json.JsonObject.Parse(fileContents); - } - catch - { - // set up default JSON blob - fileContents = "{ }"; - jsonWindowPlacement = Windows.Data.Json.JsonObject.Parse(fileContents); - } - } - - /// - /// Save the window placement JSON blob out to a local file - /// - private async void SaveWindowPlacementFile(string path, string filename) - { - StorageFolder storageFolder = null; - StorageFile storageFile = null; - string fileContents = string.Empty; - - try - { - storageFolder = await StorageFolder.GetFolderFromPathAsync(path); - } - catch (FileNotFoundException ex) - { - Debug.WriteLine(ex.Message); - Directory.CreateDirectory(path); - storageFolder = await StorageFolder.GetFolderFromPathAsync(path); - } - - try - { - storageFile = await storageFolder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists); - } - catch (FileNotFoundException ex) - { - Debug.WriteLine(ex.Message); - storageFile = await storageFolder.CreateFileAsync(filename); - } - - try - { - if (jsonWindowPlacement != null) - { - fileContents = jsonWindowPlacement.Stringify(); - await Windows.Storage.FileIO.WriteTextAsync(storageFile, fileContents); - } - } - catch (Exception ex) - { - Debug.WriteLine(ex.Message); - } - } - /// /// Rip the first and last character off a string, /// checking that the string is at least 2 characters long to avoid errors diff --git a/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.xaml b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.xaml new file mode 100644 index 0000000000..f5e0c6ee1a --- /dev/null +++ b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.xaml @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.xaml.cs b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.xaml.cs new file mode 100644 index 0000000000..0813a6748d --- /dev/null +++ b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewMainPage.xaml.cs @@ -0,0 +1,55 @@ +// 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.Collections.Generic; +using System.IO; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.Windows.ApplicationModel.Resources; + +namespace RegistryPreviewUILib +{ + public sealed partial class RegistryPreviewMainPage : Page + { + // Const values + private const string REGISTRYHEADER4 = "regedit4"; + private const string REGISTRYHEADER5 = "windows registry editor version 5.00"; + private const string APPNAME = "RegistryPreview"; + private const string KEYIMAGE = "ms-appx:///Assets/RegistryPreview/folder32.png"; + private const string DELETEDKEYIMAGE = "ms-appx:///Assets/RegistryPreview/deleted-folder32.png"; + private const string ERRORIMAGE = "ms-appx:///Assets/RegistryPreview/error32.png"; + + // private members + private ResourceLoader resourceLoader; + private bool visualTreeReady; + private Dictionary mapRegistryKeys; + private List listRegistryValues; + + private UpdateWindowTitleFunction _updateWindowTitleFunction; + private string _appFileName; + private Window _mainWindow; + + public RegistryPreviewMainPage(Window mainWindow, UpdateWindowTitleFunction updateWindowTitleFunction, string appFilename) + { + // TODO (stefan): check ctor + this.InitializeComponent(); + + _mainWindow = mainWindow; + _updateWindowTitleFunction = updateWindowTitleFunction; + _appFileName = appFilename; + + _mainWindow.Closed += MainWindow_Closed; + + // Initialize the string table + resourceLoader = ResourceLoaderInstance.ResourceLoader; + + // Update Toolbar + if ((_appFileName == null) || (File.Exists(_appFileName) != true)) + { + UpdateToolBarAndUI(false); + _updateWindowTitleFunction(resourceLoader.GetString("FileNotFound")); + } + } + } +} diff --git a/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewUILib.csproj b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewUILib.csproj new file mode 100644 index 0000000000..9d20a7c64d --- /dev/null +++ b/src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewUILib.csproj @@ -0,0 +1,69 @@ + + + + Library + net8.0-windows10.0.20348 + RegistryPreviewUILib + true + true + false + false + PowerToys.RegistryPreviewUILib + + PowerToys.RegistryPreviewUILib.pri + + true + true + + + + + + + + + + + + + + + + + + + + + true + DEBUG;TRACE + full + prompt + 4 + false + + + + TRACE + true + pdbonly + prompt + 4 + + + + + + + + + + + + + + + + Always + + + diff --git a/src/modules/registrypreview/RegistryPreviewUI/RegistryValue.xaml.cs b/src/modules/registrypreview/RegistryPreviewUILib/RegistryValue.xaml.cs similarity index 98% rename from src/modules/registrypreview/RegistryPreviewUI/RegistryValue.xaml.cs rename to src/modules/registrypreview/RegistryPreviewUILib/RegistryValue.xaml.cs index 161e9cbedd..3e0d16c932 100644 --- a/src/modules/registrypreview/RegistryPreviewUI/RegistryValue.xaml.cs +++ b/src/modules/registrypreview/RegistryPreviewUILib/RegistryValue.xaml.cs @@ -4,7 +4,7 @@ using System; -namespace RegistryPreview +namespace RegistryPreviewUILib { /// /// Class representing an each item in the list view, each one a Registry Value. diff --git a/src/modules/Hosts/Hosts/Helpers/ResourceLoaderInstance.cs b/src/modules/registrypreview/RegistryPreviewUILib/ResourceLoaderInstance.cs similarity index 77% rename from src/modules/Hosts/Hosts/Helpers/ResourceLoaderInstance.cs rename to src/modules/registrypreview/RegistryPreviewUILib/ResourceLoaderInstance.cs index c7339998a8..bf65224b8d 100644 --- a/src/modules/Hosts/Hosts/Helpers/ResourceLoaderInstance.cs +++ b/src/modules/registrypreview/RegistryPreviewUILib/ResourceLoaderInstance.cs @@ -3,7 +3,7 @@ // See the LICENSE file in the project root for more information. using Microsoft.Windows.ApplicationModel.Resources; -namespace Hosts.Helpers +namespace RegistryPreviewUILib { internal static class ResourceLoaderInstance { @@ -11,7 +11,7 @@ namespace Hosts.Helpers static ResourceLoaderInstance() { - ResourceLoader = new Microsoft.Windows.ApplicationModel.Resources.ResourceLoader("PowerToys.Hosts.pri"); + ResourceLoader = new Microsoft.Windows.ApplicationModel.Resources.ResourceLoader("PowerToys.RegistryPreviewUILib.pri", "PowerToys.RegistryPreviewUILib/Resources"); } } } diff --git a/src/modules/registrypreview/RegistryPreviewUI/SaveFileName.cs b/src/modules/registrypreview/RegistryPreviewUILib/SaveFileName.cs similarity index 98% rename from src/modules/registrypreview/RegistryPreviewUI/SaveFileName.cs rename to src/modules/registrypreview/RegistryPreviewUILib/SaveFileName.cs index ce29f48d1d..d019d29c6b 100644 --- a/src/modules/registrypreview/RegistryPreviewUI/SaveFileName.cs +++ b/src/modules/registrypreview/RegistryPreviewUILib/SaveFileName.cs @@ -5,7 +5,7 @@ using System; using System.Runtime.InteropServices; -namespace RegistryPreview +namespace RegistryPreviewUILib { // Workaround for File Pickers that don't work while running as admin, per: // https://github.com/microsoft/WindowsAppSDK/issues/2504 diff --git a/src/modules/registrypreview/RegistryPreviewUI/Strings/en-US/Resources.resw b/src/modules/registrypreview/RegistryPreviewUILib/Strings/en-US/Resources.resw similarity index 100% rename from src/modules/registrypreview/RegistryPreviewUI/Strings/en-US/Resources.resw rename to src/modules/registrypreview/RegistryPreviewUILib/Strings/en-US/Resources.resw diff --git a/src/modules/registrypreview/RegistryPreviewUI/app.manifest b/src/modules/registrypreview/RegistryPreviewUILib/app.manifest similarity index 100% rename from src/modules/registrypreview/RegistryPreviewUI/app.manifest rename to src/modules/registrypreview/RegistryPreviewUILib/app.manifest