Ver código fonte

ENH: Added CTK/Libs/Widgets/Plugins corresponding to QtDesigner plugin

A first plugin corresponding to ctkColorPickerButton has also been added.
Jean-Christophe Fillion-Robin 15 anos atrás
pai
commit
77f31ee583

+ 94 - 0
Libs/Widgets/Plugins/CMakeLists.txt

@@ -0,0 +1,94 @@
+PROJECT(${PROJECT_NAME}Plugins)
+
+#
+# See CTK/CMake/ctkMacroBuildQtDesignerPlugin.cmake for details
+#
+
+SET(PLUGIN_export_directive "CTK_WIDGETS_PLUGINS_EXPORT")
+
+# Source files
+SET(PLUGIN_SRCS
+  ctkWidgetsPlugins.cpp
+  ctkWidgetsPlugins.h
+  ctkWidgetsAbstractPlugin.cpp
+  ctkWidgetsAbstractPlugin.h
+
+#   ctkCollapsibleButtonPlugin.cpp
+#   ctkCollapsibleButtonPlugin.h
+#   ctkCollapsibleGroupBoxPlugin.cpp
+#   ctkCollapsibleGroupBoxPlugin.h
+  ctkColorPickerButtonPlugin.cpp
+  ctkColorPickerButtonPlugin.h
+#   ctkCoordinatesWidgetPlugin.cpp
+#   ctkCoordinatesWidgetPlugin.h
+#   ctkDoubleRangeSliderPlugin.cpp
+#   ctkDoubleRangeSliderPlugin.h
+#   ctkDoubleSliderPlugin.cpp
+#   ctkDoubleSliderPlugin.h
+#   ctkDynamicSpacerPlugin.cpp
+#   ctkDynamicSpacerPlugin.h
+#   ctkExtensionFactory.cpp
+#   ctkExtensionFactory.h
+#   ctkFittedTextBrowserPlugin.cpp
+#   ctkFittedTextBrowserPlugin.h
+#   ctkMenuButtonPlugin.cpp
+#   ctkMenuButtonPlugin.h
+#   ctkRangeSliderPlugin.cpp
+#   ctkRangeSliderPlugin.h
+#   ctkRangeWidgetPlugin.cpp
+#   ctkRangeWidgetPlugin.h
+#   ctkTitleComboBoxPlugin.cpp
+#   ctkTitleComboBoxPlugin.h
+#   ctkTreeComboBoxPlugin.cpp
+#   ctkTreeComboBoxPlugin.h
+#   ctkSliderSpinBoxWidgetPlugin.cpp
+#   ctkSliderSpinBoxWidgetPlugin.h
+  )
+
+# Headers that should run through moc
+SET(PLUGIN_MOC_SRCS
+  ctkWidgetsPlugins.h
+
+#   ctkCollapsibleButtonPlugin.h
+#   ctkCollapsibleGroupBoxPlugin.h
+  ctkColorPickerButtonPlugin.h
+#   ctkCoordinatesWidgetPlugin.h
+#   ctkDoubleRangeSliderPlugin.h
+#   ctkDoubleSliderPlugin.h
+#   ctkDynamicSpacerPlugin.h
+#   ctkExtensionFactory.h
+#   ctkFittedTextBrowserPlugin.h
+#   ctkMenuButtonPlugin.h
+#   ctkRangeSliderPlugin.h
+#   ctkRangeWidgetPlugin.h
+#   ctkTitleComboBoxPlugin.h
+#   ctkTreeComboBoxPlugin.h
+#   ctkSliderSpinBoxWidgetPlugin.h
+  )
+
+# Resources
+SET(PLUGIN_resources
+  Resources/ctkVisualizationVTKWidgetsPlugins.qrc
+)
+
+# Target libraries
+SET(PLUGIN_target_libraries
+  CTKWidgets
+  )
+
+ctkMacroBuildQtDesignerPlugin(
+  NAME ${PROJECT_NAME}
+  EXPORT_DIRECTIVE ${PLUGIN_export_directive}
+  SRCS ${PLUGIN_SRCS}
+  MOC_SRCS ${PLUGIN_MOC_SRCS}
+  RESOURCES ${PLUGIN_resources}
+  TARGET_LIBRARIES ${PLUGIN_target_libraries}
+)
+
+# TODO Move to a Slicer CMakeLists.txt
+#qctk_install_designer_plugin(
+#  NAME ${PROJECT_NAME}
+#  INSTALL_BIN_DIR ${Slicer3_INSTALL_BIN_DIR}
+#  INSTALL_LIB_DIR ${Slicer3_INSTALL_LIB_DIR}/designer
+#  INSTALL_HEADERS_DIR ${Slicer3_INSTALL_INCLUDE_DIR}
+#  )

