// Version: $Id: 754325c12f098a612a50d2790e88ab2e71031397 $ // // // Commentary: // // // Change Log: // // // Code: #include "dtkComposerNodeRange.h" #include "dtkComposerNodeRange_p.h" #include "dtkComposerTransmitterEmitter.h" #include "dtkComposerTransmitterReceiver.h" // ///////////////////////////////////////////////////////////////// // dtkComposerNodeRangeWidget // ///////////////////////////////////////////////////////////////// dtkComposerNodeRangeWidget::dtkComposerNodeRangeWidget(QWidget *parent) : QWidget(parent) { m_dial = new QDial(this); m_dial->setTracking(false); QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(m_dial); connect(m_dial, SIGNAL(valueChanged(int)), this, SIGNAL(valueChanged(int))); connect(m_dial, SIGNAL(rangeChanged(int, int)), this, SIGNAL(rangeChanged(int, int))); } dtkComposerNodeRangeWidget::~dtkComposerNodeRangeWidget(void) { } void dtkComposerNodeRangeWidget::setMinValue(int value) { m_dial->setMinimum(value); } void dtkComposerNodeRangeWidget::setMaxValue(int value) { m_dial->setMaximum(value); } // ///////////////////////////////////////////////////////////////// // dtkComposerNodeRangeInspector // ///////////////////////////////////////////////////////////////// dtkComposerNodeRangeInspector::dtkComposerNodeRangeInspector(QWidget *parent) : QWidget(parent) { m_min = new QSpinBox(this); m_min->setKeyboardTracking(false); m_max = new QSpinBox(this); m_max->setKeyboardTracking(false); m_min->setRange(std::numeric_limits::lowest(), std::numeric_limits::max()); m_max->setRange(std::numeric_limits::lowest(), std::numeric_limits::max()); QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(m_min); layout->addWidget(m_max); layout->addStretch(); connect(m_min, SIGNAL(valueChanged(int)), this, SIGNAL(minValueChanged(int))); connect(m_max, SIGNAL(valueChanged(int)), this, SIGNAL(maxValueChanged(int))); } dtkComposerNodeRangeInspector::~dtkComposerNodeRangeInspector(void) { } void dtkComposerNodeRangeInspector::setRange(int min, int max) { m_min->blockSignals(true); m_min->setValue(min); m_min->blockSignals(false); m_min->blockSignals(true); m_max->setValue(max); m_min->blockSignals(false); } // ///////////////////////////////////////////////////////////////// // dtkComposerNodeRangeViewWidget // ///////////////////////////////////////////////////////////////// dtkComposerNodeRangeViewWidget::dtkComposerNodeRangeViewWidget(void) { m_widget = new dtkComposerNodeRangeWidget; m_inspector = new dtkComposerNodeRangeInspector; connect(m_inspector, SIGNAL(minValueChanged(int)), m_widget, SLOT(setMinValue(int))); connect(m_inspector, SIGNAL(maxValueChanged(int)), m_widget, SLOT(setMaxValue(int))); connect(m_widget, SIGNAL(rangeChanged(int, int)), m_inspector, SLOT(setRange(int, int))); m_widget->setMinValue(-10); m_widget->setMaxValue(10); } dtkComposerNodeRangeViewWidget::~dtkComposerNodeRangeViewWidget(void) { delete m_widget; delete m_inspector; } QWidget *dtkComposerNodeRangeViewWidget::widget(void) { return m_widget; } QWidget *dtkComposerNodeRangeViewWidget::inspector(void) { return m_inspector; } // ///////////////////////////////////////////////////////////////// // dtkComposerNodeRangePrivate // ///////////////////////////////////////////////////////////////// dtkComposerNodeRangePrivate::dtkComposerNodeRangePrivate(void) : widget(new dtkComposerNodeRangeViewWidget) { connect(widget->widget(), SIGNAL(valueChanged(int)), this, SLOT(setValue(int))); } void dtkComposerNodeRangePrivate::setValue(int v) { val = v; } // ///////////////////////////////////////////////////////////////// // dtkComposerNodeRange // ///////////////////////////////////////////////////////////////// dtkComposerNodeRange::dtkComposerNodeRange(void) : d(new dtkComposerNodeRangePrivate) { this->appendEmitter(&d->emt_val); } dtkComposerNodeRange::~dtkComposerNodeRange(void) { delete d; } void dtkComposerNodeRange::setValue(int value) { d->val = value; } void dtkComposerNodeRange::run(void) { d->emt_val.setData(d->val); } dtkComposerViewWidget *dtkComposerNodeRange::widget(void) { return d->widget; } // // dtkComposerNodeRange.cpp ends here