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 BackupFile(const Filename: string): TModalResult; virtual; abstract;
function UpdateProjectAutomaticFiles: TModalResult; virtual; abstract; function UpdateProjectAutomaticFiles(TestDir: string): TModalResult; virtual; abstract;
end; end;
var var

View File

@ -147,7 +147,7 @@ type
UseDefaultIfNotFound: boolean): string; UseDefaultIfNotFound: boolean): string;
function GetDefaultLRSFilename(AnUnitInfo: TUnitInfo): string; function GetDefaultLRSFilename(AnUnitInfo: TUnitInfo): string;
function UpdateLRSFromLFM(AnUnitInfo: TUnitInfo; ShowAbort: boolean): TModalResult; function UpdateLRSFromLFM(AnUnitInfo: TUnitInfo; ShowAbort: boolean): TModalResult;
function UpdateProjectAutomaticFiles: TModalResult; override; function UpdateProjectAutomaticFiles(TestDir: string): TModalResult; override;
// methods for building // methods for building
procedure SetBuildTarget(const TargetOS, TargetCPU, LCLWidgetType: string; procedure SetBuildTarget(const TargetOS, TargetCPU, LCLWidgetType: string;
@ -1072,12 +1072,12 @@ begin
Result:=ConvertLFMToLRSFileInteractive(LFMFilename,LRSFilename,ShowAbort); Result:=ConvertLFMToLRSFileInteractive(LFMFilename,LRSFilename,ShowAbort);
end; end;
function TBuildManager.UpdateProjectAutomaticFiles: TModalResult; function TBuildManager.UpdateProjectAutomaticFiles(TestDir: string): TModalResult;
var var
AnUnitInfo: TUnitInfo; AnUnitInfo: TUnitInfo;
begin begin
// update project resource // update project resource
Project1.Resources.Regenerate(Project1.MainFileName, False, True); Project1.Resources.Regenerate(Project1.MainFileName, False, True, TestDir);
AnUnitInfo := Project1.FirstPartOfProject; AnUnitInfo := Project1.FirstPartOfProject;
while AnUnitInfo<>nil do while AnUnitInfo<>nil do
begin begin

View File

@ -8583,7 +8583,7 @@ begin
end; end;
// init resource files // 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'); DebugLn('TMainIDE.DoNewProject Project1.Resources.Regenerate failed');
finally finally
Project1.EndUpdate; Project1.EndUpdate;
@ -8702,12 +8702,6 @@ begin
else else
DestFilename := MainBuildBoss.GetTestUnitFilename(MainUnitInfo); 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 if MainUnitInfo.Loaded then
begin begin
// loaded in source editor // loaded in source editor
@ -8764,7 +8758,10 @@ begin
end; end;
// update all lrs files // 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 // everything went well => clear all modified flags
Project1.ClearModifieds(true); Project1.ClearModifieds(true);

View File

@ -571,7 +571,7 @@ begin
if Project.Resources.Modified and (Project.MainUnitID >= 0) then if Project.Resources.Modified and (Project.MainUnitID >= 0) then
begin 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); MessageDlg(Project.Resources.Messages.Text, mtWarning, [mbOk], 0);
end; end;
end; end;

View File

@ -71,7 +71,7 @@ type
function Update: Boolean; function Update: Boolean;
function UpdateMainSourceFile(const AFileName: string): Boolean; function UpdateMainSourceFile(const AFileName: string): Boolean;
procedure UpdateFlagLrsIncludeAllowed(const AFileName: string); procedure UpdateFlagLrsIncludeAllowed(const AFileName: string);
function Save: Boolean; function Save(SaveToTestDir: string): Boolean;
procedure UpdateCodeBuffers; procedure UpdateCodeBuffers;
procedure DeleteLastCodeBuffers; procedure DeleteLastCodeBuffers;
public public
@ -83,7 +83,9 @@ type
procedure DoBeforeBuild; procedure DoBeforeBuild;
procedure Clear; 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; function RenameDirectives(const CurFileName, NewFileName: String): Boolean;
procedure DeleteResourceBuffers; procedure DeleteResourceBuffers;
@ -227,7 +229,7 @@ begin
end; end;
function TProjectResources.Regenerate(const MainFileName: String; function TProjectResources.Regenerate(const MainFileName: String;
UpdateSource, PerformSave: Boolean): Boolean; UpdateSource, PerformSave: boolean; SaveToTestDir: string): Boolean;
begin begin
//DebugLn(['TProjectResources.Regenerate MainFilename=',MainFilename,' UpdateSource=',UpdateSource,' PerformSave=',PerformSave]); //DebugLn(['TProjectResources.Regenerate MainFilename=',MainFilename,' UpdateSource=',UpdateSource,' PerformSave=',PerformSave]);
//DumpStack; //DumpStack;
@ -253,7 +255,7 @@ begin
if UpdateSource and not UpdateMainSourceFile(MainFileName) then if UpdateSource and not UpdateMainSourceFile(MainFileName) then
Exit; Exit;
if PerformSave and not Save then if PerformSave and not Save(SaveToTestDir) then
Exit; Exit;
finally finally
DeleteLastCodeBuffers; DeleteLastCodeBuffers;
@ -558,16 +560,24 @@ begin
DeleteBuffer(lrsFileName); DeleteBuffer(lrsFileName);
end; end;
function TProjectResources.Save: Boolean; function TProjectResources.Save(SaveToTestDir: string): Boolean;
function SaveCodeBuf(Filename: string): boolean; function SaveCodeBuf(Filename: string): boolean;
var var
CodeBuf: TCodeBuffer; CodeBuf: TCodeBuffer;
TestFilename: String;
begin begin
CodeBuf := CodeToolBoss.FindFile(Filename); CodeBuf := CodeToolBoss.FindFile(Filename);
if (CodeBuf = nil) or CodeBuf.IsDeleted or CodeBuf.IsVirtual then if (CodeBuf = nil) or CodeBuf.IsDeleted then
Exit(true); 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; end;
begin begin