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