summaryrefslogtreecommitdiffhomepage
path: root/proto-wine/ftnoir_protocol_wine.h
diff options
context:
space:
mode:
Diffstat (limited to 'proto-wine/ftnoir_protocol_wine.h')
-rw-r--r--proto-wine/ftnoir_protocol_wine.h80
1 files changed, 65 insertions, 15 deletions
diff --git a/proto-wine/ftnoir_protocol_wine.h b/proto-wine/ftnoir_protocol_wine.h
index 0f300ff3..718699ac 100644
--- a/proto-wine/ftnoir_protocol_wine.h
+++ b/proto-wine/ftnoir_protocol_wine.h
@@ -1,43 +1,77 @@
#pragma once
-#include "ui_ftnoir_winecontrols.h"
-#include <QMessageBox>
-#include <QLibrary>
-#include <QProcess>
-#include <QDebug>
-#include <QMutex>
-#include <QMutexLocker>
-#include <QFile>
#include "api/plugin-api.hpp"
#include "compat/shm.h"
#include "wine-shm.h"
-class wine : public IProtocol
+#include "ui_ftnoir_winecontrols.h"
+
+#include "options/options.hpp"
+using namespace options;
+
+#include <QMutex>
+#include <QProcess>
+#include <QString>
+#include <QVariant>
+
+#include <QDebug>
+
+struct settings : opts
{
+ settings() : opts{"proto-wine"} {}
+ value<bool> variant_wine{b, "variant-wine", true },
+ variant_proton{b, "variant-proton", false },
+ variant_proton_steamplay{b, "variant-proton-steamplay", true },
+ variant_proton_external{b, "variant-proton-external", false },
+ fsync{b, "fsync", true},
+ esync{b, "esync", true};
+
+ value<int> proton_appid{b, "proton-appid", 0};
+ value<QVariant> proton_path{b, "proton-version", {} };
+ value<QVariant> wine_select_path{b, "wine-select-version", {"WINE"}};
+ value<QString> wine_custom_path{b, "wine-custom-version", ""};
+ value<QString> wineprefix{b, "wineprefix", "~/.wine/"};
+ value<QString> protonprefix{b, "protonprefix", ""};
+ value<int> protocol{b, "protocol", 2};
+};
+
+class wine : TR, public IProtocol
+{
+ Q_OBJECT
+
public:
wine();
~wine() override;
module_status initialize() override;
- void pose(const double* headpose) override;
+ void pose(const double* headpose, const double*) override;
QString game_name() override
{
+#ifndef OTR_WINE_NO_WRAPPER
QMutexLocker foo(&game_name_mutex);
return connected_game;
+#else
+ return QStringLiteral("X-Plane");
+#endif
}
private:
- shm_wrapper lck_shm;
- WineSHM* shm;
+ shm_wrapper lck_shm { WINE_SHM_NAME, WINE_MTX_NAME, sizeof(WineSHM) };
+ WineSHM* shm = nullptr;
+ settings s;
+
+#ifndef OTR_WINE_NO_WRAPPER
QProcess wrapper;
- int gameid;
+ int gameid = 0;
QString connected_game;
QMutex game_name_mutex;
+#endif
};
class FTControls: public IProtocolDialog
{
Q_OBJECT
+
public:
FTControls();
void register_protocol(IProtocol *) override {}
@@ -45,15 +79,31 @@ public:
private:
Ui::UICFTControls ui;
+ settings s;
private slots:
+ void onWinePathComboUpdated();
+ void onRadioButtonsChanged();
+
+ void doBrowseWine();
+ void doBrowseWinePrefix();
+
+ void doBrowseProtonPrefix();
+
void doOK();
void doCancel();
};
-class wineDll : public Metadata
+class wine_metadata : public Metadata
{
+ Q_OBJECT
+
public:
- QString name() override { return QString("Wine -- Windows layer for Unix"); }
+#ifndef OTR_WINE_NO_WRAPPER
+ QString name() override { return tr("Wine -- Windows layer for Unix"); }
QIcon icon() override { return QIcon(":/images/wine.png"); }
+#else
+ QString name() override { return tr("X-Plane"); }
+ QIcon icon() override { return {}; }
+#endif
};