Linux build fixes
[clinton/Virtual-Jaguar-Rx.git] / src / debugger / debuggertab.cpp
CommitLineData
024bfc46
JPM
1//\r
2// debuggertab.cpp: "Debugger" tab on the settings dialog\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
f0dd2f7b
JPM
10// JPM Sept./2016 Created this file, and added Soft debugger support\r
11// JPM 10/09/2018 Added source file search paths\r
d56efc77 12// JPM 04/06/2019 Added ELF sections check\r
bc10fc42 13//\r
024bfc46
JPM
14\r
15#include "debuggertab.h"\r
16#include "settings.h"\r
17\r
18\r
f0dd2f7b 19// \r
024bfc46
JPM
20DebuggerTab::DebuggerTab(QWidget * parent/*= 0*/): QWidget(parent)\r
21{\r
f0dd2f7b
JPM
22 // Number of disassembly lines\r
23 QLabel *label3 = new QLabel("Disassembly lines:");\r
24 QVBoxLayout *layout1 = new QVBoxLayout;\r
024bfc46 25 layout1->addWidget(label3);\r
f0dd2f7b
JPM
26 QVBoxLayout *layout2 = new QVBoxLayout;\r
27 nbrdisasmlines = new QLineEdit("");\r
28 nbrdisasmlines->setPlaceholderText("Number of disassembly lines");\r
29 layout2->addWidget(nbrdisasmlines);\r
30\r
31 // Sources code paths\r
32 QLabel *label4 = new QLabel("Source file search paths:");\r
33 QVBoxLayout *layout5 = new QVBoxLayout;\r
34 layout5->addWidget(label4);\r
35 QVBoxLayout *layout6 = new QVBoxLayout;\r
36 sourcefilesearchpaths = new QLineEdit("");\r
37 sourcefilesearchpaths->setMaxLength(sizeof(vjs.sourcefilesearchPaths));\r
38 sourcefilesearchpaths->setPlaceholderText("Each path must be separate by a ';', search is recursive and based on each path");\r
39 layout6->addWidget(sourcefilesearchpaths);\r
40\r
41 QHBoxLayout *layout3 = new QHBoxLayout;\r
024bfc46
JPM
42 layout3->addLayout(layout1);\r
43 layout3->addLayout(layout2);\r
f0dd2f7b
JPM
44 QHBoxLayout *layout7 = new QHBoxLayout;\r
45 layout7->addLayout(layout5);\r
46 layout7->addLayout(layout6);\r
024bfc46 47\r
f0dd2f7b 48 QVBoxLayout *layout4 = new QVBoxLayout;\r
024bfc46 49 layout4->addLayout(layout3);\r
f0dd2f7b 50 layout4->addLayout(layout7);\r
024bfc46 51\r
f0dd2f7b 52 // Checkboxes\r
024bfc46
JPM
53 displayHWlabels = new QCheckBox(tr("Display HW labels"));\r
54 disasmopcodes = new QCheckBox(tr("Display M68000 opcodes"));\r
55 displayFullSourceFilename = new QCheckBox(tr("Display source filename"));\r
d56efc77 56 ELFSectionsCheck = new QCheckBox(tr("ELF sections check"));\r
024bfc46
JPM
57 disasmopcodes->setDisabled(false);\r
58 displayHWlabels->setDisabled(false);\r
59 displayFullSourceFilename->setDisabled(false);\r
d56efc77 60 ELFSectionsCheck->setDisabled(false);\r
024bfc46
JPM
61\r
62 layout4->addWidget(disasmopcodes);\r
63 layout4->addWidget(displayHWlabels);\r
64 layout4->addWidget(displayFullSourceFilename);\r
d56efc77 65 layout4->addWidget(ELFSectionsCheck);\r
024bfc46
JPM
66\r
67 setLayout(layout4);\r
68}\r
69\r
70\r
f0dd2f7b 71// \r
024bfc46
JPM
72DebuggerTab::~DebuggerTab()\r
73{\r
74}\r
75\r
76\r
2d0121d4
JPM
77// Save / Update the settings from the tabs dialog\r
78void DebuggerTab::SetSettings(void)\r
79{\r
80 bool ok;\r
81\r
d9989fae 82 strcpy(vjs.debuggerROMPath, vjs.alpineROMPath);\r
f0dd2f7b
JPM
83 strcpy(vjs.sourcefilesearchPaths, CheckForTrailingSlash(sourcefilesearchpaths->text()).toUtf8().data());\r
84 vjs.nbrdisasmlines = nbrdisasmlines->text().toUInt(&ok, 10);\r
2d0121d4
JPM
85 vjs.displayHWlabels = displayHWlabels->isChecked();\r
86 vjs.disasmopcodes = disasmopcodes->isChecked();\r
87 vjs.displayFullSourceFilename = displayFullSourceFilename->isChecked();\r
d56efc77 88 vjs.ELFSectionsCheck = ELFSectionsCheck->isChecked();\r
2d0121d4
JPM
89}\r
90\r
91\r
92// Load / Update the tabs dialog from the settings\r
93void DebuggerTab::GetSettings(void)\r
94{\r
c89f8ff7 95 QVariant v((qulonglong) vjs.nbrdisasmlines);\r
f0dd2f7b
JPM
96 nbrdisasmlines->setText(v.toString());\r
97 sourcefilesearchpaths->setText(vjs.sourcefilesearchPaths);\r
2d0121d4
JPM
98 displayHWlabels->setChecked(vjs.displayHWlabels);\r
99 disasmopcodes->setChecked(vjs.disasmopcodes);\r
100 displayFullSourceFilename->setChecked(vjs.displayFullSourceFilename);\r
d56efc77 101 ELFSectionsCheck->setChecked(vjs.ELFSectionsCheck);\r
2d0121d4
JPM
102}\r
103\r
f0dd2f7b
JPM
104\r
105// Remove the last character if slash or backslash at the end of each string\r
106// Depend the platform transform slashes or backslashes\r
107QString DebuggerTab::CheckForTrailingSlash(QString s)\r
108{\r
109 if (s.endsWith('/') || s.endsWith('\\'))\r
110 {\r
111 s.remove(s.length() - 1, 1);\r
112 }\r
113#ifdef _WIN32\r
114 s.replace(QString("/"), QString("\\"));\r
115 s.replace(QString("\\;"), QString(";"));\r
116#else\r
117 s.replace(QString("\\"), QString("/"));\r
118 s.replace(QString("/;"), QString(";"));\r
119#endif\r
120 return s;\r
121}\r