ide: package editor: drop files: invalidate file cache, no warnings about duplicates

This commit is contained in:
mattias 2025-02-20 09:44:08 +01:00
parent 9c44d21c0e
commit 20d97cb590
4 changed files with 118 additions and 100 deletions

View File

@ -12628,6 +12628,7 @@ end;
procedure TMainIDE.HandleApplicationActivate(Sender: TObject); procedure TMainIDE.HandleApplicationActivate(Sender: TObject);
begin begin
//debugln(['TMainIDE.HandleApplicationActivate ']);
InvalidateFileStateCache; InvalidateFileStateCache;
DoCheckFilesOnDisk; DoCheckFilesOnDisk;
end; end;

View File

@ -3469,15 +3469,15 @@ begin
NewFlags:=[]; NewFlags:=[];
NewUnitName:=''; NewUnitName:='';
if (NewFileType=pftUnit) then begin if (NewFileType=pftUnit) then begin
InvalidateFileStateCache; // File may not be in cache in some d-n-d situations.
Code:=CodeToolBoss.LoadFile(aFilename,true,false); Code:=CodeToolBoss.LoadFile(aFilename,true,false);
NewUnitName:=CodeToolBoss.GetSourceName(Code,false); if Code<>nil then begin
Assert(NewUnitName<>'', 'TLazPackage.AddFileByName: NewUnitName is empty.'); NewUnitName:=CodeToolBoss.GetSourceName(Code,false);
//if NewUnitName='' then NewUnitName:=ExtractFileNameOnly(aFilename); if NewUnitName='' then NewUnitName:=ExtractFileNameOnly(aFilename);
if FindUsedUnit(NewUnitName)=nil then if FindUsedUnit(NewUnitName)=nil then
Include(NewFlags,pffAddToPkgUsesSection); Include(NewFlags,pffAddToPkgUsesSection);
if CodeToolBoss.HasInterfaceRegisterProc(Code) then if CodeToolBoss.HasInterfaceRegisterProc(Code) then
Include(NewFlags,pffHasRegisterProc); Include(NewFlags,pffHasRegisterProc);
end;
end; end;
AddFile(aFilename,NewUnitName,NewFileType,NewFlags,cpNormal); AddFile(aFilename,NewUnitName,NewFileType,NewFlags,cpNormal);
CurDir:=ChompPathDelim(ExtractFilePath(aFilename)); CurDir:=ChompPathDelim(ExtractFilePath(aFilename));

View File

