diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e9cfd55943579555582a2fb69eddb1c373ef7f9..0e9a04eb4a7afa7a4b2970e4695696fec05e7e65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,6 +151,7 @@ set(lektor_module_SOURCES src/module/qt_window/mpvwidget.cpp src/module/qt_window/mpvwidget_interface.cpp src/module/qt_window/qthelper.cpp + src/module/qt_window/mainwindow.cpp src/module/thread.c ) diff --git a/src/module/module_qt_window.h b/src/module/module_qt_window.h index acdd44d90f402fd94fdec561ebeb29936c349d56..7cc63cb594e75829a6d0d8daf7650dd982dccb36 100644 --- a/src/module/module_qt_window.h +++ b/src/module/module_qt_window.h @@ -3,15 +3,19 @@ #if defined( __cplusplus) extern "C" { -class MpvWidget; +#define DECLARE_CPP_CLASS(c) class c; #else -typedef struct MpvWidget MpvWidget; +#define DECLARE_CPP_CLASS(c) typedef struct c c; #endif +DECLARE_CPP_CLASS(MpvWidget) +DECLARE_CPP_CLASS(MainWindow) +#undef DECLARE_CPP_CLASS #include <lektor/common.h> #include "thread.h" struct module_qt_window_s { + MainWindow* main_window; MpvWidget* mpv_widget; /* Thread related */ diff --git a/src/module/qt_window/mainwindow.cpp b/src/module/qt_window/mainwindow.cpp new file mode 100644 index 0000000000000000000000000000000000000000..46e56c045510e0de5eb4686ba8655dd32e44f27d --- /dev/null +++ b/src/module/qt_window/mainwindow.cpp @@ -0,0 +1,7 @@ +#include "mainwindow.hh" + +MainWindow::MainWindow(struct module_qt_window_s* qt_window, QWidget *parent) : + QMainWindow(parent) +{ + qt_window->mpv_widget = new MpvWidget(qt_window->queue, qt_window->db, this); +} diff --git a/src/module/qt_window/mainwindow.hh b/src/module/qt_window/mainwindow.hh new file mode 100644 index 0000000000000000000000000000000000000000..ad3e51425d06221afb9163e8b13f1db0fc3d49c4 --- /dev/null +++ b/src/module/qt_window/mainwindow.hh @@ -0,0 +1,17 @@ +#ifndef __LKT_MODULE_QT_WINDOW_MAINWINDOW__ +#define __LKT_MODULE_QT_WINDOW_MAINWINDOW__ + +#include <QtWidgets/QWidget> +#include <QtGui> +#include <QMainWindow> +#include "../module_qt_window.h" +#include "mpvwidget.hh" + +class MainWindow : public QMainWindow +{ + Q_OBJECT +public: + explicit MainWindow(struct module_qt_window_s *qt_window, QWidget *parent = 0); +}; + +#endif // __LKT_MODULE_QT_WINDOW_MAINWINDOW__ diff --git a/src/module/qt_window/mpvwidget.cpp b/src/module/qt_window/mpvwidget.cpp index 64c89e590e3f35c63d56aed0b2144ce5915e68fb..558674b63b3399a07d88c1fbffe418b4d2b31fe0 100644 --- a/src/module/qt_window/mpvwidget.cpp +++ b/src/module/qt_window/mpvwidget.cpp @@ -20,8 +20,8 @@ static void *get_proc_address(void *ctx, const char *name) { return reinterpret_cast<void *>(glctx->getProcAddress(QByteArray(name))); } -MpvWidget::MpvWidget(struct queue *queue, lkt_db *db) - : QOpenGLWidget(), +MpvWidget::MpvWidget(struct queue *queue, lkt_db *db, QWidget* parent) + : QOpenGLWidget(parent), m_queue(queue), m_db(db) { diff --git a/src/module/qt_window/mpvwidget.hh b/src/module/qt_window/mpvwidget.hh index 0c0f91d6fa1fea76321d8b0abcc5460cfa92e39d..86ea4662e98ec091eec805295c893f02c8cba241 100644 --- a/src/module/qt_window/mpvwidget.hh +++ b/src/module/qt_window/mpvwidget.hh @@ -14,7 +14,7 @@ class MpvWidget Q_DECL_FINAL: public QOpenGLWidget { Q_OBJECT public: - MpvWidget(struct queue *queue, lkt_db *db); + MpvWidget(struct queue *queue, lkt_db *db, QWidget* parent); ~MpvWidget(); void command(const QVariant& params); void setProperty(const QString& name, const QVariant& value); diff --git a/src/module/qt_window/mpvwidget_interface.cpp b/src/module/qt_window/mpvwidget_interface.cpp index 56c9af81043859c5129ed8e303006722f83ab2ef..8067387a7aaa9e5497366ca3792f0efb1ffd45a7 100644 --- a/src/module/qt_window/mpvwidget_interface.cpp +++ b/src/module/qt_window/mpvwidget_interface.cpp @@ -1,5 +1,5 @@ #include "mpvwidget_interface.h" -#include "mpvwidget.hh" +#include "mainwindow.hh" #include <QApplication> @@ -12,8 +12,7 @@ ___create_mpv_widget(struct poller_thread_arg *arg){ int argc = 0; QApplication a(argc, NULL); setlocale(LC_NUMERIC, "C"); - qt_window->mpv_widget = new MpvWidget(qt_window->queue, qt_window->db); - qt_window->mpv_widget->show(); + qt_window->main_window = new MainWindow(qt_window); a.exec(); return NULL; }