mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-02 11:01:20 +02:00
Converter: Backup the original .dfm also when it is used directly for Lazarus. Issue #29631.
git-svn-id: trunk@51632 -
This commit is contained in:
parent
d7e4677c9f
commit
5ec79158ce
@ -556,33 +556,40 @@ var
|
||||
begin
|
||||
Result:=mrOK;
|
||||
fLFMBuffer:=nil;
|
||||
if ADfmFilename<>'' then begin
|
||||
if ADfmFilename<>'' then
|
||||
begin
|
||||
Result:=LazarusIDE.DoCloseEditorFile(ADfmFilename,[cfSaveFirst]);
|
||||
if Result<>mrOK then exit;
|
||||
// Save before using .dfm.
|
||||
Result:=fOwnerConverter.fSettings.MaybeBackupFile(ADfmFilename);
|
||||
if Result<>mrOK then exit;
|
||||
end;
|
||||
if fOwnerConverter.fSettings.SameDfmFile then
|
||||
LfmFilename:=ADfmFilename
|
||||
else
|
||||
with fOwnerConverter do begin
|
||||
// Create a form file name based on the unit file name.
|
||||
LfmFilename:=fSettings.DelphiToLazFilename(fOrigUnitFilename, '.lfm',
|
||||
cdtlufRenameLowercase in fFlags);
|
||||
if ADfmFilename<>'' then begin
|
||||
if FileExistsUTF8(LfmFilename) then
|
||||
if (FileAgeUTF8(LfmFilename)<FileAgeUTF8(ADfmFilename)) then
|
||||
DeleteFileUTF8(LfmFilename); // .lfm is older than .dfm -> remove .lfm
|
||||
if not FileExistsUTF8(LfmFilename) then begin
|
||||
// TODO: update project
|
||||
if fSettings.SupportDelphi and not fSettings.SameDfmFile then
|
||||
Result:=CopyFileWithErrorDialogs(ADfmFilename,LfmFilename,[mbAbort])
|
||||
else
|
||||
Result:=fSettings.RenameFile(ADfmFilename,LfmFilename);
|
||||
if Result<>mrOK then exit;
|
||||
end;
|
||||
else begin
|
||||
// Create a form file name based on the unit file name.
|
||||
with fOwnerConverter.fSettings do
|
||||
LfmFilename:=DelphiToLazFilename(fOrigUnitFilename, '.lfm',
|
||||
cdtlufRenameLowercase in fFlags);
|
||||
if ADfmFilename<>'' then
|
||||
begin
|
||||
if FileExistsUTF8(LfmFilename) then
|
||||
if (FileAgeUTF8(LfmFilename)<FileAgeUTF8(ADfmFilename)) then
|
||||
DeleteFileUTF8(LfmFilename); // .lfm is older than .dfm -> remove .lfm
|
||||
if not FileExistsUTF8(LfmFilename) then
|
||||
begin
|
||||
// TODO: update project
|
||||
if fOwnerConverter.fSettings.SupportDelphi then
|
||||
Result:=CopyFileWithErrorDialogs(ADfmFilename, LfmFilename, [mbAbort])
|
||||
else
|
||||
Result:=RenameFileWithErrorDialogs(ADfmFilename, LfmFilename, [mbAbort]);
|
||||
if Result<>mrOK then exit;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
// Convert Unit .dfm file to .lfm file (without context type checking)
|
||||
if FileExistsUTF8(LfmFilename) then begin
|
||||
if FileExistsUTF8(LfmFilename) then
|
||||
begin
|
||||
DFMConverter:=TDFMConverter.Create;
|
||||
try
|
||||
DFMConverter.Settings:=fOwnerConverter.fSettings;
|
||||
@ -595,17 +602,17 @@ begin
|
||||
Result:=LoadCodeBuffer(TempLFMBuffer,LfmFilename,
|
||||
[lbfCheckIfText,lbfUpdateFromDisk],true);
|
||||
// Change encoding to UTF-8
|
||||
if TempLFMBuffer.DiskEncoding<>EncodingUTF8 then begin
|
||||
if TempLFMBuffer.DiskEncoding<>EncodingUTF8 then
|
||||
begin
|
||||
fOwnerConverter.fSettings.AddLogLine(Format(lisConvDelphiChangedEncodingToUTF8,
|
||||
[TempLFMBuffer.DiskEncoding]));
|
||||
TempLFMBuffer.DiskEncoding:=EncodingUTF8;
|
||||
TempLFMBuffer.Save;
|
||||
end;
|
||||
// Read form file code in.
|
||||
if not fOwnerConverter.fSettings.SameDfmFile then begin
|
||||
if not fOwnerConverter.fSettings.SameDfmFile then
|
||||
Result:=LoadCodeBuffer(fLFMBuffer,LfmFilename,
|
||||
[lbfCheckIfText,lbfUpdateFromDisk],true);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user