Blame addon/doxywizard/inputbool.cpp

Packit 1c1d7e
/******************************************************************************
Packit 1c1d7e
 *
Packit 1c1d7e
 * 
Packit 1c1d7e
 *
Packit 1c1d7e
 * Copyright (C) 1997-2015 by Dimitri van Heesch.
Packit 1c1d7e
 *
Packit 1c1d7e
 * Permission to use, copy, modify, and distribute this software and its
Packit 1c1d7e
 * documentation under the terms of the GNU General Public License is hereby 
Packit 1c1d7e
 * granted. No representations are made about the suitability of this software 
Packit 1c1d7e
 * for any purpose. It is provided "as is" without express or implied warranty.
Packit 1c1d7e
 * See the GNU General Public License for more details.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
Packit 1c1d7e
#include "inputbool.h"
Packit 1c1d7e
#include "helplabel.h"
Packit 1c1d7e
Packit 1c1d7e
#include <QCheckBox>
Packit 1c1d7e
#include <QTextStream>
Packit 1c1d7e
#include <QTextCodec>
Packit 1c1d7e
#include <QGridLayout>
Packit 1c1d7e
Packit 1c1d7e
InputBool::InputBool( QGridLayout *layout, int &row, 
Packit 1c1d7e
                      const QString &id, bool checked,
Packit 1c1d7e
                      const QString &docs )
Packit 1c1d7e
  : m_default(checked), m_docs(docs), m_id(id)
Packit 1c1d7e
{
Packit 1c1d7e
  m_lab = new HelpLabel(id);
Packit 1c1d7e
  m_cb = new QCheckBox;
Packit 1c1d7e
  layout->addWidget(m_lab,row, 0);
Packit 1c1d7e
  layout->addWidget(m_cb,row, 1);
Packit 1c1d7e
  m_enabled = true;
Packit 1c1d7e
  m_state=!checked; // force update
Packit 1c1d7e
  setValue(checked);
Packit 1c1d7e
  connect( m_cb, SIGNAL(toggled(bool)), SLOT(setValue(bool)) );
Packit 1c1d7e
  connect( m_lab, SIGNAL(enter()), SLOT(help()) );
Packit 1c1d7e
  connect( m_lab, SIGNAL(reset()), SLOT(reset()) );
Packit 1c1d7e
  row++;
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
void InputBool::help()
Packit 1c1d7e
{
Packit 1c1d7e
  showHelp(this);
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
void InputBool::setEnabled(bool b)
Packit 1c1d7e
{ 
Packit 1c1d7e
  m_enabled = b;
Packit 1c1d7e
  m_cb->setEnabled(b); 
Packit 1c1d7e
  m_lab->setEnabled(b); 
Packit 1c1d7e
  updateDefault();
Packit 1c1d7e
  updateDependencies();
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
void InputBool::updateDependencies()
Packit 1c1d7e
{
Packit 1c1d7e
  for (int i=0;i
Packit 1c1d7e
  {
Packit 1c1d7e
    m_dependencies[i]->setEnabled(m_enabled && m_state);
Packit 1c1d7e
  }
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
void InputBool::setValue( bool s )
Packit 1c1d7e
{
Packit 1c1d7e
  if (m_state!=s) 
Packit 1c1d7e
  {
Packit 1c1d7e
    m_state=s;
Packit 1c1d7e
    updateDefault();
Packit 1c1d7e
    updateDependencies();
Packit 1c1d7e
    m_cb->setChecked( s );
Packit 1c1d7e
    m_value = m_state;
Packit 1c1d7e
    emit changed();
Packit 1c1d7e
  }
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
void InputBool::updateDefault()
Packit 1c1d7e
{
Packit 1c1d7e
  if (m_state==m_default || !m_lab->isEnabled())
Packit 1c1d7e
  {
Packit 1c1d7e
    m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("
Packit 1c1d7e
  }
Packit 1c1d7e
  else
Packit 1c1d7e
  {
Packit 1c1d7e
    m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
Packit 1c1d7e
  }
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
QVariant &InputBool::value()
Packit 1c1d7e
{
Packit 1c1d7e
  return m_value;
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
void InputBool::update()
Packit 1c1d7e
{
Packit 1c1d7e
  QString v = m_value.toString().toLower();
Packit 1c1d7e
  m_state = (v==QString::fromLatin1("yes")  || 
Packit 1c1d7e
             v==QString::fromLatin1("true") || 
Packit 1c1d7e
             v==QString::fromLatin1("1"));
Packit 1c1d7e
  m_cb->setChecked( m_state );
Packit 1c1d7e
  updateDefault();
Packit 1c1d7e
  updateDependencies();
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
void InputBool::reset()
Packit 1c1d7e
{
Packit 1c1d7e
  setValue(m_default);
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
void InputBool::writeValue(QTextStream &t,QTextCodec *codec)
Packit 1c1d7e
{
Packit 1c1d7e
  if (m_state) 
Packit 1c1d7e
    t << codec->fromUnicode(QString::fromLatin1("YES")); 
Packit 1c1d7e
  else 
Packit 1c1d7e
    t << codec->fromUnicode(QString::fromLatin1("NO"));
Packit 1c1d7e
}
Packit 1c1d7e