mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 22:59:15 +02:00
implemented removing, re-adding, updating project dependencies
git-svn-id: trunk@4086 -
This commit is contained in:
parent
a9c753a035
commit
59957529dc
@ -97,6 +97,8 @@ type
|
|||||||
|
|
||||||
function ShowAddToProjectDlg(AProject: TProject;
|
function ShowAddToProjectDlg(AProject: TProject;
|
||||||
var AddResult: TAddToProjectResult): TModalResult;
|
var AddResult: TAddToProjectResult): TModalResult;
|
||||||
|
function CheckAddingDependency(LazProject: TProject;
|
||||||
|
NewDependency: TPkgDependency): boolean;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
@ -384,6 +384,7 @@ type
|
|||||||
procedure DeleteRequiredDependency(Dependency: TPkgDependency);
|
procedure DeleteRequiredDependency(Dependency: TPkgDependency);
|
||||||
procedure DeleteRemovedDependency(Dependency: TPkgDependency);
|
procedure DeleteRemovedDependency(Dependency: TPkgDependency);
|
||||||
procedure RemoveRemovedDependency(Dependency: TPkgDependency);
|
procedure RemoveRemovedDependency(Dependency: TPkgDependency);
|
||||||
|
procedure ReaddRemovedDependency(Dependency: TPkgDependency);
|
||||||
procedure MoveRequiredDependencyUp(Dependency: TPkgDependency);
|
procedure MoveRequiredDependencyUp(Dependency: TPkgDependency);
|
||||||
procedure MoveRequiredDependencyDown(Dependency: TPkgDependency);
|
procedure MoveRequiredDependencyDown(Dependency: TPkgDependency);
|
||||||
function Requires(APackage: TLazPackage): boolean;
|
function Requires(APackage: TLazPackage): boolean;
|
||||||
@ -432,6 +433,7 @@ type
|
|||||||
property UnitOutputDirectory: String
|
property UnitOutputDirectory: String
|
||||||
read fUnitOutputDirectory write fUnitOutputDirectory;
|
read fUnitOutputDirectory write fUnitOutputDirectory;
|
||||||
property Units[Index: integer]:TUnitInfo read GetUnits write SetUnits;
|
property Units[Index: integer]:TUnitInfo read GetUnits write SetUnits;
|
||||||
|
property UpdateLock: integer read FUpdateLock;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
const
|
const
|
||||||
@ -1428,7 +1430,7 @@ begin
|
|||||||
|
|
||||||
// load the dependencies
|
// load the dependencies
|
||||||
LoadPkgDependencyList(XMLConfig,'ProjectOptions/RequiredPackages/',
|
LoadPkgDependencyList(XMLConfig,'ProjectOptions/RequiredPackages/',
|
||||||
FFirstRequiredDependency,pdlRequires,Self);
|
FFirstRequiredDependency,pdlRequires,Self,true);
|
||||||
finally
|
finally
|
||||||
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TProject.ReadProject freeing xml');{$ENDIF}
|
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TProject.ReadProject freeing xml');{$ENDIF}
|
||||||
xmlconfig.Free;
|
xmlconfig.Free;
|
||||||
@ -2156,47 +2158,73 @@ end;
|
|||||||
|
|
||||||
procedure TProject.AddRequiredDependency(Dependency: TPkgDependency);
|
procedure TProject.AddRequiredDependency(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
|
BeginUpdate(true);
|
||||||
Dependency.AddToList(FFirstRequiredDependency,pdlRequires);
|
Dependency.AddToList(FFirstRequiredDependency,pdlRequires);
|
||||||
Dependency.Owner:=Self;
|
Dependency.Owner:=Self;
|
||||||
|
Dependency.HoldPackage:=true;
|
||||||
Modified:=true;
|
Modified:=true;
|
||||||
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProject.RemoveRequiredDependency(Dependency: TPkgDependency);
|
procedure TProject.RemoveRequiredDependency(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
|
BeginUpdate(true);
|
||||||
Dependency.RemoveFromList(FFirstRequiredDependency,pdlRequires);
|
Dependency.RemoveFromList(FFirstRequiredDependency,pdlRequires);
|
||||||
|
Dependency.RequiredPackage:=nil;
|
||||||
Dependency.AddToList(FFirstRemovedDependency,pdlRequires);
|
Dependency.AddToList(FFirstRemovedDependency,pdlRequires);
|
||||||
Dependency.Removed:=true;
|
Dependency.Removed:=true;
|
||||||
Modified:=true;
|
Modified:=true;
|
||||||
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProject.DeleteRequiredDependency(Dependency: TPkgDependency);
|
procedure TProject.DeleteRequiredDependency(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
|
BeginUpdate(true);
|
||||||
Dependency.RequiredPackage:=nil;
|
Dependency.RequiredPackage:=nil;
|
||||||
Dependency.RemoveFromList(FFirstRequiredDependency,pdlRequires);
|
Dependency.RemoveFromList(FFirstRequiredDependency,pdlRequires);
|
||||||
Dependency.Free;
|
Dependency.Free;
|
||||||
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProject.DeleteRemovedDependency(Dependency: TPkgDependency);
|
procedure TProject.DeleteRemovedDependency(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
|
BeginUpdate(true);
|
||||||
Dependency.RequiredPackage:=nil;
|
Dependency.RequiredPackage:=nil;
|
||||||
Dependency.RemoveFromList(FFirstRemovedDependency,pdlRequires);
|
Dependency.RemoveFromList(FFirstRemovedDependency,pdlRequires);
|
||||||
Dependency.Free;
|
Dependency.Free;
|
||||||
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProject.RemoveRemovedDependency(Dependency: TPkgDependency);
|
procedure TProject.RemoveRemovedDependency(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
|
BeginUpdate(true);
|
||||||
Dependency.RemoveFromList(FFirstRemovedDependency,pdlRequires);
|
Dependency.RemoveFromList(FFirstRemovedDependency,pdlRequires);
|
||||||
Dependency.Removed:=false;
|
Dependency.Removed:=false;
|
||||||
|
EndUpdate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProject.ReaddRemovedDependency(Dependency: TPkgDependency);
|
||||||
|
begin
|
||||||
|
BeginUpdate(true);
|
||||||
|
RemoveRemovedDependency(Dependency);
|
||||||
|
AddRequiredDependency(Dependency);
|
||||||
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProject.MoveRequiredDependencyUp(Dependency: TPkgDependency);
|
procedure TProject.MoveRequiredDependencyUp(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
|
if Dependency.PrevRequiresDependency=nil then exit;
|
||||||
|
BeginUpdate(true);
|
||||||
Dependency.MoveUpInList(FFirstRequiredDependency,pdlRequires);
|
Dependency.MoveUpInList(FFirstRequiredDependency,pdlRequires);
|
||||||
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProject.MoveRequiredDependencyDown(Dependency: TPkgDependency);
|
procedure TProject.MoveRequiredDependencyDown(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
|
if Dependency.NextRequiresDependency=nil then exit;
|
||||||
|
BeginUpdate(true);
|
||||||
Dependency.MoveDownInList(FFirstRequiredDependency,pdlRequires);
|
Dependency.MoveDownInList(FFirstRequiredDependency,pdlRequires);
|
||||||
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProject.Requires(APackage: TLazPackage): boolean;
|
function TProject.Requires(APackage: TLazPackage): boolean;
|
||||||
@ -2527,6 +2555,9 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.111 2003/04/20 20:32:40 mattias
|
||||||
|
implemented removing, re-adding, updating project dependencies
|
||||||
|
|
||||||
Revision 1.110 2003/04/20 09:52:07 mattias
|
Revision 1.110 2003/04/20 09:52:07 mattias
|
||||||
implemented saving loading project dependencies
|
implemented saving loading project dependencies
|
||||||
|
|
||||||
|
@ -66,10 +66,13 @@ type
|
|||||||
procedure ItemsPopupMenuPopup(Sender: TObject);
|
procedure ItemsPopupMenuPopup(Sender: TObject);
|
||||||
procedure ItemsTreeViewDblClick(Sender: TObject);
|
procedure ItemsTreeViewDblClick(Sender: TObject);
|
||||||
procedure ItemsTreeViewSelectionChanged(Sender: TObject);
|
procedure ItemsTreeViewSelectionChanged(Sender: TObject);
|
||||||
|
procedure MoveDependencyUpClick(Sender: TObject);
|
||||||
|
procedure MoveDependencyDownClick(Sender: TObject);
|
||||||
procedure OpenBitBtnClick(Sender: TObject);
|
procedure OpenBitBtnClick(Sender: TObject);
|
||||||
procedure OptionsBitBtnClick(Sender: TObject);
|
procedure OptionsBitBtnClick(Sender: TObject);
|
||||||
procedure ProjectInspectorFormResize(Sender: TObject);
|
procedure ProjectInspectorFormResize(Sender: TObject);
|
||||||
procedure ProjectInspectorFormShow(Sender: TObject);
|
procedure ProjectInspectorFormShow(Sender: TObject);
|
||||||
|
procedure ReAddMenuItemClick(Sender: TObject);
|
||||||
procedure RemoveBitBtnClick(Sender: TObject);
|
procedure RemoveBitBtnClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
FOnAddUnitToProject: TOnAddUnitToProject;
|
FOnAddUnitToProject: TOnAddUnitToProject;
|
||||||
@ -170,6 +173,26 @@ begin
|
|||||||
UpdateButtons;
|
UpdateButtons;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TProjectInspectorForm.MoveDependencyUpClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
Dependency: TPkgDependency;
|
||||||
|
begin
|
||||||
|
Dependency:=GetSelectedDependency;
|
||||||
|
if (Dependency=nil) or (Dependency.Removed)
|
||||||
|
or (Dependency.PrevRequiresDependency=nil) then exit;
|
||||||
|
LazProject.MoveRequiredDependencyUp(Dependency);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectInspectorForm.MoveDependencyDownClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
Dependency: TPkgDependency;
|
||||||
|
begin
|
||||||
|
Dependency:=GetSelectedDependency;
|
||||||
|
if (Dependency=nil) or (Dependency.Removed)
|
||||||
|
or (Dependency.NextRequiresDependency=nil) then exit;
|
||||||
|
LazProject.MoveRequiredDependencyDown(Dependency);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TProjectInspectorForm.AddBitBtnClick(Sender: TObject);
|
procedure TProjectInspectorForm.AddBitBtnClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
AddResult: TAddToProjectResult;
|
AddResult: TAddToProjectResult;
|
||||||
@ -209,8 +232,54 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectInspectorForm.ItemsPopupMenuPopup(Sender: TObject);
|
procedure TProjectInspectorForm.ItemsPopupMenuPopup(Sender: TObject);
|
||||||
begin
|
var
|
||||||
|
ItemCnt: integer;
|
||||||
|
|
||||||
|
procedure AddPopupMenuItem(const ACaption: string; AnEvent: TNotifyEvent;
|
||||||
|
EnabledFlag: boolean);
|
||||||
|
var
|
||||||
|
CurMenuItem: TMenuItem;
|
||||||
|
begin
|
||||||
|
if ItemsPopupMenu.Items.Count<=ItemCnt then begin
|
||||||
|
CurMenuItem:=TMenuItem.Create(Self);
|
||||||
|
ItemsPopupMenu.Items.Add(CurMenuItem);
|
||||||
|
end else
|
||||||
|
CurMenuItem:=ItemsPopupMenu.Items[ItemCnt];
|
||||||
|
CurMenuItem.Caption:=ACaption;
|
||||||
|
CurMenuItem.OnClick:=AnEvent;
|
||||||
|
CurMenuItem.Enabled:=EnabledFlag;
|
||||||
|
inc(ItemCnt);
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
CurFile: TUnitInfo;
|
||||||
|
CurDependency: TPkgDependency;
|
||||||
|
begin
|
||||||
|
ItemCnt:=0;
|
||||||
|
CurFile:=GetSelectedFile;
|
||||||
|
if CurFile<>nil then begin
|
||||||
|
AddPopupMenuItem('Open file',@OpenBitBtnClick,true);
|
||||||
|
AddPopupMenuItem('Remove file',@RemoveBitBtnClick,RemoveBitBtn.Enabled);
|
||||||
|
end;
|
||||||
|
CurDependency:=GetSelectedDependency;
|
||||||
|
if CurDependency<>nil then begin
|
||||||
|
if CurDependency.Removed then begin
|
||||||
|
AddPopupMenuItem('Open package',@OpenBitBtnClick,true);
|
||||||
|
AddPopupMenuItem('Re-Add dependency',@ReAddMenuItemClick,
|
||||||
|
AddBitBtn.Enabled);
|
||||||
|
end else begin
|
||||||
|
AddPopupMenuItem('Open package',@OpenBitBtnClick,true);
|
||||||
|
AddPopupMenuItem('Remove dependency',@RemoveBitBtnClick,
|
||||||
|
RemoveBitBtn.Enabled);
|
||||||
|
AddPopupMenuItem('Move dependency up',@MoveDependencyUpClick,
|
||||||
|
(CurDependency.PrevRequiresDependency<>nil));
|
||||||
|
AddPopupMenuItem('Move dependency down',@MoveDependencyDownClick,
|
||||||
|
(CurDependency.NextRequiresDependency<>nil));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
while ItemsPopupMenu.Items.Count>ItemCnt do
|
||||||
|
ItemsPopupMenu.Items.Delete(ItemsPopupMenu.Items.Count-1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectInspectorForm.OpenBitBtnClick(Sender: TObject);
|
procedure TProjectInspectorForm.OpenBitBtnClick(Sender: TObject);
|
||||||
@ -228,20 +297,45 @@ begin
|
|||||||
UpdateAll;
|
UpdateAll;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectInspectorForm.RemoveBitBtnClick(Sender: TObject);
|
procedure TProjectInspectorForm.ReAddMenuItemClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
Dependency: TPkgDependency;
|
||||||
|
RequiredPackage: TLazPackage;
|
||||||
begin
|
begin
|
||||||
|
Dependency:=GetSelectedDependency;
|
||||||
|
if (Dependency=nil) or (not Dependency.Removed)
|
||||||
|
or (not CheckAddingDependency(LazProject,Dependency)) then exit;
|
||||||
|
BeginUpdate;
|
||||||
|
LazProject.ReaddRemovedDependency(Dependency);
|
||||||
|
PackageGraph.OpenDependency(Dependency,RequiredPackage);
|
||||||
|
EndUpdate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectInspectorForm.RemoveBitBtnClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
CurDependency: TPkgDependency;
|
||||||
|
begin
|
||||||
|
CurDependency:=GetSelectedDependency;
|
||||||
|
if (CurDependency<>nil) and (not CurDependency.Removed) then begin
|
||||||
|
if MessageDlg('Confirm deleting dependency',
|
||||||
|
'Delete dependency for '+CurDependency.AsString+'?',
|
||||||
|
mtConfirmation,[mbYes,mbNo],0)<>mrYes
|
||||||
|
then exit;
|
||||||
|
LazProject.RemoveRequiredDependency(CurDependency);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectInspectorForm.SetLazProject(const AValue: TProject);
|
procedure TProjectInspectorForm.SetLazProject(const AValue: TProject);
|
||||||
begin
|
begin
|
||||||
if FLazProject=AValue then exit;
|
if FLazProject=AValue then exit;
|
||||||
if FLazProject<>nil then begin
|
if FLazProject<>nil then begin
|
||||||
|
dec(FUpdateLock,LazProject.UpdateLock);
|
||||||
FLazProject.OnBeginUpdate:=nil;
|
FLazProject.OnBeginUpdate:=nil;
|
||||||
FLazProject.OnEndUpdate:=nil;
|
FLazProject.OnEndUpdate:=nil;
|
||||||
end;
|
end;
|
||||||
FLazProject:=AValue;
|
FLazProject:=AValue;
|
||||||
if FLazProject<>nil then begin
|
if FLazProject<>nil then begin
|
||||||
|
inc(FUpdateLock,LazProject.UpdateLock);
|
||||||
FLazProject.OnBeginUpdate:=@OnProjectBeginUpdate;
|
FLazProject.OnBeginUpdate:=@OnProjectBeginUpdate;
|
||||||
FLazProject.OnEndUpdate:=@OnProjectEndUpdate;
|
FLazProject.OnEndUpdate:=@OnProjectEndUpdate;
|
||||||
end;
|
end;
|
||||||
@ -447,7 +541,7 @@ begin
|
|||||||
CurNode.Free;
|
CurNode.Free;
|
||||||
CurNode:=NextNode;
|
CurNode:=NextNode;
|
||||||
end;
|
end;
|
||||||
DependenciesNode.Expanded:=true;
|
RemovedDependenciesNode.Expanded:=true;
|
||||||
end else begin
|
end else begin
|
||||||
// delete removed dependency nodes
|
// delete removed dependency nodes
|
||||||
if RemovedDependenciesNode<>nil then
|
if RemovedDependenciesNode<>nil then
|
||||||
|
@ -58,26 +58,30 @@ Type
|
|||||||
FDayChanged: TNotifyEvent;
|
FDayChanged: TNotifyEvent;
|
||||||
FMonthChanged: TNotifyEvent;
|
FMonthChanged: TNotifyEvent;
|
||||||
FYearChanged: TNotifyEvent;
|
FYearChanged: TNotifyEvent;
|
||||||
|
FPropsChanged: boolean;
|
||||||
|
function ReadOnlyIsStored: boolean;
|
||||||
procedure SetReadOnly(const AValue: Boolean);
|
procedure SetReadOnly(const AValue: Boolean);
|
||||||
Procedure GetProps;
|
Procedure GetProps;
|
||||||
Procedure SetProps;
|
Procedure SetProps;
|
||||||
function GetDisplaySettings: TDisplaySettings;
|
function GetDisplaySettings: TDisplaySettings;
|
||||||
procedure SetDisplaySettings(const AValue: TDisplaySettings);
|
procedure SetDisplaySettings(const AValue: TDisplaySettings);
|
||||||
|
|
||||||
function GetDate: String;
|
function GetDate: String;
|
||||||
procedure SetDate(const AValue: String);
|
procedure SetDate(const AValue: String);
|
||||||
protected
|
protected
|
||||||
procedure LMMonthChanged(var Message: TLMessage); message LM_MONTHCHANGED;
|
procedure LMMonthChanged(var Message: TLMessage); message LM_MONTHCHANGED;
|
||||||
procedure LMYEARChanged(var Message: TLMessage); message LM_YEARCHANGED;
|
procedure LMYearChanged(var Message: TLMessage); message LM_YEARCHANGED;
|
||||||
procedure LMDAYChanged(var Message: TLMessage); message LM_DAYCHANGED;
|
procedure LMDayChanged(var Message: TLMessage); message LM_DAYCHANGED;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(TheOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
procedure Loaded; override;
|
||||||
|
procedure InitializeWnd; override;
|
||||||
|
procedure AddControl; override;
|
||||||
published
|
published
|
||||||
Property Date : String read GetDate write SetDate;
|
Property Date : String read GetDate write SetDate;
|
||||||
property DisplaySettings : TDisplaySettings read GetDisplaySettings write SetDisplaySettings;
|
property DisplaySettings : TDisplaySettings read GetDisplaySettings write SetDisplaySettings;
|
||||||
// Property Date : TDate read GetDate write SetDate;
|
// Property Date : TDate read GetDate write SetDate;
|
||||||
property ReadOnly : Boolean read FReadOnly write SetReadOnly;
|
property ReadOnly : Boolean read FReadOnly write SetReadOnly stored ReadOnlyIsStored;
|
||||||
property Visible;
|
property Visible;
|
||||||
// property OnChange;
|
// property OnChange;
|
||||||
property OnClick;
|
property OnClick;
|
||||||
@ -99,37 +103,54 @@ end;
|
|||||||
|
|
||||||
{ TCalendar }
|
{ TCalendar }
|
||||||
|
|
||||||
constructor TCalendar.Create(AOwner: TComponent);
|
constructor TCalendar.Create(TheOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(TheOwner);
|
||||||
fCompStyle := csCalendar;
|
fCompStyle := csCalendar;
|
||||||
SetBounds(0,0,250,150);
|
SetBounds(0,0,250,150);
|
||||||
fDisplaySettings := [dsShowHeadings, dsShowDayNames];
|
fDisplaySettings := [dsShowHeadings, dsShowDayNames];
|
||||||
Date := FormatDateTime('dd-mm-yyyy',Now);
|
|
||||||
ControlStyle:=ControlStyle-csMultiClicks-[csAcceptsControls];
|
ControlStyle:=ControlStyle-csMultiClicks-[csAcceptsControls];
|
||||||
|
Date := FormatDateTime('dd-mm-yyyy',Now);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TCalendar.Destroy;
|
destructor TCalendar.Destroy;
|
||||||
begin
|
begin
|
||||||
Inherited;
|
Inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCalendar.Loaded;
|
||||||
|
begin
|
||||||
|
inherited Loaded;
|
||||||
|
if FPropsChanged then SetProps;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCalendar.InitializeWnd;
|
||||||
|
begin
|
||||||
|
inherited InitializeWnd;
|
||||||
|
if FPropsChanged then SetProps;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCalendar.AddControl;
|
||||||
|
begin
|
||||||
|
inherited AddControl;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCalendar.GetDate: String;
|
function TCalendar.GetDate: String;
|
||||||
begin
|
begin
|
||||||
Result := '';
|
Result := '';
|
||||||
GetPRops;
|
GetProps;
|
||||||
Result := FDate;
|
Result := FDate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCalendar.SetDate(const AValue: String);
|
procedure TCalendar.SetDate(const AValue: String);
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
StrtoDate(AValue); //test to see if valid date....
|
StrtoDate(AValue); //test to see if valid date....
|
||||||
FDate := AValue;
|
FDate := AValue;
|
||||||
SetProps;
|
except
|
||||||
except
|
raise EInvalidDate.CreateFmt(rsInvalidDate, [AValue]);
|
||||||
raise EInvalidDate.CreateFmt(rsInvalidDate, [AValue]);
|
end;
|
||||||
end;
|
SetProps;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCalendar.GetDisplaySettings: TDisplaySettings;
|
function TCalendar.GetDisplaySettings: TDisplaySettings;
|
||||||
@ -147,35 +168,42 @@ end;
|
|||||||
procedure TCalendar.SetReadOnly(const AValue: Boolean);
|
procedure TCalendar.SetReadOnly(const AValue: Boolean);
|
||||||
begin
|
begin
|
||||||
if (FReadOnly <> aValue) then
|
if (FReadOnly <> aValue) then
|
||||||
Begin
|
Begin
|
||||||
FReadOnly := aValue;
|
FReadOnly := aValue;
|
||||||
SetProps;
|
SetProps;
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCalendar.ReadOnlyIsStored: boolean;
|
||||||
|
begin
|
||||||
|
Result:=FReadOnly;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TCalendar.GetProps;
|
Procedure TCalendar.GetProps;
|
||||||
var
|
var
|
||||||
Temp : TLMCalendar;
|
Temp : TLMCalendar;
|
||||||
begin
|
begin
|
||||||
if HandleAllocated then
|
if HandleAllocated then
|
||||||
begin
|
begin
|
||||||
CNSendMessage(LM_GETVALUE, Self, @temp); // Get the info
|
CNSendMessage(LM_GETVALUE, Self, @temp); // Get the info
|
||||||
FDate := FormatDateTime('dd-mm-yyyy',Temp.Date);
|
FDate := FormatDateTime('dd-mm-yyyy',Temp.Date);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TCalendar.SetProps;
|
Procedure TCalendar.SetProps;
|
||||||
var
|
var
|
||||||
Temp : TLMCalendar;
|
Temp : TLMCalendar;
|
||||||
begin
|
begin
|
||||||
if HandleAllocated then
|
if HandleAllocated and (not (csLoading in ComponentState)) then
|
||||||
begin
|
begin
|
||||||
Temp.Date := StrToDate(FDate);
|
FPropsChanged:=false;
|
||||||
Temp.DisplaySettings := FDisplaySettings;
|
Temp.Date := StrToDate(FDate);
|
||||||
Temp.ReadOnly := fReadOnly;
|
Temp.DisplaySettings := FDisplaySettings;
|
||||||
CNSendMessage(LM_SETVALUE, Self, @temp); // Get the info
|
Temp.ReadOnly := fReadOnly;
|
||||||
End;
|
CNSendMessage(LM_SETVALUE, Self, @temp); // Get the info
|
||||||
|
End else begin
|
||||||
|
FPropsChanged:=true;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCalendar.LMDAYChanged(var Message: TLMessage);
|
procedure TCalendar.LMDAYChanged(var Message: TLMessage);
|
||||||
|
@ -44,7 +44,7 @@ uses
|
|||||||
{$IFDEF IDE_MEM_CHECK}
|
{$IFDEF IDE_MEM_CHECK}
|
||||||
MemCheck,
|
MemCheck,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Classes, SysUtils, Forms, PackageDefs;
|
Classes, SysUtils, Forms, PackageDefs, Project;
|
||||||
|
|
||||||
type
|
type
|
||||||
TPkgSaveFlag = (
|
TPkgSaveFlag = (
|
||||||
@ -76,7 +76,11 @@ type
|
|||||||
function GetDefaultSaveDirectoryForFile(const Filename: string): string; virtual; abstract;
|
function GetDefaultSaveDirectoryForFile(const Filename: string): string; virtual; abstract;
|
||||||
|
|
||||||
procedure LoadInstalledPackages; virtual; abstract;
|
procedure LoadInstalledPackages; virtual; abstract;
|
||||||
|
function OpenProjectDependencies(AProject: TProject): TModalResult; virtual; abstract;
|
||||||
|
procedure AddDefaultDependencies(AProject: TProject); virtual; abstract;
|
||||||
|
procedure AddProjectDependency(AProject: TProject; APackage: TLazPackage); virtual; abstract;
|
||||||
|
procedure AddProjectLCLDependency(AProject: TProject); virtual; abstract;
|
||||||
|
|
||||||
function ShowConfigureCustomComponents: TModalResult; virtual; abstract;
|
function ShowConfigureCustomComponents: TModalResult; virtual; abstract;
|
||||||
function DoNewPackage: TModalResult; virtual; abstract;
|
function DoNewPackage: TModalResult; virtual; abstract;
|
||||||
function DoShowOpenInstalledPckDlg: TModalResult; virtual; abstract;
|
function DoShowOpenInstalledPckDlg: TModalResult; virtual; abstract;
|
||||||
@ -95,6 +99,8 @@ type
|
|||||||
Flags: TPkgCompileFlags): TModalResult; virtual; abstract;
|
Flags: TPkgCompileFlags): TModalResult; virtual; abstract;
|
||||||
function OnRenameFile(const OldFilename,
|
function OnRenameFile(const OldFilename,
|
||||||
NewFilename: string): TModalResult; virtual; abstract;
|
NewFilename: string): TModalResult; virtual; abstract;
|
||||||
|
|
||||||
|
function OnProjectInspectorOpen(Sender: TObject): boolean; virtual; abstract;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
|
@ -195,6 +195,7 @@ type
|
|||||||
TPkgDependency = class
|
TPkgDependency = class
|
||||||
private
|
private
|
||||||
FFlags: TPkgDependencyFlags;
|
FFlags: TPkgDependencyFlags;
|
||||||
|
FHoldPackage: boolean;
|
||||||
FLoadPackageResult: TLoadPackageResult;
|
FLoadPackageResult: TLoadPackageResult;
|
||||||
FOwner: TObject;
|
FOwner: TObject;
|
||||||
FMaxVersion: TPkgVersion;
|
FMaxVersion: TPkgVersion;
|
||||||
@ -203,6 +204,7 @@ type
|
|||||||
FRemoved: boolean;
|
FRemoved: boolean;
|
||||||
FRequiredPackage: TLazPackage;
|
FRequiredPackage: TLazPackage;
|
||||||
procedure SetFlags(const AValue: TPkgDependencyFlags);
|
procedure SetFlags(const AValue: TPkgDependencyFlags);
|
||||||
|
procedure SetHoldPackage(const AValue: boolean);
|
||||||
procedure SetLoadPackageResult(const AValue: TLoadPackageResult);
|
procedure SetLoadPackageResult(const AValue: TLoadPackageResult);
|
||||||
procedure SetMaxVersion(const AValue: TPkgVersion);
|
procedure SetMaxVersion(const AValue: TPkgVersion);
|
||||||
procedure SetMinVersion(const AValue: TPkgVersion);
|
procedure SetMinVersion(const AValue: TPkgVersion);
|
||||||
@ -248,6 +250,7 @@ type
|
|||||||
property Owner: TObject read FOwner write FOwner;
|
property Owner: TObject read FOwner write FOwner;
|
||||||
property RequiredPackage: TLazPackage read FRequiredPackage write SetRequiredPackage;
|
property RequiredPackage: TLazPackage read FRequiredPackage write SetRequiredPackage;
|
||||||
property LoadPackageResult: TLoadPackageResult read FLoadPackageResult write SetLoadPackageResult;
|
property LoadPackageResult: TLoadPackageResult read FLoadPackageResult write SetLoadPackageResult;
|
||||||
|
property HoldPackage: boolean read FHoldPackage write SetHoldPackage;
|
||||||
end;
|
end;
|
||||||
PPkgDependency = ^TPkgDependency;
|
PPkgDependency = ^TPkgDependency;
|
||||||
|
|
||||||
@ -422,6 +425,7 @@ type
|
|||||||
FFirstRequiredDependency: TPkgDependency;
|
FFirstRequiredDependency: TPkgDependency;
|
||||||
FFirstUsedByDependency: TPkgDependency;
|
FFirstUsedByDependency: TPkgDependency;
|
||||||
FFlags: TLazPackageFlags;
|
FFlags: TLazPackageFlags;
|
||||||
|
FHoldPackageCount: integer;
|
||||||
FIconFile: string;
|
FIconFile: string;
|
||||||
FInstalled: TPackageInstallType;
|
FInstalled: TPackageInstallType;
|
||||||
FLastCompilerFilename: string;
|
FLastCompilerFilename: string;
|
||||||
@ -561,6 +565,7 @@ type
|
|||||||
read FFirstRequiredDependency;
|
read FFirstRequiredDependency;
|
||||||
property FirstUsedByDependency: TPkgDependency read FFirstUsedByDependency;
|
property FirstUsedByDependency: TPkgDependency read FFirstUsedByDependency;
|
||||||
property Flags: TLazPackageFlags read FFlags write SetFlags;
|
property Flags: TLazPackageFlags read FFlags write SetFlags;
|
||||||
|
property HoldPackageCount: integer read FHoldPackageCount;
|
||||||
property IconFile: string read FIconFile write SetIconFile;
|
property IconFile: string read FIconFile write SetIconFile;
|
||||||
property Installed: TPackageInstallType read FInstalled write SetInstalled;
|
property Installed: TPackageInstallType read FInstalled write SetInstalled;
|
||||||
property LastCompilerFilename: string read FLastCompilerFilename
|
property LastCompilerFilename: string read FLastCompilerFilename
|
||||||
@ -624,7 +629,8 @@ function LazPackageTypeIdentToType(const s: string): TLazPackageType;
|
|||||||
|
|
||||||
procedure SortDependencyList(Dependencies: TList);
|
procedure SortDependencyList(Dependencies: TList);
|
||||||
procedure LoadPkgDependencyList(XMLConfig: TXMLConfig; const ThePath: string;
|
procedure LoadPkgDependencyList(XMLConfig: TXMLConfig; const ThePath: string;
|
||||||
var First: TPkgDependency; ListType: TPkgDependencyList; Owner: TObject);
|
var First: TPkgDependency; ListType: TPkgDependencyList; Owner: TObject;
|
||||||
|
HoldPackages: boolean);
|
||||||
procedure SavePkgDependencyList(XMLConfig: TXMLConfig; const ThePath: string;
|
procedure SavePkgDependencyList(XMLConfig: TXMLConfig; const ThePath: string;
|
||||||
First: TPkgDependency; ListType: TPkgDependencyList);
|
First: TPkgDependency; ListType: TPkgDependencyList);
|
||||||
|
|
||||||
@ -666,7 +672,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure LoadPkgDependencyList(XMLConfig: TXMLConfig; const ThePath: string;
|
procedure LoadPkgDependencyList(XMLConfig: TXMLConfig; const ThePath: string;
|
||||||
var First: TPkgDependency; ListType: TPkgDependencyList; Owner: TObject);
|
var First: TPkgDependency; ListType: TPkgDependencyList; Owner: TObject;
|
||||||
|
HoldPackages: boolean);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
PkgDependency: TPkgDependency;
|
PkgDependency: TPkgDependency;
|
||||||
@ -681,6 +688,7 @@ begin
|
|||||||
PkgDependency:=TPkgDependency.Create;
|
PkgDependency:=TPkgDependency.Create;
|
||||||
PkgDependency.LoadFromXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i+1)+'/',
|
PkgDependency.LoadFromXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i+1)+'/',
|
||||||
FileVersion);
|
FileVersion);
|
||||||
|
PkgDependency.HoldPackage:=HoldPackages;
|
||||||
if PkgDependency.MakeSense then
|
if PkgDependency.MakeSense then
|
||||||
List.Add(PkgDependency)
|
List.Add(PkgDependency)
|
||||||
else
|
else
|
||||||
@ -1075,6 +1083,18 @@ begin
|
|||||||
FFlags:=AValue;
|
FFlags:=AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPkgDependency.SetHoldPackage(const AValue: boolean);
|
||||||
|
begin
|
||||||
|
if FHoldPackage=AValue then exit;
|
||||||
|
FHoldPackage:=AValue;
|
||||||
|
if RequiredPackage<>nil then begin
|
||||||
|
if FHoldPackage then
|
||||||
|
inc(RequiredPackage.FHoldPackageCount)
|
||||||
|
else
|
||||||
|
dec(RequiredPackage.FHoldPackageCount);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TPkgDependency.SetLoadPackageResult(const AValue: TLoadPackageResult
|
procedure TPkgDependency.SetLoadPackageResult(const AValue: TLoadPackageResult
|
||||||
);
|
);
|
||||||
begin
|
begin
|
||||||
@ -1819,7 +1839,7 @@ begin
|
|||||||
FPackageType:=LazPackageTypeIdentToType(XMLConfig.GetValue(Path+'Type/Value',
|
FPackageType:=LazPackageTypeIdentToType(XMLConfig.GetValue(Path+'Type/Value',
|
||||||
LazPackageTypeIdents[lptRunTime]));
|
LazPackageTypeIdents[lptRunTime]));
|
||||||
LoadPkgDependencyList(XMLConfig,Path+'RequiredPkgs/',
|
LoadPkgDependencyList(XMLConfig,Path+'RequiredPkgs/',
|
||||||
FFirstRequiredDependency,pdlRequires,Self);
|
FFirstRequiredDependency,pdlRequires,Self,false);
|
||||||
FUsageOptions.LoadFromXMLConfig(XMLConfig,Path+'UsageOptions/');
|
FUsageOptions.LoadFromXMLConfig(XMLConfig,Path+'UsageOptions/');
|
||||||
LoadRect(XMLConfig,Path+'EditorRect/',fEditorRect);
|
LoadRect(XMLConfig,Path+'EditorRect/',fEditorRect);
|
||||||
EndUpdate;
|
EndUpdate;
|
||||||
@ -2105,6 +2125,7 @@ end;
|
|||||||
procedure TLazPackage.RemoveRequiredDependency(Dependency: TPkgDependency);
|
procedure TLazPackage.RemoveRequiredDependency(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
Dependency.RemoveFromList(FFirstRequiredDependency,pdlRequires);
|
Dependency.RemoveFromList(FFirstRequiredDependency,pdlRequires);
|
||||||
|
Dependency.RequiredPackage:=nil;
|
||||||
Dependency.AddToList(FFirstRemovedDependency,pdlRequires);
|
Dependency.AddToList(FFirstRemovedDependency,pdlRequires);
|
||||||
Dependency.Removed:=true;
|
Dependency.Removed:=true;
|
||||||
Modified:=true;
|
Modified:=true;
|
||||||
@ -2169,11 +2190,15 @@ end;
|
|||||||
procedure TLazPackage.AddUsedByDependency(Dependency: TPkgDependency);
|
procedure TLazPackage.AddUsedByDependency(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
Dependency.AddToList(FFirstUsedByDependency,pdlUsedBy);
|
Dependency.AddToList(FFirstUsedByDependency,pdlUsedBy);
|
||||||
|
if Dependency.HoldPackage then
|
||||||
|
inc(FHoldPackageCount);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLazPackage.RemoveUsedByDependency(Dependency: TPkgDependency);
|
procedure TLazPackage.RemoveUsedByDependency(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
Dependency.RemoveFromList(FFirstUsedByDependency,pdlUsedBy);
|
Dependency.RemoveFromList(FFirstUsedByDependency,pdlUsedBy);
|
||||||
|
if Dependency.HoldPackage then
|
||||||
|
dec(FHoldPackageCount);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLazPackage.ChangeID(const NewName: string; NewVersion: TPkgVersion);
|
procedure TLazPackage.ChangeID(const NewName: string; NewVersion: TPkgVersion);
|
||||||
|
@ -339,7 +339,7 @@ begin
|
|||||||
AddBitBtn.Enabled);
|
AddBitBtn.Enabled);
|
||||||
end else if (CurNode.Parent=RemovedRequiredNode) then begin
|
end else if (CurNode.Parent=RemovedRequiredNode) then begin
|
||||||
AddPopupMenuItem('Open package',@OpenFileMenuItemClick,true);
|
AddPopupMenuItem('Open package',@OpenFileMenuItemClick,true);
|
||||||
AddPopupMenuItem('Add dependency',@ReAddMenuItemClick,
|
AddPopupMenuItem('Re-Add dependency',@ReAddMenuItemClick,
|
||||||
AddBitBtn.Enabled);
|
AddBitBtn.Enabled);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -114,8 +114,12 @@ type
|
|||||||
function CreateUniquePkgName(const Prefix: string;
|
function CreateUniquePkgName(const Prefix: string;
|
||||||
IgnorePackage: TLazPackage): string;
|
IgnorePackage: TLazPackage): string;
|
||||||
function CreateUniqueUnitName(const Prefix: string): string;
|
function CreateUniqueUnitName(const Prefix: string): string;
|
||||||
|
function DependencyExists(Dependency: TPkgDependency;
|
||||||
|
Flags: TFindPackageFlags): boolean;
|
||||||
function FindAPackageWithName(const PkgName: string;
|
function FindAPackageWithName(const PkgName: string;
|
||||||
IgnorePackage: TLazPackage): TLazPackage;
|
IgnorePackage: TLazPackage): TLazPackage;
|
||||||
|
function FindBrokenDependencyPath(APackage: TLazPackage): TList;
|
||||||
|
function FindCircleDependencyPath(APackage: TLazPackage): TList;
|
||||||
function FindFileInAllPackages(const TheFilename: string;
|
function FindFileInAllPackages(const TheFilename: string;
|
||||||
ResolveLinks, IgnoreDeleted: boolean): TPkgFile;
|
ResolveLinks, IgnoreDeleted: boolean): TPkgFile;
|
||||||
function FindLowestPkgNodeByName(const PkgName: string): TAVLTreeNode;
|
function FindLowestPkgNodeByName(const PkgName: string): TAVLTreeNode;
|
||||||
@ -131,14 +135,13 @@ type
|
|||||||
WithRequiredPackages, IgnoreDeleted: boolean): TPkgFile;
|
WithRequiredPackages, IgnoreDeleted: boolean): TPkgFile;
|
||||||
function FindUnitInAllPackages(const TheUnitName: string;
|
function FindUnitInAllPackages(const TheUnitName: string;
|
||||||
IgnoreDeleted: boolean): TPkgFile;
|
IgnoreDeleted: boolean): TPkgFile;
|
||||||
|
function GetAutoCompilationOrder(APackage: TLazPackage): TList;
|
||||||
function GetBrokenDependenciesWhenChangingPkgID(APackage: TLazPackage;
|
function GetBrokenDependenciesWhenChangingPkgID(APackage: TLazPackage;
|
||||||
const NewName: string; NewVersion: TPkgVersion): TList;
|
const NewName: string; NewVersion: TPkgVersion): TList;
|
||||||
function PackageCanBeReplaced(OldPackage, NewPackage: TLazPackage): boolean;
|
function PackageCanBeReplaced(OldPackage, NewPackage: TLazPackage): boolean;
|
||||||
function PackageIsNeeded(APackage: TLazPackage): boolean;
|
function PackageIsNeeded(APackage: TLazPackage): boolean;
|
||||||
function PackageNameExists(const PkgName: string;
|
function PackageNameExists(const PkgName: string;
|
||||||
IgnorePackage: TLazPackage): boolean;
|
IgnorePackage: TLazPackage): boolean;
|
||||||
function DependencyExists(Dependency: TPkgDependency;
|
|
||||||
Flags: TFindPackageFlags): boolean;
|
|
||||||
procedure ConsistencyCheck;
|
procedure ConsistencyCheck;
|
||||||
procedure GetAllRequiredPackages(FirstDependency: TPkgDependency;
|
procedure GetAllRequiredPackages(FirstDependency: TPkgDependency;
|
||||||
var List: TList);
|
var List: TList);
|
||||||
@ -152,9 +155,6 @@ type
|
|||||||
Event: TIteratePackagesEvent);
|
Event: TIteratePackagesEvent);
|
||||||
procedure MarkAllPackagesAsNotVisited;
|
procedure MarkAllPackagesAsNotVisited;
|
||||||
procedure MarkNeededPackages;
|
procedure MarkNeededPackages;
|
||||||
function FindBrokenDependencyPath(APackage: TLazPackage): TList;
|
|
||||||
function FindCircleDependencyPath(APackage: TLazPackage): TList;
|
|
||||||
function GetAutoCompilationOrder(APackage: TLazPackage): TList;
|
|
||||||
public
|
public
|
||||||
// packages handling
|
// packages handling
|
||||||
function CreateNewPackage(const Prefix: string): TLazPackage;
|
function CreateNewPackage(const Prefix: string): TLazPackage;
|
||||||
@ -183,6 +183,7 @@ type
|
|||||||
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;
|
||||||
|
procedure OpenRequiredDependencyList(FirstDependency: TPkgDependency);
|
||||||
procedure MoveRequiredDependencyUp(ADependency: TPkgDependency);
|
procedure MoveRequiredDependencyUp(ADependency: TPkgDependency);
|
||||||
procedure MoveRequiredDependencyDown(ADependency: TPkgDependency);
|
procedure MoveRequiredDependencyDown(ADependency: TPkgDependency);
|
||||||
public
|
public
|
||||||
@ -206,6 +207,7 @@ type
|
|||||||
property RegistrationPackage: TLazPackage read FRegistrationPackage
|
property RegistrationPackage: TLazPackage read FRegistrationPackage
|
||||||
write SetRegistrationPackage;
|
write SetRegistrationPackage;
|
||||||
property RegistrationUnitName: string read FRegistrationUnitName;
|
property RegistrationUnitName: string read FRegistrationUnitName;
|
||||||
|
property UpdateLock: integer read FUpdateLock;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -1168,13 +1170,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function TLazPackageGraph.PackageIsNeeded(APackage: TLazPackage): boolean;
|
function TLazPackageGraph.PackageIsNeeded(APackage: TLazPackage): boolean;
|
||||||
// check if package is currently in use (installed, autoinstall, editor open)
|
// check if package is currently in use (installed, autoinstall, editor open,
|
||||||
|
// or used by a needed dependency)
|
||||||
// !!! it does not check if any needed package needs this package
|
// !!! it does not check if any needed package needs this package
|
||||||
begin
|
begin
|
||||||
Result:=true;
|
Result:=true;
|
||||||
// check if package is open, installed or will be installed
|
// check if package is open, installed or will be installed
|
||||||
if (APackage.Installed<>pitNope) or (APackage.AutoInstall<>pitNope)
|
if (APackage.Installed<>pitNope) or (APackage.AutoInstall<>pitNope)
|
||||||
or ((APackage.Editor<>nil) and (APackage.Editor.Visible)) then
|
or ((APackage.Editor<>nil) and (APackage.Editor.Visible))
|
||||||
|
or (APackage.HoldPackageCount>0) then
|
||||||
begin
|
begin
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -1308,6 +1312,19 @@ begin
|
|||||||
Result:=Dependency.LoadPackageResult;
|
Result:=Dependency.LoadPackageResult;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TLazPackageGraph.OpenRequiredDependencyList(
|
||||||
|
FirstDependency: TPkgDependency);
|
||||||
|
var
|
||||||
|
Dependency: TPkgDependency;
|
||||||
|
RequiredPackage: TLazPackage;
|
||||||
|
begin
|
||||||
|
Dependency:=FirstDependency;
|
||||||
|
while Dependency<>nil do begin
|
||||||
|
OpenDependency(Dependency,RequiredPackage);
|
||||||
|
Dependency:=Dependency.NextRequiresDependency;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TLazPackageGraph.MoveRequiredDependencyUp(
|
procedure TLazPackageGraph.MoveRequiredDependencyUp(
|
||||||
ADependency: TPkgDependency);
|
ADependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
|
@ -468,6 +468,7 @@ var
|
|||||||
ALayout: TIDEWindowLayout;
|
ALayout: TIDEWindowLayout;
|
||||||
begin
|
begin
|
||||||
inherited Create(TheOwner);
|
inherited Create(TheOwner);
|
||||||
|
FUpdateLock:=PackageGraph.UpdateLock;
|
||||||
fSortedPackages:=TAVLTree.Create(@CompareLazPackageID);
|
fSortedPackages:=TAVLTree.Create(@CompareLazPackageID);
|
||||||
Name:=NonModalIDEWindowNames[nmiwPkgGraphExplorer];
|
Name:=NonModalIDEWindowNames[nmiwPkgGraphExplorer];
|
||||||
Caption:='Package Graph';
|
Caption:='Package Graph';
|
||||||
|
@ -51,10 +51,12 @@ uses
|
|||||||
PackageEditor, AddToPackageDlg, PackageDefs, PackageLinks, PackageSystem,
|
PackageEditor, AddToPackageDlg, PackageDefs, PackageLinks, PackageSystem,
|
||||||
OpenInstalledPkgDlg, PkgGraphExplorer, BrokenDependenciesDlg, CompilerOptions,
|
OpenInstalledPkgDlg, PkgGraphExplorer, BrokenDependenciesDlg, CompilerOptions,
|
||||||
ExtToolDialog, ExtToolEditDlg, EditDefineTree, DefineTemplates,
|
ExtToolDialog, ExtToolEditDlg, EditDefineTree, DefineTemplates,
|
||||||
|
ProjectInspector,
|
||||||
BasePkgManager, MainBar;
|
BasePkgManager, MainBar;
|
||||||
|
|
||||||
type
|
type
|
||||||
TPkgManager = class(TBasePkgManager)
|
TPkgManager = class(TBasePkgManager)
|
||||||
|
// events
|
||||||
function OnPackageEditorCompilePackage(Sender: TObject;
|
function OnPackageEditorCompilePackage(Sender: TObject;
|
||||||
APackage: TLazPackage; CompileAll: boolean): TModalResult;
|
APackage: TLazPackage; CompileAll: boolean): TModalResult;
|
||||||
function OnPackageEditorCreateFile(Sender: TObject;
|
function OnPackageEditorCreateFile(Sender: TObject;
|
||||||
@ -83,6 +85,7 @@ type
|
|||||||
procedure PackageGraphDependencyModified(ADependency: TPkgDependency);
|
procedure PackageGraphDependencyModified(ADependency: TPkgDependency);
|
||||||
procedure PackageGraphEndUpdate(Sender: TObject; GraphChanged: boolean);
|
procedure PackageGraphEndUpdate(Sender: TObject; GraphChanged: boolean);
|
||||||
private
|
private
|
||||||
|
// helper functions
|
||||||
function DoShowSavePackageAsDialog(APackage: TLazPackage): TModalResult;
|
function DoShowSavePackageAsDialog(APackage: TLazPackage): TModalResult;
|
||||||
function CompileRequiredPackages(APackage: TLazPackage): TModalResult;
|
function CompileRequiredPackages(APackage: TLazPackage): TModalResult;
|
||||||
function CheckPackageGraphForCompilation(APackage: TLazPackage): TModalResult;
|
function CheckPackageGraphForCompilation(APackage: TLazPackage): TModalResult;
|
||||||
@ -109,7 +112,11 @@ type
|
|||||||
|
|
||||||
procedure LoadInstalledPackages; override;
|
procedure LoadInstalledPackages; override;
|
||||||
function AddPackageToGraph(APackage: TLazPackage): TModalResult;
|
function AddPackageToGraph(APackage: TLazPackage): TModalResult;
|
||||||
|
function OpenProjectDependencies(AProject: TProject): TModalResult; override;
|
||||||
|
procedure AddDefaultDependencies(AProject: TProject); override;
|
||||||
|
procedure AddProjectDependency(AProject: TProject; APackage: TLazPackage); override;
|
||||||
|
procedure AddProjectLCLDependency(AProject: TProject); override;
|
||||||
|
|
||||||
function ShowConfigureCustomComponents: TModalResult; override;
|
function ShowConfigureCustomComponents: TModalResult; override;
|
||||||
function DoNewPackage: TModalResult; override;
|
function DoNewPackage: TModalResult; override;
|
||||||
function DoShowOpenInstalledPckDlg: TModalResult; override;
|
function DoShowOpenInstalledPckDlg: TModalResult; override;
|
||||||
@ -129,6 +136,8 @@ type
|
|||||||
Flags: TPkgCompileFlags): TModalResult; override;
|
Flags: TPkgCompileFlags): TModalResult; override;
|
||||||
function OnRenameFile(const OldFilename,
|
function OnRenameFile(const OldFilename,
|
||||||
NewFilename: string): TModalResult; override;
|
NewFilename: string): TModalResult; override;
|
||||||
|
|
||||||
|
function OnProjectInspectorOpen(Sender: TObject): boolean; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -326,6 +335,8 @@ begin
|
|||||||
if GraphChanged then begin
|
if GraphChanged then begin
|
||||||
if PackageEditors<>nil then
|
if PackageEditors<>nil then
|
||||||
PackageEditors.UpdateAllEditors;
|
PackageEditors.UpdateAllEditors;
|
||||||
|
if ProjInspector<>nil then
|
||||||
|
ProjInspector.UpdateItems;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -985,6 +996,57 @@ begin
|
|||||||
Result:=mrOk;
|
Result:=mrOk;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPkgManager.OpenProjectDependencies(AProject: TProject): TModalResult;
|
||||||
|
begin
|
||||||
|
PackageGraph.OpenRequiredDependencyList(AProject.FirstRequiredDependency);
|
||||||
|
Result:=mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPkgManager.AddDefaultDependencies(AProject: TProject);
|
||||||
|
var
|
||||||
|
ds: char;
|
||||||
|
begin
|
||||||
|
case AProject.ProjectType of
|
||||||
|
|
||||||
|
ptApplication:
|
||||||
|
begin
|
||||||
|
// add lcl pp/pas dirs to source search path
|
||||||
|
ds:=PathDelim;
|
||||||
|
AProject.SrcPath:=
|
||||||
|
'$(LazarusDir)'+ds+'lcl'
|
||||||
|
+';'+
|
||||||
|
'$(LazarusDir)'+ds+'lcl'+ds+'interfaces'+ds+'$(LCLWidgetType)';
|
||||||
|
{$IFDEF EnablePkgs}
|
||||||
|
AddProjectLCLDependency(AProject);
|
||||||
|
{$ELSE}
|
||||||
|
// add lcl ppu dirs to unit search path
|
||||||
|
Project1.CompilerOptions.OtherUnitFiles:=
|
||||||
|
'$(LazarusDir)'+ds+'lcl'+ds+'units'
|
||||||
|
+';'+
|
||||||
|
'$(LazarusDir)'+ds+'lcl'+ds+'units'+ds+'$(LCLWidgetType)';
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
||||||
|
|
||||||
|
end;
|
||||||
|
OpenProjectDependencies(AProject);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPkgManager.AddProjectDependency(AProject: TProject;
|
||||||
|
APackage: TLazPackage);
|
||||||
|
begin
|
||||||
|
// check if the dependency is already there
|
||||||
|
if FindDependencyByNameInList(AProject.FirstRequiredDependency,pdlRequires,
|
||||||
|
APackage.Name)<>nil
|
||||||
|
then exit;
|
||||||
|
// add a dependency for the package to the project
|
||||||
|
AProject.AddRequiredDependency(APackage.CreateDependencyForThisPkg);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPkgManager.AddProjectLCLDependency(AProject: TProject);
|
||||||
|
begin
|
||||||
|
AddProjectDependency(AProject,PackageGraph.LCLPackage);
|
||||||
|
end;
|
||||||
|
|
||||||
function TPkgManager.ShowConfigureCustomComponents: TModalResult;
|
function TPkgManager.ShowConfigureCustomComponents: TModalResult;
|
||||||
begin
|
begin
|
||||||
Result:=ShowConfigureCustomComponentDlg(EnvironmentOptions.LazarusDirectory);
|
Result:=ShowConfigureCustomComponentDlg(EnvironmentOptions.LazarusDirectory);
|
||||||
@ -1488,6 +1550,22 @@ begin
|
|||||||
Result:=mrOk;
|
Result:=mrOk;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPkgManager.OnProjectInspectorOpen(Sender: TObject): boolean;
|
||||||
|
var
|
||||||
|
Dependency: TPkgDependency;
|
||||||
|
RequiredPackage: TLazPackage;
|
||||||
|
begin
|
||||||
|
Result:=false;
|
||||||
|
if (Sender=nil) or (not (Sender is TProjectInspectorForm)) then exit;
|
||||||
|
Dependency:=TProjectInspectorForm(Sender).GetSelectedDependency;
|
||||||
|
if Dependency=nil then exit;
|
||||||
|
// user has selected a dependency -> open package
|
||||||
|
Result:=true;
|
||||||
|
if PackageGraph.OpenDependency(Dependency,RequiredPackage)<>lprSuccess then
|
||||||
|
exit;
|
||||||
|
DoOpenPackage(RequiredPackage);
|
||||||
|
end;
|
||||||
|
|
||||||
function TPkgManager.DoClosePackageEditor(APackage: TLazPackage): TModalResult;
|
function TPkgManager.DoClosePackageEditor(APackage: TLazPackage): TModalResult;
|
||||||
begin
|
begin
|
||||||
if APackage.Editor<>nil then begin
|
if APackage.Editor<>nil then begin
|
||||||
|
Loading…
Reference in New Issue
Block a user