@ -291,10 +291,10 @@ type
procedure SetupComponents; procedure SetupComponents;
procedure CreatePackageFileEditors; procedure CreatePackageFileEditors;
function TreeViewGetImageIndex({%H-}Str: String; Data: TObject; var {%H-}AIsEnabled: Boolean): Integer; function TreeViewGetImageIndex({%H-}Str: String; Data: TObject; var {%H-}AIsEnabled: Boolean): Integer;
procedure UpdatePending;
procedure StoreItemsTVSelectedNode(out OldView: TPETVSelectedView; StoreFilter: boolean); procedure StoreItemsTVSelectedNode(out OldView: TPETVSelectedView; StoreFilter: boolean);
procedure RestoreItemsTVSelectedNode(const OldView: TPETVSelectedView); procedure RestoreItemsTVSelectedNode(const OldView: TPETVSelectedView);
function CanUpdate(Flag: TPEFlag; Immediately: boolean): boolean; function CanUpdate(Flag: TPEFlag; Immediately: boolean): boolean;
procedure UpdatePending;
procedure UpdateTitle(Immediately: boolean = false); procedure UpdateTitle(Immediately: boolean = false);
procedure UpdateFiles(Immediately: boolean = false); procedure UpdateFiles(Immediately: boolean = false);
procedure UpdateRemovedFiles(Immediately: boolean = false); procedure UpdateRemovedFiles(Immediately: boolean = false);
@ -323,6 +323,7 @@ type
ARect: TRect; {%H-}State: TOwnerDrawState); ARect: TRect; {%H-}State: TOwnerDrawState);
procedure DisableI18NForLFMCheckBoxChange(Sender: TObject); procedure DisableI18NForLFMCheckBoxChange(Sender: TObject);
procedure SelectFileNode(const AFileName: string); procedure SelectFileNode(const AFileName: string);
procedure AddUserFiles(Filenames: TStrings);
protected protected
fFlags: TPEFlags; fFlags: TPEFlags;
procedure SetLazPackage(const AValue: TLazPackage); override; procedure SetLazPackage(const AValue: TLazPackage); override;
@ -619,6 +620,7 @@ var
NodeData: TPENodeData; NodeData: TPENodeData;
Item: TObject; Item: TObject;
YesToAll: TYesToAllList; YesToAll: TYesToAllList;
r: TModalResult;
begin begin
BeginUpdate; BeginUpdate;
YesToAll:=TYesToAllList.Create; YesToAll:=TYesToAllList.Create;
@ -631,9 +633,10 @@ begin
begin // re-add file begin // re-add file
PkgFile:=TPkgFile(Item); PkgFile:=TPkgFile(Item);
AFilename:=PkgFile.GetFullFilename; AFilename:=PkgFile.GetFullFilename;
if TPkgFileCheck.ReAddingUnit(LazPackage, PkgFile.FileType, AFilename, r:=TPkgFileCheck.ReAddingFile(LazPackage, PkgFile.FileType, AFilename,
PackageEditors.OnGetIDEFileInfo,YesToAll)<>mrOk then PackageEditors.OnGetIDEFileInfo,YesToAll);
exit; if r=mrIgnore then continue;
if r<>mrOk then exit;
//PkgFile.Filename:=AFilename; //PkgFile.Filename:=AFilename;
Assert(PkgFile.Filename=AFilename, 'TPackageEditorForm.ReAddMenuItemClick: Unexpected Filename.'); Assert(PkgFile.Filename=AFilename, 'TPackageEditorForm.ReAddMenuItemClick: Unexpected Filename.');
LazPackage.UnremovePkgFile(PkgFile); LazPackage.UnremovePkgFile(PkgFile);
@ -642,7 +645,9 @@ begin
Dependency:=TPkgDependency(Item); Dependency:=TPkgDependency(Item);
// Re-add dependency // Re-add dependency
fForcedFlags:=[pefNeedUpdateRemovedFiles,pefNeedUpdateRequiredPkgs]; fForcedFlags:=[pefNeedUpdateRemovedFiles,pefNeedUpdateRequiredPkgs];
if TPkgFileCheck.AddingDependency(LazPackage,Dependency,true)<>mrOk then exit; r:=TPkgFileCheck.AddingDependency(LazPackage,Dependency,true);
if r=mrIgnore then continue;
if r<>mrOk then exit;
LazPackage.RemoveRemovedDependency(Dependency); LazPackage.RemoveRemovedDependency(Dependency);
PackageGraph.AddDependencyToPackage(LazPackage,Dependency); PackageGraph.AddDependencyToPackage(LazPackage,Dependency);
end; end;
@ -1501,36 +1506,24 @@ procedure TPackageEditorForm.FormDropFiles(Sender: TObject;
const FileNames: array of String); const FileNames: array of String);
var var
i: Integer; i: Integer;
NewFilename, NewUnitPaths, NewIncPaths: String; Files: TStringList;
YesToAll: TYesToAllList;
r: TModalResult;
begin begin
{$IFDEF VerbosePkgEditDrag} {$IFDEF VerbosePkgEditDrag}
debugln(['TPackageEditorForm.FormDropFiles ',length(FileNames)]); debugln(['TPackageEditorForm.FormDropFiles ',length(FileNames)]);
{$ENDIF} {$ENDIF}
if length(FileNames)=0 then exit; if length(FileNames)=0 then exit;
YesToAll:=TYesToAllList.Create;
BeginUpdate; //debugln(['TPackageEditorForm.FormDropFiles ']);
// the Drop does not always trigger an application activate event -> invalidate here
InvalidateFileStateCache;
Files:=TStringList.Create;
try try
NewUnitPaths:='';
NewIncPaths:='';
for i:=0 to high(Filenames) do for i:=0 to high(Filenames) do
begin Files.Add(FileNames[i]);
NewFilename:=FileNames[i]; AddUserFiles(Files);
r:=TPkgFileCheck.AddingUnit(LazPackage, NewFilename,
PackageEditors.OnGetIDEFileInfo,YesToAll);
if r=mrOK then
LazPackage.AddFileByName(NewFilename, NewUnitPaths, NewIncPaths)
else if r=mrAbort then
break;
end;
//UpdateAll(false);
// extend unit and include search path
if not LazPackage.ExtendUnitSearchPath(NewUnitPaths) then exit;
if not LazPackage.ExtendIncSearchPath(NewIncPaths) then exit;
finally finally
YesToAll.Free; Files.Free;
EndUpdate;
end; end;
end; end;
@ -1596,6 +1589,45 @@ begin
end; end;
end; end;
procedure TPackageEditorForm.AddUserFiles(Filenames: TStrings);
var
YesToAll: TYesToAllList;
NewUnitPaths, NewIncPaths, NewFilename: String;
r: TModalResult;
i, j: Integer;
begin
if Filenames.Count=0 then exit;
YesToAll:=TYesToAllList.Create;
BeginUpdate;
try
NewUnitPaths:='';
NewIncPaths:='';
for i:=0 to Filenames.Count-1 do
begin
NewFilename:=ExpandFileNameUTF8(Filenames[i]);
j:=i-1;
while (j>=0) and (CompareFilenames(NewFilename,Filenames[j])<>0) do
dec(j);
if j>=0 then begin
debugln(['Warning: (lazarus) TPackageEditorForm.AddUserFiles ignoring duplicate "',NewFilename,'"']);
continue;
end;
r:=TPkgFileCheck.AddingFile(LazPackage, NewFilename,
PackageEditors.OnGetIDEFileInfo,YesToAll);
if r=mrOK then
LazPackage.AddFileByName(NewFilename, NewUnitPaths, NewIncPaths)
else if r=mrAbort then
break;
end;
// extend unit and include search path
if not LazPackage.ExtendUnitSearchPath(NewUnitPaths) then exit;
if not LazPackage.ExtendIncSearchPath(NewIncPaths) then exit;
finally
YesToAll.Free;
EndUpdate;
end;
end;
procedure TPackageEditorForm.SaveAsClick(Sender: TObject); procedure TPackageEditorForm.SaveAsClick(Sender: TObject);
begin begin
DoSave(true); DoSave(true);
@ -1650,13 +1682,9 @@ procedure TPackageEditorForm.mnuAddDiskFileClick(Sender: TObject);
var var
OpenDialog: TOpenDialog; OpenDialog: TOpenDialog;
i: Integer; i: Integer;
NewFilename, NewUnitPaths, NewIncPaths: String;
r: TModalResult;
YesToAll: TYesToAllList;
begin begin
// is readonly // is readonly
if TPkgFileCheck.ReadOnlyOk(LazPackage)<>mrOK then exit; if TPkgFileCheck.ReadOnlyOk(LazPackage)<>mrOK then exit;
YesToAll:=nil;
OpenDialog:=TOpenDialog.Create(nil); OpenDialog:=TOpenDialog.Create(nil);
try try
InputHistories.ApplyFileDialogSettings(OpenDialog); InputHistories.ApplyFileDialogSettings(OpenDialog);
@ -1674,26 +1702,9 @@ begin
if OpenDialog.Execute then if OpenDialog.Execute then
begin begin
InputHistories.StoreFileDialogSettings(OpenDialog); InputHistories.StoreFileDialogSettings(OpenDialog);
NewUnitPaths:=''; AddUserFiles(OpenDialog.Files);
NewIncPaths:='';
YesToAll:=TYesToAllList.Create;
for i:=0 to OpenDialog.Files.Count-1 do
begin
NewFilename:=OpenDialog.Files[i];
r:=TPkgFileCheck.AddingUnit(LazPackage, NewFilename,
PackageEditors.OnGetIDEFileInfo,YesToAll);
if r=mrOK then
LazPackage.AddFileByName(NewFilename, NewUnitPaths, NewIncPaths)
else if r=mrAbort then
break;
end;
//UpdateAll(false);
// extend unit and include search path
if not LazPackage.ExtendUnitSearchPath(NewUnitPaths) then exit;
if not LazPackage.ExtendIncSearchPath(NewIncPaths) then exit;
end; end;
finally finally
YesToAll.Free;
OpenDialog.Free; OpenDialog.Free;
end; end;
end; end;