BIN
Libs/Widgets/Plugins/Resources/Icons/combobox.png


BIN
Libs/Widgets/Plugins/Resources/Icons/doublespinbox.png


BIN
Libs/Widgets/Plugins/Resources/Icons/groupbox.png


BIN
Libs/Widgets/Plugins/Resources/Icons/groupboxcollapsible.png


BIN
Libs/Widgets/Plugins/Resources/Icons/hrangeslider.png


BIN
Libs/Widgets/Plugins/Resources/Icons/hslider.png


BIN
Libs/Widgets/Plugins/Resources/Icons/listbox.png


BIN
Libs/Widgets/Plugins/Resources/Icons/listview.png


BIN
Libs/Widgets/Plugins/Resources/Icons/pushbutton.png


BIN
Libs/Widgets/Plugins/Resources/Icons/sliderspinbox.png


BIN
Libs/Widgets/Plugins/Resources/Icons/table.png


BIN
Libs/Widgets/Plugins/Resources/Icons/textedit.png


BIN
Libs/Widgets/Plugins/Resources/Icons/vspacer.png


BIN
Libs/Widgets/Plugins/Resources/Icons/widget.png


+ 18 - 0
Libs/Widgets/Plugins/Resources/ctkVisualizationVTKWidgetsPlugins.qrc

@@ -0,0 +1,18 @@
+<!DOCTYPE RCC><RCC version="1.0">
+  <qresource>
+    <file>Icons/combobox.png</file>
+    <file>Icons/doublespinbox.png</file>
+    <file>Icons/groupbox.png</file>
+    <file>Icons/groupboxcollapsible.png</file>
+    <file>Icons/hrangeslider.png</file>
+    <file>Icons/hslider.png</file>
+    <file>Icons/listbox.png</file>
+    <file>Icons/listview.png</file>
+    <file>Icons/pushbutton.png</file>
+    <file>Icons/sliderspinbox.png</file>
+    <file>Icons/table.png</file>
+    <file>Icons/textedit.png</file>
+    <file>Icons/vspacer.png</file>
+    <file>Icons/widget.png</file>
+  </qresource>
+</RCC>

+ 61 - 0
Libs/Widgets/Plugins/ctkColorPickerButtonPlugin.cpp

@@ -0,0 +1,61 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc. 
+  All rights reserved.
+  Distributed under a BSD License. See LICENSE.txt file.
+
+  This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the above copyright notice for more information.
+
+=========================================================================*/
+
+// CTK includes
+#include "ctkColorPickerButtonPlugin.h"
+#include "ctkColorPickerButton.h"
+
+//-----------------------------------------------------------------------------
+ctkColorPickerButtonPlugin::ctkColorPickerButtonPlugin(QObject *_parent) : QObject(_parent)
+{
+}
+
+//-----------------------------------------------------------------------------
+QWidget *ctkColorPickerButtonPlugin::createWidget(QWidget *_parent)
+{
+  ctkColorPickerButton* _widget = new ctkColorPickerButton(_parent);
+  return _widget;
+}
+
+//-----------------------------------------------------------------------------
+QString ctkColorPickerButtonPlugin::domXml() const
+{
+  return "<widget class=\"ctkColorPickerButton\" \
+          name=\"CTKColorPickerButton\">\n"
+          "</widget>\n";
+}
+
+//-----------------------------------------------------------------------------
+QIcon ctkColorPickerButtonPlugin::icon() const
+{
+  return QIcon(":/Icons/pushbutton.png");
+}
+
+//-----------------------------------------------------------------------------
+QString ctkColorPickerButtonPlugin::includeFile() const
+{
+  return "ctkColorPickerButton.h";
+}
+
+//-----------------------------------------------------------------------------
+bool ctkColorPickerButtonPlugin::isContainer() const
+{
+  return false;
+}
+
+//-----------------------------------------------------------------------------
+QString ctkColorPickerButtonPlugin::name() const
+{
+  return "ctkColorPickerButton";
+}

