project groups: open not loaded project

git-svn-id: trunk@50399 -
This commit is contained in:
mattias 2015-11-18 16:11:10 +00:00
parent 4cf9502f8f
commit 816c9bb459
2 changed files with 60 additions and 28 deletions

View File

@ -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;

View File

@ -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;