////////////////////////////////////////////////////////////////////// // // // debugWatchProperties.pas: Watch 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 debugWatchProperties; /////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// interface //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, nexus, dbgWatches, cpuObservers; ////////////////////////////////////////////////////////////////////// type TdbgWatchProperties = class(TForm) lExpression: TLabel; eExpression: TEdit; bOK: TButton; bHelp: TButton; cEnabled: TCheckBox; rgType: TRadioGroup; displayModeGroup: TGroupBox; cbDisplayType: TComboBox; cIsArray: TCheckBox; eArraySize: TEdit; procedure FinishedEditing(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ShowHelp(Sender: TObject); procedure ChangeType(Sender: TObject); procedure cbDisplayTypeChange(Sender: TObject); procedure cIsArrayClick(Sender: TObject); procedure eArraySizeChange(Sender: TObject); procedure cEnabledClick(Sender: TObject); procedure eExpressionChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure eExpressionKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } watch: TWatch; end; ////////////////////////////////////////////////////////////////////// var dbgWatchProperties: TdbgWatchProperties; ////////////////////////////////////////////////////////////////////// implementation /////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// {$R *.DFM} ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.FinishedEditing(Sender: TObject); begin Close; end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.FormShow(Sender: TObject); begin eExpression.Text := watch.expression; rgType.ItemIndex := Ord(watch.watchType); cbDisplayType.Visible := rgType.ItemIndex < 3; cIsArray.Checked := watch.arraySize > 0; eArraySize.Text := IntToStr(watch.arraySize); cbDisplayType.ItemIndex := Ord(watch.watchMode); cEnabled.Checked := watch.enabled; // Load the translation LoadTranslation(self, translation); end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.FormClose(Sender: TObject; var Action: TCloseAction); begin watch.expression := eExpression.Text; Action := caFree; end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.ShowHelp(Sender: TObject); begin ShowWebPage(helpFiles.strings[HelpContext-1]); end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.ChangeType(Sender: TObject); begin watch.watchType := TWatchType(rgType.ItemIndex); cbDisplayType.Visible := rgType.ItemIndex < 3; UpdateObservers; end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.cbDisplayTypeChange(Sender: TObject); begin if cbDisplayType.ItemIndex < 0 then cbDisplayType.ItemIndex := 0; watch.watchMode := TWatchDisplayMode(cbDisplayType.ItemIndex); UpdateObservers; end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.cIsArrayClick(Sender: TObject); begin eArraySize.Enabled := cIsArray.Checked; if cIsArray.Checked then begin watch.arraySize := StrToIntDef(eArraySize.Text, 0); eArraySize.Text := IntToStr(watch.arraySize); end else watch.arraySize := 0; UpdateObservers; end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.eArraySizeChange(Sender: TObject); begin if cIsArray.Checked then begin watch.arraySize := StrToIntDef(eArraySize.Text, 0); eArraySize.Text := IntToStr(watch.arraySize); UpdateObservers; end; end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.cEnabledClick(Sender: TObject); begin watch.enabled := cEnabled.Checked; UpdateObservers; end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.eExpressionChange(Sender: TObject); begin watch.expression := eExpression.Text; UpdateObservers; end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.FormCreate(Sender: TObject); begin HelpContext := LinkHelp('watches.html#props'); end; ////////////////////////////////////////////////////////////////////// procedure TdbgWatchProperties.eExpressionKeyPress(Sender: TObject; var Key: Char); begin if Key in [#10, #13] then begin Key := #0; eExpressionChange(Sender); end; end; ////////////////////////////////////////////////////////////////////// end. //////////////////////////////////////////////////////////////////////