15 #include <QButtonGroup>
17 #include <QGraphicsRectItem>
18 #include <QGraphicsScene>
19 #include <QGridLayout>
24 #include <QRadioButton>
40 "DlgSettingsAxesChecker",
43 m_modelAxesCheckerBefore (nullptr),
44 m_modelAxesCheckerAfter (nullptr),
45 m_modelCoords (nullptr)
60 void DlgSettingsAxesChecker::createControls (QGridLayout *layout,
65 QGroupBox *groupBox =
new QGroupBox (tr (
"Axes Checker Lifetime"));
66 layout->addWidget (groupBox, row++, 1, 1, 2);
68 QGridLayout *layoutLifetime =
new QGridLayout;
69 groupBox->setLayout (layoutLifetime);
72 m_btnNever =
new QRadioButton (tr (
"Do not show"), groupBox);
73 m_btnNever->setWhatsThis (tr (
"Never show axes checker."));
74 layoutLifetime->addWidget (m_btnNever, rowLifetime++, 0, 1, 2);
76 m_btnNSeconds =
new QRadioButton (tr (
"Show for a number of seconds"), groupBox);
77 m_btnNSeconds->setWhatsThis (tr (
"Show axes checker for a number of seconds after changing axes points."));
78 layoutLifetime->addWidget (m_btnNSeconds, rowLifetime, 0, 1, 1);
80 m_cmbSeconds =
new QComboBox;
81 for (
int seconds = 1; seconds <= 10; seconds++) {
82 m_cmbSeconds->addItem (QString::number (seconds), QVariant (seconds));
84 layoutLifetime->addWidget (m_cmbSeconds, rowLifetime++, 1);
85 connect (m_cmbSeconds, SIGNAL (activated (
const QString &)),
this, SLOT (slotSeconds (
const QString &)));
87 m_btnForever =
new QRadioButton (tr (
"Show always"), groupBox);
88 m_btnForever->setWhatsThis (tr (
"Always show axes checker."));
89 layoutLifetime->addWidget (m_btnForever, rowLifetime++, 0, 1, 2);
91 m_groupMode =
new QButtonGroup;
92 m_groupMode->addButton (m_btnNever);
93 m_groupMode->addButton (m_btnNSeconds);
94 m_groupMode->addButton (m_btnForever);
95 connect (m_groupMode, SIGNAL (buttonReleased (QAbstractButton*)),
this, SLOT (slotGroupMode (QAbstractButton*)));
97 QLabel *labelLineColor =
new QLabel (QString (
"%1:").arg (tr (
"Line color")));
98 layout->addWidget (labelLineColor, row, 1);
100 m_cmbLineColor =
new QComboBox;
101 m_cmbLineColor->setWhatsThis (tr (
"Select a color for the highlight lines drawn at each axis point"));
103 connect (m_cmbLineColor, SIGNAL (activated (
const QString &)),
this, SLOT (slotLineColor (
const QString &)));
104 layout->addWidget (m_cmbLineColor, row++, 2);
111 void DlgSettingsAxesChecker::createPoints ()
115 QBrush AXES_BRUSH (Qt::gray);
117 m_checker =
new Checker (*m_scenePreview);
121 QGraphicsRectItem *itemRect =
new QGraphicsRectItem (0,
125 itemRect->setPen (Qt::NoPen);
126 m_scenePreview->addItem (itemRect);
129 QGraphicsRectItem *frameBox =
new QGraphicsRectItem (
X_LEFT,
133 frameBox->setPen (QPen (AXES_BRUSH,
AXIS_WIDTH));
134 frameBox->setZValue (-1);
135 m_scenePreview->addItem (frameBox);
139 tick->setZValue (-1);
140 m_scenePreview->addItem (tick);
145 tick->setZValue (-1);
146 m_scenePreview->addItem (tick);
150 void DlgSettingsAxesChecker::createPreview (QGridLayout *layout,
155 QLabel *labelPreview =
new QLabel (tr (
"Preview"));
156 layout->addWidget (labelPreview, row++, 0, 1, 4);
158 m_scenePreview =
new QGraphicsScene (
this);
162 m_viewPreview->setWhatsThis (tr (
"Preview window that shows how current settings affect the displayed axes checker"));
163 m_viewPreview->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
164 m_viewPreview->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
167 layout->addWidget (m_viewPreview, row++, 0, 1, 4);
174 QWidget *subPanel =
new QWidget ();
175 QGridLayout *layout =
new QGridLayout (subPanel);
176 subPanel->setLayout (layout);
178 layout->setColumnStretch(0, 1);
179 layout->setColumnStretch(1, 0);
180 layout->setColumnStretch(2, 0);
181 layout->setColumnStretch(3, 1);
184 createControls (layout, row);
185 createPreview (layout, row);
198 *m_modelAxesCheckerBefore,
199 *m_modelAxesCheckerAfter);
212 delete m_modelAxesCheckerBefore;
213 delete m_modelAxesCheckerAfter;
214 delete m_modelCoords;
226 int indexSeconds = m_cmbSeconds->findData (QVariant (m_modelAxesCheckerAfter->
checkerSeconds()));
228 m_cmbSeconds->setCurrentIndex(indexSeconds);
230 int indexLineColor = m_cmbLineColor->findData (QVariant (m_modelAxesCheckerAfter->
lineColor()));
232 m_cmbLineColor->setCurrentIndex (indexLineColor);
246 void DlgSettingsAxesChecker::slotGroupMode (QAbstractButton*)
250 if (m_btnNever->isChecked ()) {
252 }
else if (m_btnNSeconds->isChecked ()) {
262 void DlgSettingsAxesChecker::slotLineColor(
const QString &)
266 m_modelAxesCheckerAfter->
setLineColor (static_cast<ColorPalette> (m_cmbLineColor->currentData().toInt()));
271 void DlgSettingsAxesChecker::slotSeconds (
const QString &)
279 void DlgSettingsAxesChecker::updateControls ()
283 m_cmbSeconds->setEnabled (m_btnNSeconds->isChecked ());
286 void DlgSettingsAxesChecker::updatePreview()
288 const int ZERO_RADIUS_SINCE_NO_POINTS = 0;
290 QVector<QPointF> points;
295 QPolygonF polygon (points);
299 ZERO_RADIUS_SINCE_NO_POINTS,
300 *m_modelAxesCheckerAfter,