mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2026-01-04 18:30:32 +01:00
IDE: checked all places where TPkgFile.Filename should use GetFullFilename, save package files on save package
git-svn-id: trunk@35382 -
This commit is contained in:
parent
cef54d4751
commit
de85f6cc4c
@ -1711,7 +1711,7 @@ begin
|
||||
BaseDir:=APackage.DirectoryExpanded;
|
||||
if BaseDir='' then exit;
|
||||
|
||||
SrcFilename:=PkgFile.Filename;
|
||||
SrcFilename:=PkgFile.GetFullFilename;
|
||||
if ResolveIncludeFiles then begin
|
||||
CodeBuf:=CodeToolBoss.FindFile(SrcFilename);
|
||||
if CodeBuf<>nil then begin
|
||||
|
||||
@ -414,17 +414,15 @@ var
|
||||
begin
|
||||
for i:=0 to APackage.FileCount-1 do begin
|
||||
PkgFile:=APackage.Files[i];
|
||||
if FilenameIsPascalUnit(PkgFile.Filename) then begin
|
||||
Filename:=PkgFile.Filename;
|
||||
if FilenameIsPascalUnit(Filename) then begin
|
||||
Filename:=ExtractFileNameOnly(Filename);
|
||||
if (CompareFilenames(Prefix,copy(Filename,1,length(Prefix)))=0) then
|
||||
begin
|
||||
Identifier:=ExtractFileNameOnly(Filename);
|
||||
if APackage<>StartModuleOwner then
|
||||
Identifier:='#'+APackage.Name+'.'+Identifier;
|
||||
fItems.Add(Identifier, lisPackageUnit);
|
||||
end;
|
||||
Filename:=PkgFile.GetFullFilename;
|
||||
if FilenameIsPascalUnit(Filename) then begin
|
||||
Filename:=ExtractFileNameOnly(Filename);
|
||||
if (CompareFilenames(Prefix,copy(Filename,1,length(Prefix)))=0) then
|
||||
begin
|
||||
Identifier:=ExtractFileNameOnly(Filename);
|
||||
if APackage<>StartModuleOwner then
|
||||
Identifier:='#'+APackage.Name+'.'+Identifier;
|
||||
fItems.Add(Identifier, lisPackageUnit);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -768,11 +768,7 @@ begin
|
||||
end;
|
||||
if (PkgFile<>nil) and (PkgFile.FileType in PkgFileRealUnitTypes) then begin
|
||||
// normal unit in lpk
|
||||
if not FilenameIsAbsolute(PkgFile.Filename) then begin
|
||||
InvalidPathError('Unit "'+PkgFile.Filename+'" has no help.');
|
||||
exit;
|
||||
end;
|
||||
Filename:=PkgFile.Filename;
|
||||
Filename:=PkgFile.GetFullFilename;
|
||||
end else if SysUtils.CompareText(PkgName,'fcl')=0 then begin
|
||||
// search in FPC sources
|
||||
Filename:=CodeToolBoss.DirectoryCachePool.FindUnitInUnitSet('',AnUnitName);
|
||||
|
||||
@ -3868,6 +3868,8 @@ resourcestring
|
||||
+'installed, but the lpk file was not found. All its components are '
|
||||
+'deactivated. Please fix this.';
|
||||
lisPkgSysPackageFileNotFound = 'Package file not found';
|
||||
lisPkgMangTheFileOfPackageWasNotFound = 'The file "%s" of package %s was not'
|
||||
+' found.';
|
||||
lisPkgSysThePackageIsInstalledButNoValidPackageFileWasFound = 'The package %'
|
||||
+'s%s%s is installed, but no valid package file (.lpk) was found.%sA broken '
|
||||
+'dummy package was created.';
|
||||
|
||||
28
ide/main.pp
28
ide/main.pp
@ -9034,13 +9034,6 @@ begin
|
||||
WasVirtual:=AnUnitInfo.IsVirtual;
|
||||
WasPascalSource:=FilenameIsPascalSource(AnUnitInfo.Filename);
|
||||
|
||||
// check if file is writable on disk
|
||||
if (not AnUnitInfo.IsVirtual)
|
||||
and FileExistsUTF8(AnUnitInfo.Filename) then
|
||||
AnUnitInfo.FileReadOnly:=not FileIsWritable(AnUnitInfo.Filename)
|
||||
else
|
||||
AnUnitInfo.FileReadOnly:=false;
|
||||
|
||||
// if this file is part of the project and the project is virtual then save
|
||||
// project first
|
||||
if (not (sfProjectSaving in Flags)) and Project1.IsVirtual
|
||||
@ -9075,13 +9068,6 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
// if file is readonly then a simple Save is skipped
|
||||
if (AnUnitInfo.ReadOnly) and ([sfSaveToTestDir,sfSaveAs]*Flags=[]) then
|
||||
begin
|
||||
Result:=mrOk;
|
||||
exit;
|
||||
end;
|
||||
|
||||
// if nothing modified then a simple Save can be skipped
|
||||
//writeln('TMainIDE.DoSaveEditorFile A ',AnUnitInfo.Filename,' ',AnUnitInfo.NeedsSaveToDisk);
|
||||
if ([sfSaveToTestDir,sfSaveAs]*Flags=[])
|
||||
@ -9096,6 +9082,20 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check if file is writable on disk
|
||||
if (not AnUnitInfo.IsVirtual)
|
||||
and FileExistsUTF8(AnUnitInfo.Filename) then
|
||||
AnUnitInfo.FileReadOnly:=not FileIsWritable(AnUnitInfo.Filename)
|
||||
else
|
||||
AnUnitInfo.FileReadOnly:=false;
|
||||
|
||||
// if file is readonly then a simple Save is skipped
|
||||
if (AnUnitInfo.ReadOnly) and ([sfSaveToTestDir,sfSaveAs]*Flags=[]) then
|
||||
begin
|
||||
Result:=mrOk;
|
||||
exit;
|
||||
end;
|
||||
|
||||
// load old resource file
|
||||
LFMCode:=nil;
|
||||
ResourceCode:=nil;
|
||||
|
||||
@ -79,7 +79,7 @@ type
|
||||
function GetFullFilename: string; virtual; abstract;
|
||||
function GetShortFilename(UseUp: boolean): string; virtual; abstract;
|
||||
public
|
||||
property Filename: string read FFilename write SetFilename; // can contain macros if package was auto created
|
||||
property Filename: string read FFilename write SetFilename; // can contain macros
|
||||
property LazPackage: TIDEPackage read GetIDEPackage;
|
||||
property Removed: boolean read FRemoved write SetRemoved;
|
||||
property DisableI18NForLFM: boolean read FDisableI18NForLFM write SetDisableI18NForLFM;
|
||||
|
||||
@ -181,7 +181,6 @@ type
|
||||
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string;
|
||||
UsePathDelim: TPathDelimSwitch);
|
||||
procedure ConsistencyCheck;
|
||||
function GetShortFilename(UseUp: boolean): string; override;
|
||||
function ComponentCount: integer;
|
||||
procedure AddPkgComponent(APkgComponent: TPkgComponent);
|
||||
procedure RemovePkgComponent(APkgComponent: TPkgComponent);
|
||||
@ -189,6 +188,7 @@ type
|
||||
function MakeSense: boolean;
|
||||
procedure UpdateSourceDirectoryReference;
|
||||
function GetFullFilename: string; override;
|
||||
function GetShortFilename(UseUp: boolean): string; override;
|
||||
function GetResolvedFilename: string; // GetFullFilename + ReadAllLinks
|
||||
public
|
||||
property AddToUsesPkgSection: boolean
|
||||
@ -1495,14 +1495,9 @@ var
|
||||
begin
|
||||
NewFilename:=AValue;
|
||||
DoDirSeparators(NewFilename);
|
||||
LazPackage.LongenFilename(NewFilename);
|
||||
if Filename=NewFilename then exit;
|
||||
inherited SetFilename(NewFilename);
|
||||
fFullFilenameStamp:=CompilerParseStamp;
|
||||
if fFullFilenameStamp=Low(fFullFilenameStamp) then
|
||||
fFullFilenameStamp:=High(fFullFilenameStamp)
|
||||
else
|
||||
dec(fFullFilenameStamp);
|
||||
fFullFilenameStamp:=InvalidParseStamp;
|
||||
OldDirectory:=FDirectory;
|
||||
FDirectory:=ExtractFilePath(Filename);
|
||||
if OldDirectory<>FDirectory then begin
|
||||
@ -1646,11 +1641,15 @@ begin
|
||||
if fFullFilenameStamp<>CompilerParseStamp then begin
|
||||
fFullFilename:=Filename;
|
||||
fFullFilenameStamp:=CompilerParseStamp;
|
||||
if LazPackage<>nil then
|
||||
LazPackage.SubstitutePkgMacros(fFullFilename,false)
|
||||
else
|
||||
if LazPackage<>nil then begin
|
||||
LazPackage.SubstitutePkgMacros(fFullFilename,false);
|
||||
fFullFilename:=TrimFilename(fFullFilename);
|
||||
LazPackage.LongenFilename(fFullFilename);
|
||||
end
|
||||
else begin
|
||||
IDEMacros.SubstituteMacros(fFullFilename);
|
||||
fFullFilename:=TrimAndExpandFilename(fFullFilename);
|
||||
fFullFilename:=TrimAndExpandFilename(fFullFilename);
|
||||
end;
|
||||
end;
|
||||
Result:=fFullFilename;
|
||||
end;
|
||||
@ -1775,7 +1774,7 @@ end;
|
||||
function TPkgFile.GetResolvedFilename: string;
|
||||
begin
|
||||
Result:=ReadAllLinks(GetFullFilename,false);
|
||||
if Result='' then Result:=Filename;
|
||||
if Result='' then Result:=GetFullFilename;
|
||||
end;
|
||||
|
||||
{ TPkgDependency }
|
||||
@ -3112,14 +3111,16 @@ begin
|
||||
Cnt:=FileCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=Files[i];
|
||||
if CompareFilenames(Result.Filename,TheFilename)=0 then
|
||||
if (CompareFilenames(Result.Filename,TheFilename)=0)
|
||||
or (CompareFilenames(Result.GetFullFilename,TheFilename)=0) then
|
||||
exit;
|
||||
end;
|
||||
if not IgnoreRemoved then begin
|
||||
Cnt:=RemovedFilesCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=RemovedFiles[i];
|
||||
if CompareFilenames(Result.Filename,TheFilename)=0 then
|
||||
if (CompareFilenames(Result.Filename,TheFilename)=0)
|
||||
or (CompareFilenames(Result.GetFullFilename,TheFilename)=0) then
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -3252,6 +3253,7 @@ begin
|
||||
end;
|
||||
with Result do begin
|
||||
Filename:=NewFilename;
|
||||
debugln(['TLazPackage.AddFile Is=',Filename,' Should=',NewFilename]);
|
||||
Unit_Name:=NewUnitName;
|
||||
FileType:=NewFileType;
|
||||
Flags:=NewFlags;
|
||||
@ -3262,6 +3264,7 @@ begin
|
||||
AutoReferenceSourceDir:=true;
|
||||
end;
|
||||
FFiles.Add(Result);
|
||||
debugln(['TLazPackage.AddFile Is=',Result.Filename,' Should=',NewFilename]);
|
||||
Modified:=true;
|
||||
end;
|
||||
|
||||
@ -3315,7 +3318,7 @@ begin
|
||||
while i>=0 do begin
|
||||
if i>=FileCount then continue;
|
||||
AFilename:=Files[i].GetResolvedFilename;
|
||||
if (AFilename='') or (not FileExistsCached(Files[i].Filename)) then
|
||||
if (AFilename='') or (not FileExistsCached(AFilename)) then
|
||||
begin
|
||||
RemoveFile(Files[i]);
|
||||
Result:=true;
|
||||
@ -3423,6 +3426,7 @@ var
|
||||
NewShortFilename: string;
|
||||
NewFilename: String;
|
||||
CurDir: String;
|
||||
AFilename: String;
|
||||
begin
|
||||
Result:=false;
|
||||
Cnt:=FileCount;
|
||||
@ -3430,10 +3434,11 @@ begin
|
||||
try
|
||||
for i:=0 to Cnt-1 do begin
|
||||
CurFile:=Files[i];
|
||||
CurDir:=CurFile.Directory;
|
||||
//debugln('TLazPackage.FixFilesCaseSensitivity A ',dbgs(i),' CurFile.Filename=',CurFile.Filename);
|
||||
AFilename:=CurFile.GetFullFilename;
|
||||
CurShortFilename:=ExtractFilename(AFilename);
|
||||
CurDir:=ExtractFilePath(AFilename);
|
||||
DirListing:=AddDirectoryListing(CurDir);
|
||||
CurShortFilename:=ExtractFilename(CurFile.Filename);
|
||||
DirListID:=IndexOfFileInStringList(DirListing,CurShortFilename,false);
|
||||
//debugln('TLazPackage.FixFilesCaseSensitivity B ',dbgs(i),' CurShortFilename=',CurShortFilename,' DirListID=',dbgs(DirListID));
|
||||
if DirListID<0 then continue;
|
||||
|
||||
@ -492,7 +492,7 @@ begin
|
||||
if (PkgFile<>nil) then begin
|
||||
if Removed then begin
|
||||
// re-add file
|
||||
AFilename:=PkgFile.Filename;
|
||||
AFilename:=PkgFile.GetFullFilename;
|
||||
if PkgFile.FileType in PkgFileRealUnitTypes then begin
|
||||
if not CheckAddingUnitFilename(LazPackage,d2ptUnit,
|
||||
PackageEditors.OnGetIDEFileInfo,AFilename) then exit;
|
||||
@ -544,7 +544,7 @@ var
|
||||
begin
|
||||
PkgEditMenuSectionFileType.Clear;
|
||||
VirtualFileExists:=(CurFile.FileType=pftVirtualUnit)
|
||||
and FileExistsUTF8(CurFile.Filename);
|
||||
and FileExistsCached(CurFile.GetFullFilename);
|
||||
for CurPFT:=Low(TPkgFileType) to High(TPkgFileType) do begin
|
||||
NewMenuItem:=RegisterIDEMenuCommand(PkgEditMenuSectionFileType,
|
||||
'SetFileType'+IntToStr(ord(CurPFT)),
|
||||
@ -1536,8 +1536,10 @@ var
|
||||
Include(NewPkgFileFlags,pffHasRegisterProc);
|
||||
end;
|
||||
end;
|
||||
debugln(['AddNewFile AAA1 NewFilename=',NewFilename]);
|
||||
FNextSelectedPart := LazPackage.AddFile(NewFilename,NewUnitName,NewFileType,
|
||||
NewPkgFileFlags, cpNormal);
|
||||
debugln(['AddNewFile AAA2 ',TPkgFile(FNextSelectedPart).Filename]);
|
||||
UpdateAll(true);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -2947,6 +2947,7 @@ var
|
||||
o: TPkgOutputDir;
|
||||
Stats: PPkgLastCompileStats;
|
||||
SrcPPUFile: String;
|
||||
AFilename: String;
|
||||
begin
|
||||
Result:=mrYes;
|
||||
{$IFDEF VerbosePkgCompile}
|
||||
@ -3103,8 +3104,9 @@ begin
|
||||
for i:=0 to APackage.FileCount-1 do begin
|
||||
CurFile:=APackage.Files[i];
|
||||
//debugln(['TLazPackageGraph.CheckIfPackageNeedsCompilation CurFile.Filename="',CurFile.Filename,'" Exists=',FileExistsUTF8(CurFile.Filename),' NewerThanStateFile=',StateFileAge<FileAgeCached(CurFile.Filename)]);
|
||||
if FileExistsCached(CurFile.Filename)
|
||||
and (StateFileAge<FileAgeCached(CurFile.Filename)) then begin
|
||||
AFilename:=CurFile.GetFullFilename;
|
||||
if FileExistsCached(AFilename)
|
||||
and (StateFileAge<FileAgeCached(AFilename)) then begin
|
||||
DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Src has changed ',APackage.IDAsString,' ',CurFile.Filename);
|
||||
exit(mrYes);
|
||||
end;
|
||||
@ -3934,6 +3936,7 @@ var
|
||||
NewShortenSrc: String;
|
||||
BeautifyCodeOptions: TBeautifyCodeOptions;
|
||||
AddedUnitNames: TStringToStringTree;
|
||||
AFilename: String;
|
||||
|
||||
procedure UseUnit(AnUnitName: string);
|
||||
begin
|
||||
@ -3967,12 +3970,13 @@ begin
|
||||
CurFile:=APackage.Files[i];
|
||||
if CurFile.FileType=pftMainUnit then continue;
|
||||
// update unitname
|
||||
if FilenameIsPascalUnit(CurFile.Filename)
|
||||
AFilename:=CurFile.GetFullFilename;
|
||||
if FilenameIsPascalUnit(AFilename)
|
||||
and (CurFile.FileType in PkgFileUnitTypes) then begin
|
||||
NeedsRegisterProcCall:=CurFile.HasRegisterProc
|
||||
and (APackage.PackageType in [lptDesignTime,lptRunAndDesignTime]);
|
||||
|
||||
CurUnitName:=ExtractFileNameOnly(CurFile.Filename);
|
||||
CurUnitName:=ExtractFileNameOnly(AFilename);
|
||||
|
||||
if not (NeedsRegisterProcCall or CurFile.AddToUsesPkgSection) then
|
||||
continue;
|
||||
@ -3981,7 +3985,7 @@ begin
|
||||
// the filename is all lowercase, so we can use the nicer unitname from
|
||||
// the source.
|
||||
|
||||
CodeBuffer:=CodeToolBoss.LoadFile(CurFile.Filename,false,false);
|
||||
CodeBuffer:=CodeToolBoss.LoadFile(AFilename,false,false);
|
||||
if CodeBuffer<>nil then begin
|
||||
// if the unit is edited, the unitname is probably already cached
|
||||
CurSrcUnitName:=CodeToolBoss.GetCachedSourceName(CodeBuffer);
|
||||
|
||||
@ -287,6 +287,7 @@ type
|
||||
function DoCloseAllPackageEditors: TModalResult; override;
|
||||
function DoAddActiveUnitToAPackage: TModalResult;
|
||||
function DoNewPackageComponent: TModalResult;
|
||||
function SavePackageFiles(APackage: TLazPackage): TModalResult;
|
||||
function WarnAboutMissingPackageFiles(APackage: TLazPackage): TModalResult;
|
||||
function AddPackageDependency(APackage: TLazPackage; const ReqPackage: string;
|
||||
OnlyTestIfPossible: boolean = false): TModalResult; override;
|
||||
@ -459,7 +460,7 @@ begin
|
||||
if PkgFile.FileType=pftVirtualUnit then
|
||||
Filename:=FindVirtualUnitSource(PkgFile);
|
||||
if Filename='' then
|
||||
Filename:=PkgFile.Filename;
|
||||
Filename:=PkgFile.GetFullFilename;
|
||||
MainIDE.DoOpenFileAndJumpToIdentifier(
|
||||
Filename,PkgComponent.ComponentClass.ClassName,
|
||||
-1, -1, // open page somewhere
|
||||
@ -2318,6 +2319,10 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
// save new or changed files
|
||||
Result:=SavePackageFiles(APackage);
|
||||
if Result<>mrOk then exit;
|
||||
|
||||
// warn about missing files
|
||||
Result:=WarnAboutMissingPackageFiles(APackage);
|
||||
if Result<>mrOk then exit;
|
||||
@ -2635,9 +2640,6 @@ begin
|
||||
if Result<>mrOk then exit;
|
||||
end;
|
||||
|
||||
Result:=WarnAboutMissingPackageFiles(APackage);
|
||||
if Result<>mrOk then exit;
|
||||
|
||||
Result:=PackageGraph.CompilePackage(APackage,Flags,false);
|
||||
end;
|
||||
|
||||
@ -3080,7 +3082,7 @@ begin
|
||||
for j:=0 to CurPackage.FileCount-1 do begin
|
||||
CurPkgFile:=CurPackage.Files[j];
|
||||
if CurPkgFile.FileType in PkgFileUnitTypes then
|
||||
AddFile(CurOwner,CurPkgFile.Filename);
|
||||
AddFile(CurOwner,CurPkgFile.GetFullFilename);
|
||||
end;
|
||||
end else if CurOwner is TProject then begin
|
||||
CurProject:=TProject(CurOwner);
|
||||
@ -3286,7 +3288,8 @@ begin
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
Result:=MainIDE.DoOpenMacroFile(Self,PkgFile.Filename);
|
||||
Result:=MainIDE.DoOpenEditorFile(PkgFile.GetFullFilename,-1,-1,
|
||||
[ofOnlyIfExists,ofAddToRecent,ofRegularFile]);
|
||||
end;
|
||||
|
||||
function TPkgManager.FindVirtualUnitSource(PkgFile: TPkgFile): string;
|
||||
@ -3296,7 +3299,7 @@ begin
|
||||
and (PkgFile.LazPackage<>nil)
|
||||
and (not FileExistsUTF8(PkgFile.Filename)) then begin
|
||||
Result:=MainIDE.FindSourceFile(PkgFile.GetShortFilename(false),
|
||||
PkgFile.LazPackage.Directory,[]);
|
||||
PkgFile.LazPackage.Directory,[]);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -3488,12 +3491,48 @@ begin
|
||||
Result:=CurEditor.ShowAddDialog(Page);
|
||||
end;
|
||||
|
||||
function TPkgManager.WarnAboutMissingPackageFiles(APackage: TLazPackage): TModalResult;
|
||||
function TPkgManager.SavePackageFiles(APackage: TLazPackage): TModalResult;
|
||||
var
|
||||
i, j: Integer;
|
||||
i: Integer;
|
||||
AFile: TPkgFile;
|
||||
AFilename: String;
|
||||
SaveFlags: TSaveFlags;
|
||||
SrcEdit: TSourceEditor;
|
||||
begin
|
||||
Result:=mrOk;
|
||||
for i:=0 to APackage.FileCount-1 do begin
|
||||
AFile:=APackage.Files[i];
|
||||
if AFile.FileType=pftVirtualUnit then continue;
|
||||
AFilename:=AFile.Filename;
|
||||
if System.Pos('$(',AFilename)>0 then begin
|
||||
// filename contains macros -> skip
|
||||
//debugln(['TPkgManager.SavePackageFiles macros ',AFilename]);
|
||||
continue;
|
||||
end;
|
||||
// check if open in editor
|
||||
SrcEdit:=SourceEditorManager.SourceEditorIntfWithFilename(AFilename);
|
||||
if SrcEdit=nil then
|
||||
begin
|
||||
// not open in source editor => skip
|
||||
//debugln(['TPkgManager.SavePackageFiles no src edit ',AFilename]);
|
||||
continue;
|
||||
end;
|
||||
SaveFlags:=[sfCanAbort];
|
||||
if not FilenameIsAbsolute(AFilename) then
|
||||
SaveFlags:=[sfSaveAs];
|
||||
debugln(['TPkgManager.SavePackageFiles saving ',AFilename]);
|
||||
Result:=LazarusIDE.DoSaveEditorFile(SrcEdit,SaveFlags);
|
||||
if Result=mrIgnore then Result:=mrOk;
|
||||
if Result<>mrOk then exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPkgManager.WarnAboutMissingPackageFiles(APackage: TLazPackage
|
||||
): TModalResult;
|
||||
var
|
||||
i: Integer;
|
||||
AFile: TPkgFile;
|
||||
AFilename: String;
|
||||
UEInfo: TUnitEditorInfo;
|
||||
begin
|
||||
Result:=mrOk;
|
||||
for i:=0 to APackage.FileCount-1 do begin
|
||||
@ -3502,47 +3541,18 @@ begin
|
||||
AFilename:=AFile.GetFullFilename;
|
||||
if System.Pos('$(',AFilename)>0 then begin
|
||||
// filename contains macros -> skip
|
||||
continue;
|
||||
end;
|
||||
if FilenameIsAbsolute(APackage.Filename) and FilenameIsAbsolute(AFilename) then begin
|
||||
APackage.LongenFilename(AFilename);
|
||||
end;
|
||||
if FilenameIsAbsolute(AFilename) then begin
|
||||
// "Normal" file
|
||||
if not FileExistsCached(AFilename) then begin
|
||||
if not APackage.IsVirtual then
|
||||
AFilename:=CreateRelativePath(AFilename,APackage.Directory);
|
||||
for j := 0 to Project1.AllEditorsInfoCount-1 do begin
|
||||
UEInfo:=Project1.AllEditorsInfo[j];
|
||||
if Assigned(UEInfo.EditorComponent) then // Editor is open
|
||||
if UEInfo.UnitInfo.Filename=AFilename then begin //,sfSaveNonProjectFiles
|
||||
Result:=LazarusIDE.DoSaveEditorFile(UEInfo.EditorComponent,[sfSaveAs]);
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
{ Result:=IDEQuestionDialog(lisPkgMangPackageFileMissing,
|
||||
Format(lisPkgMangTheFileOfPackageIsMissing,
|
||||
['"', AFilename, '"', #13, APackage.IDAsString]),
|
||||
mtWarning,[mrIgnore,mrAbort]);
|
||||
if Result<>mrAbort then
|
||||
Result:=mrOk;
|
||||
// one warning is enough
|
||||
exit;
|
||||
}
|
||||
end;
|
||||
end
|
||||
else begin
|
||||
Assert(False, 'Package Filename can be Virtual after all');
|
||||
{ if not APackage.IsVirtual then begin
|
||||
// an unsaved file
|
||||
Result:=IDEQuestionDialog(lisPkgMangPackageFileNotSaved,
|
||||
Format(lisPkgMangTheFileOfPackageNeedsToBeSavedFirst,
|
||||
['"', AFilename, '"', #13, APackage.IDAsString]),
|
||||
mtWarning, [mrIgnore, lisPkgMangIgnoreAndSavePackageNow, mrAbort]);
|
||||
if Result<>mrAbort then
|
||||
Result:=mrOk;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
if FilenameIsAbsolute(AFilename) and FileExistsCached(AFilename) then
|
||||
continue;
|
||||
Result:=IDEQuestionDialog(lisPkgSysPackageFileNotFound,
|
||||
Format(lisPkgMangTheFileOfPackageWasNotFound, [AFilename, APackage.
|
||||
IDAsString]),
|
||||
mtWarning,[mrIgnore,mrAbort]);
|
||||
if Result<>mrAbort then
|
||||
Result:=mrOk;
|
||||
// one warning is enough
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user