mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-10-02 15:12:55 +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 BackupFile(const Filename: string): TModalResult; virtual; abstract;
|
||||||
|
|
||||||
function UpdateProjectAutomaticFiles: TModalResult; virtual; abstract;
|
function UpdateProjectAutomaticFiles(TestDir: string): TModalResult; virtual; abstract;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
|
@ -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
|
||||||
|
13
ide/main.pp
13
ide/main.pp
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user