implemented showing all kinds of dependency owners

git-svn-id: trunk@4101 -
This commit is contained in:
mattias 2003-04-27 21:17:00 +00:00
parent 5800ad0cf3
commit f4cb3c508e
4 changed files with 55 additions and 33 deletions

View File

@ -71,7 +71,6 @@ const
function ShowBrokenDependencies(DependencyList: TList;
BtnSet: TMsgDlgButtons): TModalResult;
function GetDependencyOwnerAsString(Dependency: TPkgDependency): string;
implementation
@ -92,25 +91,6 @@ begin
end;
end;
function GetDependencyOwnerAsString(Dependency: TPkgDependency): string;
var
DepOwner: TObject;
begin
DepOwner:=Dependency.Owner;
if (DepOwner<>nil) then begin
if DepOwner is TLazPackage then begin
Result:='Package: '+TLazPackage(DepOwner).IDAsString;
end else if DepOwner is TProject then begin
Result:='Project: '
+ExtractFileNameOnly(TProject(DepOwner).ProjectInfoFile);
end else begin
Result:=DepOwner.ClassName
end;
end else begin
Result:='Dependency without Owner: '+Dependency.AsString;
end;
end;
{ TBrokenDependenciesDialog }
procedure TBrokenDependenciesDialog.BrokenDependenciesDialogResize(

View File

@ -61,6 +61,8 @@ type
procedure(APackage: TLazPackageID) of object;
TGetAllRequiredPackagesEvent =
procedure(FirstDependency: TPkgDependency; var List: TList) of object;
TGetDependencyOwnerDescription =
procedure(Dependency: TPkgDependency; var Description: string) of object;
{ TPkgComponent }
@ -636,7 +638,7 @@ var
PackageDependencies: TAVLTree; // tree of TPkgDependency
OnGetAllRequiredPackages: TGetAllRequiredPackagesEvent;
OnGetDependencyOwnerDescription: TGetDependencyOwnerDescription;
function CompareLazPackageID(Data1, Data2: Pointer): integer;
function CompareNameWithPackageID(Key, Data: Pointer): integer;
@ -670,9 +672,12 @@ function FindLowestPkgDependencyWithName(const PkgName: string): TPkgDependency;
function FindLowestPkgDependencyNodeWithName(const PkgName: string): TAVLTreeNode;
function FindNextPkgDependecyNodeWithSameName(Node: TAVLTreeNode): TAVLTreeNode;
function GetDependencyOwnerAsString(Dependency: TPkgDependency): string;
function PackageFileNameIsValid(const AFilename: string): boolean;
implementation
@ -917,6 +922,11 @@ begin
Result:=nil;
end;
function GetDependencyOwnerAsString(Dependency: TPkgDependency): string;
begin
OnGetDependencyOwnerDescription(Dependency,Result)
end;
function PackageFileNameIsValid(const AFilename: string): boolean;
var
PkgName: String;

View File

@ -59,6 +59,12 @@ type
var AllowExpansion: Boolean);
procedure PkgTreeViewSelectionChanged(Sender: TObject);
private
ImgIndexPackage: integer;
ImgIndexInstallPackage: integer;
ImgIndexInstalledPackage: integer;
ImgIndexUninstallPackage: integer;
ImgIndexCirclePackage: integer;
ImgIndexMissingPackage: integer;
FOnOpenPackage: TOnOpenPackage;
fSortedPackages: TAVLTree;
FChangedDuringLock: boolean;
@ -97,13 +103,6 @@ implementation
uses Math;
var
ImgIndexPackage,
ImgIndexInstallPackage,
ImgIndexUninstallPackage,
ImgIndexCirclePackage,
ImgIndexMissingPackage: integer;
type
TExpandedNode = class
NodeText: string;
@ -342,8 +341,10 @@ begin
Name:='ImageList';
ImgIndexPackage:=Count;
AddResImg('pkg_package');
ImgIndexInstalledPackage:=Count;
AddResImg('pkg_package_install');
ImgIndexInstallPackage:=Count;
AddResImg('pkg_package_installed');
AddResImg('pkg_package_autoinstall');
ImgIndexUninstallPackage:=Count;
AddResImg('pkg_package_uninstall');
ImgIndexCirclePackage:=Count;
@ -395,12 +396,16 @@ function TPkgGraphExplorer.GetPackageImageIndex(Pkg: TLazPackage): integer;
begin
if Pkg.Installed<>pitNope then begin
if Pkg.AutoInstall<>pitNope then begin
Result:=ImgIndexInstallPackage;
Result:=ImgIndexInstalledPackage;
end else begin
Result:=ImgIndexUninstallPackage;
end;
end else begin
Result:=ImgIndexPackage;
if Pkg.AutoInstall<>pitNope then begin
Result:=ImgIndexInstallPackage;
end else begin
Result:=ImgIndexPackage;
end;
end;
end;

