lazarus/ide/frames/project_valconv_options.pas

121 lines
3.4 KiB
ObjectPascal

unit Project_ValConv_Options;
{$mode objfpc}{$H+}
interface
uses
SysUtils, Classes,
// LCL
Forms, ExtCtrls, StdCtrls,
// LazControls
DividerBevel,
// BuildIntf
IDEOptionsIntf,
// IdeIntf
IDEOptEditorIntf,
// DebuggerIntf
DbgIntfDebuggerBase,
// IdeDebugger
IdeDebuggerStringConstants, IdeDbgValueConverterSettingsFrame, IdeDebuggerOpts,
IdeDebuggerBackendValueConv, ProjectDebugLink,
// IDE
Project, DebugManager, LazarusIDEStrConsts;
type
{ TIdeProjectValConvOptionsFrame }
TIdeProjectValConvOptionsFrame = class(TAbstractIDEOptionsEditor)
chkUseProjList: TCheckBox;
chkUseGlobalList: TCheckBox;
chkStoreInSession: TCheckBox;
DbgValConvFrame1: TIdeDbgValConvFrame;
DividerBevel1: TDividerBevel;
Panel1: TPanel;
private
FValConvList: TIdeDbgValueConvertSelectorList;
public
destructor Destroy; override;
function GetTitle: String; override;
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override;
procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override;
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
end;
implementation
{$R *.lfm}
{ TIdeProjectValConvOptionsFrame }
destructor TIdeProjectValConvOptionsFrame.Destroy;
begin
inherited Destroy;
FValConvList.Free;
end;
function TIdeProjectValConvOptionsFrame.GetTitle: String;
begin
Result := dlgBackConvOptDebugOptions;
end;
procedure TIdeProjectValConvOptionsFrame.Setup(
ADialog: TAbstractOptionsEditorDialog);
begin
DbgValConvFrame1.Setup;
chkStoreInSession.Caption := drsStoreConverterConfigInSes;
chkStoreInSession.Hint := drsThisOnlyAffectsTheListOfC;
chkUseGlobalList.Caption := drsUseTheIDEGlobalListOfConv;
chkUseProjList.Caption := drsUseTheProjectListOfConver;
end;
procedure TIdeProjectValConvOptionsFrame.ReadSettings(
AOptions: TAbstractIDEOptions);
begin
if FValConvList = nil then
FValConvList := TIdeDbgValueConvertSelectorList.Create;
FValConvList.Assign(DbgProjectLink.BackendConverterConfig);
FValConvList.Changed := False;
DbgValConvFrame1.ValConvList := FValConvList;
chkStoreInSession.Checked := DbgProjectLink.StoreBackendConverterConfigInSession;
chkUseGlobalList.Checked := DbgProjectLink.UseBackendConverterFromIDE;
chkUseProjList.Checked := DbgProjectLink.UseBackendConverterFromProject;
end;
procedure TIdeProjectValConvOptionsFrame.WriteSettings(
AOptions: TAbstractIDEOptions);
var
HasChg: Boolean;
begin
DbgValConvFrame1.SaveCurrent;
HasChg :=
(DbgProjectLink.UseBackendConverterFromIDE <> chkUseGlobalList.Checked) or
(DbgProjectLink.UseBackendConverterFromProject <> chkUseProjList.Checked) or
FValConvList.Changed;
DbgProjectLink.StoreBackendConverterConfigInSession := chkStoreInSession.Checked;
DbgProjectLink.UseBackendConverterFromIDE := chkUseGlobalList.Checked;
DbgProjectLink.UseBackendConverterFromProject := chkUseProjList.Checked;
if FValConvList.Changed then begin
DbgProjectLink.BackendConverterConfig.Assign(FValConvList);
DbgProjectLink.BackendConverterConfig.Changed := True;
end;
end;
class function TIdeProjectValConvOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TProjectIDEOptions;
end;
initialization
RegisterIDEOptionsEditor(GroupProject, TIdeProjectValConvOptionsFrame, ProjectOptionsDbgValueConvert, ProjectOptionsDebug);
end.