Procházet zdrojové kódy

Add ctkVTKScalarBarWidgetTest1

Add get functions in ctkVTKScalarBarWidget:
bool ctkVTKScalarBarWidget::display()const;
int ctkVTKScalarBarWidget::maxNumberOfColors()const;
int ctkVTKScalarBarWidget::numberOfLabels()const;
QString ctkVTKScalarBarWidget::title()const;
QString ctkVTKScalarBarWidget::labelsFormat()const;
Julien Finet před 14 roky
rodič
revize
0d82ddfca3

+ 2 - 0
Libs/Visualization/VTK/Widgets/Testing/Cpp/CMakeLists.txt

@@ -7,6 +7,7 @@ SET(TEST_SOURCES
   ctkVTKDataSetArrayComboBoxTest1.cpp
   ctkVTKDataSetModelTest1.cpp
   ctkVTKMatrixWidgetTest1.cpp
+  ctkVTKScalarBarWidgetTest1.cpp
   ctkTransferFunctionBarsItemTest1.cpp
   ctkTransferFunctionViewTest1.cpp
   ctkTransferFunctionViewTest2.cpp
@@ -68,6 +69,7 @@ ENDMACRO( SIMPLE_TEST  )
 SIMPLE_TEST( ctkVTKDataSetArrayComboBoxTest1 )
 SIMPLE_TEST( ctkVTKDataSetModelTest1 )
 SIMPLE_TEST( ctkVTKMatrixWidgetTest1 )
+SIMPLE_TEST( ctkVTKScalarBarWidgetTest1 )
 SIMPLE_TEST( ctkTransferFunctionBarsItemTest1 )
 SIMPLE_TEST( ctkTransferFunctionViewTest1 )
 SIMPLE_TEST( ctkTransferFunctionViewTest2 )

+ 142 - 0
Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKScalarBarWidgetTest1.cpp

@@ -0,0 +1,142 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc.
+
+  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.commontk.org/LICENSE
+
+  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.
+
+=========================================================================*/
+
+// Qt includes
+#include <QApplication>
+#include <QTimer>
+
+// CTK includes
+#include "ctkVTKScalarBarWidget.h"
+
+// VTK includes
+#include <vtkScalarBarActor.h>
+#include <vtkScalarBarWidget.h>
+#include <vtkSmartPointer.h>
+
+// STD includes
+#include <iostream>
+
+//-----------------------------------------------------------------------------
+int ctkVTKScalarBarWidgetTest1(int argc, char * argv [] )
+{
+  QApplication app(argc, argv);
+
+  vtkSmartPointer<vtkScalarBarWidget> scalarBar =
+    vtkSmartPointer<vtkScalarBarWidget>::New();
+  vtkScalarBarActor* actor = scalarBar->GetScalarBarActor();
+
+  ctkVTKScalarBarWidget widget;
+  widget.setScalarBarWidget(scalarBar);
+  widget.setScalarBarWidget(0);
+  widget.setScalarBarWidget(scalarBar);
+
+  // display
+  widget.setDisplay(false);
+  if (scalarBar->GetEnabled() != false)
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setDisplay() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+  // it will fail as there is no interactor set to the widget
+  scalarBar->SetEnabled(true);
+  if (widget.display() != scalarBar->GetEnabled())
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setDisplay() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+
+  // max number of colors
+  widget.setMaxNumberOfColors(20);
+  if (actor->GetMaximumNumberOfColors() != 20)
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setMaxNumberOfColors() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+
+  actor->SetMaximumNumberOfColors(30);
+  if (widget.maxNumberOfColors() != 30)
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setMaxNumberOfColors() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+  
+  // number of labels
+  widget.setNumberOfLabels(5);
+  if (actor->GetNumberOfLabels() != 5)
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setNumberOfLabels() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+
+  actor->SetNumberOfLabels(10);
+  if (widget.numberOfLabels() != 10)
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setNumberOfLabels() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+
+  // title
+  widget.setTitle("title");
+  if (QString(actor->GetTitle()) != "title")
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setTitle() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+
+  actor->SetTitle("title 2");
+  if (widget.title() != "title 2")
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setTitle() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+    
+  // labels format
+  widget.setLabelsFormat("@#$%^&*");
+  if (QString(actor->GetLabelFormat()) != "@#$%^&*")
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setLabelsFormat() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+
+  actor->SetLabelFormat("@#$%^&*@#$%^&*");
+  if (widget.labelsFormat() != "@#$%^&*@#$%^&*")
+    {
+    std::cerr << "ctkVTKScalarBarWidget::setLabelsFormat() failed"
+              << std::endl;
+    return EXIT_FAILURE;
+    }
+
+  widget.show();
+  
+  if (argc < 2 || QString(argv[1]) != "-I")
+    {
+    QTimer::singleShot(200, &app, SLOT(quit()));
+    }
+  return app.exec();
+}

+ 77 - 33
Libs/Visualization/VTK/Widgets/ctkVTKScalarBarWidget.cpp

@@ -37,6 +37,8 @@ protected:
 public:
   ctkVTKScalarBarWidgetPrivate(ctkVTKScalarBarWidget& object);
   void init();
+  void updateFromScalarBarWidget();
+
   vtkScalarBarWidget* ScalarBarWidget;
 };
 
