mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-02 18:59:43 +01:00
IDE: Save and load values when BuildMode is switched.
git-svn-id: trunk@40853 -
This commit is contained in:
parent
810f515e86
commit
b36bbb6909
@ -44,7 +44,7 @@ type
|
||||
private
|
||||
fActiveBuildMode: TProjectBuildMode;
|
||||
fBuildModes: TProjectBuildModes;
|
||||
FShowSession: boolean;
|
||||
fShowSession: boolean;
|
||||
fModeActiveCol: integer;
|
||||
fModeInSessionCol: integer;
|
||||
fModeNameCol: integer;
|
||||
@ -63,41 +63,53 @@ type
|
||||
public
|
||||
property ActiveBuildMode: TProjectBuildMode read GetActiveBuildMode write SetActiveBuildMode;
|
||||
property BuildModes: TProjectBuildModes read fBuildModes;
|
||||
property ShowSession: boolean read FShowSession write SetShowSession;
|
||||
property ShowSession: boolean read fShowSession write SetShowSession;
|
||||
end;
|
||||
|
||||
function ShowBuildModesDlg: TModalResult;
|
||||
var
|
||||
OnLoadIDEOptionsHook: TOnLoadIDEOptions;
|
||||
OnSaveIDEOptionsHook: TOnSaveIDEOptions;
|
||||
|
||||
function ShowBuildModesDlg(frm: TBuildModesForm): TModalResult;
|
||||
procedure SwitchBuildMode(aBuildModeID: string);
|
||||
procedure UpdateBuildModeCombo(aCombo: TComboBox);
|
||||
procedure SetActiveBuildModeID(aID: string);
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
function ShowBuildModesDlg: TModalResult;
|
||||
var
|
||||
BuildModesForm: TBuildModesForm;
|
||||
function ShowBuildModesDlg(frm: TBuildModesForm): TModalResult;
|
||||
begin
|
||||
Assert(Assigned(Project1), 'ShowBuildModesDlg: Project is not assigned.');
|
||||
Result := mrCancel;
|
||||
BuildModesForm := TBuildModesForm.Create(nil);
|
||||
try
|
||||
BuildModesForm.fBuildModes.Assign(Project1.BuildModes, True); // Copy to dialog.
|
||||
BuildModesForm.SetActiveBuildModeByID(Project1.ActiveBuildMode);
|
||||
BuildModesForm.ShowSession:=Project1.SessionStorage in [pssInProjectDir,pssInIDEConfig];
|
||||
// Show the form. Let user add / edit / delete build modes.
|
||||
Result := BuildModesForm.ShowModal;
|
||||
if Result = mrOk then begin
|
||||
Project1.BuildModes.Assign(BuildModesForm.fBuildModes, True); // Copy back from dialog.
|
||||
Project1.ActiveBuildModeID:=BuildModesForm.fActiveBuildMode.Identifier;
|
||||
IncreaseBuildMacroChangeStamp;
|
||||
end;
|
||||
finally
|
||||
BuildModesForm.Free;
|
||||
// Save changes
|
||||
OnSaveIDEOptionsHook(Nil, Project1.CompilerOptions);
|
||||
// Copy to dialog
|
||||
frm.fBuildModes.Assign(Project1.BuildModes, True);
|
||||
frm.SetActiveBuildModeByID(Project1.ActiveBuildMode);
|
||||
frm.ShowSession:=Project1.SessionStorage in [pssInProjectDir,pssInIDEConfig];
|
||||
// Show the form. Let user add / edit / delete.
|
||||
Result := frm.ShowModal;
|
||||
if Result = mrOk then
|
||||
begin
|
||||
// Copy back from dialog
|
||||
Project1.BuildModes.Assign(frm.fBuildModes, True);
|
||||
// Switch
|
||||
Project1.ActiveBuildModeID:=frm.fActiveBuildMode.Identifier;
|
||||
IncreaseBuildMacroChangeStamp;
|
||||
// Load options
|
||||
OnLoadIDEOptionsHook(Nil, Project1.CompilerOptions);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure SwitchBuildMode(aBuildModeID: string);
|
||||
begin
|
||||
OnSaveIDEOptionsHook(Nil, Project1.CompilerOptions); // Save changes
|
||||
Project1.ActiveBuildModeID := aBuildModeID; // Switch
|
||||
IncreaseBuildMacroChangeStamp;
|
||||
OnLoadIDEOptionsHook(Nil, Project1.CompilerOptions); // Load options
|
||||
end;
|
||||
|
||||
procedure UpdateBuildModeCombo(aCombo: TComboBox);
|
||||
var
|
||||
i, ActiveIndex: Integer;
|
||||
@ -117,11 +129,6 @@ begin
|
||||
aCombo.ItemIndex := ActiveIndex;
|
||||
end;
|
||||
|
||||
procedure SetActiveBuildModeID(aID: string);
|
||||
begin
|
||||
Project1.ActiveBuildModeID := aID;
|
||||
end;
|
||||
|
||||
{ TBuildModesForm }
|
||||
|
||||
constructor TBuildModesForm.Create(AOwner: TComponent);
|
||||
@ -413,8 +420,8 @@ end;
|
||||
|
||||
procedure TBuildModesForm.SetShowSession(const AValue: boolean);
|
||||
begin
|
||||
if AValue=FShowSession then exit;
|
||||
FShowSession:=AValue;
|
||||
if AValue=fShowSession then exit;
|
||||
fShowSession:=AValue;
|
||||
DoShowSession;
|
||||
FillBuildModesGrid;
|
||||
end;
|
||||
@ -426,7 +433,7 @@ begin
|
||||
Grid:=BuildModesStringGrid;
|
||||
Grid.BeginUpdate;
|
||||
fModeActiveCol:=0;
|
||||
if FShowSession then
|
||||
if fShowSession then
|
||||
begin
|
||||
fModeInSessionCol:=1;
|
||||
fModeNameCol:=2;
|
||||
|
||||
@ -229,21 +229,32 @@ end;
|
||||
|
||||
procedure TIDEOptionsDialog.BuildModeComboBoxSelect(Sender: TObject);
|
||||
begin
|
||||
{$IFDEF NewBuildModeWindow}
|
||||
if BuildModeComboBox.Text = lisAllBuildModes then begin
|
||||
ShowMessage('This will allow changing all build modes at once. Not implemented yet.');
|
||||
BuildModeComboBox.ItemIndex := PrevComboIndex;
|
||||
end
|
||||
{$IFDEF NewBuildModeWindow}
|
||||
else
|
||||
SetActiveBuildModeID(BuildModeComboBox.Text);
|
||||
SwitchBuildMode(BuildModeComboBox.Text);
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TIDEOptionsDialog.BuildModeManageButtonClick(Sender: TObject);
|
||||
{$IFDEF NewBuildModeWindow}
|
||||
var
|
||||
frm: TBuildModesForm;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$IFDEF NewBuildModeWindow}
|
||||
if ShowBuildModesDlg = mrOK then begin
|
||||
UpdateBuildModeCombo(BuildModeComboBox);
|
||||
BuildModesManager.OnLoadIDEOptionsHook := @LoadIDEOptions;
|
||||
BuildModesManager.OnSaveIDEOptionsHook := @SaveIDEOptions;
|
||||
frm := TBuildModesForm.Create(nil);
|
||||
try
|
||||
if ShowBuildModesDlg(frm) = mrOK then begin
|
||||
UpdateBuildModeCombo(BuildModeComboBox);
|
||||
end;
|
||||
finally
|
||||
frm.Free;
|
||||
end;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
@ -5187,9 +5187,9 @@ begin
|
||||
FCompilerOptions:=FActiveBuildMode.CompilerOptions;
|
||||
FLazCompilerOptions:=FCompilerOptions;
|
||||
end else begin
|
||||
FMacroValues:=nil;
|
||||
FCompilerOptions:=nil;
|
||||
FLazCompilerOptions:=nil;
|
||||
FMacroValues:=nil;
|
||||
end;
|
||||
SessionModified:=true;
|
||||
if Self=Project1 then
|
||||
@ -5204,6 +5204,8 @@ begin
|
||||
begin
|
||||
if BuildModes[i].Identifier=aIdent then
|
||||
begin
|
||||
// Force setting active mode. Values may be assigned, looks like active mode
|
||||
ActiveBuildMode:=Nil; // is already set but it is not
|
||||
ActiveBuildMode:=BuildModes[i];
|
||||
Break;
|
||||
end;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user