diff --git a/ide/compileroptionsdlg.pp b/ide/compileroptionsdlg.pp index a8fee69696..0c7e7011ac 100644 --- a/ide/compileroptionsdlg.pp +++ b/ide/compileroptionsdlg.pp @@ -1732,6 +1732,7 @@ begin {$ENDIF} fBuildModeFrame:=TBuildModesEditorFrame.Create(Self); + fBuildModeFrame.Setup(nil); with fBuildModeFrame do begin Name:='fBuildModeFrame'; Align:=alClient; diff --git a/ide/frames/buildmodeseditor.lfm b/ide/frames/buildmodeseditor.lfm index 8428d54e26..3ff62ed557 100644 --- a/ide/frames/buildmodeseditor.lfm +++ b/ide/frames/buildmodeseditor.lfm @@ -5,7 +5,6 @@ object BuildModesEditorFrame: TBuildModesEditorFrame Width = 419 ClientHeight = 306 ClientWidth = 419 - OnClick = FrameClick TabOrder = 0 DesignLeft = 460 DesignTop = 269 diff --git a/ide/frames/buildmodeseditor.lrs b/ide/frames/buildmodeseditor.lrs index a1bca582a6..4e84309fd4 100644 --- a/ide/frames/buildmodeseditor.lrs +++ b/ide/frames/buildmodeseditor.lrs @@ -3,23 +3,22 @@ LazarusResources.Add('TBuildModesEditorFrame','FORMDATA',[ 'TPF0'#22'TBuildModesEditorFrame'#21'BuildModesEditorFrame'#4'Left'#2#0#6'Hei' +'ght'#3'2'#1#3'Top'#2#0#5'Width'#3#163#1#12'ClientHeight'#3'2'#1#11'ClientWi' - +'dth'#3#163#1#7'OnClick'#7#10'FrameClick'#8'TabOrder'#2#0#10'DesignLeft'#3 - +#204#1#9'DesignTop'#3#13#1#0#6'TPanel'#17'BuildModeBtnPanel'#4'Left'#2#0#6'H' - +'eight'#2#31#3'Top'#2#0#5'Width'#3#163#1#5'Align'#7#5'alTop'#8'AutoSize'#9#12 - +'ClientHeight'#2#31#11'ClientWidth'#3#163#1#8'TabOrder'#2#0#0#12'TSpeedButto' - +'n'#23'NewBuildModeSpeedButton'#4'Left'#2#1#6'Height'#2#29#3'Top'#2#1#5'Widt' - +'h'#2#23#5'Align'#7#6'alLeft'#8'AutoSize'#9#5'Color'#7#9'clBtnFace'#9'NumGly' - +'phs'#2#0#7'OnClick'#7#23'NewBuildModeButtonClick'#8'ShowHint'#9#14'ParentSh' - +'owHint'#8#0#0#12'TSpeedButton'#23'NewBuildFlagSpeedButton'#4'Left'#2#24#6'H' - +'eight'#2#29#3'Top'#2#1#5'Width'#2#23#5'Align'#7#6'alLeft'#8'AutoSize'#9#5'C' - +'olor'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7#23'NewBuildFlagButtonCli' - +'ck'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#22'DeleteBMRowS' - +'peedButton'#4'Left'#2'/'#6'Height'#2#29#3'Top'#2#1#5'Width'#2#23#5'Align'#7 - +#6'alLeft'#8'AutoSize'#9#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick' - +#7#22'DeleteBMRowButtonClick'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12'TSpe' - +'edButton'#24'NewBuildGroupSpeedButton'#4'Left'#2'F'#6'Height'#2#29#3'Top'#2 - +#1#5'Width'#2#23#5'Align'#7#6'alLeft'#8'AutoSize'#9#5'Color'#7#9'clBtnFace'#9 - +'NumGlyphs'#2#0#7'OnClick'#7#24'NewBuildGroupButtonClick'#8'ShowHint'#9#14'P' - +'arentShowHint'#8#0#0#0#10'TPopupMenu'#19'BuildModesPopupMenu'#4'left'#2'S'#3 - +'top'#2's'#0#0#0 + +'dth'#3#163#1#8'TabOrder'#2#0#10'DesignLeft'#3#204#1#9'DesignTop'#3#13#1#0#6 + +'TPanel'#17'BuildModeBtnPanel'#4'Left'#2#0#6'Height'#2#31#3'Top'#2#0#5'Width' + +#3#163#1#5'Align'#7#5'alTop'#8'AutoSize'#9#12'ClientHeight'#2#31#11'ClientWi' + +'dth'#3#163#1#8'TabOrder'#2#0#0#12'TSpeedButton'#23'NewBuildModeSpeedButton' + +#4'Left'#2#1#6'Height'#2#29#3'Top'#2#1#5'Width'#2#23#5'Align'#7#6'alLeft'#8 + +'AutoSize'#9#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7#23'NewBui' + +'ldModeButtonClick'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton' + +#23'NewBuildFlagSpeedButton'#4'Left'#2#24#6'Height'#2#29#3'Top'#2#1#5'Width' + +#2#23#5'Align'#7#6'alLeft'#8'AutoSize'#9#5'Color'#7#9'clBtnFace'#9'NumGlyphs' + +#2#0#7'OnClick'#7#23'NewBuildFlagButtonClick'#8'ShowHint'#9#14'ParentShowHin' + +'t'#8#0#0#12'TSpeedButton'#22'DeleteBMRowSpeedButton'#4'Left'#2'/'#6'Height' + +#2#29#3'Top'#2#1#5'Width'#2#23#5'Align'#7#6'alLeft'#8'AutoSize'#9#5'Color'#7 + +#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7#22'DeleteBMRowButtonClick'#8'Sho' + +'wHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#24'NewBuildGroupSpeedBut' + +'ton'#4'Left'#2'F'#6'Height'#2#29#3'Top'#2#1#5'Width'#2#23#5'Align'#7#6'alLe' + +'ft'#8'AutoSize'#9#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7#24 + +'NewBuildGroupButtonClick'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#0#10'TPopu' + +'pMenu'#19'BuildModesPopupMenu'#4'left'#2'S'#3'top'#2's'#0#0#0 ]); diff --git a/ide/frames/buildmodeseditor.pas b/ide/frames/buildmodeseditor.pas index 1b30ea2bd5..ad556dedff 100644 --- a/ide/frames/buildmodeseditor.pas +++ b/ide/frames/buildmodeseditor.pas @@ -28,7 +28,7 @@ uses Math, Classes, SysUtils, LCLProc, Controls, FileUtil, LResources, Forms, Grids, Graphics, Menus, ComCtrls, Dialogs, AvgLvlTree, DefineTemplates, StdCtrls, GraphMath, ExtCtrls, Buttons, - ProjectIntf, IDEImagesIntf, + ProjectIntf, IDEImagesIntf, IDEOptionsIntf, PathEditorDlg, Project, PackageSystem, LazarusIDEStrConsts, CompilerOptions, IDEProcs; @@ -106,7 +106,7 @@ type { TBuildModesEditorFrame } - TBuildModesEditorFrame = class(TFrame) + TBuildModesEditorFrame = class(TAbstractIDEOptionsEditor) BuildModesPopupMenu: TPopupMenu; BuildModeBtnPanel: TPanel; NewBuildModeSpeedButton: TSpeedButton; @@ -114,7 +114,6 @@ type DeleteBMRowSpeedButton: TSpeedButton; NewBuildGroupSpeedButton: TSpeedButton; procedure DeleteBMRowButtonClick(Sender: TObject); - procedure FrameClick(Sender: TObject); procedure GridSelection(Sender: TObject; aCol, aRow: Integer); procedure NewBuildFlagButtonClick(Sender: TObject); procedure NewBuildGroupButtonClick(Sender: TObject); @@ -123,8 +122,11 @@ type FGrid: TBuildModesGrid; procedure UpdateButtons; public - constructor Create(TheOwner: TComponent); override; - destructor Destroy; override; + function GetTitle: String; override; + procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure ReadSettings(AOptions: TAbstractIDEOptions); override; + procedure WriteSettings(AOptions: TAbstractIDEOptions); override; + class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; procedure SetGraph(Graph: TBuildModeGraph); property Grid: TBuildModesGrid read FGrid; end; @@ -1013,6 +1015,11 @@ begin DeleteBMRowSpeedButton.Hint:=lisDeleteBuildMode; end; +function TBuildModesEditorFrame.GetTitle: String; +begin + Result := 'Build modes'; +end; + procedure TBuildModesEditorFrame.NewBuildFlagButtonClick(Sender: TObject); begin Grid.InsertNewBuildFlagBehind; @@ -1029,20 +1036,14 @@ begin Grid.DeleteSelectedModeRow; end; -procedure TBuildModesEditorFrame.FrameClick(Sender: TObject); -begin - -end; - procedure TBuildModesEditorFrame.GridSelection(Sender: TObject; aCol, aRow: Integer); begin UpdateButtons; end; -constructor TBuildModesEditorFrame.Create(TheOwner: TComponent); +procedure TBuildModesEditorFrame.Setup(ADialog: TAbstractOptionsEditorDialog); begin - inherited Create(TheOwner); FGrid:=TBuildModesGrid.Create(Self); with Grid do begin Name:='Grid'; @@ -1065,9 +1066,19 @@ begin UpdateButtons; end; -destructor TBuildModesEditorFrame.Destroy; +procedure TBuildModesEditorFrame.ReadSettings(AOptions: TAbstractIDEOptions); begin - inherited Destroy; + SetGraph((AOptions as TProjectCompilerOptions).BuildModes); +end; + +procedure TBuildModesEditorFrame.WriteSettings(AOptions: TAbstractIDEOptions); +begin + // todo: +end; + +class function TBuildModesEditorFrame.SupportedOptionsClass: TAbstractIDEOptionsClass; +begin + Result := TProjectCompilerOptions; end; procedure TBuildModesEditorFrame.SetGraph(Graph: TBuildModeGraph); @@ -1078,6 +1089,8 @@ end; initialization {$I buildmodeseditor.lrs} + RegisterIDEOptionsEditor(GroupCompiler, TBuildModesEditorFrame, + CompilerOptionsBuildModes); end. diff --git a/ide/main.pp b/ide/main.pp index 81f9fb7203..e507a1b8f9 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -129,6 +129,7 @@ uses compiler_path_options, compiler_parsing_options, compiler_codegen_options, compiler_linking_options, compiler_verbosity_options, compiler_messages_options, compiler_other_options, compiler_inherited_options, compiler_compilation_options, + BuildModesEditor, PublishModule, EnvironmentOpts, TransferMacros, KeyMapping, IDETranslations, IDEProcs, ExtToolDialog, ExtToolEditDlg, OutputFilter, JumpHistoryView,