Author: jghali
Date: Wed Oct 11 22:23:54 2017
New Revision: 22191

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22191
Log:
#15004: Changing a font feature in the text PP results in tab switch

Modified:
    trunk/Scribus/scribus/ui/propertywidget_fontfeatures.cpp
    trunk/Scribus/scribus/ui/propertywidget_fontfeatures.h
    trunk/Scribus/scribus/ui/propertywidget_fontfeaturesbase.ui

Modified: trunk/Scribus/scribus/ui/propertywidget_fontfeatures.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22191&path=/trunk/Scribus/scribus/ui/propertywidget_fontfeatures.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/propertywidget_fontfeatures.cpp    (original)
+++ trunk/Scribus/scribus/ui/propertywidget_fontfeatures.cpp    Wed Oct 11 
22:23:54 2017
@@ -12,6 +12,47 @@
 #include "scribusdoc.h"
 #include "selection.h"
 
+quint64 PropertyWidget_FontFeatures::FeatureCommonLigatures          = 1;
+quint64 PropertyWidget_FontFeatures::FeatureContextualLigatures      = 
((quint64) 1 << 1);
+quint64 PropertyWidget_FontFeatures::FeatureDiscretionaryLigatures   = 
((quint64) 1 << 2);
+quint64 PropertyWidget_FontFeatures::FeatureHistoricalLigatures      = 
((quint64) 1 << 3);
+quint64 PropertyWidget_FontFeatures::FeatureSmallCaps                = 
((quint64) 1 << 4);
+quint64 PropertyWidget_FontFeatures::FeatureSmallCapsFromCaps        = 
((quint64) 1 << 5);
+quint64 PropertyWidget_FontFeatures::FeaturePetiteCaps               = 
((quint64) 1 << 6);
+quint64 PropertyWidget_FontFeatures::FeaturePetiteCapsFromCaps       = 
((quint64) 1 << 7);
+quint64 PropertyWidget_FontFeatures::FeatureUnicaseCaps              = 
((quint64) 1 << 8);
+quint64 PropertyWidget_FontFeatures::FeatureTiltingCaps              = 
((quint64) 1 << 9);
+quint64 PropertyWidget_FontFeatures::FeatureLiningNumerals           = 
((quint64) 1 << 10);
+quint64 PropertyWidget_FontFeatures::FeatureOldStyleNumerals         = 
((quint64) 1 << 11);
+quint64 PropertyWidget_FontFeatures::FeatureProportionalNumeralWidth = 
((quint64) 1 << 12);
+quint64 PropertyWidget_FontFeatures::FeatureTabularNumeralWidth      = 
((quint64) 1 << 13);
+quint64 PropertyWidget_FontFeatures::FeatureDiagonalFractions        = 
((quint64) 1 << 14);
+quint64 PropertyWidget_FontFeatures::FeatureStackedFractions         = 
((quint64) 1 << 15);
+quint64 PropertyWidget_FontFeatures::FeatureSubscript                = 
((quint64) 1 << 16);
+quint64 PropertyWidget_FontFeatures::FeatureSuperscript              = 
((quint64) 1 << 17);
+quint64 PropertyWidget_FontFeatures::FeatureOrdinals                 = 
((quint64) 1 << 18);
+quint64 PropertyWidget_FontFeatures::FeatureSlashedZero              = 
((quint64) 1 << 19);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet01               = 
((quint64) 1 << 20);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet02               = 
((quint64) 1 << 21);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet03               = 
((quint64) 1 << 22);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet04               = 
((quint64) 1 << 23);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet05               = 
((quint64) 1 << 24);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet06               = 
((quint64) 1 << 25);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet07               = 
((quint64) 1 << 26);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet08               = 
((quint64) 1 << 27);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet09               = 
((quint64) 1 << 28);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet10               = 
((quint64) 1 << 29);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet11               = 
((quint64) 1 << 30);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet12               = 
((quint64) 1 << 31);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet13               = 
((quint64) 1 << 32);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet14               = 
((quint64) 1 << 33);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet15               = 
((quint64) 1 << 34);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet16               = 
((quint64) 1 << 35);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet17               = 
((quint64) 1 << 36);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet18               = 
((quint64) 1 << 37);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet19               = 
((quint64) 1 << 38);
+quint64 PropertyWidget_FontFeatures::FeatureStyleSet20               = 
((quint64) 1 << 39);
+
 PropertyWidget_FontFeatures::PropertyWidget_FontFeatures(QWidget* parent) : 
QFrame(parent)
 {
        m_item = NULL;
@@ -50,7 +91,9 @@
 {
        if (!m_ScMW || m_ScMW->scriptIsRunning())
                return;
+
        enableFeatures(availableFeatures);
+
        QStringList fontFeatures = s.split(',');
        ContextualCheck->setChecked(true);
        CommonCheck->setChecked(true);
@@ -81,7 +124,7 @@
                else if (fontFeatures[i] == "+titl")
                        TiltingRadio->setChecked(true);
                else if (fontFeatures[i] == "+lnum")
-                       LininRadio->setChecked(true);
+                       LiningRadio->setChecked(true);
                else if (fontFeatures[i] == "+onum")
                        OldStyleRadio->setChecked(true);
                else if (fontFeatures[i] == "+pnum")
@@ -139,27 +182,21 @@
        }
 }
 
