Fix: Bug [ 1658674 ]

Add: Some small optimizations and fixes
This commit is contained in:
Alexander Koblov 2007-03-06 16:51:17 +00:00
commit abbb24a43b
18 changed files with 2443 additions and 2121 deletions

File diff suppressed because it is too large Load diff

View file

@ -14,6 +14,11 @@
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Linking>
<Debugging>
<GenerateDebugInfo Value="True"/>
</Debugging>
</Linking>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>

View file

@ -11,7 +11,7 @@
<IconPath Value="./"/>
<TargetFileExt Value=""/>
<Title Value="Double Commander"/>
<ActiveEditorIndexAtStart Value="1"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<PublishOptions>
<Version Value="2"/>
@ -47,13 +47,13 @@
<PackageName Value="JPEGForLazarus"/>
</Item5>
</RequiredPackages>
<Units Count="6">
<Units Count="5">
<Unit0>
<Filename Value="doublecmd.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="doublecmd"/>
<CursorPos X="78" Y="72"/>
<TopLine Value="59"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="200"/>
</Unit0>
<Unit1>
@ -65,7 +65,7 @@
<UnitName Value="fbtnchangedlg"/>
<CursorPos X="1" Y="11"/>
<TopLine Value="23"/>
<UsageCount Value="166"/>
<UsageCount Value="200"/>
</Unit1>
<Unit2>
<Filename Value="fconfigtoolbar.pas"/>
@ -76,7 +76,7 @@
<UnitName Value="fconfigtoolbar"/>
<CursorPos X="1" Y="7"/>
<TopLine Value="34"/>
<UsageCount Value="166"/>
<UsageCount Value="200"/>
</Unit2>
<Unit3>
<Filename Value="fmain.pas"/>
@ -84,10 +84,10 @@
<HasResources Value="True"/>
<ResourceFilename Value="fMain.lrs"/>
<UnitName Value="fMain"/>
<CursorPos X="9" Y="5"/>
<TopLine Value="1"/>
<CursorPos X="11" Y="1210"/>
<TopLine Value="1195"/>
<EditorIndex Value="0"/>
<UsageCount Value="77"/>
<UsageCount Value="92"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
@ -96,79 +96,10 @@
<UnitName Value="uWCXprototypes"/>
<CursorPos X="28" Y="8"/>
<TopLine Value="1"/>
<UsageCount Value="116"/>
<UsageCount Value="157"/>
</Unit4>
<Unit5>
<Filename Value="foptions.pas"/>
<ComponentName Value="frmOptions"/>
<HasResources Value="True"/>
<ResourceFilename Value="fOptions.lrs"/>
<UnitName Value="fOptions"/>
<CursorPos X="8" Y="123"/>
<TopLine Value="119"/>
<EditorIndex Value="1"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit5>
</Units>
<JumpHistory Count="14" HistoryIndex="13">
<Position1>
<Filename Value="foptions.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="foptions.pas"/>
<Caret Line="25" Column="3" TopLine="12"/>
</Position2>
<Position3>
<Filename Value="foptions.pas"/>
<Caret Line="30" Column="26" TopLine="12"/>
</Position3>
<Position4>
<Filename Value="foptions.pas"/>
<Caret Line="31" Column="26" TopLine="12"/>
</Position4>
<Position5>
<Filename Value="foptions.pas"/>
<Caret Line="32" Column="26" TopLine="12"/>
</Position5>
<Position6>
<Filename Value="foptions.pas"/>
<Caret Line="35" Column="15" TopLine="16"/>
</Position6>
<Position7>
<Filename Value="foptions.pas"/>
<Caret Line="31" Column="19" TopLine="17"/>
</Position7>
<Position8>
<Filename Value="foptions.pas"/>
<Caret Line="29" Column="22" TopLine="17"/>
</Position8>
<Position9>
<Filename Value="foptions.pas"/>
<Caret Line="30" Column="22" TopLine="17"/>
</Position9>
<Position10>
<Filename Value="foptions.pas"/>
<Caret Line="31" Column="22" TopLine="17"/>
</Position10>
<Position11>
<Filename Value="foptions.pas"/>
<Caret Line="34" Column="31" TopLine="17"/>
</Position11>
<Position12>
<Filename Value="foptions.pas"/>
<Caret Line="76" Column="5" TopLine="75"/>
</Position12>
<Position13>
<Filename Value="foptions.pas"/>
<Caret Line="34" Column="19" TopLine="34"/>
</Position13>
<Position14>
<Filename Value="foptions.pas"/>
<Caret Line="76" Column="45" TopLine="75"/>
</Position14>
</JumpHistory>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
@ -187,12 +118,17 @@
<OptimizationLevel Value="3"/>
</Optimizations>
</CodeGeneration>
<Linking>
<Debugging>
<GenerateDebugInfo Value="True"/>
</Debugging>
</Linking>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<BreakPoints Count="4">
<BreakPoints Count="5">
<Item1>
<Source Value="mnt\X\linux\lazarus\lcl\include\imglist.inc"/>
<Line Value="435"/>
@ -203,12 +139,16 @@
</Item2>
<Item3>
<Source Value="ucopythread.pas"/>
<Line Value="69"/>
<Line Value="42"/>
</Item3>
<Item4>
<Source Value="ucopythread.pas"/>
<Line Value="42"/>
<Source Value="uFilePanel.pas"/>
<Line Value="300"/>
</Item4>
<Item5>
<Source Value="uFilePanel.pas"/>
<Line Value="324"/>
</Item5>
</BreakPoints>
</Debugging>
</CONFIG>

View file

@ -9,6 +9,7 @@ uses
cthreads,
{$ENDIF}
Interfaces,
LCLProc,
uGlobsPaths,
uGlobs,
uLng,
@ -64,10 +65,10 @@ uses
// try
Application.Initialize;
ThousandSeparator:=' ';
writeln('Double commander 0.1 alpha - Free Pascal');
writeln('This program is free software released under terms of GNU GPL 2');
writeln('(C)opyright 2006-7 Koblov Alexander (Alexx2000@mail.ru)');
writeln(' and contributors (see about dialog)');
DebugLn('Double commander 0.1 alpha - Free Pascal');
DebugLn('This program is free software released under terms of GNU GPL 2');
DebugLn('(C)opyright 2006-7 Koblov Alexander (Alexx2000@mail.ru)');
DebugLn(' and contributors (see about dialog)');
LoadPaths;
if LoadGlobs then

View file

@ -1,95 +1,85 @@
object frmFindDlg: TfrmFindDlg
ActiveControl = cmbFindFileMask
inherited frmFindDlg: TfrmFindDlg
Left = 289
Height = 461
Top = 25
Width = 541
HorzScrollBar.Page = 540
VertScrollBar.Page = 460
VertScrollBar.Range = 316
ActiveControl = cbDateFrom
Caption = 'frmFindDlg'
ClientHeight = 461
ClientWidth = 495
KeyPreview = True
OnClose = frmFindDlgClose
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnKeyPress = FormKeyPress
OnShow = frmFindDlgShow
PixelsPerInch = 96
Position = poScreenCenter
TextHeight = 16
HorzScrollBar.Page = 494
VertScrollBar.Page = 460
VertScrollBar.Range = 316
Left = 304
Height = 461
Top = 318
Width = 495
object Splitter1: TSplitter
Cursor = crVSplit
Height = 1
Width = 541
Align = alTop
Cursor = crVSplit
Height = 1
Width = 495
ResizeAnchor = akTop
Cursor = crVSplit
Height = 1
Width = 495
end
object Panel2: TPanel
Align = alTop
BevelOuter = bvNone
ClientHeight = 281
ClientWidth = 495
FullRepaint = False
TabOrder = 0
Height = 281
Top = 1
Width = 495
Width = 541
Align = alTop
BevelOuter = bvNone
FullRepaint = False
TabOrder = 0
object pgcSearch: TPageControl
Height = 273
Width = 446
ActivePage = tsStandard
Anchors = [akTop, akLeft, akRight]
TabIndex = 0
TabOrder = 0
Height = 273
Width = 400
object tsStandard: TTabSheet
Caption = 'Standard'
ClientHeight = 247
ClientWidth = 392
Height = 247
Width = 392
object lblFindPathStart: TLabel
Caption = 'FileDir'
Color = clNone
ParentColor = False
Left = 8
Height = 14
Top = 57
Width = 30
end
object lblFindFileMask: TLabel
Caption = 'FileMask'
Caption = 'FileDir'
Color = clNone
ParentColor = False
end
object lblFindFileMask: TLabel
Left = 8
Height = 14
Top = 1
Width = 41
Caption = 'FileMask'
Color = clNone
ParentColor = False
end
object edtFindPathStart: TEdit
Anchors = [akTop, akLeft, akRight]
TabOrder = 0
Left = 8
Height = 24
Top = 81
Width = 316
Width = 362
Anchors = [akTop, akLeft, akRight]
TabOrder = 0
end
object btnSelDir: TButton
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 2
Caption = '...'
OnClick = btnSelDirClick
TabOrder = 2
Left = 332
Left = 378
Height = 25
Top = 80
Width = 25
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 4
Caption = '...'
OnClick = btnSelDirClick
TabOrder = 2
end
object cmbFindFileMask: TComboBox
Left = 8
Height = 21
Top = 25
Width = 362
Anchors = [akTop, akLeft, akRight]
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
ItemHeight = 18
@ -97,117 +87,68 @@ object frmFindDlg: TfrmFindDlg
ParentCtl3D = False
TabOrder = 1
Text = '*'
Left = 8
Height = 21
Top = 25
Width = 316
end
object gbFindData: TGroupBox
Anchors = [akTop, akLeft, akRight]
Caption = 'Find Data'
ClientHeight = 62
ClientWidth = 368
Enabled = False
ParentCtl3D = False
TabOrder = 3
Left = 8
Height = 80
Top = 145
Width = 372
Width = 418
Anchors = [akTop, akLeft, akRight]
Caption = 'Find Data'
Enabled = False
ParentCtl3D = False
TabOrder = 3
object cbCaseSens: TCheckBox
AllowGrayed = True
Caption = 'Case sensitive'
TabOrder = 0
Left = 18
Height = 13
Top = 40
Width = 88
AllowGrayed = True
Caption = 'Case sensitive'
TabOrder = 0
end
object edtFindText: TEdit
Anchors = [akTop, akLeft, akRight]
TabOrder = 1
Left = 16
Height = 24
Top = 8
Width = 324
Width = 366
Anchors = [akTop, akLeft, akRight]
TabOrder = 1
end
object cbNoThisText: TCheckBox
Caption = 'Find files NOT containing the text'
TabOrder = 2
Left = 154
Height = 13
Top = 40
Width = 177
Caption = 'Find files NOT containing the text'
TabOrder = 2
end
end
object cbFindInFile: TCheckBox
AllowGrayed = True
Caption = 'Find in file'
OnClick = cbFindInFileClick
TabOrder = 4
Left = 12
Height = 13
Top = 121
Width = 67
AllowGrayed = True
Caption = 'Find in file'
OnClick = cbFindInFileClick
TabOrder = 4
end
end
object tsAdvanced: TTabSheet
Caption = 'Advanced'
ClientHeight = 247
ClientWidth = 392
ImageIndex = 1
Height = 247
Width = 392
object deDateFrom: TDateEdit
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
OKCaption = 'OK'
CancelCaption = 'Cancel'
Date = 39136
ReadOnly = False
ButtonWidth = 23
Color = clBtnFace
Enabled = False
Glyph.Data = {
2F0200002F2A2058504D202A2F0A7374617469632063686172202A63616C656E
6461725B5D203D207B0A2F2A20636F6C756D6E7320726F777320636F6C6F7273
2063686172732D7065722D706978656C202A2F0A223134203132203137203122
2C0A2220206320626C61636B222C0A222E20632023383030303030222C0A2258
20632023303038303030222C0A226F20632023383038303030222C0A224F2063
206E617679222C0A222B20632023383030303830222C0A224020632023303038
303830222C0A222320632023383038303830222C0A2224206320234330433043
30222C0A2225206320726564222C0A2226206320677265656E222C0A222A2063
2079656C6C6F77222C0A223D206320626C7565222C0A222D2063206D6167656E
7461222C0A223B2063206379616E222C0A223A20632067726179313030222C0A
223E2063204E6F6E65222C0A2F2A20706978656C73202A2F0A223E3E20202020
2020202020203E3E222C0A223E3E3A24242424242424243A4F23222C0A223E3E
3A3A3A3A3A3A3A3A3A3A4F23222C0A223E3E3A3A203A3A202020203A4F23222C
0A223E3E3A20203A3A203A3A3A3A4F23222C0A223E3E3A3A203A3A202020243A
4F23222C0A223E3E3A3A203A3A3A3A3A203A4F23222C0A223E3E3A3A203A3A24
3A24203A4F23222C0A223E3E3A2020203A202020243A4F23222C0A223E3E3A3A
3A3A3A3A3A3A3A3A4F23222C0A223E3E20204F204F4F204F20204F23222C0A22
3E3E3E2323232323232323232323220A7D3B0A
}
NumGlyphs = 1
ParentColor = False
TabOrder = 0
Color = clBtnFace
Enabled = False
TabOrder = 0
Text = '23.02.2007'
Left = 4
Height = 23
Top = 41
Width = 80
end
object deDateTo: TDateEdit
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
OKCaption = 'OK'
CancelCaption = 'Cancel'
Date = 39136
ReadOnly = False
ButtonWidth = 23
Color = clBtnFace
Enabled = False
ReadOnly = False
TabOrder = 0
Text = '23.02.2007'
ButtonWidth = 23
Glyph.Data = {
2F0200002F2A2058504D202A2F0A7374617469632063686172202A63616C656E
6461725B5D203D207B0A2F2A20636F6C756D6E7320726F777320636F6C6F7273
@ -230,153 +171,260 @@ object frmFindDlg: TfrmFindDlg
}
NumGlyphs = 1
ParentColor = False
TabOrder = 1
Color = clBtnFace
Enabled = False
TabOrder = 1
Text = '23.02.2007'
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
OKCaption = 'OK'
CancelCaption = 'Cancel'
Date = 39136
end
object deDateTo: TDateEdit
Left = 164
Height = 23
Top = 41
Width = 80
Color = clBtnFace
Enabled = False
ReadOnly = False
TabOrder = 1
Text = '23.02.2007'
ButtonWidth = 23
Glyph.Data = {
2F0200002F2A2058504D202A2F0A7374617469632063686172202A63616C656E
6461725B5D203D207B0A2F2A20636F6C756D6E7320726F777320636F6C6F7273
2063686172732D7065722D706978656C202A2F0A223134203132203137203122
2C0A2220206320626C61636B222C0A222E20632023383030303030222C0A2258
20632023303038303030222C0A226F20632023383038303030222C0A224F2063
206E617679222C0A222B20632023383030303830222C0A224020632023303038
303830222C0A222320632023383038303830222C0A2224206320234330433043
30222C0A2225206320726564222C0A2226206320677265656E222C0A222A2063
2079656C6C6F77222C0A223D206320626C7565222C0A222D2063206D6167656E
7461222C0A223B2063206379616E222C0A223A20632067726179313030222C0A
223E2063204E6F6E65222C0A2F2A20706978656C73202A2F0A223E3E20202020
2020202020203E3E222C0A223E3E3A24242424242424243A4F23222C0A223E3E
3A3A3A3A3A3A3A3A3A3A4F23222C0A223E3E3A3A203A3A202020203A4F23222C
0A223E3E3A20203A3A203A3A3A3A4F23222C0A223E3E3A3A203A3A202020243A
4F23222C0A223E3E3A3A203A3A3A3A3A203A4F23222C0A223E3E3A3A203A3A24
3A24203A4F23222C0A223E3E3A2020203A202020243A4F23222C0A223E3E3A3A
3A3A3A3A3A3A3A3A4F23222C0A223E3E20204F204F4F204F20204F23222C0A22
3E3E3E2323232323232323232323220A7D3B0A
}
NumGlyphs = 1
ParentColor = False
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
OKCaption = 'OK'
CancelCaption = 'Cancel'
Date = 39136
end
object cbDateFrom: TCheckBox
Caption = 'Date From:'
OnChange = cbDateFromChange
TabOrder = 2
Left = 4
Height = 13
Top = 22
Width = 72
Caption = 'Date From:'
OnChange = cbDateFromChange
TabOrder = 2
end
object cbNotOlderThan: TCheckBox
Caption = 'Not older than:'
TabOrder = 3
Left = 4
Height = 13
Top = 160
Top = 136
Width = 90
Caption = 'Not older than:'
OnChange = cbNotOlderThanChange
TabOrder = 3
end
object SpinEdit1: TSpinEdit
TabOrder = 4
Left = 100
object seNotOlderThan: TSpinEdit
Left = 4
Height = 20
Top = 153
Width = 112
Top = 161
Width = 106
Enabled = False
TabOrder = 4
end
object ComboBox1: TComboBox
object cbDelayUnit: TComboBox
Left = 164
Height = 21
Top = 160
Width = 110
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
Enabled = False
ItemIndex = 2
Items.Strings = (
'Minute(s)'
'Hour(s)'
'Day(s)'
'Week(s)'
'Month(s)'
'Year(s)'
)
MaxLength = 0
TabOrder = 5
Text = 'ComboBox1'
Left = 260
Height = 21
Top = 153
Width = 104
Text = 'Day(s)'
end
object cbFileSizeFrom: TCheckBox
Left = 4
Height = 13
Top = 193
Width = 88
Caption = 'File Size From:'
OnChange = cbFileSizeFromChange
TabOrder = 6
Left = 4
Height = 13
Top = 81
Width = 88
end
object cbDateTo: TCheckBox
Caption = 'Date To:'
OnChange = cbDateToChange
TabOrder = 7
Left = 164
Height = 13
Top = 22
Width = 62
Caption = 'Date To:'
OnChange = cbDateToChange
TabOrder = 7
end
object cbFileSizeTo: TCheckBox
Left = 164
Height = 13
Top = 193
Width = 78
Caption = 'File Size To:'
OnChange = cbFileSizeToChange
TabOrder = 8
Left = 164
Height = 13
Top = 81
Width = 78
end
object seFileSizeFrom: TSpinEdit
Enabled = False
TabOrder = 9
Left = 4
Height = 20
Top = 105
Top = 217
Width = 106
Enabled = False
TabOrder = 9
end
object seFileSizeTo: TSpinEdit
Enabled = False
TabOrder = 10
Left = 164
Height = 20
Top = 105
Top = 217
Width = 110
Enabled = False
TabOrder = 10
end
object cbUnitOfMeasure: TComboBox
Left = 284
Height = 21
Top = 217
Width = 72
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
ItemIndex = 1
Items.Strings = (
'Byte'
'Kbyte'
'Mbyte'
'Gbyte'
)
MaxLength = 0
Style = csDropDownList
TabOrder = 11
Text = 'Kbyte'
end
object cbTimeFrom: TCheckBox
Left = 4
Height = 13
Top = 73
Width = 69
Caption = 'Time from:'
OnChange = cbTimeFromChange
TabOrder = 12
end
object cbTimeTo: TCheckBox
Left = 164
Height = 13
Top = 73
Width = 58
Caption = 'Time to:'
OnChange = cbTimeToChange
TabOrder = 13
end
object meTimeFrom: TMaskEdit
Left = 4
Height = 23
Top = 97
Width = 80
Enabled = False
EditMask = '00:00:00'
MaxLength = 8
ParentColor = False
TabOrder = 14
Text = '00:00:00'
OnChange = meTimeChange
end
object meTimeTo: TMaskEdit
Left = 164
Height = 23
Top = 97
Width = 80
Enabled = False
EditMask = '00:00:00'
MaxLength = 8
ParentColor = False
TabOrder = 15
Text = '00:00:00'
OnChange = meTimeChange
end
end
end
object btnClose: TButton
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 2
Caption = '&Close'
OnClick = btnCloseClick
TabOrder = 3
Left = 408
Left = 454
Height = 25
Top = 71
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 4
Caption = '&Close'
OnClick = btnCloseClick
TabOrder = 3
end
object btnStop: TButton
Left = 454
Height = 25
Top = 103
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 2
BorderSpacing.InnerBorder = 4
Cancel = True
Caption = 'Cancel'
Enabled = False
OnClick = btnStopClick
TabOrder = 1
Left = 408
Height = 25
Top = 103
Width = 75
end
object btnStart: TButton
Left = 454
Height = 25
Top = 39
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 2
BorderSpacing.InnerBorder = 4
Caption = '&Start'
Default = True
OnClick = btnStartClick
TabOrder = 2
Left = 408
Height = 25
Top = 39
Width = 75
end
end
object Panel1: TPanel
Align = alClient
BevelOuter = bvNone
ClientHeight = 179
ClientWidth = 495
FullRepaint = False
TabOrder = 1
Height = 179
Top = 282
Width = 495
Width = 541
Align = alClient
BevelOuter = bvNone
FullRepaint = False
TabOrder = 1
object Panel3: TPanel
Height = 54
Width = 541
Align = alTop
BevelInner = bvRaised
BevelOuter = bvLowered
ClientHeight = 54
ClientWidth = 495
FullRepaint = False
TabOrder = 0
Height = 54
Width = 495
object lblStatus: TLabel
Left = 8
Height = 13
Top = 30
Width = 44
Caption = 'lblStatus'
Color = clNone
Font.Color = clBlack
@ -385,12 +433,12 @@ object frmFindDlg: TfrmFindDlg
Font.Pitch = fpVariable
Font.Style = [fsBold]
ParentColor = False
Left = 8
Height = 13
Top = 30
Width = 44
end
object lblCurrent: TLabel
Left = 8
Height = 13
Top = 12
Width = 49
Caption = 'lblCurrent'
Color = clNone
Font.Color = clBlack
@ -399,21 +447,17 @@ object frmFindDlg: TfrmFindDlg
Font.Pitch = fpVariable
Font.Style = [fsBold]
ParentColor = False
Left = 8
Height = 13
Top = 12
Width = 49
end
end
object lsFoundedFiles: TListBox
Height = 125
Top = 54
Width = 541
Align = alClient
MultiSelect = True
OnDblClick = lsFoundedFilesDblClick
PopupMenu = PopupMenuFind
TabOrder = 1
Height = 125
Top = 54
Width = 495
end
end
object PopupMenuFind: TPopupMenu

View file

