[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 коммит произвёл GitHub
Родитель aebd7657ef
Коммит 3ede1a0b53
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
23 изменённых файлов: 565 добавлений и 125 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -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>

Просмотреть файл

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

Двоичные данные
src/modules/powerrename/dll/PowerRenameExt.base.rc Normal 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;

Двоичные данные
src/modules/powerrename/dll/PowerRenameExt.rc

Двоичный файл не отображается.

Просмотреть файл

@ -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')" />

Просмотреть файл

@ -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>

Просмотреть файл

@ -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>

Просмотреть файл

@ -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;

Просмотреть файл

@ -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
//////////////////////////////

Просмотреть файл

@ -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

Просмотреть файл

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

Двоичные данные
src/modules/powerrename/ui/PowerRenameUI.base.rc Normal 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))

Просмотреть файл

@ -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();

Двоичные данные
src/modules/powerrename/ui/PowerRenameUI.rc

Двоичный файл не отображается.

Просмотреть файл

@ -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')" />

Просмотреть файл

@ -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>

Просмотреть файл

@ -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>

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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)) {