diff --git a/.gitattributes b/.gitattributes index 178a867c09..484d2cd306 100644 --- a/.gitattributes +++ b/.gitattributes @@ -303,6 +303,9 @@ debugger/dbgoutputform.pp svneol=native#text/pascal debugger/dbgutils.pp svneol=native#text/pascal debugger/debugger.pp svneol=native#text/pascal debugger/debuggerdlg.pp svneol=native#text/pascal +debugger/evaluatedlg.lfm svneol=native#text/plain +debugger/evaluatedlg.lrs svneol=native#text/pascal +debugger/evaluatedlg.pp svneol=native#text/pascal debugger/gdbdebugger.pp svneol=native#text/pascal debugger/gdbmidebugger.pp svneol=native#text/pascal debugger/gdbtypeinfo.pp svneol=native#text/pascal diff --git a/debugger/evaluatedlg.lfm b/debugger/evaluatedlg.lfm new file mode 100644 index 0000000000..0b055c8d2b --- /dev/null +++ b/debugger/evaluatedlg.lfm @@ -0,0 +1,110 @@ +object EvaluateDlg: TEvaluateDlg + BorderStyle = bsSizeToolWin + Caption = 'Evaluate/Modify' + ClientHeight = 296 + ClientWidth = 400 + PixelsPerInch = 90 + HorzScrollBar.Page = 401 + VertScrollBar.Page = 297 + Left = 351 + Height = 296 + Top = 136 + Width = 400 + object ToolBar1: TToolBar + AutoSize = True + ButtonHeight = 50 + ButtonWidth = 75 + Caption = 'ToolBar1' + EdgeBorders = [ebTop, ebBottom] + Flat = True + Height = 50 + ParentColor = True + ShowCaptions = True + TabOrder = 0 + TabStop = True + Height = 50 + Width = 400 + object tbInspect: TToolButton + Caption = '&Inspect' + Enabled = False + Left = 226 + Height = 50 + Width = 75 + end + object tbWatch: TToolButton + Caption = '&Watch' + Enabled = False + OnClick = tbWatchClick + Left = 151 + Height = 50 + Width = 75 + end + object tbModify: TToolButton + Caption = '&Modify' + Enabled = False + Left = 76 + Height = 50 + Width = 75 + end + object tbEvaluate: TToolButton + Caption = 'E&valuate' + Enabled = False + OnClick = tbEvaluateClick + Height = 50 + Width = 75 + end + end + object Label1: TLabel + Caption = '&Expression:' + Left = 8 + Height = 17 + Top = 56 + Width = 65 + end + object cmbExpression: TComboBox + Anchors = [akTop, akLeft, akRight] + MaxLength = 0 + OnChange = cmbExpressionChange + TabOrder = 2 + Left = 8 + Height = 25 + Top = 72 + Width = 384 + end + object Label2: TLabel + Caption = '&Result:' + Left = 8 + Height = 17 + Top = 104 + Width = 65 + end + object txtResult: TMemo + Anchors = [akTop, akLeft, akRight, akBottom] + TabOrder = 4 + Left = 8 + Height = 124 + Top = 120 + Width = 384 + end + object lblNewValue: TLabel + Anchors = [akLeft, akBottom] + Caption = '&New value:' + Left = 8 + Height = 13 + Top = 248 + Width = 65 + end + object cmbNewValue: TComboBox + Anchors = [akLeft, akRight, akBottom] + MaxLength = 0 + TabOrder = 6 + Left = 8 + Height = 25 + Top = 264 + Width = 384 + end + object ImageList1: TImageList + left = 16 + top = 352 + end +end diff --git a/debugger/evaluatedlg.lrs b/debugger/evaluatedlg.lrs new file mode 100644 index 0000000000..05eb0dfebb --- /dev/null +++ b/debugger/evaluatedlg.lrs @@ -0,0 +1,32 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TEvaluateDlg','FORMDATA',[ + 'TPF0'#12'TEvaluateDlg'#11'EvaluateDlg'#11'BorderStyle'#7#13'bsSizeToolWin'#7 + +'Caption'#6#15'Evaluate/Modify'#12'ClientHeight'#3'('#1#11'ClientWidth'#3#144 + +#1#13'PixelsPerInch'#2'Z'#18'HorzScrollBar.Page'#3#145#1#18'VertScrollBar.Pa' + +'ge'#3')'#1#4'Left'#3'_'#1#6'Height'#3'('#1#3'Top'#3#136#0#5'Width'#3#144#1#0 + +#8'TToolBar'#8'ToolBar1'#8'AutoSize'#9#12'ButtonHeight'#2'2'#11'ButtonWidth' + +#2'K'#7'Caption'#6#8'ToolBar1'#11'EdgeBorders'#11#5'ebTop'#8'ebBottom'#0#4'F' + +'lat'#9#6'Height'#2'2'#11'ParentColor'#9#12'ShowCaptions'#9#8'TabOrder'#2#0#7 + +'TabStop'#9#6'Height'#2'2'#5'Width'#3#144#1#0#11'TToolButton'#9'tbInspect'#7 + +'Caption'#6#8'&Inspect'#7'Enabled'#8#4'Left'#3#226#0#6'Height'#2'2'#5'Width' + +#2'K'#0#0#11'TToolButton'#7'tbWatch'#7'Caption'#6#6'&Watch'#7'Enabled'#8#7'O' + +'nClick'#7#12'tbWatchClick'#4'Left'#3#151#0#6'Height'#2'2'#5'Width'#2'K'#0#0 + +#11'TToolButton'#8'tbModify'#7'Caption'#6#7'&Modify'#7'Enabled'#8#4'Left'#2 + +'L'#6'Height'#2'2'#5'Width'#2'K'#0#0#11'TToolButton'#10'tbEvaluate'#7'Captio' + +'n'#6#9'E&valuate'#7'Enabled'#8#7'OnClick'#7#15'tbEvaluateClick'#6'Height'#2 + +'2'#5'Width'#2'K'#0#0#0#6'TLabel'#6'Label1'#7'Caption'#6#12'&Expression:'#4 + +'Left'#2#8#6'Height'#2#17#3'Top'#2'8'#5'Width'#2'A'#0#0#9'TComboBox'#13'cmbE' + +'xpression'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#9'MaxLength'#2#0#8 + +'OnChange'#7#19'cmbExpressionChange'#8'TabOrder'#2#2#4'Left'#2#8#6'Height'#2 + +#25#3'Top'#2'H'#5'Width'#3#128#1#0#0#6'TLabel'#6'Label2'#7'Caption'#6#8'&Res' + +'ult:'#4'Left'#2#8#6'Height'#2#17#3'Top'#2'h'#5'Width'#2'A'#0#0#5'TMemo'#9't' + +'xtResult'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'TabOr' + +'der'#2#4#4'Left'#2#8#6'Height'#2'|'#3'Top'#2'x'#5'Width'#3#128#1#0#0#6'TLab' + +'el'#11'lblNewValue'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#11'&' + +'New value:'#4'Left'#2#8#6'Height'#2#13#3'Top'#3#248#0#5'Width'#2'A'#0#0#9'T' + +'ComboBox'#11'cmbNewValue'#7'Anchors'#11#6'akLeft'#7'akRight'#8'akBottom'#0#9 + +'MaxLength'#2#0#8'TabOrder'#2#6#4'Left'#2#8#6'Height'#2#25#3'Top'#3#8#1#5'Wi' + +'dth'#3#128#1#0#0#10'TImageList'#10'ImageList1'#4'left'#2#16#3'top'#3'`'#1#0 + +#0#0 +]); diff --git a/debugger/evaluatedlg.pp b/debugger/evaluatedlg.pp new file mode 100644 index 0000000000..2d938ea815 --- /dev/null +++ b/debugger/evaluatedlg.pp @@ -0,0 +1,113 @@ +{ $Id$ } +{ ---------------------------------------------- + evaluatedlg.pp - Evaluate and Modify + ---------------------------------------------- + + @created(Mon Nov 22st WET 2004) + @lastmod($Date$) + @author(Marc Weustink ) + + This unit contains the evaluate and modify dialog. + + + *************************************************************************** + * * + * 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 . You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** +} + +unit EvaluateDlg; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls, + StdCtrls, DebuggerDlg, BaseDebugManager; + +type + TEvaluateDlg = class(TDebuggerDlg) + cmbExpression: TComboBox; + cmbNewValue: TComboBox; + ImageList1: TImageList; + Label1: TLabel; + Label2: TLabel; + lblNewValue: TLabel; + txtResult: TMemo; + ToolBar1: TToolBar; + tbInspect: TToolButton; + tbWatch: TToolButton; + tbModify: TToolButton; + tbEvaluate: TToolButton; + procedure cmbExpressionChange(Sender: TObject); + procedure tbEvaluateClick(Sender: TObject); + procedure tbWatchClick(Sender: TObject); + private + public + end; + +implementation + +{ TEvaluateDlg } + +procedure TEvaluateDlg.cmbExpressionChange(Sender: TObject); +var + HasExpression: Boolean; +begin + HasExpression := Trim(cmbExpression.Text) <> ''; + tbEvaluate.Enabled := HasExpression; + tbModify.Enabled := False; + tbWatch.Enabled := HasExpression; +// tbInspect.Enabled := HasExpression; +end; + +procedure TEvaluateDlg.tbEvaluateClick(Sender: TObject); +var + S, R: String; +begin + S := cmbExpression.Text; + if DebugBoss.Evaluate(S, R) + then begin + if cmbExpression.Items.IndexOf(S) = -1 + then cmbExpression.Items.Insert(0, S); +// tbModify.Enabled := True; + end; + txtResult.Lines.Text := R; +end; + +procedure TEvaluateDlg.tbWatchClick(Sender: TObject); +var + S: String; +begin + S := cmbExpression.Text; + if DebugBoss.Watches.Find(S) = nil + then DebugBoss.Watches.Add(S); +end; + +initialization + {$I evaluatedlg.lrs} + +end. + +{ ============================================================================= + $Log$ + Revision 1.1 2004/11/23 00:57:05 marc + + Added Evaluate/Modify dialog + +} + diff --git a/debugger/watchesdlg.lfm b/debugger/watchesdlg.lfm index 26757b1bcc..2f241ea7f2 100644 --- a/debugger/watchesdlg.lfm +++ b/debugger/watchesdlg.lfm @@ -1,7 +1,9 @@ object WatchesDlg: TWatchesDlg + ActiveControl = lvWatches Caption = 'Watch list' ClientHeight = 200 ClientWidth = 500 + PixelsPerInch = 90 HorzScrollBar.Page = 501 VertScrollBar.Page = 201 Left = 359 @@ -9,21 +11,19 @@ object WatchesDlg: TWatchesDlg Top = 126 Width = 500 object lvWatches: TListView - Align = ALCLIENT + Align = alClient Columns = < item Caption = 'Expression' - Visible = True Width = 150 end item Caption = 'Value' - Visible = True - Width = 400 + Width = 0 end> MultiSelect = True PopupMenu = mnuPopup - ViewStyle = VSREPORT + ViewStyle = vsReport OnClick = lvWatchesClick OnSelectItem = lvWatchesSelectItem Height = 200 diff --git a/debugger/watchesdlg.lrs b/debugger/watchesdlg.lrs index 12806cbfe3..cd60fe8fcf 100644 --- a/debugger/watchesdlg.lrs +++ b/debugger/watchesdlg.lrs @@ -1,23 +1,23 @@ { This is an automatically generated lazarus resource file } LazarusResources.Add('TWatchesDlg','FORMDATA',[ - 'TPF0'#11'TWatchesDlg'#10'WatchesDlg'#7'Caption'#6#10'Watch list'#12'ClientHe' - +'ight'#3#200#0#11'ClientWidth'#3#244#1#18'HorzScrollBar.Page'#3#245#1#18'Ver' - +'tScrollBar.Page'#3#201#0#4'Left'#3'g'#1#6'Height'#3#200#0#3'Top'#2'~'#5'Wid' - +'th'#3#244#1#0#9'TListView'#9'lvWatches'#5'Align'#7#8'ALCLIENT'#7'Columns'#14 - +#1#7'Caption'#6#10'Expression'#7'Visible'#9#5'Width'#3#150#0#0#1#7'Caption'#6 - +#5'Value'#7'Visible'#9#5'Width'#3#144#1#0#0#11'MultiSelect'#9#9'PopupMenu'#7 - +#8'mnuPopup'#9'ViewStyle'#7#8'VSREPORT'#7'OnClick'#7#14'lvWatchesClick'#12'O' - +'nSelectItem'#7#19'lvWatchesSelectItem'#6'Height'#3#200#0#5'Width'#3#244#1#0 - +#0#10'TPopupMenu'#8'mnuPopup'#4'left'#2'd'#3'top'#2'`'#0#9'TMenuItem'#6'popA' - +'dd'#7'Caption'#6#4'&Add'#7'OnClick'#7#11'popAddClick'#0#0#9'TMenuItem'#2'N1' - +#7'Caption'#6#1'-'#0#0#9'TMenuItem'#13'popProperties'#7'Caption'#6#11'&Prope' - +'rties'#7'OnClick'#7#18'popPropertiesClick'#0#0#9'TMenuItem'#10'popEnabled'#7 - +'Caption'#6#8'&Enabled'#7'OnClick'#7#15'popEnabledClick'#0#0#9'TMenuItem'#9 - +'popDelete'#7'Caption'#6#7'&Delete'#7'OnClick'#7#14'popDeleteClick'#0#0#9'TM' - +'enuItem'#2'N2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#13'popDisableAll'#7'Capti' - +'on'#6#12'D&isable All'#7'OnClick'#7#18'popDisableAllClick'#0#0#9'TMenuItem' - +#12'popEnableAll'#7'Caption'#6#11'E&nable All'#7'OnClick'#7#17'popEnableAllC' - +'lick'#0#0#9'TMenuItem'#12'popDeleteAll'#7'Caption'#6#11'De&lete All'#7'OnCl' - +'ick'#7#17'popDeleteAllClick'#0#0#0#0 + 'TPF0'#11'TWatchesDlg'#10'WatchesDlg'#13'ActiveControl'#7#9'lvWatches'#7'Capt' + +'ion'#6#10'Watch list'#12'ClientHeight'#3#200#0#11'ClientWidth'#3#244#1#13'P' + +'ixelsPerInch'#2'Z'#18'HorzScrollBar.Page'#3#245#1#18'VertScrollBar.Page'#3 + +#201#0#4'Left'#3'g'#1#6'Height'#3#200#0#3'Top'#2'~'#5'Width'#3#244#1#0#9'TLi' + +'stView'#9'lvWatches'#5'Align'#7#8'alClient'#7'Columns'#14#1#7'Caption'#6#10 + +'Expression'#5'Width'#3#150#0#0#1#7'Caption'#6#5'Value'#5'Width'#2#0#0#0#11 + +'MultiSelect'#9#9'PopupMenu'#7#8'mnuPopup'#9'ViewStyle'#7#8'vsReport'#7'OnCl' + +'ick'#7#14'lvWatchesClick'#12'OnSelectItem'#7#19'lvWatchesSelectItem'#6'Heig' + +'ht'#3#200#0#5'Width'#3#244#1#0#0#10'TPopupMenu'#8'mnuPopup'#4'left'#2'd'#3 + +'top'#2'`'#0#9'TMenuItem'#6'popAdd'#7'Caption'#6#4'&Add'#7'OnClick'#7#11'pop' + +'AddClick'#0#0#9'TMenuItem'#2'N1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#13'popP' + +'roperties'#7'Caption'#6#11'&Properties'#7'OnClick'#7#18'popPropertiesClick' + +#0#0#9'TMenuItem'#10'popEnabled'#7'Caption'#6#8'&Enabled'#7'OnClick'#7#15'po' + +'pEnabledClick'#0#0#9'TMenuItem'#9'popDelete'#7'Caption'#6#7'&Delete'#7'OnCl' + +'ick'#7#14'popDeleteClick'#0#0#9'TMenuItem'#2'N2'#7'Caption'#6#1'-'#0#0#9'TM' + +'enuItem'#13'popDisableAll'#7'Caption'#6#12'D&isable All'#7'OnClick'#7#18'po' + +'pDisableAllClick'#0#0#9'TMenuItem'#12'popEnableAll'#7'Caption'#6#11'E&nable' + +' All'#7'OnClick'#7#17'popEnableAllClick'#0#0#9'TMenuItem'#12'popDeleteAll'#7 + +'Caption'#6#11'De&lete All'#7'OnClick'#7#17'popDeleteAllClick'#0#0#0#0 ]); diff --git a/debugger/watchesdlg.pp b/debugger/watchesdlg.pp index 0288803164..a7c00f88d2 100644 --- a/debugger/watchesdlg.pp +++ b/debugger/watchesdlg.pp @@ -90,7 +90,7 @@ implementation constructor TWatchesDlg.Create(AOwner: TComponent); begin inherited Create(AOwner); - Name:='WatchesDlg'; +// Name:='WatchesDlg'; FWatchesNotification := TIDEWatchesNotification.Create; FWatchesNotification.AddReference; FWatchesNotification.OnAdd := @WatchAdd; @@ -271,6 +271,9 @@ end. { ============================================================================= $Log$ + Revision 1.9 2004/11/23 00:54:55 marc + + Added Evaluate/Modify dialog + Revision 1.8 2004/08/26 23:50:05 marc * Restructured debugger view classes * Fixed help diff --git a/ide/debugmanager.pas b/ide/debugmanager.pas index 6458d3110c..b0dca9d7c9 100644 --- a/ide/debugmanager.pas +++ b/ide/debugmanager.pas @@ -47,7 +47,7 @@ uses MainBar, MainIntf, MainBase, BaseDebugManager, SourceMarks, DebuggerDlg, Watchesdlg, BreakPointsdlg, LocalsDlg, WatchPropertyDlg, - CallStackDlg, DBGOutputForm, + CallStackDlg, EvaluateDlg, DBGOutputForm, GDBMIDebugger, SSHGDBMIDebugger; @@ -57,7 +57,8 @@ type ddtBreakpoints, ddtWatches, ddtLocals, - ddtCallStack + ddtCallStack, + ddtEvaluate ); TDebugManager = class(TBaseDebugManager) @@ -111,6 +112,7 @@ type procedure InitWatchesDlg; procedure InitLocalsDlg; procedure InitCallStackDlg; + procedure InitEvaluateDlg; procedure FreeDebugger; protected @@ -161,7 +163,8 @@ implementation const DebugDlgIDEWindow: array[TDebugDialogType] of TNonModalIDEWindow = ( - nmiwDbgOutput, nmiwBreakPoints, nmiwWatches, nmiwLocals, nmiwCallStack + nmiwDbgOutput, nmiwBreakPoints, nmiwWatches, nmiwLocals, nmiwCallStack, + nmiwEvaluate ); type @@ -1175,9 +1178,11 @@ begin SrcLine:=ALocation.SrcLine; //TODO: Show assembler window if no source can be found. - if SrcLine < 1 then begin + if SrcLine < 1 + then begin MessageDlg(lisExecutionPaused, - Format(lisExecutionPausedAdress, [#13#13, ALocation.Address, #13, + Format(lisExecutionPausedAdress, [#13#13, + HexStr(ALocation.Address, FDebugger.TargetWidth div 4), #13, ALocation.FuncName, #13, ALocation.SrcFile, #13#13#13, #13]), mtInformation, [mbOK],0); @@ -1254,7 +1259,8 @@ end; procedure TDebugManager.ViewDebugDialog(const ADialogType: TDebugDialogType); const DEBUGDIALOGCLASS: array[TDebugDialogType] of TDebuggerDlgClass = ( - TDbgOutputForm, TBreakPointsDlg, TWatchesDlg, TLocalsDlg, TCallStackDlg + TDbgOutputForm, TBreakPointsDlg, TWatchesDlg, TLocalsDlg, TCallStackDlg, + TEvaluateDlg ); var CurDialog: TDebuggerDlg; @@ -1276,6 +1282,7 @@ begin ddtWatches: InitWatchesDlg; ddtLocals: InitLocalsDlg; ddtCallStack: InitCallStackDlg; + ddtEvaluate: InitEvaluateDlg; end; end else begin @@ -1344,6 +1351,11 @@ begin TheDialog.CallStack := FCallStack; end; +procedure TDebugManager.InitEvaluateDlg; +begin + // todo: pass current selection +end; + constructor TDebugManager.Create(TheOwner: TComponent); var DialogType: TDebugDialogType; @@ -1406,7 +1418,13 @@ begin itmViewDebugOutput.Tag := Ord(ddtOutput); itmRunMenuResetDebugger.OnClick := @mnuResetDebuggerClicked; - + +// itmRunMenuInspect.OnClick := @mnuViewDebugDialogClick; + itmRunMenuEvaluate.OnClick := @mnuViewDebugDialogClick; + itmRunMenuEvaluate.Tag := Ord(ddtEvaluate); +// itmRunMenuAddWatch.OnClick := @; +// itmRunMenuAddBpSource.OnClick := @; + itmEnvDebuggerOptions.OnClick := @mnuDebuggerOptionsClick; end; end; @@ -1425,6 +1443,10 @@ begin itmViewDebugOutput.ShortCut := CommandToShortCut(ecToggleDebuggerOut); itmViewLocals.ShortCut := CommandToShortCut(ecToggleLocals); itmViewCallStack.ShortCut := CommandToShortCut(ecToggleCallStack); + + itmRunMenuInspect.ShortCut := CommandToShortCut(ecInspect); + itmRunMenuEvaluate.ShortCut := CommandToShortCut(ecEvaluate); + itmRunMenuAddWatch.ShortCut := CommandToShortCut(ecAddWatch); end; end; @@ -1452,6 +1474,8 @@ begin or (dcRunTo in FDebugger.Commands); itmRunMenuStop.Enabled := (FDebugger<>nil); // always allow to stop + itmRunMenuEvaluate.Enabled := (not DebuggerInvalid) + and (dcEvaluate in FDebugger.Commands); // TODO: add other debugger menuitems // TODO: implement by actions end; @@ -1896,6 +1920,9 @@ end. { ============================================================================= $Log$ + Revision 1.77 2004/11/23 00:54:55 marc + + Added Evaluate/Modify dialog + Revision 1.76 2004/10/11 23:33:36 marc * Fixed interrupting GDB on win32 * Reset exename after run so that the exe is not locked on win32 diff --git a/ide/ideoptiondefs.pas b/ide/ideoptiondefs.pas index c1761a570f..35daf578eb 100644 --- a/ide/ideoptiondefs.pas +++ b/ide/ideoptiondefs.pas @@ -80,6 +80,8 @@ type nmiwWatches, nmiwLocals, nmiwCallStack, + nmiwEvaluate, + // extra nmiwSearchResultsViewName ); @@ -113,6 +115,7 @@ const 'Watches', 'Locals', 'CallStack', + 'EvaluateModify', // extra 'SearchResults' ); diff --git a/ide/keymapping.pp b/ide/keymapping.pp index 902de3d0fc..881a9cd406 100644 --- a/ide/keymapping.pp +++ b/ide/keymapping.pp @@ -197,6 +197,9 @@ const ecBuildFile = ecUserFirst + 411; ecRunFile = ecUserFirst + 412; ecConfigBuildFile = ecUserFirst + 413; + ecInspect = ecUserFirst + 414; + ecEvaluate = ecUserFirst + 415; + ecAddWatch = ecUserFirst + 416; // project menu ecNewProject = ecUserFirst + 500; @@ -668,6 +671,9 @@ begin ecBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); ecRunFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); ecConfigBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInspect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecEvaluate: SetResult(VK_F7,[ssCtrl],VK_UNKNOWN,[]); + ecAddWatch: SetResult(VK_F5,[ssCtrl],VK_UNKNOWN,[]); // components menu ecOpenPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); @@ -1219,6 +1225,9 @@ begin ecBuildFile : Result:= srkmecBuildFile; ecRunFile : Result:= srkmecRunFile; ecConfigBuildFile : Result:= srkmecConfigBuildFile; + ecInspect : Result:= srkmecInspect; + ecEvaluate : Result:= srkmecEvaluate; + ecAddWatch : Result:= srkmecAddWatch; // components menu ecOpenPackage : Result:= lisMenuOpenPackage; @@ -2089,6 +2098,9 @@ begin AddDefault(C,'Build File',ecBuildFile); AddDefault(C,'Run File',ecRunFile); AddDefault(C,'Config "Build File"',ecConfigBuildFile); + AddDefault(C,'Inspect',ecInspect); + AddDefault(C,'Evaluate/Modify',ecEvaluate); + AddDefault(C,'Add watch',ecAddWatch); // components menu C:=Categories[AddCategory('Components',srkmCatComponentsMenu,caAll)]; diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 8b94fb0b50..652a82cb2a 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -224,6 +224,12 @@ resourcestring lisMenuBuildFile = 'Build File'; lisMenuRunFile = 'Run File'; lisMenuConfigBuildFile = 'Configure Build+Run File'; + lisMenuInspect = 'Inspect ...'; + lisMenuEvaluate = 'Evaluate/Modify ...'; + lisMenuAddWatch= 'Add watch ...'; + lisMenuAddBreakpoint = 'Add breakpoint'; + lisMenuAddBpSource = 'Source breakpoint'; + lisMenuOpenPackage = 'Open loaded package'; lisMenuOpenRecentPkg = 'Open recent package'; @@ -1298,7 +1304,10 @@ resourcestring srkmecBuildFile = 'build file'; srkmecRunFile = 'run file'; srkmecConfigBuildFile = 'config build file'; - + srkmecInspect = 'inspect'; + srkmecEvaluate = 'evaluate/modify'; + srkmecAddWatch = 'add watch'; + // tools menu srkmecExtToolSettings = 'External tools settings'; srkmecBuildLazarus = 'Build lazarus'; @@ -1866,7 +1875,7 @@ resourcestring lisExecutionStopped = 'Execution stopped'; lisExecutionStoppedOn = 'Execution stopped%s'; lisExecutionPaused = 'Execution paused'; - lisExecutionPausedAdress = 'Execution paused%s Adress: $%8.8x%s Procedure: %' + lisExecutionPausedAdress = 'Execution paused%s Adress: $%s%s Procedure: %' +'s%s File: %s%s(Some day an assembler window might popup here :)%s'; lisFileNotFound = 'File not found'; lisTheFileWasNotFoundDoYouWantToLocateItYourself = 'The file %s%s%s%swas ' diff --git a/ide/mainbar.pas b/ide/mainbar.pas index bbaee87d14..4b846b5032 100644 --- a/ide/mainbar.pas +++ b/ide/mainbar.pas @@ -214,6 +214,11 @@ type itmRunMenuBuildFile: TMenuItem; itmRunMenuRunFile: TMenuItem; itmRunMenuConfigBuildFile: TMenuItem; + itmRunMenuInspect: TMenuItem; + itmRunMenuEvaluate: TMenuItem; + itmRunMenuAddWatch: TMenuItem; + itmRunMenuAddBreakpoint: TMenuItem; + itmRunMenuAddBpSource: TMenuItem; // components menu itmPkgOpenPackage: TMenuItem; diff --git a/ide/mainbase.pas b/ide/mainbase.pas index b1dcdc6ddd..8c86e5406f 100644 --- a/ide/mainbase.pas +++ b/ide/mainbase.pas @@ -598,6 +598,13 @@ begin CreateMenuItem(ParentMI,itmRunMenuBuildFile,'itmRunMenuBuildFile',lisMenuBuildFile); CreateMenuItem(ParentMI,itmRunMenuRunFile,'itmRunMenuRunFile',lisMenuRunFile); CreateMenuItem(ParentMI,itmRunMenuConfigBuildFile,'itmRunMenuConfigBuildFile',lisMenuConfigBuildFile); + ParentMI.Add(CreateMenuSeparator); + + CreateMenuItem(ParentMI,itmRunMenuInspect,'itmRunMenuInspect',lisMenuInspect, '', False); + CreateMenuItem(ParentMI,itmRunMenuEvaluate,'itmRunMenuEvaluate',lisMenuEvaluate, '', False); + CreateMenuItem(ParentMI,itmRunMenuAddWatch,'itmRunMenuAddWatch',lisMenuAddWatch, '', False); + CreateMenuItem(ParentMI,itmRunMenuAddBreakpoint,'itmRunMenuAddBreakpoint',lisMenuAddBreakpoint, ''); + CreateMenuItem(itmRunMenuAddBreakpoint,itmRunMenuAddBPSource,'itmRunMenuAdddBPSource',lisMenuAddBPSource, '', False); end; end;