mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-07 00:40:52 +02:00
IDE: fixed project inspector/package editor requirement Apply Changes
git-svn-id: trunk@64758 -
This commit is contained in:
parent
07895b46b1
commit
8981264152
@ -69,7 +69,7 @@ uses
|
||||
IDEHelpIntf, IDECommands, IDEDialogs, IDEImagesIntf, LazIDEIntf, ToolBarIntf,
|
||||
// IDE
|
||||
LazarusIDEStrConsts, MainBase, IDEProcs, DialogProcs, IDEOptionDefs, Project,
|
||||
InputHistory, TransferMacros, EnvironmentOpts, BuildManager,
|
||||
InputHistory, TransferMacros, EnvironmentOpts, BuildManager, BasePkgManager,
|
||||
ProjPackChecks, ProjPackEditing, ProjPackFilePropGui, PackageDefs, PackageSystem,
|
||||
AddToProjectDlg, AddPkgDependencyDlg, AddFPMakeDependencyDlg, LResources;
|
||||
|
||||
@ -1100,13 +1100,8 @@ begin
|
||||
CurDependency:=GetSingleSelectedDependency;
|
||||
if (LazProject=nil) or (CurDependency=nil)
|
||||
or not FPropGui.CheckApplyDependency(CurDependency) then exit;
|
||||
// Try to load the package again. Min/max version may have changed.
|
||||
CurDependency.LoadPackageResult := lprUndefined;
|
||||
// This calls UpdateRequiredPackages from PackageGraph.OnEndUpdate,
|
||||
// and also updates all package editors which is useless here.
|
||||
PackageGraph.OpenDependency(CurDependency, False);
|
||||
//fForcedFlags:=[pefNeedUpdateRequiredPkgs];
|
||||
LazProject.Modified:=True;
|
||||
PkgBoss.ApplyDependency(CurDependency);
|
||||
end;
|
||||
|
||||
function TProjectInspectorForm.CreateToolButton(AName, ACaption, AHint, AImageName: String;
|
||||
|
@ -118,6 +118,7 @@ type
|
||||
function DoCloseAllPackageEditors: TModalResult; virtual; abstract;
|
||||
function AddPackageDependency(APackage: TLazPackage; const ReqPackage: string;
|
||||
OnlyTestIfPossible: boolean = false): TModalResult; virtual; abstract;
|
||||
function ApplyDependency(CurDependency: TPkgDependency): TModalResult; virtual; abstract;
|
||||
function IsPackageEditorForm(AForm: TCustomForm): boolean; virtual; abstract;
|
||||
procedure OpenHiddenModifiedPackages; virtual; abstract;
|
||||
|
||||
|
@ -53,7 +53,8 @@ uses
|
||||
MainBase, IDEProcs, DialogProcs, LazarusIDEStrConsts, IDEDefs, CompilerOptions,
|
||||
EnvironmentOpts, InputHistory, PackageSystem, PackageDefs, AddToPackageDlg,
|
||||
AddPkgDependencyDlg, AddFPMakeDependencyDlg, ProjPackChecks, PkgVirtualUnitEditor,
|
||||
MissingPkgFilesDlg, CleanPkgDeps, ProjPackFilePropGui, ProjPackEditing;
|
||||
MissingPkgFilesDlg, CleanPkgDeps, ProjPackFilePropGui, ProjPackEditing,
|
||||
BasePkgManager;
|
||||
|
||||
const
|
||||
PackageEditorMenuRootName = 'PackageEditor';
|
||||
@ -1538,11 +1539,8 @@ begin
|
||||
CurDependency:=GetSingleSelectedDependency;
|
||||
if (LazPackage=nil) or (CurDependency=nil)
|
||||
or not FPropGui.CheckApplyDependency(CurDependency) then exit;
|
||||
// Try to load the package again. Min/max version may have changed.
|
||||
CurDependency.LoadPackageResult := lprUndefined;
|
||||
PackageGraph.OpenDependency(CurDependency, False);
|
||||
//fForcedFlags:=[pefNeedUpdateRequiredPkgs];
|
||||
LazPackage.Modified:=True;
|
||||
PkgBoss.ApplyDependency(CurDependency);
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.CallRegisterProcCheckBoxChange(Sender: TObject);
|
||||
@ -3051,7 +3049,9 @@ begin
|
||||
//debugln(['TPackageEditorForm.CanCloseEditor ',Caption]);
|
||||
if (LazPackage<>nil) and (not (lpfDestroying in LazPackage.Flags)) then
|
||||
begin
|
||||
if (not LazPackage.ReadOnly) and LazPackage.Modified then
|
||||
if LazPackage.ReadOnly then
|
||||
LazPackage.Modified:=false // clear modified flag, so that it will be closed
|
||||
else if LazPackage.Modified then
|
||||
begin
|
||||
MsgResult:=MessageDlg(lisPkgMangSavePackage,
|
||||
Format(lisPckEditPackageHasChangedSavePackage, [LazPackage.IDAsString, LineEnding]),
|
||||
|
@ -446,9 +446,8 @@ type
|
||||
procedure AddDependencyToPackage(APackage, RequiredPackage: TLazPackage);
|
||||
procedure RemoveDependencyFromPackage(APackage: TLazPackage;
|
||||
Dependency: TPkgDependency; AddToRemovedList: boolean);
|
||||
//procedure ChangeDependency(Dependency, NewDependency: TPkgDependency);
|
||||
function OpenDependency(Dependency: TPkgDependency;
|
||||
ShowAbort: boolean): TLoadPackageResult;
|
||||
ShowAbort: boolean; IgnorePackage: TLazPackage = nil): TLoadPackageResult;
|
||||
function FindAlternativeLPK(APackage: TLazPackage): string;
|
||||
procedure OpenInstalledDependency(Dependency: TPkgDependency;
|
||||
InstallType: TPackageInstallType; var Quiet: boolean);
|
||||
@ -5757,21 +5756,9 @@ begin
|
||||
IncreaseBuildMacroChangeStamp;
|
||||
EndUpdate;
|
||||
end;
|
||||
{
|
||||
procedure TLazPackageGraph.ChangeDependency(Dependency, NewDependency: TPkgDependency);
|
||||
begin
|
||||
if Dependency.Compare(NewDependency)=0 then exit;
|
||||
BeginUpdate(true);
|
||||
Dependency.Assign(NewDependency);
|
||||
Dependency.LoadPackageResult:=lprUndefined;
|
||||
IncreaseBuildMacroChangeStamp;
|
||||
OpenDependency(Dependency,false);
|
||||
DoDependencyChanged(Dependency);
|
||||
EndUpdate;
|
||||
end;
|
||||
}
|
||||
|
||||
function TLazPackageGraph.OpenDependency(Dependency: TPkgDependency;
|
||||
ShowAbort: boolean): TLoadPackageResult;
|
||||
ShowAbort: boolean; IgnorePackage: TLazPackage): TLoadPackageResult;
|
||||
|
||||
procedure OpenFile(AFilename: string);
|
||||
var
|
||||
@ -5808,7 +5795,7 @@ begin
|
||||
// search compatible package in opened packages
|
||||
ANode:=FindNodeOfDependency(Dependency,fpfSearchEverywhere);
|
||||
if (ANode<>nil) then begin
|
||||
// there is already a package that fits name and version
|
||||
// there is already a loaded package that fits name and version
|
||||
APackage:=TLazPackage(ANode.Data);
|
||||
Dependency.RequiredPackage:=APackage;
|
||||
Dependency.LoadPackageResult:=lprSuccess;
|
||||
@ -5831,12 +5818,12 @@ begin
|
||||
end;
|
||||
end;
|
||||
if Dependency.LoadPackageResult=lprUndefined then begin
|
||||
// no compatible package yet open
|
||||
// no compatible package open yet
|
||||
Dependency.RequiredPackage:=nil;
|
||||
Dependency.LoadPackageResult:=lprNotFound;
|
||||
APackage:=FindPackageWithName(Dependency.PackageName,nil);
|
||||
APackage:=FindPackageWithName(Dependency.PackageName,IgnorePackage);
|
||||
if APackage=nil then begin
|
||||
// no package with same name open
|
||||
// no compatible package with same name open
|
||||
if Dependency.DependencyType=pdtLazarus then begin
|
||||
// -> try package links
|
||||
IgnoreFiles:=nil;
|
||||
|
@ -323,6 +323,7 @@ type
|
||||
function WarnAboutMissingPackageFiles(APackage: TLazPackage): TModalResult;
|
||||
function AddPackageDependency(APackage: TLazPackage; const ReqPackage: string;
|
||||
OnlyTestIfPossible: boolean = false): TModalResult; override;
|
||||
function ApplyDependency(CurDependency: TPkgDependency): TModalResult; override;
|
||||
function GetPackageOfEditorItem(Sender: TObject): TIDEPackage; override;
|
||||
|
||||
// package compilation
|
||||
@ -5370,6 +5371,34 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPkgManager.ApplyDependency(CurDependency: TPkgDependency
|
||||
): TModalResult;
|
||||
// apply
|
||||
var
|
||||
OldPkg: TLazPackage;
|
||||
PkgEdit: TPackageEditorForm;
|
||||
begin
|
||||
Result:=mrOk;
|
||||
OldPkg:=CurDependency.RequiredPackage;
|
||||
if (OldPkg<>nil) and CurDependency.IsCompatible(OldPkg) then
|
||||
exit(mrOk);
|
||||
|
||||
PkgEdit:=PackageEditors.FindEditor(OldPkg);
|
||||
if PkgEdit<>nil then
|
||||
begin
|
||||
if PkgEdit.CanCloseEditor<>mrOk then
|
||||
exit(mrCancel);
|
||||
end;
|
||||
|
||||
// Try to load the package again. Min/max version may have changed.
|
||||
CurDependency.LoadPackageResult := lprUndefined;
|
||||
// This calls UpdateRequiredPackages from PackageGraph.OnEndUpdate,
|
||||
// and also updates all package editors which is useless here.
|
||||
if PackageGraph.OpenDependency(CurDependency, False, OldPkg)<>lprSuccess then
|
||||
Result:=mrCancel;
|
||||
//fForcedFlags:=[pefNeedUpdateRequiredPkgs];
|
||||
end;
|
||||
|
||||
function TPkgManager.GetPackageOfEditorItem(Sender: TObject): TIDEPackage;
|
||||
begin
|
||||
Result:=nil;
|
||||
|
@ -99,13 +99,12 @@ type
|
||||
property OnGetPkgDep: TGetPkgDepEvent read fOnGetPkgDep write fOnGetPkgDep;
|
||||
end;
|
||||
|
||||
function GetNodeData(TVNode: TTreeNode): TPENodeData;
|
||||
function NodeTreeIsIn(xIterNode, xParentNode: TTreeNode): Boolean;
|
||||
function FindOPLink(const ADependency: TPkgDependencyID): TPackageLink;
|
||||
function OPNote(ADep: TPkgDependencyID): string;
|
||||
function OpmAddOrOpenDependency(ADep: TPkgDependencyID): Boolean;
|
||||
procedure OpmInstallPendingDependencies;
|
||||
|
||||
function GetNodeData(TVNode: TTreeNode): TPENodeData;
|
||||
function NodeTreeIsIn(xIterNode, xParentNode: TTreeNode): Boolean;
|
||||
function FindOPLink(const ADependency: TPkgDependencyID): TPackageLink;
|
||||
function OPNote(ADep: TPkgDependencyID): string;
|
||||
function OpmAddOrOpenDependency(ADep: TPkgDependencyID): Boolean;
|
||||
procedure OpmInstallPendingDependencies;
|
||||
|
||||
implementation
|
||||
|
||||
@ -459,7 +458,7 @@ begin
|
||||
// Assign relevant data to temp variables
|
||||
Flags:=aDep.Flags;
|
||||
MinVers.Assign(aDep.MinVersion);
|
||||
MaxVers.Assign(aDep.MinVersion);
|
||||
MaxVers.Assign(aDep.MaxVersion);
|
||||
|
||||
// read minimum version
|
||||
if UseMinVersionCheckBox.Checked then begin
|
||||
|
Loading…
Reference in New Issue
Block a user