lazarus/debugger/frames/debugger_signals_options.pas

130 lines
4.6 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
* *
***************************************************************************
}
unit debugger_signals_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
// LCL
Forms, StdCtrls, Menus, ComCtrls, Buttons,
// IdeIntf
IdeIntfStrConsts, IDEOptionsIntf, IDEOptEditorIntf, IDEImagesIntf,
// IDE
LazarusIDEStrConsts, IdeDebuggerStringConstants, Debugger, IdeDebuggerOpts, BaseDebugManager;
type
{ TDebuggerSignalsOptions }
TDebuggerSignalsOptions = class(TAbstractIDEOptionsEditor)
cmdSignalAdd: TBitBtn;
cmdSignalRemove: TBitBtn;
gbSignals: TGroupBox;
lvSignals: TListView;
mnuHandledByProgram: TMenuItem;
mnuiHandledByDebugger: TMenuItem;
mnuResumeHandled: TMenuItem;
mnuResumeUnhandled: TMenuItem;
N1: TMenuItem;
popSignal: TPopupMenu;
private
procedure AddSignalLine(const ASignal: TIDESignal);
public
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}
const
HANDLEDBY_CAPTION: array [Boolean] of String = ('Program', 'Debugger');
RESUME_CAPTION: array[Boolean] of String = ('Unhandled', 'Handled');
{ TDebuggerSignalsOptions }
procedure TDebuggerSignalsOptions.AddSignalLine(const ASignal: TIDESignal);
var
Item: TListItem;
begin
Item := lvSignals.Items.Add;
Item.Caption := ASignal.Name;
Item.SubItems.Add(IntToStr(ASignal.ID));
Item.SubItems.Add(HANDLEDBY_CAPTION[ASignal.HandledByDebugger]);
Item.SubItems.Add(RESUME_CAPTION[ASignal.ResumeHandled]);
Item.Data := ASignal;
end;
function TDebuggerSignalsOptions.GetTitle: String;
begin
Result := lisDebugOptionsFrmOSExceptions;
end;
procedure TDebuggerSignalsOptions.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
gbSignals.Caption := lisDebugOptionsFrmSignals;
lvSignals.Column[0].Caption := lisName;
lvSignals.Column[1].Caption := lisId;
lvSignals.Column[2].Caption := lisDebugOptionsFrmHandledBy;
lvSignals.Column[3].Caption := lisDebugOptionsFrmResume;
cmdSignalAdd.Caption := lisAdd;
cmdSignalRemove.Caption := lisRemove;
IDEImages.AssignImage(cmdSignalAdd, 'laz_add');
IDEImages.AssignImage(cmdSignalRemove, 'laz_delete');
mnuHandledByProgram.Caption := lisDebugOptionsFrmHandledByProgram;
mnuiHandledByDebugger.Caption := lisDebugOptionsFrmHandledByDebugger;
mnuResumeHandled.Caption := lisDebugOptionsFrmResumeHandled;
mnuResumeUnhandled.Caption := lisDebugOptionsFrmResumeUnhandled;
end;
procedure TDebuggerSignalsOptions.ReadSettings(AOptions: TAbstractIDEOptions);
var
n: integer;
begin
for n := 0 to DebugBoss.Signals.Count - 1 do
AddSignalLine(DebugBoss.Signals[n]);
cmdSignalAdd.Enabled := False; // not implemented
cmdSignalRemove.Enabled := False; // not implemented
end;
procedure TDebuggerSignalsOptions.WriteSettings(AOptions: TAbstractIDEOptions);
begin
// todo
end;
class function TDebuggerSignalsOptions.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TDebuggerOptions;
end;
initialization
//RegisterIDEOptionsEditor(GroupDebugger, TDebuggerSignalsOptions, DbgOptionsSignals);
end.