mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-15 23:39:24 +02:00
IDE: adding dependencies: check if already there, check for version conflicts, check for providing
git-svn-id: trunk@33427 -
This commit is contained in:
parent
8227b20654
commit
6aea786e24
@ -3342,6 +3342,7 @@ resourcestring
|
||||
lisProjAddThePackageNameIsInvalidPlaseChooseAnExistingPackag = 'The package '
|
||||
+'name %s%s%s is invalid.%sPlase choose an existing package.';
|
||||
lisProjAddDependencyAlreadyExists = 'Dependency already exists';
|
||||
lisVersionMismatch = 'Version mismatch';
|
||||
lisProjAddTheProjectHasAlreadyADependency = 'The project has already a '
|
||||
+'dependency for the package %s%s%s.';
|
||||
lisProjAddPackageNotFound = 'Package not found';
|
||||
|
@ -42,6 +42,7 @@ uses
|
||||
StdCtrls, ExtCtrls, Dialogs, FileUtil, ComCtrls, AVL_Tree,
|
||||
// IDEIntf
|
||||
NewItemIntf, ProjectIntf, PackageIntf, FormEditingIntf, IDEWindowIntf,
|
||||
IDEDialogs,
|
||||
// IDE
|
||||
LazarusIDEStrConsts, InputHistory, CodeToolManager, IDEDefs,
|
||||
IDEProcs, EnvironmentOpts, PackageSystem, PackageDefs, ComponentReg,
|
||||
@ -210,9 +211,10 @@ function CheckAddingUnitFilename(LazPackage: TLazPackage;
|
||||
AddFileType: TAddToPkgType; OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
||||
var AFilename: string): boolean;
|
||||
function CheckAddingDependency(LazPackage: TLazPackage;
|
||||
NewDependency: TPkgDependency): boolean;
|
||||
NewDependency: TPkgDependency; Quiet, WarnIfAlreadyThere: boolean
|
||||
): TModalResult;// mrOk=can be added, mrCancel=do not add, mrIgnore=already there
|
||||
function CheckAddingPkgDependency(LazPackage: TLazPackage;
|
||||
RequiredPkg: TLazPackage): boolean;
|
||||
RequiredPkg: TLazPackage; Quiet, WarnIfAlreadyThere: boolean): TModalResult;
|
||||
|
||||
|
||||
implementation
|
||||
@ -251,9 +253,9 @@ begin
|
||||
|
||||
// check if package is readonly
|
||||
if LazPackage.ReadOnly then begin
|
||||
MessageDlg(lisAF2PPackageIsReadOnly,
|
||||
IDEMessageDialog(lisAF2PPackageIsReadOnly,
|
||||
Format(lisAF2PThePackageIsReadOnly, [LazPackage.IDAsString]),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
|
||||
@ -264,10 +266,10 @@ begin
|
||||
if LazPackage.HasDirectory then
|
||||
AFilename:=LazPackage.Directory+AFilename
|
||||
else begin
|
||||
MessageDlg(lisA2PInvalidFilename,
|
||||
IDEMessageDialog(lisA2PInvalidFilename,
|
||||
Format(lisA2PTheFilenameIsAmbiguousPleaseSpecifiyAFilename,
|
||||
['"', AFilename, '"', #13]),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -276,9 +278,9 @@ begin
|
||||
if (FilenameIsAbsolute(AFilename)) then begin
|
||||
if (not FileExistsUTF8(AFilename)) then begin
|
||||
if AddFileType=d2ptUnit then begin
|
||||
MessageDlg(lisFileNotFound,
|
||||
IDEMessageDialog(lisFileNotFound,
|
||||
Format(lisPkgMangFileNotFound, ['"', AFilename, '"']),
|
||||
mtError, [mbCancel], 0);
|
||||
mtError, [mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -291,7 +293,7 @@ begin
|
||||
Msg:=Format(lisA2PFileAlreadyExistsInThePackage, ['"',AFilename,'"']);
|
||||
if PkgFile.Filename<>AFilename then
|
||||
Msg:=Msg+LineEnding+Format(lisA2PExistingFile2, ['"',PkgFile.Filename,'"']);
|
||||
MessageDlg(lisA2PFileAlreadyExists, Msg, mtError, [mbCancel], 0);
|
||||
IDEMessageDialog(lisA2PFileAlreadyExists, Msg, mtError, [mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -302,10 +304,10 @@ begin
|
||||
IDEFileFlags:=[];
|
||||
OnGetIDEFileInfo(nil,AFilename,[ifsPartOfProject],IDEFileFlags);
|
||||
if (ifsPartOfProject in IDEFileFlags) then begin
|
||||
MessageDlg(lisA2PFileIsUsed,
|
||||
IDEMessageDialog(lisA2PFileIsUsed,
|
||||
Format(lisA2PTheFileIsPartOfTheCurrentProjectItIsABadIdea,
|
||||
['"', AFilename, '"', #13]),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -314,9 +316,9 @@ begin
|
||||
// check file extension
|
||||
if AddFileType in [d2ptUnit,d2ptNewComponent,d2ptVirtualUnit] then begin
|
||||
if not FilenameIsPascalUnit(AFilename) then begin
|
||||
MessageDlg(lisA2PFileNotUnit,
|
||||
IDEMessageDialog(lisA2PFileNotUnit,
|
||||
lisA2PPascalUnitsMustHaveTheExtensionPPOrPas,
|
||||
mtWarning,[mbCancel],0);
|
||||
mtWarning,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -325,9 +327,9 @@ begin
|
||||
if AddFileType in [d2ptUnit,d2ptNewComponent,d2ptVirtualUnit] then begin
|
||||
AnUnitName:=ExtractFileNameOnly(AFilename);
|
||||
if not IsValidUnitName(AnUnitName) then begin
|
||||
MessageDlg(lisA2PFileNotUnit,
|
||||
IDEMessageDialog(lisA2PFileNotUnit,
|
||||
Format(lisA2PisNotAValidUnitName, ['"', AnUnitName, '"']),
|
||||
mtWarning,[mbCancel],0);
|
||||
mtWarning,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
|
||||
@ -335,26 +337,26 @@ begin
|
||||
PkgFile:=LazPackage.FindUnit(AnUnitName,true,PkgFile);
|
||||
if PkgFile<>nil then begin
|
||||
// a unit with this name already exists in this package => warn
|
||||
if MessageDlg(lisA2PUnitnameAlreadyExists,
|
||||
if IDEMessageDialog(lisA2PUnitnameAlreadyExists,
|
||||
Format(lisA2PTheUnitnameAlreadyExistsInThisPackage, ['"',AnUnitName,'"']),
|
||||
mtError,[mbCancel,mbIgnore],0)<>mrIgnore then exit;
|
||||
mtError,[mbCancel,mbIgnore])<>mrIgnore then exit;
|
||||
end else begin
|
||||
PkgFile:=PackageGraph.FindUnit(LazPackage,AnUnitName,true,true);
|
||||
if (PkgFile<>nil) and (PkgFile.LazPackage<>LazPackage) then begin
|
||||
// there is already a unit with this name in another package => warn
|
||||
if MessageDlg(lisA2PUnitnameAlreadyExists,
|
||||
if IDEMessageDialog(lisA2PUnitnameAlreadyExists,
|
||||
Format(lisA2PTheUnitnameAlreadyExistsInThePackage,
|
||||
['"', AnUnitName, '"', #13, PkgFile.LazPackage.IDAsString]),
|
||||
mtWarning,[mbCancel,mbIgnore],0)<>mrIgnore then exit;
|
||||
mtWarning,[mbCancel,mbIgnore])<>mrIgnore then exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// check if unitname is a componentclass
|
||||
if IDEComponentPalette.FindComponent(AnUnitName)<>nil then begin
|
||||
if MessageDlg(lisA2PAmbiguousUnitName,
|
||||
if IDEMessageDialog(lisA2PAmbiguousUnitName,
|
||||
Format(lisA2PTheUnitNameIsTheSameAsAnRegisteredComponent,
|
||||
['"', AnUnitName, '"', #13]),
|
||||
mtWarning,[mbCancel,mbIgnore],0)<>mrIgnore
|
||||
mtWarning,[mbCancel,mbIgnore])<>mrIgnore
|
||||
then
|
||||
exit;
|
||||
end;
|
||||
@ -365,11 +367,14 @@ begin
|
||||
end;
|
||||
|
||||
function CheckAddingDependency(LazPackage: TLazPackage;
|
||||
NewDependency: TPkgDependency): boolean;
|
||||
NewDependency: TPkgDependency; Quiet, WarnIfAlreadyThere: boolean): TModalResult;
|
||||
var
|
||||
NewPkgName: String;
|
||||
RequiredPackage: TLazPackage;
|
||||
ProvidingAPackage: TLazPackage;
|
||||
ConflictDependency: TPkgDependency;
|
||||
begin
|
||||
Result:=false;
|
||||
Result:=mrCancel;
|
||||
|
||||
NewPkgName:=NewDependency.PackageName;
|
||||
|
||||
@ -378,50 +383,84 @@ begin
|
||||
and (pdfMaxVersion in NewDependency.Flags)
|
||||
and (NewDependency.MaxVersion.Compare(NewDependency.MinVersion)<0) then
|
||||
begin
|
||||
MessageDlg(lisProjAddInvalidMinMaxVersion,
|
||||
lisA2PTheMaximumVersionIsLowerThanTheMinimimVersion,
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
if not Quiet then
|
||||
IDEMessageDialog(lisProjAddInvalidMinMaxVersion,
|
||||
lisA2PTheMaximumVersionIsLowerThanTheMinimimVersion,
|
||||
mtError,[mbCancel]);
|
||||
exit(mrCancel);
|
||||
end;
|
||||
|
||||
// check packagename
|
||||
if (NewPkgName='') or (not IsValidUnitName(NewPkgName)) then begin
|
||||
MessageDlg(lisProjAddInvalidPackagename,
|
||||
Format(lisA2PThePackageNameIsInvalidPleaseChooseAnExisting, ['"', NewPkgName, '"', #13]),
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
if not Quiet then
|
||||
IDEMessageDialog(lisProjAddInvalidPackagename,
|
||||
Format(lisA2PThePackageNameIsInvalidPleaseChooseAnExisting, ['"', NewPkgName, '"', #13]),
|
||||
mtError,[mbCancel]);
|
||||
exit(mrCancel);
|
||||
end;
|
||||
|
||||
// check if package is already required
|
||||
if LazPackage.FindDependencyByName(NewPkgName)<>nil then begin
|
||||
MessageDlg(lisProjAddDependencyAlreadyExists,
|
||||
Format(lisA2PThePackageHasAlreadyADependencyForThe, ['"', NewPkgName, '"']),
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
if (CompareText(NewPkgName,LazPackage.Name)=0)
|
||||
or (LazPackage.FindDependencyByName(NewPkgName)<>nil) then begin
|
||||
if WarnIfAlreadyThere then
|
||||
IDEMessageDialog(lisProjAddDependencyAlreadyExists,
|
||||
Format(lisA2PThePackageHasAlreadyADependencyForThe, ['"', NewPkgName, '"']),
|
||||
mtError,[mbCancel]);
|
||||
exit(mrIgnore);
|
||||
end;
|
||||
|
||||
// check if required package exists
|
||||
// check if required lpk exists
|
||||
if not PackageGraph.DependencyExists(NewDependency,fpfSearchAllExisting)
|
||||
then begin
|
||||
MessageDlg(lisProjAddPackageNotFound,
|
||||
Format(lisA2PNoPackageFoundForDependencyPleaseChooseAnExisting,
|
||||
['"', NewDependency.AsString, '"', #13]),
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
if not Quiet then
|
||||
IDEMessageDialog(lisProjAddPackageNotFound,
|
||||
Format(lisA2PNoPackageFoundForDependencyPleaseChooseAnExisting,
|
||||
['"', NewDependency.AsString, '"', #13]),
|
||||
mtError,[mbCancel]);
|
||||
exit(mrCancel);
|
||||
end;
|
||||
|
||||
Result:=true;
|
||||
|
||||
RequiredPackage:=PackageGraph.FindPackageWithName(NewPkgName,nil);
|
||||
if RequiredPackage<>nil then begin
|
||||
|
||||
// check if there is a dependency, that requires another version
|
||||
ConflictDependency:=PackageGraph.FindConflictRecursively(
|
||||
LazPackage.FirstRequiredDependency,RequiredPackage);
|
||||
if ConflictDependency<>nil then begin
|
||||
DebugLn(['CheckAddingDependency ',LazPackage.Name,' requiring ',RequiredPackage.IDAsString,' conflicts with ',ConflictDependency.AsString]);
|
||||
if not Quiet then
|
||||
IDEMessageDialog(lisVersionMismatch,
|
||||
'Unable to add the dependency '+RequiredPackage.IDAsString+', because the package '+LazPackage.Name+' has already a dependency '+ConflictDependency.AsString,
|
||||
mtError,[mbCancel]);
|
||||
exit(mrCancel);
|
||||
end;
|
||||
end;
|
||||
|
||||
ProvidingAPackage:=PackageGraph.FindPackageProvidingName(
|
||||
LazPackage.FirstRequiredDependency,NewPkgName);
|
||||
if ProvidingAPackage<>nil then
|
||||
begin
|
||||
// package is already provided by another package
|
||||
DebugLn(['CheckAddingDependency ',LazPackage.Name,' requiring ',NewPkgName,', but is already provided by ',ProvidingAPackage.IDAsString]);
|
||||
if WarnIfAlreadyThere then
|
||||
IDEMessageDialog(lisProjAddDependencyAlreadyExists,
|
||||
'Unable to add the dependency '+RequiredPackage.IDAsString+', because the package '+LazPackage.Name+' has already a dependency to '+ProvidingAPackage.Name,
|
||||
mtError,[mbCancel]);
|
||||
exit(mrIgnore);
|
||||
end;
|
||||
|
||||
Result:=mrOk;
|
||||
end;
|
||||
|
||||
function CheckAddingPkgDependency(LazPackage: TLazPackage;
|
||||
RequiredPkg: TLazPackage): boolean;
|
||||
RequiredPkg: TLazPackage; Quiet, WarnIfAlreadyThere: boolean): TModalResult;
|
||||
var
|
||||
NewDependency: TPkgDependency;
|
||||
begin
|
||||
NewDependency:=TPkgDependency.Create;
|
||||
try
|
||||
NewDependency.PackageName:=RequiredPkg.Name;
|
||||
Result:=CheckAddingDependency(LazPackage,NewDependency);
|
||||
Result:=CheckAddingDependency(LazPackage,NewDependency,Quiet,WarnIfAlreadyThere);
|
||||
finally
|
||||
NewDependency.Free;
|
||||
end;
|
||||
@ -514,9 +553,9 @@ begin
|
||||
LazPackage.ShortenFilename(AFilename,true);
|
||||
ComponentUnitFileEdit.Text := AFilename;
|
||||
end else begin
|
||||
MessageDlg(lisA2PInvalidFile,
|
||||
IDEMessageDialog(lisA2PInvalidFile,
|
||||
lisA2PAPascalUnitMustHaveTheExtensionPPOrPas,
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
end;
|
||||
end;
|
||||
InputHistories.StoreFileDialogSettings(SaveDialog);
|
||||
@ -609,10 +648,10 @@ begin
|
||||
if CompareText(CurParams.Unit_Name,
|
||||
ExtractFileNameOnly(CurParams.UnitFilename))<>0
|
||||
then begin
|
||||
if MessageDlg(lisA2PInvalidUnitName,
|
||||
if IDEMessageDialog(lisA2PInvalidUnitName,
|
||||
Format(lisA2PTheUnitNameAndFilenameDiffer, ['"',
|
||||
CurParams.Unit_Name, '"', #13, '"', CurParams.UnitFilename, '"']),
|
||||
mtError,[mbIgnore,mbCancel],0)<>mrIgnore
|
||||
mtError,[mbIgnore,mbCancel])<>mrIgnore
|
||||
then begin
|
||||
FilesListView.Items.Delete(i);
|
||||
exit;
|
||||
@ -770,57 +809,57 @@ begin
|
||||
|
||||
// check Ancestor Type
|
||||
if not IsValidIdent(Params.AncestorType) then begin
|
||||
MessageDlg(lisA2PInvalidAncestorType,
|
||||
IDEMessageDialog(lisA2PInvalidAncestorType,
|
||||
Format(lisA2PTheAncestorTypeIsNotAValidPascalIdentifier, ['"',
|
||||
Params.AncestorType, '"']),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check pagename
|
||||
if length(Params.PageName)>100 then begin
|
||||
MessageDlg(lisA2PPageNameTooLong,
|
||||
IDEMessageDialog(lisA2PPageNameTooLong,
|
||||
Format(lisA2PThePageNameIsTooLongMax100Chars, ['"', Params.PageName, '"']
|
||||
),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check unitname - filename redundancy
|
||||
if AnsiCompareText(Params.Unit_name,ExtractFileNameOnly(Params.UnitFilename))<>0
|
||||
then begin
|
||||
MessageDlg(lisA2PUnitNameInvalid,
|
||||
IDEMessageDialog(lisA2PUnitNameInvalid,
|
||||
Format(lisA2PTheUnitNameDoesNotCorrespondToTheFilename, ['"',
|
||||
Params.Unit_Name, '"']),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check classname
|
||||
if not IsValidIdent(Params.NewClassName) then begin
|
||||
MessageDlg(lisA2PInvalidClassName,
|
||||
IDEMessageDialog(lisA2PInvalidClassName,
|
||||
Format(lisA2PTheClassNameIsNotAValidPascalIdentifier, ['"',
|
||||
Params.NewClassName, '"']),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check classname<>ancestortype
|
||||
if AnsiCompareText(Params.NewClassName,Params.AncestorType)=0 then begin
|
||||
MessageDlg(lisA2PInvalidCircle,
|
||||
IDEMessageDialog(lisA2PInvalidCircle,
|
||||
Format(lisA2PTheClassNameAndAncestorTypeAreTheSame, ['"',
|
||||
Params.NewClassName, '"', '"', Params.AncestorType, '"']),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check ancestor type is not unitname
|
||||
PkgFile:=PackageGraph.FindUnit(LazPackage,Params.AncestorType,true,true);
|
||||
if PkgFile<>nil then begin
|
||||
if MessageDlg(lisA2PAmbiguousAncestorType,
|
||||
if IDEMessageDialog(lisA2PAmbiguousAncestorType,
|
||||
Format(lisA2PTheAncestorTypeHasTheSameNameAsTheUnit, ['"',
|
||||
Params.AncestorType, '"', #13, '"', PkgFile.Filename, '"']),
|
||||
mtError,[mbCancel,mbIgnore],0)<>mrIgnore
|
||||
mtError,[mbCancel,mbIgnore])<>mrIgnore
|
||||
then
|
||||
exit;
|
||||
end;
|
||||
@ -828,10 +867,10 @@ begin
|
||||
// check classname does not interfere with an existing unitname
|
||||
PkgFile:=PackageGraph.FindUnit(LazPackage,Params.NewClassName,true,true);
|
||||
if PkgFile<>nil then begin
|
||||
if MessageDlg(lisA2PAmbiguousClassName,
|
||||
if IDEMessageDialog(lisA2PAmbiguousClassName,
|
||||
Format(lisA2PTheClassNameHasTheSameNameAsTheUnit, ['"',
|
||||
Params.AncestorType, '"', #13, '"', PkgFile.Filename, '"']),
|
||||
mtError,[mbCancel,mbIgnore],0)<>mrIgnore
|
||||
mtError,[mbCancel,mbIgnore])<>mrIgnore
|
||||
then
|
||||
exit;
|
||||
end;
|
||||
@ -840,11 +879,11 @@ begin
|
||||
PkgComponent:=
|
||||
TPkgComponent(IDEComponentPalette.FindComponent(Params.NewClassname));
|
||||
if PkgComponent<>nil then begin
|
||||
if MessageDlg(lisA2PClassNameAlreadyExists,
|
||||
if IDEMessageDialog(lisA2PClassNameAlreadyExists,
|
||||
Format(lisA2PTheClassNameExistsAlreadyInPackageFile, ['"',
|
||||
Params.NewClassName, '"', #13, PkgComponent.PkgFile.LazPackage.IDAsString,
|
||||
#13, '"', PkgComponent.PkgFile.Filename, '"']),
|
||||
mtError,[mbCancel,mbIgnore],0)<>mrIgnore
|
||||
mtError,[mbCancel,mbIgnore])<>mrIgnore
|
||||
then
|
||||
exit;
|
||||
end;
|
||||
@ -898,10 +937,10 @@ begin
|
||||
if DependMinVersionEdit.Text<>'' then begin
|
||||
if not NewDependency.MinVersion.ReadString(DependMinVersionEdit.Text) then
|
||||
begin
|
||||
MessageDlg(lisProjAddInvalidVersion,
|
||||
IDEMessageDialog(lisProjAddInvalidVersion,
|
||||
Format(lisA2PTheMinimumVersionIsInvalidPleaseUseTheFormatMajor, ['"',
|
||||
DependMinVersionEdit.Text, '"', #13, #13]),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
NewDependency.Flags:=NewDependency.Flags+[pdfMinVersion];
|
||||
@ -910,17 +949,17 @@ begin
|
||||
if DependMaxVersionEdit.Text<>'' then begin
|
||||
if not NewDependency.MaxVersion.ReadString(DependMaxVersionEdit.Text) then
|
||||
begin
|
||||
MessageDlg(lisProjAddInvalidVersion,
|
||||
IDEMessageDialog(lisProjAddInvalidVersion,
|
||||
Format(lisA2PTheMaximumVersionIsInvalidPleaseUseTheFormatMajor, ['"',
|
||||
DependMaxVersionEdit.Text, '"', #13, #13]),
|
||||
mtError,[mbCancel],0);
|
||||
mtError,[mbCancel]);
|
||||
exit;
|
||||
end;
|
||||
NewDependency.Flags:=NewDependency.Flags+[pdfMaxVersion];
|
||||
end;
|
||||
|
||||
NewDependency.PackageName:=DependPkgNameComboBox.Text;
|
||||
if not CheckAddingDependency(LazPackage,NewDependency) then exit;
|
||||
if CheckAddingDependency(LazPackage,NewDependency,false,true)<>mrOk then exit;
|
||||
|
||||
// ok
|
||||
Params.Dependency:=NewDependency;
|
||||
@ -940,8 +979,8 @@ begin
|
||||
if (ANode=nil) or (ANode.Data=nil)
|
||||
or (not (TObject(ANode.Data) is TNewItemProjectFile))
|
||||
then begin
|
||||
MessageDlg(lisNewDlgNoItemSelected,
|
||||
lisNewDlgPleaseSelectAnItemFirst, mtInformation, [mbOk], 0);
|
||||
IDEMessageDialog(lisNewDlgNoItemSelected,
|
||||
lisNewDlgPleaseSelectAnItemFirst, mtInformation, [mbOk]);
|
||||
exit;
|
||||
end;
|
||||
|
||||
@ -1308,9 +1347,9 @@ begin
|
||||
end;
|
||||
except
|
||||
on E: Exception do begin
|
||||
MessageDlg(lisCCOErrorCaption,
|
||||
IDEMessageDialog(lisCCOErrorCaption,
|
||||
Format(lisErrorLoadingFile2, [AFilename, #13, E.Message]), mtError, [
|
||||
mbCancel], 0);
|
||||
mbCancel]);
|
||||
ComponentIconSpeedButton.Glyph.Clear;
|
||||
FComponentIconFilename:='';
|
||||
ComponentIconSpeedButton.Hint:=lisNoneClickToChooseOne;
|
||||
|
@ -530,9 +530,9 @@ begin
|
||||
end;
|
||||
end else begin
|
||||
Dependency:=GetCurrentDependency(Removed);
|
||||
if (Dependency<>nil) and (Removed) then begin
|
||||
if (Dependency<>nil) and Removed then begin
|
||||
// re-add dependency
|
||||
if not CheckAddingDependency(LazPackage,Dependency) then exit;
|
||||
if CheckAddingDependency(LazPackage,Dependency,false,true)<>mrOk then exit;
|
||||
LazPackage.RemoveRemovedDependency(Dependency);
|
||||
PackageGraph.AddDependencyToPackage(LazPackage,Dependency);
|
||||
end;
|
||||
|
@ -287,7 +287,6 @@ type
|
||||
OnlyTestIfPossible: boolean = false): TModalResult; override;
|
||||
function GetPackageOfEditorItem(Sender: TObject): TIDEPackage; override;
|
||||
|
||||
|
||||
// package compilation
|
||||
function DoCompileProjectDependencies(AProject: TProject;
|
||||
Flags: TPkgCompileFlags): TModalResult; override;
|
||||
@ -1901,7 +1900,7 @@ var
|
||||
begin
|
||||
Result:=mrCancel;
|
||||
|
||||
// check if there is dependency, that requires another version
|
||||
// check if there is a dependency, that requires another version
|
||||
ConflictDependency:=PackageGraph.FindConflictRecursively(
|
||||
AProject.FirstRequiredDependency,APackage);
|
||||
if ConflictDependency<>nil then begin
|
||||
@ -1918,13 +1917,14 @@ begin
|
||||
Result:=mrOk;
|
||||
exit;
|
||||
end;
|
||||
|
||||
ProvidingAPackage:=PackageGraph.FindPackageProvidingName(
|
||||
AProject.FirstRequiredDependency,APackage.Name);
|
||||
if ProvidingAPackage<>nil then
|
||||
begin
|
||||
// package is already provided by another package
|
||||
DebugLn(['TPkgManager.AddProjectDependency ',APackage.Name,' is already provided by ',ProvidingAPackage.IDAsString]);
|
||||
Result:=mrCancel;
|
||||
Result:=mrOk;
|
||||
exit;
|
||||
end;
|
||||
|
||||
@ -2775,18 +2775,23 @@ var
|
||||
begin
|
||||
Result:=LoadAndParseUnitBuf;
|
||||
if Result<>mrOk then exit;
|
||||
if not CodeToolBoss.FindUsedUnitNames(UnitBuf,MainUsesSection,
|
||||
ImplementationUsesSection)
|
||||
then begin
|
||||
MainIDE.DoJumpToCodeToolBossError;
|
||||
exit;
|
||||
MainUsesSection:=nil;
|
||||
ImplementationUsesSection:=nil;
|
||||
try
|
||||
if not CodeToolBoss.FindUsedUnitNames(UnitBuf,MainUsesSection,
|
||||
ImplementationUsesSection)
|
||||
then begin
|
||||
MainIDE.DoJumpToCodeToolBossError;
|
||||
exit;
|
||||
end;
|
||||
for i:=0 to MainUsesSection.Count-1 do begin
|
||||
j:=UnitNames.IndexOf(MainUsesSection[i]);
|
||||
if j>=0 then UnitNames.Delete(j);
|
||||
end;
|
||||
finally
|
||||
MainUsesSection.Free;
|
||||
ImplementationUsesSection.Free;
|
||||
end;
|
||||
for i:=0 to MainUsesSection.Count-1 do begin
|
||||
j:=UnitNames.IndexOf(MainUsesSection[i]);
|
||||
if j>=0 then UnitNames.Delete(j);
|
||||
end;
|
||||
MainUsesSection.Free;
|
||||
ImplementationUsesSection.Free;
|
||||
Result:=mrOk;
|
||||
end;
|
||||
|
||||
@ -2855,8 +2860,7 @@ var
|
||||
AddProjectDependency(TProject(UnitOwner),RequiredPackage);
|
||||
end else if UnitOwner is TLazPackage then begin
|
||||
DebugLn('TPkgManager.AddUnitDependenciesForComponentClasses Adding Package Dependency ',TLazPackage(UnitOwner).Name,' -> ',RequiredPackage.Name);
|
||||
PackageGraph.AddDependencyToPackage(TLazPackage(UnitOwner),
|
||||
RequiredPackage);
|
||||
AddPackageDependency(TLazPackage(UnitOwner),RequiredPackage.Name);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -3195,6 +3199,7 @@ var
|
||||
Item: TObject;
|
||||
NewDependency: TPkgDependency;
|
||||
ADependency: TPkgDependency;
|
||||
r: TModalResult;
|
||||
begin
|
||||
if not OnlyTestIfPossible then begin
|
||||
Result:=AddDependencyToOwners(OwnerList,APackage,true);
|
||||
@ -3212,9 +3217,9 @@ begin
|
||||
NewDependency:=TPkgDependency.Create;
|
||||
try
|
||||
NewDependency.PackageName:=APackage.Name;
|
||||
if not CheckAddingDependency(TLazPackage(Item),NewDependency) then
|
||||
exit;
|
||||
if not OnlyTestIfPossible then begin
|
||||
r:=CheckAddingDependency(TLazPackage(Item),NewDependency,false,false);
|
||||
if r=mrCancel then exit;
|
||||
if (not OnlyTestIfPossible) and (r<>mrIgnore) then begin
|
||||
ADependency:=NewDependency;
|
||||
NewDependency:=nil;
|
||||
PackageGraph.AddDependencyToPackage(TLazPackage(Item),ADependency);
|
||||
@ -3464,7 +3469,7 @@ begin
|
||||
NewDependency:=TPkgDependency.Create;
|
||||
try
|
||||
NewDependency.PackageName:=ReqPackage;
|
||||
if not CheckAddingDependency(APackage,NewDependency) then
|
||||
if CheckAddingDependency(APackage,NewDependency,false,false)<>mrOk then
|
||||
exit;
|
||||
if not OnlyTestIfPossible then begin
|
||||
ADependency:=NewDependency;
|
||||
|
Loading…
Reference in New Issue
Block a user