|
@@ -3,7 +3,7 @@
|
|
|
-------------------------------------------------------------------------
|
|
|
Multi-Rename Tool dialog window
|
|
|
|
|
|
- Copyright (C) 2007-2021 Alexander Koblov ([email protected])
|
|
|
+ Copyright (C) 2007-2022 Alexander Koblov ([email protected])
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
it under the terms of the GNU General Public License as published by
|
|
@@ -66,6 +66,7 @@ type
|
|
|
FReplace: string;
|
|
|
FRegExp: boolean;
|
|
|
FUseSubs: boolean;
|
|
|
+ FCaseSens: Boolean;
|
|
|
FCounter: string;
|
|
|
FInterval: string;
|
|
|
FWidth: integer;
|
|
@@ -82,6 +83,7 @@ type
|
|
|
property Replace: string read FReplace write FReplace;
|
|
|
property RegExp: boolean read FRegExp write FRegExp;
|
|
|
property UseSubs: boolean read FUseSubs write FUseSubs;
|
|
|
+ property CaseSens: Boolean read FCaseSens write FCaseSens;
|
|
|
property Counter: string read FCounter write FCounter;
|
|
|
property Interval: string read FInterval write FInterval;
|
|
|
property Width: integer read FWidth write FWidth;
|
|
@@ -120,6 +122,8 @@ type
|
|
|
|
|
|
{ TfrmMultiRename }
|
|
|
TfrmMultiRename = class(TAloneForm, IFormCommands)
|
|
|
+ cbCaseSens: TCheckBox;
|
|
|
+ pnlButtons: TPanel;
|
|
|
StringGrid: TStringGrid;
|
|
|
pnlOptions: TPanel;
|
|
|
pnlOptionsLeft: TPanel;
|
|
@@ -460,6 +464,7 @@ begin
|
|
|
FReplace := '';
|
|
|
FRegExp := False;
|
|
|
FUseSubs := False;
|
|
|
+ FCaseSens := False;
|
|
|
FCounter := '1';
|
|
|
FInterval := '1';
|
|
|
FWidth := 0;
|
|
@@ -972,6 +977,7 @@ begin
|
|
|
AMultiRenamePreset.Replace := AConfig.GetValue(ANode, 'Replace', '');
|
|
|
AMultiRenamePreset.RegExp := AConfig.GetValue(ANode, 'RegExp', False);
|
|
|
AMultiRenamePreset.UseSubs := AConfig.GetValue(ANode, 'UseSubs', False);
|
|
|
+ AMultiRenamePreset.CaseSens := AConfig.GetValue(ANode, 'CaseSensitive', False);
|
|
|
AMultiRenamePreset.Counter := AConfig.GetValue(ANode, 'Counter', '1');
|
|
|
AMultiRenamePreset.Interval := AConfig.GetValue(ANode, 'Interval', '1');
|
|
|
AMultiRenamePreset.Width := AConfig.GetValue(ANode, 'Width', 0);
|
|
@@ -1070,6 +1076,7 @@ begin
|
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Replace := edReplace.Text;
|
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].RegExp := cbRegExp.Checked;
|
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].UseSubs := cbUseSubs.Checked;
|
|
|
+ FMultiRenamePresetList.MultiRenamePreset[PresetIndex].CaseSens := cbCaseSens.Checked;
|
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Counter := edPoc.Text;
|
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Interval := edInterval.Text;
|
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Width := cmbxWidth.ItemIndex;
|
|
@@ -1122,6 +1129,7 @@ begin
|
|
|
AConfig.AddValue(SubNode, 'Replace', FMultiRenamePresetList.MultiRenamePreset[i].Replace);
|
|
|
AConfig.AddValue(SubNode, 'RegExp', FMultiRenamePresetList.MultiRenamePreset[i].RegExp);
|
|
|
AConfig.AddValue(SubNode, 'UseSubs', FMultiRenamePresetList.MultiRenamePreset[i].UseSubs);
|
|
|
+ AConfig.AddValue(SubNode, 'CaseSensitive', FMultiRenamePresetList.MultiRenamePreset[i].CaseSens);
|
|
|
AConfig.AddValue(SubNode, 'Counter', FMultiRenamePresetList.MultiRenamePreset[i].Counter);
|
|
|
AConfig.AddValue(SubNode, 'Interval', FMultiRenamePresetList.MultiRenamePreset[i].Interval);
|
|
|
AConfig.AddValue(SubNode, 'Width', FMultiRenamePresetList.MultiRenamePreset[i].Width);
|
|
@@ -2027,6 +2035,7 @@ function TfrmMultiRename.FreshText(ItemIndex: integer): string;
|
|
|
var
|
|
|
I: integer;
|
|
|
bError: boolean;
|
|
|
+ Flags: TReplaceFlags;
|
|
|
sTmpName, sTmpExt: string;
|
|
|
begin
|
|
|
bError := False;
|
|
@@ -2050,6 +2059,7 @@ begin
|
|
|
begin
|
|
|
if cbRegExp.Checked then
|
|
|
try
|
|
|
+ FRegExp.ModifierI := not cbCaseSens.Checked;
|
|
|
Result := UTF16ToUTF8(FRegExp.Replace(CeUtf8ToUtf16(Result), CeUtf8ToUtf16(edReplace.Text), cbUseSubs.Checked));
|
|
|
except
|
|
|
Result := rsMsgErrRegExpSyntax;
|
|
@@ -2057,11 +2067,14 @@ begin
|
|
|
end
|
|
|
else
|
|
|
begin
|
|
|
+ Flags:= [rfReplaceAll];
|
|
|
+ if not cbCaseSens.Checked then
|
|
|
+ Flags+= [rfIgnoreCase];
|
|
|
// Many at once, split find and replace by |
|
|
|
if (FReplaceText.Count = 0) then
|
|
|
FReplaceText.Add('');
|
|
|
for I := 0 to FFindText.Count - 1 do
|
|
|
- Result := StringReplace(Result, FFindText[I], FReplaceText[Min(I, FReplaceText.Count - 1)], [rfReplaceAll, rfIgnoreCase]);
|
|
|
+ Result := UTF8StringReplace(Result, FFindText[I], FReplaceText[Min(I, FReplaceText.Count - 1)], Flags);
|
|
|
end;
|
|
|
end;
|
|
|
|
|
@@ -2232,6 +2245,7 @@ begin
|
|
|
edReplace.Text := '';
|
|
|
cbRegExp.Checked := False;
|
|
|
cbUseSubs.Checked := False;
|
|
|
+ cbCaseSens.Checked := False;
|
|
|
cbNameMaskStyle.ItemIndex := 0;
|
|
|
cmbExtensionStyle.ItemIndex := 0;
|
|
|
edPoc.Text := '1';
|
|
@@ -2566,6 +2580,7 @@ begin
|
|
|
edReplace.Text := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Replace;
|
|
|
cbRegExp.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].RegExp;
|
|
|
cbUseSubs.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].UseSubs;
|
|
|
+ cbCaseSens.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].CaseSens;
|
|
|
edPoc.Text := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Counter;
|
|
|
edInterval.Text := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Interval;
|
|
|
cmbxWidth.ItemIndex := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Width;
|