浏览代码

New classes ctkCmdLineModuleQtComboBox and ctkCmdLineModuleQtUiLoader for Qt frontend

MattClarkson 12 年之前
父节点
当前提交
e852abdf22

+ 55 - 0
Libs/CommandLineModules/Frontend/QtGui/ctkCmdLineModuleQtComboBox.cpp

@@ -0,0 +1,55 @@
+/*=============================================================================
+
+  Library: CTK
+
+  Copyright (c) University College London
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#include "ctkCmdLineModuleQtComboBox_p.h"
+
+//-----------------------------------------------------------------------------
+ctkCmdLineModuleQtComboBox::ctkCmdLineModuleQtComboBox(QWidget *parent)
+: QComboBox(parent)
+{
+}
+
+
+//-----------------------------------------------------------------------------
+ctkCmdLineModuleQtComboBox::~ctkCmdLineModuleQtComboBox()
+{
+}
+
+
+//-----------------------------------------------------------------------------
+void ctkCmdLineModuleQtComboBox::setCurrentEnumeration(const QString& text)
+{
+  int i = findText(text);
+  if (i == -1)
+  {
+    i = this->currentIndex();
+  }
+  this->setCurrentIndex(i);
+}
+
+
+//-----------------------------------------------------------------------------
+QString ctkCmdLineModuleQtComboBox::currentEnumeration()const
+{
+  return this->currentText();
+}
+
+
+

+ 48 - 0
Libs/CommandLineModules/Frontend/QtGui/ctkCmdLineModuleQtComboBox_p.h

@@ -0,0 +1,48 @@
+/*=============================================================================
+
+  Library: CTK
+
+  Copyright (c) University College London
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#ifndef CTKCMDLINEMODULEQTCOMBOBOX_H
+#define CTKCMDLINEMODULEQTCOMBOBOX_H
+
+#include <QComboBox>
+
+/**
+ * \class ctkCmdLineModuleQtComboBox
+ * \brief Private subclass of QComboBox, providing the currentEnumeration and setCurrentEnumeration methods.
+ * \author m.clarkson@ucl.ac.uk
+ * \ingroup CommandLineModulesFrontendQtGui
+ */
+class ctkCmdLineModuleQtComboBox : public QComboBox
+{
+
+  Q_OBJECT
+  Q_PROPERTY(QString currentEnumeration READ currentEnumeration WRITE setCurrentEnumeration)
+
+public:
+
+  ctkCmdLineModuleQtComboBox(QWidget* parent = 0);
+  virtual ~ctkCmdLineModuleQtComboBox();
+
+  void setCurrentEnumeration(const QString& text);
+  QString currentEnumeration() const;
+
+};
+
+#endif // CTKCMDLINEMODULEQTCOMBOBOX_H

+ 55 - 0
Libs/CommandLineModules/Frontend/QtGui/ctkCmdLineModuleQtUiLoader.cpp

@@ -0,0 +1,55 @@
+/*=============================================================================
+
+  Library: CTK
+
+  Copyright (c) University College London
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#include "ctkCmdLineModuleQtUiLoader.h"
+#include "ctkCmdLineModuleQtComboBox_p.h"
+
+//-----------------------------------------------------------------------------
+ctkCmdLineModuleQtUiLoader::ctkCmdLineModuleQtUiLoader(QObject *parent)
+  : QUiLoader(parent)
+{
+
+}
+
+
+//-----------------------------------------------------------------------------
+ctkCmdLineModuleQtUiLoader::~ctkCmdLineModuleQtUiLoader()
+{
+
+}
+
+
+//-----------------------------------------------------------------------------
+QWidget* ctkCmdLineModuleQtUiLoader::createWidget(const QString& className, QWidget* parent, const QString& name)
+{
+  QWidget* widget = NULL;
+
+  if (className == "QComboBox")
+  {
+    widget = new ctkCmdLineModuleQtComboBox(parent);
+    widget->setObjectName(name);
+  }
+  else
+  {
+    widget = QUiLoader::createWidget(className, parent, name);
+  }
+
+  return widget;
+}

+ 54 - 0
Libs/CommandLineModules/Frontend/QtGui/ctkCmdLineModuleQtUiLoader.h

@@ -0,0 +1,54 @@
+/*=============================================================================
+
+  Library: CTK
+
+  Copyright (c) University College London
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#ifndef CTKCMDLINEMODULEQTUILOADER_H
+#define CTKCMDLINEMODULEQTUILOADER_H
+
+#include <QUiLoader>
+#include "ctkCommandLineModulesFrontendQtGuiExport.h"
+
+/**
+ * \class ctkCmdLineModuleQtUiLoader
+ * \brief Derived from QUiLoader to enable us to instantiate custom widgets at runtime,
+ * where this class provides ctkCmdLineModuleQtComboBox instead of QComboBox.
+ * \author m.clarkson@ucl.ac.uk
+ * \ingroup CommandLineModulesFrontendQtGui
+ */
+class CTK_CMDLINEMODULEQTGUI_EXPORT ctkCmdLineModuleQtUiLoader : public QUiLoader
+{
+
+  Q_OBJECT
+
+public:
+  ctkCmdLineModuleQtUiLoader(QObject *parent=0);
+  virtual ~ctkCmdLineModuleQtUiLoader();
+
+  /**
+   * \brief If className is QComboBox, instantiates ctkCmdLineModuleQtGuiComboBox and
+   * otherwise delegates to base class.
+   * \see QUiLoader::createWidget()
+   */
+  virtual QWidget* createWidget(const QString & className, QWidget * parent = 0, const QString & name = QString() );
+
+private:
+
+}; // end class
+
+#endif // CTKCMDLINEMODULEQTUILOADER_H