+ 38 - 0
Libs/Widgets/Plugins/ctkColorPickerButtonPlugin.h

@@ -0,0 +1,38 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc. 
+  All rights reserved.
+  Distributed under a BSD License. See LICENSE.txt file.
+
+  This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the above copyright notice for more information.
+
+=========================================================================*/
+
+#ifndef __ctkColorPickerButtonPlugin_h
+#define __ctkColorPickerButtonPlugin_h
+
+// CTK includes
+#include "ctkWidgetsAbstractPlugin.h"
+
+class CTK_WIDGETS_PLUGINS_EXPORT ctkColorPickerButtonPlugin :
+  public QObject,
+  public ctkWidgetsAbstractPlugin
+{
+  Q_OBJECT
+
+public:
+  ctkColorPickerButtonPlugin(QObject *_parent = 0);
+  
+  QWidget *createWidget(QWidget *_parent);
+  QString  domXml() const;
+  QIcon    icon() const;
+  QString  includeFile() const;
+  bool     isContainer() const;
+  QString  name() const;
+};
+
+#endif

+ 57 - 0
Libs/Widgets/Plugins/ctkWidgetsAbstractPlugin.cpp

@@ -0,0 +1,57 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc. 
+  All rights reserved.
+  Distributed under a BSD License. See LICENSE.txt file.
+
+  This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the above copyright notice for more information.
+
+=========================================================================*/
+
+// CTK includes
+#include "ctkWidgetsAbstractPlugin.h"
+
+//-----------------------------------------------------------------------------
+ctkWidgetsAbstractPlugin::ctkWidgetsAbstractPlugin()
+{
+  this->Initialized = false;
+}
+
+//-----------------------------------------------------------------------------
+QString ctkWidgetsAbstractPlugin::group() const
+{ 
+  return "[CTK Widgets]";
+}
+
+//-----------------------------------------------------------------------------
+QIcon ctkWidgetsAbstractPlugin::icon() const
+{
+  return QIcon(); 
+}
+
+//-----------------------------------------------------------------------------
+QString ctkWidgetsAbstractPlugin::toolTip() const
+{ 
+  return QString(); 
+}
+
+//-----------------------------------------------------------------------------
+QString ctkWidgetsAbstractPlugin::whatsThis() const
+{
+  return QString(); 
+}
+
+//-----------------------------------------------------------------------------
+void ctkWidgetsAbstractPlugin::initialize(QDesignerFormEditorInterface *formEditor)
+{
+  Q_UNUSED(formEditor);
+  if (this->Initialized)
+    {
+    return;
+    }
+  this->Initialized = true;
+}

+ 45 - 0
Libs/Widgets/Plugins/ctkWidgetsAbstractPlugin.h

