IDE: save project.lrs/rc file to test directory

git-svn-id: trunk@22065 -
This commit is contained in:
mattias 2009-10-07 23:56:30 +00:00
parent 32a6f2a37d
commit 0fdaea263c
5 changed files with 27 additions and 20 deletions

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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;

View File

@ -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