Fix: bug [ 1658672 ] and bug [ 1658670 ]

This commit is contained in:
Alexander Koblov 2007-02-25 11:32:30 +00:00
commit e7d8fcd23a
20 changed files with 1597 additions and 1194 deletions

View file

@ -1,2 +1,2 @@
strip --strip-all doublecmd.exe
upx --9 doublecmd.exe
upx -9 doublecmd.exe

View file

@ -32,11 +32,9 @@ uses
uHighlighterProcs,
fEditor,
uMoveThread,
uFilter,
fMsg,
uSpaceThread,
fHotDir,
uConv,
fHardLink,
fFindView,
uPathHistory,
@ -55,7 +53,7 @@ uses
fCompareFiles,
dmHigh,
uPixMapManager, uVFS_,
KASComp, fbtnchangedlg, fconfigtoolbar, uWCXprototypes;
KASComp, fbtnchangedlg, fconfigtoolbar, uWCXprototypes, uDCUtils;
{$IFDEF WIN32}
{$R XP.res}

View file

@ -1,7 +1,7 @@
object frmFindDlg: TfrmFindDlg
ActiveControl = pgcSearch
ActiveControl = cmbFindFileMask
Caption = 'frmFindDlg'
ClientHeight = 513
ClientHeight = 461
ClientWidth = 495
KeyPreview = True
OnClose = frmFindDlgClose
@ -13,11 +13,11 @@ object frmFindDlg: TfrmFindDlg
Position = poScreenCenter
TextHeight = 16
HorzScrollBar.Page = 494
VertScrollBar.Page = 512
VertScrollBar.Page = 460
VertScrollBar.Range = 316
Left = 305
Height = 513
Top = 428
Left = 276
Height = 461
Top = 17
Width = 495
object Splitter1: TSplitter
Align = alTop
@ -32,59 +32,61 @@ object frmFindDlg: TfrmFindDlg
object Panel2: TPanel
Align = alTop
BevelOuter = bvNone
ClientHeight = 313
ClientHeight = 281
ClientWidth = 495
FullRepaint = False
TabOrder = 0
Height = 313
Height = 281
Top = 1
Width = 495
object pgcSearch: TPageControl
ActivePage = tsStandard
Align = alClient
Anchors = [akTop, akLeft, akRight]
TabIndex = 0
TabOrder = 0
Height = 313
Width = 495
Height = 273
Width = 400
object tsStandard: TTabSheet
Caption = 'Standard'
ClientHeight = 287
ClientWidth = 487
Height = 287
Width = 487
ClientHeight = 247
ClientWidth = 392
Height = 247
Width = 392
object lblFindPathStart: TLabel
Caption = 'FileDir'
Color = clNone
ParentColor = False
Left = 8
Height = 14
Top = 8
Top = 57
Width = 30
end
object lblFindFileMask: TLabel
Caption = 'FileMask'
Color = clNone
ParentColor = False
Left = 8
Height = 14
Top = 64
Top = 1
Width = 41
end
object edtFindPathStart: TEdit
Anchors = [akTop, akLeft, akRight]
TabOrder = 0
TabOrder = 1
Left = 8
Height = 24
Top = 32
Width = 282
Top = 81
Width = 316
end
object btnSelDir: TButton
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 2
Caption = '...'
OnClick = btnSelDirClick
TabOrder = 1
Left = 284
TabOrder = 2
Left = 332
Height = 25
Top = 32
Top = 80
Width = 25
end
object cmbFindFileMask: TComboBox
@ -93,39 +95,32 @@ object frmFindDlg: TfrmFindDlg
ItemHeight = 18
MaxLength = 0
ParentCtl3D = False
TabOrder = 4
TabOrder = 0
Text = '*'
Left = 8
Height = 21
Top = 88
Width = 306
end
object cbFindInFile: TCheckBox
AllowGrayed = True
Caption = 'Find in file'
OnClick = cbFindInFileClick
TabOrder = 2
Height = 13
Top = 120
Width = 67
Top = 25
Width = 316
end
object gbFindData: TGroupBox
Anchors = [akTop, akLeft, akRight]
Caption = 'Find Data'
ClientHeight = 87
ClientWidth = 313
ClientHeight = 62
ClientWidth = 368
Enabled = False
ParentCtl3D = False
TabOrder = 3
Height = 105
Top = 152
Width = 317
Left = 8
Height = 80
Top = 145
Width = 372
object cbCaseSens: TCheckBox
AllowGrayed = True
Caption = 'Case sensitive'
TabOrder = 0
Left = 16
Left = 18
Height = 13
Top = 56
Top = 40
Width = 88
end
object edtFindText: TEdit
@ -133,30 +128,206 @@ object frmFindDlg: TfrmFindDlg
TabOrder = 1
Left = 16
Height = 24
Top = 24
Width = 273
Top = 8
Width = 324
end
object cbNoThisText: TCheckBox
Caption = 'Find files NOT containing the text'
TabOrder = 2
Left = 154
Height = 13
Top = 40
Width = 177
end
end
object cbFindInFile: TCheckBox
AllowGrayed = True
Caption = 'Find in file'
OnClick = cbFindInFileClick
TabOrder = 4
Left = 12
Height = 13
Top = 121
Width = 67
end
end
object tsAdvanced: TTabSheet
Caption = 'Advanced'
ClientHeight = 287
ClientWidth = 487
ClientHeight = 247
ClientWidth = 392
ImageIndex = 1
Height = 287
Width = 487
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
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 = 1
Color = clBtnFace
Enabled = False
TabOrder = 1
Text = '23.02.2007'
Left = 164
Height = 23
Top = 41
Width = 80
end
object cbDateFrom: TCheckBox
Caption = 'Date From:'
OnChange = cbDateFromChange
TabOrder = 2
Left = 4
Height = 13
Top = 22
Width = 72
end
object cbNotOlderThan: TCheckBox
Caption = 'Not older than:'
TabOrder = 3
Left = 4
Height = 13
Top = 160
Width = 90
end
object SpinEdit1: TSpinEdit
TabOrder = 4
Left = 100
Height = 20
Top = 153
Width = 112
end
object ComboBox1: TComboBox
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
MaxLength = 0
TabOrder = 5
Text = 'ComboBox1'
Left = 260
Height = 21
Top = 153
Width = 104
end
object cbFileSizeFrom: TCheckBox
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
end
object cbFileSizeTo: TCheckBox
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
Width = 106
end
object seFileSizeTo: TSpinEdit
Enabled = False
TabOrder = 10
Left = 164
Height = 20
Top = 105
Width = 110
end
end
end
object btnStart: TButton
object btnClose: TButton
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 2
Caption = '&Start'
Default = True
OnClick = btnStartClick
Caption = '&Close'
OnClick = btnCloseClick
TabOrder = 1
Left = 376
Left = 408
Height = 25
Top = 87
Top = 71
Width = 75
end
object btnStop: TButton
@ -167,42 +338,43 @@ object frmFindDlg: TfrmFindDlg
Enabled = False
OnClick = btnStopClick
TabOrder = 2
Left = 376
Left = 408
Height = 25
Top = 151
Top = 103
Width = 75
end
object btnClose: TButton
object btnStart: TButton
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 2
Caption = '&Close'
OnClick = btnCloseClick
Caption = '&Start'
Default = True
OnClick = btnStartClick
TabOrder = 3
Left = 376
Left = 408
Height = 25
Top = 119
Top = 39
Width = 75
end
end
object Panel1: TPanel
Align = alClient
BevelOuter = bvNone
ClientHeight = 199
ClientHeight = 179
ClientWidth = 495
FullRepaint = False
TabOrder = 1
Height = 199
Top = 314
Height = 179
Top = 282
Width = 495
object Panel3: TPanel
Align = alTop
BevelInner = bvRaised
BevelOuter = bvLowered
ClientHeight = 65
ClientHeight = 54
ClientWidth = 495
FullRepaint = False
TabOrder = 0
Height = 65
Height = 54
Width = 495
object lblStatus: TLabel
Caption = 'lblStatus'
@ -213,9 +385,9 @@ object frmFindDlg: TfrmFindDlg
Font.Pitch = fpVariable
Font.Style = [fsBold]
ParentColor = False
Left = 392
Left = 8
Height = 13
Top = 12
Top = 30
Width = 44
end
object lblCurrent: TLabel
@ -239,14 +411,14 @@ object frmFindDlg: TfrmFindDlg
OnDblClick = lsFoundedFilesDblClick
PopupMenu = PopupMenuFind
TabOrder = 1
Height = 134
Top = 65
Height = 125
Top = 54
Width = 495
end
end
object PopupMenuFind: TPopupMenu
left = 272
top = 400
left = 152
top = 408
object miShowInViewer: TMenuItem
Caption = 'Show In Viewer'
OnClick = miShowInViewerClick

View file

