Engauge Digitizer 2
Loading...
Searching...
No Matches
DlgSettingsGridRemoval.cpp
Go to the documentation of this file.
1/******************************************************************************************************
2 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5 ******************************************************************************************************/
6
7#include "CmdMediator.h"
10#include "EngaugeAssert.h"
11#include "GridInitializer.h"
12#include "GridRemoval.h"
13#include "Logger.h"
14#include "MainWindow.h"
15#include <QCheckBox>
16#include <QComboBox>
17#include <QDoubleValidator>
18#include <QGraphicsScene>
19#include <QGridLayout>
20#include <QGroupBox>
21#include <QHBoxLayout>
22#include <QLabel>
23#include <QLineEdit>
24#include <QPixmap>
25#include "ViewPreview.h"
26
27const double CLOSE_DISTANCE_MAX = 64;
28const double CLOSE_DISTANCE_MIN = 0;
29const int CLOSE_DECIMALS = 1;
30const int COUNT_MIN = 1;
31const int COUNT_MAX = 100;
32const int COUNT_DECIMALS = 0;
33const int MINIMUM_HEIGHT = 480;
34
36 DlgSettingsAbstractBase (tr ("Grid Removal"),
37 "DlgSettingsGridRemoval",
38 mainWindow),
39 m_validatorCloseDistance (nullptr),
40 m_validatorCountX (nullptr),
41 m_validatorStartX (nullptr),
42 m_validatorStepX (nullptr),
43 m_validatorStopX (nullptr),
44 m_validatorCountY (nullptr),
45 m_validatorStartY (nullptr),
46 m_validatorStepY (nullptr),
47 m_validatorStopY (nullptr),
48 m_scenePreview (nullptr),
49 m_viewPreview (nullptr),
50 m_modelGridRemovalBefore (nullptr),
51 m_modelGridRemovalAfter (nullptr)
52{
53 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::DlgSettingsGridRemoval";
54
57}
58
60{
61 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::~DlgSettingsGridRemoval";
62
63 delete m_validatorCloseDistance;
64 delete m_validatorCountX;
65 delete m_validatorStartX;
66 delete m_validatorStepX;
67 delete m_validatorStopX;
68 delete m_validatorCountY;
69 delete m_validatorStartY;
70 delete m_validatorStepY;
71 delete m_validatorStopY;
72}
73
77
78void DlgSettingsGridRemoval::createPreview (QGridLayout *layout, int &row)
79{
80 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::createPreview";
81
82 QLabel *labelPreview = new QLabel (tr ("Preview"));
83 layout->addWidget (labelPreview, row++, 0, 1, 5);
84
85 m_scenePreview = new QGraphicsScene (this);
86 m_viewPreview = new ViewPreview (m_scenePreview,
88 this);
89 m_viewPreview->setWhatsThis (tr ("Preview window that shows how current settings affect grid removal"));
90 m_viewPreview->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
91 m_viewPreview->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
92 m_viewPreview->setMinimumHeight (MINIMUM_PREVIEW_HEIGHT);
93 layout->addWidget (m_viewPreview, row++, 0, 1, 5);
94}
95
96void DlgSettingsGridRemoval::createRemoveGridLines (QGridLayout *layout, int &row)
97{
98 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::createRemoveGridLines";
99
100 m_chkRemoveGridLines = new QCheckBox (tr ("Remove pixels close to defined grid lines"));
101 m_chkRemoveGridLines->setWhatsThis (tr ("Check this box to have pixels close to regularly spaced gridlines removed.\n\n"
102 "This option is only available when the axis points have all been defined."));
103 connect (m_chkRemoveGridLines, SIGNAL (stateChanged (int)), this, SLOT (slotRemoveGridLines (int)));
104 layout->addWidget (m_chkRemoveGridLines, row++, 1, 1, 3);
105
106 QLabel *labelCloseDistance = new QLabel (QString ("%1:").arg (tr ("Close distance (pixels)")));
107 layout->addWidget (labelCloseDistance, row, 2);
108
109 m_editCloseDistance = new QLineEdit;
110 m_editCloseDistance->setWhatsThis (tr ("Set closeness distance in pixels.\n\n"
111 "Pixels that are closer to the regularly spaced gridlines, than this distance, "
112 "will be removed.\n\n"
113 "This value cannot be negative. A zero value disables this feature. Decimal values are allowed"));
114 m_validatorCloseDistance = new QDoubleValidator (CLOSE_DISTANCE_MIN, CLOSE_DISTANCE_MAX, CLOSE_DECIMALS);
115 m_editCloseDistance->setValidator (m_validatorCloseDistance);
116 connect (m_editCloseDistance, SIGNAL (textChanged (const QString &)), this, SLOT (slotCloseDistance (const QString &)));
117 layout->addWidget (m_editCloseDistance, row++, 3);
118
119 createRemoveGridLinesX (layout, row);
120 createRemoveGridLinesY (layout, row);
121}
122
123void DlgSettingsGridRemoval::createRemoveGridLinesX (QGridLayout *layout, int &row)
124{
125 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::createRemoveGridLinesX";
126
127 QString titleX = tr ("X Grid Lines");
128 if (false) {
129 titleX = QString (QChar (0x98, 0x03)) + QString (" %1").arg (tr ("Grid Lines"));
130 }
132 layout->addWidget (groupX, row, 2);
133
135 groupX->setLayout (layoutGroup);
136
137 QLabel *labelDisable = new QLabel (QString ("%1:").arg (tr ("Disable")));
138 layoutGroup->addWidget (labelDisable, 0, 0);
139
140 m_cmbDisableX = new QComboBox;
141 m_cmbDisableX->setWhatsThis (tr ("Disabled value.\n\n"
142 "The X grid lines are specified using only three values at a time. For flexibility, four values "
143 "are offered so you must chose which value is disabled. Once disabled, that value is simply "
144 "updated as the other values change"));
145 m_cmbDisableX->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_COUNT),
147 m_cmbDisableX->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_START),
149 m_cmbDisableX->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_STEP),
151 m_cmbDisableX->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_STOP),
153 connect (m_cmbDisableX, SIGNAL (activated (const QString &)), this, SLOT (slotDisableX (const QString &))); // activated() ignores code changes
154 layoutGroup->addWidget (m_cmbDisableX, 0, 1);
155
156 QLabel *labelCount = new QLabel (QString ("%1:").arg (tr ("Count")));
157 layoutGroup->addWidget (labelCount, 1, 0);
158
159 m_editCountX = new QLineEdit;
160 m_editCountX->setWhatsThis (tr ("Number of X grid lines.\n\n"
161 "The number of X grid lines must be entered as an integer greater than zero"));
162 m_validatorCountX = new QDoubleValidator (COUNT_MIN, COUNT_MAX, COUNT_DECIMALS);
163 m_editCountX->setValidator (m_validatorCountX);
164 connect (m_editCountX, SIGNAL (textChanged (const QString &)), this, SLOT (slotCountX (const QString &)));
165 layoutGroup->addWidget (m_editCountX, 1, 1);
166
167 QLabel *labelStart = new QLabel (QString ("%1:").arg (tr ("Start")));
168 layoutGroup->addWidget (labelStart, 2, 0);
169
170 m_editStartX = new QLineEdit;
171 m_editStartX->setWhatsThis (tr ("Value of the first X grid line.\n\n"
172 "The start value cannot be greater than the stop value"));
173 m_validatorStartX = new QDoubleValidator;
174 m_editStartX->setValidator (m_validatorStartX);
175 connect (m_editStartX, SIGNAL (textChanged (const QString &)), this, SLOT (slotStartX (const QString &)));
176 layoutGroup->addWidget (m_editStartX, 2, 1);
177
178 QLabel *labelStep = new QLabel (QString ("%1:").arg (tr ("Step")));
179 layoutGroup->addWidget (labelStep, 3, 0);
180
181 m_editStepX = new QLineEdit;
182 m_editStepX->setWhatsThis (tr ("Difference in value between two successive X grid lines.\n\n"
183 "The step value must be greater than zero (linear) or one (log)"));
184 m_validatorStepX = new QDoubleValidator;
185 m_editStepX->setValidator (m_validatorStepX);
186 connect (m_editStepX, SIGNAL (textChanged (const QString &)), this, SLOT (slotStepX (const QString &)));
187 layoutGroup->addWidget (m_editStepX, 3, 1);
188
189 QLabel *labelStop = new QLabel (QString ("%1:").arg (tr ("Stop")));
190 layoutGroup->addWidget (labelStop, 4, 0);
191
192 m_editStopX = new QLineEdit;
193 m_editStopX->setWhatsThis (tr ("Value of the last X grid line.\n\n"
194 "The stop value cannot be less than the start value"));
195 m_validatorStopX = new QDoubleValidator;
196 m_editStopX->setValidator (m_validatorStopX);
197 connect (m_editStopX, SIGNAL (textChanged (const QString &)), this, SLOT (slotStopX (const QString &)));
198 layoutGroup->addWidget (m_editStopX, 4, 1);
199}
200
201void DlgSettingsGridRemoval::createRemoveGridLinesY (QGridLayout *layout, int &row)
202{
203 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::createRemoveGridLinesY";
204
205 QString titleY = tr ("Y Grid Lines");
206 if (false) {
207 titleY = QString (tr ("R Grid Lines"));
208 }
210 layout->addWidget (groupY, row++, 3);
211
213 groupY->setLayout (layoutGroup);
214
215 QLabel *labelDisable = new QLabel (QString ("%1:").arg (tr ("Disable")));
216 layoutGroup->addWidget (labelDisable, 0, 0);
217
218 m_cmbDisableY = new QComboBox;
219 m_cmbDisableY->setWhatsThis (tr ("Disabled value.\n\n"
220 "The Y grid lines are specified using only three values at a time. For flexibility, four values "
221 "are offered so you must chose which value is disabled. Once disabled, that value is simply "
222 "updated as the other values change"));
223 m_cmbDisableY->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_COUNT),
225 m_cmbDisableY->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_START),
227 m_cmbDisableY->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_STEP),
229 m_cmbDisableY->addItem(gridCoordDisableToString (GRID_COORD_DISABLE_STOP),
231 connect (m_cmbDisableY, SIGNAL (activated (const QString &)), this, SLOT (slotDisableY (const QString &))); // activated() ignores code changes
232 layoutGroup->addWidget (m_cmbDisableY, 0, 1);
233
234 QLabel *labelCount = new QLabel (QString ("%1:").arg (tr ("Count")));
235 layoutGroup->addWidget (labelCount, 1, 0);
236
237 m_editCountY = new QLineEdit;
238 m_editCountY->setWhatsThis (tr ("Number of Y grid lines.\n\n"
239 "The number of Y grid lines must be entered as an integer greater than zero"));
240 m_validatorCountY = new QDoubleValidator (COUNT_MIN, COUNT_MAX, COUNT_DECIMALS);
241 m_editCountY->setValidator (m_validatorCountY);
242 connect (m_editCountY, SIGNAL (textChanged (const QString &)), this, SLOT (slotCountY (const QString &)));
243 layoutGroup->addWidget (m_editCountY, 1, 1);
244
245 QLabel *labelStart = new QLabel (QString ("%1:").arg (tr ("Start")));
246 layoutGroup->addWidget (labelStart, 2, 0);
247
248 m_editStartY = new QLineEdit;
249 m_editStartY->setWhatsThis (tr ("Value of the first Y grid line.\n\n"
250 "The start value cannot be greater than the stop value"));
251 m_validatorStartY = new QDoubleValidator;
252 m_editStartY->setValidator (m_validatorStartY);
253 connect (m_editStartY, SIGNAL (textChanged (const QString &)), this, SLOT (slotStartY (const QString &)));
254 layoutGroup->addWidget (m_editStartY, 2, 1);
255
256 QLabel *labelStep = new QLabel (QString ("%1:").arg (tr ("Step")));
257 layoutGroup->addWidget (labelStep, 3, 0);
258
259 m_editStepY = new QLineEdit;
260 m_editStepY->setWhatsThis (tr ("Difference in value between two successive Y grid lines.\n\n"
261 "The step value must be greater than zero (linear) or one (log)"));
262 m_validatorStepY = new QDoubleValidator;
263 m_editStepY->setValidator (m_validatorStepY);
264 connect (m_editStepY, SIGNAL (textChanged (const QString &)), this, SLOT (slotStepY (const QString &)));
265 layoutGroup->addWidget (m_editStepY, 3, 1);
266
267 QLabel *labelStop = new QLabel (QString ("%1:").arg (tr ("Stop")));
268 layoutGroup->addWidget (labelStop, 4, 0);
269
270 m_editStopY = new QLineEdit;
271 m_editStopY->setWhatsThis (tr ("Value of the last Y grid line.\n\n"
272 "The stop value cannot be less than the start value"));
273 m_validatorStopY = new QDoubleValidator;
274 m_editStopY->setValidator (m_validatorStopY);
275 connect (m_editStopY, SIGNAL (textChanged (const QString &)), this, SLOT (slotStopY (const QString &)));
276 layoutGroup->addWidget (m_editStopY, 4, 1);
277}
278
280{
281 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::createSubPanel";
282
283 QWidget *subPanel = new QWidget ();
285 subPanel->setLayout (layout);
286
287 layout->setColumnStretch(0, 1); // Empty first column
288 layout->setColumnStretch(1, 0); // Checkbox part of "section" checkboxes. In other rows this has empty space as indentation
289 layout->setColumnStretch(2, 0); // X
290 layout->setColumnStretch(3, 0); // Y
291 layout->setColumnStretch(4, 1); // Empty last column
292
293 int row = 0;
294 createRemoveGridLines (layout, row);
295 createPreview (layout, row);
296
297 return subPanel;
298}
299
301{
302 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::handleOk";
303
304 // Set the stable flag
305 m_modelGridRemovalAfter->setStable ();
306
308 cmdMediator ().document(),
309 *m_modelGridRemovalBefore,
310 *m_modelGridRemovalAfter);
311 cmdMediator ().push (cmd);
312
313 hide ();
314}
315
317{
318 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::load";
319
321
322 // Flush old data
323 delete m_modelGridRemovalBefore;
324 delete m_modelGridRemovalAfter;
325
326 // Save new data
327 m_modelGridRemovalBefore = new DocumentModelGridRemoval (cmdMediator.document());
328 m_modelGridRemovalAfter = new DocumentModelGridRemoval (cmdMediator.document());
329
330 // Sanity checks. Incoming defaults must be acceptable to the local limits
332 ENGAUGE_ASSERT (CLOSE_DISTANCE_MAX >= m_modelGridRemovalAfter->closeDistance());
333
334 // Populate controls
335 m_chkRemoveGridLines->setChecked (m_modelGridRemovalAfter->removeDefinedGridLines());
336
337 m_editCloseDistance->setText (QString::number (m_modelGridRemovalAfter->closeDistance()));
338
339 int indexDisableX = m_cmbDisableX->findData (QVariant (m_modelGridRemovalAfter->gridCoordDisableX()));
340 m_cmbDisableX->setCurrentIndex (indexDisableX);
341
342 m_editCountX->setText(QString::number(m_modelGridRemovalAfter->countX()));
343 m_editStartX->setText(QString::number(m_modelGridRemovalAfter->startX()));
344 m_editStepX->setText(QString::number(m_modelGridRemovalAfter->stepX()));
345 m_editStopX->setText(QString::number(m_modelGridRemovalAfter->stopX()));
346
347 int indexDisableY = m_cmbDisableY->findData (QVariant (m_modelGridRemovalAfter->gridCoordDisableY()));
348 m_cmbDisableY->setCurrentIndex (indexDisableY);
349
350 m_editCountY->setText(QString::number(m_modelGridRemovalAfter->countY()));
351 m_editStartY->setText(QString::number(m_modelGridRemovalAfter->startY()));
352 m_editStepY->setText(QString::number(m_modelGridRemovalAfter->stepY()));
353 m_editStopY->setText(QString::number(m_modelGridRemovalAfter->stopY()));
354
355 updateControls ();
356 enableOk (false); // Disable Ok button since there not yet any changes
357 updatePreview();
358}
359
361{
362 if (!smallDialogs) {
364 }
365}
366
367void DlgSettingsGridRemoval::slotCloseDistance(const QString &)
368{
369 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotCloseDistance";
370
371 m_modelGridRemovalAfter->setCloseDistance(m_editCloseDistance->text().toDouble());
372 updateControls ();
373 updatePreview();
374}
375
376void DlgSettingsGridRemoval::slotCountX(const QString &count)
377{
378 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotCountX";
379
380 m_modelGridRemovalAfter->setCountX(count.toInt());
381 updateDisplayedVariableX ();
382 updateControls ();
383 updatePreview();
384}
385
386void DlgSettingsGridRemoval::slotCountY(const QString &count)
387{
388 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotCountY";
389
390 m_modelGridRemovalAfter->setCountY(count.toInt());
391 updateDisplayedVariableY ();
392 updateControls ();
393 updatePreview();
394}
395
396void DlgSettingsGridRemoval::slotDisableX(const QString &)
397{
398 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotDisableX";
399
400 GridCoordDisable gridCoordDisable = static_cast<GridCoordDisable> (m_cmbDisableX->currentData().toInt());
401 m_modelGridRemovalAfter->setGridCoordDisableX(gridCoordDisable);
402 updateDisplayedVariableX ();
403 updateControls();
404 updatePreview();
405}
406
407void DlgSettingsGridRemoval::slotDisableY(const QString &)
408{
409 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotDisableY";
410
411 GridCoordDisable gridCoordDisable = static_cast<GridCoordDisable> (m_cmbDisableY->currentData().toInt());
412 m_modelGridRemovalAfter->setGridCoordDisableY(gridCoordDisable);
413 updateDisplayedVariableY ();
414 updateControls();
415 updatePreview();
416}
417
418void DlgSettingsGridRemoval::slotRemoveGridLines (int state)
419{
420 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotRemoveGridLines";
421
422 m_modelGridRemovalAfter->setRemoveDefinedGridLines(state == Qt::Checked);
423 updateControls();
424 updatePreview();
425}
426
427void DlgSettingsGridRemoval::slotStartX(const QString &startX)
428{
429 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotStartX";
430
431 m_modelGridRemovalAfter->setStartX(startX.toDouble());
432 updateDisplayedVariableX ();
433 updateControls();
434 updatePreview();
435}
436
437void DlgSettingsGridRemoval::slotStartY(const QString &startY)
438{
439 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotStartY";
440
441 m_modelGridRemovalAfter->setStartY(startY.toDouble());
442 updateDisplayedVariableY ();
443 updateControls();
444 updatePreview();
445}
446
447void DlgSettingsGridRemoval::slotStepX(const QString &stepX)
448{
449 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotStepX";
450
451 m_modelGridRemovalAfter->setStepX(stepX.toDouble());
452 updateDisplayedVariableX ();
453 updateControls();
454 updatePreview();
455}
456
457void DlgSettingsGridRemoval::slotStepY(const QString &stepY)
458{
459 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotStepY";
460
461 m_modelGridRemovalAfter->setStepY(stepY.toDouble());
462 updateDisplayedVariableY ();
463 updateControls();
464 updatePreview();
465}
466
467void DlgSettingsGridRemoval::slotStopX(const QString &stopX)
468{
469 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotStopX";
470
471 m_modelGridRemovalAfter->setStopX(stopX.toDouble());
472 updateDisplayedVariableX ();
473 updateControls();
474 updatePreview();
475}
476
477void DlgSettingsGridRemoval::slotStopY(const QString &stopY)
478{
479 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::slotStopY";
480
481 m_modelGridRemovalAfter->setStopY(stopY.toDouble());
482 updateDisplayedVariableY ();
483 updateControls();
484 updatePreview();
485}
486
487void DlgSettingsGridRemoval::updateControls ()
488{
489 m_editCloseDistance->setEnabled (m_chkRemoveGridLines->isChecked ());
490
491 m_cmbDisableX->setEnabled (m_chkRemoveGridLines->isChecked ());
492
493 GridCoordDisable disableX = static_cast<GridCoordDisable> (m_cmbDisableX->currentData().toInt());
494 m_editCountX->setEnabled (m_chkRemoveGridLines->isChecked () && (disableX != GRID_COORD_DISABLE_COUNT));
495 m_editStartX->setEnabled (m_chkRemoveGridLines->isChecked () && (disableX != GRID_COORD_DISABLE_START));
496 m_editStepX->setEnabled (m_chkRemoveGridLines->isChecked () && (disableX != GRID_COORD_DISABLE_STEP));
497 m_editStopX->setEnabled (m_chkRemoveGridLines->isChecked () && (disableX != GRID_COORD_DISABLE_STOP));
498
499 m_cmbDisableY->setEnabled (m_chkRemoveGridLines->isChecked ());
500
501 GridCoordDisable disableY = static_cast<GridCoordDisable> (m_cmbDisableY->currentData().toInt());
502 m_editCountY->setEnabled (m_chkRemoveGridLines->isChecked () && (disableY != GRID_COORD_DISABLE_COUNT));
503 m_editStartY->setEnabled (m_chkRemoveGridLines->isChecked () && (disableY != GRID_COORD_DISABLE_START));
504 m_editStepY->setEnabled (m_chkRemoveGridLines->isChecked () && (disableY != GRID_COORD_DISABLE_STEP));
505 m_editStopY->setEnabled (m_chkRemoveGridLines->isChecked () && (disableY != GRID_COORD_DISABLE_STOP));
506
507 QString textCloseDistance = m_editCloseDistance->text();
508 QString textCountX = m_editCountX->text();
509 QString textStartX = m_editStartX->text();
510 QString textStepX = m_editStepX->text();
511 QString textStopX = m_editStopX->text();
512 QString textCountY = m_editCountY->text();
513 QString textStartY = m_editStartY->text();
514 QString textStepY = m_editStepY->text();
515 QString textStopY = m_editStopY->text();
516
517 int pos;
518 bool isOk = (m_validatorCloseDistance->validate (textCloseDistance, pos) == QValidator::Acceptable) &&
519 (m_validatorCountX->validate (textCountX, pos) == QValidator::Acceptable) &&
520 (m_validatorStartX->validate (textStartX, pos) == QValidator::Acceptable) &&
521 (m_validatorStepX->validate (textStepX, pos) == QValidator::Acceptable) &&
522 (m_validatorStopX->validate (textStopX, pos) == QValidator::Acceptable) &&
523 (m_validatorCountY->validate (textCountY, pos) == QValidator::Acceptable) &&
524 (m_validatorStartY->validate (textStartY, pos) == QValidator::Acceptable) &&
525 (m_validatorStepY->validate (textStepY, pos) == QValidator::Acceptable) &&
526 (m_validatorStopY->validate (textStopY, pos) == QValidator::Acceptable);
527 enableOk (isOk);
528}
529
530void DlgSettingsGridRemoval::updateDisplayedVariableX ()
531{
533
535
536 switch (m_modelGridRemovalAfter->gridCoordDisableX()) {
538 m_editCountX->setText (QString::number (initializer.computeCount (linearAxis,
539 m_modelGridRemovalAfter->startX (),
540 m_modelGridRemovalAfter->stopX (),
541 m_modelGridRemovalAfter->stepX ())));
542 break;
543
545 m_editStartX->setText (QString::number (initializer.computeStart (linearAxis,
546 m_modelGridRemovalAfter->stopX (),
547 m_modelGridRemovalAfter->stepX (),
548 m_modelGridRemovalAfter->countX ())));
549 break;
550
552 m_editStepX->setText (QString::number (initializer.computeStep (linearAxis,
553 m_modelGridRemovalAfter->startX (),
554 m_modelGridRemovalAfter->stopX (),
555 m_modelGridRemovalAfter->countX ())));
556 break;
557
559 m_editStopX->setText (QString::number (initializer.computeStop (linearAxis,
560 m_modelGridRemovalAfter->startX (),
561 m_modelGridRemovalAfter->stepX (),
562 m_modelGridRemovalAfter->countX ())));
563 break;
564 }
565}
566
567void DlgSettingsGridRemoval::updateDisplayedVariableY ()
568{
570
572
573 switch (m_modelGridRemovalAfter->gridCoordDisableY()) {
575 m_editCountY->setText (QString::number (initializer.computeCount (linearAxis,
576 m_modelGridRemovalAfter->startY (),
577 m_modelGridRemovalAfter->stopY (),
578 m_modelGridRemovalAfter->stepY ())));
579 break;
580
582 m_editStartY->setText (QString::number (initializer.computeStart (linearAxis,
583 m_modelGridRemovalAfter->stopY (),
584 m_modelGridRemovalAfter->stepY (),
585 m_modelGridRemovalAfter->countY ())));
586 break;
587
589 m_editStepY->setText (QString::number (initializer.computeStep (linearAxis,
590 m_modelGridRemovalAfter->startY (),
591 m_modelGridRemovalAfter->stopY (),
592 m_modelGridRemovalAfter->countY ())));
593 break;
594
596 m_editStopY->setText (QString::number (initializer.computeStop (linearAxis,
597 m_modelGridRemovalAfter->startY (),
598 m_modelGridRemovalAfter->stepY (),
599 m_modelGridRemovalAfter->countY ())));
600 break;
601 }
602}
603
604void DlgSettingsGridRemoval::updatePreview ()
605{
606 GridRemoval gridRemoval (mainWindow().isGnuplot());
607
608 QPixmap pixmap = gridRemoval.remove (mainWindow ().transformation(),
609 *m_modelGridRemovalAfter,
610 cmdMediator ().document().pixmap().toImage());
611
612 m_scenePreview->clear();
613 m_scenePreview->addPixmap (pixmap);
614}
@ COORD_SCALE_LINEAR
Definition CoordScale.h:13
const int MINIMUM_HEIGHT
const int INNER_RADIUS_MIN
const int COUNT_DECIMALS
const int COUNT_MIN
const int COUNT_DECIMALS
const int CLOSE_DECIMALS
const int COUNT_MIN
const double CLOSE_DISTANCE_MIN
const double CLOSE_DISTANCE_MAX
const int COUNT_MAX
const int MINIMUM_HEIGHT
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) define ENGAUGE...
QString gridCoordDisableToString(GridCoordDisable gridCoordDisable)
GridCoordDisable
@ GRID_COORD_DISABLE_STOP
@ GRID_COORD_DISABLE_START
@ GRID_COORD_DISABLE_STEP
@ GRID_COORD_DISABLE_COUNT
log4cpp::Category * mainCat
Definition Logger.cpp:14
Command queue stack.
Definition CmdMediator.h:24
Document & document()
Provide the Document to commands, primarily for undo/redo processing.
Command for DlgSettingsGridRemoval.
Abstract base class for all Settings dialogs.
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
void finishPanel(QWidget *subPanel, int minimumWidth=MINIMUM_DIALOG_WIDTH, int minimumHeightOrZero=0)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.
void enableOk(bool enable)
Let leaf subclass control the Ok button.
static int MINIMUM_PREVIEW_HEIGHT
Dialog layout constant that guarantees preview has sufficent room.
MainWindow & mainWindow()
Get method for MainWindow.
virtual void load(CmdMediator &cmdMediator)
Load settings from Document.
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
virtual void handleOk()
Process slotOk.
virtual void createOptionalSaveDefault(QHBoxLayout *layout)
Let subclass define an optional Save As Default button.
DlgSettingsGridRemoval(MainWindow &mainWindow)
Single constructor.
virtual void setSmallDialogs(bool smallDialogs)
If false then dialogs have a minimum size so all controls are visible.
CoordScale coordScaleYRadius() const
Get method for linear/log scale on y/radius.
CoordScale coordScaleXTheta() const
Get method for linear/log scale on x/theta.
Model for DlgSettingsGridRemoval and CmdSettingsGridRemoval. The settings are unstable until the user...
double closeDistance() const
Get method for close distance.
GridCoordDisable gridCoordDisableX() const
Get method for x coord parameter to disable.
bool removeDefinedGridLines() const
Get method for removing defined grid lines.
double stopX() const
Get method for x stop.
GridCoordDisable gridCoordDisableY() const
Get method for y coord parameter to disable.
void setCloseDistance(double closeDistance)
Set method for close distance.
void setStopY(double stopY)
Set method for y stop.
double startX() const
Get method for x start.
void setCountX(int countX)
Set method for x count.
double stopY() const
Get method for y stop.
void setGridCoordDisableY(GridCoordDisable gridCoordDisable)
Set method for y coord parameter to disable.
double stepX() const
Get method for x step.
void setStable()
Set the stable flag to true. This public version has no argument since it cannot be undone.
void setGridCoordDisableX(GridCoordDisable gridCoordDisable)
Set method for x coord parameter to disable.
void setStepX(double stepX)
Set method for x step.
void setStopX(double stopX)
Set method for x stop.
void setStartY(double startY)
Set method for y start.
double stepY() const
Get method for y step.
int countY() const
Get method for y count.
int countX() const
Get method for x count.
double startY() const
Get method for y start.
void setRemoveDefinedGridLines(bool removeDefinedGridLines)
Set method for removing defined grid lines.
void setStepY(double stepY)
Set method for y step.
void setStartX(double startX)
Set method for x start.
void setCountY(int countY)
Set method for y count.
DocumentModelCoords modelCoords() const
Get method for DocumentModelCoords.
Definition Document.cpp:695
This class initializes the count, start, step and stop parameters for one coordinate (either x/theta ...
Strategy class for grid removal.
Definition GridRemoval.h:25
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition MainWindow.h:92
Class that modifies QGraphicsView to automatically expand/shrink the view to fit the window,...
Definition ViewPreview.h:15
@ VIEW_ASPECT_RATIO_VARIABLE
Definition ViewPreview.h:22
#define LOG4CPP_INFO_S(logger)
Definition convenience.h:18