Keybindings UI is displayed based on the option used (--debugger, -- alpine)
[clinton/Virtual-Jaguar-Rx.git] / src / debugger / allwatchbrowser.cpp
CommitLineData
cf76e892
JPM
1//
2// allwatch.cpp - All Watch
3//
4// by Jean-Paul Mari
5//
6// JPM = Jean-Paul Mari <djipi.mari@gmail.com>
7//
8// Who When What
9// --- ---------- -----------------------------------------------------------
10// JPM 12/07/2017 Created this file
11//
12
13// STILL TO DO:
14//
15
5fe21518 16#include "debugger/allwatchbrowser.h"
cf76e892 17#include "memory.h"
5fe21518 18#include "debugger/DBGManager.h"
cf76e892
JPM
19
20
21AllWatchBrowserWindow::AllWatchBrowserWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog),
22 layout(new QVBoxLayout), text(new QTextBrowser),
23// layout(new QVBoxLayout), text(new QLabel),
24// refresh(new QPushButton(tr("Refresh"))),
25// address(new QLineEdit),
26// go(new QPushButton(tr("Go"))),
27// memBase(0),
28 NbWatch(0),
29 PtrWatchInfo(NULL)
30{
31 setWindowTitle(tr("All Watch"));
32
33// address->setInputMask("hhhhhh");
34// QHBoxLayout * hbox1 = new QHBoxLayout;
35// hbox1->addWidget(refresh);
36// hbox1->addWidget(address);
37// hbox1->addWidget(go);
38
39 // Need to set the size as well...
40// resize(560, 480);
41
42 QFont fixedFont("Lucida Console", 8, QFont::Normal);
43// QFont fixedFont("", 8, QFont::Normal);
44 fixedFont.setStyleHint(QFont::TypeWriter);
45 text->setFont(fixedFont);
46//// layout->setSizeConstraint(QLayout::SetFixedSize);
47 setLayout(layout);
48
49 layout->addWidget(text);
50// layout->addWidget(refresh);
51// layout->addLayout(hbox1);
52
53// connect(refresh, SIGNAL(clicked()), this, SLOT(RefreshContents()));
54// connect(go, SIGNAL(clicked()), this, SLOT(GoToAddress()));
55}
56
57
58//
59AllWatchBrowserWindow::~AllWatchBrowserWindow(void)
60{
61 NbWatch = 0;
62 free(PtrWatchInfo);
63}
64
65
66//
67void AllWatchBrowserWindow::RefreshContents(void)
68{
69 char string[1024];
70// char buf[64];
71 QString WatchAll;
72
73 if (isVisible())
74 {
75 if (!NbWatch)
76 {
77 if (NbWatch = DBGManager_GetNbExternalVariables())
78 {
79 PtrWatchInfo = (WatchInfo *)calloc(NbWatch, sizeof(WatchInfo));
80#ifdef _MSC_VER
81#pragma message("Warning: !!! Need to check the memory desalocation for PtrWatchInfo !!!")
82#else
83 #warning "!!! Need to do the memory desalocation for PtrWatchInfo !!!"
84#endif // _MSC_VER
85
86 for (uint32_t i = 0; i < NbWatch; i++)
87 {
88 PtrWatchInfo[i].PtrVariableName = DBGManager_GetExternalVariableName(i + 1);
89 PtrWatchInfo[i].addr = DBGManager_GetExternalVariableAdr(i + 1);
90 PtrWatchInfo[i].TypeTag = DBGManager_GetExternalVariableTypeTag(i + 1);
91 if (!strlen(PtrWatchInfo[i].PtrVariableBaseTypeName = DBGManager_GetExternalVariableTypeName(i + 1)))
92 {
93 PtrWatchInfo[i].PtrVariableBaseTypeName = (char *)"<font color='#ff0000'>N/A</font>";
94 }
95 }
96 }
97 }
98
99 for (uint32_t i = 0; i < NbWatch; i++)
100 {
101 if (PtrWatchInfo[i].PtrVariableName && PtrWatchInfo[i].PtrVariableBaseTypeName)
102 {
5fe21518 103 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_GetExternalVariableValue(i + 1));
cf76e892
JPM
104 WatchAll += QString(string);
105 sprintf(string, "<br>");
106 WatchAll += QString(string);
107 }
108 }
109
110 text->clear();
111 text->setText(WatchAll);
112 }
113}
114
115
116#if 0
117void AllWatchBrowserWindow::keyPressEvent(QKeyEvent * e)
118{
119 if (e->key() == Qt::Key_Escape)
120 hide();
121 else if (e->key() == Qt::Key_PageUp)
122 {
123 memBase -= 480;
124
125 if (memBase < 0)
126 memBase = 0;
127
128 RefreshContents();
129 }
130 else if (e->key() == Qt::Key_PageDown)
131 {
132 memBase += 480;
133
134 if (memBase > (0x200000 - 480))
135 memBase = 0x200000 - 480;
136
137 RefreshContents();
138 }
139 else if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Minus)
140 {
141 memBase -= 16;
142
143 if (memBase < 0)
144 memBase = 0;
145
146 RefreshContents();
147 }
148 else if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Equal)
149 {
150 memBase += 16;
151
152 if (memBase > (0x200000 - 480))
153 memBase = 0x200000 - 480;
154
155 RefreshContents();
156 }
157}
158#endif
159
160
161#if 0
162void AllWatchBrowserWindow::GoToAddress(void)
163{
164 bool ok;
165 QString newAddress = address->text();
166 memBase = newAddress.toUInt(&ok, 16);
167 RefreshContents();
168}
169#endif
170