mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
ADD: Multi-rename - case sensitive find and replace
This commit is contained in:
parent
56b1eff92e
commit
d89b2cf458
3 changed files with 33 additions and 2 deletions
|
|
@ -420,6 +420,20 @@ object frmMultiRename: TfrmMultiRename
|
|||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object cbCaseSens: TCheckBox
|
||||
AnchorSideLeft.Control = cbRegExp
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cbRegExp
|
||||
Left = 140
|
||||
Height = 19
|
||||
Hint = 'Case sensitive'
|
||||
Top = 88
|
||||
Width = 42
|
||||
BorderSpacing.Left = 12
|
||||
Caption = 'A≠a'
|
||||
OnChange = cbNameStyleChange
|
||||
TabOrder = 4
|
||||
end
|
||||
end
|
||||
object btnEditor: TBitBtn
|
||||
AnchorSideLeft.Control = gbCounter
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
{"hash":35724926,"name":"tfrmmultirename.lbreplace.caption","sourcebytes":[82,101,38,112,108,97,99,101,46,46,46],"value":"Re&place..."},
|
||||
{"hash":20463635,"name":"tfrmmultirename.cbregexp.caption","sourcebytes":[82,101,103,117,108,97,114,32,101,38,120,112,114,101,115,115,105,111,110,115],"value":"Regular e&xpressions"},
|
||||
{"hash":121437630,"name":"tfrmmultirename.cbusesubs.caption","sourcebytes":[38,85,115,101,32,115,117,98,115,116,105,116,117,116,105,111,110],"value":"&Use substitution"},
|
||||
{"hash":219672053,"name":"tfrmmultirename.cbcasesens.hint","sourcebytes":[67,97,115,101,32,115,101,110,115,105,116,105,118,101],"value":"Case sensitive"},
|
||||
{"hash":5223265,"name":"tfrmmultirename.cbcasesens.caption","sourcebytes":[65,226,137,160,97],"value":"A\u2260a"},
|
||||
{"hash":174873218,"name":"tfrmmultirename.gbcounter.caption","sourcebytes":[67,111,117,110,116,101,114],"value":"Counter"},
|
||||
{"hash":42119666,"name":"tfrmmultirename.lbstnb.caption","sourcebytes":[83,38,116,97,114,116,32,78,117,109,98,101,114],"value":"S&tart Number"},
|
||||
{"hash":49,"name":"tfrmmultirename.edpoc.text","sourcebytes":[49],"value":"1"},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
-------------------------------------------------------------------------
|
||||
Multi-Rename Tool dialog window
|
||||
|
||||
Copyright (C) 2007-2021 Alexander Koblov (alexx2000@mail.ru)
|
||||
Copyright (C) 2007-2022 Alexander Koblov (alexx2000@mail.ru)
|
||||
|
||||
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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue