implemented editing dependencies

git-svn-id: trunk@4055 -
This commit is contained in:
mattias 2003-04-13 18:19:26 +00:00
parent e318ba31f0
commit ce4dc4943a
6 changed files with 159 additions and 116 deletions

View File

@ -45,8 +45,8 @@ uses
type type
TBrokenDependenciesDialog = class(TForm) TBrokenDependenciesDialog = class(TForm)
DependencyListView: TListView;
NoteLabel: TLabel; NoteLabel: TLabel;
DependencyListView: TListView;
procedure BrokenDependenciesDialogClose(Sender: TObject; procedure BrokenDependenciesDialogClose(Sender: TObject;
var Action: TCloseAction); var Action: TCloseAction);
procedure BrokenDependenciesDialogResize(Sender: TObject); procedure BrokenDependenciesDialogResize(Sender: TObject);
@ -122,15 +122,16 @@ var
CurButton: TBitBtn; CurButton: TBitBtn;
begin begin
x:=ClientWidth; x:=ClientWidth;
NoteLabel.SetBounds(5,5,x-10,100); NoteLabel.SetBounds(5,5,x-10,80);
y:=NoteLabel.Top+NoteLabel.Height+2; y:=NoteLabel.Top+NoteLabel.Height+2;
with DependencyListView do with DependencyListView do
SetBounds(0,y,x,ClientHeight-y-40); SetBounds(0,y,x,Parent.ClientHeight-y-40);
y:=ClientHeight-35; y:=ClientHeight-35;
for i:=fButtons.Count-1 downto 0 do begin for i:=fButtons.Count-1 downto 0 do begin
CurButton:=TBitBtn(fButtons[i]); CurButton:=TBitBtn(fButtons[i]);
dec(x,CurButton.Width+10); dec(x,CurButton.Width+10);
CurButton.SetBounds(x,y,Width,Height); with CurButton do
SetBounds(x,y,80,Height);
end; end;
end; end;
@ -161,30 +162,28 @@ procedure TBrokenDependenciesDialog.SetupComponents;
var var
NewColumn: TListColumn; NewColumn: TListColumn;
begin begin
NoteLabel:=TLabel.Create(Self);
with NoteLabel do begin
Name:='NoteLabel';
Parent:=Self;
WordWrap:=true;
Caption:='Changing the package name or version breaks dependencies. '
+'Should these dependencies be changed as well?'#13
+'Select Yes to change all listed dependencies.'#13
+'Select Ignore to break the dependencies and continue.';
end;
DependencyListView:=TListView.Create(Self); DependencyListView:=TListView.Create(Self);
with DependencyListView do begin with DependencyListView do begin
Name:='DependencyListView'; Name:='DependencyListView';
Parent:=Self; Parent:=Self;
ViewStyle:=vsReport; ViewStyle:=vsReport;
NewColumn:=Columns.Add; NewColumn:=Columns.Add;
NewColumn.Width:=170; NewColumn.Width:=200;
NewColumn.Caption:='Package/Project'; NewColumn.Caption:='Package/Project';
NewColumn:=Columns.Add; NewColumn:=Columns.Add;
NewColumn.Caption:='Dependency'; NewColumn.Caption:='Dependency';
end; end;
NoteLabel:=TLabel.Create(Self);
with NoteLabel do begin
Name:='NoteLabel';
Parent:=Self;
WordWrap:=true;
Caption:='Changing the package name or version would result in breaking'
+' the dependencies listed below. Should they be changed as well?'#13
+'Select Yes to change all listed dependencies.'#13
+'Select Ignore to keep the dependencies untouched and continue.'#13
+'Select Cancel to cancel the renaming and/or changing the version.'#13
+'Select Abort to abort the current command.';
end;
end; end;
procedure TBrokenDependenciesDialog.ClearButtons; procedure TBrokenDependenciesDialog.ClearButtons;
@ -204,7 +203,7 @@ begin
SetupComponents; SetupComponents;
OnResize:=@BrokenDependenciesDialogResize; OnResize:=@BrokenDependenciesDialogResize;
Position:=poScreenCenter; Position:=poScreenCenter;
IDEDialogLayoutList.ApplyLayout(Self,350,300); IDEDialogLayoutList.ApplyLayout(Self,500,300);
OnResize(Self); OnResize(Self);
OnClose:=@BrokenDependenciesDialogClose; OnClose:=@BrokenDependenciesDialogClose;
end; end;
@ -229,6 +228,7 @@ begin
NewBitBtn.Name:='BitBtn'+IntToStr(fButtons.Count+1); NewBitBtn.Name:='BitBtn'+IntToStr(fButtons.Count+1);
NewBitBtn.Kind:=MsgDlgBtnToBitBtnKind[Btn]; NewBitBtn.Kind:=MsgDlgBtnToBitBtnKind[Btn];
NewBitBtn.Parent:=Self; NewBitBtn.Parent:=Self;
if Btn=mbYes then NewBitBtn.Default:=true;
fButtons.Add(NewBitBtn); fButtons.Add(NewBitBtn);
end; end;
end; end;

View File

@ -392,7 +392,7 @@ type
CompPriorityCat: TComponentPriorityCategory): TPkgFile; CompPriorityCat: TComponentPriorityCategory): TPkgFile;
procedure RemoveFile(PkgFile: TPkgFile); procedure RemoveFile(PkgFile: TPkgFile);
procedure UnremovePkgFile(PkgFile: TPkgFile); procedure UnremovePkgFile(PkgFile: TPkgFile);
procedure UnremoveRequiredPkg(Dependency: TPkgDependency); procedure DeleteRemoveRequiredPkg(Dependency: TPkgDependency);
procedure AddRequiredDependency(Dependency: TPkgDependency); procedure AddRequiredDependency(Dependency: TPkgDependency);
procedure RemoveRequiredDependency(Dependency: TPkgDependency); procedure RemoveRequiredDependency(Dependency: TPkgDependency);
function CreateDependencyForThisPkg: TPkgDependency; function CreateDependencyForThisPkg: TPkgDependency;
@ -881,7 +881,7 @@ procedure TPkgDependency.SetPackageName(const AValue: string);
begin begin
if FPackageName=AValue then exit; if FPackageName=AValue then exit;
if (PackageDependencies<>nil) and (FPackageName<>'') then if (PackageDependencies<>nil) and (FPackageName<>'') then
PackageDependencies.Remove(Self); PackageDependencies.RemovePointer(Self);
FPackageName:=AValue; FPackageName:=AValue;
if (PackageDependencies<>nil) and (FPackageName<>'') then if (PackageDependencies<>nil) and (FPackageName<>'') then
PackageDependencies.Add(Self); PackageDependencies.Add(Self);
@ -984,7 +984,13 @@ begin
if Result<>0 then exit; if Result<>0 then exit;
Result:=MinVersion.Compare(Dependency2.MinVersion); Result:=MinVersion.Compare(Dependency2.MinVersion);
if Result<>0 then exit; if Result<>0 then exit;
Result:=CompareBoolean(pdfMinVersion in Flags,
pdfMinVersion in Dependency2.Flags);
if Result<>0 then exit;
Result:=MaxVersion.Compare(Dependency2.MaxVersion); Result:=MaxVersion.Compare(Dependency2.MaxVersion);
if Result<>0 then exit;
Result:=CompareBoolean(pdfMaxVersion in Flags,
pdfMaxVersion in Dependency2.Flags);
end; end;
procedure TPkgDependency.Assign(Source: TPkgDependency); procedure TPkgDependency.Assign(Source: TPkgDependency);
@ -1784,10 +1790,9 @@ begin
PkgFile.Removed:=false; PkgFile.Removed:=false;
end; end;
procedure TLazPackage.UnremoveRequiredPkg(Dependency: TPkgDependency); procedure TLazPackage.DeleteRemoveRequiredPkg(Dependency: TPkgDependency);
begin begin
Dependency.RemoveFromList(FFirstRemovedDependency,pdlRequires); Dependency.RemoveFromList(FFirstRemovedDependency,pdlRequires);
Dependency.AddToList(FFirstRequiredDependency,pdlRequires);
Dependency.Removed:=false; Dependency.Removed:=false;
end; end;
@ -1795,6 +1800,7 @@ procedure TLazPackage.AddRequiredDependency(Dependency: TPkgDependency);
begin begin
Dependency.AddToList(FFirstRequiredDependency,pdlRequires); Dependency.AddToList(FFirstRequiredDependency,pdlRequires);
Dependency.Owner:=Self; Dependency.Owner:=Self;
Modified:=true;
end; end;
procedure TLazPackage.RemoveRequiredDependency(Dependency: TPkgDependency); procedure TLazPackage.RemoveRequiredDependency(Dependency: TPkgDependency);

View File

@ -170,6 +170,7 @@ type
function CreateNewFile(Sender: TObject; function CreateNewFile(Sender: TObject;
const Params: TAddToPkgResult): TModalResult; const Params: TAddToPkgResult): TModalResult;
function SavePackage(APackage: TLazPackage; SaveAs: boolean): TModalResult; function SavePackage(APackage: TLazPackage; SaveAs: boolean): TModalResult;
procedure UpdateAllEditors;
public public
property Editors[Index: integer]: TPackageEditorForm read GetEditors; property Editors[Index: integer]: TPackageEditorForm read GetEditors;
property OnCreateNewFile: TOnCreateNewPkgFile read FOnCreateNewFile property OnCreateNewFile: TOnCreateNewPkgFile read FOnCreateNewFile
@ -201,6 +202,7 @@ var
ImageIndexRegisterUnit: integer; ImageIndexRegisterUnit: integer;
ImageIndexText: integer; ImageIndexText: integer;
ImageIndexBinary: integer; ImageIndexBinary: integer;
ImageIndexConflict: integer;
{ TPackageEditorForm } { TPackageEditorForm }
@ -270,8 +272,8 @@ begin
if (Dependency<>nil) and (Removed) then begin if (Dependency<>nil) and (Removed) then begin
// re-add dependency // re-add dependency
if not CheckAddingDependency(LazPackage,Dependency) then exit; if not CheckAddingDependency(LazPackage,Dependency) then exit;
LazPackage.UnremoveRequiredPkg(Dependency); LazPackage.DeleteRemoveRequiredPkg(Dependency);
UpdateAll; PackageGraph.AddDependencyToPackage(LazPackage,Dependency);
end; end;
end; end;
end; end;
@ -605,7 +607,7 @@ begin
d2ptRequiredPkg: d2ptRequiredPkg:
begin begin
// add dependency // add dependency
LazPackage.AddRequiredDependency(AddParams.Dependency); PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency);
end; end;
end; end;
@ -620,7 +622,12 @@ var
Removed: boolean; Removed: boolean;
NewDependency: TPkgDependency; NewDependency: TPkgDependency;
begin begin
CurDependency:=GetCurrentDependency(Removed);
if (CurDependency=nil) or Removed then exit;
NewDependency:=TPkgDependency.Create; NewDependency:=TPkgDependency.Create;
try
NewDependency.Assign(CurDependency);
// read minimum version // read minimum version
if UseMinVersionCheckBox.Checked then begin if UseMinVersionCheckBox.Checked then begin
@ -652,13 +659,11 @@ begin
NewDependency.Flags:=NewDependency.Flags-[pdfMaxVersion]; NewDependency.Flags:=NewDependency.Flags-[pdfMaxVersion];
end; end;
CurDependency:=GetCurrentDependency(Removed);
if (CurDependency=nil) or Removed then exit;
PackageGraph.ChangeDependency(CurDependency,NewDependency); PackageGraph.ChangeDependency(CurDependency,NewDependency);
finally
NewDependency.Free; NewDependency.Free;
end; end;
end;
procedure TPackageEditorForm.CallRegisterProcCheckBoxClick(Sender: TObject); procedure TPackageEditorForm.CallRegisterProcCheckBoxClick(Sender: TObject);
var var
@ -771,6 +776,8 @@ begin
AddResImg('pkg_text'); AddResImg('pkg_text');
ImageIndexBinary:=Count; ImageIndexBinary:=Count;
AddResImg('pkg_binary'); AddResImg('pkg_binary');
ImageIndexConflict:=Count;
AddResImg('pkg_conflict');
end; end;
SaveBitBtn:=TBitBtn.Create(Self); SaveBitBtn:=TBitBtn.Create(Self);
@ -1086,7 +1093,10 @@ begin
if CurNode=nil then if CurNode=nil then
CurNode:=FilesTreeView.Items.AddChild(RequiredPackagesNode,''); CurNode:=FilesTreeView.Items.AddChild(RequiredPackagesNode,'');
CurNode.Text:=CurDependency.AsString; CurNode.Text:=CurDependency.AsString;
CurNode.ImageIndex:=RequiredPackagesNode.ImageIndex; if CurDependency.LoadPackageResult=lprSuccess then
CurNode.ImageIndex:=ImageIndexRequired
else
CurNode.ImageIndex:=ImageIndexConflict;
CurNode.SelectedIndex:=CurNode.ImageIndex; CurNode.SelectedIndex:=CurNode.ImageIndex;
CurNode:=CurNode.GetNextSibling; CurNode:=CurNode.GetNextSibling;
CurDependency:=CurDependency.NextRequiresDependency; CurDependency:=CurDependency.NextRequiresDependency;
@ -1417,6 +1427,13 @@ begin
if Assigned(OnSavePackage) then Result:=OnSavePackage(Self,APackage,SaveAs); if Assigned(OnSavePackage) then Result:=OnSavePackage(Self,APackage,SaveAs);
end; end;
procedure TPackageEditors.UpdateAllEditors;
var
i: Integer;
begin
for i:=0 to Count-1 do Editors[i].UpdateAll;
end;
initialization initialization
PackageEditors:=nil; PackageEditors:=nil;

View File

@ -54,6 +54,7 @@ type
fpfSearchInInstalledPckgs, fpfSearchInInstalledPckgs,
fpfSearchInAutoInstallPckgs, fpfSearchInAutoInstallPckgs,
fpfSearchInPckgsWithEditor, fpfSearchInPckgsWithEditor,
fpfSearchInLoadedPkgs,
fpfSearchInPkgLinks, fpfSearchInPkgLinks,
fpfIgnoreVersion fpfIgnoreVersion
); );
@ -62,13 +63,13 @@ type
const const
fpfSearchPackageEverywhere = fpfSearchPackageEverywhere =
[fpfSearchInInstalledPckgs,fpfSearchInAutoInstallPckgs, [fpfSearchInInstalledPckgs,fpfSearchInAutoInstallPckgs,
fpfSearchInPckgsWithEditor,fpfSearchInPkgLinks]; fpfSearchInPckgsWithEditor,fpfSearchInPkgLinks,fpfSearchInLoadedPkgs];
type type
TPkgAddedEvent = procedure(APackage: TLazPackage) of object; TPkgAddedEvent = procedure(APackage: TLazPackage) of object;
TPkgDeleteEvent = procedure(APackage: TLazPackage) of object; TPkgDeleteEvent = procedure(APackage: TLazPackage) of object;
TDependencyModifiedEvent = procedure(ADependency: TPkgDependency) of object; TDependencyModifiedEvent = procedure(ADependency: TPkgDependency) of object;
TEndUpdateEvent = procedure(Sender: TObject; Changed: boolean) of object; TEndUpdateEvent = procedure(Sender: TObject; GraphChanged: boolean) of object;
TLazPackageGraph = class TLazPackageGraph = class
private private
@ -95,6 +96,7 @@ type
procedure DoDependencyChanged(Dependency: TPkgDependency); procedure DoDependencyChanged(Dependency: TPkgDependency);
procedure SetAbortRegistration(const AValue: boolean); procedure SetAbortRegistration(const AValue: boolean);
procedure SetRegistrationPackage(const AValue: TLazPackage); procedure SetRegistrationPackage(const AValue: TLazPackage);
procedure UpdateBrokenDependenciesToPackage(APackage: TLazPackage);
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
@ -146,6 +148,8 @@ type
function CheckIfPackageCanBeClosed(APackage: TLazPackage): boolean; function CheckIfPackageCanBeClosed(APackage: TLazPackage): boolean;
function PackageIsNeeded(APackage: TLazPackage): boolean; function PackageIsNeeded(APackage: TLazPackage): boolean;
procedure RegisterStaticPackages; procedure RegisterStaticPackages;
procedure AddDependencyToPackage(APackage: TLazPackage;
Dependency: TPkgDependency);
procedure ChangeDependency(Dependency, NewDependency: TPkgDependency); procedure ChangeDependency(Dependency, NewDependency: TPkgDependency);
function OpenDependency(Dependency: TPkgDependency; function OpenDependency(Dependency: TPkgDependency;
var APackage: TLazPackage): TLoadPackageResult; var APackage: TLazPackage): TLoadPackageResult;
@ -225,6 +229,27 @@ begin
RegisterNoIconProc:=@RegisterNoIconGlobalHandler; RegisterNoIconProc:=@RegisterNoIconGlobalHandler;
end; end;
procedure TLazPackageGraph.UpdateBrokenDependenciesToPackage(
APackage: TLazPackage);
var
ANode: TAVLTreeNode;
Dependency: TPkgDependency;
RequiredPackage: TLazPackage;
begin
BeginUpdate(false);
ANode:=FindLowestPkgDependencyNodeWithName(APackage.Name);
while ANode<>nil do begin
Dependency:=TPkgDependency(ANode.Data);
if (Dependency.LoadPackageResult<>lprSuccess)
and Dependency.IsCompatible(APackage) then begin
Dependency.LoadPackageResult:=lprUndefined;
OpenDependency(Dependency,RequiredPackage);
end;
ANode:=FindNextPkgDependecyNodeWithSameName(ANode);
end;
EndUpdate;
end;
constructor TLazPackageGraph.Create; constructor TLazPackageGraph.Create;
begin begin
FTree:=TAVLTree.Create(@CompareLazPackageID); FTree:=TAVLTree.Create(@CompareLazPackageID);
@ -274,8 +299,8 @@ end;
procedure TLazPackageGraph.BeginUpdate(Change: boolean); procedure TLazPackageGraph.BeginUpdate(Change: boolean);
begin begin
inc(FUpdateLock); inc(FUpdateLock);
fChanged:=Change;
if FUpdateLock=1 then begin if FUpdateLock=1 then begin
fChanged:=Change;
if Assigned(OnBeginUpdate) then OnBeginUpdate(Self); if Assigned(OnBeginUpdate) then OnBeginUpdate(Self);
end; end;
end; end;
@ -340,6 +365,8 @@ begin
Result:=FindNextSameName(Result); Result:=FindNextSameName(Result);
continue; continue;
end; end;
// check loaded packages
if (fpfSearchInLoadedPkgs in Flags) then exit;
// check installed packages // check installed packages
if (fpfSearchInInstalledPckgs in Flags) if (fpfSearchInInstalledPckgs in Flags)
and (CurPkg.Installed<>pitNope) then exit; and (CurPkg.Installed<>pitNope) then exit;
@ -737,13 +764,12 @@ procedure TLazPackageGraph.AddPackage(APackage: TLazPackage);
var var
RequiredPackage: TLazPackage; RequiredPackage: TLazPackage;
Dependency: TPkgDependency; Dependency: TPkgDependency;
DepNode: TAVLTreeNode;
begin begin
BeginUpdate(true); BeginUpdate(true);
FTree.Add(APackage); FTree.Add(APackage);
FItems.Add(APackage); FItems.Add(APackage);
// open all dependencies // open all required dependencies
Dependency:=APackage.FirstRequiredDependency; Dependency:=APackage.FirstRequiredDependency;
while Dependency<>nil do begin while Dependency<>nil do begin
OpenDependency(Dependency,RequiredPackage); OpenDependency(Dependency,RequiredPackage);
@ -751,16 +777,7 @@ begin
end; end;
// update all missing dependencies // update all missing dependencies
DepNode:=FindLowestPkgDependencyNodeWithName(APackage.Name); UpdateBrokenDependenciesToPackage(APackage);
while DepNode<>nil do begin
Dependency:=TPkgDependency(DepNode.Data);
if (Dependency.LoadPackageResult<>lprSuccess)
and Dependency.IsCompatible(APackage) then begin
Dependency.RequiredPackage:=APackage;
Dependency.LoadPackageResult:=lprSuccess;
end;
DepNode:=FindNextPkgDependecyNodeWithSameName(DepNode);
end;
if Assigned(OnAddPackage) then OnAddPackage(APackage); if Assigned(OnAddPackage) then OnAddPackage(APackage);
EndUpdate; EndUpdate;
@ -849,9 +866,7 @@ end;
procedure TLazPackageGraph.ChangePackageID(APackage: TLazPackage; procedure TLazPackageGraph.ChangePackageID(APackage: TLazPackage;
const NewName: string; NewVersion: TPkgVersion; RenameDependencies: boolean); const NewName: string; NewVersion: TPkgVersion; RenameDependencies: boolean);
var var
Dependency, FirstUpdateDependency: TPkgDependency; Dependency: TPkgDependency;
RequiredPackage: TLazPackage;
ANode: TAVLTreeNode;
NextDependency: TPkgDependency; NextDependency: TPkgDependency;
OldPkgName: String; OldPkgName: String;
begin begin
@ -869,9 +884,8 @@ begin
BeginUpdate(true); BeginUpdate(true);
// break or change all dependencies, that became incompatible // cut or fix all dependencies, that became incompatible
Dependency:=APackage.FirstUsedByDependency; Dependency:=APackage.FirstUsedByDependency;
FirstUpdateDependency:=nil;
while Dependency<>nil do begin while Dependency<>nil do begin
NextDependency:=Dependency.NextUsedByDependency; NextDependency:=Dependency.NextUsedByDependency;
if not Dependency.IsCompatible(NewName,NewVersion) then begin if not Dependency.IsCompatible(NewName,NewVersion) then begin
@ -879,8 +893,8 @@ begin
Dependency.MakeCompatible(NewName,NewVersion); Dependency.MakeCompatible(NewName,NewVersion);
if Assigned(OnDependencyModified) then OnDependencyModified(Dependency); if Assigned(OnDependencyModified) then OnDependencyModified(Dependency);
end else begin end else begin
// remove dependency from the used-by list of the required package
Dependency.RequiredPackage:=nil; Dependency.RequiredPackage:=nil;
Dependency.AddToList(FirstUpdateDependency,pdlUsedBy);
end; end;
end; end;
Dependency:=NextDependency; Dependency:=NextDependency;
@ -891,20 +905,8 @@ begin
APackage.ChangeID(NewName,NewVersion); APackage.ChangeID(NewName,NewVersion);
FTree.Add(APackage); FTree.Add(APackage);
// update new broken dependencies
while FirstUpdateDependency<>nil do begin
Dependency.RemoveFromList(FirstUpdateDependency,pdlUsedBy);
OpenDependency(Dependency,RequiredPackage);
end;
// update old broken dependencies // update old broken dependencies
ANode:=FindLowestPkgDependencyNodeWithName(NewName); UpdateBrokenDependenciesToPackage(APackage);
while ANode<>nil do begin
Dependency:=TPkgDependency(ANode.Data);
if (Dependency.LoadPackageResult<>lprSuccess)
and Dependency.IsCompatible(APackage) then
OpenDependency(Dependency,RequiredPackage);
ANode:=FindNextPkgDependecyNodeWithSameName(ANode);
end;
if Assigned(OnChangePackageName) then if Assigned(OnChangePackageName) then
OnChangePackageName(APackage,OldPkgName); OnChangePackageName(APackage,OldPkgName);
@ -968,6 +970,18 @@ begin
RegistrationPackage:=nil; RegistrationPackage:=nil;
end; end;
procedure TLazPackageGraph.AddDependencyToPackage(APackage: TLazPackage;
Dependency: TPkgDependency);
var
RequiredPackage: TLazPackage;
begin
BeginUpdate(true);
APackage.AddRequiredDependency(Dependency);
Dependency.LoadPackageResult:=lprUndefined;
OpenDependency(Dependency,RequiredPackage);
EndUpdate;
end;
procedure TLazPackageGraph.ChangeDependency(Dependency, procedure TLazPackageGraph.ChangeDependency(Dependency,
NewDependency: TPkgDependency); NewDependency: TPkgDependency);
var var
@ -976,6 +990,7 @@ begin
if Dependency.Compare(NewDependency)=0 then exit; if Dependency.Compare(NewDependency)=0 then exit;
BeginUpdate(true); BeginUpdate(true);
Dependency.Assign(NewDependency); Dependency.Assign(NewDependency);
Dependency.LoadPackageResult:=lprUndefined;
OpenDependency(Dependency,RequiredPackage); OpenDependency(Dependency,RequiredPackage);
DoDependencyChanged(Dependency); DoDependencyChanged(Dependency);
EndUpdate; EndUpdate;
@ -1009,6 +1024,7 @@ begin
Dependency.RequiredPackage:=nil; Dependency.RequiredPackage:=nil;
Dependency.LoadPackageResult:=lprNotFound; Dependency.LoadPackageResult:=lprNotFound;
end; end;
fChanged:=true;
EndUpdate; EndUpdate;
end; end;
APackage:=Dependency.RequiredPackage; APackage:=Dependency.RequiredPackage;

View File

@ -51,8 +51,6 @@ type
PkgListLabel: TLabel; PkgListLabel: TLabel;
PkgListBox: TListBox; PkgListBox: TListBox;
InfoMemo: TMemo; InfoMemo: TMemo;
procedure PackageGraphBeginUpdate(Sender: TObject);
procedure PkgGraphExplorerEndUpdate(Sender: TObject; GraphChanged: boolean);
procedure PkgGraphExplorerResize(Sender: TObject); procedure PkgGraphExplorerResize(Sender: TObject);
procedure PkgGraphExplorerShow(Sender: TObject); procedure PkgGraphExplorerShow(Sender: TObject);
procedure PkgListBoxClick(Sender: TObject); procedure PkgListBoxClick(Sender: TObject);
@ -229,18 +227,6 @@ begin
SetBounds(x,y,Parent.ClientWidth-2*x,Max(10,Parent.ClientHeight-y-x)); SetBounds(x,y,Parent.ClientWidth-2*x,Max(10,Parent.ClientHeight-y-x));
end; end;
procedure TPkgGraphExplorer.PackageGraphBeginUpdate(Sender: TObject);
begin
BeginUpdate;
end;
procedure TPkgGraphExplorer.PkgGraphExplorerEndUpdate(Sender: TObject;
GraphChanged: boolean);
begin
if GraphChanged then UpdateAll;
EndUpdate;
end;
procedure TPkgGraphExplorer.PkgGraphExplorerShow(Sender: TObject); procedure TPkgGraphExplorer.PkgGraphExplorerShow(Sender: TObject);
begin begin
UpdateAll; UpdateAll;
@ -493,9 +479,6 @@ begin
OnResize:=@PkgGraphExplorerResize; OnResize:=@PkgGraphExplorerResize;
OnResize(Self); OnResize(Self);
OnShow:=@PkgGraphExplorerShow; OnShow:=@PkgGraphExplorerShow;
PackageGraph.OnBeginUpdate:=@PackageGraphBeginUpdate;
PackageGraph.OnEndUpdate:=@PkgGraphExplorerEndUpdate;
end; end;
destructor TPkgGraphExplorer.Destroy; destructor TPkgGraphExplorer.Destroy;

View File

@ -66,6 +66,7 @@ type
): TModalResult; ): TModalResult;
function OnPackageEditorSavePackage(Sender: TObject; APackage: TLazPackage; function OnPackageEditorSavePackage(Sender: TObject; APackage: TLazPackage;
SaveAs: boolean): TModalResult; SaveAs: boolean): TModalResult;
procedure PackageGraphBeginUpdate(Sender: TObject);
procedure PackageGraphChangePackageName(APackage: TLazPackage; procedure PackageGraphChangePackageName(APackage: TLazPackage;
const OldName: string); const OldName: string);
procedure PackageGraphDeletePackage(APackage: TLazPackage); procedure PackageGraphDeletePackage(APackage: TLazPackage);
@ -73,6 +74,7 @@ type
function PackageGraphExplorerOpenPackage(Sender: TObject; function PackageGraphExplorerOpenPackage(Sender: TObject;
APackage: TLazPackage): TModalResult; APackage: TLazPackage): TModalResult;
procedure PkgManagerAddPackage(Pkg: TLazPackage); procedure PkgManagerAddPackage(Pkg: TLazPackage);
procedure PkgManagerEndUpdate(Sender: TObject; GraphChanged: boolean);
procedure mnuConfigCustomCompsClicked(Sender: TObject); procedure mnuConfigCustomCompsClicked(Sender: TObject);
procedure mnuPkgOpenPackageClicked(Sender: TObject); procedure mnuPkgOpenPackageClicked(Sender: TObject);
procedure mnuOpenRecentPackageClicked(Sender: TObject); procedure mnuOpenRecentPackageClicked(Sender: TObject);
@ -235,6 +237,11 @@ begin
Result:=DoSavePackage(APackage,[]); Result:=DoSavePackage(APackage,[]);
end; end;
procedure TPkgManager.PackageGraphBeginUpdate(Sender: TObject);
begin
if PackageGraphExplorer<>nil then PackageGraphExplorer.BeginUpdate;
end;
procedure TPkgManager.PackageGraphChangePackageName(APackage: TLazPackage; procedure TPkgManager.PackageGraphChangePackageName(APackage: TLazPackage;
const OldName: string); const OldName: string);
begin begin
@ -274,6 +281,18 @@ begin
PackageGraphExplorer.UpdatePackageAdded(Pkg); PackageGraphExplorer.UpdatePackageAdded(Pkg);
end; end;
procedure TPkgManager.PkgManagerEndUpdate(Sender: TObject; GraphChanged: boolean);
begin
if PackageGraphExplorer<>nil then begin
if GraphChanged then PackageGraphExplorer.UpdateAll;
PackageGraphExplorer.EndUpdate;
end;
if GraphChanged then begin
if PackageEditors<>nil then
PackageEditors.UpdateAllEditors;
end;
end;
procedure TPkgManager.mnuConfigCustomCompsClicked(Sender: TObject); procedure TPkgManager.mnuConfigCustomCompsClicked(Sender: TObject);
begin begin
ShowConfigureCustomComponents; ShowConfigureCustomComponents;
@ -498,6 +517,8 @@ begin
PackageGraph.OnAddPackage:=@PkgManagerAddPackage; PackageGraph.OnAddPackage:=@PkgManagerAddPackage;
PackageGraph.OnDeletePackage:=@PackageGraphDeletePackage; PackageGraph.OnDeletePackage:=@PackageGraphDeletePackage;
PackageGraph.OnDependencyModified:=@PackageGraphDependencyModified; PackageGraph.OnDependencyModified:=@PackageGraphDependencyModified;
PackageGraph.OnBeginUpdate:=@PackageGraphBeginUpdate;
PackageGraph.OnEndUpdate:=@PkgManagerEndUpdate;
PackageEditors:=TPackageEditors.Create; PackageEditors:=TPackageEditors.Create;
PackageEditors.OnOpenFile:=@MainIDE.DoOpenMacroFile; PackageEditors.OnOpenFile:=@MainIDE.DoOpenMacroFile;