From 816c9bb4593b1c61e10969e2097964d95fc6e5d4 Mon Sep 17 00:00:00 2001 From: mattias Date: Wed, 18 Nov 2015 16:11:10 +0000 Subject: [PATCH] project groups: open not loaded project git-svn-id: trunk@50399 - --- components/projectgroups/projectgroup.pp | 37 ++++++++++++-- .../projectgroups/projectgroupeditor.pas | 51 ++++++++++--------- 2 files changed, 60 insertions(+), 28 deletions(-) diff --git a/components/projectgroups/projectgroup.pp b/components/projectgroups/projectgroup.pp index f6800cf0d8..3453878a10 100644 --- a/components/projectgroups/projectgroup.pp +++ b/components/projectgroups/projectgroup.pp @@ -1004,7 +1004,8 @@ begin case AAction of taSettings : begin - ExecuteIDECommand(Self,ecProjectOptions); + if ExecuteIDECommand(Self,ecProjectOptions) then + Result:=arOK; end; taCompileClean, taCompile : @@ -1017,12 +1018,42 @@ begin end; taRun : begin - LazarusIDE.DoRunProject; + if LazarusIDE.DoRunProject=mrOk then + Result:=arOk; end; end; end else begin // project not loaded => use lazbuild - // ToDo + case AAction of + taOpen: + begin + // open project + if LazarusIDE.DoOpenProjectFile(Filename,[ofAddToRecent])=mrOk then + Result:=arOk; + end; + taSettings: + begin + // open project, then show options + if LazarusIDE.DoOpenProjectFile(Filename,[ofAddToRecent])<>mrOk then + exit(arFailed); + if ExecuteIDECommand(Self,ecProjectOptions) then + Result:=arOK; + end; + taCompile, + taCompileClean: + begin + // run lazbuild as external tool + + end; + taRun: + begin + // open project, then run + if LazarusIDE.DoOpenProjectFile(Filename,[ofAddToRecent])<>mrOk then + exit(arFailed); + if LazarusIDE.DoRunProject=mrOk then + Result:=arOk; + end; + end; end; end; diff --git a/components/projectgroups/projectgroupeditor.pas b/components/projectgroups/projectgroupeditor.pas index 879f0b2872..25a7b2cdc3 100644 --- a/components/projectgroups/projectgroupeditor.pas +++ b/components/projectgroups/projectgroupeditor.pas @@ -119,7 +119,6 @@ type procedure ATargetLaterUpdate(Sender: TObject); procedure ATargetUninstallExecute(Sender: TObject); procedure ATargetUninstallUpdate(Sender: TObject); - procedure OnProjectGroupFileNameChanged(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure TVPGDblClick(Sender: TObject); @@ -132,6 +131,7 @@ type procedure InitTVNode(Node: TTreeNode; Const ACaption: String; ANodeData: TNodeData); procedure OnProjectGroupDestroy(Sender: TObject); + procedure OnProjectGroupFileNameChanged(Sender: TObject); procedure OnTargetAdded(Sender: TObject; Target: TPGCompileTarget); procedure OnTargetDeleted(Sender: TObject; Target: TPGCompileTarget); procedure OnTargetActiveChanged(Sender: TObject; Target: TPGCompileTarget); @@ -440,27 +440,6 @@ begin UpdateIDEMenuCommandFromAction(Sender,cmdTargetUninstall); end; -procedure TProjectGroupEditorForm.OnProjectGroupFileNameChanged(Sender: TObject); -var - TVNode: TTreeNode; - NodeData: TNodeData; -begin - ShowFileName; - // ToDo: update nodes - TVPG.BeginUpdate; - TVNode:=TVPG.Items.GetFirstNode; - while TVNode<>nil do begin - NodeData:=TNodeData(TVNode.Data); - if NodeData is TNodeData then begin - if NodeData.NodeType in [ntTarget] then begin - TVNode.Text:=DisplayFileName(NodeData); - end; - end; - TVNode:=TVNode.GetNext; - end; - TVPG.EndUpdate; -end; - procedure TProjectGroupEditorForm.UpdateIDEMenuCommandFromAction( Sender: TObject; Item: TIDEMenuCommand); begin @@ -815,15 +794,16 @@ Var N: TTreeNode; I: Integer; begin + FActiveTarget:=nil; FProjectGroupTVNode:=Nil; FTargetNodes[False]:=Nil; FTargetNodes[True]:=Nil; For I:=0 to TVPG.Items.Count-1 do - begin + begin N:=TVPG.Items[I]; TNodeData(N.Data).Free; // Would be nice to have a FreeAndNilData method in TTreeNode. N.Data:=Nil; - end; + end; end; function TProjectGroupEditorForm.GetNodeIndex(ANodeType: TNodeType; ANodeData: TPGCompileTarget): Integer; @@ -925,6 +905,27 @@ begin end; end; +procedure TProjectGroupEditorForm.OnProjectGroupFileNameChanged(Sender: TObject); +var + TVNode: TTreeNode; + NodeData: TNodeData; +begin + ShowFileName; + // ToDo: update nodes + TVPG.BeginUpdate; + TVNode:=TVPG.Items.GetFirstNode; + while TVNode<>nil do begin + NodeData:=TNodeData(TVNode.Data); + if NodeData is TNodeData then begin + if NodeData.NodeType in [ntTarget] then begin + TVNode.Text:=DisplayFileName(NodeData); + end; + end; + TVNode:=TVNode.GetNext; + end; + TVPG.EndUpdate; +end; + function TProjectGroupEditorForm.CreateSectionNode(AParent: TTreeNode; const ACaption: String; ANodeType: TNodeType): TTreeNode; Var @@ -1059,8 +1060,8 @@ Var begin TVPG.BeginUpdate; try - ShowFileName; // Needs FProjectGroupTVNode FreeNodeData; + ShowFileName; // Needs FProjectGroupTVNode TVPG.Items.Clear; FTargetNodes[False]:=Nil; FTargetNodes[True]:=Nil;