miniexplorer, improved actions, shell open handle folders from tree & fav list

This commit is contained in:
Basile Burg 2015-10-25 19:09:16 +01:00
parent c95a1c5a13
commit b0229c846d
2 changed files with 42 additions and 12 deletions

View File

@ -35,6 +35,7 @@ inherited CEMiniExplorerWidget: TCEMiniExplorerWidget
SmallImages = imgList SmallImages = imgList
TabOrder = 0 TabOrder = 0
ViewStyle = vsReport ViewStyle = vsReport
OnEnter = lstFavEnter
end end
object Splitter1: TSplitter[1] object Splitter1: TSplitter[1]
Cursor = crVSplit Cursor = crVSplit
@ -66,6 +67,7 @@ inherited CEMiniExplorerWidget: TCEMiniExplorerWidget
ReadOnly = True ReadOnly = True
ScrollBars = ssAutoBoth ScrollBars = ssAutoBoth
TabOrder = 0 TabOrder = 0
OnEnter = TreeEnter
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
TreeLinePenStyle = psClear TreeLinePenStyle = psClear
end end
@ -96,6 +98,7 @@ inherited CEMiniExplorerWidget: TCEMiniExplorerWidget
TabOrder = 2 TabOrder = 2
ViewStyle = vsReport ViewStyle = vsReport
OnDblClick = lstFilesDblClick OnDblClick = lstFilesDblClick
OnEnter = lstFilesEnter
end end
object Panel1: TPanel object Panel1: TPanel
Left = 0 Left = 0
@ -108,7 +111,6 @@ inherited CEMiniExplorerWidget: TCEMiniExplorerWidget
ClientHeight = 28 ClientHeight = 28
ClientWidth = 335 ClientWidth = 335
TabOrder = 3 TabOrder = 3
OnClick = Panel1Click
object btnAddFav: TBitBtn object btnAddFav: TBitBtn
Left = 0 Left = 0
Height = 28 Height = 28
@ -136,7 +138,7 @@ inherited CEMiniExplorerWidget: TCEMiniExplorerWidget
object btnShellOpen: TBitBtn object btnShellOpen: TBitBtn
Left = 56 Left = 56
Height = 28 Height = 28
Hint = 'open the selected file with the shell' Hint = 'open the selected file or folder with the shell'
Top = 0 Top = 0
Width = 28 Width = 28
Align = alLeft Align = alLeft

View File

@ -31,6 +31,8 @@ type
procedure assignTo(aValue: TPersistent); override; procedure assignTo(aValue: TPersistent); override;
end; end;
{ TCEMiniExplorerWidget }
TCEMiniExplorerWidget = class(TCEWidget) TCEMiniExplorerWidget = class(TCEWidget)
btnAddFav: TBitBtn; btnAddFav: TBitBtn;
btnEdit: TBitBtn; btnEdit: TBitBtn;
@ -49,11 +51,14 @@ type
procedure btnShellOpenClick(Sender: TObject); procedure btnShellOpenClick(Sender: TObject);
procedure btnAddFavClick(Sender: TObject); procedure btnAddFavClick(Sender: TObject);
procedure btnRemFavClick(Sender: TObject); procedure btnRemFavClick(Sender: TObject);
procedure lstFavEnter(Sender: TObject);
procedure lstFilesDblClick(Sender: TObject); procedure lstFilesDblClick(Sender: TObject);
procedure Panel1Click(Sender: TObject); procedure lstFilesEnter(Sender: TObject);
procedure TreeEnter(Sender: TObject);
private private
fFavorites: TStringList; fFavorites: TStringList;
fLastFold: string; fLastFold: string;
fLastListOrTree: TControl;
procedure lstFavDblClick(Sender: TObject); procedure lstFavDblClick(Sender: TObject);
procedure updateFavorites; procedure updateFavorites;
procedure treeSetRoots; procedure treeSetRoots;
@ -246,6 +251,11 @@ begin
lstFiles.Clear; lstFiles.Clear;
end; end;
procedure TCEMiniExplorerWidget.lstFavEnter(Sender: TObject);
begin
fLastListOrTree := lstFav;
end;
procedure TCEMiniExplorerWidget.btnAddFavClick(Sender: TObject); procedure TCEMiniExplorerWidget.btnAddFavClick(Sender: TObject);
begin begin
if Tree.Selected = nil then exit; if Tree.Selected = nil then exit;
@ -318,22 +328,40 @@ begin
shellOpenSelected; shellOpenSelected;
end; end;
procedure TCEMiniExplorerWidget.Panel1Click(Sender: TObject); procedure TCEMiniExplorerWidget.lstFilesEnter(Sender: TObject);
begin begin
fLastListOrTree := Tree;
end;
procedure TCEMiniExplorerWidget.TreeEnter(Sender: TObject);
begin
fLastListOrTree := Tree;
end; end;
procedure TCEMiniExplorerWidget.shellOpenSelected; procedure TCEMiniExplorerWidget.shellOpenSelected;
var var
fname: string; fname: string = '';
begin begin
if fLastListOrTree = lstFiles then
begin
if lstFiles.Selected = nil then exit; if lstFiles.Selected = nil then exit;
if lstFiles.Selected.Data = nil then exit; if lstFiles.Selected.Data = nil then exit;
fname := PString(lstFiles.Selected.Data)^; fname := PString(lstFiles.Selected.Data)^;
if not fileExists(fname) then exit; end else if fLastListOrTree = Tree then
if not shellOpen(fname) then getMessageDisplay.message( begin
(format('the shell failed to open "%s"', [shortenPath(fname, 25)])), if tree.Selected = nil then exit;
nil, amcMisc, amkErr); if tree.Selected.Data = nil then exit;
fname := PString(tree.Selected.Data)^;
end
else if fLastListOrTree = lstFav then
begin
if lstFav.Selected = nil then exit;
if lstFav.Selected.Data = nil then exit;
fname := PString(lstFav.Selected.Data)^;
end;
if fileExists(fname) then if not shellOpen(fname) then
getMessageDisplay.message((format('the shell failed to open "%s"',
[shortenPath(fname, 25)])), nil, amcMisc, amkErr);
end; end;
procedure TCEMiniExplorerWidget.lstFilterChange(sender: TObject); procedure TCEMiniExplorerWidget.lstFilterChange(sender: TObject);