[Localization] Migrate resources to resx for PowerRename (#6112)

* Added localization code to pipeline and created one LocProject json for Settings

* Fixed typo

* Reordered nuget source

* Moved nuget install to restore step

* Added FZ.rc file to LocProj

* Added FZ resx file and modified rc file

* Fixed file names

* Changed to check folder for LocProject files

* Updated folder

* Changed directory

* Changed to src directory

* Changed language set and name format, removed rc file localization

* Added all projects with resx/resw files

* Added newline to end of file

* Removed nuget source as it is not used

* Updated comments

* Updated keyboard manager to use resx file

* Tweaked resources.resx and added it to project files

* Added comments and added in string table to resx script

* Remove change from bad merge

* Fix syntax error in convert stringtable

* Changed file type to None

* Migrated color picker's resources

* Migrated resources for Microsoft.Launcher

* Migrated resources for fancy zones

* Revert fancyzones changes

* Migrated resources for ImageResizer and modified script to add language specific code

* Added try catch and checks for modification to avoid unnecessary file creation

* Changed tab insertion to 4 spaces to avoid mixed file types in rc file

* Migrated resources for power preview project

* Added LocProject.json file for 5 projects

* added resgen exception check

* Moved non-localizable strings out of resx for powerpreview

* Move out hardcoded strings from dialog box and set them at runtime from string table

* Migrated resources for powerrename

* Added locproj

* Added missing ImageBase extern declaration

* Added build script in UWP UI project since PowerRenameExt is not referenced

* Resolved merge conflicts
This commit is contained in:
Arjun Balgovind 2020-08-24 17:51:48 -07:00 committed by GitHub
parent aebd7657ef
commit 3ede1a0b53
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 712 additions and 393 deletions

View File

@ -3,9 +3,9 @@
#include "../../../common/version.h"
// We need both DLL and UI resource files for UWP UI.
#include "../dll/PowerRenameExt.rc"
#include "../dll/Generated Files/PowerRenameExt.rc"
#undef IDC_STATIC
#include "../ui/PowerRenameUI.rc"
#include "../ui/Generated Files/PowerRenameUI.rc"
2 VERSIONINFO
FILEVERSION FILE_VERSION

View File

@ -11,6 +11,9 @@
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<Target Name="GenerateResourceFiles" BeforeTargets="PrepareForBuild">
<Exec Command="powershell -NonInteractive -executionpolicy Unrestricted $(SolutionDir)tools\build\convert-resx-to-rc.ps1 ..\dll resource.base.h resource.h PowerRenameExt.base.rc PowerRenameExt.rc" />
</Target>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<ProjectGuid>{0485F45C-EA7A-4BB5-804B-3E8D14699387}</ProjectGuid>

View File

@ -0,0 +1,14 @@
{
"Projects": [
{
"LanguageSet": "Azure_Languages",
"LocItems": [
{
"SourceFile": "src\\modules\\powerrename\\dll\\Resources.resx",
"CopyOption": "LangIDOnName",
"OutputPath": "src\\modules\\powerrename\\dll"
}
]
}
]
}

View File

@ -0,0 +1,63 @@
#include <windows.h>
⌀椀渀挀氀甀搀攀 ∀爀攀猀漀甀爀挀攀⸀栀∀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀⸀⸀⼀⸀⸀⼀⸀⸀⼀⸀⸀⼀挀漀洀洀漀渀⼀瘀攀爀猀椀漀渀⸀栀∀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 嘀攀爀猀椀漀渀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
 嘀䔀刀匀䤀伀一䤀一䘀伀ഀ<EFBFBD>
䘀䤀䰀䔀嘀䔀刀匀䤀伀一 䘀䤀䰀䔀开嘀䔀刀匀䤀伀一ഀ<EFBFBD>
倀刀伀䐀唀䌀吀嘀䔀刀匀䤀伀一 倀刀伀䐀唀䌀吀开嘀䔀刀匀䤀伀一ഀ<EFBFBD>
䘀䤀䰀䔀䘀䰀䄀䜀匀䴀䄀匀䬀 嘀匀开䘀䘀䤀开䘀䤀䰀䔀䘀䰀䄀䜀匀䴀䄀匀䬀ഀ<EFBFBD>
⌀椀昀搀攀昀 开䐀䔀䈀唀䜀ഀ<EFBFBD>
䘀䤀䰀䔀䘀䰀䄀䜀匀 嘀匀开䘀䘀开䐀䔀䈀唀䜀ഀ<EFBFBD>
⌀攀氀猀攀ഀ<EFBFBD>
䘀䤀䰀䔀䘀䰀䄀䜀匀   䰀ഀ<EFBFBD>
⌀攀渀搀椀昀ഀ<EFBFBD>
䘀䤀䰀䔀伀匀 嘀伀匀开一吀开圀䤀一䐀伀圀匀㌀㈀ഀ<EFBFBD>
䘀䤀䰀䔀吀夀倀䔀 嘀䘀吀开䐀䰀䰀ഀ<EFBFBD>
䘀䤀䰀䔀匀唀䈀吀夀倀䔀 嘀䘀吀㈀开唀一䬀一伀圀一 <EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    䈀䰀伀䌀䬀 ∀匀琀爀椀渀最䘀椀氀攀䤀渀昀漀∀ഀ<EFBFBD>
    䈀䔀䜀䤀一ഀ<EFBFBD>
        䈀䰀伀䌀䬀    㐀戀  ⼀⼀ 唀匀 䔀渀最氀椀猀栀    㤀⤀Ⰰ 唀渀椀挀漀搀攀   㐀䈀  挀栀愀爀猀攀琀ഀ<EFBFBD>
        䈀䔀䜀䤀一ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䌀漀洀瀀愀渀礀一愀洀攀∀Ⰰ 䌀伀䴀倀䄀一夀开一䄀䴀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䘀椀氀攀䐀攀猀挀爀椀瀀琀椀漀渀∀Ⰰ 䘀䤀䰀䔀开䐀䔀匀䌀刀䤀倀吀䤀伀一ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䘀椀氀攀嘀攀爀猀椀漀渀∀Ⰰ 䘀䤀䰀䔀开嘀䔀刀匀䤀伀一开匀吀刀䤀一䜀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䤀渀琀攀爀渀愀氀一愀洀攀∀Ⰰ 䤀一吀䔀刀一䄀䰀开一䄀䴀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䰀攀最愀氀䌀漀瀀礀爀椀最栀琀∀Ⰰ 䌀伀倀夀刀䤀䜀䠀吀开一伀吀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀伀爀椀最椀渀愀氀䘀椀氀攀渀愀洀攀∀Ⰰ 伀刀䤀䜀䤀一䄀䰀开䘀䤀䰀䔀一䄀䴀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀倀爀漀搀甀挀琀一愀洀攀∀Ⰰ 倀刀伀䐀唀䌀吀开一䄀䴀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀倀爀漀搀甀挀琀嘀攀爀猀椀漀渀∀Ⰰ 倀刀伀䐀唀䌀吀开嘀䔀刀匀䤀伀一开匀吀刀䤀一䜀ഀ<EFBFBD>
        䔀一䐀ഀ<EFBFBD>
    䔀一䐀ഀ<EFBFBD>
    䈀䰀伀䌀䬀 ∀嘀愀爀䘀椀氀攀䤀渀昀漀∀ഀ<EFBFBD>
    䈀䔀䜀䤀一ഀ<EFBFBD>
        嘀䄀䰀唀䔀 ∀吀爀愀渀猀氀愀琀椀漀渀∀Ⰰ  砀㐀 㤀Ⰰ ㄀㈀   ⼀⼀ 唀匀 䔀渀最氀椀猀栀    㤀⤀Ⰰ 唀渀椀挀漀搀攀 ㄀㈀   挀栀愀爀猀攀琀ഀ<EFBFBD>
    䔀一䐀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
⌀搀攀昀椀渀攀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䜀攀渀攀爀愀琀攀搀 昀爀漀洀 琀栀攀 吀䔀堀吀䤀一䌀䰀唀䐀䔀  爀攀猀漀甀爀挀攀⸀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀眀椀渀爀攀猀⸀栀∀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⌀甀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ 一漀渀ⴀ氀漀挀愀氀椀稀愀戀氀攀ഀ<EFBFBD>
<EFBFBD>
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    䤀䐀匀开伀嘀䔀刀嘀䤀䔀圀开䰀䤀一䬀 䰀∀栀琀琀瀀猀㨀⼀⼀愀欀愀⸀洀猀⼀倀漀眀攀爀吀漀礀猀伀瘀攀爀瘀椀攀眀开倀漀眀攀爀刀攀渀愀洀攀∀ <EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
⼀⼀ 一漀渀ⴀ氀漀挀愀氀椀稀愀戀氀攀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
<EFBFBD>

View File

@ -8,7 +8,7 @@
#include <Helpers.h>
#include <icon_helpers.h>
#include <Settings.h>
#include "resource.h"
#include "Generated Files/resource.h"
extern HINSTANCE g_hInst;

View File

@ -1,113 +0,0 @@
#include <windows.h>
⌀椀渀挀氀甀搀攀 ∀爀攀猀漀甀爀挀攀⸀栀∀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀⸀⸀⼀⸀⸀⼀⸀⸀⼀挀漀洀洀漀渀⼀瘀攀爀猀椀漀渀⸀栀∀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 嘀攀爀猀椀漀渀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
 嘀䔀刀匀䤀伀一䤀一䘀伀ഀ<EFBFBD>
䘀䤀䰀䔀嘀䔀刀匀䤀伀一 䘀䤀䰀䔀开嘀䔀刀匀䤀伀一ഀ<EFBFBD>
倀刀伀䐀唀䌀吀嘀䔀刀匀䤀伀一 倀刀伀䐀唀䌀吀开嘀䔀刀匀䤀伀一ഀ<EFBFBD>
䘀䤀䰀䔀䘀䰀䄀䜀匀䴀䄀匀䬀 嘀匀开䘀䘀䤀开䘀䤀䰀䔀䘀䰀䄀䜀匀䴀䄀匀䬀ഀ<EFBFBD>
⌀椀昀搀攀昀 开䐀䔀䈀唀䜀ഀ<EFBFBD>
䘀䤀䰀䔀䘀䰀䄀䜀匀 嘀匀开䘀䘀开䐀䔀䈀唀䜀ഀ<EFBFBD>
⌀攀氀猀攀ഀ<EFBFBD>
䘀䤀䰀䔀䘀䰀䄀䜀匀   䰀ഀ<EFBFBD>
⌀攀渀搀椀昀ഀ<EFBFBD>
䘀䤀䰀䔀伀匀 嘀伀匀开一吀开圀䤀一䐀伀圀匀㌀㈀ഀ<EFBFBD>
䘀䤀䰀䔀吀夀倀䔀 嘀䘀吀开䐀䰀䰀ഀ<EFBFBD>
䘀䤀䰀䔀匀唀䈀吀夀倀䔀 嘀䘀吀㈀开唀一䬀一伀圀一 <EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    䈀䰀伀䌀䬀 ∀匀琀爀椀渀最䘀椀氀攀䤀渀昀漀∀ഀ<EFBFBD>
    䈀䔀䜀䤀一ഀ<EFBFBD>
        䈀䰀伀䌀䬀    㐀戀  ⼀⼀ 唀匀 䔀渀最氀椀猀栀    㤀⤀Ⰰ 唀渀椀挀漀搀攀   㐀䈀  挀栀愀爀猀攀琀ഀ<EFBFBD>
        䈀䔀䜀䤀一ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䌀漀洀瀀愀渀礀一愀洀攀∀Ⰰ 䌀伀䴀倀䄀一夀开一䄀䴀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䘀椀氀攀䐀攀猀挀爀椀瀀琀椀漀渀∀Ⰰ 䘀䤀䰀䔀开䐀䔀匀䌀刀䤀倀吀䤀伀一ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䘀椀氀攀嘀攀爀猀椀漀渀∀Ⰰ 䘀䤀䰀䔀开嘀䔀刀匀䤀伀一开匀吀刀䤀一䜀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䤀渀琀攀爀渀愀氀一愀洀攀∀Ⰰ 䤀一吀䔀刀一䄀䰀开一䄀䴀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀䰀攀最愀氀䌀漀瀀礀爀椀最栀琀∀Ⰰ 䌀伀倀夀刀䤀䜀䠀吀开一伀吀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀伀爀椀最椀渀愀氀䘀椀氀攀渀愀洀攀∀Ⰰ 伀刀䤀䜀䤀一䄀䰀开䘀䤀䰀䔀一䄀䴀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀倀爀漀搀甀挀琀一愀洀攀∀Ⰰ 倀刀伀䐀唀䌀吀开一䄀䴀䔀ഀ<EFBFBD>
            嘀䄀䰀唀䔀 ∀倀爀漀搀甀挀琀嘀攀爀猀椀漀渀∀Ⰰ 倀刀伀䐀唀䌀吀开嘀䔀刀匀䤀伀一开匀吀刀䤀一䜀ഀ<EFBFBD>
        䔀一䐀ഀ<EFBFBD>
    䔀一䐀ഀ<EFBFBD>
    䈀䰀伀䌀䬀 ∀嘀愀爀䘀椀氀攀䤀渀昀漀∀ഀ<EFBFBD>
    䈀䔀䜀䤀一ഀ<EFBFBD>
        嘀䄀䰀唀䔀 ∀吀爀愀渀猀氀愀琀椀漀渀∀Ⰰ  砀㐀 㤀Ⰰ ㄀㈀   ⼀⼀ 唀匀 䔀渀最氀椀猀栀    㤀⤀Ⰰ 唀渀椀挀漀搀攀 ㄀㈀   挀栀愀爀猀攀琀ഀ<EFBFBD>
    䔀一䐀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
⌀搀攀昀椀渀攀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䜀攀渀攀爀愀琀攀搀 昀爀漀洀 琀栀攀 吀䔀堀吀䤀一䌀䰀唀䐀䔀  爀攀猀漀甀爀挀攀⸀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀眀椀渀爀攀猀⸀栀∀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⌀甀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ 䔀渀最氀椀猀栀 唀渀椀琀攀搀 匀琀愀琀攀猀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
<EFBFBD>
⌀椀昀 ℀搀攀昀椀渀攀搀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀䄀䘀堀开吀䄀刀䜀开䔀一唀⤀ഀ<EFBFBD>
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䔀一䜀䰀䤀匀䠀Ⰰ 匀唀䈀䰀䄀一䜀开䔀一䜀䰀䤀匀䠀开唀匀ഀ<EFBFBD>
<EFBFBD>
⌀椀昀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 吀䔀堀吀䤀一䌀䰀唀䐀䔀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
 吀䔀堀吀䤀一䌀䰀唀䐀䔀 <EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    ∀爀攀猀漀甀爀挀攀⸀栀尀 ∀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
 吀䔀堀吀䤀一䌀䰀唀䐀䔀 <EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    ∀⌀椀渀挀氀甀搀攀 ∀∀眀椀渀爀攀猀⸀栀∀∀尀爀尀渀∀ഀ<EFBFBD>
    ∀尀 ∀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
 吀䔀堀吀䤀一䌀䰀唀䐀䔀 <EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    ∀尀爀尀渀∀ഀ<EFBFBD>
    ∀尀 ∀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
⌀攀渀搀椀昀    ⼀⼀ 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    䤀䐀匀开倀伀圀䔀刀刀䔀一䄀䴀䔀         ∀倀漀☀眀攀爀刀攀渀愀洀攀∀ <EFBFBD>
    䤀䐀匀开倀伀圀䔀刀刀䔀一䄀䴀䔀开䄀倀倀开一䄀䴀䔀 ∀倀漀眀攀爀刀攀渀愀洀攀∀ <EFBFBD>
    䤀䐀匀开匀䔀吀吀䤀一䜀匀开䐀䔀匀䌀刀䤀倀吀䤀伀一 䰀∀䄀 圀椀渀搀漀眀猀 匀栀攀氀氀 攀砀琀攀渀猀椀漀渀 昀漀爀 洀漀爀攀 愀搀瘀愀渀挀攀搀 戀甀氀欀 爀攀渀愀洀椀渀最 甀猀椀渀最 猀攀愀爀挀栀 愀渀搀 爀攀瀀氀愀挀攀 漀爀 爀攀最甀氀愀爀 攀砀瀀爀攀猀猀椀漀渀猀⸀∀ <EFBFBD>
    䤀䐀匀开伀嘀䔀刀嘀䤀䔀圀开䰀䤀一䬀 䰀∀栀琀琀瀀猀㨀⼀⼀愀欀愀⸀洀猀⼀倀漀眀攀爀吀漀礀猀伀瘀攀爀瘀椀攀眀开倀漀眀攀爀刀攀渀愀洀攀∀ <EFBFBD>
    䤀䐀匀开刀䔀匀吀伀刀䔀开匀䔀䄀刀䌀䠀 䰀∀刀攀猀琀漀爀攀 猀攀愀爀挀栀Ⰰ 爀攀瀀氀愀挀攀 愀渀搀 昀氀愀最猀 瘀愀氀甀攀猀 漀渀 氀愀甀渀挀栀 昀爀漀洀 瀀爀攀瘀椀漀甀猀 爀甀渀⸀∀ <EFBFBD>
    䤀䐀匀开䔀一䄀䈀䰀䔀开䄀唀吀伀 䰀∀䔀渀愀戀氀攀 愀甀琀漀挀漀洀瀀氀攀琀攀 愀渀搀 愀甀琀漀猀甀最最攀猀琀 漀昀 爀攀挀攀渀琀氀礀 甀猀攀搀 椀渀瀀甀琀猀 昀漀爀 猀攀愀爀挀栀 愀渀搀 爀攀瀀氀愀挀攀 瘀愀氀甀攀猀⸀∀ <EFBFBD>
    䤀䐀匀开䴀䄀堀开䤀吀䔀䴀匀 䰀∀䴀愀砀椀洀甀洀 渀甀洀戀攀爀 漀昀 椀琀攀洀猀 琀漀 猀栀漀眀 椀渀 爀攀挀攀渀琀氀礀 甀猀攀搀 氀椀猀琀 昀漀爀 愀甀琀漀挀漀洀瀀氀攀琀攀 搀爀漀瀀搀漀眀渀⸀∀ <EFBFBD>
    䤀䐀匀开䤀䌀伀一开䌀伀一吀䔀堀吀开䴀䔀一唀 䰀∀匀栀漀眀 椀挀漀渀 漀渀 挀漀渀琀攀砀琀 洀攀渀甀⸀∀ <EFBFBD>
    䤀䐀匀开䔀堀吀䔀一䐀䔀䐀开䴀䔀一唀开䤀一䘀伀 䰀∀伀渀氀礀 猀栀漀眀 琀栀攀 倀漀眀攀爀刀攀渀愀洀攀 洀攀渀甀 椀琀攀洀 漀渀 琀栀攀 攀砀琀攀渀搀攀搀 挀漀渀琀攀砀琀 洀攀渀甀 匀栀椀昀琀  刀椀最栀琀ⴀ挀氀椀挀欀⤀⸀∀ <EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
⌀攀渀搀椀昀    ⼀⼀ 䔀渀最氀椀猀栀 唀渀椀琀攀搀 匀琀愀琀攀猀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
<EFBFBD>
⌀椀昀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䜀攀渀攀爀愀琀攀搀 昀爀漀洀 琀栀攀 吀䔀堀吀䤀一䌀䰀唀䐀䔀  爀攀猀漀甀爀挀攀⸀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⌀攀渀搀椀昀    ⼀⼀ 渀漀琀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
<EFBFBD>

View File

@ -19,6 +19,9 @@
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<Target Name="GenerateResourceFiles" BeforeTargets="PrepareForBuild">
<Exec Command="powershell -NonInteractive -executionpolicy Unrestricted $(SolutionDir)tools\build\convert-resx-to-rc.ps1 . resource.base.h resource.h PowerRenameExt.base.rc PowerRenameExt.rc" />
</Target>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{B25AC7A5-FB9F-4789-B392-D5C85E948670}</ProjectGuid>
@ -174,13 +177,15 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="CLSID.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="Generated Files/resource.h" />
<ClInclude Include="PowerRenameExt.h" />
<ClInclude Include="pch.h" />
<None Include="resource.base.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="PowerRenameExt.rc" />
<ResourceCompile Include="Generated Files/PowerRenameExt.rc" />
<None Include="PowerRenameExt.base.rc" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp" />
@ -204,6 +209,9 @@
<Project>{0e072714-d127-460b-afad-b4c40b412798}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources.resx" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.200729.8\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.200729.8\build\native\Microsoft.Windows.CppWinRT.targets')" />

View File

@ -13,14 +13,14 @@
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Generated Files">
<UniqueIdentifier>{1691b4f2-4b67-4188-9cfd-1ac61e78279f}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="PowerRenameExt.h">
<Filter>Header Files</Filter>
</ClInclude>
@ -30,11 +30,12 @@
<ClInclude Include="pch.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="PowerRenameExt.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
<ClInclude Include="Generated Files/resource.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="resource.base.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="PowerRenameExt.cpp">
@ -53,4 +54,17 @@
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Generated Files/PowerRenameExt.rc">
<Filter>Generated Files</Filter>
</ResourceCompile>
<ResourceCompile Include="PowerRenameExt.base.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources.resx">
<Filter>Resource Files</Filter>
</EmbeddedResource>
</ItemGroup>
</Project>

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PowerRename" xml:space="preserve">
<value>Po&amp;werRename</value>
</data>
<data name="PowerRename_App_Name" xml:space="preserve">
<value>PowerRename</value>
</data>
<data name="Settings_Description" xml:space="preserve">
<value>A Windows Shell extension for more advanced bulk renaming using search and replace or regular expressions.</value>
</data>
<data name="Restore_Search" xml:space="preserve">
<value>Restore search, replace and flags values on launch from previous run.</value>
</data>
<data name="Enable_Auto" xml:space="preserve">
<value>Enable autocomplete and autosuggest of recently used inputs for search and replace values.</value>
</data>
<data name="Max_Items" xml:space="preserve">
<value>Maximum number of items to show in recently used list for autocomplete dropdown.</value>
</data>
<data name="Icon_Context_Menu" xml:space="preserve">
<value>Show icon on context menu.</value>
</data>
<data name="Extended_Menu_Info" xml:space="preserve">
<value>Only show the PowerRename menu item on the extended context menu (Shift + Right-click).</value>
</data>
</root>

View File

@ -5,7 +5,7 @@
#include <trace.h>
#include <common/settings_objects.h>
#include <common/common.h>
#include "resource.h"
#include "Generated Files/resource.h"
#include <atomic>
std::atomic<DWORD> g_dwModuleRefCount = 0;

View File

@ -0,0 +1,15 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by PowerRenameExt.rc
//////////////////////////////
// Non-localizable
#define FILE_DESCRIPTION "PowerToys PowerRenameExt"
#define INTERNAL_NAME "PowerRenameExt"
#define ORIGINAL_FILENAME "PowerRenameExt.dll"
#define IDI_RENAME 2001
#define IDS_OVERVIEW_LINK 2002
// Non-localizable
//////////////////////////////

View File

@ -1,36 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by PowerRenameExt.rc
//////////////////////////////
// Non-localizable
#define FILE_DESCRIPTION "PowerToys PowerRenameExt"
#define INTERNAL_NAME "PowerRenameExt"
#define ORIGINAL_FILENAME "PowerRenameExt.dll"
// Non-localizable
//////////////////////////////
#define IDS_POWERRENAME 801
#define IDI_RENAME 132
#define IDS_POWERRENAME_APP_NAME 2101
#define IDS_SETTINGS_DESCRIPTION 2102
#define IDS_OVERVIEW_LINK 2103
#define IDS_RESTORE_SEARCH 2104
#define IDS_ENABLE_AUTO 2105
#define IDS_MAX_ITEMS 2106
#define IDS_ICON_CONTEXT_MENU 2107
#define IDS_EXTENDED_MENU_INFO 2108
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@ -0,0 +1,14 @@
{
"Projects": [
{
"LanguageSet": "Azure_Languages",
"LocItems": [
{
"SourceFile": "src\\modules\\powerrename\\ui\\Resources.resx",
"CopyOption": "LangIDOnName",
"OutputPath": "src\\modules\\powerrename\\ui"
}
]
}
]
}

View File

@ -0,0 +1,84 @@
// Microsoft Visual C++ generated resource script.
⼀⼀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀爀攀猀漀甀爀挀攀⸀栀∀ഀ<EFBFBD>
<EFBFBD>
⌀搀攀昀椀渀攀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䜀攀渀攀爀愀琀攀搀 昀爀漀洀 琀栀攀 吀䔀堀吀䤀一䌀䰀唀䐀䔀  爀攀猀漀甀爀挀攀⸀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⌀椀昀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀琀愀爀最攀琀瘀攀爀⸀栀∀ഀ<EFBFBD>
⌀攀渀搀椀昀ഀ<EFBFBD>
⌀搀攀昀椀渀攀 䄀倀匀吀唀䐀䤀伀开䠀䤀䐀䐀䔀一开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀眀椀渀搀漀眀猀⸀栀∀ഀ<EFBFBD>
⌀甀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䠀䤀䐀䐀䔀一开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⌀甀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䤀挀漀渀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
⼀⼀ 䤀挀漀渀 眀椀琀栀 氀漀眀攀猀琀 䤀䐀 瘀愀氀甀攀 瀀氀愀挀攀搀 昀椀爀猀琀 琀漀 攀渀猀甀爀攀 愀瀀瀀氀椀挀愀琀椀漀渀 椀挀漀渀ഀ<EFBFBD>
⼀⼀ 爀攀洀愀椀渀猀 挀漀渀猀椀猀琀攀渀琀 漀渀 愀氀氀 猀礀猀琀攀洀猀⸀ഀ<EFBFBD>
䤀䐀䤀开刀䔀一䄀䴀䔀              䤀䌀伀一                    ∀倀漀眀攀爀刀攀渀愀洀攀⸀椀挀漀∀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䐀椀愀氀漀最ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
䤀䐀䐀开䴀䄀䤀一 䐀䤀䄀䰀伀䜀䔀堀     ㌀㘀㐀Ⰰ ㌀㄀㜀ഀ<EFBFBD>
匀吀夀䰀䔀 䐀匀开匀䔀吀䘀伀一吀  䐀匀开䘀䤀堀䔀䐀匀夀匀  䐀匀开䌀䔀一吀䔀刀  圀匀开䴀䤀一䤀䴀䤀娀䔀䈀伀堀  圀匀开䴀䄀堀䤀䴀䤀娀䔀䈀伀堀  圀匀开倀伀倀唀倀  圀匀开䌀䄀倀吀䤀伀一  圀匀开匀夀匀䴀䔀一唀  圀匀开吀䠀䤀䌀䬀䘀刀䄀䴀䔀ഀ<EFBFBD>
䌀䄀倀吀䤀伀一 ∀∀ഀ<EFBFBD>
䘀伀一吀 㠀Ⰰ ∀䴀匀 匀栀攀氀氀 䐀氀最∀Ⰰ       砀㄀ഀ<EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    䔀䐀䤀吀吀䔀堀吀        䤀䐀䌀开䔀䐀䤀吀开匀䔀䄀刀䌀䠀䘀伀刀Ⰰ㜀㄀Ⰰ㈀ Ⰰ㈀㔀㤀Ⰰ㄀㌀Ⰰ䔀匀开䄀唀吀伀䠀匀䌀刀伀䰀䰀ഀ<EFBFBD>
    䔀䐀䤀吀吀䔀堀吀        䤀䐀䌀开䔀䐀䤀吀开刀䔀倀䰀䄀䌀䔀圀䤀吀䠀Ⰰ㜀㄀Ⰰ㌀㠀Ⰰ㈀㔀㤀Ⰰ㄀㌀Ⰰ䔀匀开䄀唀吀伀䠀匀䌀刀伀䰀䰀ഀ<EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开唀匀䔀刀䔀䜀䔀堀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㄀Ⰰ㠀㌀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䌀䄀匀䔀匀䔀一匀䤀吀䤀嘀䔀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㄀Ⰰ㤀㔀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䴀䄀吀䌀䠀䄀䰀䰀伀䌀䌀唀刀䔀一䌀䔀匀Ⰰഀ<EFBFBD>
                    ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㄀Ⰰ㄀ 㜀Ⰰ㤀㠀Ⰰ㄀  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ 䤀䐀䌀开吀刀䄀一匀䘀伀刀䴀开唀倀倀䔀刀䌀䄀匀䔀Ⰰ ∀䈀甀琀琀漀渀∀Ⰰ 䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ ㈀㄀Ⰰ ㄀㄀㤀Ⰰ 㤀㠀Ⰰ  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀堀䌀䰀唀䐀䔀䘀䤀䰀䔀匀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㄀㌀㈀Ⰰ㠀㌀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀堀䌀䰀唀䐀䔀䘀伀䰀䐀䔀刀匀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㄀㌀㈀Ⰰ㤀㔀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀堀䌀䰀唀䐀䔀匀唀䈀䘀伀䰀䐀䔀刀匀Ⰰഀ<EFBFBD>
                    ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㄀㌀㈀Ⰰ㄀ 㜀Ⰰ㤀㠀Ⰰ㄀  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ 䤀䐀䌀开吀刀䄀一匀䘀伀刀䴀开䰀伀圀䔀刀䌀䄀匀䔀Ⰰ ∀䈀甀琀琀漀渀∀Ⰰ 䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ ㄀㌀㈀Ⰰ ㄀㄀㤀Ⰰ 㤀㠀Ⰰ  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀一唀䴀䤀吀䔀䴀匀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㐀㄀Ⰰ㠀㌀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开一䄀䴀䔀伀一䰀夀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㐀㄀Ⰰ㤀㔀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀堀吀䔀一匀䤀伀一伀一䰀夀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㐀㄀Ⰰ㄀ 㜀Ⰰ㤀㠀Ⰰ㄀  䌀伀一吀刀伀䰀 ∀∀Ⰰ 䤀䐀䌀开吀刀䄀一匀䘀伀刀䴀开吀䤀吀䰀䔀䌀䄀匀䔀Ⰰ ∀䈀甀琀琀漀渀∀Ⰰ 䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ ㈀㐀㄀Ⰰ ㄀㄀㤀Ⰰ 㤀㠀Ⰰ  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䰀䤀匀吀开倀刀䔀嘀䤀䔀圀Ⰰ∀匀礀猀䰀椀猀琀嘀椀攀眀㌀㈀∀Ⰰ䰀嘀匀开刀䔀倀伀刀吀  䰀嘀匀开䄀䰀䤀䜀一䰀䔀䘀吀  䰀嘀匀开伀圀一䔀刀䐀䄀吀䄀  圀匀开䈀伀刀䐀䔀刀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㈀Ⰰ㄀㘀 Ⰰ㌀ 㠀Ⰰ㄀㄀㘀 <EFBFBD>
    䐀䔀䘀倀唀匀䠀䈀唀吀吀伀一   ∀∀Ⰰ䤀䐀开刀䔀一䄀䴀䔀Ⰰ㄀㜀㠀Ⰰ㈀㤀㔀Ⰰ㔀 Ⰰ㄀㐀ഀ<EFBFBD>
    倀唀匀䠀䈀唀吀吀伀一      ∀∀Ⰰ䤀䐀开䄀䈀伀唀吀Ⰰ㈀㌀㐀Ⰰ㈀㤀㔀Ⰰ㔀 Ⰰ㄀㐀ഀ<EFBFBD>
    倀唀匀䠀䈀唀吀吀伀一      ∀∀Ⰰ䤀䐀䌀䄀一䌀䔀䰀Ⰰ㈀㤀 Ⰰ㈀㤀㔀Ⰰ㔀 Ⰰ㄀㐀ഀ<EFBFBD>
    刀吀䔀堀吀           ∀∀Ⰰ䤀䐀䌀开匀䔀䄀刀䌀䠀开䘀伀刀Ⰰ㈀㔀Ⰰ㈀㌀Ⰰ㌀㤀Ⰰ㠀ഀ<EFBFBD>
    䰀吀䔀堀吀           ∀∀Ⰰ䤀䐀䌀开刀䔀倀䰀䄀䌀䔀开圀䤀吀䠀Ⰰ㈀㄀Ⰰ㐀 Ⰰ㐀㌀Ⰰ㠀ഀ<EFBFBD>
    䰀吀䔀堀吀           ∀∀Ⰰ䤀䐀䌀开匀吀䄀吀唀匀开䴀䔀匀匀䄀䜀䔀Ⰰ㄀㄀Ⰰ㈀㤀㔀Ⰰ㄀㌀㜀Ⰰ㄀㌀ഀ<EFBFBD>
    䜀刀伀唀倀䈀伀堀        ∀∀Ⰰ䤀䐀䌀开伀倀吀䤀伀一匀䜀刀伀唀倀Ⰰ㄀㄀Ⰰ㘀㠀Ⰰ㌀㈀㤀Ⰰ㜀 <EFBFBD>
    䜀刀伀唀倀䈀伀堀        ∀∀Ⰰ䤀䐀䌀开倀刀䔀嘀䤀䔀圀䜀刀伀唀倀Ⰰ㄀㄀Ⰰ㄀㐀㔀Ⰰ㌀㈀㤀Ⰰ㄀㐀㈀ഀ<EFBFBD>
    䜀刀伀唀倀䈀伀堀        ∀∀Ⰰ䤀䐀䌀开匀䔀䄀刀䌀䠀刀䔀倀䰀䄀䌀䔀䜀刀伀唀倀Ⰰ㄀㄀Ⰰ㜀Ⰰ㌀㈀㤀Ⰰ㔀㔀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䐀䔀匀䤀䜀一䤀一䘀伀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
⌀椀昀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
䜀唀䤀䐀䔀䰀䤀一䔀匀 䐀䔀匀䤀䜀一䤀一䘀伀ഀ<EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    䤀䐀䐀开䴀䄀䤀一Ⰰ 䐀䤀䄀䰀伀䜀ഀ<EFBFBD>
    䈀䔀䜀䤀一ഀ<EFBFBD>
        䰀䔀䘀吀䴀䄀刀䜀䤀一Ⰰ ㄀㄀ഀ<EFBFBD>
        刀䤀䜀䠀吀䴀䄀刀䜀䤀一Ⰰ ㌀㐀 <EFBFBD>
        吀伀倀䴀䄀刀䜀䤀一Ⰰ 㜀ഀ<EFBFBD>
        䈀伀吀吀伀䴀䴀䄀刀䜀䤀一Ⰰ ㈀㤀㜀ഀ<EFBFBD>
    䔀一䐀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
⌀攀渀搀椀昀    ⼀⼀ 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
<EFBFBD>

View File

@ -1,5 +1,5 @@
#include "pch.h"
#include "resource.h"
#include "Generated Files/resource.h"
#include "PowerRenameUI.h"
#include "dpi_aware.h"
#include <commctrl.h>
@ -9,13 +9,9 @@
#include <thread>
#include <trace.h>
extern HINSTANCE g_hInst;
extern "C" IMAGE_DOS_HEADER __ImageBase;
int g_rgnMatchModeResIDs[] = {
IDS_ENTIREITEMNAME,
IDS_NAMEONLY,
IDS_EXTENSIONONLY
};
extern HINSTANCE g_hInst;
enum
{
@ -599,6 +595,9 @@ INT_PTR CPowerRenameUI::_DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
void CPowerRenameUI::_OnInitDlg()
{
// Load text in the dialog controls
_InitDlgText();
m_hwndLV = GetDlgItem(m_hwnd, IDC_LIST_PREVIEW);
m_listview.Init(m_hwndLV);
@ -652,6 +651,39 @@ void CPowerRenameUI::_OnInitDlg()
m_initialized = true;
}
void UpdateDlgControl(HWND dlg, int item_id, int string_id)
{
HWND control = GetDlgItem(dlg, item_id);
SetWindowText(control, GET_RESOURCE_STRING(string_id).c_str());
}
void CPowerRenameUI::_InitDlgText()
{
// load strings
SetWindowText(m_hwnd, GET_RESOURCE_STRING(IDS_APP_TITLE).c_str());
UpdateDlgControl(m_hwnd, IDC_CHECK_USEREGEX, IDS_USE_REGEX);
UpdateDlgControl(m_hwnd, IDC_CHECK_CASESENSITIVE, IDS_CASE_SENSITIVE);
UpdateDlgControl(m_hwnd, IDC_CHECK_MATCHALLOCCURENCES, IDS_MATCH_ALL);
UpdateDlgControl(m_hwnd, IDC_TRANSFORM_UPPERCASE, IDS_MAKE_UPPERCASE);
UpdateDlgControl(m_hwnd, IDC_CHECK_EXCLUDEFILES, IDS_EXCLUDE_FILES);
UpdateDlgControl(m_hwnd, IDC_CHECK_EXCLUDEFOLDERS, IDS_EXCLUDE_FOLDERS);
UpdateDlgControl(m_hwnd, IDC_CHECK_EXCLUDESUBFOLDERS, IDS_EXCLUDE_SUBFOLDER);
UpdateDlgControl(m_hwnd, IDC_TRANSFORM_LOWERCASE, IDS_MAKE_LOWERCASE);
UpdateDlgControl(m_hwnd, IDC_CHECK_ENUMITEMS, IDS_ENUMERATE_ITEMS);
UpdateDlgControl(m_hwnd, IDC_CHECK_NAMEONLY, IDS_ITEM_NAME_ONLY);
UpdateDlgControl(m_hwnd, IDC_CHECK_EXTENSIONONLY, IDS_ITEM_EXTENSION_ONLY);
UpdateDlgControl(m_hwnd, IDC_TRANSFORM_TITLECASE, IDS_MAKE_TITLECASE);
UpdateDlgControl(m_hwnd, ID_RENAME, IDS_RENAME_BUTTON);
UpdateDlgControl(m_hwnd, ID_ABOUT, IDS_HELP_BUTTON);
UpdateDlgControl(m_hwnd, IDCANCEL, IDS_CANCEL_BUTTON);
UpdateDlgControl(m_hwnd, IDC_SEARCH_FOR, IDS_SEARCH_FOR);
UpdateDlgControl(m_hwnd, IDC_REPLACE_WITH, IDS_REPLACE_WITH);
UpdateDlgControl(m_hwnd, IDC_STATUS_MESSAGE, IDS_ITEMS_SELECTED);
UpdateDlgControl(m_hwnd, IDC_OPTIONSGROUP, IDS_OPTIONS);
UpdateDlgControl(m_hwnd, IDC_PREVIEWGROUP, IDS_PREVIEW);
UpdateDlgControl(m_hwnd, IDC_SEARCHREPLACEGROUP, IDS_RENAME_CRITERIA);
}
void CPowerRenameUI::_OnCommand(_In_ WPARAM wParam, _In_ LPARAM lParam)
{
switch (LOWORD(wParam))

View File

@ -122,6 +122,7 @@ private:
void _OnSize(_In_ WPARAM wParam);
void _OnGetMinMaxInfo(_In_ LPARAM lParam);
void _OnInitDlg();
void _InitDlgText();
void _OnRename();
void _OnAbout();
void _OnCloseDlg();

View File

@ -1,155 +0,0 @@
// Microsoft Visual C++ generated resource script.
⼀⼀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀爀攀猀漀甀爀挀攀⸀栀∀ഀ<EFBFBD>
<EFBFBD>
⌀搀攀昀椀渀攀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䜀攀渀攀爀愀琀攀搀 昀爀漀洀 琀栀攀 吀䔀堀吀䤀一䌀䰀唀䐀䔀  爀攀猀漀甀爀挀攀⸀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⌀椀昀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀琀愀爀最攀琀瘀攀爀⸀栀∀ഀ<EFBFBD>
⌀攀渀搀椀昀ഀ<EFBFBD>
⌀搀攀昀椀渀攀 䄀倀匀吀唀䐀䤀伀开䠀䤀䐀䐀䔀一开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
⌀椀渀挀氀甀搀攀 ∀眀椀渀搀漀眀猀⸀栀∀ഀ<EFBFBD>
⌀甀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䠀䤀䐀䐀䔀一开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⌀甀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ 䔀渀最氀椀猀栀 唀渀椀琀攀搀 匀琀愀琀攀猀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
<EFBFBD>
⌀椀昀 ℀搀攀昀椀渀攀搀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀䄀䘀堀开吀䄀刀䜀开䔀一唀⤀ഀ<EFBFBD>
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䔀一䜀䰀䤀匀䠀Ⰰ 匀唀䈀䰀䄀一䜀开䔀一䜀䰀䤀匀䠀开唀匀ഀ<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䐀椀愀氀漀最ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
䤀䐀䐀开䴀䄀䤀一 䐀䤀䄀䰀伀䜀䔀堀     ㌀㘀㐀Ⰰ ㌀㄀㜀ഀ<EFBFBD>
匀吀夀䰀䔀 䐀匀开匀䔀吀䘀伀一吀  䐀匀开䘀䤀堀䔀䐀匀夀匀  䐀匀开䌀䔀一吀䔀刀  圀匀开䴀䤀一䤀䴀䤀娀䔀䈀伀堀  圀匀开䴀䄀堀䤀䴀䤀娀䔀䈀伀堀  圀匀开倀伀倀唀倀  圀匀开䌀䄀倀吀䤀伀一  圀匀开匀夀匀䴀䔀一唀  圀匀开吀䠀䤀䌀䬀䘀刀䄀䴀䔀ഀ<EFBFBD>
䌀䄀倀吀䤀伀一 ∀倀漀眀攀爀刀攀渀愀洀攀∀ഀ<EFBFBD>
䘀伀一吀 㠀Ⰰ ∀䴀匀 匀栀攀氀氀 䐀氀最∀Ⰰ       砀㄀ഀ<EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    䔀䐀䤀吀吀䔀堀吀        䤀䐀䌀开䔀䐀䤀吀开匀䔀䄀刀䌀䠀䘀伀刀Ⰰ㜀㄀Ⰰ㈀ Ⰰ㈀㔀㤀Ⰰ㄀㌀Ⰰ䔀匀开䄀唀吀伀䠀匀䌀刀伀䰀䰀ഀ<EFBFBD>
    䔀䐀䤀吀吀䔀堀吀        䤀䐀䌀开䔀䐀䤀吀开刀䔀倀䰀䄀䌀䔀圀䤀吀䠀Ⰰ㜀㄀Ⰰ㌀㠀Ⰰ㈀㔀㤀Ⰰ㄀㌀Ⰰ䔀匀开䄀唀吀伀䠀匀䌀刀伀䰀䰀ഀ<EFBFBD>
    䌀伀一吀刀伀䰀         ∀唀猀攀 刀攀最甀氀愀爀 䔀砀瀀爀攀猀猀椀漀渀猀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开唀匀䔀刀䔀䜀䔀堀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㄀Ⰰ㠀㌀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䌀愀猀攀 匀攀渀猀椀琀椀瘀攀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䌀䄀匀䔀匀䔀一匀䤀吀䤀嘀䔀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㄀Ⰰ㤀㔀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䴀愀琀挀栀 䄀氀氀 伀挀挀甀爀爀攀渀挀攀猀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䴀䄀吀䌀䠀䄀䰀䰀伀䌀䌀唀刀䔀一䌀䔀匀Ⰰഀ<EFBFBD>
                    ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㄀Ⰰ㄀ 㜀Ⰰ㤀㠀Ⰰ㄀  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䴀愀欀攀 唀瀀瀀攀爀挀愀猀攀∀Ⰰ 䤀䐀䌀开吀刀䄀一匀䘀伀刀䴀开唀倀倀䔀刀䌀䄀匀䔀Ⰰ ∀䈀甀琀琀漀渀∀Ⰰ 䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ ㈀㄀Ⰰ ㄀㄀㤀Ⰰ 㤀㠀Ⰰ  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䔀砀挀氀甀搀攀 䘀椀氀攀猀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀堀䌀䰀唀䐀䔀䘀䤀䰀䔀匀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㄀㌀㈀Ⰰ㠀㌀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䔀砀挀氀甀搀攀 䘀漀氀搀攀爀猀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀堀䌀䰀唀䐀䔀䘀伀䰀䐀䔀刀匀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㄀㌀㈀Ⰰ㤀㔀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䔀砀挀氀甀搀攀 匀甀戀昀漀氀搀攀爀 䤀琀攀洀猀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀堀䌀䰀唀䐀䔀匀唀䈀䘀伀䰀䐀䔀刀匀Ⰰഀ<EFBFBD>
                    ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㄀㌀㈀Ⰰ㄀ 㜀Ⰰ㤀㠀Ⰰ㄀  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䴀愀欀攀 䰀漀眀攀爀挀愀猀攀∀Ⰰ 䤀䐀䌀开吀刀䄀一匀䘀伀刀䴀开䰀伀圀䔀刀䌀䄀匀䔀Ⰰ ∀䈀甀琀琀漀渀∀Ⰰ 䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ ㄀㌀㈀Ⰰ ㄀㄀㤀Ⰰ 㤀㠀Ⰰ  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䔀渀甀洀攀爀愀琀攀 䤀琀攀洀猀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀一唀䴀䤀吀䔀䴀匀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㐀㄀Ⰰ㠀㌀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䤀琀攀洀 一愀洀攀 伀渀氀礀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开一䄀䴀䔀伀一䰀夀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㐀㄀Ⰰ㤀㔀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䤀琀攀洀 䔀砀琀攀渀猀椀漀渀 伀渀氀礀∀Ⰰ䤀䐀䌀开䌀䠀䔀䌀䬀开䔀堀吀䔀一匀䤀伀一伀一䰀夀Ⰰ∀䈀甀琀琀漀渀∀Ⰰ䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㐀㄀Ⰰ㄀ 㜀Ⰰ㤀㠀Ⰰ㄀ <EFBFBD>
    䌀伀一吀刀伀䰀         ∀䴀愀欀攀 吀椀琀氀攀挀愀猀攀∀Ⰰ 䤀䐀䌀开吀刀䄀一匀䘀伀刀䴀开吀䤀吀䰀䔀䌀䄀匀䔀Ⰰ ∀䈀甀琀琀漀渀∀Ⰰ 䈀匀开䄀唀吀伀䌀䠀䔀䌀䬀䈀伀堀  圀匀开吀䄀䈀匀吀伀倀Ⰰ ㈀㐀㄀Ⰰ ㄀㄀㤀Ⰰ 㤀㠀Ⰰ  <EFBFBD>
    䌀伀一吀刀伀䰀         ∀∀Ⰰ䤀䐀䌀开䰀䤀匀吀开倀刀䔀嘀䤀䔀圀Ⰰ∀匀礀猀䰀椀猀琀嘀椀攀眀㌀㈀∀Ⰰ䰀嘀匀开刀䔀倀伀刀吀  䰀嘀匀开䄀䰀䤀䜀一䰀䔀䘀吀  䰀嘀匀开伀圀一䔀刀䐀䄀吀䄀  圀匀开䈀伀刀䐀䔀刀  圀匀开吀䄀䈀匀吀伀倀Ⰰ㈀㈀Ⰰ㄀㘀 Ⰰ㌀ 㠀Ⰰ㄀㄀㘀 <EFBFBD>
    䐀䔀䘀倀唀匀䠀䈀唀吀吀伀一   ∀☀刀攀渀愀洀攀∀Ⰰ䤀䐀开刀䔀一䄀䴀䔀Ⰰ㄀㜀㠀Ⰰ㈀㤀㔀Ⰰ㔀 Ⰰ㄀㐀ഀ<EFBFBD>
    倀唀匀䠀䈀唀吀吀伀一      ∀☀䠀攀氀瀀∀Ⰰ䤀䐀开䄀䈀伀唀吀Ⰰ㈀㌀㐀Ⰰ㈀㤀㔀Ⰰ㔀 Ⰰ㄀㐀ഀ<EFBFBD>
    倀唀匀䠀䈀唀吀吀伀一      ∀☀䌀愀渀挀攀氀∀Ⰰ䤀䐀䌀䄀一䌀䔀䰀Ⰰ㈀㤀 Ⰰ㈀㤀㔀Ⰰ㔀 Ⰰ㄀㐀ഀ<EFBFBD>
    刀吀䔀堀吀           ∀匀攀愀爀挀栀 昀漀爀㨀∀Ⰰ䤀䐀䌀开匀吀䄀吀䤀䌀Ⰰ㈀㔀Ⰰ㈀㌀Ⰰ㌀㤀Ⰰ㠀ഀ<EFBFBD>
    䰀吀䔀堀吀           ∀刀攀瀀氀愀挀攀 眀椀琀栀㨀∀Ⰰ䤀䐀䌀开匀吀䄀吀䤀䌀Ⰰ㈀㄀Ⰰ㐀 Ⰰ㐀㌀Ⰰ㠀ഀ<EFBFBD>
    䰀吀䔀堀吀           ∀䤀琀攀洀猀 匀攀氀攀挀琀攀搀㨀    刀攀渀愀洀椀渀最㨀  ∀Ⰰ䤀䐀䌀开匀吀䄀吀唀匀开䴀䔀匀匀䄀䜀䔀Ⰰ㄀㄀Ⰰ㈀㤀㔀Ⰰ㄀㌀㜀Ⰰ㄀㌀ഀ<EFBFBD>
    䜀刀伀唀倀䈀伀堀        ∀伀瀀琀椀漀渀猀∀Ⰰ䤀䐀䌀开伀倀吀䤀伀一匀䜀刀伀唀倀Ⰰ㄀㄀Ⰰ㘀㠀Ⰰ㌀㈀㤀Ⰰ㜀 <EFBFBD>
    䜀刀伀唀倀䈀伀堀        ∀倀爀攀瘀椀攀眀∀Ⰰ䤀䐀䌀开倀刀䔀嘀䤀䔀圀䜀刀伀唀倀Ⰰ㄀㄀Ⰰ㄀㐀㔀Ⰰ㌀㈀㤀Ⰰ㄀㐀㈀ഀ<EFBFBD>
    䜀刀伀唀倀䈀伀堀        ∀䔀渀琀攀爀 琀栀攀 挀爀椀琀攀爀椀愀 戀攀氀漀眀 琀漀 爀攀渀愀洀攀 琀栀攀 椀琀攀洀猀∀Ⰰ䤀䐀䌀开匀䔀䄀刀䌀䠀刀䔀倀䰀䄀䌀䔀䜀刀伀唀倀Ⰰ㄀㄀Ⰰ㜀Ⰰ㌀㈀㤀Ⰰ㔀㔀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䐀䔀匀䤀䜀一䤀一䘀伀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
⌀椀昀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
䜀唀䤀䐀䔀䰀䤀一䔀匀 䐀䔀匀䤀䜀一䤀一䘀伀ഀ<EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    䤀䐀䐀开䴀䄀䤀一Ⰰ 䐀䤀䄀䰀伀䜀ഀ<EFBFBD>
    䈀䔀䜀䤀一ഀ<EFBFBD>
        䰀䔀䘀吀䴀䄀刀䜀䤀一Ⰰ ㄀㄀ഀ<EFBFBD>
        刀䤀䜀䠀吀䴀䄀刀䜀䤀一Ⰰ ㌀㐀 <EFBFBD>
        吀伀倀䴀䄀刀䜀䤀一Ⰰ 㜀ഀ<EFBFBD>
        䈀伀吀吀伀䴀䴀䄀刀䜀䤀一Ⰰ ㈀㤀㜀ഀ<EFBFBD>
    䔀一䐀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
⌀攀渀搀椀昀    ⼀⼀ 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
<EFBFBD>
<EFBFBD>
⌀椀昀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 吀䔀堀吀䤀一䌀䰀唀䐀䔀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
 吀䔀堀吀䤀一䌀䰀唀䐀䔀 <EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    ∀爀攀猀漀甀爀挀攀⸀栀尀 ∀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
 吀䔀堀吀䤀一䌀䰀唀䐀䔀 <EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    ∀⌀椀昀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀尀爀尀渀∀ഀ<EFBFBD>
    ∀⌀椀渀挀氀甀搀攀 ∀∀琀愀爀最攀琀瘀攀爀⸀栀∀∀尀爀尀渀∀ഀ<EFBFBD>
    ∀⌀攀渀搀椀昀尀爀尀渀∀ഀ<EFBFBD>
    ∀⌀搀攀昀椀渀攀 䄀倀匀吀唀䐀䤀伀开䠀䤀䐀䐀䔀一开匀夀䴀䈀伀䰀匀尀爀尀渀∀ഀ<EFBFBD>
    ∀⌀椀渀挀氀甀搀攀 ∀∀眀椀渀搀漀眀猀⸀栀∀∀尀爀尀渀∀ഀ<EFBFBD>
    ∀⌀甀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䠀䤀䐀䐀䔀一开匀夀䴀䈀伀䰀匀尀爀尀渀∀ഀ<EFBFBD>
    ∀尀 ∀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
 吀䔀堀吀䤀一䌀䰀唀䐀䔀 <EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    ∀尀爀尀渀∀ഀ<EFBFBD>
    ∀尀 ∀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
⌀攀渀搀椀昀    ⼀⼀ 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䤀挀漀渀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
⼀⼀ 䤀挀漀渀 眀椀琀栀 氀漀眀攀猀琀 䤀䐀 瘀愀氀甀攀 瀀氀愀挀攀搀 昀椀爀猀琀 琀漀 攀渀猀甀爀攀 愀瀀瀀氀椀挀愀琀椀漀渀 椀挀漀渀ഀ<EFBFBD>
⼀⼀ 爀攀洀愀椀渀猀 挀漀渀猀椀猀琀攀渀琀 漀渀 愀氀氀 猀礀猀琀攀洀猀⸀ഀ<EFBFBD>
䤀䐀䤀开刀䔀一䄀䴀䔀              䤀䌀伀一                    ∀倀漀眀攀爀刀攀渀愀洀攀⸀椀挀漀∀ഀ<EFBFBD>
<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
䈀䔀䜀䤀一ഀ<EFBFBD>
    䤀䐀匀开䄀倀倀开吀䤀吀䰀䔀           ∀倀漀眀攀爀刀攀渀愀洀攀∀ഀ<EFBFBD>
    䤀䐀匀开刀䔀一䄀䴀䔀䐀             ∀刀攀渀愀洀攀搀∀ഀ<EFBFBD>
    䤀䐀匀开伀刀䤀䜀䤀一䄀䰀            ∀伀爀椀最椀渀愀氀∀ഀ<EFBFBD>
    䤀䐀匀开䰀䤀匀吀嘀䤀䔀圀开䔀䴀倀吀夀      ∀䄀氀氀 椀琀攀洀猀 栀愀瘀攀 戀攀攀渀 昀椀氀琀攀爀攀搀 漀甀琀⸀尀渀倀氀攀愀猀攀 猀攀氀攀挀琀 昀爀漀洀 琀栀攀 漀瀀琀椀漀渀猀 愀戀漀瘀攀 琀漀 猀栀漀眀 椀琀攀洀猀⸀∀ഀ<EFBFBD>
    䤀䐀匀开䔀一吀䤀刀䔀䤀吀䔀䴀一䄀䴀䔀      ∀䤀琀攀洀 一愀洀攀 愀渀搀 䔀砀琀攀渀猀椀漀渀∀ഀ<EFBFBD>
    䤀䐀匀开䌀伀唀一吀匀䰀䄀䈀䔀䰀䘀䴀吀      ∀䤀琀攀洀猀 匀攀氀攀挀琀攀搀㨀 ─甀  刀攀渀愀洀椀渀最㨀 ─甀∀ഀ<EFBFBD>
䔀一䐀ഀ<EFBFBD>
<EFBFBD>
⌀攀渀搀椀昀    ⼀⼀ 䔀渀最氀椀猀栀 唀渀椀琀攀搀 匀琀愀琀攀猀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>
⌀椀昀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
⼀⼀ 䜀攀渀攀爀愀琀攀搀 昀爀漀洀 琀栀攀 吀䔀堀吀䤀一䌀䰀唀䐀䔀  爀攀猀漀甀爀挀攀⸀ഀ<EFBFBD>
⼀⼀ഀ<EFBFBD>
<EFBFBD>
<EFBFBD>
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
⌀攀渀搀椀昀    ⼀⼀ 渀漀琀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
<EFBFBD>
<EFBFBD>

View File

@ -11,6 +11,9 @@
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<Target Name="GenerateResourceFiles" BeforeTargets="PrepareForBuild">
<Exec Command="powershell -NonInteractive -executionpolicy Unrestricted $(SolutionDir)tools\build\convert-resx-to-rc.ps1 . resource.base.h resource.h PowerRenameUI.base.rc PowerRenameUI.rc 1001" />
</Target>
<PropertyGroup Label="Globals">
<ProjectGuid>{0E072714-D127-460B-AFAD-B4C40B412798}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
@ -164,8 +167,9 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="PowerRenameUI.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="Generated Files/resource.h" />
<ClInclude Include="pch.h" />
<None Include="resource.base.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
@ -175,7 +179,8 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="PowerRenameUI.rc" />
<ResourceCompile Include="Generated Files/PowerRenameUI.rc" />
<None Include="PowerRenameUI.base.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="Rename.ico" />
@ -183,6 +188,9 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources.resx" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.200729.8\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.200729.8\build\native\Microsoft.Windows.CppWinRT.targets')" />

View File

@ -1,19 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="PowerRenameUI.cpp" />
<ClCompile Include="pch.cpp" />
<ClCompile Include="pch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="PowerRenameUI.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="PowerRenameUI.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="resource.h">
<ClInclude Include="Generated Files/resource.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="pch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="PowerRenameUI.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.base.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="Rename.ico" />
</ItemGroup>
<ItemGroup>
<Filter Include="Resource Files">
@ -22,13 +32,32 @@
<Filter Include="Header Files">
<UniqueIdentifier>{dc9de3c4-d79b-45f9-9a5c-671f310928a3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="PowerRenameUI.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
<Filter Include="Generated Files">
<UniqueIdentifier>{3eee15a8-a99a-423b-8420-a76aa4458c4a}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{1bd24b81-b44b-4577-be0b-d492cf0d43fe}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Generated Files/PowerRenameUI.rc">
<Filter>Generated Files</Filter>
</ResourceCompile>
<ResourceCompile Include="PowerRenameUI.base.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Image Include="Rename.ico">
<Filter>Resource Files</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources.resx">
<Filter>Resource Files</Filter>
</EmbeddedResource>
</ItemGroup>
</Project>

View File

@ -0,0 +1,202 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="App_Title" xml:space="preserve">
<value>PowerRename</value>
</data>
<data name="Renamed" xml:space="preserve">
<value>Renamed</value>
</data>
<data name="Original" xml:space="preserve">
<value>Original</value>
</data>
<data name="Listview_Empty" xml:space="preserve">
<value>All items have been filtered out.
Please select from the options above to show items.</value>
</data>
<data name="Entireitemname" xml:space="preserve">
<value>Item Name and Extension</value>
</data>
<data name="Countslabelfmt" xml:space="preserve">
<value>Items Selected: %u | Renaming: %u</value>
</data>
<data name="Use_Regex" xml:space="preserve">
<value>Use Regular Expressions</value>
</data>
<data name="Case_Sensitive" xml:space="preserve">
<value>Case Sensitive</value>
</data>
<data name="Match_All" xml:space="preserve">
<value>Match All Occurrences</value>
</data>
<data name="Make_Uppercase" xml:space="preserve">
<value>Make Uppercase</value>
</data>
<data name="Exclude_Files" xml:space="preserve">
<value>Exclude Files</value>
</data>
<data name="Exclude_Folders" xml:space="preserve">
<value>Exclude Folders</value>
</data>
<data name="Exclude_Subfolder" xml:space="preserve">
<value>Exclude Subfolder Items</value>
</data>
<data name="Make_Lowercase" xml:space="preserve">
<value>Make Lowercase</value>
</data>
<data name="Enumerate_Items" xml:space="preserve">
<value>Enumerate Items</value>
</data>
<data name="Item_Name_Only" xml:space="preserve">
<value>Item Name Only</value>
</data>
<data name="Item_Extension_Only" xml:space="preserve">
<value>Item Extension Only</value>
</data>
<data name="Make_Titlecase" xml:space="preserve">
<value>Make Titlecase</value>
</data>
<data name="Rename_Button" xml:space="preserve">
<value>&amp;Rename</value>
</data>
<data name="Help_Button" xml:space="preserve">
<value>&amp;Help</value>
</data>
<data name="Cancel_Button" xml:space="preserve">
<value>&amp;Cancel</value>
</data>
<data name="Search_For" xml:space="preserve">
<value>Search for:</value>
</data>
<data name="Replace_With" xml:space="preserve">
<value>Replace with:</value>
</data>
<data name="Items_Selected" xml:space="preserve">
<value>Items Selected: 0 | Renaming: 0</value>
</data>
<data name="Options" xml:space="preserve">
<value>Options</value>
</data>
<data name="Preview" xml:space="preserve">
<value>Preview</value>
</data>
<data name="Rename_Criteria" xml:space="preserve">
<value>Enter the criteria below to rename the items</value>
</data>
</root>

View File

@ -0,0 +1,33 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by PowerRenameUI.rc
//
#define IDC_MYICON 7
#define ID_RENAME 8
#define ID_ABOUT 9
#define IDD_POWERRENAME_DIALOG 3001
#define IDC_EDIT_SEARCHFOR 3002
#define IDC_EDIT_REPLACEWITH 3003
#define IDC_LIST_PREVIEW 3004
#define IDC_CHECK_USEREGEX 3005
#define IDC_STATUS_MESSAGE 3006
#define IDC_CHECK_EXCLUDESUBFOLDERS 3007
#define IDC_CHECK_ENUMITEMS 3008
#define IDC_CHECK_EXCLUDEFILES 3009
#define IDC_CHECK_CASESENSITIVE 3010
#define IDC_CHECK_MATCHALLOCCURENCES 3011
#define IDC_CHECK_EXCLUDEFOLDERS 3012
#define IDC_CHECK_NAMEONLY 3013
#define IDC_CHECK_EXTENSIONONLY 3014
#define IDC_PREVIEWGROUP 3015
#define IDC_OPTIONSGROUP 3016
#define IDC_SEARCHREPLACEGROUP 3017
#define IDC_TRANSFORM_UPPERCASE 3018
#define IDC_TRANSFORM_LOWERCASE 3019
#define IDC_TRANSFORM_TITLECASE 3020
#define IDC_SEARCH_FOR 3021
#define IDC_REPLACE_WITH 3022
#define IDC_STATIC -1
#define IDR_MAINFRAME 3023
#define IDD_MAIN 3024
#define IDI_RENAME 2001

View File

@ -1,51 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by PowerRenameUI.rc
//
#define IDC_MYICON 7
#define ID_RENAME 8
#define ID_ABOUT 9
#define IDD_POWERRENAME_DIALOG 102
#define IDS_APP_TITLE 103
#define IDS_RENAMED 104
#define IDS_ORIGINAL 105
#define IDS_LISTVIEW_EMPTY 106
#define IDS_ENTIREITEMNAME 107
#define IDS_NAMEONLY 108
#define IDS_EXTENSIONONLY 109
#define IDS_COUNTSLABELFMT 111
#define IDR_MAINFRAME 128
#define IDD_MAIN 129
#define IDI_RENAME 132
#define IDC_EDIT_SEARCHFOR 1002
#define IDC_EDIT_REPLACEWITH 1003
#define IDC_LIST_PREVIEW 1004
#define IDC_CHECK_USEREGEX 1005
#define IDC_STATUS_MESSAGE 1006
#define IDC_CHECK_EXCLUDESUBFOLDERS 1007
#define IDC_CHECK_ENUMITEMS 1008
#define IDC_CHECK_EXCLUDEFILES 1009
#define IDC_CHECK_CASESENSITIVE 1010
#define IDC_CHECK_MATCHALLOCCURENCES 1011
#define IDC_CHECK_EXCLUDEFOLDERS 1012
#define IDC_CHECK_NAMEONLY 1013
#define IDC_CHECK_EXTENSIONONLY 1014
#define IDC_PREVIEWGROUP 1015
#define IDC_OPTIONSGROUP 1016
#define IDC_SEARCHREPLACEGROUP 1017
#define IDC_TRANSFORM_UPPERCASE 1018
#define IDC_TRANSFORM_LOWERCASE 1019
#define IDC_TRANSFORM_TITLECASE 1020
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 133
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1007
#define _APS_NEXT_SYMED_VALUE 110
#endif
#endif

View File

@ -15,6 +15,16 @@ $baseRCFileName = $args[3]
# Target file name of the resource rc file, which will be used in code - Example: ProjectName.rc
$generatedRCFileName = $args[4]
# Optional argument: Initial resource id in the resource header file. By default it is 101
if ($args.Count -eq 6)
{
$initResourceID = $args[5]
}
else
{
$initResourceID = 101
}
# Temporary file created used for resgen
$tempFile = "temporaryResourceFile.txt"
@ -92,7 +102,7 @@ Foreach-Object {
$newLinesForRCFile = ""
$newLinesForHeaderFile = ""
$count = 101
$count = $initResourceID
try {
foreach ($line in (Get-Content $tempFile -Encoding unicode)) {