freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2-demos] master e3ab3a3: [ftinspect] Better code.


From: Werner LEMBERG
Subject: [freetype2-demos] master e3ab3a3: [ftinspect] Better code.
Date: Tue, 03 May 2016 16:59:32 +0000

branch: master
commit e3ab3a3476412db3bd78bc0027950262fb187e60
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [ftinspect] Better code.
    
    * src/ftinspect.h (QComboBoxx): New class, derived from `QComboBox';
    we add one method `setItemEnabled' to enable (or disable) an item
    with a given index.
    (MainGUI): Use `QComboBoxx' for `antiAliasingComboBoxx' (was:
    `antiAliasingCombBox') and `hintingModeComboBoxx' (was:
    `hintingModeComboBox').
    Update all users.
    
    * src/ftinspect.cpp (MainGUI::checkHintingMode): Simplified.
    (QComboBoxx::setItemEnabled): New method.
---
 ChangeLog         |   17 ++++++-
 src/ftinspect.cpp |  129 ++++++++++++++++++++++++++++++-----------------------
 src/ftinspect.h   |   16 ++++++-
 3 files changed, 102 insertions(+), 60 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9cc48e7..520c27f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,19 @@
-2016-05-02  Werner Lemberg  <address@hidden>
+2016-05-03  Werner Lemberg  <address@hidden>
+
+       [ftinspect] Better code.
+
+       * src/ftinspect.h (QComboBoxx): New class, derived from `QComboBox';
+       we add one method `setItemEnabled' to enable (or disable) an item
+       with a given index.
+       (MainGUI): Use `QComboBoxx' for `antiAliasingComboBoxx' (was:
+       `antiAliasingCombBox') and `hintingModeComboBoxx' (was:
+       `hintingModeComboBox').
+       Update all users.
+
+       * src/ftinspect.cpp (MainGUI::checkHintingMode): Simplified.
+       (QComboBoxx::setItemEnabled): New method.
+
+2016-05-03  Werner Lemberg  <address@hidden>
 
        [ftinspect] Start with FreeType initialization.
 
diff --git a/src/ftinspect.cpp b/src/ftinspect.cpp
index aed4279..7402b0c 100644
--- a/src/ftinspect.cpp
+++ b/src/ftinspect.cpp
@@ -152,11 +152,8 @@ MainGUI::about()
 void
 MainGUI::checkHintingMode()
 {
-  int index = hintingModeComboBox->currentIndex();
-  const QStandardItemModel* model = qobject_cast<const QStandardItemModel*>
-                                      (antiAliasingComboBox->model());
-  QStandardItem* AAslightItem = model->item(AntiAliasing_Slight);
-  int AAcurrIndex = antiAliasingComboBox->currentIndex();
+  int index = hintingModeComboBoxx->currentIndex();
+  int AAcurrIndex = antiAliasingComboBoxx->currentIndex();
 
   if (index == HintingMode_AutoHinting)
   {
@@ -166,9 +163,7 @@ MainGUI::checkHintingMode()
     segmentDrawingCheckBox->setEnabled(true);
     warpingCheckBox->setEnabled(true);
 
-    AAslightItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
-    AAslightItem->setData(QVariant(),
-                          Qt::TextColorRole);
+    antiAliasingComboBoxx->setItemEnabled(AntiAliasing_Slight, true);
   }
   else
   {
@@ -178,16 +173,10 @@ MainGUI::checkHintingMode()
     segmentDrawingCheckBox->setEnabled(false);
     warpingCheckBox->setEnabled(false);
 
-    AAslightItem->setFlags(AAslightItem->flags()
-                           & ~(Qt::ItemIsSelectable | Qt::ItemIsEnabled));
-    // clear item data in order to use default color;
-    // this visually greys out the item
-    AAslightItem->setData(antiAliasingComboBox->palette().color(
-                            QPalette::Disabled, QPalette::Text),
-                          Qt::TextColorRole);
+    antiAliasingComboBoxx->setItemEnabled(AntiAliasing_Slight, false);
 
     if (AAcurrIndex == AntiAliasing_Slight)
-      antiAliasingComboBox->setCurrentIndex(AntiAliasing_Normal);
+      antiAliasingComboBoxx->setCurrentIndex(AntiAliasing_Normal);
   }
 }
 
@@ -195,7 +184,7 @@ MainGUI::checkHintingMode()
 void
 MainGUI::checkAntiAliasing()
 {
-  int index = antiAliasingComboBox->currentIndex();
+  int index = antiAliasingComboBoxx->currentIndex();
 
   if (index == AntiAliasing_None
       || index == AntiAliasing_Normal
@@ -248,20 +237,20 @@ MainGUI::createLayout()
   // left side
   hintingModeLabel = new QLabel(tr("Hinting Mode"));
   hintingModeLabel->setAlignment(Qt::AlignRight);
-  hintingModeComboBox = new QComboBox;
-  hintingModeComboBox->insertItem(HintingMode_TrueType_v35,
-                                  tr("TrueType v35"));
-  hintingModeComboBox->insertItem(HintingMode_TrueType_v38,
-                                  tr("TrueType v38"));
-  hintingModeComboBox->insertItem(HintingMode_TrueType_v40,
-                                  tr("TrueType v40"));
-  hintingModeComboBox->insertItem(HintingMode_CFF_FreeType,
-                                  tr("CFF (FreeType)"));
-  hintingModeComboBox->insertItem(HintingMode_CFF_Adobe,
-                                  tr("CFF (Adobe)"));
-  hintingModeComboBox->insertItem(HintingMode_AutoHinting,
-                                  tr("Auto-Hinting"));
-  hintingModeLabel->setBuddy(hintingModeComboBox);
+  hintingModeComboBoxx = new QComboBoxx;
+  hintingModeComboBoxx->insertItem(HintingMode_TrueType_v35,
+                                   tr("TrueType v35"));
+  hintingModeComboBoxx->insertItem(HintingMode_TrueType_v38,
+                                   tr("TrueType v38"));
+  hintingModeComboBoxx->insertItem(HintingMode_TrueType_v40,
+                                   tr("TrueType v40"));
+  hintingModeComboBoxx->insertItem(HintingMode_CFF_FreeType,
+                                   tr("CFF (FreeType)"));
+  hintingModeComboBoxx->insertItem(HintingMode_CFF_Adobe,
+                                   tr("CFF (Adobe)"));
+  hintingModeComboBoxx->insertItem(HintingMode_AutoHinting,
+                                   tr("Auto-Hinting"));
+  hintingModeLabel->setBuddy(hintingModeComboBoxx);
 
   horizontalHintingCheckBox = new QCheckBox(tr("Horizontal Hinting"));
   verticalHintingCheckBox = new QCheckBox(tr("Vertical Hinting"));
@@ -271,22 +260,22 @@ MainGUI::createLayout()
 
   antiAliasingLabel = new QLabel(tr("Anti-Aliasing"));
   antiAliasingLabel->setAlignment(Qt::AlignRight);
-  antiAliasingComboBox = new QComboBox;
-  antiAliasingComboBox->insertItem(AntiAliasing_None,
-                                   tr("None"));
-  antiAliasingComboBox->insertItem(AntiAliasing_Normal,
-                                   tr("Normal"));
-  antiAliasingComboBox->insertItem(AntiAliasing_Slight,
-                                   tr("Slight"));
-  antiAliasingComboBox->insertItem(AntiAliasing_LCD,
-                                   tr("LCD (RGB)"));
-  antiAliasingComboBox->insertItem(AntiAliasing_LCD_BGR,
-                                   tr("LCD (BGR)"));
-  antiAliasingComboBox->insertItem(AntiAliasing_LCD_Vertical,
-                                   tr("LCD (vert. RGB)"));
-  antiAliasingComboBox->insertItem(AntiAliasing_LCD_Vertical_BGR,
-                                   tr("LCD (vert. BGR)"));
-  antiAliasingLabel->setBuddy(antiAliasingComboBox);
+  antiAliasingComboBoxx = new QComboBoxx;
+  antiAliasingComboBoxx->insertItem(AntiAliasing_None,
+                                    tr("None"));
+  antiAliasingComboBoxx->insertItem(AntiAliasing_Normal,
+                                    tr("Normal"));
+  antiAliasingComboBoxx->insertItem(AntiAliasing_Slight,
+                                    tr("Slight"));
+  antiAliasingComboBoxx->insertItem(AntiAliasing_LCD,
+                                    tr("LCD (RGB)"));
+  antiAliasingComboBoxx->insertItem(AntiAliasing_LCD_BGR,
+                                    tr("LCD (BGR)"));
+  antiAliasingComboBoxx->insertItem(AntiAliasing_LCD_Vertical,
+                                    tr("LCD (vert. RGB)"));
+  antiAliasingComboBoxx->insertItem(AntiAliasing_LCD_Vertical_BGR,
+                                    tr("LCD (vert. BGR)"));
+  antiAliasingLabel->setBuddy(antiAliasingComboBoxx);
 
   lcdFilterLabel = new QLabel(tr("LCD Filter"));
   lcdFilterLabel->setAlignment(Qt::AlignRight);
@@ -308,11 +297,11 @@ MainGUI::createLayout()
 
   // ensure that all items in combo boxes fit completely;
   // also make all combo boxes have the same width
-  width = hintingModeComboBox->minimumSizeHint().width();
-  width = qMax(antiAliasingComboBox->minimumSizeHint().width(), width);
+  width = hintingModeComboBoxx->minimumSizeHint().width();
+  width = qMax(antiAliasingComboBoxx->minimumSizeHint().width(), width);
   width = qMax(lcdFilterComboBox->minimumSizeHint().width(), width);
-  hintingModeComboBox->setMinimumWidth(width);
-  antiAliasingComboBox->setMinimumWidth(width);
+  hintingModeComboBoxx->setMinimumWidth(width);
+  antiAliasingComboBoxx->setMinimumWidth(width);
   lcdFilterComboBox->setMinimumWidth(width);
 
   gammaLabel = new QLabel(tr("Gamma"));
@@ -331,11 +320,11 @@ MainGUI::createLayout()
 
   hintingModeLayout = new QHBoxLayout;
   hintingModeLayout->addWidget(hintingModeLabel);
-  hintingModeLayout->addWidget(hintingModeComboBox);
+  hintingModeLayout->addWidget(hintingModeComboBoxx);
 
   antiAliasingLayout = new QHBoxLayout;
   antiAliasingLayout->addWidget(antiAliasingLabel);
-  antiAliasingLayout->addWidget(antiAliasingComboBox);
+  antiAliasingLayout->addWidget(antiAliasingComboBoxx);
 
   lcdFilterLayout = new QHBoxLayout;
   lcdFilterLayout->addWidget(lcdFilterLabel);
@@ -513,9 +502,9 @@ MainGUI::createLayout()
 void
 MainGUI::createConnections()
 {
-  connect(hintingModeComboBox, SIGNAL(currentIndexChanged(int)), this,
+  connect(hintingModeComboBoxx, SIGNAL(currentIndexChanged(int)), this,
           SLOT(checkHintingMode()));
-  connect(antiAliasingComboBox, SIGNAL(currentIndexChanged(int)), this,
+  connect(antiAliasingComboBoxx, SIGNAL(currentIndexChanged(int)), this,
           SLOT(checkAntiAliasing()));
 
   connect(showPointsCheckBox, SIGNAL(clicked()), this,
@@ -573,8 +562,8 @@ MainGUI::setDefaults()
 {
   // XXX only dummy values right now
 
-  hintingModeComboBox->setCurrentIndex(HintingMode_TrueType_v35);
-  antiAliasingComboBox->setCurrentIndex(AntiAliasing_LCD);
+  hintingModeComboBoxx->setCurrentIndex(HintingMode_TrueType_v35);
+  antiAliasingComboBoxx->setCurrentIndex(AntiAliasing_LCD);
   lcdFilterComboBox->setCurrentIndex(LCDFilter_Light);
 
   horizontalHintingCheckBox->setChecked(true);
@@ -611,6 +600,32 @@ MainGUI::writeSettings()
 }
 
 
+void
+QComboBoxx::setItemEnabled(int index,
+                           bool enable)
+{
+  const QStandardItemModel* itemModel =
+    qobject_cast<const QStandardItemModel*>(model());
+  QStandardItem* item = itemModel->item(index);
+
+  if (enable)
+  {
+    item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
+    item->setData(QVariant(),
+                  Qt::TextColorRole);
+  }
+  else
+  {
+    item->setFlags(item->flags()
+                   & ~(Qt::ItemIsSelectable | Qt::ItemIsEnabled));
+    // clear item data in order to use default color;
+    // this visually greys out the item
+    item->setData(palette().color(QPalette::Disabled, QPalette::Text),
+                  Qt::TextColorRole);
+  }
+}
+
+
 int
 main(int argc,
      char** argv)
diff --git a/src/ftinspect.h b/src/ftinspect.h
index 63434b0..87e2418 100644
--- a/src/ftinspect.h
+++ b/src/ftinspect.h
@@ -81,6 +81,18 @@ private:
 };
 
 
+// we want to grey out items in a combo box;
+// since Qt doesn't provide a function for this we derive a class
+class QComboBoxx
+: public QComboBox
+{
+  Q_OBJECT
+
+public:
+  void setItemEnabled(int, bool);
+};
+
+
 class MainGUI
 : public QMainWindow
 {
@@ -117,8 +129,8 @@ private:
   QCheckBox *verticalHintingCheckBox;
   QCheckBox *warpingCheckBox;
 
-  QComboBox *antiAliasingComboBox;
-  QComboBox *hintingModeComboBox;
+  QComboBoxx *antiAliasingComboBoxx;
+  QComboBoxx *hintingModeComboBoxx;
   QComboBox *lcdFilterComboBox;
   QComboBox *unitsComboBox;
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]