Debugger support improvement
[clinton/Virtual-Jaguar-Rx.git] / src / debugger / allwatchbrowser.cpp
CommitLineData
0203b5fd
JPM
1//\r
2// allwatchbrowser.cpp - All Watch\r
3//\r
4// by Jean-Paul Mari\r
5//\r
6// JPM = Jean-Paul Mari <djipi.mari@gmail.com>\r
7//\r
8// Who When What\r
9// --- ---------- -----------------------------------------------------------\r
10// JPM 12/07/2017 Created this file\r
11//\r
12\r
13// STILL TO DO:\r
a4e46c05 14// Better presentation\r
0203b5fd
JPM
15//\r
16\r
17#include "debugger/allwatchbrowser.h"\r
18#include "memory.h"\r
19#include "debugger/DBGManager.h"\r
20\r
21\r
a4e46c05 22// \r
0203b5fd
JPM
23AllWatchBrowserWindow::AllWatchBrowserWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog),\r
24 layout(new QVBoxLayout), text(new QTextBrowser),\r
0203b5fd
JPM
25 NbWatch(0),\r
26 PtrWatchInfo(NULL)\r
27{\r
28 setWindowTitle(tr("All Watch"));\r
29\r
0203b5fd 30 QFont fixedFont("Lucida Console", 8, QFont::Normal);\r
0203b5fd
JPM
31 fixedFont.setStyleHint(QFont::TypeWriter);\r
32 text->setFont(fixedFont);\r
0203b5fd
JPM
33 setLayout(layout);\r
34\r
35 layout->addWidget(text);\r
0203b5fd
JPM
36}\r
37\r
38\r
39//\r
40AllWatchBrowserWindow::~AllWatchBrowserWindow(void)\r
41{\r
a4e46c05
JPM
42 Reset();\r
43}\r
44\r
45\r
46//\r
47void AllWatchBrowserWindow::Reset(void)\r
48{\r
0203b5fd 49 free(PtrWatchInfo);\r
a4e46c05
JPM
50 NbWatch = 0;\r
51 PtrWatchInfo = NULL;\r
0203b5fd
JPM
52}\r
53\r
54\r
55//\r
56void AllWatchBrowserWindow::RefreshContents(void)\r
57{\r
58 char string[1024];\r
0203b5fd
JPM
59 QString WatchAll;\r
60\r
61 if (isVisible())\r
62 {\r
a4e46c05
JPM
63 text->clear();\r
64\r
0203b5fd
JPM
65 if (!NbWatch)\r
66 {\r
67 if (NbWatch = DBGManager_GetNbGlobalVariables())\r
68 {\r
69 PtrWatchInfo = (WatchInfo *)calloc(NbWatch, sizeof(WatchInfo));\r
a4e46c05 70\r
0203b5fd
JPM
71 for (uint32_t i = 0; i < NbWatch; i++)\r
72 {\r
73 PtrWatchInfo[i].PtrVariableName = DBGManager_GetGlobalVariableName(i + 1);\r
74 PtrWatchInfo[i].addr = DBGManager_GetGlobalVariableAdr(i + 1);\r
75 PtrWatchInfo[i].TypeTag = DBGManager_GetGlobalVariableTypeTag(i + 1);\r
76 if (!strlen(PtrWatchInfo[i].PtrVariableBaseTypeName = DBGManager_GetGlobalVariableTypeName(i + 1)))\r
77 {\r
78 PtrWatchInfo[i].PtrVariableBaseTypeName = (char *)"<font color='#ff0000'>N/A</font>";\r
79 }\r
80 }\r
81 }\r
82 }\r
83\r
84 for (uint32_t i = 0; i < NbWatch; i++)\r
85 {\r
86 if (PtrWatchInfo[i].PtrVariableName && PtrWatchInfo[i].PtrVariableBaseTypeName)\r
87 {\r
88 sprintf(string, "%i : %s | %s | 0x%06X | %s", (i + 1), PtrWatchInfo[i].PtrVariableBaseTypeName, PtrWatchInfo[i].PtrVariableName, (unsigned int)PtrWatchInfo[i].addr, (PtrWatchInfo[i].TypeTag & 0x8) ? "" : DBGManager_GetGlobalVariableValue(i + 1));\r
89 WatchAll += QString(string);\r
90 sprintf(string, "<br>");\r
91 WatchAll += QString(string);\r
92 }\r
93 }\r
94\r
0203b5fd
JPM
95 text->setText(WatchAll);\r
96 }\r
97}\r
98\r
99\r
a4e46c05 100// \r
0203b5fd
JPM
101void AllWatchBrowserWindow::keyPressEvent(QKeyEvent * e)\r
102{\r
103 if (e->key() == Qt::Key_Escape)\r
0203b5fd 104 {\r
a4e46c05 105 hide();\r
0203b5fd
JPM
106 }\r
107}\r
0203b5fd 108\r