diff --git a/qglview/CMakeLists.txt b/qglview/CMakeLists.txt index ef7e07b..5944b99 100644 --- a/qglview/CMakeLists.txt +++ b/qglview/CMakeLists.txt @@ -50,6 +50,11 @@ foreach(_v ${_QT_VERSIONS_}) set(MULTILIB_qglview_SUFFIX_Qt${_v} ${_v} PARENT_SCOPE) endforeach() list(APPEND QT_MULTILIB_LIST qglview) +if (NOT DEFINED ANDROID_PLATFORM) + if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/plugin") + add_subdirectory(plugin) + endif() +endif() qt_sources(test_SRC DIR "qglview_test") qt_wrap(${test_SRC} CPPS test_CPP) diff --git a/qglview/glwidget.cpp b/qglview/glwidget.cpp index 9e2c140..785a25d 100644 --- a/qglview/glwidget.cpp +++ b/qglview/glwidget.cpp @@ -13,6 +13,7 @@ GLWidget::GLWidget(QWidget *parent) : QWidget(parent) lay->setContentsMargins(0, 0, 0, 0); lay->setSpacing(0); setMouseTracking(true); + setWindowIcon(QIcon("://icons/qglview.png")); connect(view_, &QGLView::doubleClick, this, &GLWidget::viewDoubleClicked); } diff --git a/qglview/plugin/CMakeLists.txt b/qglview/plugin/CMakeLists.txt new file mode 100644 index 0000000..2cdd25f --- /dev/null +++ b/qglview/plugin/CMakeLists.txt @@ -0,0 +1,12 @@ +project(qglview_plugin) +include_directories("..") +add_definitions(-DQT_PLUGIN) +add_definitions(-DQT_NO_DEBUG) +add_definitions(-DQT_SHARED) +add_definitions(-DQDESIGNER_EXPORT_WIDGETS) +find_qt(${QtVersions} Core Designer Gui Widgets OpenGL) +qt_sources(SRC) +qt_wrap(${SRC} CPPS out_CPP QMS out_QM) +qt_add_library(${PROJECT_NAME} SHARED out_CPP) +qt_target_link_libraries(${PROJECT_NAME} qglview) +qt_install(TARGETS ${PROJECT_NAME} DESTINATION QtPlugins/designer) diff --git a/qglview/plugin/qglview_designerplugin.cpp b/qglview/plugin/qglview_designerplugin.cpp new file mode 100644 index 0000000..708776b --- /dev/null +++ b/qglview/plugin/qglview_designerplugin.cpp @@ -0,0 +1,14 @@ +#include "qglview_designerplugin.h" +#include "qglviewplugin.h" + + +QGLViewDesignerPlugin::QGLViewDesignerPlugin(QObject * parent): QObject(parent) +{ + m_widgets.append(new QGLViewPlugin(this)); +} + + +QList QGLViewDesignerPlugin::customWidgets() const { + return m_widgets; +} + diff --git a/qglview/plugin/qglview_designerplugin.h b/qglview/plugin/qglview_designerplugin.h new file mode 100644 index 0000000..db6fc67 --- /dev/null +++ b/qglview/plugin/qglview_designerplugin.h @@ -0,0 +1,22 @@ +#ifndef QGLVIEW_DESIGNERPLUGIN_H +#define QGLVIEW_DESIGNERPLUGIN_H + +#include +#include + + +class QGLViewDesignerPlugin: public QObject, public QDesignerCustomWidgetCollectionInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "qad.qglview") + Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) +public: + QGLViewDesignerPlugin(QObject * parent = 0); + virtual QList customWidgets() const; + +private: + QList m_widgets; + +}; + +#endif // QGLVIEW_DESIGNERPLUGIN_H diff --git a/qglview/plugin/qglviewplugin.cpp b/qglview/plugin/qglviewplugin.cpp new file mode 100644 index 0000000..25d2ff7 --- /dev/null +++ b/qglview/plugin/qglviewplugin.cpp @@ -0,0 +1,69 @@ +#include "glwidget.h" +#include "qglviewplugin.h" +#include + + +QGLViewPlugin::QGLViewPlugin(QObject * parent): QObject(parent) { + m_initialized = false; +} + + +void QGLViewPlugin::initialize(QDesignerFormEditorInterface * /* core */) { + if (m_initialized) + return; + + // Add extension registrations, etc. here + + m_initialized = true; +} + + +bool QGLViewPlugin::isInitialized() const { + return m_initialized; +} + + +QWidget * QGLViewPlugin::createWidget(QWidget * parent) { + return new GLWidget(parent); +} + + +QString QGLViewPlugin::name() const { + return QLatin1String("QGLView"); +} + + +QString QGLViewPlugin::group() const { + return QLatin1String("Display Widgets"); +} + + +QIcon QGLViewPlugin::icon() const { + return QIcon("://icons/qglview.png"); +} + + +QString QGLViewPlugin::toolTip() const { + return QLatin1String(""); +} + + +QString QGLViewPlugin::whatsThis() const { + return QLatin1String(""); +} + + +bool QGLViewPlugin::isContainer() const { + return false; +} + + +QString QGLViewPlugin::domXml() const { + return QLatin1String("\n\n"); +} + + +QString QGLViewPlugin::includeFile() const { + return QLatin1String("glwidget.h"); +} + diff --git a/qglview/plugin/qglviewplugin.h b/qglview/plugin/qglviewplugin.h new file mode 100644 index 0000000..6516afb --- /dev/null +++ b/qglview/plugin/qglviewplugin.h @@ -0,0 +1,33 @@ +#ifndef QGLVIEWPLUGIN_H +#define QGLVIEWPLUGIN_H + +#include +#include + + +class QGLViewPlugin: public QObject, public QDesignerCustomWidgetInterface +{ + Q_OBJECT + Q_INTERFACES(QDesignerCustomWidgetInterface) + +public: + explicit QGLViewPlugin(QObject * parent = 0); + + bool isContainer() const; + bool isInitialized() const; + QIcon icon() const; + QString domXml() const; + QString group() const; + QString includeFile() const; + QString name() const; + QString toolTip() const; + QString whatsThis() const; + QWidget * createWidget(QWidget * parent); + void initialize(QDesignerFormEditorInterface * core); + +private: + bool m_initialized; + +}; + +#endif //QGLVIEWPLUGIN_H diff --git a/qglview/qglview.cpp b/qglview/qglview.cpp index a653fd9..3fee974 100644 --- a/qglview/qglview.cpp +++ b/qglview/qglview.cpp @@ -30,6 +30,7 @@ QGLView::QGLView(): OpenGLWindow(), fbo_selection(3) { // setFocusPolicy(Qt::WheelFocus); // setScene(new QGraphicsScene()); // setInteractive(true); + setIcon(QIcon("://icons/qglview.png")); timer = 0; need_init_ = is_first_draw = true; objects_.is_root = true; diff --git a/qglview/qglview.qrc b/qglview/qglview.qrc index 01dd2ea..0998b12 100644 --- a/qglview/qglview.qrc +++ b/qglview/qglview.qrc @@ -1,29 +1,30 @@ - - icons/document-save-all.png - icons/document-new.png - icons/document-import.png - icons/dialog-close.png - icons/edit-clear.png - icons/edit-guides.png - icons/type-camera.png - icons/type-geo.png - icons/type-light.png - icons/view-grid.png - icons/zoom-fit-best.png - icons/configure.png - icons/document-save.png - icons/edit-clear-locationbar-rtl.png - icons/edit-find.png - icons/list-add.png - icons/edit-delete.png - icons/item.png - icons/node-add.png - icons/application-exit.png - icons/document-open.png - icons/document-save-.png - icons/node.png - icons/edit-copy.png - icons/edit-paste.png - + + icons/document-save-all.png + icons/document-new.png + icons/document-import.png + icons/dialog-close.png + icons/edit-clear.png + icons/edit-guides.png + icons/type-camera.png + icons/type-geo.png + icons/type-light.png + icons/view-grid.png + icons/zoom-fit-best.png + icons/configure.png + icons/document-save.png + icons/edit-clear-locationbar-rtl.png + icons/edit-find.png + icons/list-add.png + icons/edit-delete.png + icons/item.png + icons/node-add.png + icons/application-exit.png + icons/document-open.png + icons/document-save-.png + icons/node.png + icons/edit-copy.png + icons/edit-paste.png + icons/qglview.png +