mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-26 12:27:42 +01:00
project groups: show package dependencies
git-svn-id: trunk@50409 -
This commit is contained in:
parent
8be17490d2
commit
6eb5a1469e
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user