////////////////////////////////////////////////////////////////////// // // // 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. //////////////////////////////////////////////////////////////////////