|
@@ -67,6 +67,7 @@ type
|
|
FRegExp: boolean;
|
|
FRegExp: boolean;
|
|
FUseSubs: boolean;
|
|
FUseSubs: boolean;
|
|
FCaseSens: Boolean;
|
|
FCaseSens: Boolean;
|
|
|
|
+ FOnlyFirst: Boolean;
|
|
FCounter: string;
|
|
FCounter: string;
|
|
FInterval: string;
|
|
FInterval: string;
|
|
FWidth: integer;
|
|
FWidth: integer;
|
|
@@ -84,6 +85,7 @@ type
|
|
property RegExp: boolean read FRegExp write FRegExp;
|
|
property RegExp: boolean read FRegExp write FRegExp;
|
|
property UseSubs: boolean read FUseSubs write FUseSubs;
|
|
property UseSubs: boolean read FUseSubs write FUseSubs;
|
|
property CaseSens: Boolean read FCaseSens write FCaseSens;
|
|
property CaseSens: Boolean read FCaseSens write FCaseSens;
|
|
|
|
+ property OnlyFirst: Boolean read FOnlyFirst write FOnlyFirst;
|
|
property Counter: string read FCounter write FCounter;
|
|
property Counter: string read FCounter write FCounter;
|
|
property Interval: string read FInterval write FInterval;
|
|
property Interval: string read FInterval write FInterval;
|
|
property Width: integer read FWidth write FWidth;
|
|
property Width: integer read FWidth write FWidth;
|
|
@@ -123,6 +125,10 @@ type
|
|
{ TfrmMultiRename }
|
|
{ TfrmMultiRename }
|
|
TfrmMultiRename = class(TAloneForm, IFormCommands)
|
|
TfrmMultiRename = class(TAloneForm, IFormCommands)
|
|
cbCaseSens: TCheckBox;
|
|
cbCaseSens: TCheckBox;
|
|
|
|
+ cbRegExp: TCheckBox;
|
|
|
|
+ cbUseSubs: TCheckBox;
|
|
|
|
+ cbOnlyFirst: TCheckBox;
|
|
|
|
+ pnlFindReplace: TPanel;
|
|
pnlButtons: TPanel;
|
|
pnlButtons: TPanel;
|
|
StringGrid: TStringGrid;
|
|
StringGrid: TStringGrid;
|
|
pnlOptions: TPanel;
|
|
pnlOptions: TPanel;
|
|
@@ -146,8 +152,6 @@ type
|
|
edFind: TEdit;
|
|
edFind: TEdit;
|
|
lbReplace: TLabel;
|
|
lbReplace: TLabel;
|
|
edReplace: TEdit;
|
|
edReplace: TEdit;
|
|
- cbRegExp: TCheckBox;
|
|
|
|
- cbUseSubs: TCheckBox;
|
|
|
|
gbCounter: TGroupBox;
|
|
gbCounter: TGroupBox;
|
|
lbStNb: TLabel;
|
|
lbStNb: TLabel;
|
|
edPoc: TEdit;
|
|
edPoc: TEdit;
|
|
@@ -465,6 +469,7 @@ begin
|
|
FRegExp := False;
|
|
FRegExp := False;
|
|
FUseSubs := False;
|
|
FUseSubs := False;
|
|
FCaseSens := False;
|
|
FCaseSens := False;
|
|
|
|
+ FOnlyFirst := False;
|
|
FCounter := '1';
|
|
FCounter := '1';
|
|
FInterval := '1';
|
|
FInterval := '1';
|
|
FWidth := 0;
|
|
FWidth := 0;
|
|
@@ -978,6 +983,7 @@ begin
|
|
AMultiRenamePreset.RegExp := AConfig.GetValue(ANode, 'RegExp', False);
|
|
AMultiRenamePreset.RegExp := AConfig.GetValue(ANode, 'RegExp', False);
|
|
AMultiRenamePreset.UseSubs := AConfig.GetValue(ANode, 'UseSubs', False);
|
|
AMultiRenamePreset.UseSubs := AConfig.GetValue(ANode, 'UseSubs', False);
|
|
AMultiRenamePreset.CaseSens := AConfig.GetValue(ANode, 'CaseSensitive', False);
|
|
AMultiRenamePreset.CaseSens := AConfig.GetValue(ANode, 'CaseSensitive', False);
|
|
|
|
+ AMultiRenamePreset.OnlyFirst := AConfig.GetValue(ANode, 'OnlyFirst', False);
|
|
AMultiRenamePreset.Counter := AConfig.GetValue(ANode, 'Counter', '1');
|
|
AMultiRenamePreset.Counter := AConfig.GetValue(ANode, 'Counter', '1');
|
|
AMultiRenamePreset.Interval := AConfig.GetValue(ANode, 'Interval', '1');
|
|
AMultiRenamePreset.Interval := AConfig.GetValue(ANode, 'Interval', '1');
|
|
AMultiRenamePreset.Width := AConfig.GetValue(ANode, 'Width', 0);
|
|
AMultiRenamePreset.Width := AConfig.GetValue(ANode, 'Width', 0);
|
|
@@ -1077,6 +1083,7 @@ begin
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].RegExp := cbRegExp.Checked;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].RegExp := cbRegExp.Checked;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].UseSubs := cbUseSubs.Checked;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].UseSubs := cbUseSubs.Checked;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].CaseSens := cbCaseSens.Checked;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].CaseSens := cbCaseSens.Checked;
|
|
|
|
+ FMultiRenamePresetList.MultiRenamePreset[PresetIndex].OnlyFirst := cbOnlyFirst.Checked;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Counter := edPoc.Text;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Counter := edPoc.Text;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Interval := edInterval.Text;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Interval := edInterval.Text;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Width := cmbxWidth.ItemIndex;
|
|
FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Width := cmbxWidth.ItemIndex;
|
|
@@ -1130,6 +1137,7 @@ begin
|
|
AConfig.AddValue(SubNode, 'RegExp', FMultiRenamePresetList.MultiRenamePreset[i].RegExp);
|
|
AConfig.AddValue(SubNode, 'RegExp', FMultiRenamePresetList.MultiRenamePreset[i].RegExp);
|
|
AConfig.AddValue(SubNode, 'UseSubs', FMultiRenamePresetList.MultiRenamePreset[i].UseSubs);
|
|
AConfig.AddValue(SubNode, 'UseSubs', FMultiRenamePresetList.MultiRenamePreset[i].UseSubs);
|
|
AConfig.AddValue(SubNode, 'CaseSensitive', FMultiRenamePresetList.MultiRenamePreset[i].CaseSens);
|
|
AConfig.AddValue(SubNode, 'CaseSensitive', FMultiRenamePresetList.MultiRenamePreset[i].CaseSens);
|
|
|
|
+ AConfig.AddValue(SubNode, 'OnlyFirst', FMultiRenamePresetList.MultiRenamePreset[i].OnlyFirst);
|
|
AConfig.AddValue(SubNode, 'Counter', FMultiRenamePresetList.MultiRenamePreset[i].Counter);
|
|
AConfig.AddValue(SubNode, 'Counter', FMultiRenamePresetList.MultiRenamePreset[i].Counter);
|
|
AConfig.AddValue(SubNode, 'Interval', FMultiRenamePresetList.MultiRenamePreset[i].Interval);
|
|
AConfig.AddValue(SubNode, 'Interval', FMultiRenamePresetList.MultiRenamePreset[i].Interval);
|
|
AConfig.AddValue(SubNode, 'Width', FMultiRenamePresetList.MultiRenamePreset[i].Width);
|
|
AConfig.AddValue(SubNode, 'Width', FMultiRenamePresetList.MultiRenamePreset[i].Width);
|
|
@@ -2035,7 +2043,9 @@ function TfrmMultiRename.FreshText(ItemIndex: integer): string;
|
|
var
|
|
var
|
|
I: integer;
|
|
I: integer;
|
|
bError: boolean;
|
|
bError: boolean;
|
|
- Flags: TReplaceFlags;
|
|
|
|
|
|
+ wsText: UnicodeString;
|
|
|
|
+ wsReplace: UnicodeString;
|
|
|
|
+ Flags: TReplaceFlags = [];
|
|
sTmpName, sTmpExt: string;
|
|
sTmpName, sTmpExt: string;
|
|
begin
|
|
begin
|
|
bError := False;
|
|
bError := False;
|
|
@@ -2058,16 +2068,32 @@ begin
|
|
if (edFind.Text <> '') then
|
|
if (edFind.Text <> '') then
|
|
begin
|
|
begin
|
|
if cbRegExp.Checked then
|
|
if cbRegExp.Checked then
|
|
- try
|
|
|
|
- FRegExp.ModifierI := not cbCaseSens.Checked;
|
|
|
|
- Result := UTF16ToUTF8(FRegExp.Replace(CeUtf8ToUtf16(Result), CeUtf8ToUtf16(edReplace.Text), cbUseSubs.Checked));
|
|
|
|
- except
|
|
|
|
- Result := rsMsgErrRegExpSyntax;
|
|
|
|
- bError := True;
|
|
|
|
|
|
+ try
|
|
|
|
+ wsText:= CeUtf8ToUtf16(Result);
|
|
|
|
+ wsReplace:= CeUtf8ToUtf16(edReplace.Text);
|
|
|
|
+ FRegExp.ModifierI := not cbCaseSens.Checked;
|
|
|
|
+
|
|
|
|
+ if not cbOnlyFirst.Checked then
|
|
|
|
+ begin
|
|
|
|
+ Result := CeUtf16ToUtf8(FRegExp.Replace(wsText, wsReplace, cbUseSubs.Checked));
|
|
end
|
|
end
|
|
- else
|
|
|
|
- begin
|
|
|
|
- Flags:= [rfReplaceAll];
|
|
|
|
|
|
+ else if FRegExp.Exec(wsText) then
|
|
|
|
+ begin
|
|
|
|
+ Delete(wsText, FRegExp.MatchPos[0], FRegExp.MatchLen[0]);
|
|
|
|
+ if cbUseSubs.Checked then
|
|
|
|
+ Insert(FRegExp.Substitute(wsReplace), wsText, FRegExp.MatchPos[0])
|
|
|
|
+ else begin
|
|
|
|
+ Insert(wsReplace, wsText, FRegExp.MatchPos[0]);
|
|
|
|
+ end;
|
|
|
|
+ Result:= CeUtf16ToUtf8(wsText);
|
|
|
|
+ end;
|
|
|
|
+ except
|
|
|
|
+ Result := rsMsgErrRegExpSyntax;
|
|
|
|
+ bError := True;
|
|
|
|
+ end
|
|
|
|
+ else begin
|
|
|
|
+ if not cbOnlyFirst.Checked then
|
|
|
|
+ Flags:= [rfReplaceAll];
|
|
if not cbCaseSens.Checked then
|
|
if not cbCaseSens.Checked then
|
|
Flags+= [rfIgnoreCase];
|
|
Flags+= [rfIgnoreCase];
|
|
// Many at once, split find and replace by |
|
|
// Many at once, split find and replace by |
|
|
@@ -2246,6 +2272,7 @@ begin
|
|
cbRegExp.Checked := False;
|
|
cbRegExp.Checked := False;
|
|
cbUseSubs.Checked := False;
|
|
cbUseSubs.Checked := False;
|
|
cbCaseSens.Checked := False;
|
|
cbCaseSens.Checked := False;
|
|
|
|
+ cbOnlyFirst.Checked := False;
|
|
cbNameMaskStyle.ItemIndex := 0;
|
|
cbNameMaskStyle.ItemIndex := 0;
|
|
cmbExtensionStyle.ItemIndex := 0;
|
|
cmbExtensionStyle.ItemIndex := 0;
|
|
edPoc.Text := '1';
|
|
edPoc.Text := '1';
|
|
@@ -2581,6 +2608,7 @@ begin
|
|
cbRegExp.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].RegExp;
|
|
cbRegExp.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].RegExp;
|
|
cbUseSubs.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].UseSubs;
|
|
cbUseSubs.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].UseSubs;
|
|
cbCaseSens.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].CaseSens;
|
|
cbCaseSens.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].CaseSens;
|
|
|
|
+ cbOnlyFirst.Checked := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].OnlyFirst;
|
|
edPoc.Text := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Counter;
|
|
edPoc.Text := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Counter;
|
|
edInterval.Text := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Interval;
|
|
edInterval.Text := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Interval;
|
|
cmbxWidth.ItemIndex := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Width;
|
|
cmbxWidth.ItemIndex := FMultiRenamePresetList.MultiRenamePreset[PresetIndex].Width;
|