File indexing completed on 2023-09-24 08:11:10
0001 #include "krulertest.h" 0002 0003 #include <KRuler> 0004 0005 #include <QApplication> 0006 #include <QButtonGroup> 0007 #include <QDoubleSpinBox> 0008 #include <QGroupBox> 0009 #include <QKeyEvent> 0010 #include <QLabel> 0011 #include <QLayout> 0012 #include <QSpinBox> 0013 0014 /* 0015 void 0016 MyCheckBox::mouseReleaseEvent(QMouseEvent *e ) 0017 { 0018 QButton::mouseReleaseEvent(e); 0019 if (); 0020 } 0021 */ 0022 0023 MouseWidget::MouseWidget(QWidget *parent) 0024 : QFrame(parent) 0025 { 0026 } 0027 0028 void MouseWidget::mousePressEvent(QMouseEvent *e) 0029 { 0030 mouseButtonDown = true; 0031 Q_EMIT newXPos(e->x()); 0032 Q_EMIT newYPos(e->y()); 0033 } 0034 0035 void MouseWidget::mouseReleaseEvent(QMouseEvent *) 0036 { 0037 mouseButtonDown = false; 0038 } 0039 0040 void MouseWidget::mouseMoveEvent(QMouseEvent *e) 0041 { 0042 if (mouseButtonDown) { 0043 Q_EMIT newXPos(e->x()); 0044 Q_EMIT newYPos(e->y()); 0045 } 0046 } 0047 0048 void MouseWidget::resizeEvent(QResizeEvent *r) 0049 { 0050 Q_EMIT newWidth(r->size().width()); 0051 Q_EMIT newHeight(r->size().height()); 0052 } 0053 0054 KRulerTest::KRulerTest() 0055 : QWidget(nullptr) 0056 { 0057 QVBoxLayout *topLayout = new QVBoxLayout(this); 0058 mainframe = new QFrame(this); 0059 topLayout->addWidget(mainframe); 0060 0061 layout = new QGridLayout(mainframe); 0062 0063 miniwidget = new QFrame(mainframe); 0064 miniwidget->setFrameStyle(QFrame::WinPanel | QFrame::Raised); 0065 bigwidget = new MouseWidget(mainframe); 0066 bigwidget->setFrameStyle(QFrame::WinPanel | QFrame::Sunken); 0067 0068 // QRect bwrect = bigwidget->frameRect(); 0069 // qDebug("big rect: top%i left%i bottom%i right%i", 0070 // bwrect.top(), bwrect.left(), bwrect.bottom(), bwrect.right()); 0071 hruler = new KRuler(Qt::Horizontal, mainframe); 0072 // hruler->setRange( bwrect.left(), bwrect.right() ); 0073 hruler->setRange(0, 1000); 0074 // hruler->setOffset( bwrect.left() - bigwidget->frameRect().left() ); 0075 hruler->setOffset(0); 0076 0077 vruler = new KRuler(Qt::Vertical, mainframe); 0078 vruler->setOffset(0); 0079 vruler->setRange(0, 1000); 0080 0081 connect(bigwidget, &MouseWidget::newXPos, hruler, &KRuler::slotNewValue); 0082 connect(bigwidget, &MouseWidget::newYPos, vruler, &KRuler::slotNewValue); 0083 connect(bigwidget, &MouseWidget::newWidth, this, &KRulerTest::slotNewWidth); 0084 connect(bigwidget, &MouseWidget::newHeight, this, &KRulerTest::slotNewHeight); 0085 0086 layout->addWidget(miniwidget, 0, 0); 0087 layout->addWidget(hruler, 0, 1); 0088 layout->addWidget(vruler, 1, 0); 0089 layout->addWidget(bigwidget, 1, 1); 0090 0091 mouse_message = new QLabel(QStringLiteral("Press and hold mouse button\nfor pointer movement"), bigwidget); 0092 mouse_message->adjustSize(); 0093 mouse_message->move(4, 4); 0094 0095 showMarks = new QGroupBox(QStringLiteral("Show which marks ?"), bigwidget); 0096 showMarks->setFixedSize(140, 160); 0097 showMarks->move(330, 4); 0098 showTM = new QCheckBox(QStringLiteral("show tiny marks"), showMarks); 0099 showTM->adjustSize(); 0100 showTM->move(5, 15); 0101 showTM->setChecked(true); 0102 connect(showTM, &QCheckBox::toggled, this, &KRulerTest::slotSetTinyMarks); 0103 showLM = new QCheckBox(QStringLiteral("show little marks"), showMarks); 0104 showLM->adjustSize(); 0105 showLM->move(5, 35); 0106 showLM->setChecked(true); 0107 connect(showLM, &QCheckBox::toggled, this, &KRulerTest::slotSetLittleMarks); 0108 showMM = new QCheckBox(QStringLiteral("show medium marks"), showMarks); 0109 showMM->adjustSize(); 0110 showMM->move(5, 55); 0111 showMM->setChecked(true); 0112 connect(showMM, &QCheckBox::toggled, this, &KRulerTest::slotSetMediumMarks); 0113 showBM = new QCheckBox(QStringLiteral("show big marks"), showMarks); 0114 showBM->adjustSize(); 0115 showBM->move(5, 75); 0116 showBM->setChecked(true); 0117 connect(showBM, &QCheckBox::toggled, this, &KRulerTest::slotSetBigMarks); 0118 showEM = new QCheckBox(QStringLiteral("show end marks"), showMarks); 0119 showEM->adjustSize(); 0120 showEM->move(5, 95); 0121 showEM->setChecked(true); 0122 connect(showEM, &QCheckBox::toggled, this, &KRulerTest::slotSetEndMarks); 0123 showPT = new QCheckBox(QStringLiteral("show ruler pointer"), showMarks); 0124 showPT->adjustSize(); 0125 showPT->move(5, 115); 0126 showPT->setChecked(true); 0127 connect(showPT, &QCheckBox::toggled, this, &KRulerTest::slotSetRulerPointer); 0128 fixLen = new QCheckBox(QStringLiteral("fix ruler length"), showMarks); 0129 fixLen->adjustSize(); 0130 fixLen->move(5, 135); 0131 fixLen->setChecked(true); 0132 connect(fixLen, &QCheckBox::toggled, this, &KRulerTest::slotFixRulerLength); 0133 connect(fixLen, &QCheckBox::toggled, this, &KRulerTest::slotCheckLength); 0134 0135 lineEdit = new QGroupBox(QStringLiteral("Value of begin/end"), bigwidget); 0136 lineEdit->setFixedSize(140, 80); 0137 lineEdit->move(330, 4 + 160); 0138 beginMark = new QSpinBox(lineEdit); 0139 beginMark->setValue(0); 0140 beginMark->setRange(-1000, 1000); 0141 beginMark->move(5, 15); 0142 beginMark->setFixedSize(beginMark->sizeHint()); 0143 connect(beginMark, qOverload<int>(&QSpinBox::valueChanged), hruler, &KRuler::slotNewOffset); 0144 connect(beginMark, qOverload<int>(&QSpinBox::valueChanged), vruler, &KRuler::slotNewOffset); 0145 endMark = new QSpinBox(lineEdit); 0146 endMark->setValue(0); 0147 endMark->setRange(-1000, 1000); 0148 endMark->move(5, 35); 0149 endMark->setFixedSize(endMark->sizeHint()); 0150 connect(endMark, qOverload<int>(&QSpinBox::valueChanged), hruler, &KRuler::slotEndOffset); 0151 connect(endMark, qOverload<int>(&QSpinBox::valueChanged), vruler, &KRuler::slotEndOffset); 0152 lengthInput = new QSpinBox(lineEdit); 0153 lengthInput->setValue(0); 0154 lengthInput->setRange(-1000, 1000); 0155 lengthInput->move(5, 55); 0156 lengthInput->setFixedSize(lengthInput->sizeHint()); 0157 connect(lengthInput, qOverload<int>(&QSpinBox::valueChanged), hruler, &KRuler::slotEndOffset); 0158 connect(lengthInput, qOverload<int>(&QSpinBox::valueChanged), vruler, &KRuler::slotEndOffset); 0159 0160 vertrot = new QGroupBox(QStringLiteral("Value of rotate translate for Vert."), bigwidget); 0161 vertrot->setFixedSize(140, 80); 0162 vertrot->move(330, 4 + 160 + 80 + 4); 0163 transX = new QDoubleSpinBox(vertrot); 0164 transX->setValue(0.0); 0165 transX->setRange(-1000, 1000); 0166 transX->setSingleStep(1); 0167 transX->move(5, 15); 0168 transX->setFixedSize(transX->sizeHint()); 0169 // transX->setLabel("transx", AlignLeft); 0170 connect(transX, qOverload<double>(&QDoubleSpinBox::valueChanged), this, &KRulerTest::slotSetXTrans); 0171 transY = new QDoubleSpinBox(vertrot); 0172 transY->setValue(-12.0); 0173 transY->setRange(-1000, 1000); 0174 transY->setSingleStep(1); 0175 transY->move(5, 35); 0176 transY->setFixedSize(transY->sizeHint()); 0177 // transY->setLabel("transy", AlignLeft); 0178 connect(transY, qOverload<double>(&QDoubleSpinBox::valueChanged), this, &KRulerTest::slotSetYTrans); 0179 rotV = new QDoubleSpinBox(vertrot); 0180 rotV->setValue(90.0); 0181 rotV->setRange(-1000, 1000); 0182 rotV->setSingleStep(1); 0183 rotV->move(5, 55); 0184 rotV->setFixedSize(rotV->sizeHint()); 0185 // rotV->setLabel("rot", AlignLeft); 0186 connect(rotV, qOverload<double>(&QDoubleSpinBox::valueChanged), this, &KRulerTest::slotSetRotate); 0187 0188 metricstyle = new QGroupBox(QStringLiteral("metric styles"), bigwidget); 0189 0190 QButtonGroup *metricstyleButtons = new QButtonGroup(bigwidget); 0191 0192 metricstyle->setFixedSize(100, 120); 0193 metricstyle->move(330 - 110, 4); 0194 pixelmetric = new QRadioButton(QStringLiteral("pixel"), metricstyle); 0195 pixelmetric->adjustSize(); 0196 pixelmetric->move(5, 15); 0197 metricstyleButtons->addButton(pixelmetric, (int)KRuler::Pixel); 0198 inchmetric = new QRadioButton(QStringLiteral("inch"), metricstyle); 0199 inchmetric->adjustSize(); 0200 inchmetric->move(5, 35); 0201 metricstyleButtons->addButton(inchmetric, (int)KRuler::Inch); 0202 mmmetric = new QRadioButton(QStringLiteral("millimeter"), metricstyle); 0203 mmmetric->adjustSize(); 0204 mmmetric->move(5, 55); 0205 metricstyleButtons->addButton(mmmetric, (int)KRuler::Millimetres); 0206 cmmetric = new QRadioButton(QStringLiteral("centimeter"), metricstyle); 0207 cmmetric->adjustSize(); 0208 cmmetric->move(5, 75); 0209 metricstyleButtons->addButton(cmmetric, (int)KRuler::Centimetres); 0210 mmetric = new QRadioButton(QStringLiteral("meter"), metricstyle); 0211 mmetric->adjustSize(); 0212 mmetric->move(5, 95); 0213 metricstyleButtons->addButton(mmetric, (int)KRuler::Metres); 0214 connect(metricstyleButtons, &QButtonGroup::buttonClicked, this, [this, metricstyleButtons](QAbstractButton *button) { 0215 slotSetMStyle(metricstyleButtons->id(button)); 0216 }); 0217 0218 slotUpdateShowMarks(); 0219 } 0220 0221 KRulerTest::~KRulerTest() 0222 { 0223 delete layout; 0224 delete hruler; 0225 delete vruler; 0226 delete miniwidget; 0227 delete bigwidget; 0228 delete mainframe; 0229 } 0230 0231 void KRulerTest::slotNewWidth(int width) 0232 { 0233 hruler->setMaximum(width); 0234 } 0235 0236 void KRulerTest::slotNewHeight(int height) 0237 { 0238 vruler->setMaximum(height); 0239 } 0240 0241 void KRulerTest::slotSetTinyMarks(bool set) 0242 { 0243 hruler->setShowTinyMarks(set); 0244 vruler->setShowTinyMarks(set); 0245 } 0246 0247 void KRulerTest::slotSetLittleMarks(bool set) 0248 { 0249 hruler->setShowLittleMarks(set); 0250 vruler->setShowLittleMarks(set); 0251 } 0252 0253 void KRulerTest::slotSetMediumMarks(bool set) 0254 { 0255 hruler->setShowMediumMarks(set); 0256 vruler->setShowMediumMarks(set); 0257 } 0258 0259 void KRulerTest::slotSetBigMarks(bool set) 0260 { 0261 hruler->setShowBigMarks(set); 0262 vruler->setShowBigMarks(set); 0263 } 0264 0265 void KRulerTest::slotSetEndMarks(bool set) 0266 { 0267 hruler->setShowEndMarks(set); 0268 vruler->setShowEndMarks(set); 0269 } 0270 0271 void KRulerTest::slotSetRulerPointer(bool set) 0272 { 0273 hruler->setShowPointer(set); 0274 vruler->setShowPointer(set); 0275 } 0276 0277 void KRulerTest::slotSetRulerLength(int len) 0278 { 0279 hruler->setLength(len); 0280 vruler->setLength(len); 0281 } 0282 0283 void KRulerTest::slotFixRulerLength(bool fix) 0284 { 0285 hruler->setLengthFixed(fix); 0286 vruler->setLengthFixed(fix); 0287 } 0288 0289 void KRulerTest::slotSetMStyle(int style) 0290 { 0291 hruler->setRulerMetricStyle((KRuler::MetricStyle)style); 0292 vruler->setRulerMetricStyle((KRuler::MetricStyle)style); 0293 slotUpdateShowMarks(); 0294 } 0295 0296 void KRulerTest::slotUpdateShowMarks() 0297 { 0298 showTM->setChecked(hruler->showTinyMarks()); 0299 showLM->setChecked(hruler->showLittleMarks()); 0300 showMM->setChecked(hruler->showMediumMarks()); 0301 showBM->setChecked(hruler->showBigMarks()); 0302 showEM->setChecked(hruler->showEndMarks()); 0303 } 0304 0305 void KRulerTest::slotCheckLength(bool fixlen) 0306 { 0307 Q_UNUSED(fixlen); 0308 beginMark->setValue(hruler->offset()); 0309 endMark->setValue(hruler->endOffset()); 0310 lengthInput->setValue(hruler->length()); 0311 } 0312 0313 void KRulerTest::slotSetRotate(double d) 0314 { 0315 Q_UNUSED(d); 0316 #ifdef KRULER_ROTATE_TEST 0317 vruler->rotate = d; 0318 vruler->update(); 0319 // debug("rotate %.1f", d); 0320 #endif 0321 } 0322 0323 void KRulerTest::slotSetXTrans(double d) 0324 { 0325 Q_UNUSED(d); 0326 #ifdef KRULER_ROTATE_TEST 0327 vruler->xtrans = d; 0328 vruler->update(); 0329 // debug("trans x %.1f", d); 0330 #endif 0331 } 0332 0333 void KRulerTest::slotSetYTrans(double d) 0334 { 0335 Q_UNUSED(d); 0336 #ifdef KRULER_ROTATE_TEST 0337 vruler->ytrans = d; 0338 vruler->update(); 0339 // debug("trans y %.1f", d); 0340 #endif 0341 } 0342 0343 /* --- MAIN -----------------------*/ 0344 int main(int argc, char **argv) 0345 { 0346 QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 0347 QApplication::setApplicationName(QStringLiteral("test")); 0348 QApplication *testapp; 0349 KRulerTest *window; 0350 0351 testapp = new QApplication(argc, argv); 0352 testapp->setFont(QFont(QStringLiteral("Helvetica"), 12)); 0353 0354 window = new KRulerTest(); 0355 window->setWindowTitle(QStringLiteral("KRulerTest")); 0356 window->resize(800, 600); 0357 window->show(); 0358 return testapp->exec(); 0359 } 0360 0361 #include "moc_krulertest.cpp"