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 | |
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 |
20 | DebuggerTab::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 |
72 | DebuggerTab::~DebuggerTab()\r |
73 | {\r | |
74 | }\r | |
75 | \r | |
76 | \r | |
2d0121d4 JPM |
77 | // Save / Update the settings from the tabs dialog\r |
78 | void 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 | |
93 | void DebuggerTab::GetSettings(void)\r | |
94 | {\r | |
95 | QVariant v(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 | |
107 | QString 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 |