mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 09:56:12 +02:00
IDE: find missung unit: show each package only once
git-svn-id: trunk@22111 -
This commit is contained in:
parent
cf4fc4c978
commit
532a45aca2
@ -103,6 +103,7 @@ type
|
|||||||
function MainOwnerHasRequirement(PackageName: string): boolean;
|
function MainOwnerHasRequirement(PackageName: string): boolean;
|
||||||
procedure UpdateProgressBar;
|
procedure UpdateProgressBar;
|
||||||
function CheckPackageOnDisk(PkgFilename: string): boolean;
|
function CheckPackageOnDisk(PkgFilename: string): boolean;
|
||||||
|
function FindQuickFixAddRequirement(PkgName: string): TQuickFixMissingUnitAddRequirement;
|
||||||
public
|
public
|
||||||
procedure InitWithMsg(Msg: TIDEMessageLine; Line: string; aCode: TCodeBuffer;
|
procedure InitWithMsg(Msg: TIDEMessageLine; Line: string; aCode: TCodeBuffer;
|
||||||
aMissingUnitName: string);
|
aMissingUnitName: string);
|
||||||
@ -275,7 +276,7 @@ begin
|
|||||||
if APackage.FindUnit(MissingUnitName)<>nil then begin
|
if APackage.FindUnit(MissingUnitName)<>nil then begin
|
||||||
if MainOwnerHasRequirement(APackage.Name) then begin
|
if MainOwnerHasRequirement(APackage.Name) then begin
|
||||||
// already in requirements
|
// already in requirements
|
||||||
end else begin
|
end else if FindQuickFixAddRequirement(APackage.Name)=nil then begin
|
||||||
// not yet in requirements -> add a quick fix
|
// not yet in requirements -> add a quick fix
|
||||||
AddQuickFix(TQuickFixMissingUnitAddRequirement.Create(Self,APackage.Name));
|
AddQuickFix(TQuickFixMissingUnitAddRequirement.Create(Self,APackage.Name));
|
||||||
end;
|
end;
|
||||||
@ -359,10 +360,14 @@ procedure TFindUnitDialog.AddRequirement(
|
|||||||
var
|
var
|
||||||
AProject: TProject;
|
AProject: TProject;
|
||||||
APackage: TLazPackage;
|
APackage: TLazPackage;
|
||||||
|
NewDependency: TPkgDependency;
|
||||||
begin
|
begin
|
||||||
if MainOwner is TProject then begin
|
if MainOwner is TProject then begin
|
||||||
AProject:=TProject(MainOwner);
|
AProject:=TProject(MainOwner);
|
||||||
if PkgBoss.AddProjectDependencies(AProject,Item.PackageName)=mrOk then
|
//debugln(['TFindUnitDialog.AddRequirement project: ',Item.PackageName]);
|
||||||
|
NewDependency:=TPkgDependency.Create;
|
||||||
|
NewDependency.PackageName:=Item.PackageName;
|
||||||
|
if PkgBoss.AddProjectDependency(AProject,NewDependency)=mrOk then
|
||||||
ModalResult:=mrOK;
|
ModalResult:=mrOK;
|
||||||
end else if MainOwner is TLazPackage then begin
|
end else if MainOwner is TLazPackage then begin
|
||||||
APackage:=TLazPackage(MainOwner);
|
APackage:=TLazPackage(MainOwner);
|
||||||
@ -426,11 +431,11 @@ var
|
|||||||
PkgName: String;
|
PkgName: String;
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
|
PkgName:=ExtractFileNameOnly(PkgFilename);
|
||||||
|
if FindQuickFixAddRequirement(PkgName)<>nil then exit;
|
||||||
if not FileExistsCached(PkgFilename) then exit;
|
if not FileExistsCached(PkgFilename) then exit;
|
||||||
//DebugLn(['TFindUnitDialog.CheckPackageOnDisk ',PkgFilename]);
|
//DebugLn(['TFindUnitDialog.CheckPackageOnDisk ',PkgFilename]);
|
||||||
|
|
||||||
PkgName:=ExtractFileNameOnly(PkgFilename);
|
|
||||||
|
|
||||||
XMLConfig:=nil;
|
XMLConfig:=nil;
|
||||||
XMLCode:=nil;
|
XMLCode:=nil;
|
||||||
try
|
try
|
||||||
@ -463,6 +468,22 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TFindUnitDialog.FindQuickFixAddRequirement(PkgName: string
|
||||||
|
): TQuickFixMissingUnitAddRequirement;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
Result:=nil;
|
||||||
|
if fQuickFixes=nil then exit;
|
||||||
|
for i:=0 to fQuickFixes.Count-1 do begin
|
||||||
|
if TObject(fQuickFixes[i]) is TQuickFixMissingUnitAddRequirement then begin
|
||||||
|
Result:=TQuickFixMissingUnitAddRequirement(fQuickFixes[i]);
|
||||||
|
if SysUtils.CompareText(Result.PackageName,PkgName)=0 then exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result:=nil;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TFindUnitDialog.InitWithMsg(Msg: TIDEMessageLine; Line: string;
|
procedure TFindUnitDialog.InitWithMsg(Msg: TIDEMessageLine; Line: string;
|
||||||
aCode: TCodeBuffer; aMissingUnitName: string);
|
aCode: TCodeBuffer; aMissingUnitName: string);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user