00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <QDoubleValidator>
00020
00021 #include <ui_CurveStyleConfigWidget.h>
00022
00023 #include "rqt_multiplot/CurveStyleConfigWidget.h"
00024
00025 namespace rqt_multiplot {
00026
00027
00028
00029
00030
00031 CurveStyleConfigWidget::CurveStyleConfigWidget(QWidget* parent) :
00032 QWidget(parent),
00033 ui_(new Ui::CurveStyleConfigWidget()),
00034 buttonGroupSticksOrientation_(new QButtonGroup(this)),
00035 config_(0) {
00036 ui_->setupUi(this);
00037
00038 ui_->lineEditSticksBaseline->setValidator(new QDoubleValidator(
00039 ui_->lineEditSticksBaseline));
00040
00041 ui_->checkBoxLinesInterpolate->setEnabled(false);
00042 ui_->radioButtonSticksOrientationHorizontal->setEnabled(false);
00043 ui_->radioButtonSticksOrientationVertical->setEnabled(false);
00044 ui_->labelSticksBaseline->setEnabled(false);
00045 ui_->lineEditSticksBaseline->setEnabled(false);
00046 ui_->checkBoxStepsInvert->setEnabled(false);
00047
00048 buttonGroupSticksOrientation_->addButton(
00049 ui_->radioButtonSticksOrientationHorizontal);
00050 buttonGroupSticksOrientation_->addButton(
00051 ui_->radioButtonSticksOrientationVertical);
00052
00053 connect(ui_->radioButtonLines, SIGNAL(toggled(bool)), this,
00054 SLOT(radioButtonLinesToggled(bool)));
00055 connect(ui_->radioButtonSticks, SIGNAL(toggled(bool)), this,
00056 SLOT(radioButtonSticksToggled(bool)));
00057 connect(ui_->radioButtonSteps, SIGNAL(toggled(bool)), this,
00058 SLOT(radioButtonStepsToggled(bool)));
00059 connect(ui_->radioButtonPoints, SIGNAL(toggled(bool)), this,
00060 SLOT(radioButtonPointsToggled(bool)));
00061
00062 connect(ui_->checkBoxLinesInterpolate, SIGNAL(stateChanged(int)),
00063 this, SLOT(checkBoxLinesInterpolateStateChanged(int)));
00064 connect(ui_->radioButtonSticksOrientationHorizontal, SIGNAL(toggled(bool)),
00065 this, SLOT(radioButtonSticksOrientationHorizontalToggled(bool)));
00066 connect(ui_->radioButtonSticksOrientationVertical, SIGNAL(toggled(bool)),
00067 this, SLOT(radioButtonSticksOrientationVerticalToggled(bool)));
00068 connect(ui_->lineEditSticksBaseline, SIGNAL(editingFinished()),
00069 this, SLOT(lineEditSticksBaselineEditingFinished()));
00070 connect(ui_->checkBoxStepsInvert, SIGNAL(stateChanged(int)),
00071 this, SLOT(checkBoxStepsInvertStateChanged(int)));
00072
00073 connect(ui_->spinBoxPenWidth, SIGNAL(valueChanged(int)),
00074 this, SLOT(spinBoxPenWidthValueChanged(int)));
00075 connect(ui_->comboBoxPenStyle, SIGNAL(currentStyleChanged(int)),
00076 this, SLOT(comboBoxPenStyleCurrentStyleChanged(int)));
00077 connect(ui_->checkBoxRenderAntialias, SIGNAL(stateChanged(int)),
00078 this, SLOT(checkBoxRenderAntialiasStateChanged(int)));
00079 }
00080
00081 CurveStyleConfigWidget::~CurveStyleConfigWidget() {
00082 delete ui_;
00083 }
00084
00085
00086
00087
00088
00089 void CurveStyleConfigWidget::setConfig(CurveStyleConfig* config) {
00090 if (config != config_) {
00091 if (config_) {
00092 disconnect(config_, SIGNAL(typeChanged(int)), this,
00093 SLOT(styleTypeChanged(int)));
00094
00095 disconnect(config_, SIGNAL(linesInterpolateChanged(bool)),
00096 this, SLOT(configLinesInterpolateChanged(bool)));
00097 disconnect(config_, SIGNAL(sticksOrientationChanged(int)),
00098 this, SLOT(configSticksOrientationChanged(int)));
00099 disconnect(config_, SIGNAL(sticksBaselineChanged(double)),
00100 this, SLOT(configSticksBaselineChanged(double)));
00101 disconnect(config_, SIGNAL(stepsInvertChanged(bool)),
00102 this, SLOT(configStepsInvertChanged(bool)));
00103
00104 disconnect(config_, SIGNAL(penWidthChanged(size_t)),
00105 this, SLOT(configPenWidthChanged(size_t)));
00106 disconnect(config_, SIGNAL(penStyleChanged(int)),
00107 this, SLOT(configPenStyleChanged(int)));
00108 disconnect(config_, SIGNAL(renderAntialiasChanged(bool)),
00109 this, SLOT(configRenderAntialiasChanged(bool)));
00110 }
00111
00112 config_ = config;
00113
00114 if (config) {
00115 connect(config, SIGNAL(typeChanged(int)), this,
00116 SLOT(configTypeChanged(int)));
00117
00118 connect(config, SIGNAL(linesInterpolateChanged(bool)),
00119 this, SLOT(configLinesInterpolateChanged(bool)));
00120 connect(config, SIGNAL(sticksOrientationChanged(int)),
00121 this, SLOT(configSticksOrientationChanged(int)));
00122 connect(config, SIGNAL(sticksBaselineChanged(double)),
00123 this, SLOT(configSticksBaselineChanged(double)));
00124 connect(config, SIGNAL(stepsInvertChanged(bool)),
00125 this, SLOT(configStepsInvertChanged(bool)));
00126
00127 connect(config, SIGNAL(penWidthChanged(size_t)),
00128 this, SLOT(configPenWidthChanged(size_t)));
00129 connect(config, SIGNAL(penStyleChanged(int)),
00130 this, SLOT(configPenStyleChanged(int)));
00131 connect(config, SIGNAL(renderAntialiasChanged(bool)),
00132 this, SLOT(configRenderAntialiasChanged(bool)));
00133
00134 configTypeChanged(config->getType());
00135
00136 configLinesInterpolateChanged(config->areLinesInterpolated());
00137 configSticksOrientationChanged(config->getSticksOrientation());
00138 configSticksBaselineChanged(config->getSticksBaseline());
00139 configStepsInvertChanged(config->areStepsInverted());
00140
00141 configPenWidthChanged(config->getPenWidth());
00142 configPenStyleChanged(config->getPenStyle());
00143 configRenderAntialiasChanged(config->isRenderAntialiased());
00144 }
00145 }
00146 }
00147
00148 CurveStyleConfig* CurveStyleConfigWidget::getConfig() const {
00149 return config_;
00150 }
00151
00152
00153
00154
00155
00156 void CurveStyleConfigWidget::configTypeChanged(int type) {
00157 if (type == CurveStyleConfig::Sticks)
00158 ui_->radioButtonSticks->setChecked(true);
00159 else if (type == CurveStyleConfig::Steps)
00160 ui_->radioButtonSteps->setChecked(true);
00161 else if (type == CurveStyleConfig::Points)
00162 ui_->radioButtonPoints->setChecked(true);
00163 else
00164 ui_->radioButtonLines->setChecked(true);
00165 }
00166
00167 void CurveStyleConfigWidget::configLinesInterpolateChanged(bool interpolate) {
00168 ui_->checkBoxLinesInterpolate->setCheckState(interpolate ? Qt::Checked :
00169 Qt::Unchecked);
00170 }
00171
00172 void CurveStyleConfigWidget::configSticksOrientationChanged(int orientation) {
00173 ui_->radioButtonSticksOrientationHorizontal->setChecked(
00174 orientation == Qt::Horizontal);
00175 ui_->radioButtonSticksOrientationVertical->setChecked(
00176 orientation == Qt::Vertical);
00177 }
00178
00179 void CurveStyleConfigWidget::configSticksBaselineChanged(double baseline) {
00180 ui_->lineEditSticksBaseline->setText(QString::number(baseline));
00181 }
00182
00183 void CurveStyleConfigWidget::configStepsInvertChanged(bool invert) {
00184 ui_->checkBoxStepsInvert->setCheckState(invert ? Qt::Checked :
00185 Qt::Unchecked);
00186 }
00187
00188 void CurveStyleConfigWidget::configPenWidthChanged(size_t width) {
00189 ui_->spinBoxPenWidth->setValue(width);
00190 }
00191
00192 void CurveStyleConfigWidget::configPenStyleChanged(int style) {
00193 ui_->comboBoxPenStyle->setCurrentStyle(static_cast<Qt::PenStyle>(style));
00194 }
00195
00196 void CurveStyleConfigWidget::configRenderAntialiasChanged(bool antialias) {
00197 ui_->checkBoxRenderAntialias->setCheckState(antialias ? Qt::Checked :
00198 Qt::Unchecked);
00199 }
00200
00201 void CurveStyleConfigWidget::radioButtonLinesToggled(bool checked) {
00202 ui_->checkBoxLinesInterpolate->setEnabled(checked);
00203
00204 if (config_ && checked)
00205 config_->setType(CurveStyleConfig::Lines);
00206 }
00207
00208 void CurveStyleConfigWidget::radioButtonSticksToggled(bool checked) {
00209 ui_->radioButtonSticksOrientationHorizontal->setEnabled(checked);
00210 ui_->radioButtonSticksOrientationVertical->setEnabled(checked);
00211 ui_->labelSticksBaseline->setEnabled(checked);
00212 ui_->lineEditSticksBaseline->setEnabled(checked);
00213
00214 if (config_ && checked)
00215 config_->setType(CurveStyleConfig::Sticks);
00216 }
00217
00218 void CurveStyleConfigWidget::radioButtonStepsToggled(bool checked) {
00219 ui_->checkBoxStepsInvert->setEnabled(checked);
00220
00221 if (config_ && checked)
00222 config_->setType(CurveStyleConfig::Steps);
00223 }
00224
00225 void CurveStyleConfigWidget::radioButtonPointsToggled(bool checked) {
00226 if (config_ && checked)
00227 config_->setType(CurveStyleConfig::Points);
00228 }
00229
00230 void CurveStyleConfigWidget::checkBoxLinesInterpolateStateChanged(int state) {
00231 if (config_)
00232 config_->setLinesInterpolate(state == Qt::Checked);
00233 }
00234
00235 void CurveStyleConfigWidget::radioButtonSticksOrientationHorizontalToggled(
00236 bool checked) {
00237 if (config_ && checked)
00238 config_->setSticksOrientation(Qt::Horizontal);
00239 }
00240
00241 void CurveStyleConfigWidget::radioButtonSticksOrientationVerticalToggled(
00242 bool checked) {
00243 if (config_ && checked)
00244 config_->setSticksOrientation(Qt::Vertical);
00245 }
00246
00247 void CurveStyleConfigWidget::lineEditSticksBaselineEditingFinished() {
00248 if (config_)
00249 config_->setSticksBaseline(ui_->lineEditSticksBaseline->text().
00250 toDouble());
00251 }
00252
00253 void CurveStyleConfigWidget::checkBoxStepsInvertStateChanged(int state) {
00254 if (config_)
00255 config_->setStepsInvert(state == Qt::Checked);
00256 }
00257
00258 void CurveStyleConfigWidget::spinBoxPenWidthValueChanged(int value) {
00259 if (config_)
00260 config_->setPenWidth(value);
00261 }
00262
00263 void CurveStyleConfigWidget::comboBoxPenStyleCurrentStyleChanged(int style) {
00264 if (config_)
00265 config_->setPenStyle(static_cast<Qt::PenStyle>(style));
00266 }
00267
00268 void CurveStyleConfigWidget::checkBoxRenderAntialiasStateChanged(int state) {
00269 if (config_)
00270 config_->setRenderAntialias(state == Qt::Checked);
00271 }
00272
00273 }