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 modes of project as nodes with checkboxes
- run external tool
- update files when project/package changes in IDE
- update dependencies when changed in IDE
}
unit ProjectGroup;
@ -61,7 +63,7 @@ type
end;
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 }
@ -90,7 +92,7 @@ type
function IndexOfRemovedTarget(const Target: TPGCompileTarget): Integer; override;
function AddTarget(Const AFileName: String): TPGCompileTarget; 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);
function LoadFromFile(Options: TProjectGroupLoadOptions): Boolean;
function SaveToFile: Boolean;
@ -870,8 +872,9 @@ procedure TIDECompileTarget.LoadPackage;
var
MR: TModalResult;
I: Integer;
Pkg: TIDEPackage;
Pkg, RequiredPkg: TIDEPackage;
PkgName: String;
PkgList: TFPList;
begin
if FFiles<>nil then exit; // already loaded
@ -909,7 +912,18 @@ begin
FFiles.Add(Pkg.Files[i].Filename);
// 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;
procedure TIDECompileTarget.LoadProject;
@ -1017,7 +1031,6 @@ var
begin
Result:=arFailed;
// ToDo: if project loaded
if (LazarusIDE.ActiveProject<>nil)
and (CompareFilenames(LazarusIDE.ActiveProject.ProjectInfoFile,Filename)=0)
then begin
@ -1148,11 +1161,8 @@ begin
case AAction of
taOpen: ProjectGroupManager.LoadProjectGroup(FileName,[]);
taSettings: ;
taCompile: ;
taCompileClean: ;
taRun: ;
taInstall: ;
taUninstall: ;
taCompile,
taCompileClean: ;// ToDo
end;
end;
@ -1161,14 +1171,13 @@ function TIDECompileTarget.PascalFileAction(AAction: TPGTargetAction
begin
Result:=arFailed;
debugln(['TIDECompileTarget.PascalFileAction ToDo']);
// ToDo
case AAction of
taOpen: ;
taSettings: ;
taCompile: ;
taCompileClean: ;
taRun: ;
taInstall: ;
taUninstall: ;
end;
end;
@ -1177,14 +1186,12 @@ function TIDECompileTarget.ExternalToolAction(AAction: TPGTargetAction
begin
Result:=arFailed;
debugln(['TIDECompileTarget.ExternalToolAction ToDo']);
// ToDo
case AAction of
taOpen: ;
taSettings: ;
taCompile: ;
taCompileClean: ;
taRun: ;
taInstall: ;
taUninstall: ;
end;
end;

View File

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

View File

@ -75,7 +75,7 @@ Type
procedure DeActivate;
function GetRootProjectGroup: TProjectGroup;
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 TargetType: TPGTargetType read FTargetType write SetTargetType;
property Active: Boolean Read FActive;

View File

@ -31,7 +31,7 @@ begin
Section:=RegisterIDEMenuSection(Root,'Compile');
PGEditMenuSectionCompile:=Section;
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: compile all from here
// ToDo: set build mode of all projects
@ -39,7 +39,8 @@ begin
Section:=RegisterIDEMenuSection(Root,'AddRemove');
PGEditMenuSectionAddRemove:=Section;
cmdTargetAdd:=RegisterIDEMenuCommand(Section,'TargetAdd',lisTargetAdd);
cmdTargetRemove:=RegisterIDEMenuCommand(Section,'TargetRemove',lisTargetRemove);// ToDo
cmdTargetRemove:=RegisterIDEMenuCommand(Section,'TargetRemove',lisTargetRemove);
// ToDo: re-add
Section:=RegisterIDEMenuSection(Root,'Use');
PGEditMenuSectionUse:=Section;
@ -49,10 +50,8 @@ begin
cmdTargetLater:=RegisterIDEMenuCommand(Section,'TargetLater',lisTargetLater);// ToDo: Ctrl+Down
cmdTargetActivate:=RegisterIDEMenuCommand(Section,'TargetActivate',lisTargetActivate);
cmdTargetOpen:=RegisterIDEMenuCommand(Section,'TargetOpen',lisTargetOpen);
// ToDo: Save
// ToDo: Close (package editor)
cmdTargetRun:=RegisterIDEMenuCommand(Section,'TargetRun',lisTargetRun);
cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties);// ToDo
cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties);
Section:=RegisterIDEMenuSection(Root,'Misc');
PGEditMenuSectionMisc:=Section;