NumeRe v1.1.4
NumeRe: Framework für Numerische Rechnungen
debugviewer.cpp
Go to the documentation of this file.
1/*****************************************************************************
2 NumeRe: Framework fuer Numerische Rechnungen
3 Copyright (C) 2017 Erik Haenel et al.
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17******************************************************************************/
18
19#include "debugviewer.hpp"
20#include <wx/statbox.h>
21#include "../../kernel/core/ui/language.hpp"
22#include "../NumeReWindow.h"
23
24#define ID_DEBUG_CONTINUE 10201
25#define ID_DEBUG_CANCEL 10202
26#define ID_DEBUG_STEP 10203
27#define ID_DEBUG_STEPOVER 10204
28#define ID_DEBUG_LEAVE 10205
29
30extern Language _guilang;
31
32BEGIN_EVENT_TABLE(DebugViewer, ViewerFrame)
33 EVT_CLOSE (DebugViewer::OnClose)
34 EVT_LIST_ITEM_ACTIVATED(-1, DebugViewer::OnStackItemActivate)
37
38
39
48DebugViewer::DebugViewer(wxWindow* parent, Options* _options, const wxString& title) : ViewerFrame(parent, title)
49{
50 m_terminal = nullptr;
51 m_options = _options;
52 nLineColumn = 0;
53 nModuleColumn = 0;
54
55 // Create the toolbar
56 initializeToolbar();
57
58 // Create the status bar
59 int widths[] = {-2, -1};
60 wxStatusBar* sb = CreateStatusBar(2);
61 sb->SetStatusWidths(2, widths);
62
63 b_transferredControl = false;
64
65 // initialize the controls: create the panel
66 wxPanel* panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_THEME);
67
68 // Create vertical and horizontal sizers
69 wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL);
70 wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL);
71
72 // Create static box sizers for the main
73 // GUI elements
74 wxStaticBoxSizer* exprBox = new wxStaticBoxSizer(wxHORIZONTAL, panel, _guilang.get("DBG_EXPR"));
75 wxStaticBoxSizer* errorBox = new wxStaticBoxSizer(wxVERTICAL, panel, _guilang.get("DBG_MODULE"));
76 wxStaticBoxSizer* stackBox = new wxStaticBoxSizer(wxHORIZONTAL, panel, _guilang.get("DBG_STACKTRACE"));
77 wxStaticBoxSizer* varBox = new wxStaticBoxSizer(wxHORIZONTAL, panel, _guilang.get("DBG_LOCALS"));
78
79 // Create the expression and the error message
80 // text contrls
81 m_lineNumber = new wxTextCtrl(exprBox->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(70, -1), wxTE_READONLY | wxTE_RICH | wxTE_MULTILINE | wxTE_RIGHT);
82 m_expression = new wxTextCtrl(exprBox->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY | wxTE_RICH | wxTE_MULTILINE);
83 m_errorMessage = new wxTextCtrl(errorBox->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY);
84
85 // Change font and colour of the two text controls
86 wxFont font;
87 font.SetNativeFontInfoUserDesc("consolas 10");
88
89 m_lineNumber->SetFont(font);
90 m_lineNumber->SetBackgroundColour(wxColour(220, 220, 220));
91 m_expression->SetFont(font);
92 //m_expression->SetBackgroundColour(*wxWHITE);
93 m_errorMessage->SetForegroundColour(*wxRED);
94
95 // Create the stack trace list control and add
96 // four columns
97 m_stacktrace = new wxListCtrl(stackBox->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize /*wxSize(400, -1)*/, wxLC_REPORT);
98 m_stacktrace->AppendColumn(" ");
99 m_stacktrace->AppendColumn("Stack");
100 nLineColumn = m_stacktrace->AppendColumn(_guilang.get("DBG_LINENO"), wxLIST_FORMAT_RIGHT);
101 nModuleColumn = m_stacktrace->AppendColumn(_guilang.get("DBG_FILE"));
102
103 if (!m_options->GetShowLinesInStackTrace())
104 m_stacktrace->SetColumnWidth(nLineColumn, 0);
105
106 if (!m_options->GetShowModulesInStackTrace())
107 m_stacktrace->SetColumnWidth(nModuleColumn, 0);
108
109 // Create the variable viewer in debugger mode
110 m_varViewer = new VariableViewer(varBox->GetStaticBox(), static_cast<NumeReWindow*>(parent), 600, true);
111
112 // Add the GUI elements to the static box sizers
113 exprBox->Add(m_lineNumber, 0, wxALIGN_CENTER_HORIZONTAL | wxALL | wxEXPAND);
114 exprBox->Add(m_expression, 1, wxALIGN_CENTER_HORIZONTAL | wxALL | wxEXPAND);
115 errorBox->Add(m_errorMessage, 1, wxALIGN_CENTER_HORIZONTAL | wxALL | wxEXPAND);
116 stackBox->Add(m_stacktrace, 1, wxALIGN_CENTER_HORIZONTAL | wxEXPAND | wxALL);
117 varBox->Add(m_varViewer, 1, wxALIGN_CENTER_HORIZONTAL | wxEXPAND | wxALL);
118
119 // Add the static box sizers to the
120 // horizontal and vertical box sizers
121 // of the panel
122 hsizer->Add(stackBox, 2, wxALIGN_CENTER_VERTICAL | wxEXPAND | wxALL, 0);
123 hsizer->AddSpacer(10);
124 hsizer->Add(errorBox, 1, wxALIGN_CENTER_HORIZONTAL | wxEXPAND | wxALL, 0);
125 vsizer->Add(exprBox, 0, wxALIGN_CENTER_HORIZONTAL | wxALL | wxEXPAND, 5);
126 vsizer->Add(hsizer, 1, wxALIGN_CENTER_HORIZONTAL | wxEXPAND | wxALL, 5);
127 vsizer->Add(varBox, 2, wxALIGN_CENTER_VERTICAL | wxEXPAND | wxALL, 5);
128
129 // Set the main sizer and focus the expression
130 // text control
131 panel->SetSizer(vsizer);
132 m_expression->SetFocus();
133}
134
135
144{
145 // Get the frame toolbar
146 wxToolBar* tb = CreateToolBar(wxTB_HORZ_TEXT);
147
148 // Get the application path
149 wxString appPath = static_cast<NumeReWindow*>(GetParent())->getProgramFolder();
150
151 wxBitmap dbgContinue(appPath + "\\icons\\dbgrun.png", wxBITMAP_TYPE_PNG);
152 wxBitmap dbgStep(appPath + "\\icons\\dbgrunto.png", wxBITMAP_TYPE_PNG);
153 wxBitmap dbgLeave(appPath + "\\icons\\dbgstepout.png", wxBITMAP_TYPE_PNG);
154 wxBitmap dbgStepOver(appPath + "\\icons\\dbgnexti.png", wxBITMAP_TYPE_PNG);
155 wxBitmap dbgAbort(appPath + "\\icons\\dbgstop.png", wxBITMAP_TYPE_PNG);
156
157 tb->AddSeparator();
158 tb->AddTool(ID_DEBUG_CONTINUE, _guilang.get("DBG_CONTINUE"), dbgContinue, dbgContinue, wxITEM_NORMAL, _guilang.get("DBG_CONTINUE_HLP"), _guilang.get("DBG_CONTINUE_HLP"));
159 tb->AddSeparator();
160 tb->AddTool(ID_DEBUG_STEP, _guilang.get("DBG_STEP"), dbgStep, dbgStep, wxITEM_NORMAL, _guilang.get("DBG_STEP_HLP"), _guilang.get("DBG_STEP_HLP"));
161 tb->AddSeparator();
162 tb->AddTool(ID_DEBUG_STEPOVER, _guilang.get("DBG_STEPOVER"), dbgStepOver, dbgStepOver, wxITEM_NORMAL, _guilang.get("DBG_STEPOVER_HLP"), _guilang.get("DBG_STEPOVER_HLP"));
163 tb->AddSeparator();
164 tb->AddTool(ID_DEBUG_LEAVE, _guilang.get("DBG_LEAVE"), dbgLeave, dbgLeave, wxITEM_NORMAL, _guilang.get("DBG_LEAVE_HLP"), _guilang.get("DBG_LEAVE_HLP"));
165 tb->AddStretchableSpace();
166 tb->AddTool(ID_DEBUG_CANCEL, _guilang.get("GUI_OPTIONS_CANCEL"), dbgAbort);
167
168 // Actually create the toolbar
169 tb->Realize();
170}
171
172
184void DebugViewer::setExpression(const std::string& sLineNumber, const std::string& sExpression)
185{
186 std::string sColours = m_terminal->getSyntax()->highlightLine("|<- " + sExpression).substr(4);
187
188 m_lineNumber->Clear();
189 m_lineNumber->SetDefaultStyle(wxTextAttr(wxColour(64, 64, 64)));
190 m_lineNumber->AppendText("@ " + sLineNumber);
191 m_lineNumber->SetDefaultStyle(wxTextAttr(wxColour(220, 220, 220)));
192 m_lineNumber->AppendText("_");
193
194 m_expression->Clear();
195
196 for (size_t i = 0; i < sColours.length(); i++)
197 {
198 wxFont font;
199 font.SetNativeFontInfoUserDesc("consolas 10");
200
201 if (sColours[i] - '0' == NumeReSyntax::SYNTAX_COMMAND || sColours[i] - '0' == NumeReSyntax::SYNTAX_NPRC_COMMAND)
202 m_expression->SetDefaultStyle(wxTextAttr(m_options->GetSyntaxStyle(Options::COMMAND).foreground, wxNullColour, font.MakeBold()));
203 else if (sColours[i] - '0' == NumeReSyntax::SYNTAX_FUNCTION)
204 m_expression->SetDefaultStyle(wxTextAttr(m_options->GetSyntaxStyle(Options::FUNCTION).foreground, wxNullColour, font.MakeBold()));
205 else if (sColours[i] - '0' == NumeReSyntax::SYNTAX_PROCEDURE)
206 m_expression->SetDefaultStyle(wxTextAttr(m_options->GetSyntaxStyle(Options::PROCEDURE).foreground, wxNullColour, font.MakeBold()));
207 else if (sColours[i] - '0' == NumeReSyntax::SYNTAX_STRING)
208 m_expression->SetDefaultStyle(wxTextAttr(m_options->GetSyntaxStyle(Options::STRING).foreground, wxNullColour, font));
209 else if (sColours[i] - '0' == NumeReSyntax::SYNTAX_METHODS)
210 m_expression->SetDefaultStyle(wxTextAttr(m_options->GetSyntaxStyle(Options::METHODS).foreground, wxNullColour, font.MakeBold()));
211 else if (sColours[i] - '0' == NumeReSyntax::SYNTAX_OPERATOR)
212 m_expression->SetDefaultStyle(wxTextAttr(m_options->GetSyntaxStyle(Options::OPERATOR).foreground, wxNullColour, font));
213 else
214 m_expression->SetDefaultStyle(wxTextAttr(*wxBLACK, wxNullColour, font));
215
216 m_expression->AppendText(sExpression.substr(i, 1));
217 }
218}
219
220
230void DebugViewer::OnStackItemActivate(wxListEvent& event)
231{
232 getInformationByStackId(m_stacktrace->GetItemCount() - event.GetIndex() - 1);
233}
234
235
246{
247 std::vector<std::string> vModuleInfo;
248 std::vector<std::string> vNumVars;
249 std::vector<std::string> vStringVars;
250 std::vector<std::string> vTables;
251 std::vector<std::string> vClusters;
252 std::vector<std::string> vArguments;
253 std::vector<std::string> vGlobals;
254
255 // Read the information from the kernel by locking
256 // the critical section
257 {
258 wxCriticalSectionLocker lock(m_terminal->m_kernelCS);
260
261 // Select the corresponding stack id
262 _debugger.select(id);
263
264 // Read the information from the debugger
265 vModuleInfo = _debugger.getModuleInformations();
266 vNumVars = _debugger.getNumVars();
267 vStringVars = _debugger.getStringVars();
268 vTables = _debugger.getTables();
269 vClusters = _debugger.getClusters();
270
272 vArguments = _debugger.getArguments();
273
275 vGlobals = _debugger.getGlobals();
276 }
277
278 // Mark the current selected stack item in the stack
279 // trace list control using an arrow and bold font
280 for (int i = 0; i < m_stacktrace->GetItemCount(); i++)
281 {
282 if (m_stacktrace->GetItemCount() - 1 - i == (int)id)
283 {
284 m_stacktrace->SetItemText(i, "->");
285 m_stacktrace->SetItemFont(i, GetFont().Bold());
286 }
287 else
288 {
289 m_stacktrace->SetItemText(i, "");
290 m_stacktrace->SetItemFont(i, GetFont());
291 }
292 }
293
294 // Update the status bar
295 GetStatusBar()->SetStatusText(vModuleInfo[1] + " @ " + vModuleInfo[2]);
296
297 // Add line number and expression to the expression
298 // text control and change the colour for line number
299 setExpression(vModuleInfo[2], vModuleInfo[0]);
300
301 // Set the error message
302 m_errorMessage->SetValue(vModuleInfo[3]);
303
304 // Store the sizes of the vectors
305 size_t n_num = vNumVars.size();
306 size_t s_num = vStringVars.size();
307 size_t t_num = vTables.size();
308 size_t c_num = vClusters.size();
309 size_t a_num = vArguments.size();
310 size_t g_num = vGlobals.size();
311
312 // Create the variable vector for the
313 // variable viewer
314 vNumVars.insert(vNumVars.end(), vStringVars.begin(), vStringVars.end());
315 vNumVars.insert(vNumVars.end(), vTables.begin(), vTables.end());
316 vNumVars.insert(vNumVars.end(), vClusters.begin(), vClusters.end());
317 vNumVars.insert(vNumVars.end(), vArguments.begin(), vArguments.end());
318 vNumVars.insert(vNumVars.end(), vGlobals.begin(), vGlobals.end());
319
320 // Update the variable viewer
321 m_varViewer->UpdateVariables(vNumVars, n_num, s_num, t_num, c_num, a_num, g_num);
322}
323
324
333void DebugViewer::OnMenuEvent(wxCommandEvent& event)
334{
335 switch (event.GetId())
336 {
340
341 GetStatusBar()->SetStatusText(_guilang.get("DBG_CONTINUING"), 1);
342 SetTitle("NumeRe: Debugger [" + _guilang.get("DBG_CONTINUING") + "]");
343 EnableDebugger(false);
344
345 break;
346 case ID_DEBUG_CANCEL:
348 {
351 }
352
353 GetStatusBar()->SetStatusText(_guilang.get("DBG_ABORTED"), 1);
354 SetTitle("NumeRe: Debugger [" + _guilang.get("DBG_ABORTED") + "]");
355 EnableDebugger(false);
356
357 break;
358 case ID_DEBUG_STEP:
361
362 GetStatusBar()->SetStatusText(_guilang.get("DBG_CONTINUING"), 1);
363 SetTitle("NumeRe: Debugger [" + _guilang.get("DBG_CONTINUING") + "]");
364 EnableDebugger(false);
365
366 break;
370
371 GetStatusBar()->SetStatusText(_guilang.get("DBG_CONTINUING"), 1);
372 SetTitle("NumeRe: Debugger [" + _guilang.get("DBG_CONTINUING") + "]");
373 EnableDebugger(false);
374
375 break;
376 case ID_DEBUG_LEAVE:
379
380 GetStatusBar()->SetStatusText(_guilang.get("DBG_CONTINUING"), 1);
381 SetTitle("NumeRe: Debugger [" + _guilang.get("DBG_CONTINUING") + "]");
382 EnableDebugger(false);
383
384 break;
385 }
386}
387
388
398{
399 wxToolBar* tb = GetToolBar();
400
401 tb->EnableTool(ID_DEBUG_CONTINUE, enable);
402 tb->EnableTool(ID_DEBUG_CANCEL, enable);
403 tb->EnableTool(ID_DEBUG_STEP, enable);
404 tb->EnableTool(ID_DEBUG_STEPOVER, enable);
405 tb->EnableTool(ID_DEBUG_LEAVE, enable);
406}
407
408
419{
420 // Update the variable viewer
422
423 // Hide or show the line column of the stack trace
425 m_stacktrace->SetColumnWidth(nLineColumn, 0);
426 else
427 m_stacktrace->SetColumnWidth(nLineColumn, wxLIST_AUTOSIZE_USEHEADER);
428
429 // Hide or show the module column of the stack trace
431 m_stacktrace->SetColumnWidth(nModuleColumn, 0);
432 else
433 m_stacktrace->SetColumnWidth(nModuleColumn, wxLIST_AUTOSIZE_USEHEADER);
434}
435
436
448void DebugViewer::setDebugInfo(const wxString& title, const std::vector<std::string>& vStack)
449{
450 // Update the title
451 this->SetTitle(title);
453
454 EnableDebugger(true);
455 m_errorMessage->SetForegroundColour(*wxRED);
456 m_errorMessage->Refresh();
457 GetStatusBar()->SetStatusText(_guilang.get("DBG_STOPPED"), 1);
458
459 // Remove all previous stack items
460 m_stacktrace->DeleteAllItems();
461
462 // Update the stack trace with file
463 // names and line numbers
464 for (size_t i = 0; i < vStack.size(); i++)
465 {
466 m_stacktrace->InsertItem(i, "");
467 m_stacktrace->SetItem(i, 1, vStack[i].substr(0, vStack[i].find('\t')));
468 m_stacktrace->SetItem(i, nLineColumn, vStack[i].substr(vStack[i].rfind('\t')+1));
469 m_stacktrace->SetItem(i, nModuleColumn, vStack[i].substr(vStack[i].find('\t')+1, vStack[i].rfind('\t') - vStack[i].find('\t') - 1));
470 }
471
472 // Auto-size the corresponding columns
473 m_stacktrace->SetColumnWidth(0, wxLIST_AUTOSIZE);
474 m_stacktrace->SetColumnWidth(1, wxLIST_AUTOSIZE);
475
477 m_stacktrace->SetColumnWidth(nLineColumn, wxLIST_AUTOSIZE_USEHEADER);
478 else
479 m_stacktrace->SetColumnWidth(nLineColumn, 0);
480
482 m_stacktrace->SetColumnWidth(nModuleColumn, wxLIST_AUTOSIZE);
483 else
484 m_stacktrace->SetColumnWidth(nModuleColumn, 0);
485
486 // Get the debugger information for the
487 // top stack element
488 if (vStack.size())
489 getInformationByStackId(vStack.size()-1);
490 else
492
493 if (IsIconized())
494 Restore();
495
497 RequestUserAttention();
498}
499
500
511void DebugViewer::OnClose(wxCloseEvent& event)
512{
515
516 this->Hide();
517 event.Veto();
518}
519
520
533{
534 EnableDebugger(false);
535 m_errorMessage->SetForegroundColour(wxColour(128, 128, 128));
536 m_errorMessage->Refresh();
537 GetStatusBar()->SetStatusText(_guilang.get("DBG_FINISHED"), 1);
538 SetTitle("NumeRe: Debugger [" + _guilang.get("DBG_FINISHED") + "]");
539}
540
541
void getInformationByStackId(size_t id)
This private member function gets the debugger information from the selected stack ID.
void OnMenuEvent(wxCommandEvent &event)
This member function is the event handler routine for the toolbar functions.
void EnableDebugger(bool enable)
This member function may enable or disable the debugger toolbar.
void OnClose(wxCloseEvent &event)
This member function is called upon closing the debugger window: it won't be destroyed but hidden and...
wxTextCtrl * m_lineNumber
Definition: debugviewer.hpp:37
wxTextCtrl * m_errorMessage
Definition: debugviewer.hpp:38
VariableViewer * m_varViewer
Definition: debugviewer.hpp:35
void setExpression(const std::string &sLineNumber, const std::string &sExpression)
This private member function updates the expression element in the debugger window and changes the co...
NumeReTerminal * m_terminal
Definition: debugviewer.hpp:40
void OnStackItemActivate(wxListEvent &event)
This member function is the event handler function for double-clicking on a stack item.
void OnExecutionFinished()
This member function will inform the debugger window that the execution of the current code has ben f...
Options * m_options
Definition: debugviewer.hpp:41
void setDebugInfo(const wxString &title, const std::vector< std::string > &vStack)
This member function is used from the main window to update the debugger window with the information ...
wxTextCtrl * m_expression
Definition: debugviewer.hpp:36
void updateSettings()
This member function should be called after the user modified the application settings....
bool b_transferredControl
Definition: debugviewer.hpp:43
wxListCtrl * m_stacktrace
Definition: debugviewer.hpp:39
void initializeToolbar()
This private member function creates the toolbar of the debugger window.
NumeReSyntax * getSyntax()
Definition: gterm.hpp:145
This class handles the internal language system and returns the language strings of the selected lang...
Definition: language.hpp:38
std::string get(const std::string &sMessage, const std::vector< std::string > &vTokens) const
This member function returns the language string for the passed language identifier and replaces all ...
Definition: language.cpp:292
std::vector< std::string > getNumVars()
This member function returns the numerical variables as a vector.
Definition: debugger.cpp:812
std::vector< std::string > getClusters()
This member function returns the clusters as a vector.
Definition: debugger.cpp:884
std::vector< std::string > getGlobals()
This member function returns the current global variables as a vector.
Definition: debugger.cpp:925
std::vector< std::string > getStringVars()
This member function returns the string variables as a vector.
Definition: debugger.cpp:841
std::vector< std::string > getTables()
This member function returns the tables as a vector.
Definition: debugger.cpp:864
bool select(size_t nStackElement)
This member function can be used to select a specific element in the current stack trace to read the ...
Definition: debugger.cpp:370
std::vector< std::string > getModuleInformations()
This member function returns the module informations as a vector.
Definition: debugger.cpp:763
std::vector< std::string > getArguments()
This member function returns the procedure argument as a vector.
Definition: debugger.cpp:904
NumeReDebugger & getDebugger()
Definition: kernel.hpp:326
std::string highlightLine(const std::string &sCommandLine)
This function applies the highlighting colors to the command line (only used in the terminal).
Definition: syntax.cpp:363
@ SYNTAX_FUNCTION
Definition: syntax.hpp:93
@ SYNTAX_METHODS
Definition: syntax.hpp:102
@ SYNTAX_STRING
Definition: syntax.hpp:96
@ SYNTAX_PROCEDURE
Definition: syntax.hpp:99
@ SYNTAX_NPRC_COMMAND
Definition: syntax.hpp:101
@ SYNTAX_COMMAND
Definition: syntax.hpp:91
@ SYNTAX_OPERATOR
Definition: syntax.hpp:98
NumeReKernel _kernel
Definition: terminal.hpp:166
void continueDebug()
Definition: terminal.hpp:216
void stepDebug()
Definition: terminal.hpp:221
void stepOverDebug()
Definition: terminal.hpp:226
void leaveDebug()
Definition: terminal.hpp:231
void CancelCalculation()
Inform the kernel to stop the current calculation. Used to handle the ESC key press.
Definition: terminal.cpp:994
wxCriticalSection m_kernelCS
Definition: terminal.hpp:167
This class is the actual NumeRe main frame. The application's logic is implemented here.
Definition: NumeReWindow.h:177
This class implements an interface of the internal Settings object adapted to be usable from the GUI.
Definition: Options.h:178
bool GetShowModulesInStackTrace() const
Definition: Options.h:261
bool GetShowGlobalVariables() const
Definition: Options.h:265
@ FUNCTION
Definition: Options.h:285
@ OPERATOR
Definition: Options.h:293
@ STRING
Definition: Options.h:290
@ COMMAND
Definition: Options.h:280
@ PROCEDURE
Definition: Options.h:294
@ METHODS
Definition: Options.h:297
bool GetShowProcedureArguments() const
Definition: Options.h:263
SyntaxStyles GetSyntaxStyle(size_t i) const
Return the selected syntax style by constructing it from the style string.
Definition: options.cpp:112
bool GetShowLinesInStackTrace() const
Definition: Options.h:259
SettingsValue & getSetting(const std::string &value)
Returns a reference to the setting value, which corresponds to the passed string. Throws an exception...
Definition: settings.hpp:711
bool & active()
Returns a reference to a boolean value type setting.
Definition: settings.hpp:556
void setDebuggerMode(bool mode=true)
This member function creates or removes unneeded tree root items and handles the debugger mode.
void UpdateVariables(const std::vector< std::string > &vVarList, size_t nNumerics, size_t nStrings, size_t nTables, size_t nClusters, size_t nArguments=0, size_t nGlobals=0)
This member function is used to update the variable list, which is displayed by this control.
This class generalizes a set of basic floating window functionalities like being closable by pressing...
Definition: viewerframe.hpp:31
#define ID_DEBUG_STEP
Definition: debugviewer.cpp:26
#define ID_DEBUG_LEAVE
Definition: debugviewer.cpp:28
Language _guilang
#define ID_DEBUG_CANCEL
Definition: debugviewer.cpp:25
#define ID_DEBUG_STEPOVER
Definition: debugviewer.cpp:27
#define ID_DEBUG_CONTINUE
Definition: debugviewer.cpp:24
#define SETTING_B_FLASHTASKBAR
Definition: settings.hpp:75
wxColour foreground
Definition: Options.h:28
END_EVENT_TABLE()