⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debugbreakpointproperties.pas

📁 一个不出名的GBA模拟器
💻 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 + -