mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-06-07 01:08:18 +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
|
||||
bytearray
|
||||
callbackptr
|
||||
capitalized
|
||||
CANRENAME
|
||||
Captureascreenshot
|
||||
CAPTURECHANGED
|
||||
|
@ -159,6 +159,42 @@ HRESULT GetTransformedFileName(_Out_ PWSTR result, UINT cchMax, _In_ PCWSTR sour
|
||||
{
|
||||
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
|
||||
{
|
||||
|
@ -14,7 +14,8 @@ enum PowerRenameFlags
|
||||
ExtensionOnly = 0x100,
|
||||
Uppercase = 0x200,
|
||||
Lowercase = 0x400,
|
||||
Titlecase = 0x800
|
||||
Titlecase = 0x800,
|
||||
Capitalized = 0x1000
|
||||
};
|
||||
|
||||
enum PowerRenameFilters
|
||||
|
@ -945,7 +945,7 @@ DWORD WINAPI CPowerRenameManager::s_regexWorkerThread(_In_ void* pv)
|
||||
// as nullptr so we clear the renamed column
|
||||
// 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);
|
||||
}
|
||||
@ -983,7 +983,7 @@ DWORD WINAPI CPowerRenameManager::s_regexWorkerThread(_In_ void* pv)
|
||||
}
|
||||
|
||||
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));
|
||||
newNameToUse = transformedName;
|
||||
|
@ -29,9 +29,9 @@
|
||||
|