-void PropertyWidget_FontFeatures::handlefontfeatures()
+void PropertyWidget_FontFeatures::handleFontFeatures()
 {
        if (!m_doc || !m_item || !m_ScMW || m_ScMW->scriptIsRunning())
                return;
+
+       // Ligatures
        QStringList font_feature ;
+       if (!CommonCheck->isChecked())
+               font_feature << "-liga";
        if (!ContextualCheck->isChecked())
                font_feature << "-clig";
-       if (!CommonCheck->isChecked())
-               font_feature << "-liga";
        if (DiscretionaryCheck->isChecked())
                font_feature << "+dlig";
        if (HistoricalCheck->isChecked())
                font_feature << "+hlig";
-
-       //Position
-
-       if (SubscriptRadio->isChecked())
-               font_feature << "+subs";
-       if (SuperscriptRadio->isChecked())
-               font_feature <<"+sups";
-
 
        //Capitals
        if (SmallRadio->isChecked())
@@ -176,7 +213,7 @@
                font_feature << "+titl";
 
        //Numeric
-       if (LininRadio->isChecked())
+       if (LiningRadio->isChecked())
                font_feature << "+lnum";
        if (OldStyleRadio->isChecked())
                font_feature << "+onum";
@@ -189,8 +226,14 @@
        if (StackedRadio->isChecked())
                font_feature <<"+afrc";
 
+       //Position
+       if (SubscriptRadio->isChecked())
+               font_feature << "+subs";
+       if (SuperscriptRadio->isChecked())
+               font_feature << "+sups";
        if (OrdinalCheck->isChecked())
                font_feature << "+ordn";
+
        if (SlashedZeroCheck->isChecked())
                font_feature << "+zero";
 
@@ -294,172 +337,129 @@
 
 void PropertyWidget_FontFeatures::connectSignals()
 {
-       connect(ContextualCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(CommonCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(DiscretionaryCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(HistoricalCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(NormalRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(SubscriptRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(SuperscriptRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(NormalCaRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(SmallRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(SmallFromCRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(PetiteRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(PetiteCapRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(UnicaseRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(TiltingRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(DefaultStyleRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(LininRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(OldStyleRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(DefaultWidthRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(ProportionalRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(TabularRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(DefaultFractionsRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(DiagonalRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StackedRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(OrdinalCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(SlashedZeroCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet01, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet02, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet03, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet04, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet05, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet06, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet07, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet08, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet09, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet10, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet11, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet12, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet13, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet14, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet15, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet16, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet17, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet18, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet19, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       connect(StyleSet20, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
+       connect(CommonCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(ContextualCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(DiscretionaryCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(HistoricalCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+
+       connect(NormalCapRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(SmallRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(SmallFromCRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(PetiteRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(PetiteCapRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(UnicaseRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(TiltingRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+
+       connect(DefaultStyleRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(LiningRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(OldStyleRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+
+       connect(DefaultWidthRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(ProportionalRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(TabularRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+
+       connect(DefaultFractionsRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(DiagonalRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StackedRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+
+       connect(DefaultPosRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(SubscriptRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(SuperscriptRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(OrdinalCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+
+       connect(SlashedZeroCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+
+       connect(StyleSet01, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet02, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet03, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet04, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet05, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet06, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet07, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet08, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet09, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet10, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet11, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet12, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet13, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet14, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet15, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet16, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet17, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet18, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet19, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
+       connect(StyleSet20, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()), Qt::UniqueConnection);
 }
 
 void PropertyWidget_FontFeatures::disconnectSignals()
 {
-       disconnect(ContextualCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(CommonCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(DiscretionaryCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(HistoricalCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(NormalRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(SubscriptRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(SuperscriptRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(NormalCaRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(SmallRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(SmallFromCRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(PetiteRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(PetiteCapRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(UnicaseRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(TiltingRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(DefaultStyleRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(LininRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(OldStyleRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(DefaultWidthRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(ProportionalRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(TabularRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(DefaultFractionsRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(DiagonalRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StackedRadio, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(OrdinalCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(SlashedZeroCheck, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet01, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet02, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet03, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet04, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet05, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet06, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet07, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet08, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet09, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet10, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet11, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet12, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet13, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet14, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet15, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet16, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet17, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet18, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet19, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
-       disconnect(StyleSet20, SIGNAL(clicked()), this, 
SLOT(handlefontfeatures()));
+       disconnect(CommonCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(ContextualCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(DiscretionaryCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(HistoricalCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+
+       disconnect(NormalCapRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(SmallRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(SmallFromCRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(PetiteRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(PetiteCapRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(UnicaseRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(TiltingRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+
+       disconnect(DefaultStyleRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(LiningRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(OldStyleRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+
+       disconnect(DefaultWidthRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(ProportionalRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(TabularRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+
+       disconnect(DefaultFractionsRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(DiagonalRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StackedRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+
+       disconnect(DefaultPosRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(SubscriptRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(SuperscriptRadio, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(OrdinalCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+
+       disconnect(SlashedZeroCheck, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+
+       disconnect(StyleSet01, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet02, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet03, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet04, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet05, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet06, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet07, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet08, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet09, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet10, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet11, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet12, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet13, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet14, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet15, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet16, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet17, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet18, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet19, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
+       disconnect(StyleSet20, SIGNAL(clicked()), this, 
SLOT(handleFontFeatures()));
 }
 
 void PropertyWidget_FontFeatures::disableAllFeatures()
 {
-       ContextualCheck->hide();
-       CommonCheck->hide();
+       CommonCheck->setChecked(true);
+       ContextualCheck->setChecked(true);
        DiscretionaryCheck->setChecked(false);
-       DiscretionaryCheck->hide();
        HistoricalCheck->setChecked(false);
-       HistoricalCheck->hide();
-       line->hide();
        
-       NormalCaRadio->setChecked(true);
-       NormalCaRadio->hide();
-       SmallRadio->hide();
-       SmallFromCRadio->hide();
-       PetiteRadio->hide();
-       PetiteCapRadio->hide();
-       UnicaseRadio->hide();
-       TiltingRadio->hide();
-       line_3->hide();
-       
+       NormalCapRadio->setChecked(true);
        DefaultStyleRadio->setChecked(true);
-       DefaultStyleRadio->hide();
-       LininRadio->hide();
-       OldStyleRadio->hide();
-       line_5->hide();
-       
        DefaultWidthRadio->setChecked(true);
-       DefaultWidthRadio->hide();
-       ProportionalRadio->hide();
-       TabularRadio->hide();
-       line_2->hide();
-       
        DefaultFractionsRadio->setChecked(true);
-       DefaultFractionsRadio->hide();
-       DiagonalRadio->hide();
-       StackedRadio->hide();
-       line_4->hide();
-       
-       NormalRadio->setChecked(true);
-       NormalRadio->hide();
-       SubscriptRadio->hide();
-       SuperscriptRadio->hide();
-       OrdinalCheck->hide();
-       line_6->hide();
-       
+       DefaultPosRadio->setChecked(true);
        SlashedZeroCheck->setChecked(false);
-       SlashedZeroCheck->hide();
-       line_7->hide();
-
-       StyleSet01->hide();
-       StyleSet02->hide();
-       StyleSet03->hide();
-       StyleSet04->hide();
-       StyleSet05->hide();
-       StyleSet06->hide();
-       StyleSet07->hide();
-       StyleSet08->hide();
-       StyleSet09->hide();
-       StyleSet10->hide();
-       StyleSet11->hide();
-       StyleSet12->hide();
-       StyleSet13->hide();
-       StyleSet14->hide();
-       StyleSet15->hide();
-       StyleSet16->hide();
-       StyleSet17->hide();
-       StyleSet18->hide();
-       StyleSet19->hide();
-       StyleSet20->hide();
-       groupBox_7->hide();
 
        StyleSet01->setChecked(false);
        StyleSet02->setChecked(false);
@@ -486,208 +486,95 @@
 void PropertyWidget_FontFeatures::enableFeatures(QStringList fontFeatures)
 {
        quint64 oldFlags = featureFlags();
+       quint64 newFlags = featureFlagsFromList(fontFeatures);
+
        disableAllFeatures();
 
-       line->show();
-       line_2->show();
-       line_3->show();
-       line_4->show();
-       line_5->show();
-       line_6->show();
-       line_7->show();
-
-       NormalCaRadio->show();
-       DefaultStyleRadio->show();
-       DefaultWidthRadio->show();
-       DefaultFractionsRadio->show();
-       NormalRadio->show();
-
-       for (int i = 0; i < fontFeatures.count(); i++)
-       {
-               if (fontFeatures[i] == "clig")
-                       ContextualCheck->hide();
-               else if (fontFeatures[i] == "liga")
-                       CommonCheck->show();
-               else if (fontFeatures[i] == "dlig")
-                       DiscretionaryCheck->show();
-               else if (fontFeatures[i] == "hlig")
-                       HistoricalCheck->show();
-               else if (fontFeatures[i] == "subs")
-                       SubscriptRadio->show();
-               else if (fontFeatures[i] == "sups")
-                       SuperscriptRadio->show();
-               else if (fontFeatures[i] == "smcp")
-                       SmallRadio->show();
-               else if (fontFeatures[i] == "c2sc")
-                       SmallFromCRadio->show();
-               else if (fontFeatures[i] == "pcap")
-                       PetiteRadio->show();
-               else if (fontFeatures[i] == "c2pc")
-                       PetiteCapRadio->show();
-               else if (fontFeatures[i] == "unic")
-                       UnicaseRadio->show();
-               else if (fontFeatures[i] == "titl")
-                       TiltingRadio->show();
-               else if (fontFeatures[i] == "lnum")
-                       LininRadio->show();
-               else if (fontFeatures[i] == "onum")
-                       OldStyleRadio->show();
-               else if (fontFeatures[i] == "pnum")
-                       ProportionalRadio->show();
-               else if (fontFeatures[i] == "tnum")
-                       TabularRadio->show();
-               else if (fontFeatures[i] == "frac")
-                       DiagonalRadio->show();
-               else if (fontFeatures[i] == "afrc")
-                       StackedRadio->show();
-               else if (fontFeatures[i] == "ordn")
-                       OrdinalCheck->show();
-               else if (fontFeatures[i] == "zero")
-                       SlashedZeroCheck->show();
-               else if (fontFeatures[i] == "ss01")
-               {
-                       groupBox_7->show();
-                       StyleSet01->show();
-               }
-               else if (fontFeatures[i] == "ss02")
-               {
-                       groupBox_7->show();
-                       StyleSet02->show();
-               }
-               else if (fontFeatures[i] == "ss03")
-               {
-                       groupBox_7->show();
-                       StyleSet03->show();
-               }
-               else if (fontFeatures[i] == "ss04")
-               {
-                       groupBox_7->show();
-                       StyleSet04->show();
-               }
-               else if (fontFeatures[i] == "ss05")
-               {
-                       groupBox_7->show();
-                       StyleSet05->show();
-               }
-               else if (fontFeatures[i] == "ss06")
-               {
-                       groupBox_7->show();
-                       StyleSet06->show();
-               }
-               else if (fontFeatures[i] == "ss07")
-               {
-                       groupBox_7->show();
-                       StyleSet07->show();
-               }
-               else if (fontFeatures[i] == "ss08")
-               {
-                       groupBox_7->show();
-                       StyleSet08->show();
-               }
-               else if (fontFeatures[i] == "ss09")
-               {
-                       groupBox_7->show();
-                       StyleSet09->show();
-               }
-               else if (fontFeatures[i] == "ss10")
-               {
-                       groupBox_7->show();
-                       StyleSet10->show();
-               }
-               else if (fontFeatures[i] == "ss11")
-               {
-                       groupBox_7->show();
-                       StyleSet11->show();
-               }
-               else if (fontFeatures[i] == "ss12")
-               {
-                       groupBox_7->show();
-                       StyleSet12->show();
-               }
-               else if (fontFeatures[i] == "ss13")
-               {
-                       groupBox_7->show();
-                       StyleSet13->show();
-               }
-               else if (fontFeatures[i] == "ss14")
-               {
-                       groupBox_7->show();
-                       StyleSet14->show();
-               }
-               else if (fontFeatures[i] == "ss15")
-               {
-                       groupBox_7->show();
-                       StyleSet15->show();
-               }
-               else if (fontFeatures[i] == "ss16")
-               {
-                       groupBox_7->show();
-                       StyleSet16->show();
-               }
-               else if (fontFeatures[i] == "ss17")
-               {
-                       groupBox_7->show();
-                       StyleSet17->show();
-               }
-               else if (fontFeatures[i] == "ss18")
-               {
-                       groupBox_7->show();
-                       StyleSet18->show();
-               }
-               else if (fontFeatures[i] == "ss19")
-               {
-                       groupBox_7->show();
-                       StyleSet19->show();
-               }
-               else if (fontFeatures[i] == "ss20")
-               {
-                       groupBox_7->show();
-                       StyleSet20->show();
-               }
-       }
+       CommonCheck->setVisible(newFlags & FeatureCommonLigatures);
+       ContextualCheck->setVisible(newFlags & FeatureContextualLigatures);
+       DiscretionaryCheck->setVisible(newFlags & 
FeatureDiscretionaryLigatures);
+       HistoricalCheck->setVisible(newFlags & FeatureHistoricalLigatures);
+
+       SmallRadio->setVisible(newFlags & FeatureSmallCaps);
+       SmallFromCRadio->setVisible(newFlags & FeatureSmallCapsFromCaps);
+       PetiteRadio->setVisible(newFlags & FeaturePetiteCaps);
+       PetiteCapRadio->setVisible(newFlags & FeaturePetiteCapsFromCaps);
+       UnicaseRadio->setVisible(newFlags & FeatureUnicaseCaps);
+       TiltingRadio->setVisible(newFlags & FeatureTiltingCaps);
+
+       LiningRadio->setVisible(newFlags & FeatureLiningNumerals);
+       OldStyleRadio->setVisible(newFlags & FeatureOldStyleNumerals);
+
+       ProportionalRadio->setVisible(newFlags & 
FeatureProportionalNumeralWidth);
+       TabularRadio->setVisible(newFlags & FeatureTabularNumeralWidth);
+
+       DiagonalRadio->setVisible(newFlags & FeatureDiagonalFractions);
+       StackedRadio->setVisible(newFlags & FeatureStackedFractions);
+
+       SubscriptRadio->setVisible(newFlags & FeatureSubscript);
+       SuperscriptRadio->setVisible(newFlags & FeatureSuperscript);
+       OrdinalCheck->setVisible(newFlags & FeatureOrdinals);
+
+       SlashedZeroCheck->setVisible(newFlags & FeatureSlashedZero);
+
+       StyleSet01->setVisible(newFlags & FeatureStyleSet01);
+       StyleSet02->setVisible(newFlags & FeatureStyleSet02);
+       StyleSet03->setVisible(newFlags & FeatureStyleSet03);
+       StyleSet04->setVisible(newFlags & FeatureStyleSet04);
+       StyleSet05->setVisible(newFlags & FeatureStyleSet05);
+       StyleSet06->setVisible(newFlags & FeatureStyleSet06);
+       StyleSet07->setVisible(newFlags & FeatureStyleSet07);
+       StyleSet08->setVisible(newFlags & FeatureStyleSet08);
+       StyleSet09->setVisible(newFlags & FeatureStyleSet09);
+       StyleSet10->setVisible(newFlags & FeatureStyleSet10);
+       StyleSet11->setVisible(newFlags & FeatureStyleSet11);
+       StyleSet12->setVisible(newFlags & FeatureStyleSet12);
+       StyleSet13->setVisible(newFlags & FeatureStyleSet13);
+       StyleSet14->setVisible(newFlags & FeatureStyleSet14);
+       StyleSet15->setVisible(newFlags & FeatureStyleSet15);
+       StyleSet16->setVisible(newFlags & FeatureStyleSet16);
+       StyleSet17->setVisible(newFlags & FeatureStyleSet17);
+       StyleSet18->setVisible(newFlags & FeatureStyleSet18);
+       StyleSet19->setVisible(newFlags & FeatureStyleSet19);
+       StyleSet20->setVisible(newFlags & FeatureStyleSet20);
+
+       quint64 featureStyleSetMask = 0;
+       featureStyleSetMask += FeatureStyleSet01 + FeatureStyleSet02 + 
FeatureStyleSet03 + FeatureStyleSet04 + FeatureStyleSet05;
+       featureStyleSetMask += FeatureStyleSet06 + FeatureStyleSet07 + 
FeatureStyleSet08 + FeatureStyleSet09 + FeatureStyleSet10;
+       featureStyleSetMask += FeatureStyleSet11 + FeatureStyleSet12 + 
FeatureStyleSet13 + FeatureStyleSet14 + FeatureStyleSet15;
+       featureStyleSetMask += FeatureStyleSet16 + FeatureStyleSet17 + 
FeatureStyleSet18 + FeatureStyleSet19 + FeatureStyleSet20;
+       groupBox_7->setVisible(newFlags & featureStyleSetMask);
 
        // Hide Default features when their relative ones aren't found in the 
font.
-       if (SmallRadio->isHidden()
-                       && SmallFromCRadio->isHidden() && 
PetiteRadio->isHidden()
-                       && PetiteCapRadio->isHidden() && 
UnicaseRadio->isHidden()
-                       && TiltingRadio->isHidden())
-               NormalCaRadio->hide();
-
-       if (LininRadio->isHidden() && OldStyleRadio->isHidden())
-               DefaultStyleRadio->hide();
-
-       if (ProportionalRadio->isHidden() && TabularRadio->isHidden())
-               DefaultWidthRadio->hide();
-
-       if (DiagonalRadio->isHidden() && StackedRadio->isHidden())
-               DefaultFractionsRadio->hide();
-
-       if (SubscriptRadio->isHidden() && SuperscriptRadio->isHidden() && 
OrdinalCheck->isHidden())
-               NormalRadio->hide();
+       quint64 featureCapsMask = 0;
+       featureCapsMask += FeatureSmallCaps + FeatureSmallCapsFromCaps;
+       featureCapsMask += FeaturePetiteCaps + FeaturePetiteCapsFromCaps;
+       featureCapsMask += FeatureUnicaseCaps + FeatureTiltingCaps;
+       NormalCapRadio->setVisible(newFlags & featureCapsMask);
+
+       quint64 featureNumeralStyleMask = FeatureLiningNumerals + 
FeatureOldStyleNumerals;
+       DefaultStyleRadio->setVisible(newFlags & featureNumeralStyleMask);
+
+       quint64 featureNumeralWidthMask = FeatureProportionalNumeralWidth + 
FeatureTabularNumeralWidth;
+       DefaultWidthRadio->setVisible(newFlags & featureNumeralWidthMask);
+       
+       quint64 featureFractionMask = FeatureDiagonalFractions + 
FeatureStackedFractions;
+       DefaultFractionsRadio->setVisible(newFlags & featureFractionMask);
+
+       quint64 featureGlyphPositionMask = FeatureSubscript + 
FeatureSuperscript + FeatureOrdinals;
+       DefaultPosRadio->setVisible(newFlags & featureGlyphPositionMask);
 
        // Hide Lines
-       if (ContextualCheck->isHidden() && CommonCheck->isHidden()
-                       && DiscretionaryCheck->isHidden() && 
HistoricalCheck->isHidden())
-               line->hide();
-       if (NormalCaRadio->isHidden() && SmallRadio->isHidden()
-                       && SmallFromCRadio->isHidden() && 
PetiteRadio->isHidden()
-                       && PetiteCapRadio->isHidden() && 
UnicaseRadio->isHidden()
-                       && TiltingRadio->isHidden())
-               line_3->hide();
-       if (DefaultStyleRadio->isHidden() && LininRadio->isHidden()
-                       && OldStyleRadio->isHidden())
-               line_5->hide();
-       if (DefaultWidthRadio->isHidden() && ProportionalRadio->isHidden()
-                       && TabularRadio->isHidden())
-               line_2->hide();
-       if (DefaultFractionsRadio->isHidden() && DiagonalRadio->isHidden()
-                       && StackedRadio->isHidden())
-               line_4->hide();
-       if (NormalRadio->isHidden() && SubscriptRadio->isHidden()
-                       && SuperscriptRadio->isHidden() && 
OrdinalCheck->isHidden())
-               line_6->hide();
-       if (SlashedZeroCheck->isHidden() )
-               line_7->hide();
+       quint64 featureLigaturesMask = FeatureCommonLigatures + 
FeatureContextualLigatures;
+       featureLigaturesMask += FeatureDiscretionaryLigatures + 
FeatureHistoricalLigatures;
+       line->setVisible(newFlags & featureLigaturesMask);
+
+       line_2->setVisible(newFlags & featureCapsMask);
+       line_3->setVisible(newFlags & featureNumeralStyleMask);
+       line_4->setVisible(newFlags & featureNumeralWidthMask);
+       line_5->setVisible(newFlags & featureFractionMask);
+       line_6->setVisible(newFlags & featureGlyphPositionMask);
+       line_7->setVisible(SlashedZeroCheck->isVisible());
 
        // Do not trigger item relayout unnecessarily,
        // that can hurt text typing speed
@@ -699,86 +586,193 @@
 {
        quint64 flags = 0;
 
+       if (CommonCheck->isVisible())
+               flags |= FeatureCommonLigatures;
        if (ContextualCheck->isVisible())
-               flags |= 1;
-       if (CommonCheck->isVisible())
-               flags |= ((quint64) 1 << 1);
+               flags |= FeatureContextualLigatures;
        if (DiscretionaryCheck->isVisible())
-               flags |= ((quint64) 1 << 2);
+               flags |= FeatureDiscretionaryLigatures;
        if (HistoricalCheck->isVisible())
-               flags |= ((quint64) 1 << 3);
+               flags |= FeatureHistoricalLigatures;
+
+       if (SmallRadio->isVisible())
+               flags |= FeatureSmallCaps;
+       if (SmallFromCRadio->isVisible())
+               flags |= FeatureSmallCapsFromCaps;
+       if (PetiteRadio->isVisible())
+               flags |= FeaturePetiteCaps;
+       if (PetiteCapRadio->isVisible())
+               flags |= FeaturePetiteCapsFromCaps;
+       if (UnicaseRadio->isVisible())
+               flags |= FeatureUnicaseCaps;
+       if (TiltingRadio->isVisible())
+               flags |= FeatureTiltingCaps;
+
+       if (LiningRadio->isVisible())
+               flags |= FeatureLiningNumerals;
+       if (OldStyleRadio->isVisible())
+               flags |= FeatureOldStyleNumerals;
+
+       if (ProportionalRadio->isVisible())
+               flags |= FeatureProportionalNumeralWidth;
+       if (TabularRadio->isVisible())
+               flags |= FeatureTabularNumeralWidth;
+
+       if (DiagonalRadio->isVisible())
+               flags |= FeatureDiagonalFractions;
+       if (StackedRadio->isVisible())
+               flags |= FeatureStackedFractions;
+
        if (SubscriptRadio->isVisible())
-               flags |= ((quint64) 1 << 4);
+               flags |= FeatureSubscript;
        if (SuperscriptRadio->isVisible())
-               flags |= ((quint64) 1 << 5);
-       if (SmallRadio->isVisible())
-               flags |= ((quint64) 1 << 6);
-       if (SmallFromCRadio->isVisible())
-               flags |= ((quint64) 1 << 7);
-       if (PetiteRadio->isVisible())
-               flags |= ((quint64) 1 << 8);
-       if (PetiteCapRadio->isVisible())
-               flags |= ((quint64) 1 << 9);
-       if (UnicaseRadio->isVisible())
-               flags |= ((quint64) 1 << 10);
-       if (TiltingRadio->isVisible())
-               flags |= ((quint64) 1 << 11);
-       if (LininRadio->isVisible())
-               flags |= ((quint64) 1 << 12);
-       if (OldStyleRadio->isVisible())
-               flags |= ((quint64) 1 << 13);
-       if (ProportionalRadio->isVisible())
-               flags |= ((quint64) 1 << 14);
-       if (TabularRadio->isVisible())
-               flags |= ((quint64) 1 << 15);
-       if (DiagonalRadio->isVisible())
-               flags |= ((quint64) 1 << 16);
-       if (StackedRadio->isVisible())
-               flags |= ((quint64) 1 << 17);
+               flags |= FeatureSuperscript;
        if (OrdinalCheck->isVisible())
-               flags |= ((quint64) 1 << 18);
+               flags |= FeatureOrdinals;
+
        if (SlashedZeroCheck->isVisible())
-               flags |= ((quint64) 1 << 19);
+               flags |= FeatureSlashedZero;
+
        if (StyleSet01->isVisible())
-               flags |= ((quint64) 1 << 20);
+               flags |= FeatureStyleSet01;
        if (StyleSet02->isVisible())
-               flags |= ((quint64) 1 << 21);
+               flags |= FeatureStyleSet02;
        if (StyleSet03->isVisible())
-               flags |= ((quint64) 1 << 22);
+               flags |= FeatureStyleSet03;
        if (StyleSet04->isVisible())
-               flags |= ((quint64) 1 << 23);
+               flags |= FeatureStyleSet04;
        if (StyleSet05->isVisible())
-               flags |= ((quint64) 1 << 24);
+               flags |= FeatureStyleSet05;
        if (StyleSet06->isVisible())
-               flags |= ((quint64) 1 << 25);
+               flags |= FeatureStyleSet06;
        if (StyleSet07->isVisible())
-               flags |= ((quint64) 1 << 26);
+               flags |= FeatureStyleSet07;
        if (StyleSet08->isVisible())
-               flags |= ((quint64) 1 << 27);
+               flags |= FeatureStyleSet08;
        if (StyleSet09->isVisible())
-               flags |= ((quint64) 1 << 28);
+               flags |= FeatureStyleSet09;
        if (StyleSet10->isVisible())
-               flags |= ((quint64) 1 << 29);
+               flags |= FeatureStyleSet10;
        if (StyleSet11->isVisible())
-               flags |= ((quint64) 1 << 30);
+               flags |= FeatureStyleSet11;
        if (StyleSet12->isVisible())
-               flags |= ((quint64) 1 << 31);
+               flags |= FeatureStyleSet12;
        if (StyleSet13->isVisible())
-               flags |= ((quint64) 1 << 32);
+               flags |= FeatureStyleSet13;
        if (StyleSet14->isVisible())
-               flags |= ((quint64) 1 << 33);
+               flags |= FeatureStyleSet14;
        if (StyleSet15->isVisible())
-               flags |= ((quint64) 1 << 34);
+               flags |= FeatureStyleSet15;
        if (StyleSet16->isVisible())
-               flags |= ((quint64) 1 << 35);
+               flags |= FeatureStyleSet16;
        if (StyleSet17->isVisible())
-               flags |= ((quint64) 1 << 36);
+               flags |= FeatureStyleSet17;
        if (StyleSet18->isVisible())
-               flags |= ((quint64) 1 << 37);
+               flags |= FeatureStyleSet18;
        if (StyleSet19->isVisible())
-               flags |= ((quint64) 1 << 38);
+               flags |= FeatureStyleSet19;
        if (StyleSet20->isVisible())
-               flags |= ((quint64) 1 << 39);
+               flags |= FeatureStyleSet20;
+
+       return flags;
+}
+
+quint64 PropertyWidget_FontFeatures::featureFlagsFromList(QStringList features)
+{
+       quint64 flags = 0;
+
+       for (int i = 0; i < features.count(); i++)
+       {
+               const QString& feature = features.at(i);
+
+               if (feature == "liga")
+                       flags |= FeatureCommonLigatures;
+               else if (feature == "clig")
+                       flags |= FeatureContextualLigatures;
+               else if (feature == "dlig")
+                       flags |= FeatureDiscretionaryLigatures;
+               else if (feature == "hlig")
+                       flags |= FeatureHistoricalLigatures;
+
+               else if (feature == "smcp")
+                       flags |= FeatureSmallCaps;
+               else if (feature == "c2sc")
+                       flags |= FeatureSmallCapsFromCaps;
+               else if (feature == "pcap")
+                       flags |= FeaturePetiteCaps;
+               else if (feature == "c2pc")
+                       flags |= FeaturePetiteCapsFromCaps;
+               else if (feature == "unic")
+                       flags |= FeatureUnicaseCaps;
+               else if (feature == "titl")
+                       flags |= FeatureTiltingCaps;
+
+               else if (feature == "lnum")
+                       flags |= FeatureLiningNumerals;
+               else if (feature == "onum")
+                       flags |= FeatureOldStyleNumerals;
+
+               else if (feature == "pnum")
+                       flags |= FeatureProportionalNumeralWidth;
+               else if (feature == "tnum")
+                       flags |= FeatureTabularNumeralWidth;
+
+               else if (feature == "frac")
+                       flags |= FeatureDiagonalFractions;
+               else if (feature == "afrc")
+                       flags |= FeatureStackedFractions;
+
+               else if (feature == "subs")
+                       flags |= FeatureSubscript;
+               else if (feature == "sups")
+                       flags |= FeatureSuperscript;
+               else if (feature == "ordn")
+                       flags |= FeatureOrdinals;
+
+               else if (feature == "zero")
+                       flags |= FeatureSlashedZero;
+
+               else if (feature == "ss01")
+                       flags |= FeatureStyleSet01;
+               else if (feature == "ss02")
+                       flags |= FeatureStyleSet02;
+               else if (feature == "ss03")
+                       flags |= FeatureStyleSet03;
+               else if (feature == "ss04")
+                       flags |= FeatureStyleSet04;
+               else if (feature == "ss05")
+                       flags |= FeatureStyleSet05;
+               else if (feature == "ss06")
+                       flags |= FeatureStyleSet06;
+               else if (feature == "ss07")
+                       flags |= FeatureStyleSet07;
+               else if (feature == "ss08")
+                       flags |= FeatureStyleSet08;
+               else if (feature == "ss09")
+                       flags |= FeatureStyleSet09;
+               else if (feature == "ss10")
+                       flags |= FeatureStyleSet10;
+               else if (feature == "ss11")
+                       flags |= FeatureStyleSet11;
+               else if (feature == "ss12")
+                       flags |= FeatureStyleSet12;
+               else if (feature == "ss13")
+                       flags |= FeatureStyleSet13;
+               else if (feature == "ss14")
+                       flags |= FeatureStyleSet14;
+               else if (feature == "ss15")
+                       flags |= FeatureStyleSet15;
+               else if (feature == "ss16")
+                       flags |= FeatureStyleSet16;
+               else if (feature == "ss17")
+                       flags |= FeatureStyleSet17;
+               else if (feature == "ss18")
+                       flags |= FeatureStyleSet18;
+               else if (feature == "ss19")
+                       flags |= FeatureStyleSet19;
+               else if (feature == "ss20")
+                       flags |= FeatureStyleSet20;
+       }
 
        return flags;
 }
@@ -803,30 +797,37 @@
 void PropertyWidget_FontFeatures::initWidgets()
 {
        CommonCheck->setChecked(true);
-       NormalCaRadio->setChecked(true);
-       NormalRadio->setChecked(true);
-       DefaultStyleRadio->setChecked(true);
-       DefaultWidthRadio->setChecked(true);
-       DefaultFractionsRadio->setChecked(true);
        ContextualCheck->setChecked(true);
        DiscretionaryCheck->setChecked(false);
        HistoricalCheck->setChecked(false);
-       SubscriptRadio->setChecked(false);
-       SuperscriptRadio->setChecked(false);
+       
+       NormalCapRadio->setChecked(true);
        SmallRadio->setChecked(false);
        SmallFromCRadio->setChecked(false);
        PetiteRadio->setChecked(false);
        PetiteCapRadio->setChecked(false);
        UnicaseRadio->setChecked(false);
        TiltingRadio->setChecked(false);
-       LininRadio->setChecked(false);
+
+       DefaultStyleRadio->setChecked(true);
+       LiningRadio->setChecked(false);
        OldStyleRadio->setChecked(false);
+
+       DefaultWidthRadio->setChecked(true);
        ProportionalRadio->setChecked(false);
        TabularRadio->setChecked(false);
+       
+       DefaultFractionsRadio->setChecked(true);
        DiagonalRadio->setChecked(false);
        StackedRadio->setChecked(false);
+
+       DefaultPosRadio->setChecked(true);
+       SubscriptRadio->setChecked(false);
+       SuperscriptRadio->setChecked(false);
        OrdinalCheck->setChecked(false);
+
        SlashedZeroCheck->setChecked(false);
+
        StyleSet01->setChecked(false);
        StyleSet02->setChecked(false);
        StyleSet03->setChecked(false);

Modified: trunk/Scribus/scribus/ui/propertywidget_fontfeatures.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22191&path=/trunk/Scribus/scribus/ui/propertywidget_fontfeatures.h
==============================================================================
--- trunk/Scribus/scribus/ui/propertywidget_fontfeatures.h      (original)
+++ trunk/Scribus/scribus/ui/propertywidget_fontfeatures.h      Wed Oct 11 
22:23:54 2017
@@ -38,6 +38,50 @@
        virtual void changeEvent(QEvent *e);
 
        quint64 featureFlags();
+       quint64 featureFlagsFromList(QStringList features);
+
+       // Cannot use an enum here (yet) as C++98 doesn't guarantee an enum
+       // can reach 64bit in size
+       static quint64 FeatureCommonLigatures;
+       static quint64 FeatureContextualLigatures;
+       static quint64 FeatureDiscretionaryLigatures;
+       static quint64 FeatureHistoricalLigatures;
+       static quint64 FeatureSmallCaps;
+       static quint64 FeatureSmallCapsFromCaps;
+       static quint64 FeaturePetiteCaps;
+       static quint64 FeaturePetiteCapsFromCaps;
+       static quint64 FeatureUnicaseCaps;
+       static quint64 FeatureTiltingCaps;
+       static quint64 FeatureLiningNumerals;
+       static quint64 FeatureOldStyleNumerals;
+       static quint64 FeatureProportionalNumeralWidth;
+       static quint64 FeatureTabularNumeralWidth;
+       static quint64 FeatureDiagonalFractions;
+       static quint64 FeatureStackedFractions;
+       static quint64 FeatureSubscript;
+       static quint64 FeatureSuperscript;
+       static quint64 FeatureOrdinals;
+       static quint64 FeatureSlashedZero;
+       static quint64 FeatureStyleSet01;
+       static quint64 FeatureStyleSet02;
+       static quint64 FeatureStyleSet03;
+       static quint64 FeatureStyleSet04;
+       static quint64 FeatureStyleSet05;
+       static quint64 FeatureStyleSet06;
+       static quint64 FeatureStyleSet07;
+       static quint64 FeatureStyleSet08;
+       static quint64 FeatureStyleSet09;
+       static quint64 FeatureStyleSet10;
+       static quint64 FeatureStyleSet11;
+       static quint64 FeatureStyleSet12;
+       static quint64 FeatureStyleSet13;
+       static quint64 FeatureStyleSet14;
+       static quint64 FeatureStyleSet15;
+       static quint64 FeatureStyleSet16;
+       static quint64 FeatureStyleSet17;
+       static quint64 FeatureStyleSet18;
+       static quint64 FeatureStyleSet19;
+       static quint64 FeatureStyleSet20;
 
 public slots:
        void setMainWindow(ScribusMainWindow *mw);
@@ -50,7 +94,7 @@
        void updateStyle(const ParagraphStyle& newCurrent);
 
 private slots:
-       void handlefontfeatures();
+       void handleFontFeatures();
 
 signals:
        void needsRelayout();

Modified: trunk/Scribus/scribus/ui/propertywidget_fontfeaturesbase.ui
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22191&path=/trunk/Scribus/scribus/ui/propertywidget_fontfeaturesbase.ui
==============================================================================
--- trunk/Scribus/scribus/ui/propertywidget_fontfeaturesbase.ui (original)
+++ trunk/Scribus/scribus/ui/propertywidget_fontfeaturesbase.ui Wed Oct 11 
22:23:54 2017
@@ -92,7 +92,7 @@
     </widget>
    </item>
    <item>
-    <widget class="QRadioButton" name="NormalCaRadio">
+    <widget class="QRadioButton" name="NormalCapRadio">
      <property name="toolTip">
       <string>Normal capitals</string>
      </property>
@@ -182,6 +182,64 @@
      </property>
      <attribute name="buttonGroup">
       <string notr="true">CapitalsGroup</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="DefaultStyleRadio">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="toolTip">
+      <string>Default numbers style</string>
+     </property>
+     <property name="text">
+      <string>Default Numerals</string>
+     </property>
+     <property name="checked">
+      <bool>true</bool>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">NumeralStyleGroup</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="LiningRadio">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="toolTip">
+      <string>Lining Figures (lnum)</string>
+     </property>
+     <property name="text">
+      <string>Lining</string>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">NumeralStyleGroup</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="OldStyleRadio">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="toolTip">
+      <string>Oldstyle Figures (onum)</string>
+     </property>
+     <property name="text">
+      <string>Old Style</string>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">NumeralStyleGroup</string>
      </attribute>
     </widget>
    </item>
@@ -193,53 +251,111 @@
     </widget>
    </item>
    <item>
-    <widget class="QRadioButton" name="DefaultStyleRadio">
-     <property name="enabled">
-      <bool>true</bool>
-     </property>
-     <property name="toolTip">
-      <string>Default numbers style</string>
-     </property>
-     <property name="text">
-      <string>Default Numerals</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-     <attribute name="buttonGroup">
-      <string notr="true">NumeralStyleGroup</string>
-     </attribute>
-    </widget>
-   </item>
-   <item>
-    <widget class="QRadioButton" name="LininRadio">
-     <property name="enabled">
-      <bool>true</bool>
-     </property>
-     <property name="toolTip">
-      <string>Lining Figures (lnum)</string>
-     </property>
-     <property name="text">
-      <string>Lining</string>
-     </property>
-     <attribute name="buttonGroup">
-      <string notr="true">NumeralStyleGroup</string>
-     </attribute>
-    </widget>
-   </item>
-   <item>
-    <widget class="QRadioButton" name="OldStyleRadio">
-     <property name="enabled">
-      <bool>true</bool>
-     </property>
-     <property name="toolTip">
-      <string>Oldstyle Figures (onum)</string>
-     </property>
-     <property name="text">
-      <string>Old Style</string>
-     </property>
-     <attribute name="buttonGroup">
-      <string notr="true">NumeralStyleGroup</string>
+    <widget class="QRadioButton" name="DefaultWidthRadio">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="toolTip">
+      <string>Default numbers width</string>
+     </property>
+     <property name="text">
+      <string>Default Numeral Width</string>
+     </property>
+     <property name="checked">
+      <bool>true</bool>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">NumeralWidthGroup</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="ProportionalRadio">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="toolTip">
+      <string>Proportional Figures (pnum)</string>
+     </property>
+     <property name="text">
+      <string>Proportional</string>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">NumeralWidthGroup</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="TabularRadio">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="toolTip">
+      <string>Tabular Figures (tnum)</string>
+     </property>
+     <property name="text">
+      <string>Tabular</string>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">NumeralWidthGroup</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line_4">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="DefaultFractionsRadio">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="toolTip">
+      <string>No fractions</string>
+     </property>
+     <property name="text">
+      <string>No Fractions</string>
+     </property>
+     <property name="checked">
+      <bool>true</bool>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">FractionsGroup</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="DiagonalRadio">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="toolTip">
+      <string>Fractions (frac)</string>
+     </property>
+     <property name="text">
+      <string>Diagonal Fractions</string>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">FractionsGroup</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="StackedRadio">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="toolTip">
+      <string>Alternative Fractions (afrc)</string>
+     </property>
+     <property name="text">
+      <string>Stacked Fractions</string>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">FractionsGroup</string>
      </attribute>
     </widget>
    </item>
@@ -251,123 +367,7 @@
     </widget>
    </item>
    <item>
-    <widget class="QRadioButton" name="DefaultWidthRadio">
-     <property name="enabled">
-      <bool>true</bool>
-     </property>
-     <property name="toolTip">
-      <string>Default numbers width</string>
-     </property>
-     <property name="text">
-      <string>Default Numeral Width</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-     <attribute name="buttonGroup">
-      <string notr="true">NumeralWidthGroup</string>
-     </attribute>
-    </widget>
-   </item>
-   <item>
-    <widget class="QRadioButton" name="ProportionalRadio">
-     <property name="enabled">
-      <bool>true</bool>
-     </property>
-     <property name="toolTip">
-      <string>Proportional Figures (pnum)</string>
-     </property>
-     <property name="text">
-      <string>Proportional</string>
-     </property>
-     <attribute name="buttonGroup">
-      <string notr="true">NumeralWidthGroup</string>
-     </attribute>
-    </widget>
-   </item>
-   <item>
-    <widget class="QRadioButton" name="TabularRadio">
-     <property name="enabled">
-      <bool>true</bool>
-     </property>
-     <property name="toolTip">
-      <string>Tabular Figures (tnum)</string>
-     </property>
-     <property name="text">
-      <string>Tabular</string>
-     </property>
-     <attribute name="buttonGroup">
-      <string notr="true">NumeralWidthGroup</string>
-     </attribute>
-    </widget>
-   </item>
-   <item>
-    <widget class="Line" name="line_2">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QRadioButton" name="DefaultFractionsRadio">
-     <property name="enabled">
-      <bool>true</bool>
-     </property>
-     <property name="toolTip">
-      <string>No fractions</string>
-     </property>
-     <property name="text">
-      <string>No Fractions</string>
-     </property>
-     <property name="checked">
-      <bool>true</bool>
-     </property>
-     <attribute name="buttonGroup">
-      <string notr="true">FractionsGroup</string>
-     </attribute>
-    </widget>
-   </item>
-   <item>
-    <widget class="QRadioButton" name="DiagonalRadio">
-     <property name="enabled">
-      <bool>true</bool>
-     </property>
-     <property name="toolTip">
-      <string>Fractions (frac)</string>
-     </property>
-     <property name="text">
-      <string>Diagonal Fractions</string>
-     </property>
-     <attribute name="buttonGroup">
-      <string notr="true">FractionsGroup</string>
-     </attribute>
-    </widget>
-   </item>
-   <item>
-    <widget class="QRadioButton" name="StackedRadio">
-     <property name="enabled">
-      <bool>true</bool>
-     </property>
-     <property name="toolTip">
-      <string>Alternative Fractions (afrc)</string>
-     </property>
-     <property name="text">
-      <string>Stacked Fractions</string>
-     </property>
-     <attribute name="buttonGroup">
-      <string notr="true">FractionsGroup</string>
-     </attribute>
-    </widget>
-   </item>
-   <item>
-    <widget class="Line" name="line_4">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QRadioButton" name="NormalRadio">
+    <widget class="QRadioButton" name="DefaultPosRadio">
      <property name="toolTip">
       <string>Normal position</string>
      </property>
@@ -607,8 +607,8 @@
  <buttongroups>
   <buttongroup name="PositionGroup"/>
   <buttongroup name="CapitalsGroup"/>
-  <buttongroup name="FractionsGroup"/>
   <buttongroup name="NumeralWidthGroup"/>
   <buttongroup name="NumeralStyleGroup"/>
+  <buttongroup name="FractionsGroup"/>
  </buttongroups>
 </ui>


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to