@@ -48,11 +50,6 @@ ctkVTKScalarBarWidgetPrivate::ctkVTKScalarBarWidgetPrivate(ctkVTKScalarBarWidget
 }
 
 //-----------------------------------------------------------------------------
-ctkVTKScalarBarWidget::~ctkVTKScalarBarWidget()
-{
-}
-
-//-----------------------------------------------------------------------------
 void ctkVTKScalarBarWidgetPrivate::init()
 {
   Q_Q(ctkVTKScalarBarWidget);
@@ -71,6 +68,30 @@ void ctkVTKScalarBarWidgetPrivate::init()
 }
 
 //-----------------------------------------------------------------------------
+void ctkVTKScalarBarWidgetPrivate::updateFromScalarBarWidget()
+{
+  Q_Q(ctkVTKScalarBarWidget);
+
+  vtkScalarBarActor* actor =
+    this->ScalarBarWidget ? this->ScalarBarWidget->GetScalarBarActor() : 0;
+  q->setEnabled(actor != 0);
+  if (actor == 0)
+    {
+    return;
+    }
+  this->DisplayScalarBarCheckBox->setChecked(this->ScalarBarWidget->GetEnabled() != 0);
+  this->MaxNumberOfColorsSpinBox->setValue(actor->GetMaximumNumberOfColors());
+  this->NumberOfLabelsSpinBox->setValue(actor->GetNumberOfLabels());
+
+  this->TitleTextPropertyWidget->setTextProperty(
+    actor->GetTitleTextProperty());
+  this->LabelsTextPropertyWidget->setTextProperty(
+    actor->GetLabelTextProperty());
+  this->TitleTextPropertyWidget->setText(actor->GetTitle());
+  this->LabelsTextPropertyWidget->setText(actor->GetLabelFormat());
+}
+
+//-----------------------------------------------------------------------------
 ctkVTKScalarBarWidget::ctkVTKScalarBarWidget(QWidget* parentWidget)
   :QWidget(parentWidget)
   , d_ptr(new ctkVTKScalarBarWidgetPrivate(*this))
@@ -90,6 +111,11 @@ ctkVTKScalarBarWidget::ctkVTKScalarBarWidget(vtkScalarBarWidget* scalarBarWidget
 }
 
 //-----------------------------------------------------------------------------
+ctkVTKScalarBarWidget::~ctkVTKScalarBarWidget()
+{
+}
+
+//-----------------------------------------------------------------------------
 void ctkVTKScalarBarWidget::setScalarBarWidget(vtkScalarBarWidget* scalarBarWidget)
 {
   Q_D(ctkVTKScalarBarWidget);
@@ -102,14 +128,13 @@ void ctkVTKScalarBarWidget::setScalarBarWidget(vtkScalarBarWidget* scalarBarWidg
   vtkScalarBarActor* newActor =
     scalarBarWidget ? scalarBarWidget->GetScalarBarActor() : 0;
   qvtkReconnect(d->ScalarBarWidget, scalarBarWidget, vtkCommand::EnableEvent, 
-                this, SLOT(updateFromScalarBarWidget()));
+                this, SLOT(onScalarBarModified()));
   qvtkReconnect(d->ScalarBarWidget, scalarBarWidget, vtkCommand::DisableEvent, 
-                this, SLOT(updateFromScalarBarWidget()));
+                this, SLOT(onScalarBarModified()));
   qvtkReconnect(oldActor, newActor, vtkCommand::ModifiedEvent,
-                this, SLOT(updateFromScalarBarWidget()));
+                this, SLOT(onScalarBarModified()));
   d->ScalarBarWidget = scalarBarWidget;
-  this->updateFromScalarBarWidget();
-  
+  this->onScalarBarModified();
 }
 
 //-----------------------------------------------------------------------------
@@ -120,28 +145,10 @@ vtkScalarBarWidget* ctkVTKScalarBarWidget::scalarBarWidget()const
 }
 
 //-----------------------------------------------------------------------------
-void ctkVTKScalarBarWidget::updateFromScalarBarWidget()
+void ctkVTKScalarBarWidget::onScalarBarModified()
 {
-  Q_D(const ctkVTKScalarBarWidget);
-
-  vtkScalarBarActor* actor =
-    d->ScalarBarWidget ? d->ScalarBarWidget->GetScalarBarActor() : 0;
-  this->setEnabled(actor != 0);
-  if (actor == 0)
-    {
-    return;
-    }
-  d->DisplayScalarBarCheckBox->setChecked(d->ScalarBarWidget->GetEnabled() != 0);
-  d->MaxNumberOfColorsSpinBox->setValue(actor->GetMaximumNumberOfColors());
-  d->NumberOfLabelsSpinBox->setValue(actor->GetNumberOfLabels());
-
-  d->TitleTextPropertyWidget->setTextProperty(
-    actor ? actor->GetTitleTextProperty() : 0);
-  d->LabelsTextPropertyWidget->setTextProperty(
-    actor ? actor->GetLabelTextProperty() : 0);
-  d->TitleTextPropertyWidget->setText(actor->GetTitle());
-  d->LabelsTextPropertyWidget->setText(actor->GetLabelFormat());
-  
+  Q_D(ctkVTKScalarBarWidget);
+  d->updateFromScalarBarWidget();
   emit modified();
 }
 