View File

@ -91,8 +91,9 @@ type
procedure IDEComponentPaletteEndUpdate(Sender: TObject;
PaletteChanged: boolean);
procedure IDEComponentPaletteOpenPackage(Sender: TObject);
procedure GetDependencyOwnerDescription(Dependency: TPkgDependency;
var Description: string);
private
FirstInstalledDependency: TPkgDependency;
FirstAutoInstallDependency: TPkgDependency;
// helper functions
function DoShowSavePackageAsDialog(APackage: TLazPackage): TModalResult;
@ -224,6 +225,28 @@ begin
DoOpenPackage(TLazPackage(Sender));
end;
procedure TPkgManager.GetDependencyOwnerDescription(
Dependency: TPkgDependency; var Description: string);
var
DepOwner: TObject;
begin
DepOwner:=Dependency.Owner;
if (DepOwner<>nil) then begin
if DepOwner is TLazPackage then begin
Description:='Package: '+TLazPackage(DepOwner).IDAsString;
end else if DepOwner is TProject then begin
Description:='Project: '
+ExtractFileNameOnly(TProject(DepOwner).ProjectInfoFile);
end else if DepOwner=Self then begin
Description:='Lazarus';
end else begin
Description:=DepOwner.ClassName
end;
end else begin
Description:='Dependency without Owner: '+Dependency.AsString;
end;
end;
procedure TPkgManager.MainIDEitmPkgAddCurUnitToPkgClick(Sender: TObject);
begin
DoAddActiveUnitToAPackage;
@ -1051,6 +1074,7 @@ begin
for i:=0 to PackageGraph.LazarusBasePackages.Count-1 do begin
BasePackage:=TLazPackage(PackageGraph.LazarusBasePackages[i]);
Dependency:=BasePackage.CreateDependencyForThisPkg;
Dependency.Owner:=Self;
PackageGraph.OpenDependency(Dependency);
Dependency.AddToList(FirstAutoInstallDependency,pdlRequires);
end;
@ -1104,9 +1128,9 @@ begin
NewDependency:=TPkgDependency.Create;
NewDependency.Owner:=Self;
NewDependency.PackageName:=PackageName;
NewDependency.AddToList(FirstInstalledDependency,pdlRequires);
PackageGraph.OpenInstalledDependency(NewDependency,pitStatic);
Result:=NewDependency.RequiredPackage;
NewDependency.Free;
end;
procedure TPkgManager.LoadAutoInstallPackages;
@ -1141,6 +1165,9 @@ end;
constructor TPkgManager.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
OnGetDependencyOwnerDescription:=@GetDependencyOwnerDescription;
IDEComponentPalette:=TComponentPalette.Create;
IDEComponentPalette.OnEndUpdate:=@IDEComponentPaletteEndUpdate;
TComponentPalette(IDEComponentPalette).OnOpenPackage:=@IDEComponentPaletteOpenPackage;