inputint.cpp 2.33 KB
Newer Older
1 2
/******************************************************************************
 *
3
 * 
4
 *
Dimitri van Heesch's avatar
Dimitri van Heesch committed
5
 * Copyright (C) 1997-2013 by Dimitri van Heesch.
6 7 8 9 10 11 12 13 14 15
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation under the terms of the GNU General Public License is hereby 
 * granted. No representations are made about the suitability of this software 
 * for any purpose. It is provided "as is" without express or implied warranty.
 * See the GNU General Public License for more details.
 *
 */

#include "inputint.h"
16
#include "helplabel.h"
17

18
#include <QtGui>
19

20 21 22 23 24 25 26 27 28
class NoWheelSpinBox : public QSpinBox
{
  protected:
    void wheelEvent(QWheelEvent *e)
    {
      e->ignore();
    }
};

29 30 31 32 33
InputInt::InputInt( QGridLayout *layout,int &row,
                    const QString & id, 
                    int defVal, int minVal,int maxVal,
                    const QString & docs )
  : m_default(defVal), m_minVal(minVal), m_maxVal(maxVal), m_docs(docs), m_id(id)
34
{
35
  m_lab = new HelpLabel(id);
36
  m_sp  = new NoWheelSpinBox;
37 38 39 40 41
  m_sp->setMinimum(minVal);
  m_sp->setMaximum(maxVal);
  m_sp->setSingleStep(1);
  m_val=defVal-1; // force update
  setValue(defVal);
42

43 44
  layout->addWidget( m_lab, row, 0 );
  layout->addWidget( m_sp, row, 1 );
45

46 47 48 49 50 51
  connect(m_sp, SIGNAL(valueChanged(int)), 
          this, SLOT(setValue(int)) );
  connect( m_lab, SIGNAL(enter()), SLOT(help()) );
  connect( m_lab, SIGNAL(reset()), SLOT(reset()) );
  row++;
}
52

53 54 55 56
void InputInt::help()
{
  showHelp(this);
}
57 58


59 60 61 62 63 64 65 66 67
void InputInt::setValue(int val)
{
  val = qMax(m_minVal,val);
  val = qMin(m_maxVal,val);
  if (val!=m_val) 
  {
    m_val = val;
    m_sp->setValue(val);
    m_value = m_val;
68 69 70 71 72 73 74 75
    updateDefault();
  }
}

void InputInt::updateDefault()
{
  {
    if (m_val==m_default || !m_lab->isEnabled())
76 77 78 79 80 81 82 83 84
    {
      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>"));
    }
    emit changed(); 
  }
85 86
}

87
void InputInt::setEnabled(bool state)
88
{
89 90
  m_lab->setEnabled(state);
  m_sp->setEnabled(state);
91
  updateDefault();
92 93
}

94
QVariant &InputInt::value() 
95
{
96
  return m_value;
97 98
}

99
void InputInt::update()
100
{
101
  setValue(m_value.toInt());
102
}
103 104 105 106 107 108 109 110 111 112 113

void InputInt::reset()
{
  setValue(m_default);
}

void InputInt::writeValue(QTextStream &t,QTextCodec *)
{
  t << m_val;
}