project groups: show package dependencies

git-svn-id: trunk@50409 -
This commit is contained in:
mattias 2015-11-18 22:53:01 +00:00
parent 8be17490d2
commit 6eb5a1469e
4 changed files with 30 additions and 27 deletions

View File

@ -4,6 +4,8 @@
- Build file - Build file
- build modes of project as nodes with checkboxes - build modes of project as nodes with checkboxes
- run external tool - run external tool
- update files when project/package changes in IDE
- update dependencies when changed in IDE
} }
unit ProjectGroup; unit ProjectGroup;
@ -61,7 +63,7 @@ type
end; end;
TTargetEvent = procedure(Sender: TObject; Target: TPGCompileTarget) of object; TTargetEvent = procedure(Sender: TObject; Target: TPGCompileTarget) of object;
TTargetExchangeEvent = procedure(Sender: TObject; Target1,Target2: TPGCompileTarget) of object; // ToDo: use index TTargetExchangeEvent = procedure(Sender: TObject; Target1,Target2: TPGCompileTarget) of object;
{ TIDEProjectGroup } { TIDEProjectGroup }
@ -90,7 +92,7 @@ type
function IndexOfRemovedTarget(const Target: TPGCompileTarget): Integer; override; function IndexOfRemovedTarget(const Target: TPGCompileTarget): Integer; override;
function AddTarget(Const AFileName: String): TPGCompileTarget; override; function AddTarget(Const AFileName: String): TPGCompileTarget; override;
procedure RemoveTarget(Index: Integer); override; procedure RemoveTarget(Index: Integer); override;
procedure ExchangeTargets(ASource, ATarget: Integer); override; // ToDo: replace with MoveTarget procedure ExchangeTargets(ASource, ATarget: Integer); override;
procedure ActiveTargetChanged(T: TPGCompileTarget); procedure ActiveTargetChanged(T: TPGCompileTarget);
function LoadFromFile(Options: TProjectGroupLoadOptions): Boolean; function LoadFromFile(Options: TProjectGroupLoadOptions): Boolean;
function SaveToFile: Boolean; function SaveToFile: Boolean;
@ -870,8 +872,9 @@ procedure TIDECompileTarget.LoadPackage;
var var
MR: TModalResult; MR: TModalResult;
I: Integer; I: Integer;
Pkg: TIDEPackage; Pkg, RequiredPkg: TIDEPackage;
PkgName: String; PkgName: String;
PkgList: TFPList;
begin begin
if FFiles<>nil then exit; // already loaded if FFiles<>nil then exit; // already loaded
@ -909,7 +912,18 @@ begin
FFiles.Add(Pkg.Files[i].Filename); FFiles.Add(Pkg.Files[i].Filename);
// load list of required package // load list of required package
// ToDo PkgList:=nil;
try
PackageEditingInterface.GetRequiredPackages(Pkg,PkgList,[pirNotRecursive]);
if PkgList<>nil then
for i:=0 to PkgList.Count-1 do begin
RequiredPkg:=TIDEPackage(PkgList[i]);
PkgName:=ExtractFileUnitname(RequiredPkg.Filename,true);
FRequiredPackages.Add(TPGDependency.Create(PkgName));
end;
finally
PkgList.Free;
end;
end; end;
procedure TIDECompileTarget.LoadProject; procedure TIDECompileTarget.LoadProject;
@ -1017,7 +1031,6 @@ var
begin begin
Result:=arFailed; Result:=arFailed;
// ToDo: if project loaded
if (LazarusIDE.ActiveProject<>nil) if (LazarusIDE.ActiveProject<>nil)
and (CompareFilenames(LazarusIDE.ActiveProject.ProjectInfoFile,Filename)=0) and (CompareFilenames(LazarusIDE.ActiveProject.ProjectInfoFile,Filename)=0)
then begin then begin
@ -1148,11 +1161,8 @@ begin
case AAction of case AAction of
taOpen: ProjectGroupManager.LoadProjectGroup(FileName,[]); taOpen: ProjectGroupManager.LoadProjectGroup(FileName,[]);
taSettings: ; taSettings: ;
taCompile: ; taCompile,
taCompileClean: ; taCompileClean: ;// ToDo
taRun: ;
taInstall: ;
taUninstall: ;
end; end;
end; end;
@ -1161,14 +1171,13 @@ function TIDECompileTarget.PascalFileAction(AAction: TPGTargetAction
begin begin
Result:=arFailed; Result:=arFailed;
debugln(['TIDECompileTarget.PascalFileAction ToDo']); debugln(['TIDECompileTarget.PascalFileAction ToDo']);
// ToDo
case AAction of case AAction of
taOpen: ; taOpen: ;
taSettings: ; taSettings: ;
taCompile: ; taCompile: ;
taCompileClean: ; taCompileClean: ;
taRun: ; taRun: ;
taInstall: ;
taUninstall: ;
end; end;
end; end;
@ -1177,14 +1186,12 @@ function TIDECompileTarget.ExternalToolAction(AAction: TPGTargetAction
begin begin
Result:=arFailed; Result:=arFailed;
debugln(['TIDECompileTarget.ExternalToolAction ToDo']); debugln(['TIDECompileTarget.ExternalToolAction ToDo']);
// ToDo
case AAction of case AAction of
taOpen: ;
taSettings: ; taSettings: ;
taCompile: ; taCompile: ;
taCompileClean: ; taCompileClean: ;
taRun: ; taRun: ;
taInstall: ;
taUninstall: ;
end; end;
end; end;

View File

@ -1,10 +1,9 @@
{ {
Todo: Todo:
- show * when modified - save on save all
- close windows on IDE close - close windows on IDE close
- activate project when project is opened - activate project when project is opened
- deactivate project when project is closed - deactivate project when project is closed
- make dockable
} }
unit ProjectGroupEditor; unit ProjectGroupEditor;
@ -328,7 +327,7 @@ procedure TProjectGroupEditorForm.Localize;
if AImageIndex<>-1 then if AImageIndex<>-1 then
A.ImageIndex:=AImageIndex; A.ImageIndex:=AImageIndex;
If Assigned(mnu) then If Assigned(mnu) then
Mnu.OnClick:=A.OnExecute; // ToDo Enabled and visible don't play well with actions... Mnu.OnClick:=A.OnExecute;
end; end;
begin begin
@ -910,7 +909,7 @@ var
NodeData: TNodeData; NodeData: TNodeData;
begin begin
ShowFileName; ShowFileName;
// ToDo: update nodes // update all nodes with file names
TVPG.BeginUpdate; TVPG.BeginUpdate;
TVNode:=TVPG.Items.GetFirstNode; TVNode:=TVPG.Items.GetFirstNode;
while TVNode<>nil do begin while TVNode<>nil do begin
@ -1155,7 +1154,6 @@ begin
try try
PF[False]:=CreateSectionNode(AParent,lisNodeFiles,ntFiles); PF[False]:=CreateSectionNode(AParent,lisNodeFiles,ntFiles);
PF[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup); PF[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
// TODO Ideally, we can show removed files
for i:=0 to T.FileCount-1 do for i:=0 to T.FileCount-1 do
CreateSubNode(PF[False],ntFile,T,T.Files[i]); CreateSubNode(PF[False],ntFile,T,T.Files[i]);
ShowDependencies(AParent,T,PD); ShowDependencies(AParent,T,PD);
@ -1175,7 +1173,6 @@ begin
try try
PF[False]:=CreateSectionNode(AParent,lisNodeFiles,ntFiles); PF[False]:=CreateSectionNode(AParent,lisNodeFiles,ntFiles);
PF[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup); PF[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
// ToDo Ideally, we can show removed files
for i:=0 to T.FileCount-1 do for i:=0 to T.FileCount-1 do
CreateSubNode(PF[False],ntFile,T,T.Files[i]); CreateSubNode(PF[False],ntFile,T,T.Files[i]);
ShowDependencies(AParent,T,PD); ShowDependencies(AParent,T,PD);

View File

@ -75,7 +75,7 @@ Type
procedure DeActivate; procedure DeActivate;
function GetRootProjectGroup: TProjectGroup; function GetRootProjectGroup: TProjectGroup;
property Parent: TPGCompileTarget read FParent; property Parent: TPGCompileTarget read FParent;
property Filename: string read FFilename write SetFilename; // Absolute, not relative. (ToDo: store them relative) property Filename: string read FFilename write SetFilename; // Absolute, not relative.
property Removed: boolean read FRemoved write SetRemoved; property Removed: boolean read FRemoved write SetRemoved;
property TargetType: TPGTargetType read FTargetType write SetTargetType; property TargetType: TPGTargetType read FTargetType write SetTargetType;
property Active: Boolean Read FActive; property Active: Boolean Read FActive;

View File

@ -31,7 +31,7 @@ begin
Section:=RegisterIDEMenuSection(Root,'Compile'); Section:=RegisterIDEMenuSection(Root,'Compile');
PGEditMenuSectionCompile:=Section; PGEditMenuSectionCompile:=Section;
cmdTargetCompile:=RegisterIDEMenuCommand(Section,'TargetCompile',lisTargetCompile);// ToDo: caption: compile "target" cmdTargetCompile:=RegisterIDEMenuCommand(Section,'TargetCompile',lisTargetCompile);// ToDo: caption: compile "target"
cmdTargetCompileClean:=RegisterIDEMenuCommand(Section,'TargetCompileClean',lisTargetCompileClean);// ToDo cmdTargetCompileClean:=RegisterIDEMenuCommand(Section,'TargetCompileClean',lisTargetCompileClean);
// ToDo: clean ... -> clean up dialog // ToDo: clean ... -> clean up dialog
// ToDo: compile all from here // ToDo: compile all from here
// ToDo: set build mode of all projects // ToDo: set build mode of all projects
@ -39,7 +39,8 @@ begin
Section:=RegisterIDEMenuSection(Root,'AddRemove'); Section:=RegisterIDEMenuSection(Root,'AddRemove');
PGEditMenuSectionAddRemove:=Section; PGEditMenuSectionAddRemove:=Section;
cmdTargetAdd:=RegisterIDEMenuCommand(Section,'TargetAdd',lisTargetAdd); cmdTargetAdd:=RegisterIDEMenuCommand(Section,'TargetAdd',lisTargetAdd);
cmdTargetRemove:=RegisterIDEMenuCommand(Section,'TargetRemove',lisTargetRemove);// ToDo cmdTargetRemove:=RegisterIDEMenuCommand(Section,'TargetRemove',lisTargetRemove);
// ToDo: re-add
Section:=RegisterIDEMenuSection(Root,'Use'); Section:=RegisterIDEMenuSection(Root,'Use');
PGEditMenuSectionUse:=Section; PGEditMenuSectionUse:=Section;
@ -49,10 +50,8 @@ begin
cmdTargetLater:=RegisterIDEMenuCommand(Section,'TargetLater',lisTargetLater);// ToDo: Ctrl+Down cmdTargetLater:=RegisterIDEMenuCommand(Section,'TargetLater',lisTargetLater);// ToDo: Ctrl+Down
cmdTargetActivate:=RegisterIDEMenuCommand(Section,'TargetActivate',lisTargetActivate); cmdTargetActivate:=RegisterIDEMenuCommand(Section,'TargetActivate',lisTargetActivate);
cmdTargetOpen:=RegisterIDEMenuCommand(Section,'TargetOpen',lisTargetOpen); cmdTargetOpen:=RegisterIDEMenuCommand(Section,'TargetOpen',lisTargetOpen);
// ToDo: Save
// ToDo: Close (package editor)
cmdTargetRun:=RegisterIDEMenuCommand(Section,'TargetRun',lisTargetRun); cmdTargetRun:=RegisterIDEMenuCommand(Section,'TargetRun',lisTargetRun);
cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties);// ToDo cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties);
Section:=RegisterIDEMenuSection(Root,'Misc'); Section:=RegisterIDEMenuSection(Root,'Misc');
PGEditMenuSectionMisc:=Section; PGEditMenuSectionMisc:=Section;