@ -1,73 +1,126 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TfrmFindDlg','FORMDATA',[
'TPF0'#11'TfrmFindDlg'#10'frmFindDlg'#13'ActiveControl'#7#9'pgcSearch'#7'Capt'
+'ion'#6#10'frmFindDlg'#12'ClientHeight'#3#1#2#11'ClientWidth'#3#239#1#10'Key'
+'Preview'#9#7'OnClose'#7#15'frmFindDlgClose'#12'OnCloseQuery'#7#14'FormClose'
+'Query'#8'OnCreate'#7#10'FormCreate'#10'OnKeyPress'#7#12'FormKeyPress'#6'OnS'
+'how'#7#14'frmFindDlgShow'#13'PixelsPerInch'#2'`'#8'Position'#7#14'poScreenC'
+'enter'#10'TextHeight'#2#16#18'HorzScrollBar.Page'#3#238#1#18'VertScrollBar.'
+'Page'#3#0#2#19'VertScrollBar.Range'#3'<'#1#4'Left'#3'1'#1#6'Height'#3#1#2#3
+'Top'#3#172#1#5'Width'#3#239#1#0#9'TSplitter'#9'Splitter1'#5'Align'#7#5'alTo'
+'p'#6'Cursor'#7#8'crVSplit'#6'Height'#2#1#5'Width'#3#239#1#12'ResizeAnchor'#7
+#5'akTop'#6'Cursor'#7#8'crVSplit'#6'Height'#2#1#5'Width'#3#239#1#0#0#6'TPane'
+'l'#6'Panel2'#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'
+#3'9'#1#11'ClientWidth'#3#239#1#11'FullRepaint'#8#8'TabOrder'#2#0#6'Height'#3
+'9'#1#3'Top'#2#1#5'Width'#3#239#1#0#12'TPageControl'#9'pgcSearch'#10'ActiveP'
+'age'#7#10'tsStandard'#5'Align'#7#8'alClient'#7'Anchors'#11#5'akTop'#6'akLef'
+'t'#7'akRight'#0#8'TabIndex'#2#0#8'TabOrder'#2#0#6'Height'#3'9'#1#5'Width'#3
+#239#1#0#9'TTabSheet'#10'tsStandard'#7'Caption'#6#8'Standard'#12'ClientHeigh'
+'t'#3#31#1#11'ClientWidth'#3#231#1#6'Height'#3#31#1#5'Width'#3#231#1#0#6'TLa'
+'bel'#16'lblFindPathStart'#7'Caption'#6#7'FileDir'#5'Color'#7#6'clNone'#11'P'
+'arentColor'#8#6'Height'#2#14#3'Top'#2#8#5'Width'#2#30#0#0#6'TLabel'#15'lblF'
+'indFileMask'#7'Caption'#6#8'FileMask'#5'Color'#7#6'clNone'#11'ParentColor'#8
+#6'Height'#2#14#3'Top'#2'@'#5'Width'#2')'#0#0#5'TEdit'#16'edtFindPathStart'#7
+'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#0#6'Height'#2#24#3
+'Top'#2' '#5'Width'#3#26#1#0#0#7'TButton'#9'btnSelDir'#7'Anchors'#11#5'akTop'
+#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#3'...'#7'OnClic'
+'k'#7#14'btnSelDirClick'#8'TabOrder'#2#1#4'Left'#3#28#1#6'Height'#2#25#3'Top'
+#2' '#5'Width'#2#25#0#0#9'TComboBox'#15'cmbFindFileMask'#7'Anchors'#11#5'akT'
+'op'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactEndOfLineComplet'
+'e'#20'cbactSearchAscending'#0#10'ItemHeight'#2#18#9'MaxLength'#2#0#11'Paren'
+'tCtl3D'#8#8'TabOrder'#2#4#4'Text'#6#1'*'#6'Height'#2#21#3'Top'#2'X'#5'Width'
+#3'2'#1#0#0#9'TCheckBox'#12'cbFindInFile'#11'AllowGrayed'#9#7'Caption'#6#12
+'Find in file'#7'OnClick'#7#17'cbFindInFileClick'#8'TabOrder'#2#2#6'Height'#2
+#13#3'Top'#2'x'#5'Width'#2'C'#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
+'W'#11'ClientWidth'#3'9'#1#7'Enabled'#8#11'ParentCtl3D'#8#8'TabOrder'#2#3#6
+'Height'#2'i'#3'Top'#3#152#0#5'Width'#3'='#1#0#9'TCheckBox'#10'cbCaseSens'#11
+'AllowGrayed'#9#7'Caption'#6#14'Case sensitive'#8'TabOrder'#2#0#4'Left'#2#16
+#6'Height'#2#13#3'Top'#2'8'#5'Width'#2'X'#0#0#5'TEdit'#11'edtFindText'#7'Anc'
+'hors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#1#4'Left'#2#16#6'Hei'
+'ght'#2#24#3'Top'#2#24#5'Width'#3#17#1#0#0#0#0#9'TTabSheet'#10'tsAdvanced'#7
+'Caption'#6#8'Advanced'#12'ClientHeight'#3#31#1#11'ClientWidth'#3#231#1#10'I'
+'mageIndex'#2#1#6'Height'#3#31#1#5'Width'#3#231#1#0#0#0#7'TButton'#8'btnStar'
+'t'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#2#7
+'Caption'#6#6'&Start'#7'Default'#9#7'OnClick'#7#13'btnStartClick'#8'TabOrder'
+#2#1#4'Left'#3'x'#1#6'Height'#2#25#3'Top'#2'W'#5'Width'#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'btnStopCl'
+'ick'#8'TabOrder'#2#2#4'Left'#3'x'#1#6'Height'#2#25#3'Top'#3#151#0#5'Width'#2
+'K'#0#0#7'TButton'#8'btnClose'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'Border'
+'Spacing.InnerBorder'#2#2#7'Caption'#6#6'&Close'#7'OnClick'#7#13'btnCloseCli'
+'ck'#8'TabOrder'#2#3#4'Left'#3'x'#1#6'Height'#2#25#3'Top'#2'w'#5'Width'#2'K'
+#0#0#0#6'TPanel'#6'Panel1'#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'
+#12'ClientHeight'#3#199#0#11'ClientWidth'#3#239#1#11'FullRepaint'#8#8'TabOrd'
+'er'#2#1#6'Height'#3#199#0#3'Top'#3':'#1#5'Width'#3#239#1#0#6'TPanel'#6'Pane'
+'l3'#5'Align'#7#5'alTop'#10'BevelInner'#7#8'bvRaised'#10'BevelOuter'#7#9'bvL'
+'owered'#12'ClientHeight'#2'A'#11'ClientWidth'#3#239#1#11'FullRepaint'#8#8'T'
+'abOrder'#2#0#6'Height'#2'A'#5'Width'#3#239#1#0#6'TLabel'#9'lblStatus'#7'Cap'
+'tion'#6#9'lblStatus'#5'Color'#7#6'clNone'#10'Font.Color'#7#7'clBlack'#11'Fo'
+'nt.Height'#2#13#9'Font.Name'#6#15'adobe-helvetica'#10'Font.Pitch'#7#10'fpVa'
+'riable'#10'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#4'Left'#3#136#1#6'H'
+'eight'#2#13#3'Top'#2#12#5'Width'#2','#0#0#6'TLabel'#10'lblCurrent'#7'Captio'
+'n'#6#10'lblCurrent'#5'Color'#7#6'clNone'#10'Font.Color'#7#7'clBlack'#11'Fon'
+'t.Height'#2#13#9'Font.Name'#6#15'adobe-helvetica'#10'Font.Pitch'#7#10'fpVar'
+'iable'#10'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#4'Left'#2#8#6'Height'
+#2#13#3'Top'#2#12#5'Width'#2'1'#0#0#0#8'TListBox'#14'lsFoundedFiles'#5'Align'
,#7#8'alClient'#11'MultiSelect'#9#10'OnDblClick'#7#22'lsFoundedFilesDblClick'
+#9'PopupMenu'#7#13'PopupMenuFind'#8'TabOrder'#2#1#6'Height'#3#134#0#3'Top'#2
+'A'#5'Width'#3#239#1#0#0#0#10'TPopupMenu'#13'PopupMenuFind'#4'left'#3#16#1#3
+'top'#3#144#1#0#9'TMenuItem'#14'miShowInViewer'#7'Caption'#6#14'Show In View'
+'er'#7'OnClick'#7#19'miShowInViewerClick'#0#0#0#0
'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#20#1#6'Height'#3
+#205#1#3'Top'#2#17#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'ResizeAnch'
+'or'#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'ClientH'
+'eight'#3#25#1#11'ClientWidth'#3#239#1#11'FullRepaint'#8#8'TabOrder'#2#0#6'H'
+'eight'#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'TTabShe'
+'et'#10'tsStandard'#7'Caption'#6#8'Standard'#12'ClientHeight'#3#247#0#11'Cli'
+'entWidth'#3#136#1#6'Height'#3#247#0#5'Width'#3#136#1#0#6'TLabel'#16'lblFind'
+'PathStart'#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'lblFind'
+'FileMask'#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'edtFindPa'
+'thStart'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#1#4'Le'
+'ft'#2#8#6'Height'#2#24#3'Top'#2'Q'#5'Width'#3'<'#1#0#0#7'TButton'#9'btnSelD'
+'ir'#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'cmbFindFi'
+'leMask'#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#0#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#1#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#2#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#3#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
]);

View file

@ -13,17 +13,36 @@ contributors:
{ $threading on}
unit fFindDlg;
{$mode objfpc}{$H+}
{ $DEFINE NOFAKETHREAD}
{$DEFINE NOFAKETHREAD}
interface
uses
LResources,
SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, uFindThread, Menus,
fLngForm;
fLngForm, Calendar, EditBtn, Spin;
type
{ TfrmFindDlg }
TfrmFindDlg = class(TfrmLng)
btnClose: TButton;
btnStart: TButton;
btnStop: TButton;
cbFindInFile: TCheckBox;
cbNoThisText: TCheckBox;
cbDateFrom: TCheckBox;
cbNotOlderThan: TCheckBox;
cbFileSizeFrom: TCheckBox;
cbDateTo: TCheckBox;
cbFileSizeTo: TCheckBox;
ComboBox1: TComboBox;
deDateFrom: TDateEdit;
deDateTo: TDateEdit;
SpinEdit1: TSpinEdit;
seFileSizeFrom: TSpinEdit;
seFileSizeTo: TSpinEdit;
Splitter1: TSplitter;
Panel2: TPanel;
pgcSearch: TPageControl;
@ -33,7 +52,6 @@ type
btnSelDir: TButton;
lblFindFileMask: TLabel;
cmbFindFileMask: TComboBox;
cbFindInFile: TCheckBox;
gbFindData: TGroupBox;
cbCaseSens: TCheckBox;
edtFindText: TEdit;
@ -41,15 +59,16 @@ type
Panel1: TPanel;
Panel3: TPanel;
lsFoundedFiles: TListBox;
btnStart: TButton;
btnStop: TButton;
lblStatus: TLabel;
btnClose: TButton;
lblCurrent: TLabel;
PopupMenuFind: TPopupMenu;
miShowInViewer: TMenuItem;
procedure btnSelDirClick(Sender: TObject);
procedure btnStartClick(Sender: TObject);
procedure cbDateFromChange(Sender: TObject);
procedure cbDateToChange(Sender: TObject);
procedure cbFileSizeFromChange(Sender: TObject);
procedure cbFileSizeToChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
@ -82,7 +101,7 @@ uses
procedure ShowFindDlg(const sActPath:String);
begin
if not assigned (frmFindDlg) then
frmFindDlg:=TfrmFindDlg.Create(Application);
frmFindDlg:=TfrmFindDlg.Create(nil);
frmFindDlg.Show;
frmFindDlg.BringToFront;
end;
@ -121,6 +140,10 @@ begin
ShowMessage(Format(lngGetString(clngFindDirNoEx),[edtFindPathStart.Text]));
Exit;
end;
//Panel1.Visible := True;
//Height := Panel2.Height + Panel1.Height;
lsFoundedFiles.Items.Clear;
btnStop.Enabled:=True;
btnStart.Enabled:=False;
@ -134,6 +157,28 @@ begin
FindInFiles:=cbFindInFile.Checked;
FindData:=edtFindText.Text;
CaseSensitive:=cbCaseSens.Checked;
(* Date search *)
if cbDateFrom.Checked then
begin
IsDateFrom := True;
DateFrom := deDateFrom.Date;
end;
if cbDateTo.Checked then
begin
IsDateTo := True;
DateTo := deDateTo.Date;
end;
(* File size search *)
if cbFileSizeFrom.Checked then
begin
IsFileSizeFrom := True;
FileSizeFrom := seFileSizeFrom.Value;
end;
if cbFileSizeTo.Checked then
begin
IsFileSizeTo := True;
FileSizeTo := seFileSizeTo.Value;
end;
Status:=lblStatus;
Current:=lblCurrent;
writeln('thread a');
@ -150,7 +195,27 @@ begin
//ThreadTerminate(self); //remove if thread is Ok
{$ENDIF}
writeln('thread a2');
end;
procedure TfrmFindDlg.cbDateFromChange(Sender: TObject);
begin
deDateFrom.Enabled := cbDateFrom.Checked;
end;
procedure TfrmFindDlg.cbDateToChange(Sender: TObject);
begin
deDateTo.Enabled := cbDateTo.Checked;
end;
procedure TfrmFindDlg.cbFileSizeFromChange(Sender: TObject);
begin
seFileSizeFrom.Enabled := cbFileSizeFrom.Checked;
end;
procedure TfrmFindDlg.cbFileSizeToChange(Sender: TObject);
begin
seFileSizeTo.Enabled := cbFileSizeTo.Checked;
end;
procedure TfrmFindDlg.ThreadTerminate(Sender:TObject);
@ -173,6 +238,8 @@ begin
edtFindPathStart.Text:=GetCurrentDir;
lblCurrent.Caption:='';
lblStatus.Caption:='';
//Panel1.Visible := False;
//Height := Panel2.Height + 4;
end;
procedure TfrmFindDlg.btnStopClick(Sender: TObject);

View file

@ -1,11 +1,14 @@
object frmLng: TfrmLng
Caption = 'frmLng'
ClientHeight = 344
ClientWidth = 551
OnCreate = FormCreate
PixelsPerInch = 96
PixelsPerInch = 78
TextHeight = 16
HorzScrollBar.Page = 550
VertScrollBar.Page = 343
Left = 444
Height = 344
Top = 539
Top = 446
Width = 551
end

View file

