mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-11 22:37:28 +02:00
IDE: save project.lrs/rc file to test directory
git-svn-id: trunk@22065 -
This commit is contained in:
parent
32a6f2a37d
commit
0fdaea263c
@ -69,7 +69,7 @@ type
|
||||
|
||||
function BackupFile(const Filename: string): TModalResult; virtual; abstract;
|
||||
|
||||
function UpdateProjectAutomaticFiles: TModalResult; virtual; abstract;
|
||||
function UpdateProjectAutomaticFiles(TestDir: string): TModalResult; virtual; abstract;
|
||||
end;
|
||||
|
||||
var
|
||||
|
@ -147,7 +147,7 @@ type
|
||||
UseDefaultIfNotFound: boolean): string;
|
||||
function GetDefaultLRSFilename(AnUnitInfo: TUnitInfo): string;
|
||||
function UpdateLRSFromLFM(AnUnitInfo: TUnitInfo; ShowAbort: boolean): TModalResult;
|
||||
function UpdateProjectAutomaticFiles: TModalResult; override;
|
||||
function UpdateProjectAutomaticFiles(TestDir: string): TModalResult; override;
|
||||
|
||||
// methods for building
|
||||
procedure SetBuildTarget(const TargetOS, TargetCPU, LCLWidgetType: string;
|
||||
@ -1072,12 +1072,12 @@ begin
|
||||
Result:=ConvertLFMToLRSFileInteractive(LFMFilename,LRSFilename,ShowAbort);
|
||||
end;
|
||||
|
||||
function TBuildManager.UpdateProjectAutomaticFiles: TModalResult;
|
||||
function TBuildManager.UpdateProjectAutomaticFiles(TestDir: string): TModalResult;
|
||||
var
|
||||
AnUnitInfo: TUnitInfo;
|
||||
begin
|
||||
// update project resource
|
||||
Project1.Resources.Regenerate(Project1.MainFileName, False, True);
|
||||
Project1.Resources.Regenerate(Project1.MainFileName, False, True, TestDir);
|
||||
AnUnitInfo := Project1.FirstPartOfProject;
|
||||
while AnUnitInfo<>nil do
|
||||
begin
|
||||
|
13
ide/main.pp
13
ide/main.pp
@ -8583,7 +8583,7 @@ begin
|
||||
end;
|
||||
|
||||
// init resource files
|
||||
if not Project1.Resources.Regenerate(Project1.MainFilename, True, False) then
|
||||
if not Project1.Resources.Regenerate(Project1.MainFilename, True, False,'') then
|
||||
DebugLn('TMainIDE.DoNewProject Project1.Resources.Regenerate failed');
|
||||
finally
|
||||
Project1.EndUpdate;
|
||||
@ -8702,12 +8702,6 @@ begin
|
||||
else
|
||||
DestFilename := MainBuildBoss.GetTestUnitFilename(MainUnitInfo);
|
||||
|
||||
// if we are saving a project to a temporary folder then we also need to save resources
|
||||
// or compilation will fail
|
||||
if sfSaveToTestDir in Flags then
|
||||
if not Project1.Resources.Regenerate(DestFileName, False, True) then
|
||||
DebugLn('TMainIDE.DoSaveProject Project1.Resources.Regenerate failed');
|
||||
|
||||
if MainUnitInfo.Loaded then
|
||||
begin
|
||||
// loaded in source editor
|
||||
@ -8764,7 +8758,10 @@ begin
|
||||
end;
|
||||
|
||||
// update all lrs files
|
||||
MainBuildBoss.UpdateProjectAutomaticFiles;
|
||||
if sfSaveToTestDir in Flags then
|
||||
MainBuildBoss.UpdateProjectAutomaticFiles(EnvironmentOptions.TestBuildDirectory)
|
||||
else
|
||||
MainBuildBoss.UpdateProjectAutomaticFiles('');
|
||||
|
||||
// everything went well => clear all modified flags
|
||||
Project1.ClearModifieds(true);
|
||||
|
@ -571,7 +571,7 @@ begin
|
||||
|
||||
if Project.Resources.Modified and (Project.MainUnitID >= 0) then
|
||||
begin
|
||||
if not Project.Resources.Regenerate(Project.MainFilename, True, False) then
|
||||
if not Project.Resources.Regenerate(Project.MainFilename, True, False,'') then
|
||||
MessageDlg(Project.Resources.Messages.Text, mtWarning, [mbOk], 0);
|
||||
end;
|
||||
end;
|
||||
|
@ -71,7 +71,7 @@ type
|
||||
function Update: Boolean;
|
||||
function UpdateMainSourceFile(const AFileName: string): Boolean;
|
||||
procedure UpdateFlagLrsIncludeAllowed(const AFileName: string);
|
||||
function Save: Boolean;
|
||||
function Save(SaveToTestDir: string): Boolean;
|
||||
procedure UpdateCodeBuffers;
|
||||
procedure DeleteLastCodeBuffers;
|
||||
public
|
||||
@ -83,7 +83,9 @@ type
|
||||
|
||||
procedure DoBeforeBuild;
|
||||
procedure Clear;
|
||||
function Regenerate(const MainFileName: String; UpdateSource, PerformSave: Boolean): Boolean;
|
||||
function Regenerate(const MainFileName: String;
|
||||
UpdateSource, PerformSave: boolean;
|
||||
SaveToTestDir: string): Boolean;
|
||||
function RenameDirectives(const CurFileName, NewFileName: String): Boolean;
|
||||
procedure DeleteResourceBuffers;
|
||||
|
||||
@ -227,7 +229,7 @@ begin
|
||||
end;
|
||||
|
||||
function TProjectResources.Regenerate(const MainFileName: String;
|
||||
UpdateSource, PerformSave: Boolean): Boolean;
|
||||
UpdateSource, PerformSave: boolean; SaveToTestDir: string): Boolean;
|
||||
begin
|
||||
//DebugLn(['TProjectResources.Regenerate MainFilename=',MainFilename,' UpdateSource=',UpdateSource,' PerformSave=',PerformSave]);
|
||||
//DumpStack;
|
||||
@ -253,7 +255,7 @@ begin
|
||||
if UpdateSource and not UpdateMainSourceFile(MainFileName) then
|
||||
Exit;
|
||||
|
||||
if PerformSave and not Save then
|
||||
if PerformSave and not Save(SaveToTestDir) then
|
||||
Exit;
|
||||
finally
|
||||
DeleteLastCodeBuffers;
|
||||
@ -558,16 +560,24 @@ begin
|
||||
DeleteBuffer(lrsFileName);
|
||||
end;
|
||||
|
||||
function TProjectResources.Save: Boolean;
|
||||
function TProjectResources.Save(SaveToTestDir: string): Boolean;
|
||||
|
||||
function SaveCodeBuf(Filename: string): boolean;
|
||||
var
|
||||
CodeBuf: TCodeBuffer;
|
||||
TestFilename: String;
|
||||
begin
|
||||
CodeBuf := CodeToolBoss.FindFile(Filename);
|
||||
if (CodeBuf = nil) or CodeBuf.IsDeleted or CodeBuf.IsVirtual then
|
||||
if (CodeBuf = nil) or CodeBuf.IsDeleted then
|
||||
Exit(true);
|
||||
Result := SaveCodeBuffer(CodeBuf) in [mrOk,mrIgnore];
|
||||
if not CodeBuf.IsVirtual then
|
||||
begin
|
||||
Result := SaveCodeBuffer(CodeBuf) in [mrOk,mrIgnore];
|
||||
end else if SaveToTestDir<>'' then
|
||||
begin
|
||||
TestFilename:=AppendPathDelim(SaveToTestDir)+CodeBuf.Filename;
|
||||
Result := SaveCodeBufferToFile(CodeBuf,TestFilename) in [mrOk,mrIgnore];
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user