00001
00002
00003
00004
00005
00006
00007 #include "CmdMediator.h"
00008 #include "CmdSettingsGridDisplay.h"
00009 #include "DlgSettingsGridDisplay.h"
00010 #include "EngaugeAssert.h"
00011 #include "GridInitializer.h"
00012 #include "GridLineFactory.h"
00013 #include "Logger.h"
00014 #include "MainWindow.h"
00015 #include <QCheckBox>
00016 #include <QComboBox>
00017 #include <QDoubleValidator>
00018 #include <QGraphicsScene>
00019 #include <QGridLayout>
00020 #include <QGroupBox>
00021 #include <QHBoxLayout>
00022 #include <QLabel>
00023 #include <QLineEdit>
00024 #include "ViewPreview.h"
00025
00026 const int COUNT_MIN = 1;
00027 const int COUNT_DECIMALS = 0;
00028 const int MINIMUM_HEIGHT = 480;
00029
00030 DlgSettingsGridDisplay::DlgSettingsGridDisplay(MainWindow &mainWindow) :
00031 DlgSettingsAbstractBase (tr ("Grid Display"),
00032 "DlgSettingsGridDisplay",
00033 mainWindow),
00034 m_scenePreview (0),
00035 m_viewPreview (0),
00036 m_modelGridDisplayBefore (0),
00037 m_modelGridDisplayAfter (0)
00038 {
00039 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::DlgSettingsGridDisplay";
00040
00041 QWidget *subPanel = createSubPanel ();
00042 finishPanel (subPanel);
00043 }
00044
00045 DlgSettingsGridDisplay::~DlgSettingsGridDisplay()
00046 {
00047 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::~DlgSettingsGridDisplay";
00048 }
00049
00050 void DlgSettingsGridDisplay::createDisplayCommon (QGridLayout *layout, int &row)
00051 {
00052 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::createDisplayCommon";
00053
00054 QWidget *widgetCommon = new QWidget;
00055 layout->addWidget (widgetCommon, row++, 2, 1, 2);
00056
00057 QGridLayout *layoutCommon = new QGridLayout;
00058 widgetCommon->setLayout (layoutCommon);
00059 int rowCommon = 0;
00060
00061 m_labelLimitWarning = new QLabel;
00062 m_labelLimitWarning->setStyleSheet ("QLabel { color: red; }");
00063 layoutCommon->addWidget (m_labelLimitWarning, rowCommon++, 0, 1, 4, Qt::AlignCenter);
00064
00065 QLabel *labelColor = new QLabel (tr ("Color:"));
00066 layoutCommon->addWidget (labelColor, rowCommon, 1);
00067
00068 m_cmbColor = new QComboBox;
00069 m_cmbColor->setWhatsThis (tr ("Select a color for the lines"));
00070 populateColorComboWithoutTransparent (*m_cmbColor);
00071 connect (m_cmbColor, SIGNAL (activated (const QString &)), this, SLOT (slotColor (const QString &)));
00072 layoutCommon->addWidget (m_cmbColor, rowCommon++, 2);
00073
00074
00075 layoutCommon->setColumnStretch (0, 1);
00076 layoutCommon->setColumnStretch (1, 0);
00077 layoutCommon->setColumnStretch (2, 0);
00078 layoutCommon->setColumnStretch (3, 1);
00079 }
00080
00081 void DlgSettingsGridDisplay::createDisplayGridLinesX (QGridLayout *layout, int &row)
00082 {
00083 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::createDisplayGridLinesX";
00084
00085 m_groupX = new QGroupBox;
00086 layout->addWidget (m_groupX, row, 2);
00087
00088 QGridLayout *layoutGroup = new QGridLayout;
00089 m_groupX->setLayout (layoutGroup);
00090
00091 QLabel *labelDisable = new QLabel (tr ("Disable:"));
00092 layoutGroup->addWidget (labelDisable, 0, 0);
00093
00094 m_cmbDisableX = new QComboBox;
00095 m_cmbDisableX->setWhatsThis (tr ("Disabled value.\n\n"
00096 "The X grid lines are specified using only three values at a time. For flexibility, four values "
00097 "are offered so you must chose which value is disabled. Once disabled, that value is simply "
00098 "updated as the other values change"));
00099 m_cmbDisableX->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_COUNT),
00100 QVariant (GRID_COORD_DISABLE_COUNT));
00101 m_cmbDisableX->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_START),
00102 QVariant (GRID_COORD_DISABLE_START));
00103 m_cmbDisableX->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_STEP),
00104 QVariant (GRID_COORD_DISABLE_STEP));
00105 m_cmbDisableX->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_STOP),
00106 QVariant (GRID_COORD_DISABLE_STOP));
00107 connect (m_cmbDisableX, SIGNAL (activated (const QString &)), this, SLOT (slotDisableX (const QString &)));
00108 layoutGroup->addWidget (m_cmbDisableX, 0, 1);
00109
00110 QLabel *labelCount = new QLabel (tr ("Count:"));
00111 layoutGroup->addWidget (labelCount, 1, 0);
00112
00113 m_editCountX = new QLineEdit;
00114 m_editCountX->setWhatsThis (tr ("Number of X grid lines.\n\n"
00115 "The number of X grid lines must be entered as an integer greater than zero"));
00116 m_validatorCountX = new QDoubleValidator;
00117 m_validatorCountX->setBottom (COUNT_MIN);
00118 m_validatorCountX->setDecimals (COUNT_DECIMALS);
00119 m_editCountX->setValidator (m_validatorCountX);
00120 connect (m_editCountX, SIGNAL (textEdited (const QString &)), this, SLOT (slotCountX (const QString &)));
00121 layoutGroup->addWidget (m_editCountX, 1, 1);
00122
00123 QLabel *labelStart = new QLabel (tr ("Start:"));
00124 layoutGroup->addWidget (labelStart, 2, 0);
00125
00126 m_editStartX = new QLineEdit;
00127 m_editStartX->setWhatsThis (tr ("Value of the first X grid line.\n\n"
00128 "The start value cannot be greater than the stop value"));
00129 m_validatorStartX = new QDoubleValidator;
00130 m_editStartX->setValidator (m_validatorStartX);
00131 connect (m_editStartX, SIGNAL (textEdited (const QString &)), this, SLOT (slotStartX (const QString &)));
00132 layoutGroup->addWidget (m_editStartX, 2, 1);
00133
00134 QLabel *labelStep = new QLabel (tr ("Step:"));
00135 layoutGroup->addWidget (labelStep, 3, 0);
00136
00137 m_editStepX = new QLineEdit;
00138 m_editStepX->setWhatsThis (tr ("Difference in value between two successive X grid lines.\n\n"
00139 "The step value must be greater than zero"));
00140 m_validatorStepX = new QDoubleValidator;
00141 m_editStepX->setValidator (m_validatorStepX);
00142 connect (m_editStepX, SIGNAL (textEdited (const QString &)), this, SLOT (slotStepX (const QString &)));
00143 layoutGroup->addWidget (m_editStepX, 3, 1);
00144
00145 QLabel *labelStop = new QLabel (tr ("Stop:"));
00146 layoutGroup->addWidget (labelStop, 4, 0);
00147
00148 m_editStopX = new QLineEdit;
00149 m_editStopX->setWhatsThis (tr ("Value of the last X grid line.\n\n"
00150 "The stop value cannot be less than the start value"));
00151 m_validatorStopX = new QDoubleValidator;
00152 m_editStopX->setValidator (m_validatorStopX);
00153 connect (m_editStopX, SIGNAL (textEdited (const QString &)), this, SLOT (slotStopX (const QString &)));
00154 layoutGroup->addWidget (m_editStopX, 4, 1);
00155 }
00156
00157 void DlgSettingsGridDisplay::createDisplayGridLinesY (QGridLayout *layout, int &row)
00158 {
00159 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::createDisplayGridLinesY";
00160
00161 m_groupY = new QGroupBox;
00162 layout->addWidget (m_groupY, row++, 3);
00163
00164 QGridLayout *layoutGroup = new QGridLayout;
00165 m_groupY->setLayout (layoutGroup);
00166
00167 QLabel *labelDisable = new QLabel (tr ("Disable:"));
00168 layoutGroup->addWidget (labelDisable, 0, 0);
00169
00170 m_cmbDisableY = new QComboBox;
00171 m_cmbDisableY->setWhatsThis (tr ("Disabled value.\n\n"
00172 "The Y grid lines are specified using only three values at a time. For flexibility, four values "
00173 "are offered so you must chose which value is disabled. Once disabled, that value is simply "
00174 "updated as the other values change"));
00175 m_cmbDisableY->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_COUNT),
00176 QVariant (GRID_COORD_DISABLE_COUNT));
00177 m_cmbDisableY->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_START),
00178 QVariant (GRID_COORD_DISABLE_START));
00179 m_cmbDisableY->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_STEP),
00180 QVariant (GRID_COORD_DISABLE_STEP));
00181 m_cmbDisableY->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_STOP),
00182 QVariant (GRID_COORD_DISABLE_STOP));
00183 connect (m_cmbDisableY, SIGNAL (activated (const QString &)), this, SLOT (slotDisableY (const QString &)));
00184 layoutGroup->addWidget (m_cmbDisableY, 0, 1);
00185
00186 QLabel *labelCount = new QLabel (tr ("Count:"));
00187 layoutGroup->addWidget (labelCount, 1, 0);
00188
00189 m_editCountY = new QLineEdit;
00190 m_editCountY->setWhatsThis (tr ("Number of Y grid lines.\n\n"
00191 "The number of Y grid lines must be entered as an integer greater than zero"));
00192 m_validatorCountY = new QDoubleValidator;
00193 m_validatorCountY->setBottom (COUNT_MIN);
00194 m_validatorCountY->setDecimals (COUNT_DECIMALS);
00195 m_editCountY->setValidator (m_validatorCountY);
00196 connect (m_editCountY, SIGNAL (textEdited (const QString &)), this, SLOT (slotCountY (const QString &)));
00197 layoutGroup->addWidget (m_editCountY, 1, 1);
00198
00199 QLabel *labelStart = new QLabel (tr ("Start:"));
00200 layoutGroup->addWidget (labelStart, 2, 0);
00201
00202 m_editStartY = new QLineEdit;
00203 m_editStartY->setWhatsThis (tr ("Value of the first Y grid line.\n\n"
00204 "The start value cannot be greater than the stop value"));
00205 m_validatorStartY = new QDoubleValidator;
00206 m_editStartY->setValidator (m_validatorStartY);
00207 connect (m_editStartY, SIGNAL (textEdited (const QString &)), this, SLOT (slotStartY (const QString &)));
00208 layoutGroup->addWidget (m_editStartY, 2, 1);
00209
00210 QLabel *labelStep = new QLabel (tr ("Step:"));
00211 layoutGroup->addWidget (labelStep, 3, 0);
00212
00213 m_editStepY = new QLineEdit;
00214 m_editStepY->setWhatsThis (tr ("Difference in value between two successive Y grid lines.\n\n"
00215 "The step value must be greater than zero"));
00216 m_validatorStepY = new QDoubleValidator;
00217 m_editStepY->setValidator (m_validatorStepY);
00218 connect (m_editStepY, SIGNAL (textEdited (const QString &)), this, SLOT (slotStepY (const QString &)));
00219 layoutGroup->addWidget (m_editStepY, 3, 1);
00220
00221 QLabel *labelStop = new QLabel (tr ("Stop:"));
00222 layoutGroup->addWidget (labelStop, 4, 0);
00223
00224 m_editStopY = new QLineEdit;
00225 m_editStopY->setWhatsThis (tr ("Value of the last Y grid line.\n\n"
00226 "The stop value cannot be less than the start value"));
00227 m_validatorStopY = new QDoubleValidator;
00228 m_editStopY->setValidator (m_validatorStopY);
00229 connect (m_editStopY, SIGNAL (textEdited (const QString &)), this, SLOT (slotStopY (const QString &)));
00230 layoutGroup->addWidget (m_editStopY, 4, 1);
00231 }
00232
00233 void DlgSettingsGridDisplay::createOptionalSaveDefault (QHBoxLayout * )
00234 {
00235 }
00236
00237 void DlgSettingsGridDisplay::createPreview (QGridLayout *layout, int &row)
00238 {
00239 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::createPreview";
00240
00241 QLabel *labelPreview = new QLabel (tr ("Preview"));
00242 layout->addWidget (labelPreview, row++, 0, 1, 5);
00243
00244 m_scenePreview = new QGraphicsScene (this);
00245 m_viewPreview = new ViewPreview (m_scenePreview,
00246 ViewPreview::VIEW_ASPECT_RATIO_VARIABLE,
00247 this);
00248 m_viewPreview->setWhatsThis (tr ("Preview window that shows how current settings affect grid display"));
00249 m_viewPreview->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
00250 m_viewPreview->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
00251 m_viewPreview->setMinimumHeight (MINIMUM_PREVIEW_HEIGHT);
00252 layout->addWidget (m_viewPreview, row++, 0, 1, 5);
00253 }
00254
00255 QWidget *DlgSettingsGridDisplay::createSubPanel ()
00256 {
00257 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::createSubPanel";
00258
00259 QWidget *subPanel = new QWidget ();
00260 QGridLayout *layout = new QGridLayout (subPanel);
00261 subPanel->setLayout (layout);
00262
00263 layout->setColumnStretch(0, 1);
00264 layout->setColumnStretch(1, 0);
00265 layout->setColumnStretch(2, 0);
00266 layout->setColumnStretch(3, 0);
00267 layout->setColumnStretch(4, 1);
00268
00269 int row = 0;
00270 createDisplayGridLinesX (layout, row);
00271 createDisplayGridLinesY (layout, row);
00272 createDisplayCommon (layout, row);
00273 createPreview (layout, row);
00274
00275 return subPanel;
00276 }
00277
00278 void DlgSettingsGridDisplay::handleOk ()
00279 {
00280 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::handleOk";
00281
00282
00283 m_modelGridDisplayAfter->setStable (true);
00284
00285 CmdSettingsGridDisplay *cmd = new CmdSettingsGridDisplay (mainWindow (),
00286 cmdMediator ().document(),
00287 *m_modelGridDisplayBefore,
00288 *m_modelGridDisplayAfter);
00289 cmdMediator ().push (cmd);
00290
00291 hide ();
00292 }
00293
00294 void DlgSettingsGridDisplay::load (CmdMediator &cmdMediator)
00295 {
00296 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::load";
00297
00298 setCmdMediator (cmdMediator);
00299
00300
00301 if (m_modelGridDisplayBefore != 0) {
00302 delete m_modelGridDisplayBefore;
00303 }
00304 if (m_modelGridDisplayAfter != 0) {
00305 delete m_modelGridDisplayAfter;
00306 }
00307
00308
00309 QString titleX = tr ("X Grid Lines");
00310 if (cmdMediator.document ().modelCoords().coordsType() == COORDS_TYPE_POLAR) {
00311 titleX = QString (QChar (0x98, 0x03)) + QString (" %1").arg (tr ("Grid Lines"));
00312 }
00313 m_groupX->setTitle (titleX);
00314
00315 QString titleY = tr ("Y Grid Lines");
00316 if (cmdMediator.document ().modelCoords().coordsType() == COORDS_TYPE_POLAR) {
00317 titleY = QString (tr ("Radius Grid Lines"));
00318 }
00319 m_groupY->setTitle (titleY);
00320
00321
00322 m_modelGridDisplayBefore = new DocumentModelGridDisplay (cmdMediator.document());
00323 m_modelGridDisplayAfter = new DocumentModelGridDisplay (cmdMediator.document());
00324
00325
00326 int indexDisableX = m_cmbDisableX->findData (QVariant (m_modelGridDisplayAfter->disableX()));
00327 m_cmbDisableX->setCurrentIndex (indexDisableX);
00328
00329 m_editCountX->setText(QString::number(m_modelGridDisplayAfter->countX()));
00330 m_editStartX->setText(QString::number(m_modelGridDisplayAfter->startX()));
00331 m_editStepX->setText(QString::number(m_modelGridDisplayAfter->stepX()));
00332 m_editStopX->setText(QString::number(m_modelGridDisplayAfter->stopX()));
00333
00334 int indexDisableY = m_cmbDisableY->findData (QVariant (m_modelGridDisplayAfter->disableY()));
00335 m_cmbDisableY->setCurrentIndex (indexDisableY);
00336
00337 m_editCountY->setText(QString::number(m_modelGridDisplayAfter->countY()));
00338 m_editStartY->setText(QString::number(m_modelGridDisplayAfter->startY()));
00339 m_editStepY->setText(QString::number(m_modelGridDisplayAfter->stepY()));
00340 m_editStopY->setText(QString::number(m_modelGridDisplayAfter->stopY()));
00341
00342 int indexColor = m_cmbColor->findData(QVariant(m_modelGridDisplayAfter->paletteColor()));
00343 ENGAUGE_ASSERT (indexColor >= 0);
00344 m_cmbColor->setCurrentIndex(indexColor);
00345
00346 m_scenePreview->addPixmap (cmdMediator.document().pixmap());
00347
00348 updateControls ();
00349 enableOk (false);
00350 updatePreview();
00351 }
00352
00353 void DlgSettingsGridDisplay::setSmallDialogs(bool smallDialogs)
00354 {
00355 if (!smallDialogs) {
00356 setMinimumHeight (MINIMUM_HEIGHT);
00357 }
00358 }
00359
00360 void DlgSettingsGridDisplay::slotColor (QString const &)
00361 {
00362 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotColor";
00363
00364 m_modelGridDisplayAfter->setPaletteColor((ColorPalette) m_cmbColor->currentData().toInt());
00365 updateControls();
00366 updatePreview();
00367 }
00368
00369 void DlgSettingsGridDisplay::slotCountX(const QString &count)
00370 {
00371 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotCountX";
00372
00373 m_modelGridDisplayAfter->setCountX(count.toInt());
00374 updateDisplayedVariableX ();
00375 updateControls ();
00376 updatePreview();
00377 }
00378
00379 void DlgSettingsGridDisplay::slotCountY(const QString &count)
00380 {
00381 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotCountY";
00382
00383 m_modelGridDisplayAfter->setCountY(count.toInt());
00384 updateDisplayedVariableY ();
00385 updateControls ();
00386 updatePreview();
00387 }
00388
00389 void DlgSettingsGridDisplay::slotDisableX(const QString &)
00390 {
00391 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotDisableX";
00392
00393 GridCoordDisable gridCoordDisable = (GridCoordDisable) m_cmbDisableX->currentData().toInt();
00394 m_modelGridDisplayAfter->setDisableX(gridCoordDisable);
00395 updateDisplayedVariableX ();
00396 updateControls();
00397 updatePreview();
00398 }
00399
00400 void DlgSettingsGridDisplay::slotDisableY(const QString &)
00401 {
00402 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotDisableY";
00403
00404 GridCoordDisable gridCoordDisable = (GridCoordDisable) m_cmbDisableY->currentData().toInt();
00405 m_modelGridDisplayAfter->setDisableY(gridCoordDisable);
00406 updateDisplayedVariableY ();
00407 updateControls();
00408 updatePreview();
00409 }
00410
00411 void DlgSettingsGridDisplay::slotStartX(const QString &startX)
00412 {
00413 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotStartX";
00414
00415 m_modelGridDisplayAfter->setStartX(startX.toDouble());
00416 updateDisplayedVariableX ();
00417 updateControls();
00418 updatePreview();
00419 }
00420
00421 void DlgSettingsGridDisplay::slotStartY(const QString &startY)
00422 {
00423 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotStartY";
00424
00425 m_modelGridDisplayAfter->setStartY(startY.toDouble());
00426 updateDisplayedVariableY ();
00427 updateControls();
00428 updatePreview();
00429 }
00430
00431 void DlgSettingsGridDisplay::slotStepX(const QString &stepX)
00432 {
00433 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotStepX";
00434
00435 m_modelGridDisplayAfter->setStepX(stepX.toDouble());
00436 updateDisplayedVariableX ();
00437 updateControls();
00438 updatePreview();
00439 }
00440
00441 void DlgSettingsGridDisplay::slotStepY(const QString &stepY)
00442 {
00443 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotStepY";
00444
00445 m_modelGridDisplayAfter->setStepY(stepY.toDouble());
00446 updateDisplayedVariableY ();
00447 updateControls();
00448 updatePreview();
00449 }
00450
00451 void DlgSettingsGridDisplay::slotStopX(const QString &stopX)
00452 {
00453 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotStopX";
00454
00455 m_modelGridDisplayAfter->setStopX(stopX.toDouble());
00456 updateDisplayedVariableX ();
00457 updateControls();
00458 updatePreview();
00459 }
00460
00461 void DlgSettingsGridDisplay::slotStopY(const QString &stopY)
00462 {
00463 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridDisplay::slotStopY";
00464
00465 m_modelGridDisplayAfter->setStopY(stopY.toDouble());
00466 updateDisplayedVariableY ();
00467 updateControls();
00468 updatePreview();
00469 }
00470
00471 bool DlgSettingsGridDisplay::textItemsAreValid () const
00472 {
00473 QString textCountX = m_editCountX->text();
00474 QString textCountY = m_editCountY->text();
00475 QString textStartX = m_editStartX->text();
00476 QString textStartY = m_editStartY->text();
00477 QString textStepX = m_editStepX->text();
00478 QString textStepY = m_editStepY->text();
00479 QString textStopX = m_editStopX->text();
00480 QString textStopY = m_editStopY->text();
00481
00482
00483
00484
00485 bool ok = false;
00486 int pos;
00487 if (
00488 !textCountX.isEmpty() &&
00489 !textCountY.isEmpty() &&
00490 !textStartX.isEmpty() &&
00491 !textStartY.isEmpty() &&
00492 !textStepX.isEmpty() &&
00493 !textStepY.isEmpty() &&
00494 !textStopX.isEmpty() &&
00495 !textStopY.isEmpty() &&
00496 m_validatorCountX->validate(textCountX, pos) == QValidator::Acceptable &&
00497 m_validatorCountY->validate(textCountY, pos) == QValidator::Acceptable &&
00498 m_validatorStartX->validate(textStartX, pos) == QValidator::Acceptable &&
00499 m_validatorStartY->validate(textStartY, pos) == QValidator::Acceptable &&
00500 m_validatorStepX->validate(textStepX, pos) == QValidator::Acceptable &&
00501 m_validatorStepY->validate(textStepY, pos) == QValidator::Acceptable &&
00502 m_validatorStopX->validate(textStopX, pos) == QValidator::Acceptable &&
00503 m_validatorStopY->validate(textStopY, pos) == QValidator::Acceptable) {
00504
00505
00506 double stepX = textCountX.toDouble ();
00507 double stepY = textCountY.toDouble ();
00508
00509 if (stepX != 0 && stepY != 0) {
00510
00511 ok = true;
00512 }
00513 }
00514
00515 return ok;
00516 }
00517
00518 bool DlgSettingsGridDisplay::textItemsDoNotBreakLineCountLimit ()
00519 {
00520 if (textItemsAreValid ()) {
00521 QString textCountX = m_editCountX->text();
00522 QString textCountY = m_editCountY->text();
00523 QString textStartX = m_editStartX->text();
00524 QString textStartY = m_editStartY->text();
00525 QString textStepX = m_editStepX->text();
00526 QString textStepY = m_editStepY->text();
00527 QString textStopX = m_editStopX->text();
00528 QString textStopY = m_editStopY->text();
00529
00530
00531 GridInitializer initializer;
00532
00533 bool linearAxisXTheta = (cmdMediator ().document ().modelCoords ().coordScaleXTheta() == COORD_SCALE_LINEAR);
00534 bool linearAxisYRadius = (cmdMediator ().document ().modelCoords ().coordScaleYRadius() == COORD_SCALE_LINEAR);
00535
00536 int countX = textCountX.toInt ();
00537 if (m_modelGridDisplayAfter->disableX() == GRID_COORD_DISABLE_COUNT) {
00538 countX = initializer.computeCount (linearAxisXTheta,
00539 textStartX.toDouble (),
00540 textStopX.toDouble (),
00541 textStepX.toDouble ());
00542 }
00543 int countY = textCountY.toInt ();
00544 if (m_modelGridDisplayAfter->disableY() == GRID_COORD_DISABLE_COUNT) {
00545 countY = initializer.computeCount (linearAxisYRadius,
00546 textStartY.toDouble (),
00547 textStopY.toDouble (),
00548 textStepY.toDouble ());
00549 }
00550
00551 return (countX <= mainWindow ().modelMainWindow ().maximumGridLines() &&
00552 countY <= mainWindow ().modelMainWindow ().maximumGridLines());
00553 }
00554
00555 return true;
00556 }
00557
00558 void DlgSettingsGridDisplay::updateControls ()
00559 {
00560 GridCoordDisable disableX = (GridCoordDisable) m_cmbDisableX->currentData().toInt();
00561 m_editCountX->setEnabled (disableX != GRID_COORD_DISABLE_COUNT);
00562 m_editStartX->setEnabled (disableX != GRID_COORD_DISABLE_START);
00563 m_editStepX->setEnabled (disableX != GRID_COORD_DISABLE_STEP);
00564 m_editStopX->setEnabled (disableX != GRID_COORD_DISABLE_STOP);
00565
00566 GridCoordDisable disableY = (GridCoordDisable) m_cmbDisableY->currentData().toInt();
00567 m_editCountY->setEnabled (disableY != GRID_COORD_DISABLE_COUNT);
00568 m_editStartY->setEnabled (disableY != GRID_COORD_DISABLE_START);
00569 m_editStepY->setEnabled (disableY != GRID_COORD_DISABLE_STEP);
00570 m_editStopY->setEnabled (disableY != GRID_COORD_DISABLE_STOP);
00571
00572 if (textItemsDoNotBreakLineCountLimit ()) {
00573 m_labelLimitWarning->setText ("");
00574 } else {
00575 m_labelLimitWarning->setText (tr ("Grid line count exceeds limit set by Settings / Main Window."));
00576 }
00577
00578 enableOk (textItemsAreValid () && textItemsDoNotBreakLineCountLimit ());
00579 }
00580
00581 void DlgSettingsGridDisplay::updateDisplayedVariableX ()
00582 {
00583 GridInitializer initializer;
00584
00585 bool linearAxis = (cmdMediator ().document ().modelCoords ().coordScaleXTheta() == COORD_SCALE_LINEAR);
00586
00587 switch (m_modelGridDisplayAfter->disableX()) {
00588 case GRID_COORD_DISABLE_COUNT:
00589 m_editCountX->setText (QString::number (initializer.computeCount (linearAxis,
00590 m_modelGridDisplayAfter->startX (),
00591 m_modelGridDisplayAfter->stopX (),
00592 m_modelGridDisplayAfter->stepX ())));
00593 break;
00594
00595 case GRID_COORD_DISABLE_START:
00596 m_editStartX->setText (QString::number (initializer.computeStart (linearAxis,
00597 m_modelGridDisplayAfter->stopX (),
00598 m_modelGridDisplayAfter->stepX (),
00599 m_modelGridDisplayAfter->countX ())));
00600 break;
00601
00602 case GRID_COORD_DISABLE_STEP:
00603 m_editStepX->setText (QString::number (initializer.computeStep (linearAxis,
00604 m_modelGridDisplayAfter->startX (),
00605 m_modelGridDisplayAfter->stopX (),
00606 m_modelGridDisplayAfter->countX ())));
00607 break;
00608
00609 case GRID_COORD_DISABLE_STOP:
00610 m_editStopX->setText (QString::number (initializer.computeStop (linearAxis,
00611 m_modelGridDisplayAfter->startX (),
00612 m_modelGridDisplayAfter->stepX (),
00613 m_modelGridDisplayAfter->countX ())));
00614 break;
00615
00616 default:
00617 LOG4CPP_ERROR_S ((*mainCat)) << "DlgSettingsGridDisplay::updateDisplayedVariableX";
00618 break;
00619 }
00620 }
00621
00622 void DlgSettingsGridDisplay::updateDisplayedVariableY ()
00623 {
00624 GridInitializer initializer;
00625
00626 bool linearAxis = (cmdMediator ().document ().modelCoords ().coordScaleYRadius () == COORD_SCALE_LINEAR);
00627
00628 switch (m_modelGridDisplayAfter->disableY()) {
00629 case GRID_COORD_DISABLE_COUNT:
00630 m_editCountY->setText (QString::number (initializer.computeCount (linearAxis,
00631 m_modelGridDisplayAfter->startY (),
00632 m_modelGridDisplayAfter->stopY (),
00633 m_modelGridDisplayAfter->stepY ())));
00634 break;
00635
00636 case GRID_COORD_DISABLE_START:
00637 m_editStartY->setText (QString::number (initializer.computeStart (linearAxis,
00638 m_modelGridDisplayAfter->stopY (),
00639 m_modelGridDisplayAfter->stepY (),
00640 m_modelGridDisplayAfter->countY ())));
00641 break;
00642
00643 case GRID_COORD_DISABLE_STEP:
00644 m_editStepY->setText (QString::number (initializer.computeStep (linearAxis,
00645 m_modelGridDisplayAfter->startY (),
00646 m_modelGridDisplayAfter->stopY (),
00647 m_modelGridDisplayAfter->countY ())));
00648 break;
00649
00650 case GRID_COORD_DISABLE_STOP:
00651 m_editStopY->setText (QString::number (initializer.computeStop (linearAxis,
00652 m_modelGridDisplayAfter->startY (),
00653 m_modelGridDisplayAfter->stepY (),
00654 m_modelGridDisplayAfter->countY ())));
00655 break;
00656
00657 default:
00658 LOG4CPP_ERROR_S ((*mainCat)) << "DlgSettingsGridDisplay::updateDisplayedVariableY";
00659 break;
00660 }
00661 }
00662
00663 void DlgSettingsGridDisplay::updatePreview ()
00664 {
00665 m_gridLines.clear ();
00666
00667 if (textItemsAreValid ()) {
00668
00669 GridLineFactory factory (*m_scenePreview,
00670 cmdMediator ().document ().modelCoords());
00671
00672 factory.createGridLinesForEvenlySpacedGrid (*m_modelGridDisplayAfter,
00673 cmdMediator ().document (),
00674 mainWindow ().modelMainWindow(),
00675 mainWindow ().transformation(),
00676 m_gridLines);
00677 }
00678 }