diff options
Diffstat (limited to 'addon/doxywizard/inputbool.cpp')
-rw-r--r-- | addon/doxywizard/inputbool.cpp | 111 |
1 files changed, 81 insertions, 30 deletions
diff --git a/addon/doxywizard/inputbool.cpp b/addon/doxywizard/inputbool.cpp index fef7b9d..8dbedb1 100644 --- a/addon/doxywizard/inputbool.cpp +++ b/addon/doxywizard/inputbool.cpp @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2008 by Dimitri van Heesch. + * Copyright (C) 1997-2007 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -13,47 +13,98 @@ */ #include "inputbool.h" -//#if QT_VERSION >= 300 -//#include <qstylefactory.h> -//#else -//#include <qwindowsstyle.h> -//#endif -#include <qlayout.h> +#include "helplabel.h" +#include <QtGui> -InputBool::InputBool( const QString & text, QWidget * parent, bool &flag ) - : QWidget(parent), state(flag) +InputBool::InputBool( QGridLayout *layout, int &row, + const QString &id, bool checked, + const QString &docs ) + : m_default(checked), m_docs(docs), m_id(id) { - QBoxLayout *layout = new QHBoxLayout(this); - cb = new QCheckBox(text,this); - layout->addWidget(cb); - layout->addStretch(10); - -//#if QT_VERSION >= 300 -// QStyle *winStyle = QStyleFactory::create("windows"); -//#else -// QWindowsStyle *winStyle = new QWindowsStyle(); -//#endif - cb->setChecked( flag ); -// if (winStyle) cb->setStyle( winStyle ); - cb->setMinimumSize( sizeHint() ); + m_lab = new HelpLabel(id); + m_cb = new QCheckBox; + layout->addWidget(m_lab,row, 0); + layout->addWidget(m_cb,row, 1); + m_enabled = true; + m_state=!checked; // force update + setValue(checked); + connect( m_cb, SIGNAL(toggled(bool)), SLOT(setValue(bool)) ); + connect( m_lab, SIGNAL(enter()), SLOT(help()) ); + connect( m_lab, SIGNAL(reset()), SLOT(reset()) ); + row++; +} - connect( cb, SIGNAL(toggled(bool)), SLOT(setState(bool)) ); +void InputBool::help() +{ + showHelp(this); +} - layout->activate(); +void InputBool::setEnabled(bool b) +{ + m_enabled = b; + m_cb->setEnabled(b); + updateDependencies(); } -void InputBool::init() +void InputBool::updateDependencies() { - cb->setChecked(state); + for (int i=0;i<m_dependencies.count();i++) + { + m_dependencies[i]->setEnabled(m_enabled && m_state); + } } -void InputBool::setState( bool s ) +void InputBool::setValue( bool s ) { - if (state!=s) + if (m_state!=s) { + m_state=s; + updateDefault(); + updateDependencies(); + m_cb->setChecked( s ); + m_value = m_state; emit changed(); - emit toggle(cb->text(),s); } - state=s; +} + +void InputBool::updateDefault() +{ + if (m_state==m_default) + { + m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt")); + } + else + { + m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>")); + } +} + +QVariant &InputBool::value() +{ + return m_value; +} + +void InputBool::update() +{ + QString v = m_value.toString().toLower(); + m_state = (v==QString::fromAscii("yes") || + v==QString::fromAscii("true") || + v==QString::fromAscii("1")); + m_cb->setChecked( m_state ); + updateDefault(); + updateDependencies(); +} + +void InputBool::reset() +{ + setValue(m_default); +} + +void InputBool::writeValue(QTextStream &t,QTextCodec *codec) +{ + if (m_state) + t << codec->fromUnicode(QString::fromAscii("YES")); + else + t << codec->fromUnicode(QString::fromAscii("NO")); } |