@@ -154,6 +161,15 @@ void ctkVTKScalarBarWidget::setDisplay(bool visible)
     return;
     }
   d->ScalarBarWidget->SetEnabled(visible);
+  // calling SetEnabled might fail, make sure the checkbox is up-to-date
+  d->DisplayScalarBarCheckBox->setChecked(d->ScalarBarWidget->GetEnabled());
+}
+
+//-----------------------------------------------------------------------------
+bool ctkVTKScalarBarWidget::display()const
+{
+  Q_D(const ctkVTKScalarBarWidget);
+  return d->DisplayScalarBarCheckBox->isChecked();
 }
 
 //-----------------------------------------------------------------------------
@@ -170,6 +186,13 @@ void ctkVTKScalarBarWidget::setMaxNumberOfColors(int colorCount)
 }
 
 //-----------------------------------------------------------------------------
+int ctkVTKScalarBarWidget::maxNumberOfColors()const
+{
+  Q_D(const ctkVTKScalarBarWidget);
+  return d->MaxNumberOfColorsSpinBox->value();
+}
+
+//-----------------------------------------------------------------------------
 void ctkVTKScalarBarWidget::setNumberOfLabels(int labelCount)
 {
   Q_D(ctkVTKScalarBarWidget);
@@ -183,6 +206,13 @@ void ctkVTKScalarBarWidget::setNumberOfLabels(int labelCount)
 }
 
 //-----------------------------------------------------------------------------
+int ctkVTKScalarBarWidget::numberOfLabels()const
+{
+  Q_D(const ctkVTKScalarBarWidget);
+  return d->NumberOfLabelsSpinBox->value();
+}
+
+//-----------------------------------------------------------------------------
 void ctkVTKScalarBarWidget::setTitle(const QString& title)
 {
   Q_D(ctkVTKScalarBarWidget);
@@ -192,7 +222,14 @@ void ctkVTKScalarBarWidget::setTitle(const QString& title)
     {
     return;
     }
-  actor->SetTitle(title.toStdString().c_str());
+  actor->SetTitle(title.toLatin1());
+}
+
+//-----------------------------------------------------------------------------
+QString ctkVTKScalarBarWidget::title()const
+{
+  Q_D(const ctkVTKScalarBarWidget);
+  return d->TitleTextPropertyWidget->text();
 }
 
 //-----------------------------------------------------------------------------
@@ -205,5 +242,12 @@ void ctkVTKScalarBarWidget::setLabelsFormat(const QString& format)
     {
     return;
     }
-  actor->SetLabelFormat(format.toStdString().c_str());
+  actor->SetLabelFormat(format.toLatin1());
+}
+
+//-----------------------------------------------------------------------------
+QString ctkVTKScalarBarWidget::labelsFormat()const
+{
+  Q_D(const ctkVTKScalarBarWidget);
+  return d->LabelsTextPropertyWidget->text();
 }

+ 11 - 3
Libs/Visualization/VTK/Widgets/ctkVTKScalarBarWidget.h

@@ -39,14 +39,22 @@ class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKScalarBarWidget : public QWidge
 
 public:
   /// Constructors
-  ctkVTKScalarBarWidget(QWidget* parentWidget);
-  ctkVTKScalarBarWidget(vtkScalarBarWidget* scalarBar, QWidget* parentWidget);
+  ctkVTKScalarBarWidget(QWidget* parentWidget = 0);
+  ctkVTKScalarBarWidget(vtkScalarBarWidget* scalarBar, QWidget* parentWidget = 0);
   virtual ~ctkVTKScalarBarWidget();
 
   vtkScalarBarWidget* scalarBarWidget()const;
 
+  bool display()const;
+  /// Returns -1 if not scalarbar is set
+  int maxNumberOfColors()const;
+  int numberOfLabels()const;
+  QString title()const;
+  QString labelsFormat()const;
+
 public slots:
   void setScalarBarWidget(vtkScalarBarWidget* scalarBar);
+
   void setDisplay(bool visible);
   void setMaxNumberOfColors(int colorCount);
   void setNumberOfLabels(int labelCount);
@@ -57,7 +65,7 @@ signals:
   void modified();
 
 protected slots:
-  void updateFromScalarBarWidget();
+  void onScalarBarModified();
 
 protected:
   QScopedPointer<ctkVTKScalarBarWidgetPrivate> d_ptr;