📄 debugbreakpointproperties.pas
字号:
//////////////////////////////////////////////////////////////////////
// //
// debugBreakpointProperties.pas: Breakpoint editor dialog //
// //
// The contents of this file are subject to the Bottled Light //
// Public License Version 1.0 (the "License"); you may not use this //
// file except in compliance with the License. You may obtain a //
// copy of the License at http://www.bottledlight.com/BLPL/ //
// //
// Software distributed under the License is distributed on an //
// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or //
// implied. See the License for the specific language governing //
// rights and limitations under the License. //
// //
// The Original Code is the Mappy VM User Interface, released //
// April 1st, 2003. The Initial Developer of the Original Code is //
// Bottled Light, Inc. Portions created by Bottled Light, Inc. are //
// Copyright (C) 2001-2003 Bottled Light, Inc. All Rights Reserved. //
// //
// Author(s): //
// Michael Noland (joat), michael@bottledlight.com //
// //
// Changelog: //
// 1.0: First public release (April 1st, 2003) //
// //
// Notes: //
// None at present. //
// //
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
unit debugBreakpointProperties; //////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
interface ////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, dbgBreakpoints, nexus, cpuObservers;
//////////////////////////////////////////////////////////////////////
type
TdbgBreakpointProperties = class(TForm)
lCondition: TLabel;
lPassCount: TLabel;
bpAction: TGroupBox;
eLogMessage: TEdit;
cBreakExecution: TCheckBox;
bOK: TButton;
bHelp: TButton;
bpEnabled: TCheckBox;
rbAddress: TRadioButton;
rbSource: TRadioButton;
lType: TLabel;
eAddress: TEdit;
lAddress: TLabel;
sourcePanel: TPanel;
lSourceLine: TLabel;
eSourceLine: TEdit;
cbFilenameList: TComboBox;
lSourceFilename: TLabel;
ePassCount: TEdit;
eCondition: TEdit;
lLogMessage: TLabel;
procedure FinishedEditing(Sender: TObject);
procedure ShowHelp(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ToggleBreakOnTrigger(Sender: TObject);
procedure ChangeLogMessage(Sender: TObject);
procedure ToggleBreakpointEnabled(Sender: TObject);
procedure ChangePassCount(Sender: TObject);
procedure ChangeCondition(Sender: TObject);
procedure ChangeSourceLine(Sender: TObject);
procedure ChangeFilename(Sender: TObject);
procedure ChangeAddress(Sender: TObject);
procedure ChangeType(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure eAddressKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
bp: TBreakpoint;
end;
//////////////////////////////////////////////////////////////////////
var
dbgBreakpointProperties: TdbgBreakpointProperties;
//////////////////////////////////////////////////////////////////////
implementation ///////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
{$R *.DFM}
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.FinishedEditing(Sender: TObject);
begin
Close;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ShowHelp(Sender: TObject);
begin
ShowWebPage(helpFiles.strings[HelpContext-1]);
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.FormShow(Sender: TObject);
begin
rbAddress.Checked := true;
eAddress.Text := '$' + IntToHex(bp.address, 8);
cbFilenameList.Text := bp.filename;
eSourceLine.Text := IntToStr(bp.line);
eCondition.Text := bp.condition;
if bp.passCount > 0 then ePassCount.Text := IntToStr(bp.passCount) else ePassCount.Text := '';
cBreakExecution.Checked := bp.breakExecution;
eLogMessage.Text := bp.logMessage;
bpEnabled.Checked := bp.enabled;
// Load the translation
LoadTranslation(self, translation);
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.FormClose(Sender: TObject; var Action: TCloseAction);
begin
bp.address := StrToIntDef(eAddress.Text, vmCurrentPC);
Action := caFree;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ToggleBreakOnTrigger(Sender: TObject);
begin
bp.breakExecution := cBreakExecution.Checked;
UpdateObservers;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ChangeLogMessage(Sender: TObject);
begin
bp.logMessage := eLogMessage.Text;
UpdateObservers;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ToggleBreakpointEnabled(Sender: TObject);
begin
bp.enabled := bpEnabled.Checked;
UpdateObservers;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ChangePassCount(Sender: TObject);
begin
bp.passCount := StrToIntDef(ePassCount.Text, 0);
if bp.passCount > 0 then
ePassCount.Text := IntToStr(bp.passCount)
else
ePassCount.Text := '';
UpdateObservers;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ChangeCondition(Sender: TObject);
begin
bp.condition := eCondition.Text;
UpdateObservers;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ChangeSourceLine(Sender: TObject);
begin
bp.line := StrToIntDef(eSourceLine.Text, 1);
eSourceLine.Text := IntToStr(bp.line);
UpdateObservers;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ChangeFilename(Sender: TObject);
begin
bp.filename := cbFilenameList.Text;
UpdateObservers;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ChangeAddress(Sender: TObject);
begin
bp.address := StrToIntDef(eAddress.Text, vmCurrentPC);
eAddress.Text := '$' + IntToHex(bp.address, 8);
UpdateObservers;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.ChangeType(Sender: TObject);
begin
sourcePanel.Visible := rbSource.Checked;
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.FormCreate(Sender: TObject);
begin
HelpContext := LinkHelp('breakpoints.html#props');
end;
//////////////////////////////////////////////////////////////////////
procedure TdbgBreakpointProperties.eAddressKeyPress(Sender: TObject; var Key: Char);
begin
if Key in [#10, #13] then begin
Key := #0;
ChangeAddress(Sender);
end;
end;
//////////////////////////////////////////////////////////////////////
end.
//////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -