mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
ADD: Feature Request [3404185]
This commit is contained in:
parent
a98983666a
commit
4e4375b8a3
5 changed files with 156 additions and 19 deletions
|
|
@ -204,7 +204,7 @@
|
|||
<PackageName Value="viewerpackage"/>
|
||||
</Item7>
|
||||
</RequiredPackages>
|
||||
<Units Count="137">
|
||||
<Units Count="138">
|
||||
<Unit0>
|
||||
<Filename Value="doublecmd.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
|
|
@ -363,6 +363,7 @@
|
|||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmMultiRename"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="fMultiRename"/>
|
||||
</Unit20>
|
||||
<Unit21>
|
||||
|
|
@ -1059,6 +1060,13 @@
|
|||
<ResourceBaseClass Value="Frame"/>
|
||||
<UnitName Value="fOptionsArchivers"/>
|
||||
</Unit136>
|
||||
<Unit137>
|
||||
<Filename Value="fselecttextrange.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmSelectTextRange"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="fSelectTextRange"/>
|
||||
</Unit137>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ implementation
|
|||
|
||||
uses
|
||||
LCLProc, FileUtil, uDebug, uLng, uGlobs, uFileProcs, uDCUtils, uOSUtils,
|
||||
uShowMsg, uFileSourceUtil, uFileProperty, uFileFunctions;
|
||||
fSelectTextRange, uShowMsg, uFileSourceUtil, uFileProperty, uFileFunctions;
|
||||
|
||||
const
|
||||
sPresetsSection = 'MultiRenamePresets';
|
||||
|
|
@ -692,19 +692,23 @@ begin
|
|||
end;
|
||||
|
||||
procedure TfrmMultiRename.NameXClick(Sender: TObject);
|
||||
var
|
||||
iSelStart, iSelFinish: LongInt;
|
||||
begin
|
||||
InsertMask('[N1]',ppNameMenu.Tag);
|
||||
if ShowSelectTextRangeDlg(Caption, FFiles[0].NameNoExt, iSelStart, iSelFinish) then
|
||||
begin
|
||||
InsertMask('[N' + IntToStr(iSelStart) + ']', ppNameMenu.Tag);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmMultiRename.NameXXClick(Sender: TObject);
|
||||
var
|
||||
c,i:integer;
|
||||
iSelStart, iSelFinish: LongInt;
|
||||
begin
|
||||
i:=0;
|
||||
for c:=0 to lsvwFile.Items.Count-1 do
|
||||
if i < UTF8Length(ChangeFileExt(lsvwFile.Items[c].Caption,'')) then
|
||||
i:= UTF8Length(ChangeFileExt(lsvwFile.Items[c].Caption,''));
|
||||
InsertMask('[N1:'+inttostr(i)+']',ppNameMenu.Tag);
|
||||
if ShowSelectTextRangeDlg(Caption, FFiles[0].NameNoExt, iSelStart, iSelFinish) then
|
||||
begin
|
||||
InsertMask('[N' + IntToStr(iSelStart) + ':' + IntToStr(iSelFinish) + ']', ppNameMenu.Tag);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmMultiRename.ExtensionClick(Sender: TObject);
|
||||
|
|
@ -713,24 +717,23 @@ begin
|
|||
end;
|
||||
|
||||
procedure TfrmMultiRename.ExtensionXClick(Sender: TObject);
|
||||
var
|
||||
iSelStart, iSelFinish: LongInt;
|
||||
begin
|
||||
InsertMask('[E1]',ppNameMenu.Tag);
|
||||
if ShowSelectTextRangeDlg(Caption, FFiles[0].Extension, iSelStart, iSelFinish) then
|
||||
begin
|
||||
InsertMask('[E' + IntToStr(iSelStart) + ']', ppNameMenu.Tag);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmMultiRename.ExtensionXXClick(Sender: TObject);
|
||||
var
|
||||
c,i:integer;
|
||||
sTmp:string;
|
||||
iSelStart, iSelFinish: LongInt;
|
||||
begin
|
||||
i:=0;
|
||||
for c:=0 to lsvwFile.Items.Count-1 do
|
||||
if ShowSelectTextRangeDlg(Caption, FFiles[0].Extension, iSelStart, iSelFinish) then
|
||||
begin
|
||||
sTmp:=ExtractFileExt(lsvwFile.Items[c].Caption);
|
||||
delete(sTmp,1,1);
|
||||
if i<UTF8Length(sTmp) then
|
||||
i:=UTF8Length(sTmp);
|
||||
InsertMask('[E' + IntToStr(iSelStart) + ':' + IntToStr(iSelFinish) + ']', ppNameMenu.Tag);
|
||||
end;
|
||||
InsertMask('[E1:'+inttostr(i)+']',ppNameMenu.Tag);
|
||||
end;
|
||||
|
||||
procedure TfrmMultiRename.miPluginClick(Sender: TObject);
|
||||
|
|
|
|||
57
src/fselecttextrange.lfm
Normal file
57
src/fselecttextrange.lfm
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
object frmSelectTextRange: TfrmSelectTextRange
|
||||
Left = 326
|
||||
Height = 112
|
||||
Top = 236
|
||||
Width = 320
|
||||
BorderStyle = bsDialog
|
||||
ChildSizing.LeftRightSpacing = 10
|
||||
ClientHeight = 112
|
||||
ClientWidth = 320
|
||||
Position = poOwnerFormCenter
|
||||
LCLVersion = '0.9.31'
|
||||
object edtSelectText: TEdit
|
||||
AnchorSideLeft.Control = lblSelectText
|
||||
AnchorSideTop.Control = lblSelectText
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 10
|
||||
Height = 23
|
||||
Top = 32
|
||||
Width = 300
|
||||
AutoSelect = False
|
||||
BorderSpacing.Top = 6
|
||||
Constraints.MinWidth = 300
|
||||
OnExit = edtSelectTextExit
|
||||
TabOrder = 0
|
||||
end
|
||||
object lblSelectText: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 10
|
||||
Height = 16
|
||||
Top = 10
|
||||
Width = 158
|
||||
BorderSpacing.Left = 10
|
||||
BorderSpacing.Top = 10
|
||||
BorderSpacing.Right = 10
|
||||
Caption = 'Select the characters to insert:'
|
||||
ParentColor = False
|
||||
end
|
||||
object btpPanel: TButtonPanel
|
||||
Left = 10
|
||||
Height = 34
|
||||
Top = 72
|
||||
Width = 300
|
||||
OKButton.Name = 'OKButton'
|
||||
OKButton.Caption = '&ОК'
|
||||
HelpButton.Name = 'HelpButton'
|
||||
HelpButton.Caption = '&Справка'
|
||||
CloseButton.Name = 'CloseButton'
|
||||
CloseButton.Caption = '&Закрыть'
|
||||
CancelButton.Name = 'CancelButton'
|
||||
CancelButton.Caption = 'Отмена'
|
||||
TabOrder = 1
|
||||
ShowButtons = [pbOK, pbCancel]
|
||||
end
|
||||
end
|
||||
5
src/fselecttextrange.lrt
Normal file
5
src/fselecttextrange.lrt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
TFRMSELECTTEXTRANGE.LBLSELECTTEXT.CAPTION=Select the characters to insert:
|
||||
TFRMSELECTTEXTRANGE.BTPPANEL.OKBUTTON.CAPTION=&ОК
|
||||
TFRMSELECTTEXTRANGE.BTPPANEL.HELPBUTTON.CAPTION=&Справка
|
||||
TFRMSELECTTEXTRANGE.BTPPANEL.CLOSEBUTTON.CAPTION=&Закрыть
|
||||
TFRMSELECTTEXTRANGE.BTPPANEL.CANCELBUTTON.CAPTION=Отмена
|
||||
64
src/fselecttextrange.pas
Normal file
64
src/fselecttextrange.pas
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
unit fSelectTextRange;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||||
ButtonPanel, Buttons;
|
||||
|
||||
type
|
||||
|
||||
{ TfrmSelectTextRange }
|
||||
|
||||
TfrmSelectTextRange = class(TForm)
|
||||
btpPanel: TButtonPanel;
|
||||
edtSelectText: TEdit;
|
||||
lblSelectText: TLabel;
|
||||
procedure edtSelectTextExit(Sender: TObject);
|
||||
private
|
||||
FSelStart,
|
||||
FSelFinish: LongInt;
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
function ShowSelectTextRangeDlg(const ACaption, AText: UTF8String;
|
||||
out iSelStart, iSelFinish: LongInt): Boolean;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
function ShowSelectTextRangeDlg(const ACaption, AText: UTF8String;
|
||||
out iSelStart, iSelFinish: LongInt): Boolean;
|
||||
begin
|
||||
with TfrmSelectTextRange.Create(Application) do
|
||||
try
|
||||
Caption:= ACaption;
|
||||
edtSelectText.Text:= AText;
|
||||
|
||||
Result:= (ShowModal = mrOK);
|
||||
|
||||
if Result then
|
||||
begin
|
||||
iSelStart:= FSelStart;
|
||||
iSelFinish:= FSelFinish;
|
||||
Result:= (FSelFinish >= FSelStart);
|
||||
end;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TfrmSelectTextRange }
|
||||
|
||||
procedure TfrmSelectTextRange.edtSelectTextExit(Sender: TObject);
|
||||
begin
|
||||
FSelStart:= edtSelectText.SelStart + 1;
|
||||
FSelFinish:= edtSelectText.SelStart + edtSelectText.SelLength;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue