core: Fix libdwarf and Qt build failure
[clinton/Virtual-Jaguar-Rx.git] / src / gui / alpinetab.cpp
1 //
2 // alpinetab.cpp: "Alpine" tab on the settings dialog
3 //
4 // Part of the Virtual Jaguar Project
5 // (C) 2011 Underground Software
6 // See the README and GPLv3 files for licensing and warranty information
7 //
8 // JLH = James Hammons <jlhamm@acm.org>
9 // JPM = Jean-Paul Mari <djipi.mari@gmail.com>
10 //
11 // WHO WHEN WHAT
12 // --- ---------- ------------------------------------------------------------
13 // JLH 07/15/2011 Created this file
14 // JPM 09/03/2018 Depend the platform transform slashes or backslashes
15 // JPM Feb./2021 Added a M68K exception catch check
16 //
17
18 #include "alpinetab.h"
19 #include "settings.h"
20
21
22 AlpineTab::AlpineTab(QWidget * parent/*= 0*/): QWidget(parent)
23 {
24 QLabel * label1 = new QLabel("ROM to load:");
25 QLabel * label2 = new QLabel("ABS to load:");
26 QLabel * label3 = new QLabel("Windows refresh:");
27 // QLabel * label3 = new QLabel("EEPROMs:");
28 // QLabel * label4 = new QLabel("Software:");
29
30 edit1 = new QLineEdit("");
31 edit2 = new QLineEdit("");
32 edit3 = new QLineEdit("");
33 // edit3 = new QLineEdit("");
34 // edit4 = new QLineEdit("");
35 edit1->setPlaceholderText("ROM to load when Virtual Jaguar loads");
36 edit2->setPlaceholderText("ABS to load when Virtual Jaguar loads");
37 edit3->setPlaceholderText("Windows refresh rate");
38 // edit3->setPlaceholderText("EEPROM path");
39 // edit4->setPlaceholderText("Software path");
40
41 QVBoxLayout * layout1 = new QVBoxLayout;
42 layout1->addWidget(label1);
43 layout1->addWidget(label2);
44 layout1->addWidget(label3);
45 // layout1->addWidget(label3);
46 // layout1->addWidget(label4);
47
48 QVBoxLayout * layout2 = new QVBoxLayout;
49 layout2->addWidget(edit1);
50 layout2->addWidget(edit2);
51 layout2->addWidget(edit3);
52 // layout2->addWidget(edit3);
53 // layout2->addWidget(edit4);
54
55 QHBoxLayout * layout3 = new QHBoxLayout;
56 layout3->addLayout(layout1);
57 layout3->addLayout(layout2);
58
59 QVBoxLayout * layout4 = new QVBoxLayout;
60 layout4->addLayout(layout3);
61
62 // Checkboxes...
63 writeROM = new QCheckBox(tr("Allow writes to cartridge ROM"));
64 M68KExceptionCatch = new QCheckBox(tr("Allow M68000 exception catch"));
65 // useDSP = new QCheckBox(tr("Enable DSP"));
66 // useHostAudio = new QCheckBox(tr("Enable audio playback"));
67 // useUnknownSoftware = new QCheckBox(tr("Allow unknown software in file chooser"));
68 // Currently, this is unused, so let's signal this to the user:
69 //writeROM->setDisabled(true);
70
71 layout4->addWidget(writeROM);
72 layout4->addWidget(M68KExceptionCatch);
73 // layout4->addWidget(useDSP);
74 // layout4->addWidget(useHostAudio);
75 // layout4->addWidget(useUnknownSoftware);
76
77 setLayout(layout4);
78 }
79
80
81 //
82 AlpineTab::~AlpineTab()
83 {
84 }
85
86
87 // Load / Update the tabs dialog from the settings
88 void AlpineTab::GetSettings(void)
89 {
90 QVariant v(vjs.refresh);
91 edit1->setText(vjs.alpineROMPath);
92 edit2->setText(vjs.absROMPath);
93 edit3->setText(v.toString());
94 writeROM->setChecked(vjs.allowWritesToROM);
95 M68KExceptionCatch->setChecked(vjs.allowM68KExceptionCatch);
96 }
97
98
99 // Save / Update the settings from the tabs dialog
100 void AlpineTab::SetSettings(void)
101 {
102 bool ok;
103
104 strcpy(vjs.alpineROMPath, CheckForSlashes(edit1->text()).toUtf8().data());
105 strcpy(vjs.absROMPath, CheckForSlashes(edit2->text()).toUtf8().data());
106 vjs.refresh = edit3->text().toUInt(&ok, 10);
107 vjs.allowWritesToROM = writeROM->isChecked();
108 vjs.allowM68KExceptionCatch = M68KExceptionCatch->isChecked();
109 }
110
111
112 // Depend the platform transform slashes or backslashes
113 QString AlpineTab::CheckForSlashes(QString s)
114 {
115 #ifdef _WIN32
116 s.replace(QString("/"), QString("\\"));
117 #else
118 s.replace(QString("\\"), QString("/"));
119 #endif
120 return s;
121 }