CE projects, allow multi selection of file (remove, open), close #37

This commit is contained in:
Basile Burg 2016-04-23 19:03:24 +02:00
parent c00938fad2
commit 06cb06cdfa
2 changed files with 39 additions and 14 deletions

View File

@ -36,6 +36,7 @@ inherited CEProjectInspectWidget: TCEProjectInspectWidget
ScrollBars = ssAutoBoth ScrollBars = ssAutoBoth
ShowRoot = False ShowRoot = False
TabOrder = 0 TabOrder = 0
OnClick = TreeClick
OnKeyDown = TreeKeyDown OnKeyDown = TreeKeyDown
OnSelectionChanged = TreeSelectionChanged OnSelectionChanged = TreeSelectionChanged
Options = [tvoAutoExpand, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoToolTips, tvoThemedDraw] Options = [tvoAutoExpand, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoToolTips, tvoThemedDraw]

View File

@ -27,6 +27,7 @@ type
procedure btnRemFileClick(Sender: TObject); procedure btnRemFileClick(Sender: TObject);
procedure btnRemFoldClick(Sender: TObject); procedure btnRemFoldClick(Sender: TObject);
procedure FormDropFiles(Sender: TObject; const FileNames: array of String); procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
procedure TreeClick(Sender: TObject);
procedure TreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure TreeSelectionChanged(Sender: TObject); procedure TreeSelectionChanged(Sender: TObject);
protected protected
@ -213,6 +214,25 @@ begin
TreeDblClick(nil); TreeDblClick(nil);
end; end;
procedure TCEProjectInspectWidget.TreeClick(Sender: TObject);
begin
if Tree.Selected.isNotNil then
begin
Tree.MultiSelect := Tree.Selected.Parent = fFileNode;
if not (Tree.Selected.Parent = fFileNode) then
begin
Tree.MultiSelect := false;
Tree.ClearSelection(true);
Tree.Selected.MultiSelected:=false;
end;
end
else
begin
Tree.MultiSelect := false;
Tree.ClearSelection(true);
end;
end;
procedure TCEProjectInspectWidget.TreeSelectionChanged(Sender: TObject); procedure TCEProjectInspectWidget.TreeSelectionChanged(Sender: TObject);
begin begin
actUpdate(sender); actUpdate(sender);
@ -227,19 +247,22 @@ end;
procedure TCEProjectInspectWidget.TreeDblClick(sender: TObject); procedure TCEProjectInspectWidget.TreeDblClick(sender: TObject);
var var
fname: string; fname: string;
i: NativeInt; i, j: integer;
begin begin
if fProject.isNil or Tree.Selected.isNil then if fProject.isNil or Tree.Selected.isNil then
exit; exit;
// //
if (Tree.Selected.Parent = fFileNode) or (Tree.Selected.Parent = fXtraNode) then if (Tree.Selected.Parent = fFileNode) or (Tree.Selected.Parent = fXtraNode) then
begin begin
fname := Tree.Selected.Text; for j:= 0 to Tree.SelectionCount-1 do
begin
fname := Tree.Selections[j].Text;
i := fProject.Sources.IndexOf(fname); i := fProject.Sources.IndexOf(fname);
if i > -1 then if i > -1 then
fname := fProject.sourceAbsolute(i); fname := fProject.sourceAbsolute(i);
if isEditable(fname.extractFileExt) and fname.fileExists then if isEditable(fname.extractFileExt) and fname.fileExists then
getMultiDocHandler.openDocument(fname); getMultiDocHandler.openDocument(fname);
end;
end end
else if Tree.Selected.Parent = fConfNode then else if Tree.Selected.Parent = fConfNode then
begin begin
@ -342,21 +365,22 @@ end;
procedure TCEProjectInspectWidget.btnRemFileClick(Sender: TObject); procedure TCEProjectInspectWidget.btnRemFileClick(Sender: TObject);
var var
fname: string; fname: string;
i: NativeInt; i, j: integer;
begin begin
if fProject.isNil or Tree.Selected.isNil then if fProject.isNil or Tree.Selected.isNil then
exit; exit;
// //
if Tree.Selected.Parent = fFileNode then if Tree.Selected.Parent = fFileNode then
begin
fname := Tree.Selected.Text;
i := fProject.Sources.IndexOf(fname);
if i > -1 then
begin begin
fProject.beginUpdate; fProject.beginUpdate;
for j:= 0 to Tree.SelectionCount-1 do
begin
fname := Tree.Selections[j].Text;
i := fProject.Sources.IndexOf(fname);
if i <> -1 then
fProject.Sources.Delete(i); fProject.Sources.Delete(i);
fProject.endUpdate;
end; end;
fProject.endUpdate;
end; end;
end; end;