mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-06-07 09:28:03 +08:00
[PowerRename] Add option for Capitalization (#10213)
* Add camelcase instances + helper translation * Add camel case testing * Update Helpers.cpp * Update PowerRenameUI.cpp * Update src/modules/powerrename/ui/PowerRenameUI.cpp Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com> * Change camel case to capitalized, move ui * Update PowerRenameManagerTests.cpp * Update PowerRenameUI.base.rc * Update PowerRenameUI.base.rc Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com>
This commit is contained in:
parent
c08be14919
commit
0a6de4561f
1
.github/actions/spell-check/expect.txt
vendored
1
.github/actions/spell-check/expect.txt
vendored
@ -192,6 +192,7 @@ buildtransitive
|
|||||||
BValue
|
BValue
|
||||||
bytearray
|
bytearray
|
||||||
callbackptr
|
callbackptr
|
||||||
|
capitalized
|
||||||
CANRENAME
|
CANRENAME
|
||||||
Captureascreenshot
|
Captureascreenshot
|
||||||
CAPTURECHANGED
|
CAPTURECHANGED
|
||||||
|
@ -159,6 +159,42 @@ HRESULT GetTransformedFileName(_Out_ PWSTR result, UINT cchMax, _In_ PCWSTR sour
|
|||||||
{
|
{
|
||||||
hr = StringCchCopy(result, cchMax, source);
|
hr = StringCchCopy(result, cchMax, source);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if (flags & Capitalized)
|
||||||
|
{
|
||||||
|
if (!(flags & ExtensionOnly))
|
||||||
|
{
|
||||||
|
std::wstring stem = fs::path(source).stem().wstring();
|
||||||
|
std::wstring extension = fs::path(source).extension().wstring();
|
||||||
|
|
||||||
|
size_t stemLength = stem.length();
|
||||||
|
|
||||||
|
while (stemLength > 0 && (iswspace(stem[stemLength - 1]) || iswpunct(stem[stemLength - 1])))
|
||||||
|
{
|
||||||
|
stemLength--;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < stemLength; i++)
|
||||||
|
{
|
||||||
|
if (!i || iswspace(stem[i - 1]) || iswpunct(stem[i - 1]))
|
||||||
|
{
|
||||||
|
if (iswspace(stem[i]) || iswpunct(stem[i]))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
stem[i] = towupper(stem[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stem[i] = towlower(stem[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
hr = StringCchPrintf(result, cchMax, L"%s%s", stem.c_str(), extension.c_str());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hr = StringCchCopy(result, cchMax, source);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,8 @@ enum PowerRenameFlags
|
|||||||
ExtensionOnly = 0x100,
|
ExtensionOnly = 0x100,
|
||||||
Uppercase = 0x200,
|
Uppercase = 0x200,
|
||||||
Lowercase = 0x400,
|
Lowercase = 0x400,
|
||||||
Titlecase = 0x800
|
Titlecase = 0x800,
|
||||||
|
Capitalized = 0x1000
|
||||||
};
|
};
|
||||||
|
|
||||||
enum PowerRenameFilters
|
enum PowerRenameFilters
|
||||||
|
@ -945,7 +945,7 @@ DWORD WINAPI CPowerRenameManager::s_regexWorkerThread(_In_ void* pv)
|
|||||||
// as nullptr so we clear the renamed column
|
// as nullptr so we clear the renamed column
|
||||||
// Except string transformation is selected.
|
// Except string transformation is selected.
|
||||||
|
|
||||||
if (newName == nullptr && (flags & Uppercase || flags & Lowercase || flags & Titlecase))
|
if (newName == nullptr && (flags & Uppercase || flags & Lowercase || flags & Titlecase || flags & Capitalized))
|
||||||
{
|
{
|
||||||
SHStrDup(sourceName, &newName);
|
SHStrDup(sourceName, &newName);
|
||||||
}
|
}
|
||||||
@ -983,7 +983,7 @@ DWORD WINAPI CPowerRenameManager::s_regexWorkerThread(_In_ void* pv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
wchar_t transformedName[MAX_PATH] = { 0 };
|
wchar_t transformedName[MAX_PATH] = { 0 };
|
||||||
if (newNameToUse != nullptr && (flags & Uppercase || flags & Lowercase || flags & Titlecase))
|
if (newNameToUse != nullptr && (flags & Uppercase || flags & Lowercase || flags & Titlecase || flags & Capitalized))
|
||||||
{
|
{
|
||||||
winrt::check_hresult(GetTransformedFileName(transformedName, ARRAYSIZE(transformedName), newNameToUse, flags));
|
winrt::check_hresult(GetTransformedFileName(transformedName, ARRAYSIZE(transformedName), newNameToUse, flags));
|
||||||
newNameToUse = transformedName;
|
newNameToUse = transformedName;
|
||||||
|
@ -29,9 +29,9 @@
|
|||||||
|