@ -1,8 +1,8 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TfrmLng','FORMDATA',[
'TPF0'#7'TfrmLng'#6'frmLng'#7'Caption'#6#6'frmLng'#8'OnCreate'#7#10'FormCreat'
+'e'#13'PixelsPerInch'#2'`'#10'TextHeight'#2#16#18'HorzScrollBar.Page'#3'&'#2
+#18'VertScrollBar.Page'#3'W'#1#6'Height'#3'X'#1#3'Top'#3#27#2#5'Width'#3''''
+#2#0#0
]);
LazarusResources.Add('TfrmLng','FORMDATA',[
'TPF0'#7'TfrmLng'#6'frmLng'#7'Caption'#6#6'frmLng'#12'ClientHeight'#3'X'#1#11
+'ClientWidth'#3''''#2#8'OnCreate'#7#10'FormCreate'#13'PixelsPerInch'#2'N'#10
+'TextHeight'#2#16#18'HorzScrollBar.Page'#3'&'#2#18'VertScrollBar.Page'#3'W'#1
+#4'Left'#3#188#1#6'Height'#3'X'#1#3'Top'#3#190#1#5'Width'#3''''#2#0#0
]);

View file

@ -2,7 +2,7 @@
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'
+'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'
@ -10,10 +10,10 @@ LazarusResources.Add('TfrmMain','FORMDATA',[
+'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#191#1#6'Height'#3'P'#1#3'Top'#3
+'%'#2#5'Width'#3#13#2#0#6'TPanel'#9'pnlButton'#5'Align'#7#5'alTop'#12'Client'
+'Height'#2#22#11'ClientWidth'#3#13#2#11'FullRepaint'#8#8'TabOrder'#2#0#7'Vis'
+'ible'#8#6'Height'#2#22#3'Top'#2#23#5'Width'#3#13#2#0#0#6'TPanel'#7'pnlDisk'
+';'#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'
@ -27,7 +27,7 @@ LazarusResources.Add('TfrmMain','FORMDATA',[
+'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#251
+'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'
@ -54,16 +54,16 @@ LazarusResources.Add('TfrmMain','FORMDATA',[
+'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#182#0#11'ClientWidth'#3#13#2#11'FullRepaint'#8
+#8'TabOrder'#2#3#7'TabStop'#9#6'Height'#3#182#0#3'Top'#2'E'#5'Width'#3#13#2#0
+'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#180#0#3'Top'#2#1#5'Width'#3#135#1#0#0#9'TSplitter'#9'Splitter1'#6
+'Height'#3#180#0#11'ResizeStyle'#7#6'rsLine'#5'Width'#2#4#6'Cursor'#7#8'crHS'
+'plit'#4'Left'#3#136#1#6'Height'#3#180#0#3'Top'#2#1#5'Width'#2#4#0#0#9'TNote'
+'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#180#0#3'Top'#2#1#5'Width'#3#128#0#0#0#0#11'TKAStoolBar'#11'MainTo'
+'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'

View file

@ -1,117 +1,110 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TfrmOptions','FORMDATA',[
'TPF0'#241#11'TfrmOptions'#10'frmOptions'#4'Left'#3'*'#1#6'Height'#3'8'#1#3'T'
+'op'#3#197#0#5'Width'#3#198#1#18'HorzScrollBar.Page'#3#197#1#18'VertScrollBa'
+'r.Page'#3'7'#1#19'VertScrollBar.Range'#2')'#13'ActiveControl'#7#12'PageCont'
+'rol1'#11'BorderIcons'#11#12'biSystemMenu'#10'biMinimize'#0#11'BorderStyle'#7
+#8'bsSingle'#7'Caption'#6#7'Options'#8'Position'#7#16'poMainFormCenter'#0#12
+'TPageControl'#12'PageControl1'#6'Height'#3#16#1#5'Width'#3#198#1#10'ActiveP'
+'age'#7#9'TabSheet1'#5'Align'#7#8'alClient'#8'TabIndex'#2#4#8'TabOrder'#2#0#0
+#9'TTabSheet'#5'tsLng'#7'Caption'#6#8'Language'#0#8'TListBox'#7'lngList'#6'H'
+'eight'#3#242#0#5'Width'#3#194#1#5'Align'#7#8'alClient'#8'TabOrder'#2#0#8'To'
+'pIndex'#2#255#0#0#0#9'TTabSheet'#7'tsBehav'#7'Caption'#6#9'Behaviour'#10'Im'
+'ageIndex'#2#1#0#6'TLabel'#7'lblTerm'#4'Left'#2#8#6'Height'#2#13#3'Top'#2#16
+#5'Width'#2'3'#7'Caption'#6#9'Terminal:'#5'Color'#7#6'clNone'#11'ParentColor'
+#8#0#0#6'TLabel'#10'lblRunTerm'#4'Left'#2#8#6'Height'#2#13#3'Top'#2'0'#5'Wid'
+'th'#2'I'#7'Caption'#6#13'Run terminal:'#5'Color'#7#6'clNone'#11'ParentColor'
+#8#0#0#5'TEdit'#7'edtTerm'#4'Left'#2'`'#6'Height'#2#24#3'Top'#2#8#5'Width'#3
+'9'#1#8'TabOrder'#2#0#4'Text'#6'%/usr/X11R6/bin/xterm -e bash -i -c %s'#0#0#9
+'TGroupBox'#2'gb'#4'Left'#2#8#6'Height'#3#148#0#3'Top'#2'P'#5'Width'#3#225#0
+#11'ParentCtl3D'#8#8'TabOrder'#2#2#0#9'TCheckBox'#11'cbDirSelect'#4'Left'#2#8
+#6'Height'#2#24#3'Top'#2#253#5'Width'#2'\'#11'AllowGrayed'#9#7'Caption'#6#11
+'cbDirSelect'#8'TabOrder'#2#0#0#0#9'TCheckBox'#19'cbCaseSensitiveSort'#4'Lef'
+'t'#2#8#6'Height'#2#24#3'Top'#2'-'#5'Width'#3#143#0#11'AllowGrayed'#9#7'Capt'
+'ion'#6#19'cbCaseSensitiveSort'#8'TabOrder'#2#1#0#0#9'TCheckBox'#10'cbLynxLi'
+'ke'#4'Left'#2#8#6'Height'#2#24#3'Top'#2#21#5'Width'#2'['#11'AllowGrayed'#9#7
+'Caption'#6#10'cbLynxLike'#8'TabOrder'#2#2#0#0#9'TCheckBox'#21'cbShortFileSi'
+'zeFormat'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'E'#5'Width'#3#153#0#11'AllowG'
+'rayed'#9#7'Caption'#6#21'cbShortFileSizeFormat'#8'TabOrder'#2#3#0#0#9'TChec'
+'kBox'#13'cbSeparateExt'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'e'#5'Width'#2'l'
+#11'AllowGrayed'#9#7'Caption'#6#13'cbSeparateExt'#8'TabOrder'#2#4#0#0#0#5'TE'
+'dit'#10'edtRunTerm'#4'Left'#2'`'#6'Height'#2#24#3'Top'#2'('#5'Width'#3'9'#1
+#8'TabOrder'#2#1#4'Text'#6#20'/usr/X11R6/bin/xterm'#0#0#0#9'TTabSheet'#7'tsT'
+'ools'#7'Caption'#6#5'Tools'#10'ImageIndex'#2#2#0#9'TCheckBox'#11'cbExtEdito'
+'r'#4'Left'#2#8#6'Height'#2#24#5'Width'#2'Z'#11'AllowGrayed'#9#7'Caption'#6
+#11'cbExtEditor'#7'OnClick'#7#16'cbExtEditorClick'#8'TabOrder'#2#0#0#0#5'TEd'
+'it'#12'edtExtEditor'#4'Left'#2#24#6'Height'#2#24#3'Top'#2' '#5'Width'#3'9'#1
+#8'TabOrder'#2#1#4'Text'#6#10'gEdit "%s"'#0#0#9'TCheckBox'#11'cbExtDiffer'#4
+'Left'#2#8#6'Height'#2#24#3'Top'#2'8'#5'Width'#2'W'#11'AllowGrayed'#9#7'Capt'
+'ion'#6#11'cbExtDiffer'#7'OnClick'#7#16'cbExtDifferClick'#8'TabOrder'#2#2#0#0
+#5'TEdit'#12'edtExtDiffer'#4'Left'#2#24#6'Height'#2#24#3'Top'#2'X'#5'Width'#3
+'9'#1#8'TabOrder'#2#3#4'Text'#6#18'gtk-diff "%s" "%s"'#0#0#9'TCheckBox'#11'c'
+'bExtViewer'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'x'#5'Width'#2'a'#11'AllowGr'
+'ayed'#9#7'Caption'#6#11'cbExtViewer'#7'OnClick'#7#16'cbExtViewerClick'#8'Ta'
+'bOrder'#2#4#0#0#5'TEdit'#12'edtExtViewer'#4'Left'#2#24#6'Height'#2#24#3'Top'
+#3#152#0#5'Width'#3'9'#1#8'TabOrder'#2#5#4'Text'#6#10'emacs "%s"'#0#0#0#9'TT'
+'abSheet'#7'tsFonts'#7'Caption'#6#5'Fonts'#10'ImageIndex'#2#3#0#6'TLabel'#11
+'lblMainFont'#6'Height'#2#14#3'Top'#2#24#5'Width'#2'.'#7'Caption'#6#9'Main f'
+'ont'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#13'lblEditorFont'
+#6'Height'#2#14#3'Top'#2'`'#5'Width'#2'4'#7'Caption'#6#11'Editor font'#5'Col'
+'or'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#13'lblViewerFont'#6'Height'
+#2#14#3'Top'#3#168#0#5'Width'#2'8'#7'Caption'#6#11'Viewer font'#5'Color'#7#6
+'clNone'#11'ParentColor'#8#0#0#9'TComboBox'#10'cbMainFont'#4'Left'#2'N'#6'He'
+'ight'#2#21#3'Top'#2#16#5'Width'#3#16#1#16'AutoCompleteText'#11#22'cbactEndO'
+'fLineComplete'#20'cbactSearchAscending'#0#10'ItemHeight'#2#18#9'MaxLength'#2
+#0#8'OnChange'#7#16'cbMainFontChange'#11'ParentCtl3D'#8#8'TabOrder'#2#0#0#0#9
+'TComboBox'#12'cbEditorFont'#4'Left'#2'N'#6'Height'#2#21#3'Top'#2'W'#5'Width'
+#3#16#1#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAsc'
+'ending'#0#10'ItemHeight'#2#18#9'MaxLength'#2#0#8'OnChange'#7#18'cbEditorFon'
+'tChange'#11'ParentCtl3D'#8#8'TabOrder'#2#1#0#0#5'TEdit'#8'edtTest1'#4'Left'
+#2'N'#6'Height'#2#24#3'Top'#2'0'#5'Width'#3#0#1#8'TabOrder'#2#2#4'Text'#6#16
+'Example '#207#240#238#226#229#240#234#224#0#0#5'TEdit'#8'edtTest2'#4'Left'#2
+'N'#6'Height'#2#24#3'Top'#2'x'#5'Width'#3#1#1#8'TabOrder'#2#3#4'Text'#6#16'E'
+'xample '#207#240#238#226#229#240#234#224#0#0#5'TEdit'#8'edtTest3'#4'Left'#2
+'N'#6'Height'#2#24#3'Top'#3#192#0#5'Width'#3#1#1#8'TabOrder'#2#4#4'Text'#6#16
+'Example '#207#240#238#226#229#240#234#224#0#0#9'TComboBox'#12'cbViewerFont'
+#4'Left'#2'N'#6'Height'#2#21#3'Top'#3#159#0#5'Width'#3#16#1#16'AutoCompleteT'
,'ext'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#10'ItemHeight'
+#2#18#9'MaxLength'#2#0#8'OnChange'#7#18'cbViewerFontChange'#11'ParentCtl3D'#8
+#8'TabOrder'#2#5#0#0#7'TButton'#13'btnSelMainFnt'#4'Left'#3'h'#1#6'Height'#2
+#23#3'Top'#2#16#5'Width'#2#23#7'Caption'#6#3'...'#7'OnClick'#7#18'btnSelMain'
+'FntClick'#8'TabOrder'#2#7#0#0#7'TButton'#13'btnSelEditFnt'#4'Left'#3'h'#1#6
+'Height'#2#23#3'Top'#2'W'#5'Width'#2#23#7'Caption'#6#3'...'#7'OnClick'#7#18
+'btnSelEditFntClick'#8'TabOrder'#2#9#0#0#7'TButton'#13'btnSelViewFnt'#4'Left'
+#3'h'#1#6'Height'#2#23#3'Top'#3#159#0#5'Width'#2#23#7'Caption'#6#3'...'#7'On'
+'Click'#7#18'btnSelViewFntClick'#8'TabOrder'#2#11#0#0#9'TSpinEdit'#11'edtMai'
+'nSize'#4'Left'#3'T'#1#6'Height'#2#23#3'Top'#2'1'#5'Width'#2'D'#8'MaxValue'#2
+#25#8'MinValue'#2#8#8'TabOrder'#2#6#5'Value'#2#14#0#0#9'TSpinEdit'#13'edtEdi'
+'torSize'#4'Left'#3'T'#1#6'Height'#2#23#3'Top'#2'y'#5'Width'#2'D'#8'MaxValue'
+#2#25#8'MinValue'#2#8#8'TabOrder'#2#8#5'Value'#2#14#0#0#9'TSpinEdit'#13'edtV'
+'iewerSize'#4'Left'#3'T'#1#6'Height'#2#23#3'Top'#3#192#0#5'Width'#2'D'#8'Max'
+'Value'#2#25#8'MinValue'#2#8#8'TabOrder'#2#10#5'Value'#2#14#0#0#0#9'TTabShee'
+'t'#9'TabSheet1'#7'Caption'#6#5'Color'#0#6'TLabel'#10'cTextLabel'#4'Left'#2
+#25#6'Height'#2#14#3'Top'#2#31#5'Width'#2#23#7'Caption'#6#4'Text'#5'Color'#7
+#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#14'cBackGrndLabel'#4'Left'#2#23#6
+'Height'#2#14#3'Top'#2':'#5'Width'#2':'#7'Caption'#6#10'BackGround'#5'Color'
+#7#6'clNone'#11'ParentColor'#8#0#0#9'TColorBox'#10'cTextColor'#4'Left'#2'l'#6
+'Height'#2#24#3'Top'#2#26#5'Width'#2'd'#16'AutoCompleteText'#11#22'cbactEndO'
+'fLineComplete'#20'cbactSearchAscending'#0#13'Items.Strings'#1#6#7'clBlack'#6
+#8'clMaroon'#6#7'clGreen'#6#7'clOlive'#6#6'clNavy'#6#8'clPurple'#6#6'clTeal'
+#6#6'clGray'#6#8'clSilver'#6#5'clRed'#6#6'clLime'#6#8'clYellow'#6#6'clBlue'#6
+#9'clFuchsia'#6#6'clAqua'#6#8'clSilver'#6#6'clGray'#6#7'clWhite'#6#7'clCream'
+#6#6'clNone'#6#9'clDefault'#0#9'MaxLength'#2#0#8'TabOrder'#2#0#0#0#9'TColorB'
+'ox'#14'cbackgrndcolor'#4'Left'#2'l'#6'Height'#2#24#3'Top'#2'5'#5'Width'#2'd'
+#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'
+#0#13'Items.Strings'#1#6#7'clBlack'#6#8'clMaroon'#6#7'clGreen'#6#7'clOlive'#6
+#6'clNavy'#6#8'clPurple'#6#6'clTeal'#6#6'clGray'#6#8'clSilver'#6#5'clRed'#6#6
+'clLime'#6#8'clYellow'#6#6'clBlue'#6#9'clFuchsia'#6#6'clAqua'#6#8'clSilver'#6
+#6'clGray'#6#7'clWhite'#6#7'clCream'#6#6'clNone'#6#9'clDefault'#0#9'MaxLengt'
+'h'#2#0#8'TabOrder'#2#1#0#0#7'TButton'#7'Button1'#4'Left'#3#209#0#6'Height'#2
+#25#3'Top'#2#26#5'Width'#2#27#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6
+#2'>>'#7'OnClick'#7#12'Button1Click'#8'TabOrder'#2#2#0#0#7'TButton'#7'Button'
+'2'#4'Left'#3#208#0#6'Height'#2#25#3'Top'#2'5'#5'Width'#2#28#25'BorderSpacin'
+'g.InnerBorder'#2#4#7'Caption'#6#2'>>'#7'OnClick'#7#12'Button2Click'#8'TabOr'
+'der'#2#3#0#0#0#0#6'TPanel'#6'Panel1'#6'Height'#2'('#3'Top'#3#16#1#5'Width'#3
+#198#1#5'Align'#7#8'alBottom'#11'FullRepaint'#8#8'TabOrder'#2#1#0#7'TBitBtn'
+#5'btnOK'#4'Left'#3#24#1#6'Height'#2#25#3'Top'#2#8#5'Width'#2'K'#25'BorderSp'
+'acing.InnerBorder'#2#2#7'Caption'#6#3'&OK'#4'Kind'#7#4'bkOK'#11'ModalResult'
+#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#10'btnOKClick'#8'TabOrder'#2#0#0#0#7'TBit'
+'Btn'#9'btnCancel'#4'Left'#3'p'#1#6'Height'#2#25#3'Top'#2#8#5'Width'#2'K'#25
+'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#6'Cancel'#4'Kind'#7#8'bkCancel'
+#11'ModalResult'#2#2#9'NumGlyphs'#2#0#8'TabOrder'#2#1#0#0#0#11'TFontDialog'#6
+'dlgFnt'#5'Title'#6#13#194#251#225#240#224#242#252' '#248#240#232#244#242#4
+'left'#3#224#0#3'top'#2#16#0#0#12'TColorDialog'#14'optColorDialog'#5'Title'#6
+#12#194#251#225#240#224#242#252' '#246#226#229#242#4'left'#3#224#0#3'top'#2
+'1'#0#0#0
]);
LazarusResources.Add('TfrmOptions','FORMDATA',[
'TPF0'#241#11'TfrmOptions'#10'frmOptions'#4'Left'#3'*'#1#6'Height'#3'8'#1#3'T'
+'op'#3#197#0#5'Width'#3#198#1#18'HorzScrollBar.Page'#3#197#1#18'VertScrollBa'
+'r.Page'#3'7'#1#19'VertScrollBar.Range'#2')'#13'ActiveControl'#7#12'PageCont'
+'rol1'#11'BorderIcons'#11#12'biSystemMenu'#10'biMinimize'#0#11'BorderStyle'#7
+#8'bsSingle'#7'Caption'#6#7'Options'#8'Position'#7#16'poMainFormCenter'#0#12
+'TPageControl'#12'PageControl1'#6'Height'#3#16#1#5'Width'#3#198#1#10'ActiveP'
+'age'#7#9'TabSheet1'#5'Align'#7#8'alClient'#8'TabIndex'#2#4#8'TabOrder'#2#0#0
+#9'TTabSheet'#5'tsLng'#7'Caption'#6#8'Language'#0#8'TListBox'#7'lngList'#6'H'
+'eight'#3#242#0#5'Width'#3#194#1#5'Align'#7#8'alClient'#8'TabOrder'#2#0#8'To'
+'pIndex'#2#255#0#0#0#9'TTabSheet'#7'tsBehav'#7'Caption'#6#9'Behaviour'#10'Im'
+'ageIndex'#2#1#0#6'TLabel'#7'lblTerm'#4'Left'#2#8#6'Height'#2#13#3'Top'#2#16
+#5'Width'#2'3'#7'Caption'#6#9'Terminal:'#5'Color'#7#6'clNone'#11'ParentColor'
+#8#0#0#6'TLabel'#10'lblRunTerm'#4'Left'#2#8#6'Height'#2#13#3'Top'#2'0'#5'Wid'
+'th'#2'I'#7'Caption'#6#13'Run terminal:'#5'Color'#7#6'clNone'#11'ParentColor'
+#8#0#0#5'TEdit'#7'edtTerm'#4'Left'#2'`'#6'Height'#2#24#3'Top'#2#8#5'Width'#3
+'9'#1#8'TabOrder'#2#0#4'Text'#6'%/usr/X11R6/bin/xterm -e bash -i -c %s'#0#0#9
+'TGroupBox'#2'gb'#4'Left'#2#8#6'Height'#3#148#0#3'Top'#2'P'#5'Width'#3#225#0
+#11'ParentCtl3D'#8#8'TabOrder'#2#2#0#9'TCheckBox'#11'cbDirSelect'#4'Left'#2#8
+#6'Height'#2#24#3'Top'#2#253#5'Width'#2'\'#11'AllowGrayed'#9#7'Caption'#6#11
+'cbDirSelect'#8'TabOrder'#2#0#0#0#9'TCheckBox'#19'cbCaseSensitiveSort'#4'Lef'
+'t'#2#8#6'Height'#2#24#3'Top'#2'-'#5'Width'#3#143#0#11'AllowGrayed'#9#7'Capt'
+'ion'#6#19'cbCaseSensitiveSort'#8'TabOrder'#2#1#0#0#9'TCheckBox'#10'cbLynxLi'
+'ke'#4'Left'#2#8#6'Height'#2#24#3'Top'#2#21#5'Width'#2'['#11'AllowGrayed'#9#7
+'Caption'#6#10'cbLynxLike'#8'TabOrder'#2#2#0#0#9'TCheckBox'#21'cbShortFileSi'
+'zeFormat'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'E'#5'Width'#3#153#0#11'AllowG'
+'rayed'#9#7'Caption'#6#21'cbShortFileSizeFormat'#8'TabOrder'#2#3#0#0#9'TChec'
+'kBox'#13'cbSeparateExt'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'e'#5'Width'#2'l'
+#11'AllowGrayed'#9#7'Caption'#6#13'cbSeparateExt'#8'TabOrder'#2#4#0#0#0#5'TE'
+'dit'#10'edtRunTerm'#4'Left'#2'`'#6'Height'#2#24#3'Top'#2'('#5'Width'#3'9'#1
+#8'TabOrder'#2#1#4'Text'#6#20'/usr/X11R6/bin/xterm'#0#0#0#9'TTabSheet'#7'tsT'
+'ools'#7'Caption'#6#5'Tools'#10'ImageIndex'#2#2#0#9'TCheckBox'#11'cbExtEdito'
+'r'#4'Left'#2#8#6'Height'#2#24#5'Width'#2'Z'#11'AllowGrayed'#9#7'Caption'#6
+#11'cbExtEditor'#7'OnClick'#7#16'cbExtEditorClick'#8'TabOrder'#2#0#0#0#5'TEd'
+'it'#12'edtExtEditor'#4'Left'#2#24#6'Height'#2#24#3'Top'#2' '#5'Width'#3'9'#1
+#8'TabOrder'#2#1#4'Text'#6#10'gEdit "%s"'#0#0#9'TCheckBox'#11'cbExtDiffer'#4
+'Left'#2#8#6'Height'#2#24#3'Top'#2'8'#5'Width'#2'W'#11'AllowGrayed'#9#7'Capt'
+'ion'#6#11'cbExtDiffer'#7'OnClick'#7#16'cbExtDifferClick'#8'TabOrder'#2#2#0#0
+#5'TEdit'#12'edtExtDiffer'#4'Left'#2#24#6'Height'#2#24#3'Top'#2'X'#5'Width'#3
+'9'#1#8'TabOrder'#2#3#4'Text'#6#18'gtk-diff "%s" "%s"'#0#0#9'TCheckBox'#11'c'
+'bExtViewer'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'x'#5'Width'#2'a'#11'AllowGr'
+'ayed'#9#7'Caption'#6#11'cbExtViewer'#7'OnClick'#7#16'cbExtViewerClick'#8'Ta'
+'bOrder'#2#4#0#0#5'TEdit'#12'edtExtViewer'#4'Left'#2#24#6'Height'#2#24#3'Top'
+#3#152#0#5'Width'#3'9'#1#8'TabOrder'#2#5#4'Text'#6#10'emacs "%s"'#0#0#0#9'TT'
+'abSheet'#7'tsFonts'#7'Caption'#6#5'Fonts'#10'ImageIndex'#2#3#0#6'TLabel'#11
+'lblMainFont'#6'Height'#2#14#3'Top'#2#24#5'Width'#2'.'#7'Caption'#6#9'Main f'
+'ont'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#13'lblEditorFont'
+#6'Height'#2#14#3'Top'#2'`'#5'Width'#2'4'#7'Caption'#6#11'Editor font'#5'Col'
+'or'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#13'lblViewerFont'#6'Height'
+#2#14#3'Top'#3#168#0#5'Width'#2'8'#7'Caption'#6#11'Viewer font'#5'Color'#7#6
+'clNone'#11'ParentColor'#8#0#0#9'TComboBox'#10'cbMainFont'#4'Left'#2'N'#6'He'
+'ight'#2#21#3'Top'#2#16#5'Width'#3#16#1#10'ItemHeight'#2#18#9'MaxLength'#2#0
+#8'OnChange'#7#16'cbMainFontChange'#11'ParentCtl3D'#8#8'TabOrder'#2#0#0#0#9
+'TComboBox'#12'cbEditorFont'#4'Left'#2'N'#6'Height'#2#21#3'Top'#2'W'#5'Width'
+#3#16#1#10'ItemHeight'#2#18#9'MaxLength'#2#0#8'OnChange'#7#18'cbEditorFontCh'
+'ange'#11'ParentCtl3D'#8#8'TabOrder'#2#1#0#0#5'TEdit'#8'edtTest1'#4'Left'#2
+'N'#6'Height'#2#24#3'Top'#2'0'#5'Width'#3#0#1#8'TabOrder'#2#2#4'Text'#6#16'E'
+'xample '#207#240#238#226#229#240#234#224#0#0#5'TEdit'#8'edtTest2'#4'Left'#2
+'N'#6'Height'#2#24#3'Top'#2'x'#5'Width'#3#1#1#8'TabOrder'#2#3#4'Text'#6#16'E'
+'xample '#207#240#238#226#229#240#234#224#0#0#5'TEdit'#8'edtTest3'#4'Left'#2
+'N'#6'Height'#2#24#3'Top'#3#192#0#5'Width'#3#1#1#8'TabOrder'#2#4#4'Text'#6#16
+'Example '#207#240#238#226#229#240#234#224#0#0#9'TComboBox'#12'cbViewerFont'
+#4'Left'#2'N'#6'Height'#2#21#3'Top'#3#159#0#5'Width'#3#16#1#10'ItemHeight'#2
+#18#9'MaxLength'#2#0#8'OnChange'#7#18'cbViewerFontChange'#11'ParentCtl3D'#8#8
+'TabOrder'#2#5#0#0#7'TButton'#13'btnSelMainFnt'#4'Left'#3'h'#1#6'Height'#2#23
,#3'Top'#2#16#5'Width'#2#23#7'Caption'#6#3'...'#7'OnClick'#7#18'btnSelMainFnt'
+'Click'#8'TabOrder'#2#7#0#0#7'TButton'#13'btnSelEditFnt'#4'Left'#3'h'#1#6'He'
+'ight'#2#23#3'Top'#2'W'#5'Width'#2#23#7'Caption'#6#3'...'#7'OnClick'#7#18'bt'
+'nSelEditFntClick'#8'TabOrder'#2#9#0#0#7'TButton'#13'btnSelViewFnt'#4'Left'#3
+'h'#1#6'Height'#2#23#3'Top'#3#159#0#5'Width'#2#23#7'Caption'#6#3'...'#7'OnCl'
+'ick'#7#18'btnSelViewFntClick'#8'TabOrder'#2#11#0#0#9'TSpinEdit'#11'edtMainS'
+'ize'#4'Left'#3'T'#1#6'Height'#2#23#3'Top'#2'1'#5'Width'#2'D'#8'MaxValue'#2
+#25#8'MinValue'#2#8#8'TabOrder'#2#6#5'Value'#2#14#0#0#9'TSpinEdit'#13'edtEdi'
+'torSize'#4'Left'#3'T'#1#6'Height'#2#23#3'Top'#2'y'#5'Width'#2'D'#8'MaxValue'
+#2#25#8'MinValue'#2#8#8'TabOrder'#2#8#5'Value'#2#14#0#0#9'TSpinEdit'#13'edtV'
+'iewerSize'#4'Left'#3'T'#1#6'Height'#2#23#3'Top'#3#192#0#5'Width'#2'D'#8'Max'
+'Value'#2#25#8'MinValue'#2#8#8'TabOrder'#2#10#5'Value'#2#14#0#0#0#9'TTabShee'
+'t'#9'TabSheet1'#7'Caption'#6#5'Color'#0#6'TLabel'#10'cTextLabel'#4'Left'#2
+#25#6'Height'#2#14#3'Top'#2#31#5'Width'#2#23#7'Caption'#6#4'Text'#5'Color'#7
+#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#14'cBackGrndLabel'#4'Left'#2#23#6
+'Height'#2#14#3'Top'#2':'#5'Width'#2':'#7'Caption'#6#10'BackGround'#5'Color'
+#7#6'clNone'#11'ParentColor'#8#0#0#9'TColorBox'#10'cTextColor'#4'Left'#2'l'#6
+'Height'#2#24#3'Top'#2#26#5'Width'#2'd'#13'Items.Strings'#1#6#7'clBlack'#6#8
+'clMaroon'#6#7'clGreen'#6#7'clOlive'#6#6'clNavy'#6#8'clPurple'#6#6'clTeal'#6
+#6'clGray'#6#8'clSilver'#6#5'clRed'#6#6'clLime'#6#8'clYellow'#6#6'clBlue'#6#9
+'clFuchsia'#6#6'clAqua'#6#8'clSilver'#6#6'clGray'#6#7'clWhite'#6#7'clCream'#6
+#6'clNone'#6#9'clDefault'#0#9'MaxLength'#2#0#8'TabOrder'#2#0#0#0#9'TColorBox'
+#14'cbackgrndcolor'#4'Left'#2'l'#6'Height'#2#24#3'Top'#2'5'#5'Width'#2'd'#13
+'Items.Strings'#1#6#7'clBlack'#6#8'clMaroon'#6#7'clGreen'#6#7'clOlive'#6#6'c'
+'lNavy'#6#8'clPurple'#6#6'clTeal'#6#6'clGray'#6#8'clSilver'#6#5'clRed'#6#6'c'
+'lLime'#6#8'clYellow'#6#6'clBlue'#6#9'clFuchsia'#6#6'clAqua'#6#8'clSilver'#6
+#6'clGray'#6#7'clWhite'#6#7'clCream'#6#6'clNone'#6#9'clDefault'#0#9'MaxLengt'
+'h'#2#0#8'TabOrder'#2#1#0#0#7'TButton'#7'Button1'#4'Left'#3#209#0#6'Height'#2
+#25#3'Top'#2#26#5'Width'#2#27#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6
+#2'>>'#7'OnClick'#7#12'Button1Click'#8'TabOrder'#2#2#0#0#7'TButton'#7'Button'
+'2'#4'Left'#3#208#0#6'Height'#2#25#3'Top'#2'5'#5'Width'#2#28#25'BorderSpacin'
+'g.InnerBorder'#2#4#7'Caption'#6#2'>>'#7'OnClick'#7#12'Button2Click'#8'TabOr'
+'der'#2#3#0#0#0#0#6'TPanel'#6'Panel1'#6'Height'#2'('#3'Top'#3#16#1#5'Width'#3
+#198#1#5'Align'#7#8'alBottom'#11'FullRepaint'#8#8'TabOrder'#2#1#0#7'TBitBtn'
+#5'btnOK'#4'Left'#3#24#1#6'Height'#2#25#3'Top'#2#8#5'Width'#2'K'#25'BorderSp'
+'acing.InnerBorder'#2#2#7'Caption'#6#3'&OK'#4'Kind'#7#4'bkOK'#11'ModalResult'
+#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#10'btnOKClick'#8'TabOrder'#2#0#0#0#7'TBit'
+'Btn'#9'btnCancel'#4'Left'#3'p'#1#6'Height'#2#25#3'Top'#2#8#5'Width'#2'K'#25
+'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#6'Cancel'#4'Kind'#7#8'bkCancel'
+#11'ModalResult'#2#2#9'NumGlyphs'#2#0#8'TabOrder'#2#1#0#0#0#11'TFontDialog'#6
+'dlgFnt'#5'Title'#6#13#194#251#225#240#224#242#252' '#248#240#232#244#242#4
+'left'#3#224#0#3'top'#2#16#0#0#12'TColorDialog'#14'optColorDialog'#5'Title'#6
+#12#194#251#225#240#224#242#252' '#246#226#229#242#4'left'#3#224#0#3'top'#2
+'1'#0#0#0
]);

View file

@ -1,6 +1,6 @@
object frmMain: TfrmMain
Caption = 'Double Commander'
ClientHeight = 317
ClientHeight = 316
ClientWidth = 525
Font.Color = clBlack
Font.Height = 13
@ -22,11 +22,11 @@ object frmMain: TfrmMain
ShowHint = True
TextHeight = 16
HorzScrollBar.Page = 524
VertScrollBar.Page = 316
VertScrollBar.Page = 315
VertScrollBar.Range = 79
Left = 447
Left = 250
Height = 336
Top = 549
Top = 174
Width = 525
object pnlButton: TPanel
Align = alTop
@ -91,7 +91,7 @@ object frmMain: TfrmMain
ParentColor = False
TabOrder = 2
Height = 66
Top = 251
Top = 250
Width = 525
object lblCommandPath: TLabel
Alignment = taRightJustify
@ -208,12 +208,12 @@ object frmMain: TfrmMain
end
object pnlNotebooks: TPanel
Align = alClient
ClientHeight = 182
ClientHeight = 181
ClientWidth = 525
FullRepaint = False
TabOrder = 3
TabStop = True
Height = 182
Height = 181
Top = 69
Width = 525
object nbLeft: TNotebook
@ -221,17 +221,17 @@ object frmMain: TfrmMain
OnCloseTabClicked = NoteBookCloseTabClicked
Options = [nboShowCloseButtons]
Left = 1
Height = 180
Height = 179
Top = 1
Width = 391
end
object Splitter1: TSplitter
Height = 180
Height = 179
ResizeStyle = rsLine
Width = 4
Cursor = crHSplit
Left = 392
Height = 180
Height = 179
Top = 1
Width = 4
end
@ -240,7 +240,7 @@ object frmMain: TfrmMain
OnCloseTabClicked = NoteBookCloseTabClicked
Options = [nboShowCloseButtons]
Left = 396
Height = 180
Height = 179
Top = 1
Width = 128
end

View file

@ -1,473 +1,468 @@
inherited frmOptions: TfrmOptions
Left = 298
Height = 312
Top = 197
Width = 454
HorzScrollBar.Page = 453
VertScrollBar.Page = 311
VertScrollBar.Range = 41
ActiveControl = PageControl1
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = 'Options'
Position = poMainFormCenter
object PageControl1: TPageControl
Height = 272
Width = 454
ActivePage = TabSheet1
Align = alClient
TabIndex = 4
TabOrder = 0
object tsLng: TTabSheet
Caption = 'Language'
object lngList: TListBox
Height = 242
Width = 450
Align = alClient
TabOrder = 0
TopIndex = -1
end
end
object tsBehav: TTabSheet
Caption = 'Behaviour'
ImageIndex = 1
object lblTerm: TLabel
Left = 8
Height = 13
Top = 16
Width = 51
Caption = 'Terminal:'
Color = clNone
ParentColor = False
end
object lblRunTerm: TLabel
Left = 8
Height = 13
Top = 48
Width = 73
Caption = 'Run terminal:'
Color = clNone
ParentColor = False
end
object edtTerm: TEdit
Left = 96
Height = 24
Top = 8
Width = 313
TabOrder = 0
Text = '/usr/X11R6/bin/xterm -e bash -i -c %s'
end
object gb: TGroupBox
Left = 8
Height = 148
Top = 80
Width = 225
ParentCtl3D = False
TabOrder = 2
object cbDirSelect: TCheckBox
Left = 8
Height = 24
Top = -3
Width = 92
AllowGrayed = True
Caption = 'cbDirSelect'
TabOrder = 0
end
object cbCaseSensitiveSort: TCheckBox
Left = 8
Height = 24
Top = 45
Width = 143
AllowGrayed = True
Caption = 'cbCaseSensitiveSort'
TabOrder = 1
end
object cbLynxLike: TCheckBox
Left = 8
Height = 24
Top = 21
Width = 91
AllowGrayed = True
Caption = 'cbLynxLike'
TabOrder = 2
end
object cbShortFileSizeFormat: TCheckBox
Left = 8
Height = 24
Top = 69
Width = 153
AllowGrayed = True
Caption = 'cbShortFileSizeFormat'
TabOrder = 3
end
object cbSeparateExt: TCheckBox
Left = 8
Height = 24
Top = 101
Width = 108
AllowGrayed = True
Caption = 'cbSeparateExt'
TabOrder = 4
end
end
object edtRunTerm: TEdit
Left = 96
Height = 24
Top = 40
Width = 313
TabOrder = 1
Text = '/usr/X11R6/bin/xterm'
end
end
object tsTools: TTabSheet
Caption = 'Tools'
ImageIndex = 2
object cbExtEditor: TCheckBox
Left = 8
Height = 24
Width = 90
AllowGrayed = True
Caption = 'cbExtEditor'
OnClick = cbExtEditorClick
TabOrder = 0
end
object edtExtEditor: TEdit
Left = 24
Height = 24
Top = 32
Width = 313
TabOrder = 1
Text = 'gEdit "%s"'
end
object cbExtDiffer: TCheckBox
Left = 8
Height = 24
Top = 56
Width = 87
AllowGrayed = True
Caption = 'cbExtDiffer'
OnClick = cbExtDifferClick
TabOrder = 2
end
object edtExtDiffer: TEdit
Left = 24
Height = 24
Top = 88
Width = 313
TabOrder = 3
Text = 'gtk-diff "%s" "%s"'
end
object cbExtViewer: TCheckBox
Left = 8
Height = 24
Top = 120
Width = 97
AllowGrayed = True
Caption = 'cbExtViewer'
OnClick = cbExtViewerClick
TabOrder = 4
end
object edtExtViewer: TEdit
Left = 24
Height = 24
Top = 152
Width = 313
TabOrder = 5
Text = 'emacs "%s"'
end
end
object tsFonts: TTabSheet
Caption = 'Fonts'
ImageIndex = 3
object lblMainFont: TLabel
Height = 14
Top = 24
Width = 46
Caption = 'Main font'
Color = clNone
ParentColor = False
end
object lblEditorFont: TLabel
Height = 14
Top = 96
Width = 52
Caption = 'Editor font'
Color = clNone
ParentColor = False
end
object lblViewerFont: TLabel
Height = 14
Top = 168
Width = 56
Caption = 'Viewer font'
Color = clNone
ParentColor = False
end
object cbMainFont: TComboBox
Left = 78
Height = 21
Top = 16
Width = 272
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
ItemHeight = 18
MaxLength = 0
OnChange = cbMainFontChange
ParentCtl3D = False
TabOrder = 0
end
object cbEditorFont: TComboBox
Left = 78
Height = 21
Top = 87
Width = 272
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
ItemHeight = 18
MaxLength = 0
OnChange = cbEditorFontChange
ParentCtl3D = False
TabOrder = 1
end
object edtTest1: TEdit
Left = 78
Height = 24
Top = 48
Width = 256
TabOrder = 2
Text = 'Example Ïðîâåðêà'
end
object edtTest2: TEdit
Left = 78
Height = 24
Top = 120
Width = 257
TabOrder = 3
Text = 'Example Ïðîâåðêà'
end
object edtTest3: TEdit
Left = 78
Height = 24
Top = 192
Width = 257
TabOrder = 4
Text = 'Example Ïðîâåðêà'
end
object cbViewerFont: TComboBox
Left = 78
Height = 21
Top = 159
Width = 272
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
ItemHeight = 18
MaxLength = 0
OnChange = cbViewerFontChange
ParentCtl3D = False
TabOrder = 5
end
object btnSelMainFnt: TButton
Left = 360
Height = 23
Top = 16
Width = 23
Caption = '...'
OnClick = btnSelMainFntClick
TabOrder = 7
end
object btnSelEditFnt: TButton
Left = 360
Height = 23
Top = 87
Width = 23
Caption = '...'
OnClick = btnSelEditFntClick
TabOrder = 9
end
object btnSelViewFnt: TButton
Left = 360
Height = 23
Top = 159
Width = 23
Caption = '...'
OnClick = btnSelViewFntClick
TabOrder = 11
end
object edtMainSize: TSpinEdit
Left = 340
Height = 23
Top = 49
Width = 68
MaxValue = 25
MinValue = 8
TabOrder = 6
Value = 14
end
object edtEditorSize: TSpinEdit
Left = 340
Height = 23
Top = 121
Width = 68
MaxValue = 25
MinValue = 8
TabOrder = 8
Value = 14
end
object edtViewerSize: TSpinEdit
Left = 340
Height = 23
Top = 192
Width = 68
MaxValue = 25
MinValue = 8
TabOrder = 10
Value = 14
end
end
object TabSheet1: TTabSheet
Caption = 'Color'
object cTextLabel: TLabel
Left = 25
Height = 14
Top = 31
Width = 23
Caption = 'Text'
Color = clNone
ParentColor = False
end
object cBackGrndLabel: TLabel
Left = 23
Height = 14
Top = 58
Width = 58
Caption = 'BackGround'
Color = clNone
ParentColor = False
end
object cTextColor: TColorBox
Left = 108
Height = 24
Top = 26
Width = 100
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
Items.Strings = (
'clBlack'
'clMaroon'
'clGreen'
'clOlive'
'clNavy'
'clPurple'
'clTeal'
'clGray'
'clSilver'
'clRed'
'clLime'
'clYellow'
'clBlue'
'clFuchsia'
'clAqua'
'clSilver'
'clGray'
'clWhite'
'clCream'
'clNone'
'clDefault'
)
MaxLength = 0
TabOrder = 0
end
object cbackgrndcolor: TColorBox
Left = 108
Height = 24
Top = 53
Width = 100
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
Items.Strings = (
'clBlack'
'clMaroon'
'clGreen'
'clOlive'
'clNavy'
'clPurple'
'clTeal'
'clGray'
'clSilver'
'clRed'
'clLime'
'clYellow'
'clBlue'
'clFuchsia'
'clAqua'
'clSilver'
'clGray'
'clWhite'
'clCream'
'clNone'
'clDefault'
)
MaxLength = 0
TabOrder = 1
end
object Button1: TButton
Left = 209
Height = 25
Top = 26
Width = 27
BorderSpacing.InnerBorder = 4
Caption = '>>'
OnClick = Button1Click
TabOrder = 2
end
object Button2: TButton
Left = 208
Height = 25
Top = 53
Width = 28
BorderSpacing.InnerBorder = 4
Caption = '>>'
OnClick = Button2Click
TabOrder = 3
end
end
end
object Panel1: TPanel
Height = 40
Top = 272
Width = 454
Align = alBottom
FullRepaint = False
TabOrder = 1
object btnOK: TBitBtn
Left = 280
Height = 25
Top = 8
Width = 75
BorderSpacing.InnerBorder = 2
Caption = '&OK'
Kind = bkOK
ModalResult = 1
NumGlyphs = 0
OnClick = btnOKClick
TabOrder = 0
end
object btnCancel: TBitBtn
Left = 368
Height = 25
Top = 8
Width = 75
BorderSpacing.InnerBorder = 2
Caption = 'Cancel'
Kind = bkCancel
ModalResult = 2
NumGlyphs = 0
TabOrder = 1
end
end
object dlgFnt: TFontDialog
Title = 'Âûáðàòü øðèôò'
left = 224
top = 16
end
object optColorDialog: TColorDialog
Title = 'Âûáðàòü öâåò'
left = 224
top = 49
end
end
inherited frmOptions: TfrmOptions
Left = 298
Height = 312
Top = 197
Width = 454
HorzScrollBar.Page = 453
VertScrollBar.Page = 311
VertScrollBar.Range = 41
ActiveControl = PageControl1
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = 'Options'
Position = poMainFormCenter
object PageControl1: TPageControl
Height = 272
Width = 454
ActivePage = TabSheet1
Align = alClient
TabIndex = 4
TabOrder = 0
object tsLng: TTabSheet
Caption = 'Language'
object lngList: TListBox
Height = 242
Width = 450
Align = alClient
TabOrder = 0
TopIndex = -1
end
end
object tsBehav: TTabSheet
Caption = 'Behaviour'
ImageIndex = 1
object lblTerm: TLabel
Left = 8
Height = 13
Top = 16
Width = 51
Caption = 'Terminal:'
Color = clNone
ParentColor = False
end
object lblRunTerm: TLabel
Left = 8
Height = 13
Top = 48
Width = 73
Caption = 'Run terminal:'
Color = clNone
ParentColor = False
end
object edtTerm: TEdit
Left = 96
Height = 24
Top = 8
Width = 313
TabOrder = 0
Text = '/usr/X11R6/bin/xterm -e bash -i -c %s'
end
object gb: TGroupBox
Left = 8
Height = 148
Top = 80
Width = 225
ParentCtl3D = False
TabOrder = 2
object cbDirSelect: TCheckBox
Left = 8
Height = 24
Top = -3
Width = 92
AllowGrayed = True
Caption = 'cbDirSelect'
TabOrder = 0
end
object cbCaseSensitiveSort: TCheckBox
Left = 8
Height = 24
Top = 45
Width = 143
AllowGrayed = True
Caption = 'cbCaseSensitiveSort'
TabOrder = 1
end
object cbLynxLike: TCheckBox
Left = 8
Height = 24
Top = 21
Width = 91
AllowGrayed = True
Caption = 'cbLynxLike'
TabOrder = 2
end
object cbShortFileSizeFormat: TCheckBox
Left = 8
Height = 24
Top = 69
Width = 153
AllowGrayed = True
Caption = 'cbShortFileSizeFormat'
TabOrder = 3
end
object cbSeparateExt: TCheckBox
Left = 8
Height = 24
Top = 101
Width = 108
AllowGrayed = True
Caption = 'cbSeparateExt'
TabOrder = 4
end
end
object edtRunTerm: TEdit
Left = 96
Height = 24
Top = 40
Width = 313
TabOrder = 1
Text = '/usr/X11R6/bin/xterm'
end
end
object tsTools: TTabSheet
Caption = 'Tools'
ImageIndex = 2
object cbExtEditor: TCheckBox
Left = 8
Height = 24
Width = 90
AllowGrayed = True
Caption = 'cbExtEditor'
OnClick = cbExtEditorClick
TabOrder = 0
end
object edtExtEditor: TEdit
Left = 24
Height = 24
Top = 32
Width = 313
TabOrder = 1
Text = 'gEdit "%s"'
end
object cbExtDiffer: TCheckBox
Left = 8
Height = 24
Top = 56
Width = 87
AllowGrayed = True
Caption = 'cbExtDiffer'
OnClick = cbExtDifferClick
TabOrder = 2
end
object edtExtDiffer: TEdit
Left = 24
Height = 24
Top = 88
Width = 313
TabOrder = 3
Text = 'gtk-diff "%s" "%s"'
end
object cbExtViewer: TCheckBox
Left = 8
Height = 24
Top = 120
Width = 97
AllowGrayed = True
Caption = 'cbExtViewer'
OnClick = cbExtViewerClick
TabOrder = 4
end
object edtExtViewer: TEdit
Left = 24
Height = 24
Top = 152
Width = 313
TabOrder = 5
Text = 'emacs "%s"'
end
end
object tsFonts: TTabSheet
Caption = 'Fonts'
ImageIndex = 3
object lblMainFont: TLabel
Height = 14
Top = 24
Width = 46
Caption = 'Main font'
Color = clNone
ParentColor = False
end
object lblEditorFont: TLabel
Height = 14
Top = 96
Width = 52
Caption = 'Editor font'
Color = clNone
ParentColor = False
end
object lblViewerFont: TLabel
Height = 14
Top = 168
Width = 56
Caption = 'Viewer font'
Color = clNone
ParentColor = False
end
object cbMainFont: TComboBox
Left = 78
Height = 21
Top = 16
Width = 272
ItemHeight = 18
MaxLength = 0
OnChange = cbMainFontChange
ParentCtl3D = False
TabOrder = 0
end
object cbEditorFont: TComboBox
Left = 78
Height = 21
Top = 87
Width = 272
ItemHeight = 18
MaxLength = 0
OnChange = cbEditorFontChange
ParentCtl3D = False
TabOrder = 1
end
object edtTest1: TEdit
Left = 78
Height = 24
Top = 48
Width = 256
TabOrder = 2
Text = 'Example Ïðîâåðêà'
end
object edtTest2: TEdit
Left = 78
Height = 24
Top = 120
Width = 257
TabOrder = 3
Text = 'Example Ïðîâåðêà'
end
object edtTest3: TEdit
Left = 78
Height = 24
Top = 192
Width = 257
TabOrder = 4
Text = 'Example Ïðîâåðêà'
end
object cbViewerFont: TComboBox
Left = 78
Height = 21
Top = 159
Width = 272
ItemHeight = 18
MaxLength = 0
OnChange = cbViewerFontChange
ParentCtl3D = False
TabOrder = 5
end
object btnSelMainFnt: TButton
Left = 360
Height = 23
Top = 16
Width = 23
Caption = '...'
OnClick = btnSelMainFntClick
TabOrder = 7
end
object btnSelEditFnt: TButton
Left = 360
Height = 23
Top = 87
Width = 23
Caption = '...'
OnClick = btnSelEditFntClick
TabOrder = 9
end
object btnSelViewFnt: TButton
Left = 360
Height = 23
Top = 159
Width = 23
Caption = '...'
OnClick = btnSelViewFntClick
TabOrder = 11
end
object edtMainSize: TSpinEdit
Left = 340
Height = 23
Top = 49
Width = 68
MaxValue = 25
MinValue = 8
TabOrder = 6
Value = 14
end
object edtEditorSize: TSpinEdit
Left = 340
Height = 23
Top = 121
Width = 68
MaxValue = 25
MinValue = 8
TabOrder = 8
Value = 14
end
object edtViewerSize: TSpinEdit
Left = 340
Height = 23
Top = 192
Width = 68
MaxValue = 25
MinValue = 8
TabOrder = 10
Value = 14
end
end
object TabSheet1: TTabSheet
Caption = 'Color'
object cTextLabel: TLabel
Left = 25
Height = 14
Top = 31
Width = 23
Caption = 'Text'
Color = clNone
ParentColor = False
end
object cBackGrndLabel: TLabel
Left = 23
Height = 14
Top = 58
Width = 58
Caption = 'BackGround'
Color = clNone
ParentColor = False
end
object cTextColor: TColorBox
Left = 108
Height = 24
Top = 26
Width = 100
Items.Strings = (
'clBlack'
'clMaroon'
'clGreen'
'clOlive'
'clNavy'
'clPurple'
'clTeal'
'clGray'
'clSilver'
'clRed'
'clLime'
'clYellow'
'clBlue'
'clFuchsia'
'clAqua'
'clSilver'
'clGray'
'clWhite'
'clCream'
'clNone'
'clDefault'
)
MaxLength = 0
TabOrder = 0
end
object cbackgrndcolor: TColorBox
Left = 108
Height = 24
Top = 53
Width = 100
Items.Strings = (
'clBlack'
'clMaroon'
'clGreen'
'clOlive'
'clNavy'
'clPurple'
'clTeal'
'clGray'
'clSilver'
'clRed'
'clLime'
'clYellow'
'clBlue'
'clFuchsia'
'clAqua'
'clSilver'
'clGray'
'clWhite'
'clCream'
'clNone'
'clDefault'
)
MaxLength = 0
TabOrder = 1
end
object Button1: TButton
Left = 209
Height = 25
Top = 26
Width = 27
BorderSpacing.InnerBorder = 4
Caption = '>>'
OnClick = Button1Click
TabOrder = 2
end
object Button2: TButton
Left = 208
Height = 25
Top = 53
Width = 28
BorderSpacing.InnerBorder = 4
Caption = '>>'
OnClick = Button2Click
TabOrder = 3
end
end
end
object Panel1: TPanel
Height = 40
Top = 272
Width = 454
Align = alBottom
FullRepaint = False
TabOrder = 1
object btnOK: TBitBtn
Left = 280
Height = 25
Top = 8
Width = 75
BorderSpacing.InnerBorder = 2
Caption = '&OK'
Kind = bkOK
ModalResult = 1
NumGlyphs = 0
OnClick = btnOKClick
TabOrder = 0
end
object btnCancel: TBitBtn
Left = 368
Height = 25
Top = 8
Width = 75
BorderSpacing.InnerBorder = 2
Caption = 'Cancel'
Kind = bkCancel
ModalResult = 2
NumGlyphs = 0
TabOrder = 1
end
end
object dlgFnt: TFontDialog
Title = 'Âûáðàòü øðèôò'
left = 224
top = 16
end
object optColorDialog: TColorDialog
Title = 'Âûáðàòü öâåò'
left = 224
top = 49
end
end

View file

@ -34,7 +34,7 @@ type
pnPanel: TPanel;
lblLInfo: TLabel;
pnlHeader: TPanel;
lblLPath: TStaticText;
lblLPath: TLabel;
lblFree: TLabel;
edtRename: TEdit;
dgPanel: TDrawGrid;
@ -109,7 +109,7 @@ type
implementation
uses
uLng, uConv, uShowMsg, uGlobs, GraphType, uPixmapManager, uOSUtils;
uLng, uShowMsg, uGlobs, GraphType, uPixmapManager, uDCUtils, uOSUtils;
procedure TFrameFilePanel.LoadPanel;
@ -664,7 +664,7 @@ end;
procedure TFrameFilePanel.pnlHeaderResize(Sender: TObject);
begin
lblLPath.Width:=pnlHeader.Width - 4;
end;
@ -696,11 +696,11 @@ begin
lblFree.Width:=pnlHeader.Width*2 div 3;
// lblFree.AutoSize:=True;
lblLPath:=TStaticText.Create(pnlHeader);
lblLPath:=TLabel.Create(pnlHeader);
lblLPath.Parent:=pnlHeader;
lblLPath.Top:=19;
// lblLPath.AutoSize:=True;
lblLPath.Width:=pnlHeader.Width*2 div 3;
lblLPath.AutoSize:=False;
lblLPath.Width:=pnlHeader.Width - 4;
lblLPath.Color:=clActiveCaption;
pnlFooter:=TPanel.Create(Self);

View file

@ -1,51 +0,0 @@
{
Seksi Commander
----------------------------
Variate conversion utils
Licence : GNU GPL v 2.0
Author : radek.cervinka@centrum.cz
contributors:
}
unit uConv;
interface
Function cnvFormatFileSize(iSize:Int64):String;
implementation
uses
uGlobs, SysUtils;
Function cnvFormatFileSize(iSize:Int64):String;
var
d:double;
begin
// writeln(iSize);
if gShortFileSizeFormat then
begin
// TODo Giga
if iSize div (1024*1024) >0 then
begin
// writeln('Div:',Trunc(iSize*10 /(1024*1024))/10);
Result:=FloatToStrF((iSize*10 div (1024*1024))/10, ffFixed, 15, 1)+'M'
end
else
if iSize div 1024 >0 then
begin
Result:=FloatToStrF((iSize*10 div 1024)/10, ffFixed, 15, 1)+'K'
end
else
Result:=IntToStr(iSize);
end
else
begin
d:=iSize;
Result:=Format('%8.0n',[d]);
end;
end;
end.

View file

@ -30,7 +30,7 @@ type
implementation
uses
SysUtils, Classes, uLng, uShowMsg, uFilter, uFileProcs, FindEx, uOSUtils {$IFNDEF WIN32}, BaseUnix, Unix{$ENDIF};
SysUtils, Classes, uLng, uShowMsg, uFileProcs, FindEx, uDCUtils, uOSUtils {$IFNDEF WIN32}, BaseUnix, Unix{$ENDIF};
const
cBlockSize=16384; // size of block if copyfile
@ -176,6 +176,7 @@ begin
Synchronize(@FFileOpDlg.UpdateDlg);
Result:=CorrectFileInfo(sSrc, sDst); // chmod, chgrp, udate a spol
finally
WriteLN('finally');
if assigned(src) then
FreeAndNil(src);
if assigned(dst) then

221
udcutils.pas Normal file
View file

@ -0,0 +1,221 @@
{
Double Commander
----------------------------
Licence : GNU GPL v 2.0
Author : Alexander Koblov (Alexx2000@mail.ru)
Several useful functions
contributors:
Radek Cervinka <radek.cervinka@centrum.cz>
Part of this code got from http://www.delphirus.com.ru
}
unit uDCUtils;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Graphics;
Function cnvFormatFileSize(iSize:Int64):String;
Function MinimizeFilePath(const PathToMince: String; Canvas: TCanvas;
MaxLen: Integer): String;
function FileMaskEquate(F, M: string): boolean;
procedure DivFileName(const sFileName:String; var n,e:String);
implementation
uses
uGlobs;
Function cnvFormatFileSize(iSize:Int64):String;
var
d:double;
begin
// writeln(iSize);
if gShortFileSizeFormat then
begin
// TODo Giga
if iSize div (1024*1024) >0 then
begin
// writeln('Div:',Trunc(iSize*10 /(1024*1024))/10);
Result:=FloatToStrF((iSize*10 div (1024*1024))/10, ffFixed, 15, 1)+'M'
end
else
if iSize div 1024 >0 then
begin
Result:=FloatToStrF((iSize*10 div 1024)/10, ffFixed, 15, 1)+'K'
end
else
Result:=IntToStr(iSize);
end
else
begin
d:=iSize;
Result:=Format('%8.0n',[d]);
end;
end;
{=========================================================}
Function MinimizeFilePath(const PathToMince: String; Canvas: TCanvas;
MaxLen: Integer): String;
{=========================================================}
// "C:\Program Files\Delphi\DDropTargetDemo\main.pas"
// "C:\Program Files\..\main.pas"
Var
sl: TStringList;
sHelp, sFile,
sFirst: String;
iPos: Integer;
Begin
sHelp := PathToMince;
iPos := Pos(PathDelim, sHelp);
If iPos = 0 Then
Begin
Result := PathToMince;
End
Else
Begin
sl := TStringList.Create;
// Decode string
While iPos <> 0 Do
Begin
sl.Add(Copy(sHelp, 1, (iPos - 1)));
sHelp := Copy(sHelp, (iPos + 1), Length(sHelp));
iPos := Pos(PathDelim, sHelp);
End;
If sHelp <> '' Then
Begin
sl.Add(sHelp);
End;
// Encode string
sFirst := sl[0];
sFile := sl[sl.Count - 1];
sl.Delete(sl.Count - 1);
Result := '';
MaxLen := MaxLen - Canvas.TextWidth('XXX');
if (sl.Count <> 0) and (Canvas.TextWidth(Result + sl[0] + PathDelim + sFile) < MaxLen) then
begin
While (sl.Count <> 0) and (Canvas.TextWidth(Result + sl[0] + PathDelim + sFile) < MaxLen) Do
Begin
Result := Result + sl[0] + PathDelim;
sl.Delete(0);
End;
If sl.Count = 0 Then
Begin
Result := Result + sFile;
End
Else
Begin
Result := Result + '..' + PathDelim + sFile;
End;
end
else
If sl.Count = 0 Then
Begin
Result := sFirst + PathDelim;
End
Else
Begin
Result := sFirst + PathDelim + '..' + PathDelim + sFile;
End;
sl.Free;
End;
//WriteLN('PathX ' , Result);
if Canvas.TextWidth(Result) > MaxLen + Canvas.TextWidth('XXX') then
begin
while Canvas.TextWidth(Result) > MaxLen do
begin
Delete(Result, Length(Result), 1);
end;
Result := Copy(Result, 1, Length(Result) - 3) + '...';
end;
End;
procedure DivFileName(const sFileName:String; var n,e:String);
var
i:Integer;
begin
for i:= length(sFileName) downto 1 do
if sFileName[i]='.' then
begin
// if i>1 then // hidden files??
e:=Copy(sFileName,i,Length(sFileName)-i+1);
n:=Copy(sFileName,1,i-1);
Exit;
end;
e:='';
n:=sFileName;
end;
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Ïðîâåðêà íà ñîîòâåòñòâèå èìåíè ôàéëà çàäàííîé ìàñêå
Çàâèñèìîñòè: sysutils
Àâòîð: Dmitry Raduzhan
Copyright: Dmitry Raduzhan
Äàòà: 24 ìàðòà 2004 ã.
***************************************************** }
function FileMaskEquate(F, M: string): boolean;
var
Fl, Ml: byte; // length of file name and mask
Fp, Mp: byte; // pointers
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 //
end;
end;
end;
end.

View file

@ -8,7 +8,6 @@ Licence : GNU GPL v 2.0
Author : radek.cervinka@centrum.cz
contributors:
Koblov Alexander (Alexx2000@mail.ru)
}
unit uFileOpThread;
@ -74,7 +73,7 @@ const
implementation
uses
SysUtils, uLng, uFilter, uFileProcs, Forms, FindEx, uOSUtils;
SysUtils, uLng, uFileProcs, Forms, FindEx, uDCUtils, uOSUtils;
{ TFileOpThread }

View file

@ -25,7 +25,7 @@ type
private
fFileList:TFileList;
fVFS : TVFS;
flblPath:TStaticText;
flblPath:TLabel;
fPanel:TDrawGrid;
fSortCol:Integer;
fSortDirect:Boolean;
@ -46,7 +46,7 @@ type
public
// iLastDrawnIndex :Integer; // fucking dirty hack (OnDrawItem
constructor Create(APanel:TDrawGrid; AlblPath: TStaticText; AlblCurPath, AlblFree:TLabel; AedtCommand:TComboBox);
constructor Create(APanel:TDrawGrid; AlblPath: TLabel; AlblCurPath, AlblFree:TLabel; AedtCommand:TComboBox);
Destructor Destroy; override;
procedure LoadPanel;
procedure LoadPanelVFS(frp:PFileRecItem);
@ -93,10 +93,10 @@ implementation
uses
SysUtils, uFileOp, uGlobs,
uShowMsg, Controls, uFilter, uConv, uLng, uShowForm,
uShowMsg, Controls, uLng, uShowForm, uDCUtils,
uOSUtils;
constructor TFilePanel.Create(APanel:TDrawGrid; AlblPath: TStaticText; AlblCurPath, AlblFree:TLabel; AedtCommand:TComboBox);
constructor TFilePanel.Create(APanel:TDrawGrid; AlblPath: TLabel; AlblCurPath, AlblFree:TLabel; AedtCommand:TComboBox);
begin
fPanel:=APanel;
fRefList:=TList.Create;
@ -134,12 +134,17 @@ var
bAnyRow:Boolean;
begin
case fPanelMode of
pmDirectory: flblPath.Caption:=' '+ActiveDir;
pmArchive: flblPath.Caption:=' '+ExtractFileName(fPathHistory.GetLastPath)+':'+ActiveDir;
pmFTP: flblPath.Caption:=' fix me: FTP is only prepared';
pmDirectory:
flblPath.Caption:=' '+MinimizeFilePath(ActiveDir, flblPath.Canvas, flblPath.Width);
pmArchive:
flblPath.Caption:=' '+ExtractFileName(fPathHistory.GetLastPath)+':'+ActiveDir;
pmFTP:
flblPath.Caption:=' fix me: FTP is only prepared';
else
Raise Exception.Create('fix me:UpdatePanel:bad panelmode');
end;
//flblPath.Height := 14;
//WriteLN('Path = ', flblPath.Caption);
// writeln('fPanel.Row:',fPanel.Row);
// writeln('TFilePanel:', fFileList.Count);
bAnyRow:=fPanel.Row>=0;
@ -501,23 +506,16 @@ end;
procedure TFilePanel.MarkGroup(const sMask:String; bSelect:Boolean);
var
flt:TFilter;
i:Integer;
frp:PFileRecItem;
begin
flt:=TFilter.Create;
try
flt.FileMask:=sMask;
for i:=0 to fFileList.Count-1 do
begin
frp:=fFileList.GetItem(i);
if (frp^.sName='..') then Continue;
if flt.CheckFileMask(frp^.sName) then
if FileMaskEquate(frp^.sName, sMask) then
frp^.bSelected := bSelect;
end;
finally
FreeAndNil(flt);
end;
end;
procedure TFilePanel.UpdatePrompt;

View file

@ -1,122 +0,0 @@
{
Seksi Commander
----------------------------
Licence : GNU GPL v 2.0
Author : radek.cervinka@centrum.cz
check file name with wildcards
contributors:
}
unit uFilter;
{$mode objfpc}{$H+}
interface
type
TFilter=Class
protected
FMaskFileName:String;
FMaskFileExt:String;
FbNameHasWild:Boolean;
FbExtHasWild:Boolean;
procedure SetFileMask(const Value:String);
function GetFileMask:String;
public
constructor Create;
Function CheckFileMask(const s:String):Boolean;
property FileMask:String read GetFileMask write SetFileMask;
end;
procedure DivFileName(const sFileName:String; var n,e:String);
implementation
uses
SysUtils;
procedure DivFileName(const sFileName:String; var n,e:String);
var
i:Integer;
begin
for i:= length(sFileName) downto 1 do
if sFileName[i]='.' then
begin
// if i>1 then // hidden files??
e:=Copy(sFileName,i,Length(sFileName)-i+1);
n:=Copy(sFileName,1,i-1);
Exit;
end;
e:='';
n:=sFileName;
end;
constructor TFilter.Create;
begin
inherited;
FileMask:='*.*';
end;
procedure TFilter.SetFileMask(const Value:String);
begin
DivFileName(Value,FMaskFileName, FMaskFileExt);
FbNameHasWild:=pos('*',FMaskFileName)>0;
FbExtHasWild:=pos('*',FMaskFileExt)>0;
if FbNameHasWild then
FMaskFileName:=StringReplace(FMaskFileName,'*','',[rfReplaceAll]);
if FbExtHasWild then
FMaskFileExt:=StringReplace(FMaskFileExt,'*','',[rfReplaceAll]);
end;
function TFilter.GetFileMask:String;
begin
Result:=FMaskFileName+FMaskFileExt;
end;
Function TFilter.CheckFileMask(const s:String):Boolean;
var
sName, sExt:String;
bNameOK, bExtOK:Boolean;
begin
DivFileName(s,sName, sExt);
// only needed tests are performed
// First we check if mask exists or only *.*
bNameOK:=(FMaskFileName='');
bExtOK:=(FMaskFileExt='.');
Result:=bNameOK AND bExtOK;
if Result then Exit;
// check if strings is =
if not bNameOK then
begin
if FMaskFileName=sName then
bNameOK:=True;
end;
if not bExtOK then
begin
if FMaskFileExt=sExt then
bExtOK:=True;
end;
Result:=bNameOK AND bExtOK;
if Result then Exit;
// now examine *bla* -- case sensitive
if FbNameHasWild and not bNameOK then
begin
if Pos(FMaskFileName,s)>0 then
bNameOK:=True;
end;
if FbExtHasWild and not bExtOK then
begin
if Pos(FMaskFileExt,s)>0 then
bExtOK:=True;
end;
Result:=bNameOK AND bExtOK;
if Result then Exit;
//
end;
end.

View file

@ -1,221 +1,297 @@
{
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)
}
{.$threading on}
unit uFindThread;
{$mode objfpc}{$H+}
{$DEFINE NOFAKETHREAD}
interface
uses
Classes, StdCtrls, uFilter {$IFNDEF NOFAKETHREAD}, uFakeThread{$ENDIF};
type
{$IFDEF NOFAKETHREAD}
TFindThread = class(TThread)
{$ELSE}
TFindThread = class(TFakeThread)
{$ENDIF}
private
{ Private declarations }
FPathStart:String;
FItems: TStrings;
FFindInFiles:Boolean;
FStatus: TLabel;
FCurrent: TLabel;
FCurrentFile:String;
FFilesScaned:Integer;
FFoundFile:String;
FFindData:String;
FCaseSens:Boolean;
FFilter:TFilter; // filter mask object
protected
procedure Execute; override;
public
constructor Create;
destructor Destroy; override;
procedure AddFile;
procedure WalkAdr(const sNewDir:String);
procedure UpDateProgress;
procedure SetFilterMask(const Val:String);
function GetFilterMask:String;
property FilterMask:String read GetFilterMask write SetFilterMask;
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;
end;
implementation
uses
SysUtils, 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}
var
fs:TFileStream;
s:Char;
i:Integer;
lastPos:Integer;
begin
Result:=False;
if sData='' then Exit;
fs:=TFileStream.Create(sFileName,fmOpenRead);
if not bCase then
sData:=AnsiUpperCase(sData);
try
try
while fs.Position<=fs.Size do
begin
fs.Read(s,1);
lastPos:=fs.Position;
i:=1;
if not bCase then
s:=UpCase(s); // neni case sensitivni
while (i<=length(sData)) and (s=sdata[i]) do
begin
fs.Read(s,1);
inc(i);
end;
if i>length(sData) then
Result:=True; // nalezeno
if fs.Position<>lastPos then
fs.Seek(lastPos,soFromBeginning);
end; // while
finally
fs.Free;
end;
except
On E:Exception do
ShowMessage('Chyba (FindData):'+E.Message);
end;
end;
{$ELSE} // *nix
begin
Result := FindMmap(sFileName, sData, bCase);
end;
{$ENDIF}
procedure TFindThread.WalkAdr(const sNewDir:String);
var
sr: TSearchRec;
begin
writeln(sNewDir);
if not SetCurrentDir(sNewDir) then Exit;
if FindFirst('*', faAnyFile, sr)<>0 then Exit;
repeat
if (sr.Name='.') or (sr.Name='..') then Continue;
inc(FFilesScaned);
writeln(sr.Name);
if FFindInFiles then
begin
if FFilter.CheckFileMask(sr.Name) and FindInFile(sNewDir+DirectorySeparator+sr.Name,FFindData,FCaseSens) then
begin
fFoundFile:=sNewDir+DirectorySeparator+sr.Name;
Synchronize(@AddFile);
end;
end
else
if FFilter.CheckFileMask(sr.Name)then
begin
fFoundFile:=sNewDir+DirectorySeparator+sr.Name;
Synchronize(@AddFile);
end;
FCurrentFile:=sNewDir+DirectorySeparator+sr.Name;
Synchronize(@UpDateProgress);
if (sr.Attr and faDirectory)>0 then
WalkAdr(sNewDir+DirectorySeparator+sr.Name);
until (FindNext(sr)<>0)or terminated;
FindClose(sr);
end;
procedure TFindThread.SetFilterMask(const Val:String);
begin
FFilter.FileMask:=Val;
end;
function TFindThread.GetFilterMask:String;
begin
Result:=FFilter.FileMask;
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;
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.

View file

@ -27,7 +27,7 @@ type
implementation
uses
uFileProcs, SysUtils, uLng, uFilter, uOSUtils;
uFileProcs, SysUtils, uLng, uDCUtils, uOSUtils;
procedure TMoveThread.MainExecute;