@ -1,126 +1,135 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TfrmFindDlg','FORMDATA',[
'TPF0'#11'TfrmFindDlg'#10'frmFindDlg'#13'ActiveControl'#7#15'cmbFindFileMask'
+#7'Caption'#6#10'frmFindDlg'#12'ClientHeight'#3#205#1#11'ClientWidth'#3#239#1
+#10'KeyPreview'#9#7'OnClose'#7#15'frmFindDlgClose'#12'OnCloseQuery'#7#14'For'
+'mCloseQuery'#8'OnCreate'#7#10'FormCreate'#10'OnKeyPress'#7#12'FormKeyPress'
+#6'OnShow'#7#14'frmFindDlgShow'#13'PixelsPerInch'#2'`'#8'Position'#7#14'poSc'
+'reenCenter'#10'TextHeight'#2#16#18'HorzScrollBar.Page'#3#238#1#18'VertScrol'
+'lBar.Page'#3#204#1#19'VertScrollBar.Range'#3'<'#1#4'Left'#3'0'#1#6'Height'#3
+#205#1#3'Top'#3'>'#1#5'Width'#3#239#1#0#9'TSplitter'#9'Splitter1'#5'Align'#7
+#5'alTop'#6'Cursor'#7#8'crVSplit'#6'Height'#2#1#5'Width'#3#239#1#12'ResizeAn'
+'chor'#7#5'akTop'#6'Cursor'#7#8'crVSplit'#6'Height'#2#1#5'Width'#3#239#1#0#0
+#6'TPanel'#6'Panel2'#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'Clien'
+'tHeight'#3#25#1#11'ClientWidth'#3#239#1#11'FullRepaint'#8#8'TabOrder'#2#0#6
+'Height'#3#25#1#3'Top'#2#1#5'Width'#3#239#1#0#12'TPageControl'#9'pgcSearch'
+#10'ActivePage'#7#10'tsStandard'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'
+#0#8'TabIndex'#2#0#8'TabOrder'#2#0#6'Height'#3#17#1#5'Width'#3#144#1#0#9'TTa'
+'bSheet'#10'tsStandard'#7'Caption'#6#8'Standard'#12'ClientHeight'#3#247#0#11
+'ClientWidth'#3#136#1#6'Height'#3#247#0#5'Width'#3#136#1#0#6'TLabel'#16'lblF'
+'indPathStart'#7'Caption'#6#7'FileDir'#5'Color'#7#6'clNone'#11'ParentColor'#8
+#4'Left'#2#8#6'Height'#2#14#3'Top'#2'9'#5'Width'#2#30#0#0#6'TLabel'#15'lblFi'
+'ndFileMask'#7'Caption'#6#8'FileMask'#5'Color'#7#6'clNone'#11'ParentColor'#8
+#4'Left'#2#8#6'Height'#2#14#3'Top'#2#1#5'Width'#2')'#0#0#5'TEdit'#16'edtFind'
+'PathStart'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#0#4
+'Left'#2#8#6'Height'#2#24#3'Top'#2'Q'#5'Width'#3'<'#1#0#0#7'TButton'#9'btnSe'
+'lDir'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#2
+#7'Caption'#6#3'...'#7'OnClick'#7#14'btnSelDirClick'#8'TabOrder'#2#2#4'Left'
+#3'L'#1#6'Height'#2#25#3'Top'#2'P'#5'Width'#2#25#0#0#9'TComboBox'#15'cmbFind'
+'FileMask'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'
+#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#10'ItemHeight'#2#18
+#9'MaxLength'#2#0#11'ParentCtl3D'#8#8'TabOrder'#2#1#4'Text'#6#1'*'#4'Left'#2
+#8#6'Height'#2#21#3'Top'#2#25#5'Width'#3'<'#1#0#0#9'TGroupBox'#10'gbFindData'
+#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#7'Caption'#6#9'Find Data'#12
+'ClientHeight'#2'>'#11'ClientWidth'#3'p'#1#7'Enabled'#8#11'ParentCtl3D'#8#8
+'TabOrder'#2#3#4'Left'#2#8#6'Height'#2'P'#3'Top'#3#145#0#5'Width'#3't'#1#0#9
+'TCheckBox'#10'cbCaseSens'#11'AllowGrayed'#9#7'Caption'#6#14'Case sensitive'
+#8'TabOrder'#2#0#4'Left'#2#18#6'Height'#2#13#3'Top'#2'('#5'Width'#2'X'#0#0#5
+'TEdit'#11'edtFindText'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabO'
+'rder'#2#1#4'Left'#2#16#6'Height'#2#24#3'Top'#2#8#5'Width'#3'D'#1#0#0#9'TChe'
+'ckBox'#12'cbNoThisText'#7'Caption'#6'"Find files NOT containing the text'#8
+'TabOrder'#2#2#4'Left'#3#154#0#6'Height'#2#13#3'Top'#2'('#5'Width'#3#177#0#0
+#0#0#9'TCheckBox'#12'cbFindInFile'#11'AllowGrayed'#9#7'Caption'#6#12'Find in'
+' file'#7'OnClick'#7#17'cbFindInFileClick'#8'TabOrder'#2#4#4'Left'#2#12#6'He'
+'ight'#2#13#3'Top'#2'y'#5'Width'#2'C'#0#0#0#9'TTabSheet'#10'tsAdvanced'#7'Ca'
+'ption'#6#8'Advanced'#12'ClientHeight'#3#247#0#11'ClientWidth'#3#136#1#10'Im'
+'ageIndex'#2#1#6'Height'#3#247#0#5'Width'#3#136#1#0#9'TDateEdit'#10'deDateFr'
+'om'#23'CalendarDisplaySettings'#11#14'dsShowHeadings'#14'dsShowDayNames'#0#9
+'OKCaption'#6#2'OK'#13'CancelCaption'#6#6'Cancel'#4'Date'#5#0#0#0#0#0#0#224
+#152#14'@'#8'ReadOnly'#8#11'ButtonWidth'#2#23#5'Color'#7#9'clBtnFace'#7'Enab'
+'led'#8#10'Glyph.Data'#10'3'#2#0#0'/'#2#0#0'/* XPM */'#10'static char *calen'
+'dar[] = {'#10'/* columns rows colors chars-per-pixel */'#10'"14 12 17 1",'
+#10'" c black",'#10'". c #800000",'#10'"X c #008000",'#10'"o c #808000",'#10
+'"O c navy",'#10'"+ c #800080",'#10'"@ c #008080",'#10'"# c #808080",'#10'"$'
+' c #C0C0C0",'#10'"% c red",'#10'"& c green",'#10'"* c yellow",'#10'"= c blu'
+'e",'#10'"- c magenta",'#10'"; c cyan",'#10'": c gray100",'#10'"> c None",'
+#10'/* pixels */'#10'">> >>",'#10'">>:$$$$$$$$:O#",'#10'">>::::::::'
+'::O#",'#10'">>:: :: :O#",'#10'">>: :: ::::O#",'#10'">>:: :: $:O#",'#10
+'">>:: ::::: :O#",'#10'">>:: ::$:$ :O#",'#10'">>: : $:O#",'#10'">>::::::'
+'::::O#",'#10'">> O OO O O#",'#10'">>>###########"'#10'};'#10#9'NumGlyphs'
+#2#1#11'ParentColor'#8#8'TabOrder'#2#0#5'Color'#7#9'clBtnFace'#7'Enabled'#8#8
+'TabOrder'#2#0#4'Text'#6#10'23.02.2007'#4'Left'#2#4#6'Height'#2#23#3'Top'#2
+')'#5'Width'#2'P'#0#0#9'TDateEdit'#8'deDateTo'#23'CalendarDisplaySettings'#11
+#14'dsShowHeadings'#14'dsShowDayNames'#0#9'OKCaption'#6#2'OK'#13'CancelCapti'
+'on'#6#6'Cancel'#4'Date'#5#0#0#0#0#0#0#224#152#14'@'#8'ReadOnly'#8#11'Button'
+'Width'#2#23#5'Color'#7#9'clBtnFace'#7'Enabled'#8#10'Glyph.Data'#10'3'#2#0#0
+'/'#2#0#0'/* XPM */'#10'static char *calendar[] = {'#10'/* columns rows colo'
,'rs chars-per-pixel */'#10'"14 12 17 1",'#10'" c black",'#10'". c #800000",'
+#10'"X c #008000",'#10'"o c #808000",'#10'"O c navy",'#10'"+ c #800080",'#10
+'"@ c #008080",'#10'"# c #808080",'#10'"$ c #C0C0C0",'#10'"% c red",'#10'"& '
+'c green",'#10'"* c yellow",'#10'"= c blue",'#10'"- c magenta",'#10'"; c cya'
+'n",'#10'": c gray100",'#10'"> c None",'#10'/* pixels */'#10'">> >>'
+'",'#10'">>:$$$$$$$$:O#",'#10'">>::::::::::O#",'#10'">>:: :: :O#",'#10'">'
+'>: :: ::::O#",'#10'">>:: :: $:O#",'#10'">>:: ::::: :O#",'#10'">>:: ::$:$'
+' :O#",'#10'">>: : $:O#",'#10'">>::::::::::O#",'#10'">> O OO O O#",'#10
+'">>>###########"'#10'};'#10#9'NumGlyphs'#2#1#11'ParentColor'#8#8'TabOrder'#2
+#1#5'Color'#7#9'clBtnFace'#7'Enabled'#8#8'TabOrder'#2#1#4'Text'#6#10'23.02.2'
+'007'#4'Left'#3#164#0#6'Height'#2#23#3'Top'#2')'#5'Width'#2'P'#0#0#9'TCheckB'
+'ox'#10'cbDateFrom'#7'Caption'#6#10'Date From:'#8'OnChange'#7#16'cbDateFromC'
+'hange'#8'TabOrder'#2#2#4'Left'#2#4#6'Height'#2#13#3'Top'#2#22#5'Width'#2'H'
+#0#0#9'TCheckBox'#14'cbNotOlderThan'#7'Caption'#6#15'Not older than:'#8'TabO'
+'rder'#2#3#4'Left'#2#4#6'Height'#2#13#3'Top'#3#160#0#5'Width'#2'Z'#0#0#9'TSp'
+'inEdit'#9'SpinEdit1'#8'TabOrder'#2#4#4'Left'#2'd'#6'Height'#2#20#3'Top'#3
+#153#0#5'Width'#2'p'#0#0#9'TComboBox'#9'ComboBox1'#16'AutoCompleteText'#11#22
+'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#9'MaxLength'#2#0#8'TabOr'
+'der'#2#5#4'Text'#6#9'ComboBox1'#4'Left'#3#4#1#6'Height'#2#21#3'Top'#3#153#0
+#5'Width'#2'h'#0#0#9'TCheckBox'#14'cbFileSizeFrom'#7'Caption'#6#15'File Size'
+' From:'#8'OnChange'#7#20'cbFileSizeFromChange'#8'TabOrder'#2#6#4'Left'#2#4#6
+'Height'#2#13#3'Top'#2'Q'#5'Width'#2'X'#0#0#9'TCheckBox'#8'cbDateTo'#7'Capti'
+'on'#6#8'Date To:'#8'OnChange'#7#14'cbDateToChange'#8'TabOrder'#2#7#4'Left'#3
+#164#0#6'Height'#2#13#3'Top'#2#22#5'Width'#2'>'#0#0#9'TCheckBox'#12'cbFileSi'
+'zeTo'#7'Caption'#6#13'File Size To:'#8'OnChange'#7#18'cbFileSizeToChange'#8
+'TabOrder'#2#8#4'Left'#3#164#0#6'Height'#2#13#3'Top'#2'Q'#5'Width'#2'N'#0#0#9
+'TSpinEdit'#14'seFileSizeFrom'#7'Enabled'#8#8'TabOrder'#2#9#4'Left'#2#4#6'He'
+'ight'#2#20#3'Top'#2'i'#5'Width'#2'j'#0#0#9'TSpinEdit'#12'seFileSizeTo'#7'En'
+'abled'#8#8'TabOrder'#2#10#4'Left'#3#164#0#6'Height'#2#20#3'Top'#2'i'#5'Widt'
+'h'#2'n'#0#0#0#0#7'TButton'#8'btnClose'#7'Anchors'#11#5'akTop'#7'akRight'#0
+#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#6'&Close'#7'OnClick'#7#13'bt'
+'nCloseClick'#8'TabOrder'#2#3#4'Left'#3#152#1#6'Height'#2#25#3'Top'#2'G'#5'W'
+'idth'#2'K'#0#0#7'TButton'#7'btnStop'#7'Anchors'#11#5'akTop'#7'akRight'#0#25
+'BorderSpacing.InnerBorder'#2#2#6'Cancel'#9#7'Caption'#6#6'Cancel'#7'Enabled'
+#8#7'OnClick'#7#12'btnStopClick'#8'TabOrder'#2#1#4'Left'#3#152#1#6'Height'#2
+#25#3'Top'#2'g'#5'Width'#2'K'#0#0#7'TButton'#8'btnStart'#7'Anchors'#11#5'akT'
+'op'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#6'&Start'#7
+'Default'#9#7'OnClick'#7#13'btnStartClick'#8'TabOrder'#2#2#4'Left'#3#152#1#6
+'Height'#2#25#3'Top'#2''''#5'Width'#2'K'#0#0#0#6'TPanel'#6'Panel1'#5'Align'#7
+#8'alClient'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#179#0#11'ClientWi'
+'dth'#3#239#1#11'FullRepaint'#8#8'TabOrder'#2#1#6'Height'#3#179#0#3'Top'#3#26
+#1#5'Width'#3#239#1#0#6'TPanel'#6'Panel3'#5'Align'#7#5'alTop'#10'BevelInner'
+#7#8'bvRaised'#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#2'6'#11'Client'
+'Width'#3#239#1#11'FullRepaint'#8#8'TabOrder'#2#0#6'Height'#2'6'#5'Width'#3
+#239#1#0#6'TLabel'#9'lblStatus'#7'Caption'#6#9'lblStatus'#5'Color'#7#6'clNon'
+'e'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#13#9'Font.Name'#6#15'adobe'
+'-helvetica'#10'Font.Pitch'#7#10'fpVariable'#10'Font.Style'#11#6'fsBold'#0#11
+'ParentColor'#8#4'Left'#2#8#6'Height'#2#13#3'Top'#2#30#5'Width'#2','#0#0#6'T'
+'Label'#10'lblCurrent'#7'Caption'#6#10'lblCurrent'#5'Color'#7#6'clNone'#10'F'
+'ont.Color'#7#7'clBlack'#11'Font.Height'#2#13#9'Font.Name'#6#15'adobe-helvet'
+'ica'#10'Font.Pitch'#7#10'fpVariable'#10'Font.Style'#11#6'fsBold'#0#11'Paren'
+'tColor'#8#4'Left'#2#8#6'Height'#2#13#3'Top'#2#12#5'Width'#2'1'#0#0#0#8'TLis'
+'tBox'#14'lsFoundedFiles'#5'Align'#7#8'alClient'#11'MultiSelect'#9#10'OnDblC'
+'lick'#7#22'lsFoundedFilesDblClick'#9'PopupMenu'#7#13'PopupMenuFind'#8'TabOr'
+'der'#2#1#6'Height'#2'}'#3'Top'#2'6'#5'Width'#3#239#1#0#0#0#10'TPopupMenu'#13
+'PopupMenuFind'#4'left'#3#152#0#3'top'#3#152#1#0#9'TMenuItem'#14'miShowInVie'
+'wer'#7'Caption'#6#14'Show In Viewer'#7'OnClick'#7#19'miShowInViewerClick'#0
+#0#0#0
'TPF0'#241#11'TfrmFindDlg'#10'frmFindDlg'#4'Left'#3'!'#1#6'Height'#3#205#1#3
+'Top'#2#25#5'Width'#3#29#2#18'HorzScrollBar.Page'#3#28#2#18'VertScrollBar.Pa'
+'ge'#3#204#1#19'VertScrollBar.Range'#3'<'#1#13'ActiveControl'#7#10'cbDateFro'
+'m'#7'Caption'#6#10'frmFindDlg'#10'KeyPreview'#9#7'OnClose'#7#15'frmFindDlgC'
+'lose'#12'OnCloseQuery'#7#14'FormCloseQuery'#10'OnKeyPress'#7#12'FormKeyPres'
+'s'#6'OnShow'#7#14'frmFindDlgShow'#8'Position'#7#14'poScreenCenter'#0#9'TSpl'
+'itter'#9'Splitter1'#6'Cursor'#7#8'crVSplit'#6'Height'#2#1#5'Width'#3#29#2#5
+'Align'#7#5'alTop'#12'ResizeAnchor'#7#5'akTop'#0#0#6'TPanel'#6'Panel2'#6'Hei'
+'ght'#3#25#1#3'Top'#2#1#5'Width'#3#29#2#5'Align'#7#5'alTop'#10'BevelOuter'#7
+#6'bvNone'#11'FullRepaint'#8#8'TabOrder'#2#0#0#12'TPageControl'#9'pgcSearch'
+#6'Height'#3#17#1#5'Width'#3#190#1#10'ActivePage'#7#10'tsStandard'#7'Anchors'
+#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabIndex'#2#0#8'TabOrder'#2#0#0#9'TTab'
+'Sheet'#10'tsStandard'#7'Caption'#6#8'Standard'#0#6'TLabel'#16'lblFindPathSt'
+'art'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'9'#5'Width'#2#30#7'Caption'#6#7'Fi'
+'leDir'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#15'lblFindFileM'
+'ask'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#1#5'Width'#2')'#7'Caption'#6#8'Fil'
+'eMask'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#16'edtFindPathSt'
+'art'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'Q'#5'Width'#3'j'#1#7'Anchors'#11#5
+'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#0#0#0#7'TButton'#9'btnSelDir'#4
+'Left'#3'z'#1#6'Height'#2#25#3'Top'#2'P'#5'Width'#2#25#7'Anchors'#11#5'akTop'
+#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'...'#7'OnClic'
+'k'#7#14'btnSelDirClick'#8'TabOrder'#2#2#0#0#9'TComboBox'#15'cmbFindFileMask'
+#4'Left'#2#8#6'Height'#2#21#3'Top'#2#25#5'Width'#3'j'#1#7'Anchors'#11#5'akTo'
+'p'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'
+#20'cbactSearchAscending'#0#10'ItemHeight'#2#18#9'MaxLength'#2#0#11'ParentCt'
+'l3D'#8#8'TabOrder'#2#1#4'Text'#6#1'*'#0#0#9'TGroupBox'#10'gbFindData'#4'Lef'
+'t'#2#8#6'Height'#2'P'#3'Top'#3#145#0#5'Width'#3#162#1#7'Anchors'#11#5'akTop'
+#6'akLeft'#7'akRight'#0#7'Caption'#6#9'Find Data'#7'Enabled'#8#11'ParentCtl3'
+'D'#8#8'TabOrder'#2#3#0#9'TCheckBox'#10'cbCaseSens'#4'Left'#2#18#6'Height'#2
+#13#3'Top'#2'('#5'Width'#2'X'#11'AllowGrayed'#9#7'Caption'#6#14'Case sensiti'
+'ve'#8'TabOrder'#2#0#0#0#5'TEdit'#11'edtFindText'#4'Left'#2#16#6'Height'#2#24
+#3'Top'#2#8#5'Width'#3'n'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8
+'TabOrder'#2#1#0#0#9'TCheckBox'#12'cbNoThisText'#4'Left'#3#154#0#6'Height'#2
+#13#3'Top'#2'('#5'Width'#3#177#0#7'Caption'#6'"Find files NOT containing the'
+' text'#8'TabOrder'#2#2#0#0#0#9'TCheckBox'#12'cbFindInFile'#4'Left'#2#12#6'H'
+'eight'#2#13#3'Top'#2'y'#5'Width'#2'C'#11'AllowGrayed'#9#7'Caption'#6#12'Fin'
+'d in file'#7'OnClick'#7#17'cbFindInFileClick'#8'TabOrder'#2#4#0#0#0#9'TTabS'
+'heet'#10'tsAdvanced'#7'Caption'#6#8'Advanced'#10'ImageIndex'#2#1#0#9'TDateE'
+'dit'#10'deDateFrom'#4'Left'#2#4#6'Height'#2#23#3'Top'#2')'#5'Width'#2'P'#5
+'Color'#7#9'clBtnFace'#7'Enabled'#8#8'ReadOnly'#8#8'TabOrder'#2#0#4'Text'#6
+#10'23.02.2007'#11'ButtonWidth'#2#23#10'Glyph.Data'#10'3'#2#0#0'/'#2#0#0'/* '
+'XPM */'#10'static char *calendar[] = {'#10'/* columns rows colors chars-per'
+'-pixel */'#10'"14 12 17 1",'#10'" c black",'#10'". c #800000",'#10'"X c #0'
+'08000",'#10'"o c #808000",'#10'"O c navy",'#10'"+ c #800080",'#10'"@ c #008'
+'080",'#10'"# c #808080",'#10'"$ c #C0C0C0",'#10'"% c red",'#10'"& c green",'
+#10'"* c yellow",'#10'"= c blue",'#10'"- c magenta",'#10'"; c cyan",'#10'": '
+'c gray100",'#10'"> c None",'#10'/* pixels */'#10'">> >>",'#10'">>:'
+'$$$$$$$$:O#",'#10'">>::::::::::O#",'#10'">>:: :: :O#",'#10'">>: :: ::::'
+'O#",'#10'">>:: :: $:O#",'#10'">>:: ::::: :O#",'#10'">>:: ::$:$ :O#",'#10
+'">>: : $:O#",'#10'">>::::::::::O#",'#10'">> O OO O O#",'#10'">>>#####'
+'######"'#10'};'#10#9'NumGlyphs'#2#1#11'ParentColor'#8#23'CalendarDisplaySet'
+'tings'#11#14'dsShowHeadings'#14'dsShowDayNames'#0#9'OKCaption'#6#2'OK'#13'C'
+'ancelCaption'#6#6'Cancel'#4'Date'#5#0#0#0#0#0#0#224#152#14'@'#0#0#9'TDateEd'
+'it'#8'deDateTo'#4'Left'#3#164#0#6'Height'#2#23#3'Top'#2')'#5'Width'#2'P'#5
+'Color'#7#9'clBtnFace'#7'Enabled'#8#8'ReadOnly'#8#8'TabOrder'#2#1#4'Text'#6
+#10'23.02.2007'#11'ButtonWidth'#2#23#10'Glyph.Data'#10'3'#2#0#0'/'#2#0#0'/* '
+'XPM */'#10'static char *calendar[] = {'#10'/* columns rows colors chars-per'
+'-pixel */'#10'"14 12 17 1",'#10'" c black",'#10'". c #800000",'#10'"X c #0'
+'08000",'#10'"o c #808000",'#10'"O c navy",'#10'"+ c #800080",'#10'"@ c #008'
+'080",'#10'"# c #808080",'#10'"$ c #C0C0C0",'#10'"% c red",'#10'"& c green",'
+#10'"* c yellow",'#10'"= c blue",'#10'"- c magenta",'#10'"; c cyan",'#10'": '
+'c gray100",'#10'"> c None",'#10'/* pixels */'#10'">> >>",'#10'">>:'
+'$$$$$$$$:O#",'#10'">>::::::::::O#",'#10'">>:: :: :O#",'#10'">>: :: ::::'
+'O#",'#10'">>:: :: $:O#",'#10'">>:: ::::: :O#",'#10'">>:: ::$:$ :O#",'#10
,'">>: : $:O#",'#10'">>::::::::::O#",'#10'">> O OO O O#",'#10'">>>#####'
+'######"'#10'};'#10#9'NumGlyphs'#2#1#11'ParentColor'#8#23'CalendarDisplaySet'
+'tings'#11#14'dsShowHeadings'#14'dsShowDayNames'#0#9'OKCaption'#6#2'OK'#13'C'
+'ancelCaption'#6#6'Cancel'#4'Date'#5#0#0#0#0#0#0#224#152#14'@'#0#0#9'TCheckB'
+'ox'#10'cbDateFrom'#4'Left'#2#4#6'Height'#2#13#3'Top'#2#22#5'Width'#2'H'#7'C'
+'aption'#6#10'Date From:'#8'OnChange'#7#16'cbDateFromChange'#8'TabOrder'#2#2
+#0#0#9'TCheckBox'#14'cbNotOlderThan'#4'Left'#2#4#6'Height'#2#13#3'Top'#3#136
+#0#5'Width'#2'Z'#7'Caption'#6#15'Not older than:'#8'OnChange'#7#20'cbNotOlde'
+'rThanChange'#8'TabOrder'#2#3#0#0#9'TSpinEdit'#14'seNotOlderThan'#4'Left'#2#4
+#6'Height'#2#20#3'Top'#3#161#0#5'Width'#2'j'#7'Enabled'#8#8'TabOrder'#2#4#0#0
+#9'TComboBox'#11'cbDelayUnit'#4'Left'#3#164#0#6'Height'#2#21#3'Top'#3#160#0#5
+'Width'#2'n'#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSear'
+'chAscending'#0#7'Enabled'#8#9'ItemIndex'#2#2#13'Items.Strings'#1#6#9'Minute'
+'(s)'#6#7'Hour(s)'#6#6'Day(s)'#6#7'Week(s)'#6#8'Month(s)'#6#7'Year(s)'#0#9'M'
+'axLength'#2#0#8'TabOrder'#2#5#4'Text'#6#6'Day(s)'#0#0#9'TCheckBox'#14'cbFil'
+'eSizeFrom'#4'Left'#2#4#6'Height'#2#13#3'Top'#3#193#0#5'Width'#2'X'#7'Captio'
+'n'#6#15'File Size From:'#8'OnChange'#7#20'cbFileSizeFromChange'#8'TabOrder'
+#2#6#0#0#9'TCheckBox'#8'cbDateTo'#4'Left'#3#164#0#6'Height'#2#13#3'Top'#2#22
+#5'Width'#2'>'#7'Caption'#6#8'Date To:'#8'OnChange'#7#14'cbDateToChange'#8'T'
+'abOrder'#2#7#0#0#9'TCheckBox'#12'cbFileSizeTo'#4'Left'#3#164#0#6'Height'#2
+#13#3'Top'#3#193#0#5'Width'#2'N'#7'Caption'#6#13'File Size To:'#8'OnChange'#7
+#18'cbFileSizeToChange'#8'TabOrder'#2#8#0#0#9'TSpinEdit'#14'seFileSizeFrom'#4
+'Left'#2#4#6'Height'#2#20#3'Top'#3#217#0#5'Width'#2'j'#7'Enabled'#8#8'TabOrd'
+'er'#2#9#0#0#9'TSpinEdit'#12'seFileSizeTo'#4'Left'#3#164#0#6'Height'#2#20#3
+'Top'#3#217#0#5'Width'#2'n'#7'Enabled'#8#8'TabOrder'#2#10#0#0#9'TComboBox'#15
+'cbUnitOfMeasure'#4'Left'#3#28#1#6'Height'#2#21#3'Top'#3#217#0#5'Width'#2'H'
+#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'
+#0#9'ItemIndex'#2#1#13'Items.Strings'#1#6#4'Byte'#6#5'Kbyte'#6#5'Mbyte'#6#5
+'Gbyte'#0#9'MaxLength'#2#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#11#4
+'Text'#6#5'Kbyte'#0#0#9'TCheckBox'#10'cbTimeFrom'#4'Left'#2#4#6'Height'#2#13
+#3'Top'#2'I'#5'Width'#2'E'#7'Caption'#6#10'Time from:'#8'OnChange'#7#16'cbTi'
+'meFromChange'#8'TabOrder'#2#12#0#0#9'TCheckBox'#8'cbTimeTo'#4'Left'#3#164#0
+#6'Height'#2#13#3'Top'#2'I'#5'Width'#2':'#7'Caption'#6#8'Time to:'#8'OnChang'
+'e'#7#14'cbTimeToChange'#8'TabOrder'#2#13#0#0#9'TMaskEdit'#10'meTimeFrom'#4
+'Left'#2#4#6'Height'#2#23#3'Top'#2'a'#5'Width'#2'P'#7'Enabled'#8#8'EditMask'
+#6#8'00:00:00'#9'MaxLength'#2#8#11'ParentColor'#8#8'TabOrder'#2#14#4'Text'#6
+#8'00:00:00'#8'OnChange'#7#12'meTimeChange'#0#0#9'TMaskEdit'#8'meTimeTo'#4'L'
+'eft'#3#164#0#6'Height'#2#23#3'Top'#2'a'#5'Width'#2'P'#7'Enabled'#8#8'EditMa'
+'sk'#6#8'00:00:00'#9'MaxLength'#2#8#11'ParentColor'#8#8'TabOrder'#2#15#4'Tex'
+'t'#6#8'00:00:00'#8'OnChange'#7#12'meTimeChange'#0#0#0#0#7'TButton'#8'btnClo'
+'se'#4'Left'#3#198#1#6'Height'#2#25#3'Top'#2'G'#5'Width'#2'K'#7'Anchors'#11#5
+'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#6'&Close'
+#7'OnClick'#7#13'btnCloseClick'#8'TabOrder'#2#3#0#0#7'TButton'#7'btnStop'#4
+'Left'#3#198#1#6'Height'#2#25#3'Top'#2'g'#5'Width'#2'K'#7'Anchors'#11#5'akTo'
+'p'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#6'Cancel'#9#7'Caption'#6#6
+'Cancel'#7'Enabled'#8#7'OnClick'#7#12'btnStopClick'#8'TabOrder'#2#1#0#0#7'TB'
+'utton'#8'btnStart'#4'Left'#3#198#1#6'Height'#2#25#3'Top'#2''''#5'Width'#2'K'
+#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Cap'
+'tion'#6#6'&Start'#7'Default'#9#7'OnClick'#7#13'btnStartClick'#8'TabOrder'#2
+#2#0#0#0#6'TPanel'#6'Panel1'#6'Height'#3#179#0#3'Top'#3#26#1#5'Width'#3#29#2
+#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'#11'FullRepaint'#8#8'TabOr'
+'der'#2#1#0#6'TPanel'#6'Panel3'#6'Height'#2'6'#5'Width'#3#29#2#5'Align'#7#5
+'alTop'#10'BevelInner'#7#8'bvRaised'#10'BevelOuter'#7#9'bvLowered'#11'FullRe'
+'paint'#8#8'TabOrder'#2#0#0#6'TLabel'#9'lblStatus'#4'Left'#2#8#6'Height'#2#13
+#3'Top'#2#30#5'Width'#2','#7'Caption'#6#9'lblStatus'#5'Color'#7#6'clNone'#10
+'Font.Color'#7#7'clBlack'#11'Font.Height'#2#13#9'Font.Name'#6#15'adobe-helve'
+'tica'#10'Font.Pitch'#7#10'fpVariable'#10'Font.Style'#11#6'fsBold'#0#11'Pare'
+'ntColor'#8#0#0#6'TLabel'#10'lblCurrent'#4'Left'#2#8#6'Height'#2#13#3'Top'#2
+#12#5'Width'#2'1'#7'Caption'#6#10'lblCurrent'#5'Color'#7#6'clNone'#10'Font.C'
+'olor'#7#7'clBlack'#11'Font.Height'#2#13#9'Font.Name'#6#15'adobe-helvetica'
+#10'Font.Pitch'#7#10'fpVariable'#10'Font.Style'#11#6'fsBold'#0#11'ParentColo'
+'r'#8#0#0#0#8'TListBox'#14'lsFoundedFiles'#6'Height'#2'}'#3'Top'#2'6'#5'Widt'
+'h'#3#29#2#5'Align'#7#8'alClient'#11'MultiSelect'#9#10'OnDblClick'#7#22'lsFo'
+'undedFilesDblClick'#9'PopupMenu'#7#13'PopupMenuFind'#8'TabOrder'#2#1#0#0#0
,#10'TPopupMenu'#13'PopupMenuFind'#4'left'#3#152#0#3'top'#3#152#1#0#9'TMenuIt'
+'em'#14'miShowInViewer'#7'Caption'#6#14'Show In Viewer'#7'OnClick'#7#19'miSh'
+'owInViewerClick'#0#0#0#0
]);

