ADD: Feature Request [3404185]

This commit is contained in:
Alexander Koblov 2011-09-06 03:34:15 +00:00
commit 4e4375b8a3
5 changed files with 156 additions and 19 deletions

View file

@ -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>

View file

@ -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
View 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
View 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
View 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.