lazarus/ide/buildlazdialog.pas
mattias 45be5148ad started gtk2 interface
git-svn-id: trunk@3695 -
2002-12-15 11:52:28 +00:00

701 lines
25 KiB
ObjectPascal

{
***************************************************************************
* *
* This source is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This code is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* A copy of the GNU General Public License is available on the World *
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
* obtain it by writing to the Free Software Foundation, *
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
***************************************************************************
Author: Mattias Gaertner
Abstract:
Defines the TBuildLazarusOptions which stores the settings for the
"Build Lazarus" function of the IDE.
TConfigureBuildLazarusDlg is used to edit TBuildLazarusOptions.
The BuildLazarus function will build the lazarus parts.
}
unit BuildLazDialog;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, StdCtrls, ExtCtrls, Buttons, LResources,
Laz_XMLCfg, ExtToolDialog, ExtToolEditDlg, TransferMacros, LazConf;
type
TMakeMode = (mmNone, mmBuild, mmCleanBuild);
TLCLPlatform = (lpGtk, lpGtk2, lpGnome, lpWin32);
TBuildLazarusOptions = class
private
fBuildJITForm: TMakeMode;
fBuildLCL: TMakeMode;
fBuildComponents: TMakeMode;
fBuildSynEdit: TMakeMode;
fBuildCodeTools: TMakeMode;
fBuildIDE: TMakeMode;
fBuildExamples: TMakeMode;
fCleanAll: boolean;
fMakeFilename: string;
fExtraOptions: string;
fTargetOS: string;
fLCLPlatform: TLCLPlatform;
public
constructor Create;
procedure Load(XMLConfig: TXMLConfig; const Path: string);
procedure Save(XMLConfig: TXMLConfig; const Path: string);
property BuildLCL: TMakeMode read fBuildLCL write fBuildLCL;
property BuildComponents: TMakeMode
read fBuildComponents write fBuildComponents;
property BuildSynEdit: TMakeMode read fBuildSynEdit write fBuildSynEdit;
property BuildCodeTools: TMakeMode read fBuildCodeTools write fBuildCodeTools;
property BuildJITForm: TMakeMode read fBuildJITForm write fBuildJITForm;
property BuildIDE: TMakeMode read fBuildIDE write fBuildIDE;
property BuildExamples: TMakeMode read fBuildExamples write fBuildExamples;
property CleanAll: boolean read fCleanAll write fCleanAll;
property MakeFilename: string read fMakeFilename write fMakeFilename;
property ExtraOptions: string read fExtraOptions write fExtraOptions;
property TargetOS: string read fTargetOS write fTargetOS;
property LCLPlatform: TLCLPlatform read fLCLPlatform write fLCLPlatform;
end;
TConfigureBuildLazarusDlg = class(TForm)
CleanAllCheckBox: TCheckBox;
BuildAllButton: TButton;
BuildLCLRadioGroup: TRadioGroup;
BuildComponentsRadioGroup: TRadioGroup;
BuildSynEditRadioGroup: TRadioGroup;
BuildCodeToolsRadioGroup: TRadioGroup;
BuildIDERadioGroup: TRadioGroup;
BuildExamplesRadioGroup: TRadioGroup;
BuildJITFormCheckBox: TCheckBox;
OptionsLabel: TLabel;
OptionsEdit: TEdit;
LCLInterfaceRadioGroup: TRadioGroup;
TargetOSLabel: TLabel;
TargetOSEdit: TEdit;
OkButton: TButton;
CancelButton: TButton;
procedure BuildAllButtonClick(Sender: TObject);
procedure ConfigureBuildLazarusDlgKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ConfigureBuildLazarusDlgResize(Sender: TObject);
procedure OkButtonClick(Sender: TObject);
procedure CancelButtonClick(Sender: TObject);
private
function MakeModeToInt(MakeMode: TMakeMode): integer;
function IntToMakeMode(i: integer): TMakeMode;
public
procedure Load(Options: TBuildLazarusOptions);
procedure Save(Options: TBuildLazarusOptions);
constructor Create(AnOwner: TComponent); override;
end;
function ShowConfigureBuildLazarusDlg(
Options: TBuildLazarusOptions): TModalResult;
function BuildLazarus(Options: TBuildLazarusOptions;
ExternalTools: TExternalToolList; Macros: TTransferMacroList): TModalResult;
implementation
uses
LCLType;
const
MakeModeNames: array[TMakeMode] of string = (
'None', 'Build', 'Clean+Build'
);
LCLPlatformNames: array[TLCLPlatform] of string = (
'gtk', 'gtk2', 'gnome', 'win32'
);
function StrToMakeMode(const s: string): TMakeMode;
begin
for Result:=Succ(mmNone) to High(TMakeMode) do
if AnsiCompareText(s,MakeModeNames[Result])=0 then exit;
Result:=mmNone;
end;
function StrToLCLPlatform(const s: string): TLCLPlatform;
begin
for Result:=Low(TLCLPlatform) to High(TLCLPlatform) do
if AnsiCompareText(s,LCLPlatformNames[Result])=0 then exit;
Result:=lpGtk;
end;
function ShowConfigureBuildLazarusDlg(
Options: TBuildLazarusOptions): TModalResult;
var ConfigBuildLazDlg: TConfigureBuildLazarusDlg;
begin
Result:=mrCancel;
ConfigBuildLazDlg:=TConfigureBuildLazarusDlg.Create(Application);
try
ConfigBuildLazDlg.Load(Options);
Result:=ConfigBuildLazDlg.ShowModal;
if Result=mrOk then
ConfigBuildLazDlg.Save(Options);
finally
ConfigBuildLazDlg.Free;
end;
Result:=mrOk;
end;
function BuildLazarus(Options: TBuildLazarusOptions;
ExternalTools: TExternalToolList; Macros: TTransferMacroList): TModalResult;
var
Tool: TExternalToolOptions;
procedure SetMakeParams(MakeMode: TMakeMode;
const ExtraOpts, TargetOS: string);
begin
if MakeMode=mmBuild then
Tool.CmdLineParams:='all'
else
Tool.CmdLineParams:='clean all';
if TargetOS<>'' then
Tool.CmdLineParams:= 'OS_TARGET='+ TargetOS+' '+Tool.CmdLineParams;
if ExtraOpts<>'' then
Tool.CmdLineParams:='OPT='''+ExtraOpts+''' '+Tool.CmdLineParams;
end;
function CreateJITFormOptions: string;
var
p, StartPos: integer;
begin
Result:=Options.ExtraOptions;
// delete profiler option
p:=Pos('-pg',Result);
if (p>0)
and ((p+3>length(Result)) or (Result[p+3]=' ')) // option end
and ((p=1) or (Result[p-1]=' ')) then begin
// profiler option found
StartPos:=p;
while (StartPos>1) and (Result[StartPos-1]=' ') do
dec(StartPos);
System.Delete(Result,StartPos,p-StartPos+3);
end;
end;
function DoBuildJITForm: TModalResult;
begin
// build IDE jitform
Tool.Title:='Build JITForm';
Tool.WorkingDirectory:='$(LazarusDir)/designer/jitform';
SetMakeParams(Options.BuildJITForm,CreateJITFormOptions,
Options.TargetOS);
Result:=ExternalTools.Run(Tool,Macros);
if Result<>mrOk then exit;
end;
begin
Result:=mrCancel;
Tool:=TExternalToolOptions.Create;
try
Tool.Filename:=Options.MakeFilename;
Tool.EnvironmentOverrides.Values['LCL_PLATFORM']:=
LCLPlatformNames[Options.LCLPlatform];
if not FileExists(Tool.Filename) then begin
Tool.Filename:=FindDefaultMakePath;
if not FileExists(Tool.Filename) then exit;
end;
Tool.ScanOutputForFPCMessages:=true;
Tool.ScanOutputForMakeMessages:=true;
if Options.CleanAll then begin
// clean lazarus source directories
Tool.Title:='Clean Lazarus Source';
Tool.WorkingDirectory:='$(LazarusDir)';
Tool.CmdLineParams:='cleanall';
Result:=ExternalTools.Run(Tool,Macros);
if Result<>mrOk then exit;
end;
if Options.BuildLCL<>mmNone then begin
// build lcl
Tool.Title:='Build LCL';
Tool.WorkingDirectory:='$(LazarusDir)/lcl';
SetMakeParams(Options.BuildLCL,Options.ExtraOptions,Options.TargetOS);
Result:=ExternalTools.Run(Tool,Macros);
if Result<>mrOk then exit;
end;
if Options.BuildComponents<>mmNone then begin
// build components
Tool.Title:='Build Component';
Tool.WorkingDirectory:='$(LazarusDir)/components';
SetMakeParams(Options.BuildComponents,Options.ExtraOptions,
Options.TargetOS);
Result:=ExternalTools.Run(Tool,Macros);
if Result<>mrOk then exit;
end else begin
if Options.BuildSynEdit<>mmNone then begin
// build SynEdit
Tool.Title:='Build SynEdit';
Tool.WorkingDirectory:='$(LazarusDir)/components/synedit';
SetMakeParams(Options.BuildSynEdit,Options.ExtraOptions,
Options.TargetOS);
Result:=ExternalTools.Run(Tool,Macros);
if Result<>mrOk then exit;
end;
if Options.BuildCodeTools<>mmNone then begin
// build CodeTools
Tool.Title:='Build CodeTools';
Tool.WorkingDirectory:='$(LazarusDir)/components/codetools';
SetMakeParams(Options.BuildCodeTools,Options.ExtraOptions,
Options.TargetOS);
Result:=ExternalTools.Run(Tool,Macros);
if Result<>mrOk then exit;
end;
end;
if Options.BuildJITForm<>mmNone then begin
Result:=DoBuildJITForm;
if Result<>mrOk then exit;
end;
if Options.BuildIDE<>mmNone then begin
// build IDE
Tool.Title:='Build IDE';
Tool.WorkingDirectory:='$(LazarusDir)';
if Options.ExtraOptions<>'' then
Tool.CmdLineParams:='OPT='''+Options.ExtraOptions+''' '
else
Tool.CmdLineParams:='';
if Options.TargetOS<>'' then
Tool.CmdLineParams:= 'OS_TARGET='+Options.TargetOS+' '
+Tool.CmdLineParams;
if Options.BuildIDE=mmBuild then
Tool.CmdLineParams:='' + Tool.CmdLineParams+'ide'
else
Tool.CmdLineParams:='' + Tool.CmdLineParams+'cleanide ide';
Result:=ExternalTools.Run(Tool,Macros);
if Result<>mrOk then exit;
end;
if Options.BuildExamples<>mmNone then begin
// build Examples
Tool.Title:='Build Examples';
Tool.WorkingDirectory:='$(LazarusDir)/examples';
SetMakeParams(Options.BuildComponents,Options.ExtraOptions,
Options.TargetOS);
Result:=ExternalTools.Run(Tool,Macros);
if Result<>mrOk then exit;
end;
Result:=mrOk;
finally
Tool.Free;
end;
end;
{ TConfigureBuildLazarusDlg }
constructor TConfigureBuildLazarusDlg.Create(AnOwner: TComponent);
var
MakeMode: TMakeMode;
LCLInterface: TLCLPlatform;
begin
inherited Create(AnOwner);
if LazarusResources.Find(Classname)=nil then begin
Width:=480;
Height:=435;
Position:=poScreenCenter;
Caption:='Configure "Build Lazarus"';
OnResize:=@ConfigureBuildLazarusDlgResize;
OnKeyDown:=@ConfigureBuildLazarusDlgKeyDown;
CleanAllCheckBox:=TCheckBox.Create(Self);
with CleanAllCheckBox do begin
Parent:=Self;
Name:='CleanAllCheckBox';
SetBounds(10,10,Self.ClientWidth-150,20);
Caption:='Clean all';
Visible:=true;
end;
BuildAllButton:=TButton.Create(Self);
with BuildAllButton do begin
Name:='BuildAllButton';
Parent:=Self;
Left:=CleanAllCheckBox.Left;
Top:=CleanAllCheckBox.Top+CleanAllCheckBox.Height+5;
Width:=200;
Caption:='Set to "Build All"';
OnClick:=@BuildAllButtonClick;
Visible:=true;
end;
BuildLCLRadioGroup:=TRadioGroup.Create(Self);
with BuildLCLRadioGroup do begin
Parent:=Self;
Name:='BuildLCLRadioGroup';
SetBounds(10,BuildAllButton.Top+BuildAllButton.Height+5,
CleanAllCheckBox.Width,40);
Caption:='Build LCL';
for MakeMode:=Low(TMakeMode) to High(TMakeMode) do
Items.Add(MakeModeNames[MakeMode]);
Columns:=3;
Visible:=true;
end;
BuildComponentsRadioGroup:=TRadioGroup.Create(Self);
with BuildComponentsRadioGroup do begin
Parent:=Self;
Name:='BuildComponentsRadioGroup';
SetBounds(10,BuildLCLRadioGroup.Top+BuildLCLRadioGroup.Height+5,
BuildLCLRadioGroup.Width,BuildLCLRadioGroup.Height);
Caption:='Build Components (SynEdit, CodeTools)';
for MakeMode:=Low(TMakeMode) to High(TMakeMode) do
Items.Add(MakeModeNames[MakeMode]);
Columns:=3;
Visible:=true;
end;
BuildSynEditRadioGroup:=TRadioGroup.Create(Self);
with BuildSynEditRadioGroup do begin
Parent:=Self;
Name:='BuildSynEditRadioGroup';
SetBounds(10,
BuildComponentsRadioGroup.Top+BuildComponentsRadioGroup.Height+5,
BuildComponentsRadioGroup.Width,
BuildLCLRadioGroup.Height);
Caption:='Build SynEdit';
for MakeMode:=Low(TMakeMode) to High(TMakeMode) do
Items.Add(MakeModeNames[MakeMode]);
Columns:=3;
Visible:=true;
end;
BuildCodeToolsRadioGroup:=TRadioGroup.Create(Self);
with BuildCodeToolsRadioGroup do begin
Parent:=Self;
Name:='BuildCodeToolsRadioGroup';
SetBounds(10,BuildSynEditRadioGroup.Top+BuildSynEditRadioGroup.Height+5,
BuildLCLRadioGroup.Width,BuildLCLRadioGroup.Height);
Caption:='Build CodeTools';
for MakeMode:=Low(TMakeMode) to High(TMakeMode) do
Items.Add(MakeModeNames[MakeMode]);
Columns:=3;
Visible:=true;
end;
BuildIDERadioGroup:=TRadioGroup.Create(Self);
with BuildIDERadioGroup do begin
Parent:=Self;
Name:='BuildIDERadioGroup';
SetBounds(10,BuildCodeToolsRadioGroup.Top+BuildCodeToolsRadioGroup.Height+5,
BuildLCLRadioGroup.Width,BuildLCLRadioGroup.Height);
Caption:='Build IDE';
for MakeMode:=Low(TMakeMode) to High(TMakeMode) do
Items.Add(MakeModeNames[MakeMode]);
Columns:=3;
Visible:=true;
end;
BuildExamplesRadioGroup:=TRadioGroup.Create(Self);
with BuildExamplesRadioGroup do begin
Parent:=Self;
Name:='BuildExamplesRadioGroup';
SetBounds(10,BuildIDERadioGroup.Top+BuildIDERadioGroup.Height+5,
BuildLCLRadioGroup.Width,BuildLCLRadioGroup.Height);
Caption:='Build Examples';
for MakeMode:=Low(TMakeMode) to High(TMakeMode) do
Items.Add(MakeModeNames[MakeMode]);
Columns:=3;
Visible:=true;
end;
OptionsLabel:=TLabel.Create(Self);
with OptionsLabel do begin
Name:='OptionsLabel';
Parent:=Self;
SetBounds(10,
BuildExamplesRadioGroup.Top+BuildExamplesRadioGroup.Height+5,
80,Height);
Caption:='Options:';
Visible:=true;
end;
OptionsEdit:=TEdit.Create(Self);
with OptionsEdit do begin
Name:='OptionsEdit';
Parent:=Self;
SetBounds(OptionsLabel.Left+OptionsLabel.Width+5,
OptionsLabel.Top,
BuildExamplesRadioGroup.Width-OptionsLabel.Width-5,
Height);
Visible:=true;
end;
TargetOSLabel:=TLabel.Create(Self);
with TargetOSLabel do begin
Name:='TargetOSLabel';
Parent:=Self;
SetBounds(10,OptionsLabel.Top+OptionsLabel.Height+12,
80,Height);
Caption:='Target OS:';
Visible:=true;
end;
TargetOSEdit:=TEdit.Create(Self);
with TargetOSEdit do begin
Name:='TargetOSEdit';
Parent:=Self;
SetBounds(TargetOSLabel.Left+TargetOSLabel.Width+5,
TargetOSLabel.Top,
OptionsEdit.Width,
Height);
Visible:=true;
end;
LCLInterfaceRadioGroup:=TRadioGroup.Create(Self);
with LCLInterfaceRadioGroup do begin
Name:='LCLInterfaceRadioGroup';
Parent:=Self;
Left:=BuildLCLRadioGroup.Left+BuildLCLRadioGroup.Width+10;
Top:=BuildLCLRadioGroup.Top;
Width:=Parent.ClientHeight-Left-BuildLCLRadioGroup.Left;
Height:=120;
Caption:='LCL interface';
for LCLInterface:=Low(TLCLPlatform) to High(TLCLPlatform) do begin
Items.Add(LCLPlatformNames[LCLInterface]);
end;
Visible:=true;
end;
BuildJITFormCheckBox:=TCheckBox.Create(Self);
with BuildJITFormCheckBox do begin
Name:='BuildJITFormCheckBox';
Parent:=Self;
SetBounds(LCLInterfaceRadioGroup.Left,
LCLInterfaceRadioGroup.Top+LCLInterfaceRadioGroup.Height+50,
LCLInterfaceRadioGroup.Width,Height);
Caption:='Build JITForm';
Visible:=true;
end;
OkButton:=TButton.Create(Self);
with OkButton do begin
Parent:=Self;
Name:='OkButton';
SetBounds(Self.ClientWidth-180,Self.ClientHeight-38,80,25);
Caption:='Ok';
OnClick:=@OkButtonClick;
Visible:=true;
end;
CancelButton:=TButton.Create(Self);
with CancelButton do begin
Parent:=Self;
Name:='CancelButton';
SetBounds(Self.ClientWidth-90,OkButton.Top,OkButton.Width,OkButton.Height);
Caption:='Cancel';
OnClick:=@CancelButtonClick;
Visible:=true;
end;
end;
ConfigureBuildLazarusDlgResize(nil);
end;
procedure TConfigureBuildLazarusDlg.BuildAllButtonClick(Sender: TObject);
begin
CleanAllCheckBox.Checked:=true;
BuildLCLRadioGroup.ItemIndex:=1;
BuildComponentsRadioGroup.ItemIndex:=1;
BuildSynEditRadioGroup.ItemIndex:=0;
BuildCodeToolsRadioGroup.ItemIndex:=0;
BuildIDERadioGroup.ItemIndex:=1;
BuildJITFormCheckBox.Checked:=true;
BuildExamplesRadioGroup.ItemIndex:=1;
OptionsEdit.Text:='';
end;
procedure TConfigureBuildLazarusDlg.ConfigureBuildLazarusDlgKeyDown(
Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key=VK_Escape then
ModalResult:=mrCancel;
end;
procedure TConfigureBuildLazarusDlg.ConfigureBuildLazarusDlgResize(
Sender: TObject);
begin
CleanAllCheckBox.SetBounds(10,10,Self.ClientWidth-150,20);
BuildAllButton.SetBounds(CleanAllCheckBox.Left,
CleanAllCheckBox.Top+CleanAllCheckBox.Height+5,
200,BuildAllButton.Height);
BuildLCLRadioGroup.SetBounds(10,
BuildAllButton.Top+BuildAllButton.Height+5,
CleanAllCheckBox.Width,40);
BuildComponentsRadioGroup.SetBounds(10,
BuildLCLRadioGroup.Top+BuildLCLRadioGroup.Height+5,
BuildLCLRadioGroup.Width,BuildLCLRadioGroup.Height);
BuildSynEditRadioGroup.SetBounds(10,
BuildComponentsRadioGroup.Top+BuildComponentsRadioGroup.Height+5,
BuildComponentsRadioGroup.Width,BuildComponentsRadioGroup.Height);
BuildCodeToolsRadioGroup.SetBounds(10,
BuildSynEditRadioGroup.Top+BuildSynEditRadioGroup.Height+5,
BuildLCLRadioGroup.Width,BuildLCLRadioGroup.Height);
BuildIDERadioGroup.SetBounds(10,
BuildCodeToolsRadioGroup.Top+BuildCodeToolsRadioGroup.Height+5,
BuildLCLRadioGroup.Width,BuildLCLRadioGroup.Height);
BuildExamplesRadioGroup.SetBounds(10,
BuildIDERadioGroup.Top+BuildIDERadioGroup.Height+5,
BuildLCLRadioGroup.Width,BuildLCLRadioGroup.Height);
OptionsLabel.SetBounds(10,
BuildExamplesRadioGroup.Top+BuildExamplesRadioGroup.Height+5,
80,OptionsLabel.Height);
OptionsEdit.SetBounds(OptionsLabel.Left+OptionsLabel.Width+5,
OptionsLabel.Top,
BuildExamplesRadioGroup.Width-OptionsLabel.Width-5,
OptionsEdit.Height);
TargetOSLabel.SetBounds(10,
OptionsLabel.Top+OptionsLabel.Height+12,
80,TargetOsLabel.Height);
TargetOSEdit.SetBounds(TargetOSLabel.Left+TargetOSLabel.Width+5,
TargetOSLabel.Top,
OptionsEdit.Width,
TargetOSEdit.Height);
with LCLInterfaceRadioGroup do begin
Left:=BuildLCLRadioGroup.Left+BuildLCLRadioGroup.Width+10;
Top:=BuildLCLRadioGroup.Top;
Width:=Parent.ClientWidth-Left-10;
end;
with BuildJITFormCheckBox do
BuildJITFormCheckBox.SetBounds(LCLInterfaceRadioGroup.Left,
LCLInterfaceRadioGroup.Top+LCLInterfaceRadioGroup.Height+50,
LCLInterfaceRadioGroup.Width,Height);
OkButton.SetBounds(Self.ClientWidth-180,Self.ClientHeight-38,80,25);
CancelButton.SetBounds(Self.ClientWidth-90,OkButton.Top,
OkButton.Width,OkButton.Height);
end;
procedure TConfigureBuildLazarusDlg.OkButtonClick(Sender: TObject);
begin
ModalResult:=mrOk;
end;
procedure TConfigureBuildLazarusDlg.CancelButtonClick(Sender: TObject);
begin
ModalResult:=mrCancel;
end;
procedure TConfigureBuildLazarusDlg.Load(Options: TBuildLazarusOptions);
begin
CleanAllCheckBox.Checked:=Options.CleanAll;
BuildLCLRadioGroup.ItemIndex:=MakeModeToInt(Options.BuildLCL);
BuildComponentsRadioGroup.ItemIndex:=MakeModeToInt(Options.BuildComponents);
BuildSynEditRadioGroup.ItemIndex:=MakeModeToInt(Options.BuildSynEdit);
BuildCodeToolsRadioGroup.ItemIndex:=MakeModeToInt(Options.BuildCodeTools);
BuildIDERadioGroup.ItemIndex:=MakeModeToInt(Options.BuildIDE);
BuildExamplesRadioGroup.ItemIndex:=MakeModeToInt(Options.BuildExamples);
OptionsEdit.Text:=Options.ExtraOptions;
LCLInterfaceRadioGroup.ItemIndex:=ord(Options.LCLPlatform);
BuildJITFormCheckBox.Checked:=Options.BuildJITForm in [mmBuild, mmCleanBuild];
TargetOSEdit.Text:=Options.TargetOS;
end;
procedure TConfigureBuildLazarusDlg.Save(Options: TBuildLazarusOptions);
begin
if Options=nil then exit;
Options.CleanAll:=CleanAllCheckBox.Checked;
Options.BuildLCL:=IntToMakeMode(BuildLCLRadioGroup.ItemIndex);
Options.BuildComponents:=IntToMakeMode(BuildComponentsRadioGroup.ItemIndex);
Options.BuildSynEdit:=IntToMakeMode(BuildSynEditRadioGroup.ItemIndex);
Options.BuildCodeTools:=IntToMakeMode(BuildCodeToolsRadioGroup.ItemIndex);
Options.BuildIDE:=IntToMakeMode(BuildIDERadioGroup.ItemIndex);
Options.BuildExamples:=IntToMakeMode(BuildExamplesRadioGroup.ItemIndex);
Options.ExtraOptions:=OptionsEdit.Text;
Options.LCLPlatform:=TLCLPlatform(LCLInterfaceRadioGroup.ItemIndex);
if BuildJITFormCheckBox.Checked then
Options.BuildJITForm:=mmBuild
else
Options.BuildJITForm:=mmNone;
Options.TargetOS:=TargetOSEdit.Text;
end;
function TConfigureBuildLazarusDlg.MakeModeToInt(MakeMode: TMakeMode): integer;
begin
case MakeMode of
mmBuild: Result:=1;
mmCleanBuild: Result:=2;
else Result:=0;
end;
end;
function TConfigureBuildLazarusDlg.IntToMakeMode(i: integer): TMakeMode;
begin
case i of
1: Result:=mmBuild;
2: Result:=mmCleanBuild;
else Result:=mmNone;
end;
end;
{ TBuildLazarusOptions }
procedure TBuildLazarusOptions.Save(XMLConfig: TXMLConfig; const Path: string);
begin
XMLConfig.SetValue(Path+'BuildLCL/Value',MakeModeNames[fBuildLCL]);
XMLConfig.SetValue(Path+'BuildComponents/Value',MakeModeNames[fBuildComponents]);
XMLConfig.SetValue(Path+'BuildSynEdit/Value',MakeModeNames[fBuildSynEdit]);
XMLConfig.SetValue(Path+'BuildCodeTools/Value',MakeModeNames[fBuildCodeTools]);
XMLConfig.SetValue(Path+'BuildJITForm/Value',MakeModeNames[fBuildJITForm]);
XMLConfig.SetValue(Path+'BuildIDE/Value',MakeModeNames[fBuildIDE]);
XMLConfig.SetValue(Path+'BuildExamples/Value',MakeModeNames[fBuildExamples]);
XMLConfig.SetValue(Path+'CleanAll/Value',fCleanAll);
XMLConfig.SetValue(Path+'ExtraOptions/Value',fExtraOptions);
XMLConfig.SetValue(Path+'TargetOS/Value',fTargetOS);
XMLConfig.SetValue(Path+'MakeFilename/Value',fMakeFilename);
XMLConfig.SetValue(Path+'LCLPlatform/Value',LCLPlatformNames[fLCLPlatform]);
end;
procedure TBuildLazarusOptions.Load(XMLConfig: TXMLConfig; const Path: string);
begin
fBuildLCL:=StrToMakeMode(XMLConfig.GetValue(Path+'BuildLCL/Value',
MakeModeNames[fBuildLCL]));
fBuildComponents:=StrToMakeMode(XMLConfig.GetValue(Path+'BuildComponents/Value',
MakeModeNames[fBuildComponents]));
fBuildSynEdit:=StrToMakeMode(XMLConfig.GetValue(Path+'BuildSynEdit/Value',
MakeModeNames[fBuildSynEdit]));
fBuildCodeTools:=StrToMakeMode(XMLConfig.GetValue(Path+'BuildCodeTools/Value',
MakeModeNames[fBuildCodeTools]));
fBuildJITForm:=StrToMakeMode(XMLConfig.GetValue(Path+'BuildJITForm/Value',
MakeModeNames[fBuildJITForm]));
fBuildIDE:=StrToMakeMode(XMLConfig.GetValue(Path+'BuildIDE/Value',
MakeModeNames[fBuildIDE]));
fBuildExamples:=StrToMakeMode(XMLConfig.GetValue(Path+'BuildExamples/Value',
MakeModeNames[fBuildExamples]));
fCleanAll:=XMLConfig.GetValue(Path+'CleanAll/Value',fCleanAll);
fExtraOptions:=XMLConfig.GetValue(Path+'ExtraOptions/Value',fExtraOptions);
fTargetOS:=XMLConfig.GetValue(Path+'TargetOS/Value','');
fMakeFilename:=XMLConfig.GetValue(Path+'MakeFilename/Value',fMakeFilename);
fLCLPlatform:=StrToLCLPlatform(XMLConfig.GetValue(Path+'LCLPlatform/Value',
LCLPlatformNames[fLCLPlatform]));
end;
constructor TBuildLazarusOptions.Create;
begin
inherited Create;
fMakeFilename:='';
fLCLPlatform:=lpGtk;
end;
end.