View file

@ -20,7 +20,7 @@ uses
LResources,
SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, uFindThread, Menus,
fLngForm, Calendar, EditBtn, Spin;
fLngForm, Calendar, EditBtn, Spin, MaskEdit;
type
@ -37,10 +37,15 @@ type
cbFileSizeFrom: TCheckBox;
cbDateTo: TCheckBox;
cbFileSizeTo: TCheckBox;
ComboBox1: TComboBox;
cbTimeFrom: TCheckBox;
cbTimeTo: TCheckBox;
cbDelayUnit: TComboBox;
cbUnitOfMeasure: TComboBox;
deDateFrom: TDateEdit;
deDateTo: TDateEdit;
SpinEdit1: TSpinEdit;
meTimeFrom: TMaskEdit;
meTimeTo: TMaskEdit;
seNotOlderThan: TSpinEdit;
seFileSizeFrom: TSpinEdit;
seFileSizeTo: TSpinEdit;
Splitter1: TSplitter;
@ -69,6 +74,9 @@ type
procedure cbDateToChange(Sender: TObject);
procedure cbFileSizeFromChange(Sender: TObject);
procedure cbFileSizeToChange(Sender: TObject);
procedure cbNotOlderThanChange(Sender: TObject);
procedure cbTimeFromChange(Sender: TObject);
procedure cbTimeToChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
@ -77,6 +85,7 @@ type
procedure frmFindDlgClose(Sender: TObject; var CloseAction: TCloseAction);
procedure frmFindDlgShow(Sender: TObject);
procedure lsFoundedFilesDblClick(Sender: TObject);
procedure meTimeChange(Sender: TObject);
procedure miShowInViewerClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
@ -105,6 +114,7 @@ begin
frmFindDlg.Show;
frmFindDlg.BringToFront;
frmFindDlg.cmbFindFileMask.SetFocus;
end;
procedure TfrmFindDlg.LoadLng;
@ -135,6 +145,8 @@ begin
end;
procedure TfrmFindDlg.btnStartClick(Sender: TObject);
var
dtTime : TDateTime;
begin
if not DirectoryExists(edtFindPathStart.Text) then
begin
@ -155,6 +167,7 @@ begin
FilterMask:=cmbFindFileMask.Text;
PathStart:=edtFindPathStart.Text;
Items:=lsFoundedFiles.Items;
IsNoThisText := cbNoThisText.Checked;
FindInFiles:=cbFindInFile.Checked;
FindData:=edtFindText.Text;
CaseSensitive:=cbCaseSens.Checked;
@ -162,24 +175,99 @@ begin
if cbDateFrom.Checked then
begin
IsDateFrom := True;
DateFrom := deDateFrom.Date;
DateTimeFrom := deDateFrom.Date;
end;
if cbDateTo.Checked then
begin
IsDateTo := True;
DateTo := deDateTo.Date;
DateTimeTo := deDateTo.Date;
end;
(* Time search *)
if cbTimeFrom.Checked then
begin
IsTimeFrom := True;
dtTime := 0;
if TryStrToTime(meTimeFrom.Text, dtTime) then
DateTimeFrom := DateTimeFrom + dtTime;
end;
if cbTimeTo.Checked then
begin
IsTimeTo := True;
dtTime := 0;
if TryStrToTime(meTimeTo.Text, dtTime) then
DateTimeTo := DateTimeTo + dtTime;
end;
(* Not Older Than *)
if cbNotOlderThan.Checked then
begin
case cbDelayUnit.ItemIndex of
0: //Minute(s)
begin
IsTimeFrom := True;
IsDateFrom := True;
DateTimeFrom := Now - 0.0006945 * StrToInt(seNotOlderThan.Text);
end;
1: //Hour(s)
begin
IsTimeFrom := True;
IsDateFrom := True;
DateTimeFrom := Now - 0.0416667 * StrToInt(seNotOlderThan.Text);
end;
2: //Day(s)
begin
IsDateFrom := True;
DateTimeFrom := Now - 1 * StrToInt(seNotOlderThan.Text);
end;
3: //Week(s)
begin
IsDateFrom := True;
DateTimeFrom := Now - 7 * StrToInt(seNotOlderThan.Text);
end;
4: //Month(s)
begin
IsDateFrom := True;
DateTimeFrom := Now - 31 * StrToInt(seNotOlderThan.Text);
end;
5: //Year(s)
begin
IsDateFrom := True;
DateTimeFrom := Now - 365 * StrToInt(seNotOlderThan.Text);
end;
end;
end;
(* File size search *)
if cbFileSizeFrom.Checked then
begin
IsFileSizeFrom := True;
FileSizeFrom := seFileSizeFrom.Value;
case cbUnitOfMeasure.ItemIndex of
0:
FileSizeFrom := seFileSizeFrom.Value; //Byte
1:
FileSizeFrom := seFileSizeFrom.Value * 1024; //KiloByte
2:
FileSizeFrom := seFileSizeFrom.Value * 1048576; //MegaByte
3:
FileSizeFrom := seFileSizeFrom.Value * 1073741824; //GigaByte
end;
end;
if cbFileSizeTo.Checked then
begin
IsFileSizeTo := True;
FileSizeTo := seFileSizeTo.Value;
case cbUnitOfMeasure.ItemIndex of
0:
FileSizeTo := seFileSizeTo.Value; //Byte
1:
FileSizeTo := seFileSizeTo.Value * 1024; //KiloByte
2:
FileSizeTo := seFileSizeTo.Value * 1048576; //MegaByte
3:
FileSizeTo := seFileSizeTo.Value * 1073741824; //GigaByte
end;
end;
Status:=lblStatus;
Current:=lblCurrent;
writeln('thread a');
@ -219,6 +307,30 @@ begin
seFileSizeTo.Enabled := cbFileSizeTo.Checked;
end;
procedure TfrmFindDlg.cbNotOlderThanChange(Sender: TObject);
begin
seNotOlderThan.Enabled := cbNotOlderThan.Checked;
cbDelayUnit.Enabled := cbNotOlderThan.Checked;
end;
procedure TfrmFindDlg.cbTimeFromChange(Sender: TObject);
var
sTime : String;
begin
meTimeFrom.Enabled := cbTimeFrom.Checked;
DateTimeToString(sTime, 'hh:mm:ss', Time);
meTimeFrom.EditText := sTime;
end;
procedure TfrmFindDlg.cbTimeToChange(Sender: TObject);
var
sTime : String;
begin
meTimeTo.Enabled := cbTimeTo.Checked;
DateTimeToString(sTime, 'hh:mm:ss', Time);
meTimeTo.EditText := sTime;
end;
procedure TfrmFindDlg.ThreadTerminate(Sender:TObject);
begin
writeln('thread terminate end');
@ -284,6 +396,24 @@ begin
miShowInViewer.Click;
end;
procedure TfrmFindDlg.meTimeChange(Sender: TObject);
var
ME : TMaskEdit;
begin
ME := TMaskEdit(Sender);
if StrToIntDef(Copy(ME.EditText, 1, 2), 24) > 23 then
ME.EditText := '00' + Copy(ME.EditText, 3, 6);
if StrToIntDef(Copy(ME.EditText, 4, 2), 60) > 59 then
ME.EditText := Copy(ME.EditText, 1, 3) + '00' + Copy(ME.EditText, 6, 3);
if StrToIntDef(Copy(ME.EditText, 7, 2), 60) > 59 then
ME.EditText := Copy(ME.EditText, 1, 6) + '00';
end;
procedure TfrmFindDlg.miShowInViewerClick(Sender: TObject);
var
sl:TStringList;

446
fMain.lrs
View file

