Add the source level tracing
[clinton/Virtual-Jaguar-Rx.git] / src / gui / generaltab.cpp
index 53adf96..3f8cfa3 100644 (file)
@@ -6,44 +6,57 @@
 // See the README and GPLv3 files for licensing and warranty information
 //
 // JLH = James Hammons <jlhamm@acm.org>
+// JPM = Jean-Paul Mari <djipi.mari@gmail.com>
 //
 // WHO  WHEN        WHAT
 // ---  ----------  ------------------------------------------------------------
 // JLH  06/23/2011  Created this file
+// JPM  Sept./2018  Added a Models & Bios tab, slashes / backslashes formatting, and screenshot path
+//
+
+// STILL TO DO:
+// To scan the bios folder for the 5 known BIOSes, and just present a radio button to choose between them...
+// 
+
 
+#include "configdialog.h"
 #include "generaltab.h"
+#include "settings.h"
 
 
+// 
 GeneralTab::GeneralTab(QWidget * parent/*= 0*/): QWidget(parent)
 {
-// I'm thinking we should scan the bios folder for the 5 known BIOSes, and
-// just present a radio button to choose between them...
-// (BIOS is built-in now...)
 //     QLabel * label1 = new QLabel("Boot ROM:");
 //     QLabel * label2 = new QLabel("CD Boot ROM:");
        QLabel * label3 = new QLabel("EEPROMs:");
        QLabel * label4 = new QLabel("Software:");
+       QLabel * label5 = new QLabel("Screenshots:");
 
 //     edit1 = new QLineEdit("");
 //     edit2 = new QLineEdit("");
        edit3 = new QLineEdit("");
        edit4 = new QLineEdit("");
+       edit5 = new QLineEdit("");
 //     edit1->setPlaceholderText("Boot ROM location");
 //     edit2->setPlaceholderText("CD Boot ROM location");
        edit3->setPlaceholderText("EEPROM path");
        edit4->setPlaceholderText("Software path");
+       edit5->setPlaceholderText("Screenshot path");
 
        QVBoxLayout * layout1 = new QVBoxLayout;
 //     layout1->addWidget(label1);
 //     layout1->addWidget(label2);
        layout1->addWidget(label3);
        layout1->addWidget(label4);
+       layout1->addWidget(label5);
 
        QVBoxLayout * layout2 = new QVBoxLayout;
 //     layout2->addWidget(edit1);
 //     layout2->addWidget(edit2);
        layout2->addWidget(edit3);
        layout2->addWidget(edit4);
+       layout2->addWidget(edit5);
 
        QHBoxLayout * layout3 = new QHBoxLayout;
        layout3->addLayout(layout1);
@@ -53,7 +66,9 @@ GeneralTab::GeneralTab(QWidget * parent/*= 0*/): QWidget(parent)
        layout4->addLayout(layout3);
 
        // Checkboxes...
+#ifndef NEWMODELSBIOSHANDLER
        useBIOS            = new QCheckBox(tr("Enable Jaguar BIOS"));
+#endif
        useGPU             = new QCheckBox(tr("Enable GPU"));
        useDSP             = new QCheckBox(tr("Enable DSP"));
        useFullScreen      = new QCheckBox(tr("Start Virtual Jaguar in full screen"));
@@ -61,7 +76,9 @@ GeneralTab::GeneralTab(QWidget * parent/*= 0*/): QWidget(parent)
        useUnknownSoftware = new QCheckBox(tr("Show all files in file chooser"));
        useFastBlitter     = new QCheckBox(tr("Use fast blitter"));
 
+#ifndef NEWMODELSBIOSHANDLER
        layout4->addWidget(useBIOS);
+#endif
        layout4->addWidget(useGPU);
        layout4->addWidget(useDSP);
        layout4->addWidget(useFullScreen);
@@ -72,10 +89,69 @@ GeneralTab::GeneralTab(QWidget * parent/*= 0*/): QWidget(parent)
        setLayout(layout4);
 }
 
+
+// 
 GeneralTab::~GeneralTab()
 {
 }
 
+
+// Load / Update the tabs dialog from the settings
+void GeneralTab::GetSettings(void)
+{
+       //      generalTab->edit1->setText(vjs.jagBootPath);
+       //      generalTab->edit2->setText(vjs.CDBootPath);
+       edit3->setText(vjs.EEPROMPath);
+       edit4->setText(vjs.ROMPath);
+       edit5->setText(vjs.screenshotPath);
+#ifndef NEWMODELSBIOSHANDLER
+       useBIOS->setChecked(vjs.useJaguarBIOS);
+#endif
+       useGPU->setChecked(vjs.GPUEnabled);
+       useDSP->setChecked(vjs.DSPEnabled);
+       useFullScreen->setChecked(vjs.fullscreen);
+       //      generalTab->useHostAudio->setChecked(vjs.audioEnabled);
+       useFastBlitter->setChecked(vjs.useFastBlitter);
+}
+
+
+// Save & Update the settings from the tabs dialog
+void GeneralTab::SetSettings(void)
+{
+       //      strcpy(vjs.jagBootPath, generalTab->edit1->text().toAscii().data());
+       //      strcpy(vjs.CDBootPath,  generalTab->edit2->text().toAscii().data());
+       strcpy(vjs.EEPROMPath, CheckForTrailingSlash(edit3->text()).toUtf8().data());
+       strcpy(vjs.ROMPath, CheckForTrailingSlash(edit4->text()).toUtf8().data());
+       strcpy(vjs.screenshotPath, CheckForTrailingSlash(edit5->text()).toUtf8().data());
+
+#ifndef NEWMODELSBIOSHANDLER
+       vjs.useJaguarBIOS = useBIOS->isChecked();
+#endif
+       vjs.GPUEnabled = useGPU->isChecked();
+       vjs.DSPEnabled = useDSP->isChecked();
+       vjs.fullscreen = useFullScreen->isChecked();
+       //      vjs.audioEnabled   = generalTab->useHostAudio->isChecked();
+       vjs.useFastBlitter = useFastBlitter->isChecked();
+}
+
+
+// Append a slash or a backslash at the end of the string
+// Depend the platform transform slashes or backslashes
+QString GeneralTab::CheckForTrailingSlash(QString s)
+{
+       if (!s.endsWith('/') && !s.endsWith('\\'))
+       {
+               s.append('/');
+       }
+#ifdef _WIN32
+       s.replace(QString("/"), QString("\\"));
+#else
+       s.replace(QString("\\"), QString("/"));
+#endif
+       return s;
+}
+
+
 #if 0
        vjs.useJoystick      = settings.value("useJoystick", false).toBool();
        vjs.joyport          = settings.value("joyport", 0).toInt();