View File

@ -11,7 +11,7 @@ uses
// LazUtils // LazUtils
FileUtil, LazLoggerBase, LazFileUtils, FileUtil, LazLoggerBase, LazFileUtils,
// Codetools // Codetools
CodeToolManager, CodeCache, CodeToolManager, CodeCache, BasicCodeTools,
// BuildIntf // BuildIntf
PackageIntf, PackageDependencyIntf, ComponentReg, PackageIntf, PackageDependencyIntf, ComponentReg,
// IDEIntf // IDEIntf
@ -27,6 +27,8 @@ type
TYesToAllList = class(TStringList) TYesToAllList = class(TStringList)
public public
WarnFileNotFound: boolean;
WarnAlreadyAdded: boolean;
function Inc(Name: string): integer; function Inc(Name: string): integer;
end; end;
@ -34,7 +36,7 @@ type
TProjPackFileCheck = class TProjPackFileCheck = class
protected protected
class function UnitNameOk(const AFilename, AUnitFilename: string): TModalResult; class function UnitNameOk(const AFilename, AnUnitName: string): TModalResult;
public public
end; end;
@ -47,12 +49,12 @@ type
class function PartOfProjectOk(const AFilename: string; class function PartOfProjectOk(const AFilename: string;
OnGetIDEFileInfo: TGetIDEFileStateEvent; YesToAll: TYesToAllList): TModalResult; OnGetIDEFileInfo: TGetIDEFileStateEvent; YesToAll: TYesToAllList): TModalResult;
class function UniqueUnitOk(LazPackage: TLazPackage; class function UniqueUnitOk(LazPackage: TLazPackage;
const AUnitFilename: string; YesToAll: TYesToAllList): TModalResult; const AnUnitName: string; YesToAll: TYesToAllList): TModalResult;
public public
class function ReadOnlyOk(LazPackage: TLazPackage): TModalResult; class function ReadOnlyOk(LazPackage: TLazPackage): TModalResult;
class function AddingUnit(LazPackage: TLazPackage; const AFilename: string; class function AddingFile(LazPackage: TLazPackage; const AFilename: string;
OnGetIDEFileInfo: TGetIDEFileStateEvent; YesToAll: TYesToAllList): TModalResult; // ok=success, cancel=fail, abort=fail and stop multi add OnGetIDEFileInfo: TGetIDEFileStateEvent; YesToAll: TYesToAllList): TModalResult; // ok=success, cancel=fail, abort=fail and stop multi add
class function ReAddingUnit(LazPackage: TLazPackage; class function ReAddingFile(LazPackage: TLazPackage;
FileTyp: TPkgFileType; const AFilename: string; FileTyp: TPkgFileType; const AFilename: string;
OnGetIDEFileInfo: TGetIDEFileStateEvent; YesToAll: TYesToAllList): TModalResult; OnGetIDEFileInfo: TGetIDEFileStateEvent; YesToAll: TYesToAllList): TModalResult;
class function AddingDependency(LazPackage: TLazPackage; class function AddingDependency(LazPackage: TLazPackage;
@ -98,33 +100,35 @@ end;
{ TProjPackFileCheck } { TProjPackFileCheck }
class function TProjPackFileCheck.UnitNameOk(const AFilename, AUnitFilename: string): TModalResult; class function TProjPackFileCheck.UnitNameOk(const AFilename, AnUnitName: string): TModalResult;
// This is called only for Pascal units. // This is called only for Pascal units.
var var
Unit_Name: string; SrcUnitName: string;
CodeBuffer: TCodeBuffer; CodeBuffer: TCodeBuffer;
begin begin
Result:=mrCancel; Result:=mrCancel;
// valid unitname // check valid unitname
Unit_Name:=''; if not IsValidUnitName(AnUnitName) then
CodeBuffer:=CodeToolBoss.LoadFile(AFilename,true,false);
if CodeBuffer<>nil then begin
Unit_Name:=CodeToolBoss.GetSourceName(CodeBuffer,false);
// Unit_Name can be empty if Codetools had problems parsing the source.
if (Unit_Name<>'')
and (CompareText(StringReplace(Unit_Name,'&','',[rfReplaceAll]), AUnitFilename)<>0)
and (IDEMessageDialog(lisA2PInvalidUnitName,
Format(lisA2PTheUnitNameAndFilenameDiffer,
[Unit_Name,LineEnding,AUnitFilename]),
mtError,[mbIgnore,mbCancel]) <> mrIgnore) then exit;
end;
if not IsValidUnitName(AUnitFilename) then
begin begin
IDEMessageDialog(lisA2PFileNotUnit, Format(lisA2PisNotAValidUnitName,[AUnitFilename]), IDEMessageDialog(lisA2PFileNotUnit, Format(lisA2PisNotAValidUnitName,[AnUnitName]),
mtWarning,[mbCancel]); mtWarning,[mbCancel]);
exit; exit;
end; end;
// check file and source match
SrcUnitName:='';
CodeBuffer:=CodeToolBoss.LoadFile(AFilename,true,false);
if CodeBuffer<>nil then begin
SrcUnitName:=CodeToolBoss.GetSourceName(CodeBuffer,false);
// SrcUnitName can be empty if Codetools had problems parsing the source.
if (SrcUnitName<>'')
and (CompareText(RemoveAmpersands(SrcUnitName), AnUnitName)<>0)
and (IDEMessageDialog(lisA2PInvalidUnitName,
Format(lisA2PTheUnitNameAndFilenameDiffer,
[SrcUnitName,LineEnding,AnUnitName]),
mtError,[mbIgnore,mbCancel]) <> mrIgnore) then exit;
end;
// Pascal extension // Pascal extension
Assert(FilenameHasPascalExt(AFilename), 'TPkgFileCheck.UnitNameOk: Wrong extension.'); Assert(FilenameHasPascalExt(AFilename), 'TPkgFileCheck.UnitNameOk: Wrong extension.');
Result:=mrOK; Result:=mrOK;
@ -159,6 +163,7 @@ begin
// check if file exists // check if file exists
if not FileExistsUTF8(AFilename) then if not FileExistsUTF8(AFilename) then
begin begin
if not YesToAll.WarnFileNotFound then exit(mrIgnore);
if YesToAll.Inc('FileNotFound')<4 then if YesToAll.Inc('FileNotFound')<4 then
IDEMessageDialog(lisFileNotFound, Format(lisPkgMangFileNotFound,[AFilename]), IDEMessageDialog(lisFileNotFound, Format(lisPkgMangFileNotFound,[AFilename]),
mtError, [mbCancel]); mtError, [mbCancel]);
@ -168,6 +173,7 @@ begin
PkgFile:=LazPackage.FindPkgFile(AFilename,true,false); PkgFile:=LazPackage.FindPkgFile(AFilename,true,false);
if PkgFile<>nil then if PkgFile<>nil then
begin begin
if not YesToAll.WarnAlreadyAdded then exit(mrIgnore);
if YesToAll.Inc('FileAlreadyInPackage')>2 then exit; if YesToAll.Inc('FileAlreadyInPackage')>2 then exit;
Msg:=Format(lisA2PFileAlreadyExistsInThePackage, [AFilename]); Msg:=Format(lisA2PFileAlreadyExistsInThePackage, [AFilename]);
if PkgFile.Filename<>AFilename then if PkgFile.Filename<>AFilename then
@ -199,7 +205,7 @@ begin
end; end;
class function TPkgFileCheck.UniqueUnitOk(LazPackage: TLazPackage; class function TPkgFileCheck.UniqueUnitOk(LazPackage: TLazPackage;
const AUnitFilename: string; YesToAll: TYesToAllList): TModalResult; const AnUnitName: string; YesToAll: TYesToAllList): TModalResult;
// This is called only for Pascal units. // This is called only for Pascal units.
var var
PkgFile: TPkgFile; PkgFile: TPkgFile;
@ -207,7 +213,7 @@ var
begin begin
Result:=mrCancel; Result:=mrCancel;
// check if unitname already exists in package // check if unitname already exists in package
PkgFile:=LazPackage.FindUnit(AUnitFilename,true); PkgFile:=LazPackage.FindUnit(AnUnitName,true);
if PkgFile<>nil then if PkgFile<>nil then
begin begin
// a unit with this name already exists in this package => warn // a unit with this name already exists in this package => warn
@ -215,12 +221,12 @@ begin
if i=1 then if i=1 then
begin begin
if IDEMessageDialog(lisA2PUnitnameAlreadyExists, if IDEMessageDialog(lisA2PUnitnameAlreadyExists,
Format(lisA2PTheUnitnameAlreadyExistsInThisPackage,[AUnitFilename]), Format(lisA2PTheUnitnameAlreadyExistsInThisPackage,[AnUnitName]),
mtError,[mbCancel,mbIgnore]) <> mrIgnore then mtError,[mbCancel,mbIgnore]) <> mrIgnore then
exit; exit;
end else if i<100000 then begin end else if i<100000 then begin
if IDEMessageDialog(lisA2PUnitnameAlreadyExists, if IDEMessageDialog(lisA2PUnitnameAlreadyExists,
Format(lisA2PTheUnitnameAlreadyExistsInThisPackage,[AUnitFilename]), Format(lisA2PTheUnitnameAlreadyExistsInThisPackage,[AnUnitName]),
mtError,[mbCancel,mbYesToAll]) = mrYesToAll then mtError,[mbCancel,mbYesToAll]) = mrYesToAll then
YesToAll.Values['UnitnameExistsInPkg']:='100000' YesToAll.Values['UnitnameExistsInPkg']:='100000'
else else
@ -228,7 +234,7 @@ begin
end; end;
end end
else begin else begin
PkgFile:=PackageGraph.FindUnit(LazPackage,AUnitFilename,true,true); PkgFile:=PackageGraph.FindUnit(LazPackage,AnUnitName,true,true);
if (PkgFile<>nil) and (PkgFile.LazPackage<>LazPackage) then if (PkgFile<>nil) and (PkgFile.LazPackage<>LazPackage) then
begin begin
// there is already a unit with this name in another package => warn // there is already a unit with this name in another package => warn
@ -237,13 +243,13 @@ begin
begin begin
if IDEMessageDialog(lisA2PUnitnameAlreadyExists, if IDEMessageDialog(lisA2PUnitnameAlreadyExists,
Format(lisA2PTheUnitnameAlreadyExistsInThePackage, Format(lisA2PTheUnitnameAlreadyExistsInThePackage,
[AUnitFilename, LineEnding, PkgFile.LazPackage.IDAsString]), [AnUnitName, LineEnding, PkgFile.LazPackage.IDAsString]),
mtWarning,[mbCancel,mbIgnore]) <> mrIgnore then mtWarning,[mbCancel,mbIgnore]) <> mrIgnore then
exit; exit;
end else if i<100000 then begin end else if i<100000 then begin
if IDEMessageDialog(lisA2PUnitnameAlreadyExists, if IDEMessageDialog(lisA2PUnitnameAlreadyExists,
Format(lisA2PTheUnitnameAlreadyExistsInThePackage, Format(lisA2PTheUnitnameAlreadyExistsInThePackage,
[AUnitFilename, LineEnding, PkgFile.LazPackage.IDAsString]), [AnUnitName, LineEnding, PkgFile.LazPackage.IDAsString]),
mtWarning,[mbCancel,mbYesToAll]) = mrYesToAll then mtWarning,[mbCancel,mbYesToAll]) = mrYesToAll then
YesToAll.Values['UnitnameExistsInOtherPkg']:='100000' YesToAll.Values['UnitnameExistsInOtherPkg']:='100000'
else else
@ -252,18 +258,18 @@ begin
end; end;
end; end;
// check if unitname is a componentclass // check if unitname is a componentclass
if IDEComponentPalette.FindRegComponent(AUnitFilename)<>nil then if IDEComponentPalette.FindRegComponent(AnUnitName)<>nil then
begin begin
i:=YesToAll.Inc('UnitnameIsCompName'); i:=YesToAll.Inc('UnitnameIsCompName');
if i=1 then if i=1 then
begin begin
if IDEMessageDialog(lisA2PAmbiguousUnitName, if IDEMessageDialog(lisA2PAmbiguousUnitName,
Format(lisA2PTheUnitNameIsTheSameAsAnRegisteredComponent,[AUnitFilename,LineEnding]), Format(lisA2PTheUnitNameIsTheSameAsAnRegisteredComponent,[AnUnitName,LineEnding]),
mtWarning,[mbCancel,mbIgnore]) <> mrIgnore then mtWarning,[mbCancel,mbIgnore]) <> mrIgnore then
exit; exit;
end else if i<100000 then begin end else if i<100000 then begin
if IDEMessageDialog(lisA2PAmbiguousUnitName, if IDEMessageDialog(lisA2PAmbiguousUnitName,
Format(lisA2PTheUnitNameIsTheSameAsAnRegisteredComponent,[AUnitFilename,LineEnding]), Format(lisA2PTheUnitNameIsTheSameAsAnRegisteredComponent,[AnUnitName,LineEnding]),
mtWarning,[mbCancel,mbYesToAll]) = mrYesToAll then mtWarning,[mbCancel,mbYesToAll]) = mrYesToAll then
YesToAll.Values['UnitnameIsCompName']:='100000' YesToAll.Values['UnitnameIsCompName']:='100000'
else else
@ -286,12 +292,12 @@ begin
Result:=mrOK; Result:=mrOK;
end; end;
class function TPkgFileCheck.AddingUnit(LazPackage: TLazPackage; class function TPkgFileCheck.AddingFile(LazPackage: TLazPackage;
const AFilename: string; OnGetIDEFileInfo: TGetIDEFileStateEvent; const AFilename: string; OnGetIDEFileInfo: TGetIDEFileStateEvent;
YesToAll: TYesToAllList): TModalResult; YesToAll: TYesToAllList): TModalResult;
var var
NewFileType: TPkgFileType; NewFileType: TPkgFileType;
UnitFilename: String; AnUnitName: String;
begin begin
Assert(FilenameIsAbsolute(AFilename), 'TPkgFileCheck.AddingUnit: Not absolute Filename.'); Assert(FilenameIsAbsolute(AFilename), 'TPkgFileCheck.AddingUnit: Not absolute Filename.');
// file exists // file exists
@ -304,22 +310,22 @@ begin
NewFileType:=FileNameToPkgFileType(AFilename); NewFileType:=FileNameToPkgFileType(AFilename);
if NewFileType<>pftUnit then if NewFileType<>pftUnit then
exit(mrOK); // Further checks only for Pascal units. exit(mrOK); // Further checks only for Pascal units.
UnitFilename:=ExtractFileNameOnly(AFilename); AnUnitName:=ExtractFileNameOnly(AFilename);
// unitname // unitname
Result:=UnitNameOk(AFilename, UnitFilename); Result:=UnitNameOk(AFilename, AnUnitName);
if Result<>mrOK then exit; if Result<>mrOK then exit;
// unit is unique // unit is unique
Result:=UniqueUnitOk(LazPackage, UnitFilename, YesToAll); Result:=UniqueUnitOk(LazPackage, AnUnitName, YesToAll);
if Result<>mrOK then exit; if Result<>mrOK then exit;
Result:=mrOK; // ok Result:=mrOK; // ok
end; end;
class function TPkgFileCheck.ReAddingUnit(LazPackage: TLazPackage; class function TPkgFileCheck.ReAddingFile(LazPackage: TLazPackage;
FileTyp: TPkgFileType; const AFilename: string; FileTyp: TPkgFileType; const AFilename: string;
OnGetIDEFileInfo: TGetIDEFileStateEvent; YesToAll: TYesToAllList OnGetIDEFileInfo: TGetIDEFileStateEvent; YesToAll: TYesToAllList
): TModalResult; ): TModalResult;
var var
UnitFilename: String; AnUnitName: String;
begin begin
Assert(FilenameIsAbsolute(AFilename), 'TPkgFileCheck.ReAddingUnit: Not absolute Filename.'); Assert(FilenameIsAbsolute(AFilename), 'TPkgFileCheck.ReAddingUnit: Not absolute Filename.');
// file exists // file exists
@ -330,12 +336,12 @@ begin
if Result<>mrOK then exit; if Result<>mrOK then exit;
if not (FileTyp in [pftUnit, pftMainUnit, pftVirtualUnit]) then if not (FileTyp in [pftUnit, pftMainUnit, pftVirtualUnit]) then
exit(mrOK); // Further checks only for Pascal units. exit(mrOK); // Further checks only for Pascal units.
UnitFilename:=ExtractFileNameOnly(AFilename); AnUnitName:=ExtractFileNameOnly(AFilename);
// unitname // unitname
Result:=UnitNameOk(AFilename, UnitFilename); Result:=UnitNameOk(AFilename, AnUnitName);
if Result<>mrOK then exit; if Result<>mrOK then exit;
// unit is unique // unit is unique
Result:=UniqueUnitOk(LazPackage, UnitFilename, YesToAll); Result:=UniqueUnitOk(LazPackage, AnUnitName, YesToAll);
if Result<>mrOK then exit; if Result<>mrOK then exit;
Result:=mrOK; // ok Result:=mrOK; // ok
end; end;