From 06cb06cdfa73ddd450033919ed7c6ba855665979 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sat, 23 Apr 2016 19:03:24 +0200 Subject: [PATCH] CE projects, allow multi selection of file (remove, open), close #37 --- src/ce_projinspect.lfm | 1 + src/ce_projinspect.pas | 52 ++++++++++++++++++++++++++++++------------ 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/ce_projinspect.lfm b/src/ce_projinspect.lfm index 08f93692..3a61059e 100644 --- a/src/ce_projinspect.lfm +++ b/src/ce_projinspect.lfm @@ -36,6 +36,7 @@ inherited CEProjectInspectWidget: TCEProjectInspectWidget ScrollBars = ssAutoBoth ShowRoot = False TabOrder = 0 + OnClick = TreeClick OnKeyDown = TreeKeyDown OnSelectionChanged = TreeSelectionChanged Options = [tvoAutoExpand, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoToolTips, tvoThemedDraw] diff --git a/src/ce_projinspect.pas b/src/ce_projinspect.pas index db52eea6..d616dece 100644 --- a/src/ce_projinspect.pas +++ b/src/ce_projinspect.pas @@ -27,6 +27,7 @@ type procedure btnRemFileClick(Sender: TObject); procedure btnRemFoldClick(Sender: TObject); procedure FormDropFiles(Sender: TObject; const FileNames: array of String); + procedure TreeClick(Sender: TObject); procedure TreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TreeSelectionChanged(Sender: TObject); protected @@ -213,6 +214,25 @@ begin TreeDblClick(nil); 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); begin actUpdate(sender); @@ -227,19 +247,22 @@ end; procedure TCEProjectInspectWidget.TreeDblClick(sender: TObject); var fname: string; - i: NativeInt; + i, j: integer; begin if fProject.isNil or Tree.Selected.isNil then exit; // if (Tree.Selected.Parent = fFileNode) or (Tree.Selected.Parent = fXtraNode) then begin - fname := Tree.Selected.Text; - i := fProject.Sources.IndexOf(fname); - if i > -1 then - fname := fProject.sourceAbsolute(i); - if isEditable(fname.extractFileExt) and fname.fileExists then - getMultiDocHandler.openDocument(fname); + for j:= 0 to Tree.SelectionCount-1 do + begin + fname := Tree.Selections[j].Text; + i := fProject.Sources.IndexOf(fname); + if i > -1 then + fname := fProject.sourceAbsolute(i); + if isEditable(fname.extractFileExt) and fname.fileExists then + getMultiDocHandler.openDocument(fname); + end; end else if Tree.Selected.Parent = fConfNode then begin @@ -342,21 +365,22 @@ end; procedure TCEProjectInspectWidget.btnRemFileClick(Sender: TObject); var fname: string; - i: NativeInt; + i, j: integer; begin if fProject.isNil or Tree.Selected.isNil then exit; // if Tree.Selected.Parent = fFileNode then begin - fname := Tree.Selected.Text; - i := fProject.Sources.IndexOf(fname); - if i > -1 then + fProject.beginUpdate; + for j:= 0 to Tree.SelectionCount-1 do begin - fProject.beginUpdate; - fProject.Sources.Delete(i); - fProject.endUpdate; + fname := Tree.Selections[j].Text; + i := fProject.Sources.IndexOf(fname); + if i <> -1 then + fProject.Sources.Delete(i); end; + fProject.endUpdate; end; end;