#pragma once #include #include #include #include #include namespace Ui { class GLMainWindow; } class OpenGLRenderer; class QShortcut; class GLMainWindow : public QMainWindow { Q_OBJECT public: GLMainWindow(QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); ~GLMainWindow(); void setRendererFactory(std::function rendererFactory); public slots: void setOpenGLLoggingEnabled(bool enabled); void setOpenGLLoggingSynchronous(bool synchronous); signals: void openGLLoggingEnabledChanged(bool enabled); void openGLLoggingSynchronousChanged(bool synchronous); private slots: // on__ slots are connected automatically by name when the ui is set up void on_actionFullScreen_toggled(bool checked); void on_actionFullScreenOpenGL_toggled(bool checked); void on_actionAbout_triggered(); private: std::unique_ptr ui; std::map savedVisibilities; void fillActionShortcuts(QWidget * base); std::vector actionShortcuts; };