@@ -0,0 +1,45 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc. 
+  All rights reserved.
+  Distributed under a BSD License. See LICENSE.txt file.
+
+  This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the above copyright notice for more information.
+
+=========================================================================*/
+
+#ifndef __ctkWidgetsAbstractPlugin_h
+#define __ctkWidgetsAbstractPlugin_h
+
+// Qt includes
+#include <QDesignerCustomWidgetInterface>
+
+// CTK includes
+#include "CTKWidgetsPluginsExport.h"
+
+class CTK_WIDGETS_PLUGINS_EXPORT ctkWidgetsAbstractPlugin :
+  public QDesignerCustomWidgetInterface
+{
+  Q_INTERFACES(QDesignerCustomWidgetInterface);
+public:
+
+  ctkWidgetsAbstractPlugin();
+  
+  // Do *NOT* reimplement this method.
+  QString group() const;
+  
+  // You can reimplement these methods
+  virtual QIcon icon() const;
+  virtual QString toolTip() const;
+  virtual QString whatsThis() const;
+  virtual void initialize(QDesignerFormEditorInterface *formEditor);
+  
+protected:
+  bool Initialized;
+};
+
+#endif

+ 21 - 0
Libs/Widgets/Plugins/ctkWidgetsPlugins.cpp

@@ -0,0 +1,21 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc. 
+  All rights reserved.
+  Distributed under a BSD License. See LICENSE.txt file.
+
+  This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the above copyright notice for more information.
+
+=========================================================================*/
+
+// Qt includes
+#include <QtPlugin>
+
+// CTK includes
+#include "ctkWidgetsPlugins.h"
+
+Q_EXPORT_PLUGIN2(customwidgetplugin, ctkWidgetsPlugins);

+ 67 - 0
Libs/Widgets/Plugins/ctkWidgetsPlugins.h

@@ -0,0 +1,67 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc. 
+  All rights reserved.
+  Distributed under a BSD License. See LICENSE.txt file.
+
+  This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the above copyright notice for more information.
+
+=========================================================================*/
+
+#ifndef __ctkWidgetsPlugins_h
+#define __ctkWidgetsPlugins_h
+
+// Qt includes
+#include <QDesignerCustomWidgetCollectionInterface>
+
+// CTK includes
+#include "CTKWidgetsPluginsExport.h"
+// #include "qCTKCollapsibleButtonPlugin.h"
+// #include "qCTKCollapsibleGroupBoxPlugin.h"
+// #include "qCTKColorPickerButtonPlugin.h"
+// #include "qCTKCoordinatesWidgetPlugin.h"
+// #include "qCTKDoubleRangeSliderPlugin.h"
+// #include "qCTKDoubleSliderPlugin.h"
+// #include "qCTKDynamicSpacerPlugin.h"
+// #include "qCTKFittedTextBrowserPlugin.h"
+// #include "qCTKMenuButtonPlugin.h"
+// #include "qCTKRangeSliderPlugin.h"
+// #include "qCTKRangeWidgetPlugin.h"
+// #include "qCTKTitleComboBoxPlugin.h"
+// #include "qCTKTreeComboBoxPlugin.h"
+// #include "qCTKSliderSpinBoxWidgetPlugin.h"
+
+/// \class Group the plugins in one library
+class CTK_WIDGETS_PLUGINS_EXPORT ctkWidgetsPlugins : public QObject,
+      public QDesignerCustomWidgetCollectionInterface
+{
+  Q_OBJECT
+  Q_INTERFACES(QDesignerCustomWidgetCollectionInterface);
+
+public:
+  QList<QDesignerCustomWidgetInterface*> customWidgets() const
+    {
+    QList<QDesignerCustomWidgetInterface *> plugins;
+//     plugins << new qCTKCollapsibleButtonPlugin
+//             << new qCTKCollapsibleGroupBoxPlugin
+//             << new qCTKColorPickerButtonPlugin
+//             << new qCTKCoordinatesWidgetPlugin
+//             << new qCTKDoubleRangeSliderPlugin
+//             << new qCTKDoubleSliderPlugin
+//             << new qCTKDynamicSpacerPlugin
+//             << new qCTKFittedTextBrowserPlugin
+//             << new qCTKMenuButtonPlugin
+//             << new qCTKRangeSliderPlugin
+//             << new qCTKRangeWidgetPlugin
+//             << new qCTKTitleComboBoxPlugin
+//             << new qCTKTreeComboBoxPlugin
+//             << new qCTKSliderSpinBoxWidgetPlugin;
+    return plugins;
+    }
+};
+
+#endif