@ -1,227 +1,237 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TfrmMain','FORMDATA',[
'TPF0'#8'TfrmMain'#7'frmMain'#7'Caption'#6#16'Double Commander'#12'ClientHeig'
+'ht'#3'<'#1#11'ClientWidth'#3#13#2#10'Font.Color'#7#7'clBlack'#11'Font.Heigh'
+'t'#2#13#9'Font.Name'#6#9'Helvetica'#10'Font.Pitch'#7#10'fpVariable'#10'KeyP'
+'review'#9#4'Menu'#7#7'mnuMain'#10'OnActivate'#7#12'FormActivate'#7'OnClose'
+#7#12'frmMainClose'#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestr'
+'oy'#9'OnKeyDown'#7#11'FormKeyDown'#10'OnKeyPress'#7#12'FormKeyPress'#7'OnKe'
+'yUp'#7#12'frmMainKeyUp'#8'OnResize'#7#10'FormResize'#6'OnShow'#7#11'frmMain'
+'Show'#13'PixelsPerInch'#2'`'#8'Position'#7#15'poDesktopCenter'#8'ShowHint'#9
+#10'TextHeight'#2#16#18'HorzScrollBar.Page'#3#12#2#18'VertScrollBar.Page'#3
+';'#1#19'VertScrollBar.Range'#2'O'#4'Left'#3#250#0#6'Height'#3'P'#1#3'Top'#3
+#174#0#5'Width'#3#13#2#0#6'TPanel'#9'pnlButton'#5'Align'#7#5'alTop'#12'Clien'
+'tHeight'#2#22#11'ClientWidth'#3#13#2#11'FullRepaint'#8#8'TabOrder'#2#0#7'Vi'
+'sible'#8#6'Height'#2#22#3'Top'#2#23#5'Width'#3#13#2#0#0#6'TPanel'#7'pnlDisk'
+#5'Align'#7#5'alTop'#7'Caption'#6#7'pnlDisk'#12'ClientHeight'#2#24#11'Client'
+'Width'#3#13#2#11'FullRepaint'#8#11'ParentColor'#8#8'TabOrder'#2#1#6'Height'
+#2#24#3'Top'#2'-'#5'Width'#3#13#2#0#11'TKAStoolBar'#7'dskLeft'#17'OnToolButt'
+'onClick'#7#22'dskLeftToolButtonClick'#15'CheckToolButton'#9#11'FlatButtons'
+#9#11'IsDiskPanel'#9#5'Align'#7#6'alLeft'#12'ClientHeight'#2#22#11'ClientWid'
+'th'#3'b'#1#11'ParentColor'#8#8'TabOrder'#2#0#4'Left'#2#1#6'Height'#2#22#3'T'
+'op'#2#1#5'Width'#3'b'#1#0#0#11'TKAStoolBar'#8'dskRight'#17'OnToolButtonClic'
+'k'#7#23'dskRightToolButtonClick'#15'CheckToolButton'#9#11'FlatButtons'#9#11
+'IsDiskPanel'#9#5'Align'#7#8'alClient'#7'Anchors'#11#5'akTop'#6'akLeft'#8'ak'
+'Bottom'#0#12'ClientHeight'#2#22#11'ClientWidth'#3#169#0#8'TabOrder'#2#1#4'L'
+'eft'#3'c'#1#6'Height'#2#22#3'Top'#2#1#5'Width'#3#169#0#0#0#0#6'TPanel'#10'p'
+'nlCommand'#5'Align'#7#8'alBottom'#7'Anchors'#11#6'akLeft'#7'akRight'#0#10'B'
+'evelOuter'#7#9'bvLowered'#12'ClientHeight'#2'B'#11'ClientWidth'#3#13#2#11'F'
+'ullRepaint'#8#11'ParentColor'#8#8'TabOrder'#2#2#6'Height'#2'B'#3'Top'#3#250
+#0#5'Width'#3#13#2#0#6'TLabel'#14'lblCommandPath'#9'Alignment'#7#14'taRightJ'
+'ustify'#7'Caption'#6#4'Path'#5'Color'#7#6'clNone'#11'ParentColor'#8#13'Show'
+'AccelChar'#8#4'Left'#2#1#6'Height'#2#14#3'Top'#2#8#5'Width'#2#23#0#0#6'TPan'
+'el'#7'pnlKeys'#5'Align'#7#8'alBottom'#7'Anchors'#11#6'akLeft'#7'akRight'#0
+#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#2#27#11'ClientWidth'#3#11#2
+#11'FullRepaint'#8#8'TabOrder'#2#0#8'OnResize'#7#13'pnlKeysResize'#4'Left'#2
+#1#6'Height'#2#27#3'Top'#2'&'#5'Width'#3#11#2#0#12'TSpeedButton'#5'btnF3'#6
+'Action'#7#7'actView'#4'Flat'#9#9'NumGlyphs'#2#0#4'Left'#2#1#6'Height'#2#23#3
+'Top'#2#4#5'Width'#2'K'#0#0#12'TSpeedButton'#5'btnF4'#6'Action'#7#7'actEdit'
+#4'Flat'#9#9'NumGlyphs'#2#0#4'Left'#2'L'#6'Height'#2#23#3'Top'#2#4#5'Width'#2
+'K'#0#0#12'TSpeedButton'#5'btnF5'#6'Action'#7#7'actCopy'#4'Flat'#9#9'NumGlyp'
+'hs'#2#0#4'Left'#3#151#0#6'Height'#2#23#3'Top'#2#4#5'Width'#2'K'#0#0#12'TSpe'
+'edButton'#5'btnF6'#6'Action'#7#9'actRename'#4'Flat'#9#9'NumGlyphs'#2#0#4'Le'
+'ft'#3#226#0#6'Height'#2#23#3'Top'#2#4#5'Width'#2'K'#0#0#12'TSpeedButton'#5
+'btnF7'#6'Action'#7#10'actMakeDir'#4'Flat'#9#9'NumGlyphs'#2#0#4'Left'#3'-'#1
+#6'Height'#2#23#3'Top'#2#4#5'Width'#2'K'#0#0#12'TSpeedButton'#5'btnF8'#6'Act'
+'ion'#7#9'actDelete'#4'Flat'#9#9'NumGlyphs'#2#0#4'Left'#3'x'#1#6'Height'#2#23
+#3'Top'#2#4#5'Width'#2'K'#0#0#12'TSpeedButton'#6'btnF10'#6'Action'#7#7'actEx'
+'it'#4'Flat'#9#9'NumGlyphs'#2#0#4'Left'#3#27#2#6'Height'#2#23#3'Top'#2#4#5'W'
+'idth'#2'K'#0#0#12'TSpeedButton'#5'btnF9'#6'Action'#7#11'actShowMenu'#4'Flat'
+#9#9'NumGlyphs'#2#0#4'Left'#3#192#1#6'Height'#2#22#3'Top'#2#4#5'Width'#2'Y'#0
+#0#0#9'TComboBox'#10'edtCommand'#16'AutoCompleteText'#11#22'cbactEndOfLineCo'
+'mplete'#20'cbactSearchAscending'#0#10'ItemHeight'#2#18#9'MaxLength'#2#0#9'O'
+'nKeyDown'#7#17'edtCommandKeyDown'#7'OnKeyUp'#7#15'edtCommandKeyUp'#11'Paren'
+'tCtl3D'#8#8'TabOrder'#2#1#7'TabStop'#8#7'TabStop'#8#4'Left'#2'8'#6'Height'#2
+#21#3'Top'#2#8#5'Width'#3#176#2#0#0#0#6'TPanel'#12'pnlNotebooks'#5'Align'#7#8
+'alClient'#12'ClientHeight'#3#181#0#11'ClientWidth'#3#13#2#11'FullRepaint'#8
+#8'TabOrder'#2#3#7'TabStop'#9#6'Height'#3#181#0#3'Top'#2'E'#5'Width'#3#13#2#0
+#9'TNotebook'#6'nbLeft'#5'Align'#7#6'alLeft'#17'OnCloseTabClicked'#7#23'Note'
+'BookCloseTabClicked'#7'Options'#11#19'nboShowCloseButtons'#0#4'Left'#2#1#6
+'Height'#3#179#0#3'Top'#2#1#5'Width'#3#135#1#0#0#9'TSplitter'#9'Splitter1'#6
+'Height'#3#179#0#11'ResizeStyle'#7#6'rsLine'#5'Width'#2#4#6'Cursor'#7#8'crHS'
+'plit'#4'Left'#3#136#1#6'Height'#3#179#0#3'Top'#2#1#5'Width'#2#4#0#0#9'TNote'
+'book'#7'nbRight'#5'Align'#7#8'alClient'#17'OnCloseTabClicked'#7#23'NoteBook'
+'CloseTabClicked'#7'Options'#11#19'nboShowCloseButtons'#0#4'Left'#3#140#1#6
+'Height'#3#179#0#3'Top'#2#1#5'Width'#3#128#0#0#0#0#11'TKAStoolBar'#11'MainTo'
+'olBar'#17'OnToolButtonClick'#7#26'MainToolBarToolButtonClick'#11'FlatButton'
,'s'#9#5'Align'#7#5'alTop'#12'ClientHeight'#2#23#11'ClientWidth'#3#13#2#8'Tab'
+'Order'#2#4#11'OnMouseDown'#7#20'MainToolBarMouseDown'#6'Height'#2#23#5'Widt'
+'h'#3#13#2#0#0#9'TMainMenu'#7'mnuMain'#4'left'#3#27#1#3'top'#2#8#0#9'TMenuIt'
+'em'#8'mnuFiles'#7'Caption'#6#5'Files'#0#9'TMenuItem'#12'mnuFilesLink'#6'Act'
+'ion'#7#11'actHardLink'#7'OnClick'#7#18'actHardLinkExecute'#0#0#9'TMenuItem'
+#15'mnuFilesSymLink'#6'Action'#7#10'actSymLink'#7'OnClick'#7#17'actSymLinkEx'
+'ecute'#0#0#9'TMenuItem'#7'miLine1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#14'mn'
+'uFilesAttrib'#6'Action'#7#8'actChMod'#7'OnClick'#7#15'actChModExecute'#0#0#9
+'TMenuItem'#13'mnuFilesChown'#6'Action'#7#8'actChown'#7'OnClick'#7#15'actCho'
+'wnExecute'#0#0#9'TMenuItem'#18'mnuFilesProperties'#6'Action'#7#17'actFilePr'
+'operties'#7'OnClick'#7#24'actFilePropertiesExecute'#0#0#9'TMenuItem'#13'mnu'
+'FilesSpace'#6'Action'#7#17'actCalculateSpace'#7'OnClick'#7#24'actCalculateS'
+'paceExecute'#0#0#9'TMenuItem'#14'mnuFilesCmpCnt'#6'Action'#7#18'actCompareC'
+'ontents'#7'OnClick'#7#25'actCompareContentsExecute'#0#0#9'TMenuItem'#13'miM'
+'ultiRename'#6'Action'#7#14'actMultiRename'#7'OnClick'#7#21'actMultiRenameEx'
+'ecute'#0#0#9'TMenuItem'#7'miLine2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#13'mn'
+'uFilesSplit'#6'Action'#7#14'actFileSpliter'#7'OnClick'#7#21'actFileSpliterE'
+'xecute'#0#0#9'TMenuItem'#15'mnuFilesCombine'#6'Action'#7#13'actFileLinker'#7
+'Caption'#6#13'Combine Files'#7'OnClick'#7#20'actFileLinkerExecute'#0#0#9'TM'
+'enuItem'#7'miLine3'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#19'mnuFilesShwSysFil'
+'es'#6'Action'#7#15'actShowSysFiles'#7'OnClick'#7#22'actShowSysFilesExecute'
+#0#0#9'TMenuItem'#7'miLine4'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#6'miExit'#6
+'Action'#7#7'actExit'#7'OnClick'#7#14'actExitExecute'#0#0#0#9'TMenuItem'#7'm'
+'nuMark'#7'Caption'#6#5'&Mark'#0#9'TMenuItem'#13'mnuMarkSGroup'#6'Action'#7
+#11'actMarkPlus'#7'OnClick'#7#18'actMarkPlusExecute'#0#0#9'TMenuItem'#13'mnu'
+'MarkUGroup'#6'Action'#7#12'actMarkMinus'#7'OnClick'#7#19'actMarkMinusExecut'
+'e'#0#0#9'TMenuItem'#11'mnuMarkSAll'#6'Action'#7#14'actMarkMarkAll'#7'OnClic'
+'k'#7#21'actMarkMarkAllExecute'#0#0#9'TMenuItem'#11'mnuMarkUAll'#6'Action'#7
+#16'actMarkUnmarkAll'#7'OnClick'#7#23'actMarkUnmarkAllExecute'#0#0#9'TMenuIt'
+'em'#13'mnuMarkInvert'#6'Action'#7#13'actMarkInvert'#7'OnClick'#7#20'actMark'
+'InvertExecute'#0#0#9'TMenuItem'#7'miLine5'#7'Caption'#6#1'-'#0#0#9'TMenuIte'
+'m'#13'mnuMarkCmpDir'#7'Caption'#6#20'&Compare Directories'#7'Enabled'#8#8'S'
+'hortCut'#3'10'#0#0#0#9'TMenuItem'#6'mnuCmd'#7'Caption'#6#9'&Commands'#0#9'T'
+'MenuItem'#12'mnuCmdSearch'#6'Action'#7#9'actSearch'#7'OnClick'#7#16'actSear'
+'chExecute'#0#0#9'TMenuItem'#16'mnuCmdDirHotlist'#6'Action'#7#13'actDirHotLi'
+'st'#7'OnClick'#7#20'actDirHotListExecute'#0#0#9'TMenuItem'#7'miLine6'#7'Cap'
+'tion'#6#1'-'#0#0#9'TMenuItem'#9'miRunTerm'#6'Action'#7#10'actRunTerm'#7'OnC'
+'lick'#7#17'actRunTermExecute'#0#0#9'TMenuItem'#7'miLine9'#7'Caption'#6#1'-'
+#0#0#9'TMenuItem'#22'mnuCmdSwapSourceTarget'#7'Caption'#6#18'Source &<-> Tar'
+'get'#7'Enabled'#8#8'ShortCut'#3'U@'#0#0#9'TMenuItem'#20'mnuCmdTargetIsSourc'
+'e'#7'Caption'#6#16'Target &= Source'#7'Enabled'#8#0#0#0#9'TMenuItem'#7'mnuS'
+'how'#7'Caption'#6#5'&Show'#0#9'TMenuItem'#11'mnuShowName'#6'Action'#7#13'ac'
+'tSortByName'#7'OnClick'#7#20'actSortByNameExecute'#0#0#9'TMenuItem'#16'mnuS'
+'howExtension'#6'Action'#7#12'actSortByExt'#7'OnClick'#7#19'actSortByExtExec'
+'ute'#0#0#9'TMenuItem'#11'mnuShowSize'#6'Action'#7#13'actSortBySize'#7'OnCli'
+'ck'#7#20'actSortBySizeExecute'#0#0#9'TMenuItem'#11'mnuShowTime'#6'Action'#7
+#13'actSortByDate'#7'OnClick'#7#20'actSortByDateExecute'#0#0#9'TMenuItem'#13
+'mnuShowAttrib'#6'Action'#7#13'actSortByAttr'#7'OnClick'#7#20'actSortByAttrE'
+'xecute'#0#0#9'TMenuItem'#7'miLine7'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#14'm'
+'nuShowReverse'#6'Action'#7#15'actReverseOrder'#7'OnClick'#7#22'actReverseOr'
+'derExecute'#0#0#9'TMenuItem'#13'mnuShowReread'#6'Action'#7#10'actRefresh'#7
'TPF0'#241#8'TfrmMain'#7'frmMain'#4'Left'#3#217#0#6'Height'#3'P'#1#3'Top'#3
+#158#0#5'Width'#3#13#2#18'HorzScrollBar.Page'#3#12#2#18'VertScrollBar.Page'#3
+';'#1#19'VertScrollBar.Range'#2'O'#7'Caption'#6#16'Double Commander'#10'Font'
+'.Color'#7#7'clBlack'#11'Font.Height'#2#13#9'Font.Name'#6#9'Helvetica'#10'Fo'
+'nt.Pitch'#7#10'fpVariable'#10'KeyPreview'#9#4'Menu'#7#7'mnuMain'#10'OnActiv'
+'ate'#7#12'FormActivate'#7'OnClose'#7#12'frmMainClose'#9'OnDestroy'#7#11'For'
+'mDestroy'#9'OnKeyDown'#7#11'FormKeyDown'#10'OnKeyPress'#7#12'FormKeyPress'#7
+'OnKeyUp'#7#12'frmMainKeyUp'#8'OnResize'#7#10'FormResize'#6'OnShow'#7#11'frm'
+'MainShow'#8'Position'#7#15'poDesktopCenter'#8'ShowHint'#9#0#6'TPanel'#9'pnl'
+'Button'#6'Height'#2#22#3'Top'#2#23#5'Width'#3#13#2#5'Align'#7#5'alTop'#11'F'
+'ullRepaint'#8#8'TabOrder'#2#0#7'Visible'#8#0#0#6'TPanel'#7'pnlDisk'#6'Heigh'
+'t'#2#24#3'Top'#2'-'#5'Width'#3#13#2#5'Align'#7#5'alTop'#7'Caption'#6#7'pnlD'
+'isk'#11'FullRepaint'#8#11'ParentColor'#8#8'TabOrder'#2#1#0#11'TKAStoolBar'#7
+'dskLeft'#4'Left'#2#1#6'Height'#2#22#3'Top'#2#1#5'Width'#3'b'#1#5'Align'#7#6
+'alLeft'#11'ParentColor'#8#8'TabOrder'#2#0#17'OnToolButtonClick'#7#22'dskLef'
+'tToolButtonClick'#15'CheckToolButton'#9#11'FlatButtons'#9#11'IsDiskPanel'#9
+#0#0#11'TKAStoolBar'#8'dskRight'#4'Left'#3'c'#1#6'Height'#2#22#3'Top'#2#1#5
+'Width'#3#169#0#5'Align'#7#8'alClient'#7'Anchors'#11#5'akTop'#6'akLeft'#8'ak'
+'Bottom'#0#8'TabOrder'#2#1#17'OnToolButtonClick'#7#23'dskRightToolButtonClic'
+'k'#15'CheckToolButton'#9#11'FlatButtons'#9#11'IsDiskPanel'#9#0#0#0#6'TPanel'
+#10'pnlCommand'#6'Height'#2'B'#3'Top'#3#250#0#5'Width'#3#13#2#5'Align'#7#8'a'
+'lBottom'#7'Anchors'#11#6'akLeft'#7'akRight'#0#10'BevelOuter'#7#9'bvLowered'
+#11'FullRepaint'#8#11'ParentColor'#8#8'TabOrder'#2#2#0#6'TLabel'#14'lblComma'
+'ndPath'#4'Left'#2#1#6'Height'#2#14#3'Top'#2#8#5'Width'#2#23#9'Alignment'#7
+#14'taRightJustify'#7'Caption'#6#4'Path'#5'Color'#7#6'clNone'#11'ParentColor'
+#8#13'ShowAccelChar'#8#0#0#6'TPanel'#7'pnlKeys'#4'Left'#2#1#6'Height'#2#27#3
+'Top'#2'&'#5'Width'#3#11#2#5'Align'#7#8'alBottom'#7'Anchors'#11#6'akLeft'#7
+'akRight'#0#10'BevelOuter'#7#9'bvLowered'#11'FullRepaint'#8#8'TabOrder'#2#0#8
+'OnResize'#7#13'pnlKeysResize'#0#12'TSpeedButton'#5'btnF3'#4'Left'#2#1#6'Hei'
+'ght'#2#23#3'Top'#2#4#5'Width'#2'K'#6'Action'#7#7'actView'#5'Color'#7#9'clBt'
+'nFace'#4'Flat'#9#9'NumGlyphs'#2#0#0#0#12'TSpeedButton'#5'btnF4'#4'Left'#2'L'
+#6'Height'#2#23#3'Top'#2#4#5'Width'#2'K'#6'Action'#7#7'actEdit'#5'Color'#7#9
+'clBtnFace'#4'Flat'#9#9'NumGlyphs'#2#0#0#0#12'TSpeedButton'#5'btnF5'#4'Left'
+#3#151#0#6'Height'#2#23#3'Top'#2#4#5'Width'#2'K'#6'Action'#7#7'actCopy'#5'Co'
+'lor'#7#9'clBtnFace'#4'Flat'#9#9'NumGlyphs'#2#0#0#0#12'TSpeedButton'#5'btnF6'
+#4'Left'#3#226#0#6'Height'#2#23#3'Top'#2#4#5'Width'#2'K'#6'Action'#7#9'actRe'
+'name'#5'Color'#7#9'clBtnFace'#4'Flat'#9#9'NumGlyphs'#2#0#0#0#12'TSpeedButto'
+'n'#5'btnF7'#4'Left'#3'-'#1#6'Height'#2#23#3'Top'#2#4#5'Width'#2'K'#6'Action'
+#7#10'actMakeDir'#5'Color'#7#9'clBtnFace'#4'Flat'#9#9'NumGlyphs'#2#0#0#0#12
+'TSpeedButton'#5'btnF8'#4'Left'#3'x'#1#6'Height'#2#23#3'Top'#2#4#5'Width'#2
+'K'#6'Action'#7#9'actDelete'#5'Color'#7#9'clBtnFace'#4'Flat'#9#9'NumGlyphs'#2
+#0#0#0#12'TSpeedButton'#6'btnF10'#4'Left'#3#27#2#6'Height'#2#23#3'Top'#2#4#5
+'Width'#2'K'#6'Action'#7#7'actExit'#5'Color'#7#9'clBtnFace'#4'Flat'#9#9'NumG'
+'lyphs'#2#0#0#0#12'TSpeedButton'#5'btnF9'#4'Left'#3#192#1#6'Height'#2#22#3'T'
+'op'#2#4#5'Width'#2'Y'#6'Action'#7#11'actShowMenu'#5'Color'#7#9'clBtnFace'#4
+'Flat'#9#9'NumGlyphs'#2#0#0#0#0#9'TComboBox'#10'edtCommand'#4'Left'#2'8'#6'H'
+'eight'#2#21#3'Top'#2#8#5'Width'#3#176#2#7'TabStop'#8#16'AutoCompleteText'#11
+#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#10'ItemHeight'#2#18#9
+'MaxLength'#2#0#9'OnKeyDown'#7#17'edtCommandKeyDown'#7'OnKeyUp'#7#15'edtComm'
+'andKeyUp'#11'ParentCtl3D'#8#8'TabOrder'#2#1#0#0#0#6'TPanel'#12'pnlNotebooks'
+#6'Height'#3#181#0#3'Top'#2'E'#5'Width'#3#13#2#5'Align'#7#8'alClient'#11'Ful'
+'lRepaint'#8#8'TabOrder'#2#3#7'TabStop'#9#0#9'TNotebook'#6'nbLeft'#4'Left'#2
+#1#6'Height'#3#179#0#3'Top'#2#1#5'Width'#3#135#1#5'Align'#7#6'alLeft'#17'OnC'
+'loseTabClicked'#7#23'NoteBookCloseTabClicked'#7'Options'#11#19'nboShowClose'
+'Buttons'#0#0#0#9'TSplitter'#9'Splitter1'#4'Left'#3#136#1#6'Height'#3#179#0#3
+'Top'#2#1#5'Width'#2#4#11'ResizeStyle'#7#6'rsLine'#0#0#9'TNotebook'#7'nbRigh'
+'t'#4'Left'#3#140#1#6'Height'#3#179#0#3'Top'#2#1#5'Width'#3#128#0#5'Align'#7
+#8'alClient'#17'OnCloseTabClicked'#7#23'NoteBookCloseTabClicked'#7'Options'
+#11#19'nboShowCloseButtons'#0#0#0#0#11'TKAStoolBar'#11'MainToolBar'#6'Height'
+#2#23#5'Width'#3#13#2#5'Align'#7#5'alTop'#8'TabOrder'#2#4#11'OnMouseDown'#7
+#20'MainToolBarMouseDown'#17'OnToolButtonClick'#7#26'MainToolBarToolButtonCl'
+'ick'#11'FlatButtons'#9#0#0#9'TMainMenu'#7'mnuMain'#4'left'#3#27#1#3'top'#2#8
+#0#9'TMenuItem'#8'mnuFiles'#7'Caption'#6#5'Files'#0#9'TMenuItem'#12'mnuFiles'
+'Link'#6'Action'#7#11'actHardLink'#7'OnClick'#7#18'actHardLinkExecute'#0#0#9
,'TMenuItem'#15'mnuFilesSymLink'#6'Action'#7#10'actSymLink'#7'OnClick'#7#17'a'
+'ctSymLinkExecute'#0#0#9'TMenuItem'#7'miLine1'#7'Caption'#6#1'-'#0#0#9'TMenu'
+'Item'#14'mnuFilesAttrib'#6'Action'#7#8'actChMod'#7'OnClick'#7#15'actChModEx'
+'ecute'#0#0#9'TMenuItem'#13'mnuFilesChown'#6'Action'#7#8'actChown'#7'OnClick'
+#7#15'actChownExecute'#0#0#9'TMenuItem'#18'mnuFilesProperties'#6'Action'#7#17
+'actFileProperties'#7'OnClick'#7#24'actFilePropertiesExecute'#0#0#9'TMenuIte'
+'m'#13'mnuFilesSpace'#6'Action'#7#17'actCalculateSpace'#7'OnClick'#7#24'actC'
+'alculateSpaceExecute'#0#0#9'TMenuItem'#14'mnuFilesCmpCnt'#6'Action'#7#18'ac'
+'tCompareContents'#7'OnClick'#7#25'actCompareContentsExecute'#0#0#9'TMenuIte'
+'m'#13'miMultiRename'#6'Action'#7#14'actMultiRename'#7'OnClick'#7#21'actMult'
+'iRenameExecute'#0#0#9'TMenuItem'#7'miLine2'#7'Caption'#6#1'-'#0#0#9'TMenuIt'
+'em'#13'mnuFilesSplit'#6'Action'#7#14'actFileSpliter'#7'OnClick'#7#21'actFil'
+'eSpliterExecute'#0#0#9'TMenuItem'#15'mnuFilesCombine'#6'Action'#7#13'actFil'
+'eLinker'#7'Caption'#6#13'Combine Files'#7'OnClick'#7#20'actFileLinkerExecut'
+'e'#0#0#9'TMenuItem'#7'miLine3'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#19'mnuFil'
+'esShwSysFiles'#6'Action'#7#15'actShowSysFiles'#7'OnClick'#7#22'actShowSysFi'
+'lesExecute'#0#0#9'TMenuItem'#7'miLine4'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#6
+'miExit'#6'Action'#7#7'actExit'#7'OnClick'#7#14'actExitExecute'#0#0#0#9'TMen'
+'uItem'#7'mnuMark'#7'Caption'#6#5'&Mark'#0#9'TMenuItem'#13'mnuMarkSGroup'#6
+'Action'#7#11'actMarkPlus'#7'OnClick'#7#18'actMarkPlusExecute'#0#0#9'TMenuIt'
+'em'#13'mnuMarkUGroup'#6'Action'#7#12'actMarkMinus'#7'OnClick'#7#19'actMarkM'
+'inusExecute'#0#0#9'TMenuItem'#11'mnuMarkSAll'#6'Action'#7#14'actMarkMarkAll'
+#7'OnClick'#7#21'actMarkMarkAllExecute'#0#0#9'TMenuItem'#11'mnuMarkUAll'#6'A'
+'ction'#7#16'actMarkUnmarkAll'#7'OnClick'#7#23'actMarkUnmarkAllExecute'#0#0#9
+'TMenuItem'#13'mnuMarkInvert'#6'Action'#7#13'actMarkInvert'#7'OnClick'#7#20
+'actMarkInvertExecute'#0#0#9'TMenuItem'#7'miLine5'#7'Caption'#6#1'-'#0#0#9'T'
+'MenuItem'#13'mnuMarkCmpDir'#7'Caption'#6#20'&Compare Directories'#7'Enabled'
+#8#8'ShortCut'#3'10'#0#0#0#9'TMenuItem'#6'mnuCmd'#7'Caption'#6#9'&Commands'#0
+#9'TMenuItem'#12'mnuCmdSearch'#6'Action'#7#9'actSearch'#7'OnClick'#7#16'actS'
+'earchExecute'#0#0#9'TMenuItem'#16'mnuCmdDirHotlist'#6'Action'#7#13'actDirHo'
+'tList'#7'OnClick'#7#20'actDirHotListExecute'#0#0#9'TMenuItem'#7'miLine6'#7
+'Caption'#6#1'-'#0#0#9'TMenuItem'#9'miRunTerm'#6'Action'#7#10'actRunTerm'#7
+'OnClick'#7#17'actRunTermExecute'#0#0#9'TMenuItem'#7'miLine9'#7'Caption'#6#1
+'-'#0#0#9'TMenuItem'#22'mnuCmdSwapSourceTarget'#7'Caption'#6#18'Source &<-> '
+'Target'#7'Enabled'#8#8'ShortCut'#3'U@'#0#0#9'TMenuItem'#20'mnuCmdTargetIsSo'
+'urce'#7'Caption'#6#16'Target &= Source'#7'Enabled'#8#0#0#0#9'TMenuItem'#7'm'
+'nuShow'#7'Caption'#6#5'&Show'#0#9'TMenuItem'#11'mnuShowName'#6'Action'#7#13
+'actSortByName'#7'OnClick'#7#20'actSortByNameExecute'#0#0#9'TMenuItem'#16'mn'
+'uShowExtension'#6'Action'#7#12'actSortByExt'#7'OnClick'#7#19'actSortByExtEx'
+'ecute'#0#0#9'TMenuItem'#11'mnuShowSize'#6'Action'#7#13'actSortBySize'#7'OnC'
+'lick'#7#20'actSortBySizeExecute'#0#0#9'TMenuItem'#11'mnuShowTime'#6'Action'
+#7#13'actSortByDate'#7'OnClick'#7#20'actSortByDateExecute'#0#0#9'TMenuItem'
+#13'mnuShowAttrib'#6'Action'#7#13'actSortByAttr'#7'OnClick'#7#20'actSortByAt'
+'trExecute'#0#0#9'TMenuItem'#7'miLine7'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#14
+'mnuShowReverse'#6'Action'#7#15'actReverseOrder'#7'OnClick'#7#22'actReverseO'
+'rderExecute'#0#0#9'TMenuItem'#13'mnuShowReread'#6'Action'#7#10'actRefresh'#7
+'OnClick'#7#17'actRefreshExecute'#0#0#0#9'TMenuItem'#9'mnuConfig'#7'Caption'
+#6#14'C&onfiguration'#0#9'TMenuItem'#16'mnuConfigOptions'#6'Action'#7#10'act'
+'Options'#7'OnClick'#7#17'actOptionsExecute'#0#0#0#9'TMenuItem'#7'mnuHelp'#7
+'Caption'#6#5'&Help'#0#9'TMenuItem'#12'mnuHelpAbout'#6'Action'#7#8'actAbout'
+#8'ShortCut'#2'p'#7'OnClick'#7#15'actAboutExecute'#0#0#0#0#11'TActionList'#9
+'actionLst'#4'left'#3'h'#1#3'top'#2'@'#0#7'TAction'#7'actExit'#7'Caption'#6#4
+'Exit'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#14'actExitExecute'#8'Catego'
+'ry'#6#4'File'#0#0#7'TAction'#7'actView'#7'Caption'#6#7'View F3'#8'HelpType'
+#7#9'htKeyword'#9'OnExecute'#7#14'actViewExecute'#8'ShortCut'#3'2'#16#8'Cate'
+'gory'#6#7'Classic'#0#0#7'TAction'#7'actEdit'#7'Caption'#6#7'Edit F4'#8'Help'
+'Type'#7#9'htKeyword'#9'OnExecute'#7#14'actEditExecute'#8'ShortCut'#3'3'#16#8
+'Category'#6#7'Classic'#0#0#7'TAction'#7'actCopy'#7'Caption'#6#7'Copy F5'#8
+'HelpType'#7#9'htKeyword'#9'OnExecute'#7#14'actCopyExecute'#8'ShortCut'#3'4'
,#16#8'Category'#6#7'Classic'#0#0#7'TAction'#9'actRename'#7'Caption'#6#9'Rena'
+'me F6'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#16'actRenameExecute'#8'Sho'
+'rtCut'#3'5'#16#8'Category'#6#7'Classic'#0#0#7'TAction'#10'actMakeDir'#7'Cap'
+'tion'#6#10'MakeDir F7'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actMake'
+'DirExecute'#8'ShortCut'#3'6'#16#8'Category'#6#7'Classic'#0#0#7'TAction'#9'a'
+'ctDelete'#7'Caption'#6#9'Delete F8'#8'HelpType'#7#9'htKeyword'#9'OnExecute'
+#7#16'actDeleteExecute'#8'ShortCut'#3'7'#16#8'Category'#6#7'Classic'#0#0#7'T'
+'Action'#8'actAbout'#7'Caption'#6#5'About'#8'HelpType'#7#9'htKeyword'#9'OnEx'
+'ecute'#7#15'actAboutExecute'#8'ShortCut'#3'0'#16#8'Category'#6#4'Help'#0#0#7
+'TAction'#15'actShowSysFiles'#7'Caption'#6#17'Show System Files'#7'Checked'#9
+#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#22'actShowSysFilesExecute'#8'Cate'
+'gory'#6#4'File'#0#0#7'TAction'#10'actOptions'#7'Caption'#6#10'Options...'#8
+'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actOptionsExecute'#8'Category'#6
+#6'Config'#0#0#7'TAction'#18'actCompareContents'#7'Caption'#6#20'Compare by '
+'&Contents'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#25'actCompareContentsE'
+'xecute'#8'Category'#6#4'File'#0#0#7'TAction'#11'actShowMenu'#7'Caption'#6#7
+'Menu F9'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#18'actShowMenuExecute'#8
+'ShortCut'#3'8'#16#8'Category'#6#7'Classic'#0#0#7'TAction'#10'actRefresh'#7
+'Caption'#6#8'&Refresh'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actRefr'
+'eshExecute'#8'ShortCut'#3'R@'#8'Category'#6#4'Show'#0#0#7'TAction'#9'actSea'
+'rch'#7'Caption'#6#7'&Search'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#16'a'
+'ctSearchExecute'#8'ShortCut'#3'6P'#8'Category'#6#8'Commands'#0#0#7'TAction'
+#13'actDirHotList'#7'Caption'#6#18'Directory &hotlist'#8'HelpType'#7#9'htKey'
+'word'#9'OnExecute'#7#20'actDirHotListExecute'#8'ShortCut'#3'D@'#8'Category'
+#6#8'Commands'#0#0#7'TAction'#14'actMarkMarkAll'#7'Caption'#6#11'&Select All'
+#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#21'actMarkMarkAllExecute'#8'Categ'
+'ory'#6#4'Mark'#0#0#7'TAction'#13'actMarkInvert'#7'Caption'#6#17'Invert Sele'
+'ctions'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#20'actMarkInvertExecute'#8
+'ShortCut'#2'*'#8'Category'#6#4'Mark'#0#0#7'TAction'#16'actMarkUnmarkAll'#7
+'Caption'#6#12'Unselect All'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#23'ac'
+'tMarkUnmarkAllExecute'#8'Category'#6#4'Mark'#0#0#7'TAction'#10'actDelete2'#7
+'Caption'#6#10'actDelete2'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actD'
+'elete2Execute'#8'ShortCut'#3#7#16#8'Category'#6#7'Classic'#0#0#7'TAction'#16
+'actPathToCmdLine'#7'Caption'#6#16'actPathToCmdLine'#8'HelpType'#7#9'htKeywo'
+'rd'#9'OnExecute'#7#23'actPathToCmdLineExecute'#8'ShortCut'#3'P@'#0#0#7'TAct'
+'ion'#11'actMarkPlus'#7'Caption'#6#14'Select a group'#8'HelpType'#7#9'htKeyw'
+'ord'#9'OnExecute'#7#18'actMarkPlusExecute'#8'Category'#6#4'Mark'#0#0#7'TAct'
+'ion'#12'actMarkMinus'#7'Caption'#6#16'Unselect a group'#8'HelpType'#7#9'htK'
+'eyword'#9'OnExecute'#7#19'actMarkMinusExecute'#8'Category'#6#4'Mark'#0#0#7
+'TAction'#8'actChMod'#7'Caption'#6#17'Change Attributes'#8'HelpType'#7#9'htK'
+'eyword'#9'OnExecute'#7#15'actChModExecute'#8'Category'#6#4'File'#0#0#7'TAct'
+'ion'#10'actSymLink'#7'Caption'#6#17'Create symlink...'#8'HelpType'#7#9'htKe'
+'yword'#9'OnExecute'#7#17'actSymLinkExecute'#8'Category'#6#4'File'#0#0#7'TAc'
+'tion'#11'actHardLink'#7'Caption'#6#14'Create link...'#8'HelpType'#7#9'htKey'
+'word'#9'OnExecute'#7#18'actHardLinkExecute'#8'Category'#6#4'File'#0#0#7'TAc'
+'tion'#15'actReverseOrder'#7'Caption'#6#13'Reverse order'#8'HelpType'#7#9'ht'
+'Keyword'#9'OnExecute'#7#22'actReverseOrderExecute'#8'Category'#6#4'Show'#0#0
+#7'TAction'#13'actSortByName'#7'Caption'#6#4'Name'#8'HelpType'#7#9'htKeyword'
+#9'OnExecute'#7#20'actSortByNameExecute'#8'Category'#6#4'Show'#0#0#7'TAction'
+#12'actSortByExt'#7'Caption'#6#9'Extension'#8'HelpType'#7#9'htKeyword'#9'OnE'
+'xecute'#7#19'actSortByExtExecute'#8'Category'#6#4'Show'#0#0#7'TAction'#13'a'
+'ctSortBySize'#7'Caption'#6#4'Size'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7
+#20'actSortBySizeExecute'#8'Category'#6#4'Show'#0#0#7'TAction'#13'actSortByD'
+'ate'#7'Caption'#6#4'Date'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#20'actS'
+'ortByDateExecute'#8'Category'#6#4'Show'#0#0#7'TAction'#13'actSortByAttr'#7
+'Caption'#6#6'Attrib'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#20'actSortBy'
+'AttrExecute'#8'Category'#6#4'Show'#0#0#7'TAction'#14'actMultiRename'#7'Capt'
+'ion'#6#17'Multi Rename Tool'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#21'a'
+'ctMultiRenameExecute'#8'Category'#6#4'File'#0#0#7'TAction'#10'actShiftF5'#7
+'Caption'#6#10'actShiftF5'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actS'
+'hiftF5Execute'#8'ShortCut'#3'40'#8'Category'#6#8'Commands'#0#0#7'TAction'#10
+'actShiftF6'#7'Caption'#6#10'actShiftF6'#8'HelpType'#7#9'htKeyword'#9'OnExec'
+'ute'#7#17'actShiftF6Execute'#8'ShortCut'#3'50'#8'Category'#6#8'Commands'#0#0
+#7'TAction'#10'actShiftF4'#7'Caption'#6#10'actShiftF4'#8'HelpType'#7#9'htKey'
,'word'#9'OnExecute'#7#17'actShiftF4Execute'#8'Category'#6#8'Commands'#0#0#7
+'TAction'#13'actDirHistory'#7'Caption'#6#13'actDirHistory'#8'HelpType'#7#9'h'
+'tKeyword'#9'OnExecute'#7#20'actDirHistoryExecute'#8'ShortCut'#3'H@'#8'Categ'
+'ory'#6#8'Commands'#0#0#7'TAction'#9'actCtrlF8'#7'Caption'#6#9'actCtrlF8'#8
+'HelpType'#7#9'htKeyword'#9'OnExecute'#7#16'actCtrlF8Execute'#8'ShortCut'#3
+'7P'#8'Category'#6#8'Commands'#0#0#7'TAction'#10'actRunTerm'#7'Caption'#6#8
+'Run Term'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actRunTermExecute'#8
+'ShortCut'#3'T@'#8'Category'#6#8'Commands'#0#0#7'TAction'#17'actCalculateSpa'
+'ce'#7'Caption'#6#28'Calculate &Occupied Space...'#8'HelpType'#7#9'htKeyword'
+#9'OnExecute'#7#24'actCalculateSpaceExecute'#8'Category'#6#4'File'#0#0#7'TAc'
+'tion'#17'actFileProperties'#7'Caption'#6#20'Show File Properties'#8'HelpTyp'
+'e'#7#9'htKeyword'#9'OnExecute'#7#24'actFilePropertiesExecute'#8'Category'#6
+#4'File'#0#0#7'TAction'#8'actChown'#7'Caption'#6#5'Chown'#8'HelpType'#7#9'ht'
+'Keyword'#9'OnExecute'#7#15'actChownExecute'#8'Category'#6#4'File'#0#0#7'TAc'
+'tion'#13'actFileLinker'#7'Caption'#6#10'Link Files'#8'HelpType'#7#9'htKeywo'
+'rd'#9'OnExecute'#7#20'actFileLinkerExecute'#8'Category'#6#4'File'#0#0#7'TAc'
+'tion'#14'actFileSpliter'#7'Caption'#6#10'Split File'#8'HelpType'#7#9'htKeyw'
+'ord'#9'OnExecute'#7#21'actFileSpliterExecute'#8'Category'#6#4'File'#0#0#7'T'
+'Action'#9'actNewTab'#7'Caption'#6#9'actNewTab'#8'HelpType'#7#9'htKeyword'#9
+'OnExecute'#7#16'actNewTabExecute'#8'Category'#6#4'Tabs'#0#0#7'TAction'#12'a'
+'ctRemoveTab'#7'Caption'#6#12'actRemoveTab'#8'HelpType'#7#9'htKeyword'#9'OnE'
+'xecute'#7#19'actRemoveTabExecute'#8'Category'#6#4'Tabs'#0#0#0#10'TPopupMenu'
+#9'pmHotList'#4'left'#3#152#0#3'top'#3#136#0#0#9'TMenuItem'#9'MenuItem3'#7'C'
+'aption'#6#9'New Item1'#0#0#0#10'TPopupMenu'#10'pmFileList'#7'OnPopup'#7#15
+'pmFileListPopup'#4'left'#3#216#0#3'top'#3#136#0#0#9'TMenuItem'#5'file1'#7'C'
+'aption'#6#4'file'#0#0#0#10'TPopupMenu'#12'pmDirHistory'#9'AutoPopup'#8#4'le'
+'ft'#3#184#0#3'top'#3#136#0#0#9'TMenuItem'#9'MenuItem4'#7'Caption'#6#9'New I'
+'tem1'#0#0#0#10'TPopupMenu'#9'pmToolBar'#3'Tag'#2#255#4'left'#2'x'#3'top'#3
+#136#0#0#9'TMenuItem'#6'tbEdit'#7'Caption'#6#4'Edit'#7'OnClick'#7#11'tbEditC'
+'lick'#0#0#9'TMenuItem'#8'tbDelete'#7'Caption'#6#6'Delete'#7'OnClick'#7#11'D'
+'eleteClick'#0#0#0#0
+'actionLst'#4'left'#3'h'#1#3'top'#2'@'#0#7'TAction'#7'actExit'#8'Category'#6
+#4'File'#7'Caption'#6#4'Exit'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKey'
+'word'#9'OnExecute'#7#14'actExitExecute'#0#0#7'TAction'#7'actView'#8'Categor'
+'y'#6#7'Classic'#7'Caption'#6#7'View F3'#18'DisableIfNoHandler'#9#8'HelpType'
+#7#9'htKeyword'#9'OnExecute'#7#14'actViewExecute'#8'ShortCut'#3'2'#16#0#0#7
+'TAction'#7'actEdit'#8'Category'#6#7'Classic'#7'Caption'#6#7'Edit F4'#18'Dis'
+'ableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#14'actEditExec'
+'ute'#8'ShortCut'#3'3'#16#0#0#7'TAction'#7'actCopy'#8'Category'#6#7'Classic'
+#7'Caption'#6#7'Copy F5'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'
+#9'OnExecute'#7#14'actCopyExecute'#8'ShortCut'#3'4'#16#0#0#7'TAction'#9'actR'
+'ename'#8'Category'#6#7'Classic'#7'Caption'#6#9'Rename F6'#18'DisableIfNoHan'
+'dler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#16'actRenameExecute'#8'Sh'
+'ortCut'#3'5'#16#0#0#7'TAction'#10'actMakeDir'#8'Category'#6#7'Classic'#7'Ca'
,'ption'#6#10'MakeDir F7'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'
+#9'OnExecute'#7#17'actMakeDirExecute'#8'ShortCut'#3'6'#16#0#0#7'TAction'#9'a'
+'ctDelete'#8'Category'#6#7'Classic'#7'Caption'#6#9'Delete F8'#18'DisableIfNo'
+'Handler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#16'actDeleteExecute'#8
+'ShortCut'#3'7'#16#0#0#7'TAction'#8'actAbout'#8'Category'#6#4'Help'#7'Captio'
+'n'#6#5'About'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecu'
+'te'#7#15'actAboutExecute'#8'ShortCut'#3'0'#16#0#0#7'TAction'#15'actShowSysF'
+'iles'#8'Category'#6#4'File'#7'Caption'#6#17'Show System Files'#7'Checked'#9
+#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#22'actSh'
+'owSysFilesExecute'#0#0#7'TAction'#10'actOptions'#8'Category'#6#6'Config'#7
+'Caption'#6#10'Options...'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeywor'
+'d'#9'OnExecute'#7#17'actOptionsExecute'#0#0#7'TAction'#18'actCompareContent'
+'s'#8'Category'#6#4'File'#7'Caption'#6#20'Compare by &Contents'#18'DisableIf'
+'NoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#25'actCompareContent'
+'sExecute'#0#0#7'TAction'#11'actShowMenu'#8'Category'#6#7'Classic'#7'Caption'
+#6#7'Menu F9'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecut'
+'e'#7#18'actShowMenuExecute'#8'ShortCut'#3'8'#16#0#0#7'TAction'#10'actRefres'
+'h'#8'Category'#6#4'Show'#7'Caption'#6#8'&Refresh'#18'DisableIfNoHandler'#9#8
+'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actRefreshExecute'#8'ShortCut'#3
+'R@'#0#0#7'TAction'#9'actSearch'#8'Category'#6#8'Commands'#7'Caption'#6#7'&S'
+'earch'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#16
+'actSearchExecute'#8'ShortCut'#3'6P'#0#0#7'TAction'#13'actDirHotList'#8'Cate'
+'gory'#6#8'Commands'#7'Caption'#6#18'Directory &hotlist'#18'DisableIfNoHandl'
+'er'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#20'actDirHotListExecute'#8
+'ShortCut'#3'D@'#0#0#7'TAction'#14'actMarkMarkAll'#8'Category'#6#4'Mark'#7'C'
+'aption'#6#11'&Select All'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeywor'
+'d'#9'OnExecute'#7#21'actMarkMarkAllExecute'#0#0#7'TAction'#13'actMarkInvert'
+#8'Category'#6#4'Mark'#7'Caption'#6#17'Invert Selections'#18'DisableIfNoHand'
+'ler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#20'actMarkInvertExecute'#8
+'ShortCut'#2'*'#0#0#7'TAction'#16'actMarkUnmarkAll'#8'Category'#6#4'Mark'#7
+'Caption'#6#12'Unselect All'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyw'
+'ord'#9'OnExecute'#7#23'actMarkUnmarkAllExecute'#0#0#7'TAction'#10'actDelete'
+'2'#8'Category'#6#7'Classic'#7'Caption'#6#10'actDelete2'#18'DisableIfNoHandl'
+'er'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actDelete2Execute'#8'Sho'
+'rtCut'#3#7#16#0#0#7'TAction'#16'actPathToCmdLine'#7'Caption'#6#16'actPathTo'
+'CmdLine'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7
+#23'actPathToCmdLineExecute'#8'ShortCut'#3'P@'#0#0#7'TAction'#11'actMarkPlus'
+#8'Category'#6#4'Mark'#7'Caption'#6#14'Select a group'#18'DisableIfNoHandler'
+#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#18'actMarkPlusExecute'#0#0#7'TA'
+'ction'#12'actMarkMinus'#8'Category'#6#4'Mark'#7'Caption'#6#16'Unselect a gr'
+'oup'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#19
+'actMarkMinusExecute'#0#0#7'TAction'#8'actChMod'#8'Category'#6#4'File'#7'Cap'
+'tion'#6#17'Change Attributes'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKe'
+'yword'#9'OnExecute'#7#15'actChModExecute'#0#0#7'TAction'#10'actSymLink'#8'C'
+'ategory'#6#4'File'#7'Caption'#6#17'Create symlink...'#18'DisableIfNoHandler'
+#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actSymLinkExecute'#0#0#7'TAc'
+'tion'#11'actHardLink'#8'Category'#6#4'File'#7'Caption'#6#14'Create link...'
+#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#18'actHa'
+'rdLinkExecute'#0#0#7'TAction'#15'actReverseOrder'#8'Category'#6#4'Show'#7'C'
+'aption'#6#13'Reverse order'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyw'
+'ord'#9'OnExecute'#7#22'actReverseOrderExecute'#0#0#7'TAction'#13'actSortByN'
+'ame'#8'Category'#6#4'Show'#7'Caption'#6#4'Name'#18'DisableIfNoHandler'#9#8
+'HelpType'#7#9'htKeyword'#9'OnExecute'#7#20'actSortByNameExecute'#0#0#7'TAct'
+'ion'#12'actSortByExt'#8'Category'#6#4'Show'#7'Caption'#6#9'Extension'#18'Di'
+'sableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#19'actSortByE'
+'xtExecute'#0#0#7'TAction'#13'actSortBySize'#8'Category'#6#4'Show'#7'Caption'
+#6#4'Size'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7
+#20'actSortBySizeExecute'#0#0#7'TAction'#13'actSortByDate'#8'Category'#6#4'S'
+'how'#7'Caption'#6#4'Date'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeywor'
+'d'#9'OnExecute'#7#20'actSortByDateExecute'#0#0#7'TAction'#13'actSortByAttr'
+#8'Category'#6#4'Show'#7'Caption'#6#6'Attrib'#18'DisableIfNoHandler'#9#8'Hel'
+'pType'#7#9'htKeyword'#9'OnExecute'#7#20'actSortByAttrExecute'#0#0#7'TAction'
+#14'actMultiRename'#8'Category'#6#4'File'#7'Caption'#6#17'Multi Rename Tool'
+#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#21'actMu'
,'ltiRenameExecute'#0#0#7'TAction'#10'actShiftF5'#8'Category'#6#8'Commands'#7
+'Caption'#6#10'actShiftF5'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeywor'
+'d'#9'OnExecute'#7#17'actShiftF5Execute'#8'ShortCut'#3'40'#0#0#7'TAction'#10
+'actShiftF6'#8'Category'#6#8'Commands'#7'Caption'#6#10'actShiftF6'#18'Disabl'
+'eIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actShiftF6Exec'
+'ute'#8'ShortCut'#3'50'#0#0#7'TAction'#10'actShiftF4'#8'Category'#6#8'Comman'
+'ds'#7'Caption'#6#10'actShiftF4'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'ht'
+'Keyword'#9'OnExecute'#7#17'actShiftF4Execute'#0#0#7'TAction'#13'actDirHisto'
+'ry'#8'Category'#6#8'Commands'#7'Caption'#6#13'actDirHistory'#18'DisableIfNo'
+'Handler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#20'actDirHistoryExecut'
+'e'#8'ShortCut'#3'H@'#0#0#7'TAction'#9'actCtrlF8'#8'Category'#6#8'Commands'#7
+'Caption'#6#9'actCtrlF8'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'
+#9'OnExecute'#7#16'actCtrlF8Execute'#8'ShortCut'#3'7P'#0#0#7'TAction'#10'act'
+'RunTerm'#8'Category'#6#8'Commands'#7'Caption'#6#8'Run Term'#18'DisableIfNoH'
+'andler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#17'actRunTermExecute'#8
+'ShortCut'#3'T@'#0#0#7'TAction'#17'actCalculateSpace'#8'Category'#6#4'File'#7
+'Caption'#6#28'Calculate &Occupied Space...'#18'DisableIfNoHandler'#9#8'Help'
+'Type'#7#9'htKeyword'#9'OnExecute'#7#24'actCalculateSpaceExecute'#0#0#7'TAct'
+'ion'#17'actFileProperties'#8'Category'#6#4'File'#7'Caption'#6#20'Show File '
+'Properties'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'
+#7#24'actFilePropertiesExecute'#0#0#7'TAction'#8'actChown'#8'Category'#6#4'F'
+'ile'#7'Caption'#6#5'Chown'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeywo'
+'rd'#9'OnExecute'#7#15'actChownExecute'#0#0#7'TAction'#13'actFileLinker'#8'C'
+'ategory'#6#4'File'#7'Caption'#6#10'Link Files'#18'DisableIfNoHandler'#9#8'H'
+'elpType'#7#9'htKeyword'#9'OnExecute'#7#20'actFileLinkerExecute'#0#0#7'TActi'
+'on'#14'actFileSpliter'#8'Category'#6#4'File'#7'Caption'#6#10'Split File'#18
+'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#21'actFileS'
+'pliterExecute'#0#0#7'TAction'#9'actNewTab'#8'Category'#6#4'Tabs'#7'Caption'
+#6#9'actNewTab'#18'DisableIfNoHandler'#9#8'HelpType'#7#9'htKeyword'#9'OnExec'
+'ute'#7#16'actNewTabExecute'#0#0#7'TAction'#12'actRemoveTab'#8'Category'#6#4
+'Tabs'#7'Caption'#6#12'actRemoveTab'#18'DisableIfNoHandler'#9#8'HelpType'#7#9
+'htKeyword'#9'OnExecute'#7#19'actRemoveTabExecute'#0#0#0#10'TPopupMenu'#9'pm'
+'HotList'#4'left'#3#152#0#3'top'#3#136#0#0#9'TMenuItem'#9'MenuItem3'#7'Capti'
+'on'#6#9'New Item1'#0#0#0#10'TPopupMenu'#10'pmFileList'#7'OnPopup'#7#15'pmFi'
+'leListPopup'#4'left'#3#216#0#3'top'#3#136#0#0#9'TMenuItem'#5'file1'#7'Capti'
+'on'#6#4'file'#0#0#0#10'TPopupMenu'#12'pmDirHistory'#9'AutoPopup'#8#4'left'#3
+#184#0#3'top'#3#136#0#0#9'TMenuItem'#9'MenuItem4'#7'Caption'#6#9'New Item1'#0
+#0#0#10'TPopupMenu'#9'pmToolBar'#3'Tag'#2#255#4'left'#2'x'#3'top'#3#136#0#0#9
+'TMenuItem'#6'tbEdit'#7'Caption'#6#4'Edit'#7'OnClick'#7#11'tbEditClick'#0#0#9
+'TMenuItem'#8'tbDelete'#7'Caption'#6#6'Delete'#7'OnClick'#7#11'DeleteClick'#0
+#0#0#0
]);

