diff --git a/src/Gui/PrefWidgets.cpp b/src/Gui/PrefWidgets.cpp index c5750981a48d..77d7408d6f9b 100644 --- a/src/Gui/PrefWidgets.cpp +++ b/src/Gui/PrefWidgets.cpp @@ -640,4 +640,45 @@ void PrefQuantitySpinBox::setHistorySize(int i) d->historySize = i; } +// -------------------------------------------------------------------- + +PrefFontBox::PrefFontBox ( QWidget * parent ) + : QFontComboBox(parent), PrefWidget() +{ +} + +PrefFontBox::~PrefFontBox() +{ +} + +void PrefFontBox::restorePreferences() +{ + if ( getWindowParameter().isNull() ) + { + Console().Warning("Cannot restore!\n"); + return; + } + + QFont currFont = currentFont(); //QFont from selector widget + QString currName = currFont.family(); + + std::string prefName = getWindowParameter()->GetASCII(entryName(), currName.toUtf8()); //font name from cfg file + + currFont.setFamily(QString::fromStdString(prefName)); + setCurrentFont(currFont); //set selector widget to name from cfg file +} + +void PrefFontBox::savePreferences() +{ + if (getWindowParameter().isNull()) + { + Console().Warning("Cannot save!\n"); + return; + } + + QFont currFont = currentFont(); + QString currName = currFont.family(); + getWindowParameter()->SetASCII( entryName() , currName.toUtf8() ); +} + #include "moc_PrefWidgets.cpp" diff --git a/src/Gui/PrefWidgets.h b/src/Gui/PrefWidgets.h index 1a9870334e53..643ef265baf5 100644 --- a/src/Gui/PrefWidgets.h +++ b/src/Gui/PrefWidgets.h @@ -27,6 +27,8 @@ #include #include #include +#include +#include #include #include "Widgets.h" #include "Window.h" @@ -322,6 +324,26 @@ class GuiExport PrefQuantitySpinBox : public QuantitySpinBox Q_DECLARE_PRIVATE(PrefQuantitySpinBox) }; +/** The PrefFontBox class. + * \author wandererfan + */ +class GuiExport PrefFontBox : public QFontComboBox, public PrefWidget +{ + Q_OBJECT + + Q_PROPERTY( QByteArray prefEntry READ entryName WRITE setEntryName ) + Q_PROPERTY( QByteArray prefPath READ paramGrpPath WRITE setParamGrpPath ) + +public: + PrefFontBox ( QWidget * parent = 0 ); + virtual ~PrefFontBox(); + +protected: + // restore from/save to parameters + void restorePreferences(); + void savePreferences(); +}; + } // namespace Gui #endif // GUI_PREFWIDGETS_H diff --git a/src/Tools/plugins/widget/customwidgets.cpp b/src/Tools/plugins/widget/customwidgets.cpp index 51f70a6dfa79..b1840c37930d 100644 --- a/src/Tools/plugins/widget/customwidgets.cpp +++ b/src/Tools/plugins/widget/customwidgets.cpp @@ -1224,3 +1224,35 @@ void PrefSlider::setParamGrpPath ( const QByteArray& name ) { m_sPrefGrp = name; } + +// -------------------------------------------------------------------- + +PrefFontBox::PrefFontBox ( QWidget * parent ) + : QFontComboBox(parent) +{ +} + +PrefFontBox::~PrefFontBox() +{ +} + +QByteArray PrefFontBox::entryName () const +{ + return m_sPrefName; +} + +QByteArray PrefFontBox::paramGrpPath () const +{ + return m_sPrefGrp; +} + +void PrefFontBox::setEntryName ( const QByteArray& name ) +{ + m_sPrefName = name; +} + +void PrefFontBox::setParamGrpPath ( const QByteArray& name ) +{ + m_sPrefGrp = name; +} + diff --git a/src/Tools/plugins/widget/customwidgets.h b/src/Tools/plugins/widget/customwidgets.h index cdb697aab29a..361418eb8755 100644 --- a/src/Tools/plugins/widget/customwidgets.h +++ b/src/Tools/plugins/widget/customwidgets.h @@ -38,6 +38,7 @@ #include #include #include +#include namespace Base { class Quantity{}; @@ -581,6 +582,28 @@ class PrefSlider : public QSlider QByteArray m_sPrefGrp; }; +// ------------------------------------------------------------------------------ + +class PrefFontBox : public QFontComboBox +{ + Q_OBJECT + + Q_PROPERTY( QByteArray prefEntry READ entryName WRITE setEntryName ) + Q_PROPERTY( QByteArray prefPath READ paramGrpPath WRITE setParamGrpPath ) + +public: + PrefFontBox ( QWidget * parent = 0 ); + virtual ~PrefFontBox(); + + QByteArray entryName () const; + QByteArray paramGrpPath () const; + void setEntryName ( const QByteArray& name ); + void setParamGrpPath ( const QByteArray& name ); + +private: + QByteArray m_sPrefName; + QByteArray m_sPrefGrp; +}; } // namespace Gui #endif // GUI_CUSTOMWIDGETS_H diff --git a/src/Tools/plugins/widget/plugin.cpp b/src/Tools/plugins/widget/plugin.cpp index 9ac51346818f..450493fa6c6a 100644 --- a/src/Tools/plugins/widget/plugin.cpp +++ b/src/Tools/plugins/widget/plugin.cpp @@ -1372,6 +1372,87 @@ class PrefDoubleSpinBoxPlugin : public QDesignerCustomWidgetInterface } }; + +/* XPM */ +static const char *fontbox_pixmap[]={ +"22 22 6 1", +"a c #000000", +"# c #000080", +"b c #008080", +"c c #808080", +"d c #c0c0c0", +". c #ffffff", +"...#aaaaaaaaaaaaaa#...", +".baccccccccccccccccab.", +".acccddddddddddddddca.", +"#ccd.................a", +"acc..................a", +"acd..................a", +"acd..................a", +"acd. ................a", +"acd..................a", +"acd..................a", +"acd..................a", +"acd..................a", +"acd..................a", +"acd..................a", +"acd..................a", +"acd..................a", +"acd..................a", +"acd..................a", +"#cd..................#", +".ac................da.", +".badd............dda#.", +"...#aaaaaaaaaaaaaa#..."}; + +class PrefFontBoxPlugin : public QDesignerCustomWidgetInterface +{ + Q_INTERFACES(QDesignerCustomWidgetInterface) +public: + PrefFontBoxPlugin() + { + } + QWidget *createWidget(QWidget *parent) + { + return new Gui::PrefFontBox(parent); + } + QString group() const + { + return QLatin1String("Preference Widgets"); + } + QIcon icon() const + { + return QIcon( QPixmap( fontbox_pixmap ) ); + } + QString includeFile() const + { + return QLatin1String("Gui/PrefWidgets.h"); + } + QString toolTip() const + { + return QLatin1String("Font Box"); + } + QString whatsThis() const + { + return QLatin1String("Font box widget (spin button)."); + } + bool isContainer() const + { + return false; + } + QString domXml() const + { + return "\n" + " \n" + " \n" + ""; + } + QString name() const + { + return QLatin1String("Gui::PrefFontBox"); + } +}; + /* XPM */ /* static char *listbox_pixmap[]={ @@ -1432,6 +1513,7 @@ QList CustomWidgetPlugin::customWidgets () con cw.append(new PrefComboBoxPlugin); cw.append(new PrefLineEditPlugin); cw.append(new PrefDoubleSpinBoxPlugin); + cw.append(new PrefFontBoxPlugin); return cw; }