Browse Source

Add text size in ctkVTKTextPropertyWidget

Benjamin BENEY 9 years ago
parent
commit
1454b9e22e

+ 20 - 0
Libs/Visualization/VTK/Widgets/Resources/UI/ctkVTKTextPropertyWidget.ui

@@ -111,6 +111,26 @@
      </property>
     </widget>
    </item>
+   <item row="5" column="0">
+     <widget class="QLabel" name="SizeLabel">
+       <property name="text">
+         <string>Size:</string>
+       </property>
+     </widget>
+   </item>
+   <item row="5" column="1" colspan="3">
+     <widget class="ctkDoubleSlider" name="SizeSlider">
+       <property name="singleStep">
+         <double>1.000000000000000</double>
+       </property>
+       <property name="maximum">
+         <double>100.0000000000000</double>
+       </property>
+       <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+       </property>
+     </widget>
+   </item>
   </layout>
  </widget>
  <customwidgets>

+ 39 - 0
Libs/Visualization/VTK/Widgets/ctkVTKTextPropertyWidget.cpp

@@ -72,6 +72,8 @@ void ctkVTKTextPropertyWidgetPrivate::init()
                    q, SLOT(setItalic(bool)));
   QObject::connect(this->ShadowCheckBox, SIGNAL(toggled(bool)),
                    q, SLOT(setShadow(bool)));
+  QObject::connect(this->SizeSlider, SIGNAL(valueChanged(double)),
+                   q, SLOT(setSize(double)));
 }
 
 //-----------------------------------------------------------------------------
@@ -123,6 +125,8 @@ void ctkVTKTextPropertyWidget::updateFromTextProperty()
     d->BoldCheckBox->setChecked(false);
     d->ItalicCheckBox->setChecked(false);
     d->ShadowCheckBox->setChecked(false);
+    // Default vtkTextProperty font size is 12
+    d->SizeSlider->setValue(12);
     return;
     }
 
@@ -135,6 +139,7 @@ void ctkVTKTextPropertyWidget::updateFromTextProperty()
   d->BoldCheckBox->setChecked(d->TextProperty->GetBold() != 0);
   d->ItalicCheckBox->setChecked(d->TextProperty->GetItalic() != 0);
   d->ShadowCheckBox->setChecked(d->TextProperty->GetShadow() != 0);
+  d->SizeSlider->setValue(d->TextProperty->GetFontSize());
 }
 
 //-----------------------------------------------------------------------------
@@ -301,3 +306,37 @@ void ctkVTKTextPropertyWidget::setShadow(bool enable)
   
   emit shadowChanged(enable);
 }
+
+//-----------------------------------------------------------------------------
+double ctkVTKTextPropertyWidget::size()const
+{
+  Q_D(const ctkVTKTextPropertyWidget);
+  return d->SizeSlider->value();
+}
+
+//-----------------------------------------------------------------------------
+void ctkVTKTextPropertyWidget::setSize(double size)
+{
+  Q_D(const ctkVTKTextPropertyWidget);
+  if (d->TextProperty.GetPointer() == 0)
+    {
+    return;
+    }
+  d->TextProperty->SetFontSize(size);
+
+  emit sizeChanged(size);
+}
+
+//-----------------------------------------------------------------------------
+void ctkVTKTextPropertyWidget::setSizeVisible(bool visible)
+{
+  Q_D(ctkVTKTextPropertyWidget);
+  d->SizeSlider->setVisible(visible);
+}
+
+//-----------------------------------------------------------------------------
+bool ctkVTKTextPropertyWidget::isSizeVisible()const
+{
+  Q_D(const ctkVTKTextPropertyWidget);
+  return d->SizeSlider->isVisibleTo(const_cast<ctkVTKTextPropertyWidget*>(this));
+}

+ 8 - 0
Libs/Visualization/VTK/Widgets/ctkVTKTextPropertyWidget.h

@@ -40,6 +40,7 @@ class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKTextPropertyWidget : public QWi
   Q_PROPERTY(bool showText READ isTextVisible WRITE setTextVisible);
   Q_PROPERTY(QString text READ text WRITE setText);
   Q_PROPERTY(QString textLabel READ textLabel WRITE setTextLabel);
+  Q_PROPERTY(bool showSize READ isSizeVisible WRITE setSizeVisible);
 
 public:
   /// Constructors
@@ -52,6 +53,9 @@ public:
   void setTextVisible(bool visible);
   bool isTextVisible()const;
 
+  void setSizeVisible(bool visible);
+  bool isSizeVisible()const;
+
   QString text()const;
   QString textLabel()const;
   
@@ -67,6 +71,8 @@ public:
   bool isItalic()const;
   /// Has the text shadows
   bool hasShadow()const;
+  /// Size of vtkTextProperty
+  double size()const;
 
 public Q_SLOTS:
   void setTextProperty(vtkTextProperty* textProperty);
@@ -79,6 +85,7 @@ public Q_SLOTS:
   void setBold(bool enable);
   void setItalic(bool enable);
   void setShadow(bool enable);
+  void setSize(double size);
 
 Q_SIGNALS:
   void textChanged(const QString& text);
@@ -88,6 +95,7 @@ Q_SIGNALS:
   void boldChanged(bool enable);
   void italicChanged(bool enable);
   void shadowChanged(bool enable);
+  void sizeChanged(double size);
 
 protected Q_SLOTS:
   void updateFromTextProperty();