View file

@ -2,52 +2,56 @@
LazarusResources.Add('TfrmViewer','FORMDATA',[
'TPF0'#10'TfrmViewer'#9'frmViewer'#13'ActiveControl'#7#13'ScrollBarVert'#7'Ca'
+'ption'#6#9'frmViewer'#10'KeyPreview'#9#4'Menu'#7#8'MainMenu'#7'OnClose'#7#14
+'frmViewerClose'#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'
+#9'OnKeyDown'#7#16'frmViewerKeyDown'#10'OnKeyPress'#7#12'FormKeyPress'#7'OnK'
+'eyUp'#7#14'frmViewerKeyUp'#13'PixelsPerInch'#2'`'#8'Position'#7#14'poScreen'
+'Center'#10'TextHeight'#2#16#18'HorzScrollBar.Page'#4#255#255#0#0#18'VertScr'
+'ollBar.Page'#4#255#255#0#0#19'VertScrollBar.Range'#2#19#6'Height'#3#6#2#3'T'
+'op'#3#27#2#5'Width'#3#24#3#0#10'TStatusBar'#6'Status'#6'Panels'#14#1#5'Widt'
+'h'#3#200#0#0#1#5'Width'#2'F'#0#1#5'Width'#3#150#0#0#1#5'Width'#2'2'#0#0#11
+'SimplePanel'#8#6'Height'#2#23#3'Top'#2#233#0#0#9'TNotebook'#7'nbPages'#5'Al'
+'ign'#7#8'alClient'#9'PageIndex'#2#0#8'ShowTabs'#8#3'Top'#2#245#0#5'TPage'#6
+'pgText'#7'Caption'#6#6'pgText'#0#10'TScrollBar'#13'ScrollBarVert'#5'Align'#7
+#7'alRight'#7'Anchors'#11#5'akTop'#7'akRight'#0#4'Kind'#7#10'sbVertical'#3'M'
+'ax'#3#232#3#8'PageSize'#2#1#11'ParentCtl3D'#8#8'Position'#2'2'#8'TabOrder'#2
+#0#8'OnScroll'#7#19'ScrollBarVertScroll'#4'Left'#2#241#5'Width'#2#15#0#0#14
+'TViewerControl'#13'ViewerControl'#11'Font.Height'#2#242#9'Font.Name'#6#5'fi'
+'xed'#10'Font.Pitch'#7#7'fpFixed'#5'Align'#7#8'alClient'#16'OnMouseWheelDown'
+#7#27'ViewerControlMouseWheelDown'#14'OnMouseWheelUp'#7#25'ViewerControlMous'
+'eWheelUp'#6'Cursor'#7#7'crIBeam'#4'Left'#2#249#0#0#0#5'TPage'#7'pgImage'#7
+'Caption'#6#7'pgImage'#0#10'TScrollBox'#9'ScrollBox'#5'Align'#7#8'alClient'
+#11'ParentCtl3D'#8#8'TabOrder'#2#0#7'TabStop'#9#18'HorzScrollBar.Page'#3#19#3
+#18'VertScrollBar.Page'#3#211#1#6'Height'#3#212#1#5'Width'#3#20#3#0#6'TImage'
+#5'Image'#5'Align'#7#8'alClient'#11'Transparent'#9#6'Height'#3#212#1#5'Width'
+#3#20#3#0#0#0#0#0#9'TMainMenu'#8'MainMenu'#4'left'#2'X'#3'top'#2#8#0#9'TMenu'
+'Item'#6'miFile'#7'Caption'#6#5'&File'#0#9'TMenuItem'#6'miPrev'#7'Caption'#6
+#9'&Previous'#8'ShortCut'#2'P'#7'OnClick'#7#11'miPrevClick'#0#0#9'TMenuItem'
+#6'miNext'#7'Caption'#6#5'&Next'#8'ShortCut'#2'N'#7'OnClick'#7#11'miNextClic'
+'k'#0#0#9'TMenuItem'#11'miSeparator'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'mi'
+'SavePos'#7'Caption'#6#14'&Save Position'#7'OnClick'#7#14'miSavePosClick'#0#0
+#9'TMenuItem'#2'N1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#6'miExit'#7'Caption'#6
+#5'E&xit'#7'OnClick'#7#11'miExitClick'#0#0#0#9'TMenuItem'#6'miEdit'#7'Captio'
+'n'#6#5'&Edit'#0#9'TMenuItem'#17'miCopyToClipboard'#7'Caption'#6#17'Copy To '
+'Clipboard'#7'OnClick'#7#22'miCopyToClipboardClick'#0#0#9'TMenuItem'#11'miSe'
+'lectAll'#7'Caption'#6#10'Select All'#7'OnClick'#7#16'miSelectAllClick'#0#0#0
+#9'TMenuItem'#6'miView'#7'Caption'#6#5'&View'#0#9'TMenuItem'#6'miText'#7'Cap'
+'tion'#6#4'Text'#7'OnClick'#7#11'miTextClick'#0#0#9'TMenuItem'#5'miBin'#7'Ca'
+'ption'#6#3'Bin'#7'OnClick'#7#10'miBinClick'#0#0#9'TMenuItem'#5'miHex'#7'Cap'
+'tion'#6#3'Hex'#7'OnClick'#7#10'miHexClick'#0#0#9'TMenuItem'#10'miWrapText'#7
+'Caption'#6#9'Wrap Text'#7'OnClick'#7#15'miWrapTextClick'#0#0#9'TMenuItem'#6
+'miDiv2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'miGraphics'#7'Caption'#6#8'Gr'
+'aphics'#8'ShortCut'#2'6'#7'OnClick'#7#15'miGraphicsClick'#0#0#9'TMenuItem'#6
+'miDiv1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#8'miSearch'#7'Caption'#6#6'Searc'
+'h'#8'ShortCut'#2'r'#7'OnClick'#7#13'miSearchClick'#0#0#0#9'TMenuItem'#7'miI'
+'mage'#7'Caption'#6#6'&Image'#0#9'TMenuItem'#9'miStretch'#7'Caption'#6#7'Str'
+'etch'#7'OnClick'#7#14'miStretchClick'#0#0#0#9'TMenuItem'#7'miAbout'#7'Capti'
+'on'#6#5'About'#0#9'TMenuItem'#8'miAbout2'#7'Caption'#6#6'About '#7'OnClick'
+#7#13'miAbout2Click'#0#0#0#0#0
+'ption'#6#9'frmViewer'#12'ClientHeight'#3#242#1#11'ClientWidth'#3#24#3#10'Ke'
+'yPreview'#9#4'Menu'#7#8'MainMenu'#7'OnClose'#7#14'frmViewerClose'#8'OnCreat'
+'e'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#9'OnKeyDown'#7#16'frmVie'
+'werKeyDown'#10'OnKeyPress'#7#12'FormKeyPress'#7'OnKeyUp'#7#14'frmViewerKeyU'
+'p'#13'PixelsPerInch'#2'`'#8'Position'#7#14'poScreenCenter'#10'TextHeight'#2
+#16#18'HorzScrollBar.Page'#3#23#3#18'VertScrollBar.Page'#3#241#1#19'VertScro'
+'llBar.Range'#2#19#4'Left'#2'm'#6'Height'#3#6#2#3'Top'#3#207#0#5'Width'#3#24
+#3#0#10'TStatusBar'#6'Status'#6'Panels'#14#1#5'Width'#3#200#0#0#1#5'Width'#2
+'F'#0#1#5'Width'#3#150#0#0#1#5'Width'#2'2'#0#0#11'SimplePanel'#8#6'Height'#2
+#23#3'Top'#3#219#1#5'Width'#3#24#3#0#0#9'TNotebook'#7'nbPages'#5'Align'#7#8
+'alClient'#9'PageIndex'#2#0#8'ShowTabs'#8#6'Height'#3#219#1#5'Width'#3#24#3#0
+#5'TPage'#6'pgText'#7'Caption'#6#6'pgText'#11'ClientWidth'#3#16#3#12'ClientH'
+'eight'#3#211#1#6'Height'#3#211#1#5'Width'#3#16#3#0#10'TScrollBar'#13'Scroll'
+'BarVert'#5'Align'#7#7'alRight'#7'Anchors'#11#5'akTop'#7'akRight'#0#4'Kind'#7
+#10'sbVertical'#3'Max'#3#232#3#8'PageSize'#2#1#11'ParentCtl3D'#8#8'Position'
+#2'2'#8'TabOrder'#2#0#8'OnScroll'#7#19'ScrollBarVertScroll'#4'Left'#3#1#3#6
+'Height'#3#211#1#5'Width'#2#15#0#0#14'TViewerControl'#13'ViewerControl'#11'F'
+'ont.Height'#2#242#9'Font.Name'#6#5'fixed'#10'Font.Pitch'#7#7'fpFixed'#5'Ali'
+'gn'#7#8'alClient'#16'OnMouseWheelDown'#7#27'ViewerControlMouseWheelDown'#14
+'OnMouseWheelUp'#7#25'ViewerControlMouseWheelUp'#6'Cursor'#7#7'crIBeam'#6'He'
+'ight'#3#211#1#5'Width'#3#1#3#0#0#0#5'TPage'#7'pgImage'#7'Caption'#6#7'pgIma'
+'ge'#11'ClientWidth'#3#16#3#12'ClientHeight'#3#211#1#6'Height'#3#211#1#5'Wid'
+'th'#3#16#3#0#10'TScrollBox'#9'ScrollBox'#5'Align'#7#8'alClient'#11'ParentCt'
+'l3D'#8#8'TabOrder'#2#0#7'TabStop'#9#18'HorzScrollBar.Page'#3#19#3#18'VertSc'
+'rollBar.Page'#3#211#1#6'Height'#3#212#1#5'Width'#3#20#3#0#6'TImage'#5'Image'
+#5'Align'#7#8'alClient'#11'Transparent'#9#6'Height'#3#212#1#5'Width'#3#20#3#0
+#0#0#0#0#9'TMainMenu'#8'MainMenu'#4'left'#2'X'#3'top'#2#8#0#9'TMenuItem'#6'm'
+'iFile'#7'Caption'#6#5'&File'#0#9'TMenuItem'#6'miPrev'#7'Caption'#6#9'&Previ'
+'ous'#8'ShortCut'#2'P'#7'OnClick'#7#11'miPrevClick'#0#0#9'TMenuItem'#6'miNex'
+'t'#7'Caption'#6#5'&Next'#8'ShortCut'#2'N'#7'OnClick'#7#11'miNextClick'#0#0#9
+'TMenuItem'#11'miSeparator'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'miSavePos'#7
+'Caption'#6#14'&Save Position'#7'OnClick'#7#14'miSavePosClick'#0#0#9'TMenuIt'
+'em'#2'N1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#6'miExit'#7'Caption'#6#5'E&xit'
+#7'OnClick'#7#11'miExitClick'#0#0#0#9'TMenuItem'#6'miEdit'#7'Caption'#6#5'&E'
+'dit'#0#9'TMenuItem'#17'miCopyToClipboard'#7'Caption'#6#17'Copy To Clipboard'
+#7'OnClick'#7#22'miCopyToClipboardClick'#0#0#9'TMenuItem'#11'miSelectAll'#7
+'Caption'#6#10'Select All'#7'OnClick'#7#16'miSelectAllClick'#0#0#0#9'TMenuIt'
+'em'#6'miView'#7'Caption'#6#5'&View'#0#9'TMenuItem'#6'miText'#7'Caption'#6#4
+'Text'#7'OnClick'#7#11'miTextClick'#0#0#9'TMenuItem'#5'miBin'#7'Caption'#6#3
+'Bin'#7'OnClick'#7#10'miBinClick'#0#0#9'TMenuItem'#5'miHex'#7'Caption'#6#3'H'
+'ex'#7'OnClick'#7#10'miHexClick'#0#0#9'TMenuItem'#10'miWrapText'#7'Caption'#6
+#9'Wrap Text'#7'OnClick'#7#15'miWrapTextClick'#0#0#9'TMenuItem'#6'miDiv2'#7
+'Caption'#6#1'-'#0#0#9'TMenuItem'#10'miGraphics'#7'Caption'#6#8'Graphics'#8
+'ShortCut'#2'6'#7'OnClick'#7#15'miGraphicsClick'#0#0#9'TMenuItem'#6'miDiv1'#7
+'Caption'#6#1'-'#0#0#9'TMenuItem'#8'miSearch'#7'Caption'#6#6'Search'#8'Short'
+'Cut'#2'r'#7'OnClick'#7#13'miSearchClick'#0#0#0#9'TMenuItem'#7'miImage'#7'Ca'
+'ption'#6#6'&Image'#0#9'TMenuItem'#9'miStretch'#7'Caption'#6#7'Stretch'#7'On'
+'Click'#7#14'miStretchClick'#0#0#0#9'TMenuItem'#7'miAbout'#7'Caption'#6#5'Ab'
+'out'#0#9'TMenuItem'#8'miAbout2'#7'Caption'#6#6'About '#7'OnClick'#7#13'miAb'
+'out2Click'#0#0#0#0#0
]);
LazarusResources.Add('TfrmFindView','FORMDATA',[

348
fmain.lfm
View file

@ -1,7 +1,12 @@
object frmMain: TfrmMain
inherited frmMain: TfrmMain
Left = 217
Height = 336
Top = 158
Width = 525
HorzScrollBar.Page = 524
VertScrollBar.Page = 315
VertScrollBar.Range = 79
Caption = 'Double Commander'
ClientHeight = 316
ClientWidth = 525
Font.Color = clBlack
Font.Height = 13
Font.Name = 'Helvetica'
@ -10,187 +15,178 @@ object frmMain: TfrmMain
Menu = mnuMain
OnActivate = FormActivate
OnClose = frmMainClose
OnCreate = FormCreate
OnDestroy = FormDestroy
OnKeyDown = FormKeyDown
OnKeyPress = FormKeyPress
OnKeyUp = frmMainKeyUp
OnResize = FormResize
OnShow = frmMainShow
PixelsPerInch = 96
Position = poDesktopCenter
ShowHint = True
TextHeight = 16
HorzScrollBar.Page = 524
VertScrollBar.Page = 315
VertScrollBar.Range = 79
Left = 250
Height = 336
Top = 174
Width = 525
object pnlButton: TPanel
Align = alTop
ClientHeight = 22
ClientWidth = 525
FullRepaint = False
TabOrder = 0
Visible = False
Height = 22
Top = 23
Width = 525
Align = alTop
FullRepaint = False
TabOrder = 0
Visible = False
end
object pnlDisk: TPanel
Align = alTop
Caption = 'pnlDisk'
ClientHeight = 24
ClientWidth = 525
FullRepaint = False
ParentColor = False
TabOrder = 1
Height = 24
Top = 45
Width = 525
Align = alTop
Caption = 'pnlDisk'
FullRepaint = False
ParentColor = False
TabOrder = 1
object dskLeft: TKAStoolBar
OnToolButtonClick = dskLeftToolButtonClick
CheckToolButton = True
FlatButtons = True
IsDiskPanel = True
Align = alLeft
ClientHeight = 22
ClientWidth = 354
ParentColor = False
TabOrder = 0
Left = 1
Height = 22
Top = 1
Width = 354
end
object dskRight: TKAStoolBar
OnToolButtonClick = dskRightToolButtonClick
Align = alLeft
ParentColor = False
TabOrder = 0
OnToolButtonClick = dskLeftToolButtonClick
CheckToolButton = True
FlatButtons = True
IsDiskPanel = True
Align = alClient
Anchors = [akTop, akLeft, akBottom]
ClientHeight = 22
ClientWidth = 169
TabOrder = 1
end
object dskRight: TKAStoolBar
Left = 355
Height = 22
Top = 1
Width = 169
Align = alClient
Anchors = [akTop, akLeft, akBottom]
TabOrder = 1
OnToolButtonClick = dskRightToolButtonClick
CheckToolButton = True
FlatButtons = True
IsDiskPanel = True
end
end
object pnlCommand: TPanel
Align = alBottom
Anchors = [akLeft, akRight]
BevelOuter = bvLowered
ClientHeight = 66
ClientWidth = 525
FullRepaint = False
ParentColor = False
TabOrder = 2
Height = 66
Top = 250
Width = 525
Align = alBottom
Anchors = [akLeft, akRight]
BevelOuter = bvLowered
FullRepaint = False
ParentColor = False
TabOrder = 2
object lblCommandPath: TLabel
Left = 1
Height = 14
Top = 8
Width = 23
Alignment = taRightJustify
Caption = 'Path'
Color = clNone
ParentColor = False
ShowAccelChar = False
Left = 1
Height = 14
Top = 8
Width = 23
end
object pnlKeys: TPanel
Align = alBottom
Anchors = [akLeft, akRight]
BevelOuter = bvLowered
ClientHeight = 27
ClientWidth = 523
FullRepaint = False
TabOrder = 0
OnResize = pnlKeysResize
Left = 1
Height = 27
Top = 38
Width = 523
Align = alBottom
Anchors = [akLeft, akRight]
BevelOuter = bvLowered
FullRepaint = False
TabOrder = 0
OnResize = pnlKeysResize
object btnF3: TSpeedButton
Action = actView
Flat = True
NumGlyphs = 0
Left = 1
Height = 23
Top = 4
Width = 75
end
object btnF4: TSpeedButton
Action = actEdit
Action = actView
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object btnF4: TSpeedButton
Left = 76
Height = 23
Top = 4
Width = 75
end
object btnF5: TSpeedButton
Action = actCopy
Action = actEdit
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object btnF5: TSpeedButton
Left = 151
Height = 23
Top = 4
Width = 75
end
object btnF6: TSpeedButton
Action = actRename
Action = actCopy
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object btnF6: TSpeedButton
Left = 226
Height = 23
Top = 4
Width = 75
end
object btnF7: TSpeedButton
Action = actMakeDir
Action = actRename
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object btnF7: TSpeedButton
Left = 301
Height = 23
Top = 4
Width = 75
end
object btnF8: TSpeedButton
Action = actDelete
Action = actMakeDir
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object btnF8: TSpeedButton
Left = 376
Height = 23
Top = 4
Width = 75
end
object btnF10: TSpeedButton
Action = actExit
Action = actDelete
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object btnF10: TSpeedButton
Left = 539
Height = 23
Top = 4
Width = 75
end
object btnF9: TSpeedButton
Action = actShowMenu
Action = actExit
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object btnF9: TSpeedButton
Left = 448
Height = 22
Top = 4
Width = 89
Action = actShowMenu
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
end
object edtCommand: TComboBox
Left = 56
Height = 21
Top = 8
Width = 688
TabStop = False
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
ItemHeight = 18
MaxLength = 0
@ -198,63 +194,50 @@ object frmMain: TfrmMain
OnKeyUp = edtCommandKeyUp
ParentCtl3D = False
TabOrder = 1
TabStop = False
TabStop = False
Left = 56
Height = 21
Top = 8
Width = 688
end
end
object pnlNotebooks: TPanel
Align = alClient
ClientHeight = 181
ClientWidth = 525
FullRepaint = False
TabOrder = 3
TabStop = True
Height = 181
Top = 69
Width = 525
Align = alClient
FullRepaint = False
TabOrder = 3
TabStop = True
object nbLeft: TNotebook
Align = alLeft
OnCloseTabClicked = NoteBookCloseTabClicked
Options = [nboShowCloseButtons]
Left = 1
Height = 179
Top = 1
Width = 391
Align = alLeft
OnCloseTabClicked = NoteBookCloseTabClicked
Options = [nboShowCloseButtons]
end
object Splitter1: TSplitter
Height = 179
ResizeStyle = rsLine
Width = 4
Cursor = crHSplit
Left = 392
Height = 179
Top = 1
Width = 4
ResizeStyle = rsLine
end
object nbRight: TNotebook
Align = alClient
OnCloseTabClicked = NoteBookCloseTabClicked
Options = [nboShowCloseButtons]
Left = 396
Height = 179
Top = 1
Width = 128
Align = alClient
OnCloseTabClicked = NoteBookCloseTabClicked
Options = [nboShowCloseButtons]
end
end
object MainToolBar: TKAStoolBar
OnToolButtonClick = MainToolBarToolButtonClick
FlatButtons = True
Align = alTop
ClientHeight = 23
ClientWidth = 525
TabOrder = 4
OnMouseDown = MainToolBarMouseDown
Height = 23
Width = 525
Align = alTop
TabOrder = 4
OnMouseDown = MainToolBarMouseDown
OnToolButtonClick = MainToolBarToolButtonClick
FlatButtons = True
end
object mnuMain: TMainMenu
left = 283
@ -438,293 +421,338 @@ object frmMain: TfrmMain
left = 360
top = 64
object actExit: TAction
Category = 'File'
Caption = 'Exit'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actExitExecute
Category = 'File'
end
object actView: TAction
Category = 'Classic'
Caption = 'View F3'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actViewExecute
ShortCut = 4146
Category = 'Classic'
end
object actEdit: TAction
Category = 'Classic'
Caption = 'Edit F4'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actEditExecute
ShortCut = 4147
Category = 'Classic'
end
object actCopy: TAction
Category = 'Classic'
Caption = 'Copy F5'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actCopyExecute
ShortCut = 4148
Category = 'Classic'
end
object actRename: TAction
Category = 'Classic'
Caption = 'Rename F6'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actRenameExecute
ShortCut = 4149
Category = 'Classic'
end
object actMakeDir: TAction
Category = 'Classic'
Caption = 'MakeDir F7'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actMakeDirExecute
ShortCut = 4150
Category = 'Classic'
end
object actDelete: TAction
Category = 'Classic'
Caption = 'Delete F8'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actDeleteExecute
ShortCut = 4151
Category = 'Classic'
end
object actAbout: TAction
Category = 'Help'
Caption = 'About'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actAboutExecute
ShortCut = 4144
Category = 'Help'
end
object actShowSysFiles: TAction
Category = 'File'
Caption = 'Show System Files'
Checked = True
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actShowSysFilesExecute
Category = 'File'
end
object actOptions: TAction
Category = 'Config'
Caption = 'Options...'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actOptionsExecute
Category = 'Config'
end
object actCompareContents: TAction
Category = 'File'
Caption = 'Compare by &Contents'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actCompareContentsExecute
Category = 'File'
end
object actShowMenu: TAction
Category = 'Classic'
Caption = 'Menu F9'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actShowMenuExecute
ShortCut = 4152
Category = 'Classic'
end
object actRefresh: TAction
Category = 'Show'
Caption = '&Refresh'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actRefreshExecute
ShortCut = 16466
Category = 'Show'
end
object actSearch: TAction
Category = 'Commands'
Caption = '&Search'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actSearchExecute
ShortCut = 20534
Category = 'Commands'
end
object actDirHotList: TAction
Category = 'Commands'
Caption = 'Directory &hotlist'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actDirHotListExecute
ShortCut = 16452
Category = 'Commands'
end
object actMarkMarkAll: TAction
Category = 'Mark'
Caption = '&Select All'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actMarkMarkAllExecute
Category = 'Mark'
end
object actMarkInvert: TAction
Category = 'Mark'
Caption = 'Invert Selections'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actMarkInvertExecute
ShortCut = 42
Category = 'Mark'
end
object actMarkUnmarkAll: TAction
Category = 'Mark'
Caption = 'Unselect All'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actMarkUnmarkAllExecute
Category = 'Mark'
end
object actDelete2: TAction
Category = 'Classic'
Caption = 'actDelete2'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actDelete2Execute
ShortCut = 4103
Category = 'Classic'
end
object actPathToCmdLine: TAction
Caption = 'actPathToCmdLine'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actPathToCmdLineExecute
ShortCut = 16464
end
object actMarkPlus: TAction
Category = 'Mark'
Caption = 'Select a group'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actMarkPlusExecute
Category = 'Mark'
end
object actMarkMinus: TAction
Category = 'Mark'
Caption = 'Unselect a group'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actMarkMinusExecute
Category = 'Mark'
end
object actChMod: TAction
Category = 'File'
Caption = 'Change Attributes'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actChModExecute
Category = 'File'
end
object actSymLink: TAction
Category = 'File'
Caption = 'Create symlink...'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actSymLinkExecute
Category = 'File'
end
object actHardLink: TAction
Category = 'File'
Caption = 'Create link...'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actHardLinkExecute
Category = 'File'
end
object actReverseOrder: TAction
Category = 'Show'
Caption = 'Reverse order'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actReverseOrderExecute
Category = 'Show'
end
object actSortByName: TAction
Category = 'Show'
Caption = 'Name'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actSortByNameExecute
Category = 'Show'
end
object actSortByExt: TAction
Category = 'Show'
Caption = 'Extension'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actSortByExtExecute
Category = 'Show'
end
object actSortBySize: TAction
Category = 'Show'
Caption = 'Size'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actSortBySizeExecute
Category = 'Show'
end
object actSortByDate: TAction
Category = 'Show'
Caption = 'Date'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actSortByDateExecute
Category = 'Show'
end
object actSortByAttr: TAction
Category = 'Show'
Caption = 'Attrib'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actSortByAttrExecute
Category = 'Show'
end
object actMultiRename: TAction
Category = 'File'
Caption = 'Multi Rename Tool'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actMultiRenameExecute
Category = 'File'
end
object actShiftF5: TAction
Category = 'Commands'
Caption = 'actShiftF5'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actShiftF5Execute
ShortCut = 12340
Category = 'Commands'
end
object actShiftF6: TAction
Category = 'Commands'
Caption = 'actShiftF6'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actShiftF6Execute
ShortCut = 12341
Category = 'Commands'
end
object actShiftF4: TAction
Category = 'Commands'
Caption = 'actShiftF4'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actShiftF4Execute
Category = 'Commands'
end
object actDirHistory: TAction
Category = 'Commands'
Caption = 'actDirHistory'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actDirHistoryExecute
ShortCut = 16456
Category = 'Commands'
end
object actCtrlF8: TAction
Category = 'Commands'
Caption = 'actCtrlF8'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actCtrlF8Execute
ShortCut = 20535
Category = 'Commands'
end
object actRunTerm: TAction
Category = 'Commands'
Caption = 'Run Term'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actRunTermExecute
ShortCut = 16468
Category = 'Commands'
end
object actCalculateSpace: TAction
Category = 'File'
Caption = 'Calculate &Occupied Space...'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actCalculateSpaceExecute
Category = 'File'
end
object actFileProperties: TAction
Category = 'File'
Caption = 'Show File Properties'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actFilePropertiesExecute
Category = 'File'
end
object actChown: TAction
Category = 'File'
Caption = 'Chown'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actChownExecute
Category = 'File'
end
object actFileLinker: TAction
Category = 'File'
Caption = 'Link Files'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actFileLinkerExecute
Category = 'File'
end
object actFileSpliter: TAction
Category = 'File'
Caption = 'Split File'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actFileSpliterExecute
Category = 'File'
end
object actNewTab: TAction
Category = 'Tabs'
Caption = 'actNewTab'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actNewTabExecute
Category = 'Tabs'
end
object actRemoveTab: TAction
Category = 'Tabs'
Caption = 'actRemoveTab'
DisableIfNoHandler = True
HelpType = htKeyword
OnExecute = actRemoveTabExecute
Category = 'Tabs'
end
end
object pmHotList: TPopupMenu

View file

@ -255,6 +255,7 @@ type
{ Private declarations }
PanelSelected:TFilePanelSelect;
bAltPress:Boolean;
IsPanelsCreated : Boolean;
function ExecuteCommandFromEdit(sCmd:String):Boolean;
public
@ -317,6 +318,7 @@ begin
if FileExists(gpIniDir+cHistoryFile) then
edtCommand.Items.LoadFromFile(gpIniDir+cHistoryFile);
// writeln('frmMain.FormCreate Done');
IsPanelsCreated := False;
end;
procedure TfrmMain.Button1Click(Sender: TObject);
@ -330,7 +332,7 @@ end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
writeln('frmMain.Destroy');
DebugLn('frmMain.Destroy');
edtCommand.Items.SaveToFile(gpIniDir+cHistoryFile);
{*Tool Bar*}
MainToolBar.SaveToFile(gpIniDir + 'default.bar');
@ -436,7 +438,7 @@ end;
procedure TfrmMain.MainToolBarToolButtonClick(NumberOfButton : Integer);
begin
ExecCmdFork(MainToolBar.Commands[NumberOfButton]);
writeln(MainToolBar.Commands[NumberOfButton]);
DebugLn(MainToolBar.Commands[NumberOfButton]);
end;
@ -492,6 +494,21 @@ procedure TfrmMain.frmMainShow(Sender: TObject);
var
LastDir : String;
begin
DebugLn('frmMainShow');
(* If panels already created then refresh their and exit *)
if IsPanelsCreated then
begin
FrameLeft.RefreshPanel;
FrameRight.RefreshPanel;
Exit;
end;
Left := gIni.ReadInteger('Configuration', 'Main.Left', Left);
Top := gIni.ReadInteger('Configuration', 'Main.Top', Top);
Width := gIni.ReadInteger('Configuration', 'Main.Width', Width);
Height := gIni.ReadInteger('Configuration', 'Main.Height', Height);
CreatePanel(AddPage(nbLeft), fpLeft );
CreatePanel(AddPage(nbRight), fpRight);
@ -520,10 +537,7 @@ begin
PanelSelected:=fpLeft;
SetActiveFrame(fpLeft);
Left := gIni.ReadInteger('Configuration', 'Main.Left', Left);
Top := gIni.ReadInteger('Configuration', 'Main.Top', Top);
Width := gIni.ReadInteger('Configuration', 'Main.Width', Width);
Height := gIni.ReadInteger('Configuration', 'Main.Height', Height);
pnlNotebooks.Width:=Width div 2;
(*Create Disk Panels*)
@ -534,6 +548,8 @@ begin
(*Tool Bar*)
MainToolBar.LoadFromFile(gpIniDir + 'default.bar');
(*Tool Bar*)
IsPanelsCreated := True;
end;
procedure TfrmMain.NoteBookCloseTabClicked(Sender: TObject);
@ -592,7 +608,7 @@ begin
if fr^.bSelected and not (FPS_ISDIR(fr^.iMode)) then
begin
sl.Add(ActiveDir+fr^.sName);
writeln('View.Add:',ActiveDir+fr^.sName);
DebugLn('View.Add:',ActiveDir+fr^.sName);
end;
end;
if sl.Count>0 then
@ -1098,7 +1114,7 @@ end;
procedure TfrmMain.FormKeyPress(Sender: TObject; var Key: Char);
begin
// writeln('KeyPress:',Key);
// DebugLn('KeyPress:',Key);
if Key=#27 then
ActiveFrame.ClearCmdLine;
if (ord(key)>31) and (ord(key)<255) then
@ -1140,13 +1156,13 @@ end;
function TfrmMain.FrameLeft: TFrameFilePanel;
begin
// writeln(nbLeft.Page[nbLeft.PageIndex].Components[0].ClassName);
// DebugLn(nbLeft.Page[nbLeft.PageIndex].Components[0].ClassName);
Result:=TFrameFilePanel(nbLeft.Page[nbLeft.PageIndex].Components[0]);
end;
function TfrmMain.FrameRight: TFrameFilePanel;
begin
// writeln(nbRight.Page[nbRight.PageIndex].Components[0].ClassName);
// DebugLn(nbRight.Page[nbRight.PageIndex].Components[0].ClassName);
Result:=TFrameFilePanel(nbRight.Page[nbRight.PageIndex].Components[0]);
// Result:=TFrameFilePanel(nbRight.Page[0].Components[0]);
@ -1191,8 +1207,8 @@ end;
procedure TfrmMain.AppException(Sender: TObject; E: Exception);
begin
writeln(stdErr,'Exception:',E.Message);
writeln(stdErr,'Func:',BackTraceStrFunc(get_caller_frame(get_frame)));
WriteLn(stdErr,'Exception:',E.Message);
WriteLn(stdErr,'Func:',BackTraceStrFunc(get_caller_frame(get_frame)));
Dump_Stack(StdErr, get_caller_frame(get_frame));
end;
@ -1254,7 +1270,7 @@ end;
procedure TfrmMain.actSearchExecute(Sender: TObject);
begin
inherited;
WriteLN('ShowFindDlg');
DebugLn('ShowFindDlg');
ShowFindDlg(ActiveFrame.ActiveDir);
end;
@ -1881,7 +1897,7 @@ procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
begin
inherited;
// writeln('Key down:',Key);
// DebugLn('Key down:',Key);
if Key=18 then // is the ALT?
begin
ActiveFrame.ShowAltPanel;
@ -1952,13 +1968,13 @@ begin
Exit;
end;
end;}
// writeln(Key);
// DebugLn(Key);
if HandleActionHotKeys(Key, Shift) Then
begin
Key:=0;;
Exit;
end;
// writeln(Key);
// DebugLn(Key);
{ if bAltPress and (shift=[ssAlt]) and (key=VK_Alt) and not IsAltPanel then
begin
@ -2010,13 +2026,13 @@ procedure TfrmMain.FormActivate(Sender: TObject);
begin
KeyPreview:=True;
// ActiveFrame.SetFocus;
// writeln('Activate');
// DebugLn('Activate');
end;
procedure TfrmMain.FrameRightedtRenameExit(Sender: TObject);
begin
// handler for both edits
// writeln('On exit');
// DebugLn('On exit');
KeyPreview:=True;
ActiveFrame.edtRename.Visible:=False;
end;
@ -2110,7 +2126,7 @@ end;
procedure TfrmMain.FramelblLPathClick(Sender: TObject);
begin
// writeln(TControl(Sender).Parent.Parent.ClassName);
// DebugLn(TControl(Sender).Parent.Parent.ClassName);
SetActiveFrame(TFrameFilePanel(TControl(Sender).Parent.Parent).PanelSelect);
actDirHistory.Execute;
end;
@ -2228,8 +2244,8 @@ begin
ANoteBook.Pages.Add(PageName);
ANoteBook.ActivePage:= PageName;
Result:=ANoteBook.Page[x];
{ writeln(Result.ClassName);
writeln(Result.Name);}
{ DebugLn(Result.ClassName);
DebugLn(Result.Name);}
ANoteBook.ShowTabs:= (ANoteBook.PageCount > 1);
end;
@ -2352,7 +2368,7 @@ begin
begin
sDir:=Trim(Copy(sCmd, iIndex+3, length(sCmd)));
sDir:=IncludeTrailingBackslash(sDir);
writeln('Chdir to:',sDir);
DebugLn('Chdir to:',sDir);
if not SetCurrentDir(sDir) then
begin
msgError(Format('ChDir to [%s] failed!',[sDir]));
@ -2363,7 +2379,7 @@ begin
begin
GetDir(0,sDir);
ActiveDir:=sDir;
writeln(sDir);
DebugLn(sDir);
end;
end;
end

View file

@ -1,91 +1,97 @@
object FrameFilePanel: TFrameFilePanel
Left = 456
Left = 132
Height = 415
Top = 231
Top = 83
Width = 349
HorzScrollBar.Page = 348
VertScrollBar.Page = 414
ActiveControl = dgPanel
Caption = 'FrameFilePanel'
object pnPanel: TPanel
Align = alClient
BevelOuter = bvNone
ClientHeight = 415
ClientWidth = 349
FullRepaint = False
TabOrder = 0
Height = 415
Width = 349
Align = alClient
BevelOuter = bvNone
FullRepaint = False
TabOrder = 0
object lblLInfo: TLabel
Height = 14
Width = 36
Caption = 'lblLInfo'
Color = clNone
ParentColor = False
Height = 17
Width = 65
end
object pnlHeader: TPanel
Align = alTop
BevelInner = bvLowered
ClientHeight = 41
ClientWidth = 349
FullRepaint = False
TabOrder = 0
Height = 41
Width = 349
Align = alTop
BevelInner = bvLowered
FullRepaint = False
TabOrder = 0
object btnRoot: TSpeedButton
Anchors = [akTop]
Caption = '/'
Flat = True
NumGlyphs = 0
Left = 166
Height = 20
Top = 20
Width = 17
end
object btnHome: TSpeedButton
Anchors = [akTop]
Caption = '~'
Caption = '/'
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object btnHome: TSpeedButton
Left = 166
Height = 20
Top = 19
Width = 17
end
object btnUp: TSpeedButton
Caption = '..'
Anchors = [akTop]
Caption = '~'
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object btnUp: TSpeedButton
Left = 320
Height = 20
Top = 20
Width = 17
Caption = '..'
Color = clBtnFace
Flat = True
NumGlyphs = 0
end
object lblLPath: TLabel
Left = 2
Height = 14
Top = 2
Width = 345
Align = alTop
Caption = 'lblLPath'
Color = clBackground
ParentColor = False
Transparent = False
Left = 2
Height = 17
Top = 2
Width = 345
end
object lblFree: TLabel
Left = 2
Height = 23
Top = 16
Width = 33
Align = alLeft
Caption = 'lblFree'
Color = clNone
ParentColor = False
Left = 2
Height = 20
Top = 19
Width = 65
end
end
object edtRename: TEdit
TabOrder = 2
Visible = False
Height = 1
Width = 1
TabOrder = 2
Visible = False
end
object dgPanel: TDrawGrid
Height = 344
Top = 41
Width = 349
Align = alClient
AutoAdvance = aaDown
Color = clWhite
@ -101,47 +107,37 @@ object FrameFilePanel: TFrameFilePanel
ScrollBars = ssAutoBoth
TabOrder = 1
TabStop = True
VisibleColCount = 1
VisibleRowCount = 1
Left = 224
Height = 344
Top = 208
Width = 349
end
object pnAltSearch: TPanel
Alignment = taLeftJustify
Caption = ' Find:'
ClientHeight = 29
ClientWidth = 185
FullRepaint = False
TabOrder = 3
Visible = False
Left = 8
Height = 29
Top = 336
Width = 185
Alignment = taLeftJustify
Caption = ' Find:'
FullRepaint = False
TabOrder = 3
Visible = False
object edSearch: TEdit
Anchors = [akTop, akLeft, akRight, akBottom]
OnKeyPress = edSearchKeyPress
TabOrder = 0
Left = 64
Height = 24
Top = 2
Width = 118
Anchors = [akTop, akLeft, akRight, akBottom]
OnKeyPress = edSearchKeyPress
TabOrder = 0
end
end
object pnlFooter: TPanel
Align = alBottom
Anchors = [akLeft, akRight]
Caption = 'pnlFooter'
ClientHeight = 30
ClientWidth = 349
FullRepaint = False
TabOrder = 4
TabStop = True
Height = 30
Top = 385
Width = 349
Align = alBottom
Anchors = [akLeft, akRight]
Caption = 'pnlFooter'
FullRepaint = False
TabOrder = 4
TabStop = True
end
end
end

View file

@ -1,41 +1,40 @@
{ Ýòî - ôàéë ðåñóðñîâ, àâòîìàòè÷åñêè ñîçäàííûé lazarus }
LazarusResources.Add('TFrameFilePanel','FORMDATA',[
'TPF0'#15'TFrameFilePanel'#14'FrameFilePanel'#4'Left'#3#200#1#6'Height'#3#159
+#1#3'Top'#3#231#0#5'Width'#3']'#1#0#6'TPanel'#7'pnPanel'#5'Align'#7#8'alClie'
+'nt'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#159#1#11'ClientWidth'#3']'
+#1#11'FullRepaint'#8#8'TabOrder'#2#0#6'Height'#3#159#1#5'Width'#3']'#1#0#6'T'
+'Label'#8'lblLInfo'#7'Caption'#6#8'lblLInfo'#5'Color'#7#6'clNone'#11'ParentC'
+'olor'#8#6'Height'#2#17#5'Width'#2'A'#0#0#6'TPanel'#9'pnlHeader'#5'Align'#7#5
+'alTop'#10'BevelInner'#7#9'bvLowered'#12'ClientHeight'#2')'#11'ClientWidth'#3
+']'#1#11'FullRepaint'#8#8'TabOrder'#2#0#6'Height'#2')'#5'Width'#3']'#1#0#12
+'TSpeedButton'#7'btnRoot'#7'Anchors'#11#5'akTop'#0#7'Caption'#6#1'/'#4'Flat'
+#9#9'NumGlyphs'#2#0#4'Left'#3#166#0#6'Height'#2#20#3'Top'#2#20#5'Width'#2#17
+#0#0#12'TSpeedButton'#7'btnHome'#7'Anchors'#11#5'akTop'#0#7'Caption'#6#1'~'#4
+'Flat'#9#9'NumGlyphs'#2#0#4'Left'#3#166#0#6'Height'#2#20#3'Top'#2#19#5'Width'
+#2#17#0#0#12'TSpeedButton'#5'btnUp'#7'Caption'#6#2'..'#4'Flat'#9#9'NumGlyphs'
+#2#0#4'Left'#3'@'#1#6'Height'#2#20#3'Top'#2#20#5'Width'#2#17#0#0#6'TLabel'#8
+'lblLPath'#5'Align'#7#5'alTop'#7'Caption'#6#8'lblLPath'#5'Color'#7#12'clBack'
+'ground'#11'ParentColor'#8#11'Transparent'#8#4'Left'#2#2#6'Height'#2#17#3'To'
+'p'#2#2#5'Width'#3'Y'#1#0#0#6'TLabel'#7'lblFree'#5'Align'#7#6'alLeft'#7'Capt'
+'ion'#6#7'lblFree'#5'Color'#7#6'clNone'#11'ParentColor'#8#4'Left'#2#2#6'Heig'
+'ht'#2#20#3'Top'#2#19#5'Width'#2'A'#0#0#0#5'TEdit'#9'edtRename'#8'TabOrder'#2
+#2#7'Visible'#8#6'Height'#2#1#5'Width'#2#1#0#0#9'TDrawGrid'#7'dgPanel'#5'Ali'
+'gn'#7#8'alClient'#11'AutoAdvance'#7#6'aaDown'#5'Color'#7#7'clWhite'#8'ColCo'
+'unt'#2#5#14'DefaultDrawing'#8#16'DefaultRowHeight'#2#16#10'FixedColor'#7#9
+'clBtnFace'#9'FixedCols'#2#0#9'FixedRows'#2#0#13'GridLineWidth'#2#0#7'Option'
+'s'#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'
+#11'goColSizing'#11'goRowSelect'#0#8'RowCount'#2#5#10'ScrollBars'#7#10'ssAut'
+'oBoth'#8'TabOrder'#2#1#7'TabStop'#9#15'VisibleColCount'#2#1#15'VisibleRowCo'
+'unt'#2#1#4'Left'#3#224#0#6'Height'#3'X'#1#3'Top'#3#208#0#5'Width'#3']'#1#0#0
+#6'TPanel'#11'pnAltSearch'#9'Alignment'#7#13'taLeftJustify'#7'Caption'#6#6' '
+'Find:'#12'ClientHeight'#2#29#11'ClientWidth'#3#185#0#11'FullRepaint'#8#8'Ta'
+'bOrder'#2#3#7'Visible'#8#4'Left'#2#8#6'Height'#2#29#3'Top'#3'P'#1#5'Width'#3
+#185#0#0#5'TEdit'#8'edSearch'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8
+'akBottom'#0#10'OnKeyPress'#7#16'edSearchKeyPress'#8'TabOrder'#2#0#4'Left'#2
+'@'#6'Height'#2#24#3'Top'#2#2#5'Width'#2'v'#0#0#0#6'TPanel'#9'pnlFooter'#5'A'
+'lign'#7#8'alBottom'#7'Anchors'#11#6'akLeft'#7'akRight'#0#7'Caption'#6#9'pnl'
+'Footer'#12'ClientHeight'#2#30#11'ClientWidth'#3']'#1#11'FullRepaint'#8#8'Ta'
+'bOrder'#2#4#7'TabStop'#9#6'Height'#2#30#3'Top'#3#129#1#5'Width'#3']'#1#0#0#0
+#0
'TPF0'#15'TFrameFilePanel'#14'FrameFilePanel'#4'Left'#3#132#0#6'Height'#3#159
+#1#3'Top'#2'S'#5'Width'#3']'#1#18'HorzScrollBar.Page'#3'\'#1#18'VertScrollBa'
+'r.Page'#3#158#1#13'ActiveControl'#7#7'dgPanel'#7'Caption'#6#14'FrameFilePan'
+'el'#0#6'TPanel'#7'pnPanel'#6'Height'#3#159#1#5'Width'#3']'#1#5'Align'#7#8'a'
+'lClient'#10'BevelOuter'#7#6'bvNone'#11'FullRepaint'#8#8'TabOrder'#2#0#0#6'T'
+'Label'#8'lblLInfo'#6'Height'#2#14#5'Width'#2'$'#7'Caption'#6#8'lblLInfo'#5
+'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TPanel'#9'pnlHeader'#6'Height'#2
+')'#5'Width'#3']'#1#5'Align'#7#5'alTop'#10'BevelInner'#7#9'bvLowered'#11'Ful'
+'lRepaint'#8#8'TabOrder'#2#0#0#12'TSpeedButton'#7'btnRoot'#4'Left'#3#166#0#6
+'Height'#2#20#3'Top'#2#20#5'Width'#2#17#7'Anchors'#11#5'akTop'#0#7'Caption'#6
+#1'/'#5'Color'#7#9'clBtnFace'#4'Flat'#9#9'NumGlyphs'#2#0#0#0#12'TSpeedButton'
+#7'btnHome'#4'Left'#3#166#0#6'Height'#2#20#3'Top'#2#19#5'Width'#2#17#7'Ancho'
+'rs'#11#5'akTop'#0#7'Caption'#6#1'~'#5'Color'#7#9'clBtnFace'#4'Flat'#9#9'Num'
+'Glyphs'#2#0#0#0#12'TSpeedButton'#5'btnUp'#4'Left'#3'@'#1#6'Height'#2#20#3'T'
+'op'#2#20#5'Width'#2#17#7'Caption'#6#2'..'#5'Color'#7#9'clBtnFace'#4'Flat'#9
+#9'NumGlyphs'#2#0#0#0#6'TLabel'#8'lblLPath'#4'Left'#2#2#6'Height'#2#14#3'Top'
+#2#2#5'Width'#3'Y'#1#5'Align'#7#5'alTop'#7'Caption'#6#8'lblLPath'#5'Color'#7
+#12'clBackground'#11'ParentColor'#8#11'Transparent'#8#0#0#6'TLabel'#7'lblFre'
+'e'#4'Left'#2#2#6'Height'#2#23#3'Top'#2#16#5'Width'#2'!'#5'Align'#7#6'alLeft'
+#7'Caption'#6#7'lblFree'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#0#5'TEdi'
+'t'#9'edtRename'#6'Height'#2#1#5'Width'#2#1#8'TabOrder'#2#2#7'Visible'#8#0#0
+#9'TDrawGrid'#7'dgPanel'#6'Height'#3'X'#1#3'Top'#2')'#5'Width'#3']'#1#5'Alig'
+'n'#7#8'alClient'#11'AutoAdvance'#7#6'aaDown'#5'Color'#7#7'clWhite'#8'ColCou'
+'nt'#2#5#14'DefaultDrawing'#8#16'DefaultRowHeight'#2#16#10'FixedColor'#7#9'c'
+'lBtnFace'#9'FixedCols'#2#0#9'FixedRows'#2#0#13'GridLineWidth'#2#0#7'Options'
+#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#11
+'goColSizing'#11'goRowSelect'#0#8'RowCount'#2#5#10'ScrollBars'#7#10'ssAutoBo'
+'th'#8'TabOrder'#2#1#7'TabStop'#9#0#0#6'TPanel'#11'pnAltSearch'#4'Left'#2#8#6
+'Height'#2#29#3'Top'#3'P'#1#5'Width'#3#185#0#9'Alignment'#7#13'taLeftJustify'
+#7'Caption'#6#6' Find:'#11'FullRepaint'#8#8'TabOrder'#2#3#7'Visible'#8#0#5'T'
+'Edit'#8'edSearch'#4'Left'#2'@'#6'Height'#2#24#3'Top'#2#2#5'Width'#2'v'#7'An'
+'chors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#10'OnKeyPress'#7#16'e'
+'dSearchKeyPress'#8'TabOrder'#2#0#0#0#0#6'TPanel'#9'pnlFooter'#6'Height'#2#30
+#3'Top'#3#129#1#5'Width'#3']'#1#5'Align'#7#8'alBottom'#7'Anchors'#11#6'akLef'
+'t'#7'akRight'#0#7'Caption'#6#9'pnlFooter'#11'FullRepaint'#8#8'TabOrder'#2#4
+#7'TabStop'#9#0#0#0#0
]);

View file

@ -40,11 +40,7 @@ type
dgPanel: TDrawGrid;
pnAltSearch: TPanel;
edtSearch: TEdit;
{ Alexx2000 This is old method
btnRoot: TSpeedButton;
btnHome: TSpeedButton;
btnUp: TSpeedButton;
}
procedure edSearchChange(Sender: TObject);
procedure edtRenameKeyPress(Sender: TObject; var Key: Char);
procedure dgPanelDrawCell(Sender: TObject; ACol, ARow: Integer;
@ -776,6 +772,8 @@ begin
edtRename.OnKeyPress:=@edtRenameKeyPress;
pnlHeader.OnResize := @pnlHeaderResize;
lblLPath.OnMouseEnter:=@lblLPathMouseEnter;
lblLPath.OnMouseLeave:=@lblLPathMouseLeave;

View file

@ -1,6 +1,8 @@
object frmViewer: TfrmViewer
ActiveControl = ScrollBarVert
Caption = 'frmViewer'
ClientHeight = 498
ClientWidth = 792
KeyPreview = True
Menu = MainMenu
OnClose = frmViewerClose
@ -12,11 +14,12 @@ object frmViewer: TfrmViewer
PixelsPerInch = 96
Position = poScreenCenter
TextHeight = 16
HorzScrollBar.Page = 65535
VertScrollBar.Page = 65535
HorzScrollBar.Page = 791
VertScrollBar.Page = 497
VertScrollBar.Range = 19
Left = 109
Height = 518
Top = 539
Top = 207
Width = 792
object Status: TStatusBar
Panels = <
@ -34,15 +37,21 @@ object frmViewer: TfrmViewer
end>
SimplePanel = False
Height = 23
Top = -23
Top = 475
Width = 792
end
object nbPages: TNotebook
Align = alClient
PageIndex = 0
ShowTabs = False
Top = -11
Height = 475
Width = 792
object pgText: TPage
Caption = 'pgText'
ClientWidth = 784
ClientHeight = 467
Height = 467
Width = 784
object ScrollBarVert: TScrollBar
Align = alRight
Anchors = [akTop, akRight]
@ -53,7 +62,8 @@ object frmViewer: TfrmViewer
Position = 50
TabOrder = 0
OnScroll = ScrollBarVertScroll
Left = -15
Left = 769
Height = 467
Width = 15
end
object ViewerControl: TViewerControl
@ -64,11 +74,16 @@ object frmViewer: TfrmViewer
OnMouseWheelDown = ViewerControlMouseWheelDown
OnMouseWheelUp = ViewerControlMouseWheelUp
Cursor = crIBeam
Left = -7
Height = 467
Width = 769
end
end
object pgImage: TPage
Caption = 'pgImage'
ClientWidth = 784
ClientHeight = 467
Height = 467
Width = 784
object ScrollBox: TScrollBox
Align = alClient
ParentCtl3D = False

View file

@ -25,7 +25,8 @@ uses
Function cnvFormatFileSize(iSize:Int64):String;
Function MinimizeFilePath(const PathToMince: String; Canvas: TCanvas;
MaxLen: Integer): String;
function FileMaskEquate(F, M: string): boolean;
function G_ValidateWildText(const S, Mask: string; bCaseSens : Boolean = False; MaskChar: Char = '?';
WildCard: Char = '*'): Boolean;
procedure DivFileName(const sFileName:String; var n,e:String);
implementation
@ -155,67 +156,132 @@ begin
end;
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Ïðîâåðêà íà ñîîòâåòñòâèå èìåíè ôàéëà çàäàííîé ìàñêå
Çàâèñèìîñòè: sysutils
Àâòîð: Dmitry Raduzhan
Copyright: Dmitry Raduzhan
Äàòà: 24 ìàðòà 2004 ã.
***************************************************** }
function FileMaskEquate(F, M: string): boolean;
function CharPos(C: Char; const S: string; StartPos: Integer = 1): Integer; overload;
var
Fl, Ml: byte; // length of file name and mask
Fp, Mp: byte; // pointers
sNewStr : String;
begin
F := UpperCase(F);
M := UpperCase(M);
result := true;
Fl := length(F);
Ml := length(M);
Fp := 1;
Mp := 1;
while Mp <= Ml do
begin // wildcard
case M[Mp] of //
'?':
begin // if one any char
inc(Mp); // next char of mask
inc(Fp); // next char of file name
end; //
'*':
begin // if any chars
if Mp = Ml then
exit; // if last char in mask then exit
if M[Mp + 1] = F[Fp] then
begin // if next char in mask equate char in
Inc(Mp); // file name then next char in mask and
end
else
begin // else
if Fp = Fl then
begin // if last char in file name then
result := false; // function return false
exit; //
end; // else, if not previous, then
inc(Fp); // next char in file name
end; //
end; //
else
begin // other char in mask
if M[Mp] <> F[Fp] then
begin // if char in mask not equate char in
result := false; // file name then function return
exit; // false
end; // else
inc(Fp); // next char of mask
inc(Mp); // next char of file name
end //
if StartPos <> 1 then
begin
sNewStr := Copy(S, StartPos, Length(S) - StartPos + 1);
Result := Pos(C, sNewStr);
if Result <> 0 then
Result := Result + StartPos - 1;
end
else
Result := Pos(C, S);
end;
{
This function based on G_ValidateWildText from AcedUtils
http://acedutils.narod.ru/AcedUtils.zip
}
function G_ValidateWildText(const S, Mask: string; bCaseSens : Boolean = False; MaskChar: Char = '?';
WildCard: Char = '*'): Boolean;
label
99;
var
L, X, X0, Q: Integer;
P, P1, B: PChar;
C: Char;
sUpperS,
sUpperMask : String;
begin
if not bCaseSens then
begin
sUpperS := UpperCase(S);
sUpperMask := UpperCase(Mask);
end
else
begin
sUpperS := S;
sUpperMask := Mask;
end;
X := Pos(WildCard, sUpperMask);
Result := False;
if X = 0 then
begin
L := Length(sUpperMask);
if (L > 0) and (L = Length(sUpperS)) then
begin
P := Pointer(sUpperS);
B := Pointer(sUpperMask);
repeat
C := B^;
if (C <> MaskChar) and (C <> P^) then
Exit;
Dec(L);
Inc(B);
Inc(P);
until L = 0;
Result := True;
end;
Exit;
end;
L := Length(sUpperS);
P := Pointer(sUpperS);
B := Pointer(sUpperMask);
Q := X - 1;
if L < Q then
Exit;
while Q > 0 do
begin
C := B^;
if (C <> MaskChar) and (C <> P^) then
Exit;
Dec(Q);
Inc(B);
Inc(P);
end;
Dec(L, X - 1);
repeat
X0 := X;
P1 := P;
while sUpperMask[X0] = WildCard do
Inc(X0);
X := CharPos(WildCard, sUpperMask, X0);
if X = 0 then
Break;
99:
P := P1;
B := @sUpperMask[X0];
Q := X - X0;
if L < Q then
Exit;
while Q > 0 do
begin
C := B^;
if (C <> MaskChar) and (C <> P^) then
begin
Inc(P1);
Dec(L);
goto 99;
end;
Dec(Q);
Inc(B);
Inc(P);
end;
Dec(L, X - X0);
until False;
X := Length(sUpperMask);
if L >= X - X0 + 1 then
begin
P := Pointer(sUpperS);
Inc(P, Length(sUpperS) - 1);
while X >= X0 do
begin
C := sUpperMask[X];
if (C <> MaskChar) and (C <> P^) then
Exit;
Dec(X);
Dec(P);
end;
Result := True;
end;
end;
end.

View file

@ -513,7 +513,7 @@ begin
begin
frp:=fFileList.GetItem(i);
if (frp^.sName='..') then Continue;
if FileMaskEquate(frp^.sName, sMask) then
if G_ValidateWildText(frp^.sName, sMask) then
frp^.bSelected := bSelect;
end;
end;

View file

@ -1,297 +1,332 @@
{
Seksi Commander
----------------------------
Licence : GNU GPL v 2.0
Author : radek.cervinka@centrum.cz
Thread for search in files (called from frmSearchDlg)
contributors:
Alexander Koblov (Alexx2000@mail.ru)
}
unit uFindThread;
{$mode objfpc}{$H+}
interface
uses
Classes, StdCtrls, uDCUtils, SysUtils;
type
{ TFindThread }
TFindThread = class(TThread)
private
{ Private declarations }
FPathStart:String;
FItems: TStrings;
FFindInFiles:Boolean;
FStatus: TLabel;
FCurrent: TLabel;
FCurrentFile:String;
FFilesScaned:Integer;
FFoundFile:String;
FFileMask : String;
FAttributes: Cardinal;
FCaseSens:Boolean;
{Date search}
FIsDateFrom,
FIsDateTo : Boolean;
FDateFrom,
FDateTo : TDateTime;
(* File size search *)
FIsFileSizeFrom,
FIsFileSizeTo : Boolean;
FFileSizeFrom,
FFileSizeTo : Integer;
FFindData:String;
function CheckFileDate(Date : LongInt) : Boolean;
function CheckFileSize(FileSize : LongInt) : Boolean;
function CheckFile(const Folder : String; const sr : TSearchRec) : Boolean;
protected
procedure Execute; override;
public
constructor Create;
destructor Destroy; override;
procedure AddFile;
procedure WalkAdr(const sNewDir:String);
procedure UpDateProgress;
property FilterMask:String read FFileMask write FFileMask;
property PathStart:String read FPathStart write FPathStart;
property Items:TStrings write FItems;
property FindInFiles:Boolean write FFindInFiles;
property Status:TLabel read FStatus write FStatus;
property Current:TLabel read FCurrent write FCurrent; // label current file
property CaseSensitive:boolean read FCaseSens write FCaseSens;
property FindData:String read FFindData write FFindData;
(* Date search *)
property IsDateFrom:Boolean read FIsDateFrom write FIsDateFrom;
property IsDateTo:Boolean read FIsDateTo write FIsDateTo;
property DateFrom:TDateTime read FDateFrom write FDateFrom;
property DateTo:TDateTime read FDateTo write FDateTo;
(* File size search *)
property IsFileSizeFrom : Boolean read FIsFileSizeFrom write FIsFileSizeFrom;
property IsFileSizeTo : Boolean read FIsFileSizeTo write FIsFileSizeTo;
property FileSizeFrom : LongInt read FFileSizeFrom write FFileSizeFrom;
property FileSizeTo : LongInt read FFileSizeTo write FFileSizeTo;
property Attributes: Cardinal read FAttributes write FAttributes default
(faArchive or faReadonly or faHidden or faSysFile or faDirectory);
end;
implementation
uses
Dialogs, uLng{$IFNDEF WIN32}, uFindMmap, BaseUnix{$ENDIF};
{ TFindThread }
constructor TFindThread.Create;
begin
writeln('thread b');
inherited Create(True);
//FFilter:=TFilter.Create;
FCaseSens:=True;
FFilesScaned:=0;
FilterMask:='*';
{$IFDEF WIN32}
FPathStart:='C:\';
{$ELSE}
FPathStart:='/';
{$ENDIF}
FItems:=Nil;
end;
destructor TFindThread.Destroy;
begin
//if assigned(FFilter) then
//FreeAndNil(FFilter)
end;
procedure TFindThread.Execute;
var
sCurrDir:String;
begin
try
writeln('thread b2');
assert(Assigned(FItems),'assert:FItems is empty');
Synchronize(@UpDateProgress);
if FPathStart[length(FPathStart)]='/' then
Delete(FPathStart,length(FPathStart),1);
sCurrDir:=GetCurrentDir;
try
writeln('thread b',FPathStart);
WalkAdr(FPathStart);
finally
ChDir(sCurrDir);
end;
// MessageBeep(1000);
writeln('thread end');
except
on E:Exception do
ShowMessage(E.Message);
end;
end;
procedure TFindThread.AddFile;
begin
FItems.Add(FFoundFile);
end;
procedure TFindThread.UpDateProgress;
begin
FStatus.Caption:=Format(lngGetString(clngFindScaned),[FFilesScaned]);
FCurrent.Caption:=FCurrentFile;
end;
function FindInFile(const sFileName:String; sData: String; bCase:Boolean): Boolean;
{$IFDEF WIN32}
const
BufferSize = 4096;
var
fs: TFileStream;
lastPos, sDataLength,
OffsetPos: Cardinal;
Buffer: array[0..BufferSize-1] of Char;
Compare: function(Str1, Str2: PChar; MaxLen: SizeInt): SizeInt;
begin
Result := False;
if sData = '' then Exit;
if bCase then
Compare := @StrLIComp
else
Compare := @StrLComp;
sDataLength := Length(sData);
try
fs := TFileStream.Create(sFileName, fmOpenRead or fmShareDenyNone);
try
repeat
OffsetPos := fs.Read(Buffer, BufferSize) - sDataLength;
lastPos := 0;
while (not Result) and (lastPos <= OffsetPos) do
begin
Result := (Compare(PChar(sData), @Buffer[lastPos], sDataLength) = 0);
inc(lastPos);
end;
until fs.Position >= fs.Size;
except
end;
finally
fs.Free;
end;
end;
{$ELSE} // *nix
begin
Result := FindMmap(sFileName, sData, bCase);
end;
{$ENDIF}
function TFindThread.CheckFileDate(Date : LongInt) : Boolean;
var
DateTime: TDateTime;
begin
Result := True;
DateTime := FileDateToDateTime(Date);
if FIsDateFrom then
Result := (DateTime >= FDateFrom);
if (FIsDateTo and Result) then
Result := (DateTime <= FDateTo);
end;
function TFindThread.CheckFileSize(FileSize: LongInt): Boolean;
begin
Result := True;
if FIsFileSizeFrom then
Result := (FileSize >= FFileSizeFrom);
if (FIsFileSizeTo and Result) then
Result := (FileSize <= FFileSizeTo);
end;
function TFindThread.CheckFile(const Folder : String; const sr : TSearchRec) : Boolean;
begin
Result := True;
{$IFDEF WIN32}
(* This is hack *)
if not FileMaskEquate(sr.Name, FFileMask) then
begin
Result := False;
Exit;
end;
{$ENDIF}
if (FIsDateFrom or FIsDateTo) then
Result := CheckFileDate(sr.Time);
if (FIsFileSizeFrom or FIsFileSizeTo) and Result then
Result := CheckFileSize(sr.Size);
if (FFindInFiles and Result) then
Result := FindInFile(Folder + PathDelim + sr.Name, FFindData, FCaseSens);
end;
procedure TFindThread.WalkAdr(const sNewDir:String);
var
sr: TSearchRec;
Path : String;
begin
writeln(sNewDir);
if not SetCurrentDir(sNewDir) then Exit;
Path := sNewDir + PathDelim + FFileMask;
//WriteLN('Path = ', Path);
if FindFirst(Path, faAnyFile, sr)<>0 then Exit;
repeat
if (sr.Name='.') or (sr.Name='..') then Continue;
inc(FFilesScaned);
//writeln(sr.Name);
if CheckFile(sNewDir, sr) then
begin
fFoundFile:=sNewDir + PathDelim + sr.Name;
Synchronize(@AddFile);
end;
FCurrentFile:=sNewDir + PathDelim + sr.Name;
Synchronize(@UpDateProgress);
until (FindNext(sr)<>0)or terminated;
FindClose(sr);
{Search in sub folders}
if not Terminated then
begin
Path := sNewDir + PathDelim + '*';
WriteLN('Search in sub folders = ', Path);
if not Terminated and (FindFirst(Path, faDirectory, sr) = 0) then
repeat
if (sr.Name[1] <> '.') then
WalkAdr(sNewDir + PathDelim + sr.Name);
until Terminated or (FindNext(sr) <> 0);
FindClose(sr);
end;
end;
end.
{
Seksi Commander
----------------------------
Licence : GNU GPL v 2.0
Author : radek.cervinka@centrum.cz
Thread for search in files (called from frmSearchDlg)
contributors:
Alexander Koblov (Alexx2000@mail.ru)
}
unit uFindThread;
{$mode objfpc}{$H+}
interface
uses
Classes, StdCtrls, uDCUtils, SysUtils;
type
{ TFindThread }
TFindThread = class(TThread)
private
{ Private declarations }
FPathStart:String;
FItems: TStrings;
FIsNoThisText,
FFindInFiles:Boolean;
FStatus: TLabel;
FCurrent: TLabel;
FCurrentFile:String;
FFilesScaned:Integer;
FFoundFile:String;
FFileMask : String;
FAttributes: Cardinal;
FCaseSens:Boolean;
{Date search}
FIsDateFrom,
FIsDateTo : Boolean;
FDateTimeFrom,
FDateTimeTo : TDateTime;
{Time search}
FIsTimeFrom,
FIsTimeTo : Boolean;
(* File size search *)
FIsFileSizeFrom,
FIsFileSizeTo : Boolean;
FFileSizeFrom,
FFileSizeTo : Int64;
FFindData:String;
function CheckFileDate(DT : LongInt) : Boolean;
function CheckFileSize(FileSize : Int64) : Boolean;
function CheckFile(const Folder : String; const sr : TSearchRec) : Boolean;
protected
procedure Execute; override;
public
constructor Create;
destructor Destroy; override;
procedure AddFile;
procedure WalkAdr(const sNewDir:String);
procedure UpDateProgress;
property FilterMask:String read FFileMask write FFileMask;
property PathStart:String read FPathStart write FPathStart;
property Items:TStrings write FItems;
property FindInFiles:Boolean write FFindInFiles;
property IsNoThisText:Boolean write FIsNoThisText default False;
property Status:TLabel read FStatus write FStatus;
property Current:TLabel read FCurrent write FCurrent; // label current file
property CaseSensitive:boolean read FCaseSens write FCaseSens;
property FindData:String read FFindData write FFindData;
(* Date search *)
property IsDateFrom:Boolean read FIsDateFrom write FIsDateFrom;
property IsDateTo:Boolean read FIsDateTo write FIsDateTo;
property DateTimeFrom:TDateTime read FDateTimeFrom write FDateTimeFrom;
property DateTimeTo:TDateTime read FDateTimeTo write FDateTimeTo;
(* Time search *)
property IsTimeFrom:Boolean read FIsTimeFrom write FIsTimeFrom;
property IsTimeTo:Boolean read FIsTimeTo write FIsTimeTo;
(* File size search *)
property IsFileSizeFrom : Boolean read FIsFileSizeFrom write FIsFileSizeFrom;
property IsFileSizeTo : Boolean read FIsFileSizeTo write FIsFileSizeTo;
property FileSizeFrom : Int64 read FFileSizeFrom write FFileSizeFrom;
property FileSizeTo : Int64 read FFileSizeTo write FFileSizeTo;
property Attributes: Cardinal read FAttributes write FAttributes default
(faArchive or faReadonly or faHidden or faSysFile or faDirectory);
end;
implementation
uses
Dialogs, uLng{$IFNDEF WIN32}, uFindMmap, BaseUnix{$ENDIF};
{ TFindThread }
constructor TFindThread.Create;
begin
writeln('thread b');
inherited Create(True);
//FFilter:=TFilter.Create;
FCaseSens:=True;
FFilesScaned:=0;
FilterMask:='*';
{$IFDEF WIN32}
FPathStart:='C:\';
{$ELSE}
FPathStart:='/';
{$ENDIF}
FItems:=Nil;
FIsDateFrom := False;
FIsDateTo := False;
FIsFileSizeFrom := False;
FIsFileSizeTo := False;
end;
destructor TFindThread.Destroy;
begin
//if assigned(FFilter) then
//FreeAndNil(FFilter)
end;
procedure TFindThread.Execute;
var
sCurrDir:String;
begin
try
writeln('thread b2');
assert(Assigned(FItems),'assert:FItems is empty');
Synchronize(@UpDateProgress);
if FPathStart[length(FPathStart)]='/' then
Delete(FPathStart,length(FPathStart),1);
sCurrDir:=GetCurrentDir;
try
writeln('thread b',FPathStart);
WalkAdr(FPathStart);
finally
ChDir(sCurrDir);
end;
// MessageBeep(1000);
writeln('thread end');
except
on E:Exception do
ShowMessage(E.Message);
end;
end;
procedure TFindThread.AddFile;
begin
FItems.Add(FFoundFile);
end;
procedure TFindThread.UpDateProgress;
begin
FStatus.Caption:=Format(lngGetString(clngFindScaned),[FFilesScaned]);
FCurrent.Caption:=FCurrentFile;
end;
function FindInFile(const sFileName:String; sData: String; bCase:Boolean): Boolean;
{$IFDEF WIN32}
const
BufferSize = 4096;
var
fs: TFileStream;
lastPos, sDataLength,
OffsetPos: Cardinal;
Buffer: array[0..BufferSize-1] of Char;
Compare: function(Str1, Str2: PChar; MaxLen: SizeInt): SizeInt;
begin
Result := False;
if sData = '' then Exit;
if bCase then
Compare := @StrLIComp
else
Compare := @StrLComp;
sDataLength := Length(sData);
try
fs := TFileStream.Create(sFileName, fmOpenRead or fmShareDenyNone);
try
repeat
OffsetPos := fs.Read(Buffer, BufferSize) - sDataLength;
lastPos := 0;
while (not Result) and (lastPos <= OffsetPos) do
begin
Result := (Compare(PChar(sData), @Buffer[lastPos], sDataLength) = 0);
inc(lastPos);
end;
until fs.Position >= fs.Size;
except
end;
finally
fs.Free;
end;
end;
{$ELSE} // *nix
begin
Result := FindMmap(sFileName, sData, bCase);
end;
{$ENDIF}
function TFindThread.CheckFileDate(DT : LongInt) : Boolean;
var
DateTime: TDateTime;
begin
Result := True;
DateTime := FileDateToDateTime(DT);
(* Check date from *)
if FIsDateFrom then
Result := (Int(DateTime) >= Int(FDateTimeFrom));
(* Check time to *)
if (FIsDateTo and Result) then
Result := (Int(DateTime) <= Int(FDateTimeTo));
(* Check time from *) //TODO Ñäåëàòü ñåêóíäû
if (FIsTimeFrom and Result) then
Result := ((Trunc(Frac(DateTime) * 10000000) / 10000000) >= (Trunc(Frac(FDateTimeFrom) * 1000) / 1000));
WriteLN('Time From = ', FloatToStr(FDateTimeFrom), ' File time = ', FloatToStr(DateTime), ' Result = ', BoolToStr(Result));
(* Check time to *)
if (FIsTimeTo and Result) then
Result := ((Trunc(Frac(DateTime) * 10000000) / 10000000) <= (Trunc(Frac(FDateTimeTo) * 1000) / 1000));
//WriteLN('Time To = ', FloatToStr(FDateTimeTo), ' File time = ', FloatToStr(DateTime), ' Result = ', BoolToStr(Result));
end;
function TFindThread.CheckFileSize(FileSize: Int64): Boolean;
begin
Result := True;
if FIsFileSizeFrom then
Result := (FileSize >= FFileSizeFrom);
//WriteLN('After From', FileSize, '-', FFileSizeFrom, BoolToStr(Result));
if (FIsFileSizeTo and Result) then
Result := (FileSize <= FFileSizeTo);
//WriteLN('After To', FileSize, '-', FFileSizeTo, BoolToStr(Result));
end;
function TFindThread.CheckFile(const Folder : String; const sr : TSearchRec) : Boolean;
begin
Result := True;
{$IFDEF WIN32}
(* This is hack *)
//WriteLN('File = ', sr.Name);
if not G_ValidateWildText(sr.Name, FFileMask) then
begin
Result := False;
Exit;
end;
{$ENDIF}
if (FIsDateFrom or FIsDateTo or FIsTimeFrom or FIsTimeTo) then
Result := CheckFileDate(sr.Time);
if (FIsFileSizeFrom or FIsFileSizeTo) and Result then
Result := CheckFileSize(sr.Size);
if (FFindInFiles and Result) then
begin
Result := FindInFile(Folder + PathDelim + sr.Name, FFindData, FCaseSens);
if FIsNoThisText then
Result := not Result;
end;
end;
procedure TFindThread.WalkAdr(const sNewDir:String);
var
sr: TSearchRec;
Path : String;
begin
writeln(sNewDir);
if not SetCurrentDir(sNewDir) then Exit;
Path := sNewDir + PathDelim + FFileMask;
//WriteLN('Path = ', Path);
if FindFirst(Path, faAnyFile, sr) = 0 then
repeat
if (sr.Name='.') or (sr.Name='..') then Continue;
inc(FFilesScaned);
//writeln(sr.Name);
if CheckFile(sNewDir, sr) then
begin
fFoundFile:=sNewDir + PathDelim + sr.Name;
Synchronize(@AddFile);
end;
FCurrentFile:=sNewDir + PathDelim + sr.Name;
Synchronize(@UpDateProgress);
until (FindNext(sr)<>0)or terminated;
FindClose(sr);
{Search in sub folders}
if not Terminated then
begin
Path := sNewDir + PathDelim + '*';
WriteLN('Search in sub folders = ', Path);
if not Terminated and (FindFirst(Path, faDirectory, sr) = 0) then
repeat
if (sr.Name[1] <> '.') then
WalkAdr(sNewDir + PathDelim + sr.Name);
until Terminated or (FindNext(sr) <> 0);
FindClose(sr);
end;
end;
end.