mirror of https://gitlab.com/basile.b/dexed.git
added mini-explorer widget
This commit is contained in:
parent
0311b67e2c
commit
99325b3db4
|
@ -134,7 +134,7 @@
|
|||
<PackageName Value="LCL"/>
|
||||
</Item6>
|
||||
</RequiredPackages>
|
||||
<Units Count="17">
|
||||
<Units Count="18">
|
||||
<Unit0>
|
||||
<Filename Value="coedit.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
|
@ -244,6 +244,14 @@
|
|||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="ce_dlangutils"/>
|
||||
</Unit16>
|
||||
<Unit17>
|
||||
<Filename Value="..\src\ce_miniexplorer.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="CEMiniExplorerWidget"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="ce_miniexplorer"/>
|
||||
</Unit17>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
|
|
@ -10,7 +10,7 @@ uses
|
|||
AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg,
|
||||
ce_widget, ce_dmdwrap, ce_common, ce_synmemo, ce_main, ce_messages, ce_editor,
|
||||
ce_projinspect, ce_projconf, jsonparser, ce_project, ce_widgettypes,
|
||||
ce_staticexplorer, ce_search, ce_dlang, ce_dlangutils;
|
||||
ce_staticexplorer, ce_search, ce_dlang, ce_dlangutils, ce_miniexplorer;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
|
|
|
@ -118,6 +118,31 @@ type
|
|||
*)
|
||||
function getDocPath: string;
|
||||
|
||||
(**
|
||||
* Fills aList with the names of the files located in aPath.
|
||||
*)
|
||||
procedure listFiles(const aList: TStrings; const aPath: string);
|
||||
|
||||
(**
|
||||
* Fills aList with the names of the folders located in aPath.
|
||||
*)
|
||||
procedure listFolders(const aList: TStrings; const aPath: string);
|
||||
|
||||
(**
|
||||
* Checks if aPath contains at least one sub-folder
|
||||
*)
|
||||
function hasFolder(const aPath: string): boolean;
|
||||
|
||||
(**
|
||||
* Fills aList with the system drives.
|
||||
*)
|
||||
procedure listDrives(const aList: TStrings);
|
||||
|
||||
(**
|
||||
* Lets the shell open a file
|
||||
*)
|
||||
function shellOpen(const aFilename: string): boolean;
|
||||
|
||||
implementation
|
||||
|
||||
procedure TProcessEx.Assign(aValue: TPersistent);
|
||||
|
@ -430,4 +455,105 @@ begin
|
|||
result += directorySeparator + 'Coedit' + directorySeparator;
|
||||
end;
|
||||
|
||||
procedure listFiles(const aList: TStrings; const aPath: string);
|
||||
var
|
||||
sr: TSearchrec;
|
||||
procedure tryAdd;
|
||||
begin
|
||||
if sr.Attr and faDirectory <> faDirectory then
|
||||
aList.Add(aPath + directorySeparator + sr.Name);
|
||||
end;
|
||||
begin
|
||||
if findFirst(aPath + directorySeparator + '*.*', faAnyFile, sr) = 0 then
|
||||
try
|
||||
repeat tryAdd;
|
||||
until findNext(sr) <> 0;
|
||||
finally
|
||||
sysutils.FindClose(sr);
|
||||
end;
|
||||
end;
|
||||
|
||||
function isFolder(sr: TSearchRec): boolean;
|
||||
begin
|
||||
result := (sr.Name <> '.') and (sr.Name <> '..' )and (sr.Name <> '' ) and
|
||||
(sr.Attr and faDirectory = faDirectory);
|
||||
end;
|
||||
|
||||
procedure listFolders(const aList: TStrings; const aPath: string);
|
||||
var
|
||||
sr: TSearchrec;
|
||||
begin
|
||||
if findFirst(aPath + '*.*', faDirectory, sr) = 0 then
|
||||
try
|
||||
repeat if isFolder(sr) then
|
||||
aList.Add(aPath + sr.Name);
|
||||
until findNext(sr) <> 0;
|
||||
finally
|
||||
sysutils.FindClose(sr);
|
||||
end;
|
||||
end;
|
||||
|
||||
function hasFolder(const aPath: string): boolean;
|
||||
var
|
||||
sr: TSearchrec;
|
||||
res: boolean;
|
||||
begin
|
||||
res := false;
|
||||
if findFirst(aPath + directorySeparator + '*.*', faDirectory, sr) = 0 then
|
||||
try
|
||||
repeat if isFolder(sr) then
|
||||
begin
|
||||
res := true;
|
||||
break;
|
||||
end;
|
||||
until findNext(sr) <> 0;
|
||||
finally
|
||||
sysutils.FindClose(sr);
|
||||
end;
|
||||
result := res;
|
||||
end;
|
||||
|
||||
procedure listDrives(const aList: TStrings);
|
||||
{$IFDEF WINDOWS}
|
||||
var
|
||||
drv: char;
|
||||
ltr: string;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$IFDEF WINDOWS}
|
||||
for drv := 'A' to 'Z' do
|
||||
begin
|
||||
ltr := drv + ':\';
|
||||
case GetDriveType(PChar(ltr)) of
|
||||
DRIVE_REMOVABLE,
|
||||
DRIVE_FIXED,
|
||||
DRIVE_REMOTE: aList.Add(ltr);
|
||||
end;
|
||||
end;
|
||||
{$ENDIF}
|
||||
{$IFDEF LINUX}
|
||||
// aList.LoadFromFile('/etc/fstab'); // to be parsed
|
||||
aList.Add('/home/');
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
function shellOpen(const aFilename: string): boolean;
|
||||
begin
|
||||
{$IFDEF WINDOWS}
|
||||
result := ShellExecute(0, 'OPEN', PChar(aFilename), nil, nil, SW_SHOW) > 32;
|
||||
{$ENDIF}
|
||||
{$IFDEF LINUX}
|
||||
with TProcess.Create(nil) do
|
||||
try
|
||||
Executable := 'xdg-open'
|
||||
Parameters.Add(aFilename);
|
||||
Execute;
|
||||
finally
|
||||
result := true;
|
||||
Free;
|
||||
end;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
|
|
@ -251,10 +251,13 @@ begin
|
|||
CEMainForm.MessageWidget.ClearMessages(msEditor);
|
||||
lex(ed.Lines.Text, tokLst);
|
||||
|
||||
checkSyntacticErrors(tokLst, errLst);
|
||||
for err in errLst do
|
||||
CEMainForm.MessageWidget.addMessage(format( '%s (@line:%4.d @char:%.4d)',
|
||||
[err.msg, err.position.y, err.position.x]), msEditor);
|
||||
if ed.isDSource then
|
||||
begin
|
||||
checkSyntacticErrors(tokLst, errLst);
|
||||
for err in errLst do
|
||||
CEMainForm.MessageWidget.addMessage(format( '%s (@line:%4.d @char:%.4d)',
|
||||
[err.msg, err.position.y, err.position.x]), msEditor);
|
||||
end;
|
||||
|
||||
md := '';
|
||||
if ed.isDSource then
|
||||
|
|
|
@ -9,7 +9,7 @@ uses
|
|||
AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, Controls, Graphics,
|
||||
Dialogs, Menus, ActnList, ExtCtrls, process, XMLPropStorage, ComCtrls,
|
||||
ce_common, ce_dmdwrap, ce_project, ce_synmemo, ce_widget, ce_messages,
|
||||
ce_editor, ce_projinspect, ce_projconf, ce_staticexplorer, ce_search;
|
||||
ce_editor, ce_projinspect, ce_projconf, ce_staticexplorer, ce_search, ce_miniexplorer;
|
||||
|
||||
type
|
||||
|
||||
|
@ -204,6 +204,7 @@ type
|
|||
fPrjCfWidg: TCEProjectConfigurationWidget;
|
||||
fStExpWidg: TCEStaticExplorerWidget;
|
||||
fFindWidg: TCESearchWidget;
|
||||
fExplWidg: TCEMiniExplorerWidget;
|
||||
fProjMru: TMruFileList;
|
||||
fFileMru: TMruFileList;
|
||||
|
||||
|
@ -302,12 +303,13 @@ var
|
|||
itm: TMenuItem;
|
||||
begin
|
||||
fWidgList := TCEWidgetList.Create;
|
||||
fMesgWidg := TCEMessagesWidget.create(nil);
|
||||
fEditWidg := TCEEditorWidget.create(nil);
|
||||
fProjWidg := TCEProjectInspectWidget.create(nil);
|
||||
fPrjCfWidg:= TCEProjectConfigurationWidget.create(nil);
|
||||
fStExpWidg:= TCEStaticExplorerWidget.create(nil);
|
||||
fFindWidg := TCESearchWidget.create(nil);
|
||||
fMesgWidg := TCEMessagesWidget.create(self);
|
||||
fEditWidg := TCEEditorWidget.create(self);
|
||||
fProjWidg := TCEProjectInspectWidget.create(self);
|
||||
fPrjCfWidg:= TCEProjectConfigurationWidget.create(self);
|
||||
fStExpWidg:= TCEStaticExplorerWidget.create(self);
|
||||
fFindWidg := TCESearchWidget.create(self);
|
||||
fExplWidg := TCEMiniExplorerWidget.create(self);
|
||||
|
||||
fWidgList.addWidget(@fMesgWidg);
|
||||
fWidgList.addWidget(@fEditWidg);
|
||||
|
@ -315,6 +317,7 @@ begin
|
|||
fWidgList.addWidget(@fPrjCfWidg);
|
||||
fWidgList.addWidget(@fStExpWidg);
|
||||
fWidgList.addWidget(@fFindWidg);
|
||||
fWidgList.addWidget(@fExplWidg);
|
||||
|
||||
for widg in fWidgList do
|
||||
begin
|
||||
|
@ -353,16 +356,18 @@ begin
|
|||
DockMaster.GetAnchorSite(fWidgList.widget[i]).Header.HeaderPosition := adlhpTop;
|
||||
end;
|
||||
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fEditWidg), DockMaster.GetSite(Self), alBottom);
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fMesgWidg), DockMaster.GetSite(Self), alBottom);
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fStExpWidg), DockMaster.GetSite(Self), alLeft);
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fEditWidg), Self, alBottom);
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fMesgWidg), Self, alBottom);
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fStExpWidg), Self, alLeft);
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fFindWidg),
|
||||
DockMaster.GetAnchorSite(fStExpWidg), alBottom, fStExpWidg);
|
||||
width := width - fProjWidg.Width;
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fProjWidg), DockMaster.GetSite(Self), alRight);
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fProjWidg), Self, alRight);
|
||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fPrjCfWidg),
|
||||
DockMaster.GetAnchorSite(fProjWidg), alBottom, fProjWidg);
|
||||
DockMaster.GetAnchorSite(fEditWidg).Header.HeaderPosition := adlhpTop;
|
||||
|
||||
//DockMaster.GetAnchorSite(fExplWidg).Close;
|
||||
end;
|
||||
|
||||
procedure TCEMainForm.InitSettings;
|
||||
|
@ -424,12 +429,6 @@ begin
|
|||
SaveDocking;
|
||||
//
|
||||
fWidgList.Free;
|
||||
fMesgWidg.Free;
|
||||
fEditWidg.Free;
|
||||
fProjWidg.Free;
|
||||
fPrjCfWidg.Free;
|
||||
fStExpWidg.Free;
|
||||
fFindWidg.Free;
|
||||
fProjMru.Free;
|
||||
fFileMru.Free;
|
||||
fProject.Free;
|
||||
|
@ -1490,18 +1489,18 @@ begin
|
|||
end;
|
||||
|
||||
procedure TCEOptions.defineProperties(Filer: TFiler);
|
||||
var
|
||||
widg: TCEWidget;
|
||||
begin
|
||||
inherited;
|
||||
// Filer is either a TReader or a TWriter
|
||||
CEMainForm.fEditWidg.declareProperties(Filer);
|
||||
CEMainForm.fFindWidg.declareProperties(Filer);
|
||||
CEMainForm.fMesgWidg.declareProperties(Filer);
|
||||
CEMainForm.fPrjCfWidg.declareProperties(Filer);
|
||||
CEMainForm.fProjWidg.declareProperties(Filer);
|
||||
CEMainForm.fStExpWidg.declareProperties(Filer);
|
||||
for widg in CEMainForm.WidgetList do
|
||||
widg.declareProperties(Filer);
|
||||
end;
|
||||
|
||||
procedure TCEOptions.beforeSave;
|
||||
var
|
||||
widg: TCEWidget;
|
||||
begin
|
||||
fLeft := CEMainForm.Left;
|
||||
fTop := CEMainForm.Top;
|
||||
|
@ -1511,12 +1510,8 @@ begin
|
|||
fFileMru.Assign(CEMainForm.fFileMru);
|
||||
fProjMru.Assign(CEMainForm.fProjMru);
|
||||
//
|
||||
CEMainForm.fEditWidg.beforeSave(nil);
|
||||
CEMainForm.fFindWidg.beforeSave(nil);
|
||||
CEMainForm.fMesgWidg.beforeSave(nil);
|
||||
CEMainForm.fPrjCfWidg.beforeSave(nil);
|
||||
CEMainForm.fProjWidg.beforeSave(nil);
|
||||
CEMainForm.fStExpWidg.beforeSave(nil);
|
||||
for widg in CEMainForm.WidgetList do
|
||||
widg.beforeSave(nil);
|
||||
end;
|
||||
|
||||
procedure TCEOptions.saveToFile(const aFilename: string);
|
||||
|
@ -1534,6 +1529,8 @@ begin
|
|||
end;
|
||||
|
||||
procedure TCEOptions.afterLoad;
|
||||
var
|
||||
widg: TCEWidget;
|
||||
begin
|
||||
CEMainForm.Left := fLeft;
|
||||
CEMainForm.Top := fTop;
|
||||
|
@ -1543,12 +1540,8 @@ begin
|
|||
CEMainForm.fFileMru.Assign(fFileMru);
|
||||
CEMainForm.fProjMru.Assign(fProjMru);
|
||||
//
|
||||
CEMainForm.fEditWidg.afterLoad(nil);
|
||||
CEMainForm.fFindWidg.afterLoad(nil);
|
||||
CEMainForm.fMesgWidg.afterLoad(nil);
|
||||
CEMainForm.fPrjCfWidg.afterLoad(nil);
|
||||
CEMainForm.fProjWidg.afterLoad(nil);
|
||||
CEMainForm.fStExpWidg.afterLoad(nil);
|
||||
for widg in CEMainForm.WidgetList do
|
||||
widg.afterLoad(nil);
|
||||
end;
|
||||
{$ENDREGION}
|
||||
|
||||
|
|
|
@ -0,0 +1,469 @@
|
|||
inherited CEMiniExplorerWidget: TCEMiniExplorerWidget
|
||||
Left = 1539
|
||||
Height = 651
|
||||
Top = 6
|
||||
Caption = 'Mini explorer'
|
||||
ClientHeight = 651
|
||||
inherited Back: TPanel
|
||||
Height = 651
|
||||
ClientHeight = 651
|
||||
inherited Content: TPanel
|
||||
Height = 651
|
||||
ClientHeight = 651
|
||||
object lstFiles: TListView[0]
|
||||
Left = 4
|
||||
Height = 275
|
||||
Top = 372
|
||||
Width = 324
|
||||
Align = alClient
|
||||
AutoWidthLastColumn = True
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Right = 4
|
||||
BorderSpacing.Bottom = 4
|
||||
Columns = <
|
||||
item
|
||||
Width = 320
|
||||
end>
|
||||
ReadOnly = True
|
||||
ShowColumnHeaders = False
|
||||
SmallImages = imgList
|
||||
TabOrder = 0
|
||||
ViewStyle = vsReport
|
||||
OnDblClick = lstFilesDblClick
|
||||
end
|
||||
object Tree: TTreeView[1]
|
||||
Left = 4
|
||||
Height = 195
|
||||
Top = 171
|
||||
Width = 324
|
||||
Align = alTop
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 4
|
||||
BorderSpacing.Right = 4
|
||||
DefaultItemHeight = 18
|
||||
Images = imgList
|
||||
ReadOnly = True
|
||||
ScrollBars = ssAutoBoth
|
||||
TabOrder = 1
|
||||
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||
end
|
||||
object lstFav: TListView[2]
|
||||
Left = 4
|
||||
Height = 131
|
||||
Top = 4
|
||||
Width = 324
|
||||
Align = alTop
|
||||
AutoWidthLastColumn = True
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 4
|
||||
BorderSpacing.Right = 4
|
||||
Columns = <
|
||||
item
|
||||
Width = 320
|
||||
end>
|
||||
ReadOnly = True
|
||||
ShowColumnHeaders = False
|
||||
SmallImages = imgList
|
||||
TabOrder = 2
|
||||
ViewStyle = vsReport
|
||||
end
|
||||
object Panel1: TPanel[3]
|
||||
Left = 4
|
||||
Height = 26
|
||||
Top = 141
|
||||
Width = 324
|
||||
Align = alTop
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Right = 4
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 26
|
||||
ClientWidth = 324
|
||||
TabOrder = 3
|
||||
object btnAddFav: TBitBtn
|
||||
Left = 0
|
||||
Height = 26
|
||||
Hint = 'add selected folder to favorites'
|
||||
Top = 0
|
||||
Width = 32
|
||||
Align = alLeft
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000001E0000003300000033000000330000001E00000000469AD300469A
|
||||
D300469AD300469AD300469AD300469AD300469AD300479AD5004D99DF000000
|
||||
001E008C53AC009E5EFF009D5DFF009E5EFF008C55AC0000001E469AD3000000
|
||||
000B0000000A0000000A0000000A0000000A0000000A0000000A00000008008D
|
||||
4BAA00A668FF00BA86FF77DFC4FF00BA86FF00A66AFF008C55AC0000002F2959
|
||||
7A5F2655755C2655745C2655745C2655745C2655745C2653745A24486851009E
|
||||
52FF00C08AFF00BB82FFFFFFFFFF00BB82FF00C08CFF009E5EFF4598D0F14398
|
||||
D2FF4094D0FF3E92CFFF3E92CEFF3F92CEFF3F92CEFF4092D1FF4792DAFF009B
|
||||
4EFF75E5CAFFFFFFFFFFFFFFFFFFFFFFFFFF77E5CCFF009C5CFF4499D2FF3F94
|
||||
D0FFABFBFFFF9BF3FFFF92F1FFFF93F1FFFF93F1FFFF95F1FFFF9EF4FFFF0096
|
||||
4AFF00CA93FF00C78EFFFFFFFFFF00C88FFF00CC97FF009D5CFF4397D1FF56AC
|
||||
DDFF8EDAF5FFA2EDFFFF82E5FEFF84E5FEFF84E5FEFF86E6FFFF8DE9FFFF35BA
|
||||
9EFF00A965FF00D299FF74ECD1FF00D29AFF00AE6CFF009F56924296D1FF71C4
|
||||
EAFF6CBCE6FFBBF2FFFF75DEFDFF77DEFCFF78DEFCFF7CDFFDFF80E1FFFF89E4
|
||||
FFFF32B89EFF009549FF00954AFF00974BFF1F9E91FF000000124095D0FF90DD
|
||||
F8FF44A0D8FFDDFCFFFFDAFAFFFFDBF9FFFFDEFAFFFF74DCFCFF76DBFBFF78DB
|
||||
FEFF7CDDFFFF7FDFFFFF7FDFFFFFADECFFFF82C1EEFF3575A7703E93CFFFB2F6
|
||||
FFFF51ACDEFF358ACAFF358ACAFF358ACAFF368ACAFF5BBDE9FF6ED9FBFF6AD6
|
||||
FAFF69D5FBFF69D5FBFF68D5FCFF84DEFEFFABE1F8FF3A8AC1C83D92CFFFB8F3
|
||||
FFFF77DFFEFF7BE0FEFF7CE1FEFF7CE1FFFF7DE2FFFF52ABDDFF56B9E8FFDAF8
|
||||
FFFFD6F6FFFFD6F6FFFFD5F6FFFFD5F7FFFFDBFCFFFF3E94D0FF3C92CFFFC0F3
|
||||
FFFF70D9FBFF73DAFBFF74DAFBFF74DAFBFF74DBFBFF76DEFDFF4FA9DCFF368B
|
||||
CAFF358BCBFF338BCBFF338CCCFF3790CEFF3D94D0FF4398D2AE3B92CFFFCAF6
|
||||
FFFF69D5F9FF6CD5F9FF6AD4F9FF69D4F9FF69D5F9FF6AD6FAFF6BD8FBFF6BD9
|
||||
FCFF6BDAFDFF69DAFDFFDAFDFFFF3C93D0FF367BAA2F469AD3003B92CFFFD5F7
|
||||
FFFF60D1F9FF61D0F8FFB4EBFDFFD9F6FFFFDAF8FFFFDAF8FFFFDAF9FFFFDBF9
|
||||
FFFFDAF9FFFFDAFAFFFFDFFEFFFF3D94D0FF4599D335469AD3003D94D0FFDCFC
|
||||
FFFFD8F7FFFFD8F7FFFFDBFAFFFF358ECDFF3991CEFF3A92CFFF3A92CFFF3A92
|
||||
CFFF3A92CFFF3A92CFFF3D94D0FF4298D2EA469AD300469AD3004398D2EF3D94
|
||||
D0FF3A92CFFF3A92CFFF3D94D0FF4197D1E44398D22B4498D2324498D2334498
|
||||
D2334498D2334499D2334499D337459AD300469AD300469AD300
|
||||
}
|
||||
OnClick = btnAddFavClick
|
||||
TabOrder = 0
|
||||
end
|
||||
object btnEdit: TBitBtn
|
||||
Left = 292
|
||||
Height = 26
|
||||
Hint = 'open selected file in a Coedit-or'
|
||||
Top = 0
|
||||
Width = 32
|
||||
Align = alRight
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001340
|
||||
58FF15425EFF25699CFF2C76B4FF3B8BBAADFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001242
|
||||
59FF5D9CD4FFA6CFF5FFA9CFECFF488BC1FF2C76B4FFFFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001E6D
|
||||
93FFCBE3F9FF61AAECFF4098E8FF1567C2FF1660AAFF2C76B4FFFFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001E6D
|
||||
93FFC8E1F2FFD1E7FAFF347DB5FF3199C3FF6DC4DCFF4A9CCFFF3483C7FFFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002063
|
||||
98202689B9FFB0CBE1FF67A9C8FF60DCF5FF44D6F4FF8EEEFAFF5DB4E6FF3B8F
|
||||
D9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF002689B9FFBEE6F2FFB3F4FCFF60DCF5FF44D6F4FF8EEEFAFF5DB4
|
||||
E6FF3B8FD9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF002790BFFFC3EDF8FFB3F4FCFF60DCF5FF44D6F4FF8EEE
|
||||
FAFF5DB4E6FF3B8FD9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFC3EDF8FFB3F4FCFF60DCF5FF44D6
|
||||
F4FF8EEEFAFF5DB4E6FF3B8FD9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFC3EDF8FFB3F4FCFF60DC
|
||||
F5FF44D6F4FF8EEEFAFF5DB4E6FF3B8FD9FFFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFC3EDF8FFB3F4
|
||||
FCFF68D9F5FF6FCFF3FF599DD0FF73ABDDFF4F91C9FFFFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFC3ED
|
||||
F8FFA8E2F8FF6CAEDDFFA5CFF4FFA5CFF4FFBDDBF7FF5393CBF7FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBA
|
||||
E4FFA7D4F4FFC5E1F8FFCCE3F9FFCCE3F9FFBDDBF7FF4F90C9FDFFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF0050A8D9FF6AA5D8FFC9E1F7FFCBE3F8FF4295CAFF3182C2AEFFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF002FBAE4094FAADBEA5093CAFD4E90C8FF2F9DD2DF35A4DE19FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
OnClick = btnEditClick
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnShellOpen: TBitBtn
|
||||
Left = 260
|
||||
Height = 26
|
||||
Hint = 'open the selected file with the shell'
|
||||
Top = 0
|
||||
Width = 32
|
||||
Align = alRight
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
|
||||
FF00FFFFFF0027A8DC37FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF0029ACDED527A9DCE925A6DB0CFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF002BAFDF0C2DAEDFFF2BABDEFF25A6DB8AFFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF002BAFDFCF4FBCE7FF4CBAE6FF26A7DCED24A4DB17FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF002BAFDFFF84D3F2FF55BDE7FF2EAADEFF24A4
|
||||
DB90FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF002DB2E0C070CCEEFF83D2F2FF7ECEF1FF4AB6
|
||||
E4FF24A5DBF122A2DA17FFFFFF00FFFFFF00FFFFFF00FFFFFF0038C2E7F036C0
|
||||
E6F835BDE5F833BBE4F831B8E3F82FB6E2F886D7F3FF2FB6EBFF4ABCECFF80CE
|
||||
F1FF51B9E6FF2CA8DDFF23A2DA9DFFFFFF00FFFFFF00FFFFFF003AC4E8E975DA
|
||||
F2FF93E6F8FF91E3F7FF8DE0F6FF8ADCF5FF8ADBF5FF88D7F4FF84D3F2FF7FCF
|
||||
F1FF7CCCF0FF7AC9EFFF48B4E3FF23A3DAF5209ED823FFFFFF003BC7E9374FCD
|
||||
ECFF98E9F9FF4AD5F3FF45CFF1FF40CAF0FF38C2EEFF89D9F4FF2EB4E1FE2CB1
|
||||
E0F82BAEDFF829ACDEF827A9DCF825A6DBF823A3DAE9FFFFFF00FFFFFF003BC7
|
||||
E9F480E1F5FF8EE6F8FF43D2F3FF3FCDF1FF39C7EFFF8CDCF5FF58C6EAFF2EB4
|
||||
E174FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003DC9
|
||||
EA545BD4EFFF99EAF9FF47D6F4FF42D0F2FF3DCBF0FF6ED5F3FF7FD7F3FF4AC0
|
||||
E7FF2FB4E14AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF003DCAEAF993E9F9FF72E1F7FF45D4F3FF41CEF2FF3CC9F0FF8ADCF5FF70D0
|
||||
EFFF3DBBE4FF2FB5E123FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF003FCCEB8364D9F1FF9AEBFAFF48D8F4FF44D3F3FF3FCEF1FF3AC8F0FF8CDC
|
||||
F5FF62CBEDFF31B8E3FCFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF003FCCEBFD9AEDFAFF99EBF9FF97E8F9FF94E5F8FF91E2F7FF8EDF
|
||||
F6FF8BDBF5FF56C7EBFF31B8E3F3FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF0040CEECA23FCCEBFF3ECBEAFF3CC9E9FF3BC7E9FF3AC4E8FF38C2
|
||||
E7FF36C0E6FF35BDE5FF33BBE4FF31B8E3E1FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
OnClick = btnShellOpenClick
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnRemFav: TBitBtn
|
||||
Left = 32
|
||||
Height = 26
|
||||
Hint = 'remove selected folder from the favorites'
|
||||
Top = 0
|
||||
Width = 32
|
||||
Align = alLeft
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000001E0000003300000033000000330000001E00000000469AD300469A
|
||||
D300469AD300469AD300469AD300469AD300469AD300469BD30048A2D3000000
|
||||
001E3044B4AC384DCCFF384DCBFF384DCCFF3145B4AC0000001E469AD3000000
|
||||
000B0000000A0000000A0000000A0000000A0000000A0000000A000000082F3D
|
||||
B4AA3851D7FF385DF9FF375DFAFF385DF9FF3852D7FF3044B4AC0000002F2959
|
||||
7A5F2655755C2655745C2655745C2655745C2655745C2654725A214B63513342
|
||||
CBFF4164FBFF3C60FAFF3A5DF8FF3C60FAFF4165FBFF344BCCFF4598D0F14398
|
||||
D2FF4094D0FF3E92CFFF3E92CEFF3F92CEFF3F92CEFF4094CFFF419BCFFF2E3E
|
||||
C9FFA9B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFA9BAFFFF3148CAFF4499D2FF3F94
|
||||
D0FFABFBFFFF9BF3FFFF92F1FFFF93F1FFFF93F1FFFF94F3FFFF98FCFFFF2A38
|
||||
C6FF5B75FDFF5775FEFF5473FDFF5775FEFF5D79FFFF3349CBFF4397D1FF56AC
|
||||
DDFF8EDAF5FFA2EDFFFF82E5FEFF84E5FEFF84E5FEFF86E7FEFF89EEFFFF5589
|
||||
E0FF4052D9FF6E85FFFF7289FFFF6E86FFFF4559DCFF3446CC924296D1FF71C4
|
||||
EAFF6CBCE6FFBBF2FFFF75DEFDFF77DEFCFF78DEFCFF7BDFFCFF7FE3FDFF83EC
|
||||
FFFF5186DEFF2B38C6FF2B3AC6FF2B3AC7FF3E6FCFFF000000124095D0FF90DD
|
||||
F8FF44A0D8FFDDFCFFFFDAFAFFFFDBF9FFFFDEFAFFFF74DCFCFF76DCFBFF77DD
|
||||
FBFF79E2FCFF7AE6FDFF79E7FEFFA7F4FFFF7FC6E7FF3377A4703E93CFFFB2F6
|
||||
FFFF51ACDEFF358ACAFF358ACAFF358ACAFF368ACAFF5BBDE9FF6ED9FBFF6AD6
|
||||
FAFF69D6FAFF68D6FAFF67D6FAFF83DFFCFFAAE1F6FF3A8AC1C83D92CFFFB8F3
|
||||
FFFF77DFFEFF7BE0FEFF7CE1FEFF7CE1FFFF7DE2FFFF52ABDDFF56B9E8FFDAF8
|
||||
FFFFD6F6FFFFD6F6FFFFD5F6FFFFD5F7FFFFDBFCFFFF3E94D0FF3C92CFFFC0F3
|
||||
FFFF70D9FBFF73DAFBFF74DAFBFF74DAFBFF74DBFBFF76DEFDFF4FA9DCFF368B
|
||||
CAFF358BCBFF338BCBFF338CCCFF3790CEFF3D94D0FF4398D2AE3B92CFFFCAF6
|
||||
FFFF69D5F9FF6CD5F9FF6AD4F9FF69D4F9FF69D5F9FF6AD6FAFF6BD8FBFF6BD9
|
||||
FCFF6BDAFDFF69DAFDFFDAFDFFFF3C93D0FF367BAA2F469AD3003B92CFFFD5F7
|
||||
FFFF60D1F9FF61D0F8FFB4EBFDFFD9F6FFFFDAF8FFFFDAF8FFFFDAF9FFFFDBF9
|
||||
FFFFDAF9FFFFDAFAFFFFDFFEFFFF3D94D0FF4599D335469AD3003D94D0FFDCFC
|
||||
FFFFD8F7FFFFD8F7FFFFDBFAFFFF358ECDFF3991CEFF3A92CFFF3A92CFFF3A92
|
||||
CFFF3A92CFFF3A92CFFF3D94D0FF4298D2EA469AD300469AD3004398D2EF3D94
|
||||
D0FF3A92CFFF3A92CFFF3D94D0FF4197D1E44398D22B4498D2324498D2334498
|
||||
D2334498D2334499D2334499D337459AD300469AD300469AD300
|
||||
}
|
||||
OnClick = btnRemFavClick
|
||||
TabOrder = 3
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
Left = 196
|
||||
Height = 26
|
||||
Top = 0
|
||||
Width = 64
|
||||
Align = alRight
|
||||
Shape = bsTopLine
|
||||
end
|
||||
object Bevel2: TBevel
|
||||
Left = 64
|
||||
Height = 26
|
||||
Top = 0
|
||||
Width = 72
|
||||
Align = alLeft
|
||||
Shape = bsBottomLine
|
||||
end
|
||||
end
|
||||
object Splitter1: TSplitter[4]
|
||||
Cursor = crVSplit
|
||||
Left = 0
|
||||
Height = 6
|
||||
Top = 135
|
||||
Width = 332
|
||||
Align = alTop
|
||||
ResizeAnchor = akTop
|
||||
end
|
||||
object Splitter2: TSplitter[5]
|
||||
Cursor = crVSplit
|
||||
Left = 0
|
||||
Height = 6
|
||||
Top = 366
|
||||
Width = 332
|
||||
Align = alTop
|
||||
ResizeAnchor = akTop
|
||||
end
|
||||
end
|
||||
end
|
||||
object imgList: TImageList[2]
|
||||
left = 32
|
||||
Bitmap = {
|
||||
4C69050000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00B2B2B2B0AFAFAFFFADADADFFADADADFFADADADFFAEAE
|
||||
AEFFAEAEAEFFB0B0B0AC00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00AEAEAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0
|
||||
E0FFFFFFFFFFEBEBEBFFB0B0B0ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00ADADADFFFFFFFFFFE0E0E0FFE0E0E0FFFFFFFFFFA5A5
|
||||
A5FFF3F3F3FFFFFFFFFFAEAEAEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00ADADADFFFFFFFFFFE5E5E5FFE5E5E5FFFFFFFFFFBCBC
|
||||
BCFFA5A5A5FFE0E0E0FFAEAEAEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00ACACACFFFFFFFFFFEBEBEBFFEAEAEAFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFADADADFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00ACACACFFFFFFFFFFEFEFEFFFEFEFEFFFEEEEEEFFEEEE
|
||||
EEFFEFEFEFFFFFFFFFFFACACACFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00ACACACFFFFFFFFFFF5F5F5FFF5F5F5FFF5F5F5FFF5F5
|
||||
F5FFF5F5F5FFFFFFFFFFACACACFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00ADADADFFFFFFFFFFFBFBFBFFFAFAFAFFFAFAFAFFFAFA
|
||||
FAFFFBFBFBFFFFFFFFFFADADADFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00AFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFAFAFAFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00B0B0B0F2AEAEAEFFADADADFFACACACFFACACACFFACAC
|
||||
ACFFADADADFFAEAEAEFFA3A3A3C0FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF0000000030000000330000003300000033000000330000
|
||||
0033000000330000003300000023FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF004398D2B03D94D0FF3A92CFFF3A92CFFF3D94
|
||||
D0FF4197D1D24398D2004498D2004498D2004498D2004498D2004499D2004499
|
||||
D300459AD300469AD300469AD3003D94D0FFDCFCFFFFD8F7FFFFD8F7FFFFDBFA
|
||||
FFFF358ECDFF3991CEFF3A92CFFF3A92CFFF3A92CFFF3A92CFFF3B92CFFF3D94
|
||||
D0FF4398D2D7469AD300469AD3003B92CFFFD5F7FFFF60D1F9FF61D0F8FFB4EB
|
||||
FDFFD9F6FFFFDAF8FFFFDAF8FFFFDBF9FFFFDCFAFFFFDCFAFFFFDCFBFFFFE0FF
|
||||
FFFF3E95D0FF4599D333469AD3003B92CFFFCAF6FFFF69D5F9FF6CD5F9FF6BD5
|
||||
F9FF69D5F9FF69D5FAFF6AD7FBFF68D4FAFF5EC7F1FF5EC7F2FF5DC8F2FFB4E3
|
||||
F8FF3D94D0FF3F8FC669469AD3003C92CFFFC0F3FFFF71DAFBFF74DBFBFF75DB
|
||||
FCFF75DBFCFF76DCFCFF73DAFAFF449CD4FF378CCBFF368CCBFF358CCCFF348D
|
||||
CCFF3890CEFF3D94D0FF4398D2EB3D92CFFFB9F4FFFF73DBFBFF6BCCF2FF6CCD
|
||||
F3FF6CCEF3FF6DCEF3FF479CD4FF56BAE9FFDAF8FFFFD7F6FFFFD6F6FFFFD5F6
|
||||
FFFFD5F7FFFFDBFCFFFF3E94D0FF3E94D0FFABF0FFFF449DD6FF368CCBFF368C
|
||||
CBFF368CCBFF378BCBFF5CBEEAFF6FD9FBFF6AD6FAFF68D5F9FF67D4F9FF66D4
|
||||
F9FF82DEFCFFAAE0F6FF3885BCB94095D0FF8AD7F5FF44A1D8FFDDFDFFFFDAFA
|
||||
FFFFDBFAFFFFDEFAFFFF74DCFCFF76DBFAFF75DAFAFF74DAFAFF74DAFAFF72D9
|
||||
FAFFA1E8FFFF7CBFE6FF306F9C5E4296D1FF6BBEE8FF6DBDE6FFBBF2FFFF75DE
|
||||
FDFF77DEFCFF78DEFCFF7BDFFCFF7DDFFCFF7DDFFCFF7DDFFCFF7CDFFCFF80E0
|
||||
FDFFADF0FFFF4D9DD3FF0000000E4398D2FF4FA6D9FF8EDAF5FFA2EEFFFF82E5
|
||||
FEFF84E5FEFF84E5FEFF85E6FEFF85E6FEFF85E6FEFF85E6FEFF84E6FEFF96EB
|
||||
FFFF8CD8F5FF3985BCB84499D2004499D2FF3F94D0FFABFBFFFF9BF3FFFF92F1
|
||||
FFFF93F1FFFF93F1FFFF93F1FFFF93F1FFFF93F1FFFF93F1FFFF93F1FFFFA6F8
|
||||
FFFF65B8E3FF31709D5F469AD3004598D1F24398D2FF4094D0FF3E92CFFF3E92
|
||||
CEFF3F92CEFF3F92CEFF3F92CEFF3F92CEFF3F92CEFF3F92CEFF3F92CEFF3F93
|
||||
CFFF4194CEF00000000E469AD300000000300000003300000033000000330000
|
||||
0033000000330000003300000033000000330000003300000033000000330000
|
||||
00330000002F0000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000FB4DA2126B9DEFF0B97CC1CFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000EB0D9EB7CD0EAFF0A94CAF0FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF000EB8DC110EB5DC7267C8E6FFBBECFAFF50B7DFFF0A98
|
||||
CE740BA9D711FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF000FB3DAFB0EB5DBFE1EB8DCFF6FCCE8FFACE4F5FF9BE3F8FF9DDDF3FF5ABE
|
||||
E2FF17A9D7FF0AA0D4FD0889C9FCFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF000B96C87548B0D5FF93D6ECFFBDEDFBFF9CE4F8FF5FD1F3FF8ADCF6FFA4E4
|
||||
F8FF75C6E5FF369AC9FF0679B67934B4D9D05EC2E1FA60C3E2FA60C3E2FA60C3
|
||||
E2FA5FC3E2FA29A8D4E846AFD8FFB7EBF9FF6FD6F4FF55CDF2FF50CCF2FF9DDF
|
||||
F4FF369BCBFF0679B659FFFFFF0036B3DAF8FDFEFEFFFEFFFFFFFEFEFFFFFDFE
|
||||
FFFFFEFFFFFFEAF7FBFF28A4D4FD7ECDEBFF8DDEF6FF99E1F7FF75D6F4FF70C5
|
||||
E6FF0C82BED1FFFFFF00FFFFFF0035AFDAF0F7FCFEFF8EE4F8FF91DEF5FF9FE0
|
||||
F5FFACE1F6FFEFFBFEFF48B7DEFF8BD2EDFFA3E1F2FF5FBBE1FF98DDF4FF77CB
|
||||
ECFF0F83C2F6FFFFFF00FFFFFF0036AADAF2F1FAFDFF94DEF5FF93DCF4FF81D5
|
||||
F2FF60C0E9FF4FAEE1FF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594
|
||||
DAFF3594DAFFFFFFFF00FFFFFF0035ABDAFAE8F6FBFF7EC5EAFF5BAEE3FF51A8
|
||||
E1FF60AFE4FFE8F9FDFF92CCE7FFB5DBEDFFE5F6FCFFE4F5FCFFE4F5FCFFCFE4
|
||||
F1FF3594DAFFFFFFFF00FFFFFF0037A6DAFAFEFFFFFFF8FDFFFFF6FDFFFFF5FC
|
||||
FFFFE8FAFEFFACEBF9FF84DCF4FF87E3F8FF7DE0F7FF72DDF6FF68DBF5FFE9F9
|
||||
FDFF3594DAFF0166B705FFFFFF0036A1DAF9F6FCFEFFC8F2FCFFB9EFFBFFACEC
|
||||
FAFF8CE4F8FF8AE3F8FF82E1F7FF79DFF7FF6DDDF6FF61DAF5FF57D7F4FFE7F8
|
||||
FDFF3594DAFFFFFFFF00FFFFFF00369ADAF8F2FAFDFFB3EDFAFFA4E9F9FF95E6
|
||||
F8FF85E2F7FF81E1F7FF7AE0F7FF6FDDF6FF62DAF5FF54D6F3FF47D3F2FFE8F9
|
||||
FDFF3594DAFFFFFFFF00FFFFFF003594DAF7EFFAFEFFA1E9F9FF91E5F8FF81E1
|
||||
F7FF72DEF6FF63DAF5FF54D7F4FF47D3F3FF39D0F2FF2ECDF1FF26CBF0FFCAF2
|
||||
FBFF3594DAF7FFFFFF00FFFFFF00338ED9E6DCF0FAF0A7DDF4FD9EDBF4FF96DA
|
||||
F3FF8ED8F3FF86D7F3FF7FD4F2FF79D3F2FF72D2F1FF6CD0F1FF69CFF1FFC2EA
|
||||
F8FE338ED9F0FFFFFF00FFFFFF002C86D8002D88D8A62D87D8EA2D88D8F72D88
|
||||
D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D87D8F72D88
|
||||
D8F12C86D893FFFFFF00FFFFFF004398D2EF3D94D0FF3A92CFFF3A92CFFF3D94
|
||||
D0FF4197D1E44398D22B4498D2324498D2334498D2334498D2334499D2334499
|
||||
D337459AD300469AD300469AD3003D94D0FFDCFCFFFFD8F7FFFFD8F7FFFFDBFA
|
||||
FFFF358ECDFF3991CEFF3A92CFFF3A92CFFF3A92CFFF3A92CFFF3A92CFFF3D94
|
||||
D0FF4298D2EA469AD300469AD3003B92CFFFD5F7FFFF60D1F9FF61D0F8FFB4EB
|
||||
FDFFD9F6FFFFDAF8FFFFDAF8FFFFDAF9FFFFDBF9FFFFDAF9FFFFDAFAFFFFDFFE
|
||||
FFFF3D94D0FF4599D335469AD3003B92CFFFCAF6FFFF69D5F9FF6CD5F9FF6AD4
|
||||
F9FF69D4F9FF69D5F9FF6AD6FAFF6BD8FBFF6BD9FCFF6BDAFDFF69DAFDFFDAFD
|
||||
FFFF3C93D0FF367BAA2F469AD3003C92CFFFC0F3FFFF70D9FBFF73DAFBFF74DA
|
||||
FBFF74DAFBFF74DBFBFF76DEFDFF4FA9DCFF368BCAFF358BCBFF338BCBFF338C
|
||||
CCFF3790CEFF3D94D0FF4398D2AE3D92CFFFB8F3FFFF77DFFEFF7BE0FEFF7CE1
|
||||
FEFF7CE1FFFF7DE2FFFF52ABDDFF56B9E8FFDAF8FFFFD6F6FFFFD6F6FFFFD5F6
|
||||
FFFFD5F7FFFFDBFCFFFF3E94D0FF3E93CFFFB2F6FFFF51ACDEFF358ACAFF358A
|
||||
CAFF358ACAFF368ACAFF5BBDE9FF6ED9FBFF6AD6FAFF69D6FAFF68D6FAFF67D6
|
||||
FAFF83DFFCFFAAE1F6FF3A8AC1C84095D0FF90DDF8FF44A0D8FFDDFCFFFFDAFA
|
||||
FFFFDBF9FFFFDEFAFFFF74DCFCFF76DCFBFF77DDFBFF79E2FCFF7AE6FDFF79E7
|
||||
FEFFA7F4FFFF7FC6E7FF3377A4704296D1FF71C4EAFF6CBCE6FFBBF2FFFF75DE
|
||||
FDFF77DEFCFF78DEFCFF7BDFFCFF7FE3FDFF83ECFFFF5186DEFF2B38C6FF2B3A
|
||||
C6FF2B3AC7FF3E6FCFFF000000124397D1FF56ACDDFF8EDAF5FFA2EDFFFF82E5
|
||||
FEFF84E5FEFF84E5FEFF86E7FEFF89EEFFFF5589E0FF4052D9FF6E85FFFF7289
|
||||
FFFF6E86FFFF4559DCFF3446CC924499D2FF3F94D0FFABFBFFFF9BF3FFFF92F1
|
||||
FFFF93F1FFFF93F1FFFF94F3FFFF98FCFFFF2A38C6FF5B75FDFF5775FEFF5473
|
||||
FDFF5775FEFF5D79FFFF3349CBFF4598D0F14398D2FF4094D0FF3E92CFFF3E92
|
||||
CEFF3F92CEFF3F92CEFF4094CFFF419BCFFF2E3EC9FFA9B8FFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFA9BAFFFF3148CAFF0000002F29597A5F2655755C2655745C2655
|
||||
745C2655745C2655745C2654725A214B63513342CBFF4164FBFF3C60FAFF3A5D
|
||||
F8FF3C60FAFF4165FBFF344BCCFF469AD3000000000B0000000A0000000A0000
|
||||
000A0000000A0000000A0000000A000000082F3DB4AA3851D7FF385DF9FF375D
|
||||
FAFF385DF9FF3852D7FF3044B4AC469AD300469AD300469AD300469AD300469A
|
||||
D300469AD300469AD300469BD30048A2D3000000001E3044B4AC384DCCFF384D
|
||||
CBFF384DCCFF3145B4AC0000001E000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000001E000000330000
|
||||
0033000000330000001E000000004398D2EF3D94D0FF3A92CFFF3A92CFFF3D94
|
||||
D0FF4197D1E44398D22B4498D2324498D2334498D2334498D2334499D2334499
|
||||
D337459AD300469AD300469AD3003D94D0FFDCFCFFFFD8F7FFFFD8F7FFFFDBFA
|
||||
FFFF358ECDFF3991CEFF3A92CFFF3A92CFFF3A92CFFF3A92CFFF3A92CFFF3D94
|
||||
D0FF4298D2EA469AD300469AD3003B92CFFFD5F7FFFF60D1F9FF61D0F8FFB4EB
|
||||
FDFFD9F6FFFFDAF8FFFFDAF8FFFFDAF9FFFFDBF9FFFFDAF9FFFFDAFAFFFFDFFE
|
||||
FFFF3D94D0FF4599D335469AD3003B92CFFFCAF6FFFF69D5F9FF6CD5F9FF6AD4
|
||||
F9FF69D4F9FF69D5F9FF6AD6FAFF6BD8FBFF6BD9FCFF6BDAFDFF69DAFDFFDAFD
|
||||
FFFF3C93D0FF367BAA2F469AD3003C92CFFFC0F3FFFF70D9FBFF73DAFBFF74DA
|
||||
FBFF74DAFBFF74DBFBFF76DEFDFF4FA9DCFF368BCAFF358BCBFF338BCBFF338C
|
||||
CCFF3790CEFF3D94D0FF4398D2AE3D92CFFFB8F3FFFF77DFFEFF7BE0FEFF7CE1
|
||||
FEFF7CE1FFFF7DE2FFFF52ABDDFF56B9E8FFDAF8FFFFD6F6FFFFD6F6FFFFD5F6
|
||||
FFFFD5F7FFFFDBFCFFFF3E94D0FF3E93CFFFB2F6FFFF51ACDEFF358ACAFF358A
|
||||
CAFF358ACAFF368ACAFF5BBDE9FF6ED9FBFF6AD6FAFF69D5FBFF69D5FBFF68D5
|
||||
FCFF84DEFEFFABE1F8FF3A8AC1C84095D0FF90DDF8FF44A0D8FFDDFCFFFFDAFA
|
||||
FFFFDBF9FFFFDEFAFFFF74DCFCFF76DBFBFF78DBFEFF7CDDFFFF7FDFFFFF7FDF
|
||||
FFFFADECFFFF82C1EEFF3575A7704296D1FF71C4EAFF6CBCE6FFBBF2FFFF75DE
|
||||
FDFF77DEFCFF78DEFCFF7CDFFDFF80E1FFFF89E4FFFF32B89EFF009549FF0095
|
||||
4AFF00974BFF1F9E91FF000000124397D1FF56ACDDFF8EDAF5FFA2EDFFFF82E5
|
||||
FEFF84E5FEFF84E5FEFF86E6FFFF8DE9FFFF35BA9EFF00A965FF00D299FF74EC
|
||||
D1FF00D29AFF00AE6CFF009F56924499D2FF3F94D0FFABFBFFFF9BF3FFFF92F1
|
||||
FFFF93F1FFFF93F1FFFF95F1FFFF9EF4FFFF00964AFF00CA93FF00C78EFFFFFF
|
||||
FFFF00C88FFF00CC97FF009D5CFF4598D0F14398D2FF4094D0FF3E92CFFF3E92
|
||||
CEFF3F92CEFF3F92CEFF4092D1FF4792DAFF009B4EFF75E5CAFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF77E5CCFF009C5CFF0000002F29597A5F2655755C2655745C2655
|
||||
745C2655745C2655745C2653745A24486851009E52FF00C08AFF00BB82FFFFFF
|
||||
FFFF00BB82FF00C08CFF009E5EFF469AD3000000000B0000000A0000000A0000
|
||||
000A0000000A0000000A0000000A00000008008D4BAA00A668FF00BA86FF77DF
|
||||
C4FF00BA86FF00A66AFF008C55AC469AD300469AD300469AD300469AD300469A
|
||||
D300469AD300469AD300479AD5004D99DF000000001E008C53AC009E5EFF009D
|
||||
5DFF009E5EFF008C55AC0000001E000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000001E000000330000
|
||||
0033000000330000001E00000000
|
||||
}
|
||||
end
|
||||
end
|
|
@ -0,0 +1,369 @@
|
|||
unit ce_miniexplorer;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
||||
Menus, StdCtrls, ComCtrls, Buttons, ce_widget, lcltype;
|
||||
|
||||
type
|
||||
|
||||
{ TCEMiniExplorerWidget }
|
||||
TCEMiniExplorerWidget = class(TCEWidget)
|
||||
Bevel1: TBevel;
|
||||
Bevel2: TBevel;
|
||||
btnAddFav: TBitBtn;
|
||||
btnEdit: TBitBtn;
|
||||
btnShellOpen: TBitBtn;
|
||||
btnRemFav: TBitBtn;
|
||||
imgList: TImageList;
|
||||
lstFiles: TListView;
|
||||
lstFav: TListView;
|
||||
Panel1: TPanel;
|
||||
Splitter1: TSplitter;
|
||||
Splitter2: TSplitter;
|
||||
Tree: TTreeView;
|
||||
procedure btnEditClick(Sender: TObject);
|
||||
procedure btnShellOpenClick(Sender: TObject);
|
||||
procedure btnAddFavClick(Sender: TObject);
|
||||
procedure btnRemFavClick(Sender: TObject);
|
||||
procedure lstFilesDblClick(Sender: TObject);
|
||||
private
|
||||
fFavorites: TStringList;
|
||||
fLastFold: string;
|
||||
procedure optset_LastFold(aReader: TReader);
|
||||
procedure optget_LastFold(aWriter: TWriter);
|
||||
procedure optset_Favs(aReader: TReader);
|
||||
procedure optget_Favs(aWriter: TWriter);
|
||||
procedure updateFavorites;
|
||||
procedure treeSetRoots;
|
||||
procedure lstFilesFromTree;
|
||||
procedure treeScanSubFolders(aRoot: TTreeNode);
|
||||
procedure treeClick(sender: TObject);
|
||||
procedure treeChanged(Sender: TObject; Node: TTreeNode);
|
||||
procedure treeCollapsed(Sender: TObject; Node: TTreeNode);
|
||||
procedure treeExpanded(Sender: TObject; Node: TTreeNode);
|
||||
procedure treeCollapsing(Sender: TObject; Node: TTreeNode; var allow: boolean);
|
||||
procedure treeExpanding(Sender: TObject; Node: TTreeNode; var allow: boolean);
|
||||
procedure treeDeletion(Sender: TObject; Item: TTreeNode);
|
||||
procedure treeSelectionChanged(sender: TObject);
|
||||
procedure favStringsChange(sender: TObject);
|
||||
procedure fillLstFiles(const aList: TStrings);
|
||||
procedure lstDeletion(Sender: TObject; Item: TListItem);
|
||||
procedure lstFavSelect(Sender: TObject; Item: TListItem; Selected: Boolean);
|
||||
procedure shellOpenSelected;
|
||||
public
|
||||
constructor create(aIwner: TComponent); override;
|
||||
destructor destroy; override;
|
||||
//
|
||||
procedure declareProperties(aFiler: TFiler); override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
ce_main, ce_common;
|
||||
|
||||
//TODO-cbugfix: click on the expander glyph, sometime the subdirs are not scanned but the
|
||||
//fake sub still displayed
|
||||
|
||||
{$REGION Standard Comp/Obj------------------------------------------------------}
|
||||
constructor TCEMiniExplorerWidget.create(aIwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
fFavorites := TStringList.Create;
|
||||
fFavorites.onChange := @favStringsChange;
|
||||
lstFiles.OnDeletion := @lstDeletion;
|
||||
lstFav.OnDeletion := @lstDeletion;
|
||||
lstFav.OnSelectItem := @lstFavSelect;
|
||||
|
||||
Tree.OnClick := @treeClick;
|
||||
Tree.OnChange := @treeChanged;
|
||||
Tree.OnDeletion := @treeDeletion;
|
||||
Tree.OnSelectionChanged := @treeSelectionChanged;
|
||||
Tree.OnExpanded := @treeExpanded;
|
||||
Tree.OnCollapsed := @treeCollapsed;
|
||||
Tree.OnCollapsing := @treeCollapsing;
|
||||
Tree.OnExpanding := @treeExpanding;
|
||||
//
|
||||
treeSetRoots;
|
||||
end;
|
||||
|
||||
destructor TCEMiniExplorerWidget.destroy;
|
||||
begin
|
||||
fFavorites.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.lstDeletion(Sender: TObject; Item: TListItem);
|
||||
begin
|
||||
if Item.Data <> nil then
|
||||
DisposeStr(PString(Item.Data));
|
||||
end;
|
||||
{$ENDREGION}
|
||||
|
||||
{$REGION ICEWidgetPersist ------------------------------------------------------}
|
||||
procedure TCEMiniExplorerWidget.declareProperties(aFiler: TFiler);
|
||||
begin
|
||||
inherited;
|
||||
aFiler.DefineProperty(Name + '_LastFolder', @optset_LastFold, @optget_LastFold, true);
|
||||
aFiler.DefineProperty(Name + '_FavoritesFolders', @optset_Favs, @optget_Favs, true);
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.optset_LastFold(aReader: TReader);
|
||||
var
|
||||
lst: TstringList;
|
||||
begin
|
||||
fLastFold := aReader.ReadString;
|
||||
if not directoryExists(fLastFold) then exit;
|
||||
//
|
||||
lst := TStringList.Create;
|
||||
try
|
||||
listFiles(lst, fLastFold);
|
||||
fillLstFiles(lst);
|
||||
finally
|
||||
lst.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.optget_LastFold(aWriter: TWriter);
|
||||
begin
|
||||
aWriter.WriteString(fLastFold);
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.optset_Favs(aReader: TReader);
|
||||
begin
|
||||
fFavorites.DelimitedText := aReader.ReadString;
|
||||
if fLastFold <> '' then
|
||||
if fFavorites.IndexOf(fLastFold) = -1 then
|
||||
fFavorites.Add(fLastFold);
|
||||
updateFavorites;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.optget_Favs(aWriter: TWriter);
|
||||
begin
|
||||
aWriter.WriteString(fFavorites.DelimitedText);
|
||||
end;
|
||||
{$ENDREGION}
|
||||
|
||||
{$REGION Favorites -------------------------------------------------------------}
|
||||
procedure TCEMiniExplorerWidget.favStringsChange(sender: TObject);
|
||||
begin
|
||||
updateFavorites;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.updateFavorites;
|
||||
var
|
||||
itm: TListItem;
|
||||
fold: string;
|
||||
dat: PString;
|
||||
begin
|
||||
lstFav.Clear;
|
||||
for fold in fFavorites do
|
||||
begin
|
||||
itm := lstFav.Items.Add;
|
||||
itm.Caption := shortenPath(fold);
|
||||
dat := NewStr(fold);
|
||||
itm.Data := dat;
|
||||
itm.ImageIndex := 2;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.lstFavSelect(Sender: TObject; Item: TListItem; Selected: Boolean);
|
||||
var
|
||||
lst: TStringList;
|
||||
begin
|
||||
if not Selected then exit;
|
||||
//
|
||||
fLastFold := PString(Item.Data)^;
|
||||
lstFiles.Clear;
|
||||
lst := TStringList.Create;
|
||||
try
|
||||
listFiles(lst, fLastFold);
|
||||
fillLstFiles(lst);
|
||||
finally
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.btnRemFavClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
if lstFav.Selected = nil then exit;
|
||||
i := fFavorites.IndexOf(PString(lstFav.Selected.Data)^);
|
||||
if i <> -1 then fFavorites.Delete(i);
|
||||
lstFiles.Clear;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.lstFilesDblClick(Sender: TObject);
|
||||
begin
|
||||
shellOpenSelected;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.btnAddFavClick(Sender: TObject);
|
||||
begin
|
||||
if Tree.Selected = nil then exit;
|
||||
fFavorites.Add(PString(Tree.Selected.Data)^);
|
||||
end;
|
||||
{$ENDREGION}
|
||||
|
||||
{$REGION Files -----------------------------------------------------------------}
|
||||
procedure TCEMiniExplorerWidget.fillLstFiles(const aList: TStrings);
|
||||
var
|
||||
itm: TListItem;
|
||||
fname: string;
|
||||
dat: PString;
|
||||
begin
|
||||
lstFiles.Clear;
|
||||
for fname in aList do
|
||||
begin
|
||||
itm := lstFiles.Items.Add;
|
||||
itm.Caption := extractFileName(fname);
|
||||
dat := NewStr(fname);
|
||||
itm.Data := dat;
|
||||
itm.ImageIndex := 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.btnShellOpenClick(Sender: TObject);
|
||||
begin
|
||||
shellOpenSelected;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.btnEditClick(Sender: TObject);
|
||||
var
|
||||
fname: string;
|
||||
begin
|
||||
if lstFiles.Selected = nil then exit;
|
||||
if lstFiles.Selected.Data = nil then exit;
|
||||
fname := PString(lstFiles.Selected.Data)^;
|
||||
if not fileExists(fname) then exit;
|
||||
CEMainForm.openFile(fname);
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.shellOpenSelected;
|
||||
var
|
||||
fname: string;
|
||||
begin
|
||||
if lstFiles.Selected = nil then exit;
|
||||
if lstFiles.Selected.Data = nil then exit;
|
||||
fname := PString(lstFiles.Selected.Data)^;
|
||||
if not fileExists(fname) then exit;
|
||||
if not shellOpen(fname) then CEMainForm.MessageWidget.addCeErr
|
||||
(format('the shell failed to open "%s"',[shortenPath(fname,25)]));
|
||||
end;
|
||||
|
||||
{$ENDREGION}
|
||||
|
||||
{$REGION Tree ------------------------------------------------------------------}
|
||||
procedure TCEMiniExplorerWidget.treeDeletion(Sender: TObject; Item: TTreeNode);
|
||||
begin
|
||||
if Item.Data <> nil then
|
||||
DisposeStr(PString(Item.Data));
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.treeSetRoots;
|
||||
var
|
||||
drv: string;
|
||||
itm: TTreeNode;
|
||||
lst: TStringList;
|
||||
begin
|
||||
Tree.Items.Clear;
|
||||
lst := TStringList.Create;
|
||||
try
|
||||
listDrives(lst);
|
||||
for drv in lst do
|
||||
begin
|
||||
itm := Tree.Items.Add(nil, drv);
|
||||
itm.Data := NewStr(drv[1..length(drv)-1]);
|
||||
treeScanSubFolders(itm);
|
||||
end;
|
||||
finally
|
||||
lst.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.lstFilesFromTree;
|
||||
var
|
||||
lst: TStringList;
|
||||
pth: string;
|
||||
begin
|
||||
if Tree.Selected = nil then exit;
|
||||
//
|
||||
lst := TStringList.Create;
|
||||
try
|
||||
pth := PString(Tree.Selected.Data)^;
|
||||
listFiles(lst, pth);
|
||||
fillLstFiles(lst);
|
||||
finally
|
||||
lst.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.treeScanSubFolders(aRoot: TTreeNode);
|
||||
var
|
||||
lst: TStringList;
|
||||
fold: string;
|
||||
itm: TTreeNode;
|
||||
begin
|
||||
aRoot.DeleteChildren; // delete the fake item...
|
||||
lst := TStringList.Create;
|
||||
try
|
||||
listFolders(lst, PString(aRoot.Data)^ + directorySeparator);
|
||||
for fold in lst do
|
||||
begin
|
||||
itm := Tree.Items.AddChild(aRoot, extractFileName(fold));
|
||||
itm.Data := NewStr(fold);
|
||||
itm.ImageIndex := 1;
|
||||
itm.SelectedIndex := 1;
|
||||
//
|
||||
if hasFolder(fold) then
|
||||
Tree.Items.AddChild(itm,''); //...created here to show the expander glyph
|
||||
end;
|
||||
finally
|
||||
lst.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.treeCollapsing(Sender: TObject; Node: TTreeNode; var allow: boolean);
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.treeExpanding(Sender: TObject; Node: TTreeNode; var allow: boolean);
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.treeCollapsed(Sender: TObject; Node: TTreeNode);
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.treeExpanded(Sender: TObject; Node: TTreeNode);
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.treeChanged(Sender: TObject; Node: TTreeNode);
|
||||
begin
|
||||
if Node = nil then exit;
|
||||
Node.DeleteChildren;
|
||||
treeScanSubFolders(Node);
|
||||
lstFilesFromTree;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.treeSelectionChanged(sender: TObject);
|
||||
begin
|
||||
lstFilesFromTree;
|
||||
end;
|
||||
|
||||
procedure TCEMiniExplorerWidget.treeClick(sender: TObject);
|
||||
begin
|
||||
if Tree.Selected = nil then exit;
|
||||
if Tree.Selected.Expanded then exit;
|
||||
treeScanSubFolders(Tree.Selected);
|
||||
end;
|
||||
{$ENDREGION}
|
||||
|
||||
end.
|
||||
|
|
@ -176,17 +176,9 @@ end;
|
|||
|
||||
procedure TCEProjectInspectWidget.btnAddFoldClick(Sender: TObject);
|
||||
var
|
||||
dir, fname: string;
|
||||
sr: TSearchRec;
|
||||
dir, fname, ext: string;
|
||||
lst: TStringList;
|
||||
procedure doFindFile;
|
||||
var
|
||||
ext: string;
|
||||
begin
|
||||
ext := ExtractFileExt(sr.Name);
|
||||
if (ext = '.d') or (ext = '.di') then
|
||||
lst.Add(dir + DirectorySeparator + sr.Name);
|
||||
end;
|
||||
i: NativeInt;
|
||||
begin
|
||||
if fProject = nil then exit;
|
||||
//
|
||||
|
@ -195,12 +187,16 @@ begin
|
|||
else dir := '';
|
||||
if selectDirectory('sources', dir, dir, true, 0) then
|
||||
begin
|
||||
if FindFirst(dir + DirectorySeparator + '*.*', faAnyFile, sr ) = 0 then
|
||||
lst := TStringList.Create;
|
||||
try
|
||||
lst := TStringList.Create;
|
||||
doFindFile;
|
||||
while FindNext(sr) = 0 do doFindFile;
|
||||
for fname in lst do fProject.addSource(fname);
|
||||
listFiles(lst, dir);
|
||||
for i := 0 to lst.Count-1 do
|
||||
begin
|
||||
fname := lst.Strings[i];
|
||||
ext := extractFileExt(fname);
|
||||
if (ext = '.d') or (ext = '.di') then
|
||||
fProject.addSource(fname);
|
||||
end;
|
||||
finally
|
||||
lst.Free;
|
||||
end;
|
||||
|
|
|
@ -115,7 +115,12 @@ begin
|
|||
end;
|
||||
|
||||
procedure TCESynMemo.loadFromFile(const aFilename: string);
|
||||
var
|
||||
ext: string;
|
||||
begin
|
||||
ext := extractFileExt(aFilename);
|
||||
if (ext <> '.d') and (ext <> '.di') then
|
||||
Highlighter := nil;
|
||||
Lines.LoadFromFile(aFilename);
|
||||
fFilename := aFilename;
|
||||
FileAge(fFilename, fFileDate);
|
||||
|
|
Loading…
Reference in New Issue