diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 4b4120db5..1426623d7 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -16,4 +16,10 @@ updates:
commit-message:
prefix: 'nuget-deps: '
+ - package-ecosystem: "nuget"
+ # location of package manifests
+ directory: "/src/Notepad"
+ schedule:
+ interval: "daily"
+
# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation)
\ No newline at end of file
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 1d6a6e1f7..a65178e39 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -120,6 +120,10 @@ jobs:
id: setup_msbuild
uses: microsoft/setup-msbuild@v1
+ - name: Setup NuGet
+ id: setup-nuget
+ uses: NuGet/setup-nuget@v1.0.5
+
- name: Checkout repository
id: checkout_repo
uses: actions/checkout@v2
@@ -233,6 +237,7 @@ jobs:
shell: pwsh
run: |
msbuild $env:SOLUTION_NAME /t:Restore
+ nuget restore $env:SOLUTION_NAME
- if: matrix.runCodeqlAnalysis
name: Initialize CodeQL
diff --git a/src/Notepad/AssemblyInfo.rc b/src/Notepad/AssemblyInfo.rc
new file mode 100644
index 000000000..3eb473c3c
--- /dev/null
+++ b/src/Notepad/AssemblyInfo.rc
@@ -0,0 +1,68 @@
+// Microsoft Visual C++ generated resource script.
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Neutral resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+#pragma code_page(1252)
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,0
+ PRODUCTVERSION 1,0,0,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "000004b0"
+ BEGIN
+ VALUE "CompanyName", "Jackie Liu"
+ VALUE "FileDescription", "Notepads"
+ VALUE "FileVersion", "1.0.0.0"
+ VALUE "InternalName", "Notepad.exe"
+ VALUE "LegalCopyright", "Copyright 2020 Jackie Liu"
+ VALUE "OriginalFilename", "Notepad.exe"
+ VALUE "ProductName", "Notepads"
+ VALUE "ProductVersion", "1.0.0.0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0, 1200
+ END
+END
+
+#endif // Neutral resources
+/////////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/src/Notepad/Notepad.vcxproj b/src/Notepad/Notepad.vcxproj
new file mode 100644
index 000000000..b9fa6dd83
--- /dev/null
+++ b/src/Notepad/Notepad.vcxproj
@@ -0,0 +1,300 @@
+
+
+
+
+ 15.0
+ {0f39c2eb-f8c6-473e-b26a-0714385798f5}
+ Win32Proj
+ Notepad
+ obj\
+ $(BaseIntermediateOutputPath)$(Platform)\$(Configuration)\
+ $(ProjectDir)bin\$(Platform)\$(Configuration)\
+ true
+ true
+ true
+ true
+ $(BaseIntermediateOutputPath)Generated Files\
+ 10.0.19041.0
+ 10.0.17134.0
+ true
+ false
+ false
+ Windows Store
+ 10.0
+
+
+
+
+ Debug
+ ARM
+
+
+ Release
+ ARM
+
+
+ Production
+ ARM
+
+
+ Debug
+ ARM64
+
+
+ Release
+ ARM64
+
+
+ Production
+ ARM64
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Production
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+ Production
+ x64
+
+
+
+
+ _PRODUCTION;%(PreprocessorDefinitions)
+
+
+
+ Application
+ v140
+ v141
+ v142
+ Unicode
+
+
+ true
+ true
+
+
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ stdcpplatest
+ NotUsing
+ _CONSOLE;WIN32_LEAN_AND_MEAN;WINRT_LEAN_AND_MEAN;%(PreprocessorDefinitions)
+ Level4
+ %(AdditionalOptions) /permissive- /bigobj /FS
+
+
+
+
+ Disabled
+ _DEBUG;%(PreprocessorDefinitions)
+
+
+ Console
+ false
+
+
+
+
+ WIN32;%(PreprocessorDefinitions)
+
+
+
+
+ MaxSpeed
+ true
+ true
+ NDEBUG;%(PreprocessorDefinitions)
+
+
+ Windows
+ true
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 19282JackieLiu.Notepads-Beta_echhpq9pdbte8!App
+ Notepads-Dev_echhpq9pdbte8!App
+
+#pragma once
+#define AUMID L"$(ApplicationUserModeId)"
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Notepad/main.cpp b/src/Notepad/main.cpp
new file mode 100644
index 000000000..f3dc87ae3
--- /dev/null
+++ b/src/Notepad/main.cpp
@@ -0,0 +1,76 @@
+#pragma once
+#pragma comment(lib, "shell32")
+#define STRICT
+#define STRICT_TYPED_ITEMIDS
+#include "windows.h"
+#include "shellapi.h"
+#include "shlobj_core.h"
+#include "winrt/base.h"
+#include "constants.h"
+
+#define OPEN L"open"
+#define PRINT L"print"
+
+#define NOTEPAD_PRINT_COMMAND L"/p"
+#define NOTEPAD_OPEN_WITH_ANSI_ENCODING_COMMAND L"/a"
+#define NOTEPAD_OPEN_WITH_UTF16_ENCODING_COMMAND L"/w"
+
+namespace winrt
+{
+ template
+ impl::com_ref parse(F function, Args&& ...args)
+ {
+ T* result{};
+ check_hresult(function(args..., &result));
+ return { result, take_ownership_from_abi };
+ }
+}
+
+using namespace winrt;
+
+#ifndef _DEBUG
+INT APIENTRY wWinMain(
+ _In_ HINSTANCE /* hInstance */,
+ _In_opt_ HINSTANCE /* hPrevInstance */,
+ _In_ LPWSTR /* lpCmdLine */,
+ _In_ INT /* nCmdShow */)
+#else
+INT main()
+#endif
+{
+ init_apartment();
+
+ auto nArgs = 0;
+ auto args = CommandLineToArgvW(GetCommandLine(), &nArgs);
+ if (nArgs > 1)
+ {
+ auto nIgnore = 1;
+ auto verb = OPEN;
+ if (wcscmp(NOTEPAD_PRINT_COMMAND, args[1]) == 0)
+ {
+ nIgnore = 2;
+ verb = PRINT;
+ }
+
+ auto rgpidl = com_array(nArgs - nIgnore);
+ for (auto ppidl = rgpidl.begin(); ppidl < rgpidl.end(); ppidl++, nArgs--)
+ {
+ SHParseDisplayName(args[nArgs - 1], NULL, ppidl, 0, NULL);
+ }
+
+ if (rgpidl.size() <= 0) goto CleanUp;
+
+ auto pid = 0UL;
+ auto ppsia = parse(SHCreateShellItemArrayFromIDLists, rgpidl.size(), rgpidl.data());
+ auto appActivationMgr = create_instance(CLSID_ApplicationActivationManager);
+ appActivationMgr->ActivateForFile(AUMID, ppsia.get(), verb, &pid);
+#ifdef _DEBUG
+ printf("Launched files with process id: %d", pid);
+ Sleep(2000);
+#endif
+ }
+
+CleanUp:
+ LocalFree(args);
+ uninit_apartment();
+}
\ No newline at end of file
diff --git a/src/Notepad/packages.config b/src/Notepad/packages.config
new file mode 100644
index 000000000..14af43910
--- /dev/null
+++ b/src/Notepad/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/Notepad/packages.targets b/src/Notepad/packages.targets
new file mode 100644
index 000000000..c4cf7eab3
--- /dev/null
+++ b/src/Notepad/packages.targets
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Notepads.Controls/Notepads.Controls.csproj b/src/Notepads.Controls/Notepads.Controls.csproj
index 29c6bc709..9865d3ac6 100644
--- a/src/Notepads.Controls/Notepads.Controls.csproj
+++ b/src/Notepads.Controls/Notepads.Controls.csproj
@@ -3,7 +3,7 @@
Debug
- AnyCPU
+ x86
{7AA5E631-B663-420E-A08F-002CD81DF855}
Library
Properties
@@ -17,34 +17,6 @@
512
{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE;NETFX_CORE;WINDOWS_UWP
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Production\
- TRACE;NETFX_CORE;WINDOWS_UWP
- prompt
- 4
-
x86
true
diff --git a/src/Notepads.sln b/src/Notepads.sln
index fad9f03e9..a90fe1f75 100644
--- a/src/Notepads.sln
+++ b/src/Notepads.sln
@@ -15,19 +15,27 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
.editorconfig = .editorconfig
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Notepad", "Notepad\Notepad.vcxproj", "{0F39C2EB-F8C6-473E-B26A-0714385798F5}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
- Release|ARM64 = Release|ARM64
- Release|x64 = Release|x64
- Release|x86 = Release|x86
+ Production|ARM = Production|ARM
Production|ARM64 = Production|ARM64
Production|x64 = Production|x64
Production|x86 = Production|x86
+ Release|ARM = Release|ARM
+ Release|ARM64 = Release|ARM64
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {99274932-9E86-480C-8142-38525F80007D}.Debug|ARM.ActiveCfg = Debug|ARM
+ {99274932-9E86-480C-8142-38525F80007D}.Debug|ARM.Build.0 = Debug|ARM
+ {99274932-9E86-480C-8142-38525F80007D}.Debug|ARM.Deploy.0 = Debug|ARM
{99274932-9E86-480C-8142-38525F80007D}.Debug|ARM64.ActiveCfg = Debug|ARM64
{99274932-9E86-480C-8142-38525F80007D}.Debug|ARM64.Build.0 = Debug|ARM64
{99274932-9E86-480C-8142-38525F80007D}.Debug|ARM64.Deploy.0 = Debug|ARM64
@@ -37,15 +45,9 @@ Global
{99274932-9E86-480C-8142-38525F80007D}.Debug|x86.ActiveCfg = Debug|x86
{99274932-9E86-480C-8142-38525F80007D}.Debug|x86.Build.0 = Debug|x86
{99274932-9E86-480C-8142-38525F80007D}.Debug|x86.Deploy.0 = Debug|x86
- {99274932-9E86-480C-8142-38525F80007D}.Release|ARM64.ActiveCfg = Release|ARM64
- {99274932-9E86-480C-8142-38525F80007D}.Release|ARM64.Build.0 = Release|ARM64
- {99274932-9E86-480C-8142-38525F80007D}.Release|ARM64.Deploy.0 = Release|ARM64
- {99274932-9E86-480C-8142-38525F80007D}.Release|x64.ActiveCfg = Release|x64
- {99274932-9E86-480C-8142-38525F80007D}.Release|x64.Build.0 = Release|x64
- {99274932-9E86-480C-8142-38525F80007D}.Release|x64.Deploy.0 = Release|x64
- {99274932-9E86-480C-8142-38525F80007D}.Release|x86.ActiveCfg = Release|x86
- {99274932-9E86-480C-8142-38525F80007D}.Release|x86.Build.0 = Release|x86
- {99274932-9E86-480C-8142-38525F80007D}.Release|x86.Deploy.0 = Release|x86
+ {99274932-9E86-480C-8142-38525F80007D}.Production|ARM.ActiveCfg = Production|ARM
+ {99274932-9E86-480C-8142-38525F80007D}.Production|ARM.Build.0 = Production|ARM
+ {99274932-9E86-480C-8142-38525F80007D}.Production|ARM.Deploy.0 = Production|ARM
{99274932-9E86-480C-8142-38525F80007D}.Production|ARM64.ActiveCfg = Production|ARM64
{99274932-9E86-480C-8142-38525F80007D}.Production|ARM64.Build.0 = Production|ARM64
{99274932-9E86-480C-8142-38525F80007D}.Production|ARM64.Deploy.0 = Production|ARM64
@@ -55,24 +57,66 @@ Global
{99274932-9E86-480C-8142-38525F80007D}.Production|x86.ActiveCfg = Production|x86
{99274932-9E86-480C-8142-38525F80007D}.Production|x86.Build.0 = Production|x86
{99274932-9E86-480C-8142-38525F80007D}.Production|x86.Deploy.0 = Production|x86
+ {99274932-9E86-480C-8142-38525F80007D}.Release|ARM.ActiveCfg = Release|ARM
+ {99274932-9E86-480C-8142-38525F80007D}.Release|ARM.Build.0 = Release|ARM
+ {99274932-9E86-480C-8142-38525F80007D}.Release|ARM.Deploy.0 = Release|ARM
+ {99274932-9E86-480C-8142-38525F80007D}.Release|ARM64.ActiveCfg = Release|ARM64
+ {99274932-9E86-480C-8142-38525F80007D}.Release|ARM64.Build.0 = Release|ARM64
+ {99274932-9E86-480C-8142-38525F80007D}.Release|ARM64.Deploy.0 = Release|ARM64
+ {99274932-9E86-480C-8142-38525F80007D}.Release|x64.ActiveCfg = Release|x64
+ {99274932-9E86-480C-8142-38525F80007D}.Release|x64.Build.0 = Release|x64
+ {99274932-9E86-480C-8142-38525F80007D}.Release|x64.Deploy.0 = Release|x64
+ {99274932-9E86-480C-8142-38525F80007D}.Release|x86.ActiveCfg = Release|x86
+ {99274932-9E86-480C-8142-38525F80007D}.Release|x86.Build.0 = Release|x86
+ {99274932-9E86-480C-8142-38525F80007D}.Release|x86.Deploy.0 = Release|x86
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Debug|ARM.ActiveCfg = Debug|ARM
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Debug|ARM.Build.0 = Debug|ARM
{7AA5E631-B663-420E-A08F-002CD81DF855}.Debug|ARM64.ActiveCfg = Debug|ARM64
{7AA5E631-B663-420E-A08F-002CD81DF855}.Debug|ARM64.Build.0 = Debug|ARM64
{7AA5E631-B663-420E-A08F-002CD81DF855}.Debug|x64.ActiveCfg = Debug|x64
{7AA5E631-B663-420E-A08F-002CD81DF855}.Debug|x64.Build.0 = Debug|x64
{7AA5E631-B663-420E-A08F-002CD81DF855}.Debug|x86.ActiveCfg = Debug|x86
{7AA5E631-B663-420E-A08F-002CD81DF855}.Debug|x86.Build.0 = Debug|x86
- {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|ARM64.ActiveCfg = Release|ARM64
- {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|ARM64.Build.0 = Release|ARM64
- {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|x64.ActiveCfg = Release|x64
- {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|x64.Build.0 = Release|x64
- {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|x86.ActiveCfg = Release|x86
- {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|x86.Build.0 = Release|x86
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Production|ARM.ActiveCfg = Production|ARM
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Production|ARM.Build.0 = Production|ARM
{7AA5E631-B663-420E-A08F-002CD81DF855}.Production|ARM64.ActiveCfg = Production|ARM64
{7AA5E631-B663-420E-A08F-002CD81DF855}.Production|ARM64.Build.0 = Production|ARM64
{7AA5E631-B663-420E-A08F-002CD81DF855}.Production|x64.ActiveCfg = Production|x64
{7AA5E631-B663-420E-A08F-002CD81DF855}.Production|x64.Build.0 = Production|x64
{7AA5E631-B663-420E-A08F-002CD81DF855}.Production|x86.ActiveCfg = Production|x86
{7AA5E631-B663-420E-A08F-002CD81DF855}.Production|x86.Build.0 = Production|x86
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|ARM.ActiveCfg = Release|ARM
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|ARM.Build.0 = Release|ARM
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|ARM64.ActiveCfg = Release|ARM64
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|ARM64.Build.0 = Release|ARM64
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|x64.ActiveCfg = Release|x64
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|x64.Build.0 = Release|x64
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|x86.ActiveCfg = Release|x86
+ {7AA5E631-B663-420E-A08F-002CD81DF855}.Release|x86.Build.0 = Release|x86
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Debug|ARM.ActiveCfg = Debug|ARM
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Debug|ARM.Build.0 = Debug|ARM
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Debug|ARM64.Build.0 = Debug|ARM64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Debug|x64.ActiveCfg = Debug|x64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Debug|x64.Build.0 = Debug|x64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Debug|x86.ActiveCfg = Debug|Win32
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Debug|x86.Build.0 = Debug|Win32
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Production|ARM.ActiveCfg = Production|ARM
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Production|ARM.Build.0 = Production|ARM
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Production|ARM64.ActiveCfg = Production|ARM64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Production|ARM64.Build.0 = Production|ARM64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Production|x64.ActiveCfg = Production|x64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Production|x64.Build.0 = Production|x64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Production|x86.ActiveCfg = Production|Win32
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Production|x86.Build.0 = Production|Win32
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Release|ARM.ActiveCfg = Release|ARM
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Release|ARM.Build.0 = Release|ARM
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Release|ARM64.ActiveCfg = Release|ARM64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Release|ARM64.Build.0 = Release|ARM64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Release|x64.ActiveCfg = Release|x64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Release|x64.Build.0 = Release|x64
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Release|x86.ActiveCfg = Release|Win32
+ {0F39C2EB-F8C6-473E-B26A-0714385798F5}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/Notepads/Notepads.csproj b/src/Notepads/Notepads.csproj
index 279ad618a..d93370095 100644
--- a/src/Notepads/Notepads.csproj
+++ b/src/Notepads/Notepads.csproj
@@ -99,6 +99,42 @@
true
true
+
+ true
+ bin\ARM\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP;DISABLE_XAML_GENERATED_MAIN
+ ;2008
+ full
+ ARM
+ false
+ prompt
+ true
+ true
+
+
+ bin\ARM\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP;DISABLE_XAML_GENERATED_MAIN
+ true
+ ;2008
+ pdbonly
+ ARM
+ false
+ prompt
+ true
+ true
+
+
+ bin\ARM\Production\
+ TRACE;NETFX_CORE;WINDOWS_UWP;DISABLE_XAML_GENERATED_MAIN
+ true
+ ;2008
+ pdbonly
+ ARM
+ false
+ prompt
+ true
+ true
+
true
bin\x64\Debug\
@@ -462,7 +498,19 @@
-
Scale|DXFeatureLevel
-
+
@@ -32,7 +32,7 @@
-
+
diff --git a/src/Notepads/Strings/en-US/Settings.resw b/src/Notepads/Strings/en-US/Settings.resw
index fa358b94f..e3aab75bf 100644
--- a/src/Notepads/Strings/en-US/Settings.resw
+++ b/src/Notepads/Strings/en-US/Settings.resw
@@ -421,4 +421,16 @@
System Default
AdvancedPage LanguagePreferenceSettings System Default option text.
+
+ Copy File
+ AboutPage Desktop Activation component file copy button text.
+
+
+ Copy path
+ AboutPage Desktop Activation component path copy button text.
+
+
+ Use desktop component to broker file activation with Notepads
+ AboutPage Desktop Activation description text.
+
\ No newline at end of file
diff --git a/src/Notepads/Views/Settings/AboutPage.xaml b/src/Notepads/Views/Settings/AboutPage.xaml
index a051b084e..0f5445cd5 100644
--- a/src/Notepads/Views/Settings/AboutPage.xaml
+++ b/src/Notepads/Views/Settings/AboutPage.xaml
@@ -4,13 +4,13 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d"
- Background="{ThemeResource SystemControlForegroundTransparentBrush}">
+ Background="{ThemeResource SystemControlForegroundTransparentBrush}"
+ mc:Ignorable="d">
-
+
@@ -24,28 +24,59 @@
UseSystemFocusVisuals="False"
VerticalScrollBarVisibility="Auto"
VerticalScrollMode="Auto">
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
@@ -53,7 +84,7 @@
-
+
@@ -61,13 +92,13 @@
-
+
mailto:NotepadsApp@outlook.com
-
+
@@ -75,14 +106,20 @@
-
+
-
+ FontWeight="Normal"
+ Style="{StaticResource CompactSubtitleTextBlockStyle}" />
+
Notepads Releases
@@ -90,10 +127,13 @@
-
+ FontWeight="Normal"
+ Style="{StaticResource CompactSubtitleTextBlockStyle}" />
+
Windows UI Library
@@ -119,19 +159,22 @@
-
+ FontWeight="Normal"
+ Style="{StaticResource CompactSubtitleTextBlockStyle}" />
+
-
+
- Copyright (c) 2020 Jackie (Jiaqi) Liu.
-
+
+ Copyright (c) 2020 Jackie (Jiaqi) Liu.
-
-
+
+
diff --git a/src/Notepads/Views/Settings/AboutPage.xaml.cs b/src/Notepads/Views/Settings/AboutPage.xaml.cs
index ec0c93e7e..e8cccf97b 100644
--- a/src/Notepads/Views/Settings/AboutPage.xaml.cs
+++ b/src/Notepads/Views/Settings/AboutPage.xaml.cs
@@ -1,9 +1,14 @@
namespace Notepads.Views.Settings
{
using System;
+ using System.Collections.Generic;
+ using System.IO;
using Notepads.Extensions;
using Notepads.Services;
using Windows.ApplicationModel;
+ using Windows.ApplicationModel.DataTransfer;
+ using Windows.Foundation.Metadata;
+ using Windows.Storage;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media.Imaging;
@@ -14,6 +19,10 @@ public sealed partial class AboutPage : Page
public string AppVersion => $"v{GetAppVersion()}";
+ private bool IsDesktopPlatform = ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0);
+
+ private static string desktopActivationComponentPath = @"Resource\Notepad.exe";
+
public AboutPage()
{
InitializeComponent();
@@ -58,5 +67,23 @@ private static string GetAppVersion()
PackageVersion version = Package.Current.Id.Version;
return $"{version.Major}.{version.Minor}.{version.Build}.{version.Revision}";
}
+
+ private void DesktopActivationCopyPath_Clicked(object sender, RoutedEventArgs e)
+ {
+ var path = Path.Combine(Package.Current.InstalledPath, desktopActivationComponentPath);
+ var dataPackage = new DataPackage();
+ dataPackage.RequestedOperation = DataPackageOperation.Copy;
+ dataPackage.SetText(path);
+ Clipboard.SetContent(dataPackage);
+ }
+
+ private async void DesktopActivationCopyFile_Clicked(object sender, RoutedEventArgs e)
+ {
+ var file = await Package.Current.InstalledLocation.GetFileAsync(desktopActivationComponentPath);
+ var dataPackage = new DataPackage();
+ dataPackage.RequestedOperation = DataPackageOperation.Copy;
+ dataPackage.SetStorageItems(new List { file }, true);
+ Clipboard.SetContent(dataPackage);
+ }
}
}
\ No newline at end of file