diff --git a/src/editor/dialogs/imageeditordialog.cpp b/src/editor/dialogs/imageeditordialog.cpp index dfb1bb9..42c52a9 100644 --- a/src/editor/dialogs/imageeditordialog.cpp +++ b/src/editor/dialogs/imageeditordialog.cpp @@ -3,6 +3,7 @@ #include #include +#include ImageEditorDialog::ImageEditorDialog(const QPixmap &pixmap, const QString &title, QWidget *parent) : QDialog{parent}, @@ -23,6 +24,53 @@ ImageEditorDialog::ImageEditorDialog(const QPixmap &pixmap, const QString &title m_ui->scrollArea->setBackgroundRole(QPalette::Dark); + { + auto group = new QButtonGroup{this}; + group->setExclusive(true); + group->addButton(m_ui->toolButtonDraw); + group->addButton(m_ui->toolButtonSpray); + group->addButton(m_ui->toolButtonErase); + group->addButton(m_ui->toolButtonPick); + group->addButton(m_ui->toolButtonLine); + group->addButton(m_ui->toolButtonPolygon); + group->addButton(m_ui->toolButtonRectangle); + group->addButton(m_ui->toolButtonEllipse); + group->addButton(m_ui->toolButtonRoundedRectangle); + group->addButton(m_ui->toolButtonSelectRegion); + group->addButton(m_ui->toolButtonSelectWand); + group->addButton(m_ui->toolButtonSelectSpray); + group->addButton(m_ui->toolButtonText); + group->addButton(m_ui->toolButtonFill); + group->addButton(m_ui->toolButtonReplace); + } + + { + auto group = new QButtonGroup{this}; + group->setExclusive(true); + group->addButton(m_ui->pushButtonLine1); + group->addButton(m_ui->pushButtonLine2); + group->addButton(m_ui->pushButtonLine3); + group->addButton(m_ui->pushButtonLine4); + } + + { + auto group = new QButtonGroup{this}; + group->setExclusive(true); + group->addButton(m_ui->pushButtonBorder); + group->addButton(m_ui->pushButtonBorderFill); + group->addButton(m_ui->pushButtonFill); + } + + { + auto group = new QButtonGroup{this}; + group->setExclusive(true); + group->addButton(m_ui->toolButtonAlignLeft); + group->addButton(m_ui->toolButtonCenter); + group->addButton(m_ui->toolButtonAlignRight); + } + + m_ui->toolButtonDraw->click(); + m_ui->canvas->setPixmap(m_pixmap); } diff --git a/src/editor/dialogs/imageeditordialog.ui b/src/editor/dialogs/imageeditordialog.ui index 3f2e550..42e5e9b 100644 --- a/src/editor/dialogs/imageeditordialog.ui +++ b/src/editor/dialogs/imageeditordialog.ui @@ -65,11 +65,30 @@ &View + + + + + + + + + + &Transform + + + + + + + + + @@ -86,10 +105,10 @@ - QFrame::StyledPanel + QFrame::Shape::StyledPanel - QFrame::Raised + QFrame::Shadow::Raised @@ -129,6 +148,16 @@ + + + + + + + + + + @@ -141,107 +170,197 @@ - + + + Spray on the image (A) + - ... + Sp + + + true - + + + Selecting by using magic wand (W) + - ... + SW + + + true - + + + Draw a line (L) + - ... + Li + + + true - + + + Draw on the image (D) + - ... + Dr + + + true - + + + Draw a rounded rectangle (O) + - ... + Ro + + + true - + + + Selecting by spraying (Y) + - ... + SS + + + true - + + + Erase parts of the image (E) + - ... + Er + + + true - + + + Draw an elipse (I) + - ... + El + + + true - + + + Pick a color from the image (C) + - ... + Pi + + + true - + + + Draw a rectangle (R) + - ... + Re + + + true - + + + Draw a polygon (P) + - ... + Po + + + true - + + + Selecting a region (S) + - ... + SR + + + true - + + + Draw text (T) + - ... + Te + + + true - + + + Fill an area (F) + - ... + Fi + + + true - + + + Change all pixels with the same color (H) + - ... + RC + + + true @@ -254,44 +373,65 @@ - + - ... + 2 + + + true - + - ... + 3 + + + true - + - ... + 1 + + + true + + + true - + - ... + 4 + + + true - + - ... + 5 + + + true - + - ... + 6 + + + true @@ -305,7 +445,14 @@ - + + + 255 + + + 128 + + @@ -315,8 +462,14 @@ 0 + + 255 + + + 128 + - Qt::Horizontal + Qt::Orientation::Horizontal @@ -330,37 +483,52 @@ - + - PushButton + ---- + + + true + + + true - + - PushButton + ---> + + + true - + - PushButton + <--- + + + true - + - PushButton + <---> + + + true - + - CheckBox + Anti-alias @@ -374,30 +542,42 @@ - + - PushButton + Border + + + true + + + true - + - PushButton + Border+Fill + + + true - + - PushButton + Fill + + + true - + - CheckBox + Anti-alias @@ -411,7 +591,11 @@ - + + + 64 + + @@ -421,15 +605,18 @@ 0 + + 64 + - Qt::Horizontal + Qt::Orientation::Horizontal - + - CheckBox + Color only @@ -443,32 +630,44 @@ - + - PushButton + Aa - + - ... + L + + + true + + + true - + - ... + C + + + true - + - ... + R + + + true @@ -480,7 +679,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -498,15 +697,15 @@ true - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop 0 0 - 756 - 1044 + 759 + 1042 @@ -540,10 +739,10 @@ - QFrame::StyledPanel + QFrame::Shape::StyledPanel - QFrame::Raised + QFrame::Shadow::Raised @@ -567,10 +766,10 @@ - QFrame::StyledPanel + QFrame::Shape::StyledPanel - QFrame::Raised + QFrame::Shadow::Raised @@ -587,10 +786,10 @@ - QFrame::StyledPanel + QFrame::Shape::StyledPanel - QFrame::Raised + QFrame::Shadow::Raised @@ -603,10 +802,10 @@ - QFrame::StyledPanel + QFrame::Shape::StyledPanel - QFrame::Raised + QFrame::Shadow::Raised @@ -620,7 +819,14 @@ - + + + 255 + + + 255 + + @@ -630,8 +836,14 @@ 0 + + 255 + + + 255 + - Qt::Horizontal + Qt::Orientation::Horizontal @@ -649,6 +861,9 @@ Blend + + true + @@ -661,10 +876,17 @@ + + + + Preview + + + - Qt::Vertical + Qt::Orientation::Vertical @@ -703,7 +925,7 @@ &Save as PNG file... - Save the image as a PNG file + Save the image as PNG file (Ctrl+S) @@ -804,6 +1026,87 @@ Select &All + + + Zoom &Out + + + + + &No Zoom + + + + + Zoom &In + + + + + true + + + Toggle &Grid + + + + + G&rid Options + + + + + true + + + Show &Preview + + + + + Set &Transparency Background... + + + + + &Shift... + + + + + &Mirror/Flip... + + + + + &Rotate... + + + + + Sc&ale... + + + + + S&kew... + + + + + Resize &Canvas... + + + + + Str&etch... + + + + + Cro&p... + + @@ -832,5 +1135,1589 @@ + + spinBoxHardness + valueChanged(int) + horizontalSliderHardness + setValue(int) + + + 44 + 367 + + + 56 + 398 + + + + + horizontalSliderHardness + valueChanged(int) + spinBoxHardness + setValue(int) + + + 81 + 401 + + + 83 + 369 + + + + + spinBoxOpacity + valueChanged(int) + horizontalSliderOpacity + setValue(int) + + + 933 + 435 + + + 938 + 469 + + + + + horizontalSliderOpacity + valueChanged(int) + spinBoxOpacity + setValue(int) + + + 961 + 463 + + + 960 + 437 + + + + + checkBoxLineAntiAlias + toggled(bool) + checkBoxShapeAntiAlias + setChecked(bool) + + + 59 + 592 + + + 50 + 764 + + + + + checkBoxShapeAntiAlias + toggled(bool) + checkBoxLineAntiAlias + setChecked(bool) + + + 81 + 765 + + + 83 + 598 + + + + + spinBox + valueChanged(int) + horizontalSlider + setValue(int) + + + 36 + 846 + + + 41 + 870 + + + + + horizontalSlider + valueChanged(int) + spinBox + setValue(int) + + + 75 + 873 + + + 72 + 843 + + + + + toolButtonDraw + clicked() + groupBoxHardness + hide() + + + 30 + 75 + + + 14 + 337 + + + + + toolButtonDraw + clicked() + groupBoxLine + hide() + + + 16 + 77 + + + 17 + 437 + + + + + toolButtonDraw + clicked() + groupBoxShape + hide() + + + 14 + 82 + + + 16 + 638 + + + + + toolButtonDraw + clicked() + groupBoxTolerance + hide() + + + 20 + 71 + + + 15 + 809 + + + + + toolButtonDraw + clicked() + groupBoxFont + hide() + + + 17 + 75 + + + 18 + 940 + + + + + toolButtonDraw + clicked() + groupBoxColorMode + show() + + + 22 + 71 + + + 909 + 499 + + + + + toolButtonSpray + clicked() + groupBoxHardness + show() + + + 56 + 73 + + + 48 + 338 + + + + + toolButtonSpray + clicked() + groupBoxLine + hide() + + + 55 + 77 + + + 46 + 432 + + + + + toolButtonSpray + clicked() + groupBoxShape + hide() + + + 49 + 73 + + + 53 + 642 + + + + + toolButtonSpray + clicked() + groupBoxTolerance + hide() + + + 54 + 85 + + + 54 + 810 + + + + + toolButtonSpray + clicked() + groupBoxFont + hide() + + + 53 + 76 + + + 46 + 937 + + + + + toolButtonSpray + clicked() + groupBoxColorMode + show() + + + 47 + 71 + + + 914 + 502 + + + + + toolButtonErase + clicked() + groupBoxHardness + show() + + + 86 + 71 + + + 91 + 337 + + + + + toolButtonErase + clicked() + groupBoxLine + hide() + + + 95 + 75 + + + 75 + 439 + + + + + toolButtonErase + clicked() + groupBoxShape + hide() + + + 92 + 79 + + + 79 + 641 + + + + + toolButtonErase + clicked() + groupBoxTolerance + hide() + + + 93 + 82 + + + 82 + 810 + + + + + toolButtonErase + clicked() + groupBoxFont + hide() + + + 99 + 78 + + + 89 + 944 + + + + + toolButtonErase + clicked() + groupBoxColorMode + show() + + + 88 + 71 + + + 961 + 504 + + + + + toolButtonPick + clicked() + groupBoxHardness + hide() + + + 7 + 110 + + + 23 + 338 + + + + + toolButtonPick + clicked() + groupBoxLine + hide() + + + 22 + 116 + + + 22 + 435 + + + + + toolButtonPick + clicked() + groupBoxShape + hide() + + + 15 + 109 + + + 23 + 643 + + + + + toolButtonPick + clicked() + groupBoxTolerance + hide() + + + 20 + 108 + + + 29 + 806 + + + + + toolButtonPick + clicked() + groupBoxFont + hide() + + + 10 + 103 + + + 24 + 939 + + + + + toolButtonPick + clicked() + groupBoxColorMode + hide() + + + 20 + 106 + + + 936 + 507 + + + + + toolButtonLine + clicked() + groupBoxHardness + hide() + + + 55 + 105 + + + 51 + 339 + + + + + toolButtonLine + clicked() + groupBoxLine + show() + + + 50 + 106 + + + 58 + 441 + + + + + toolButtonLine + clicked() + groupBoxShape + hide() + + + 48 + 102 + + + 49 + 640 + + + + + toolButtonLine + clicked() + groupBoxTolerance + hide() + + + 55 + 102 + + + 49 + 812 + + + + + toolButtonLine + clicked() + groupBoxFont + hide() + + + 51 + 112 + + + 63 + 939 + + + + + toolButtonLine + clicked() + groupBoxColorMode + show() + + + 50 + 101 + + + 943 + 504 + + + + + toolButtonPolygon + clicked() + groupBoxHardness + hide() + + + 93 + 114 + + + 70 + 338 + + + + + toolButtonPolygon + clicked() + groupBoxLine + hide() + + + 96 + 110 + + + 93 + 432 + + + + + toolButtonPolygon + clicked() + groupBoxShape + show() + + + 94 + 102 + + + 64 + 639 + + + + + toolButtonPolygon + clicked() + groupBoxTolerance + hide() + + + 86 + 100 + + + 90 + 805 + + + + + toolButtonPolygon + clicked() + groupBoxFont + hide() + + + 94 + 95 + + + 97 + 936 + + + + + toolButtonPolygon + clicked() + groupBoxColorMode + show() + + + 91 + 106 + + + 932 + 502 + + + + + toolButtonRectangle + clicked() + groupBoxHardness + hide() + + + 17 + 130 + + + 18 + 338 + + + + + toolButtonRectangle + clicked() + groupBoxLine + hide() + + + 14 + 140 + + + 38 + 451 + + + + + toolButtonRectangle + clicked() + groupBoxShape + show() + + + 7 + 133 + + + 27 + 640 + + + + + toolButtonRectangle + clicked() + groupBoxTolerance + hide() + + + 16 + 140 + + + 32 + 807 + + + + + toolButtonRectangle + clicked() + groupBoxFont + hide() + + + 12 + 130 + + + 21 + 931 + + + + + toolButtonRectangle + clicked() + groupBoxColorMode + show() + + + 6 + 139 + + + 949 + 502 + + + + + toolButtonEllipse + clicked() + groupBoxHardness + hide() + + + 51 + 137 + + + 46 + 336 + + + + + toolButtonEllipse + clicked() + groupBoxLine + hide() + + + 49 + 131 + + + 51 + 438 + + + + + toolButtonEllipse + clicked() + groupBoxShape + show() + + + 56 + 142 + + + 49 + 633 + + + + + toolButtonEllipse + clicked() + groupBoxTolerance + hide() + + + 52 + 132 + + + 48 + 807 + + + + + toolButtonEllipse + clicked() + groupBoxFont + hide() + + + 57 + 132 + + + 57 + 937 + + + + + toolButtonEllipse + clicked() + groupBoxColorMode + show() + + + 52 + 141 + + + 931 + 505 + + + + + toolButtonRoundedRectangle + clicked() + groupBoxHardness + hide() + + + 91 + 129 + + + 91 + 335 + + + + + toolButtonRoundedRectangle + clicked() + groupBoxLine + hide() + + + 100 + 132 + + + 74 + 439 + + + + + toolButtonRoundedRectangle + clicked() + groupBoxShape + show() + + + 102 + 142 + + + 82 + 637 + + + + + toolButtonRoundedRectangle + clicked() + groupBoxTolerance + hide() + + + 93 + 144 + + + 73 + 805 + + + + + toolButtonRoundedRectangle + clicked() + groupBoxFont + hide() + + + 101 + 139 + + + 95 + 935 + + + + + toolButtonRoundedRectangle + clicked() + groupBoxColorMode + show() + + + 87 + 138 + + + 945 + 503 + + + + + toolButtonSelectRegion + clicked() + groupBoxHardness + hide() + + + 13 + 160 + + + 25 + 339 + + + + + toolButtonSelectRegion + clicked() + groupBoxLine + hide() + + + 12 + 167 + + + 22 + 438 + + + + + toolButtonSelectRegion + clicked() + groupBoxShape + hide() + + + 13 + 163 + + + 22 + 635 + + + + + toolButtonSelectRegion + clicked() + groupBoxTolerance + hide() + + + 14 + 173 + + + 22 + 808 + + + + + toolButtonSelectWand + clicked() + groupBoxHardness + hide() + + + 52 + 167 + + + 53 + 338 + + + + + toolButtonSelectWand + clicked() + groupBoxLine + hide() + + + 49 + 178 + + + 49 + 431 + + + + + toolButtonSelectWand + clicked() + groupBoxShape + hide() + + + 62 + 174 + + + 51 + 642 + + + + + toolButtonSelectWand + clicked() + groupBoxTolerance + show() + + + 67 + 163 + + + 68 + 804 + + + + + toolButtonSelectWand + clicked() + groupBoxFont + hide() + + + 51 + 163 + + + 64 + 935 + + + + + toolButtonSelectRegion + clicked() + groupBoxFont + hide() + + + 9 + 165 + + + 32 + 937 + + + + + toolButtonSelectRegion + clicked() + groupBoxColorMode + show() + + + 15 + 161 + + + 959 + 505 + + + + + toolButtonSelectWand + clicked() + groupBoxColorMode + show() + + + 52 + 173 + + + 969 + 509 + + + + + toolButtonSelectSpray + clicked() + groupBoxHardness + hide() + + + 92 + 173 + + + 69 + 343 + + + + + toolButtonSelectSpray + clicked() + groupBoxLine + hide() + + + 97 + 163 + + + 80 + 436 + + + + + toolButtonSelectSpray + clicked() + groupBoxShape + hide() + + + 91 + 170 + + + 77 + 640 + + + + + toolButtonSelectSpray + clicked() + groupBoxTolerance + hide() + + + 101 + 169 + + + 72 + 811 + + + + + toolButtonSelectSpray + clicked() + groupBoxFont + hide() + + + 88 + 166 + + + 74 + 939 + + + + + toolButtonSelectSpray + clicked() + groupBoxColorMode + show() + + + 91 + 171 + + + 945 + 506 + + + + + toolButtonText + clicked() + groupBoxHardness + hide() + + + 19 + 196 + + + 25 + 338 + + + + + toolButtonText + clicked() + groupBoxLine + hide() + + + 6 + 193 + + + 30 + 432 + + + + + toolButtonText + clicked() + groupBoxShape + hide() + + + 13 + 203 + + + 23 + 643 + + + + + toolButtonText + clicked() + groupBoxTolerance + hide() + + + 11 + 195 + + + 23 + 804 + + + + + toolButtonText + clicked() + groupBoxFont + show() + + + 9 + 206 + + + 31 + 933 + + + + + toolButtonText + clicked() + groupBoxColorMode + show() + + + 21 + 199 + + + 918 + 507 + + + + + toolButtonFill + clicked() + groupBoxHardness + hide() + + + 54 + 202 + + + 48 + 333 + + + + + toolButtonFill + clicked() + groupBoxLine + hide() + + + 50 + 194 + + + 51 + 434 + + + + + toolButtonFill + clicked() + groupBoxShape + hide() + + + 55 + 191 + + + 44 + 637 + + + + + toolButtonFill + clicked() + groupBoxTolerance + show() + + + 47 + 202 + + + 47 + 807 + + + + + toolButtonFill + clicked() + groupBoxFont + hide() + + + 54 + 198 + + + 52 + 930 + + + + + toolButtonFill + clicked() + groupBoxColorMode + show() + + + 54 + 193 + + + 944 + 505 + + + + + toolButtonReplace + clicked() + groupBoxHardness + hide() + + + 96 + 201 + + + 85 + 332 + + + + + toolButtonReplace + clicked() + groupBoxLine + hide() + + + 94 + 194 + + + 80 + 435 + + + + + toolButtonReplace + clicked() + groupBoxShape + hide() + + + 91 + 202 + + + 81 + 637 + + + + + toolButtonReplace + clicked() + groupBoxTolerance + show() + + + 97 + 196 + + + 74 + 804 + + + + + toolButtonReplace + clicked() + groupBoxFont + hide() + + + 102 + 190 + + + 88 + 936 + + + + + toolButtonReplace + clicked() + groupBoxColorMode + show() + + + 98 + 205 + + + 934 + 505 + + + + + actionShowPreview + toggled(bool) + groupBoxPreview + setVisible(bool) + + + -1 + -1 + + + 940 + 612 + + + diff --git a/src/editor/widgets/drawingcanvaswidget.cpp b/src/editor/widgets/drawingcanvaswidget.cpp index 87d6112..d8043b4 100644 --- a/src/editor/widgets/drawingcanvaswidget.cpp +++ b/src/editor/widgets/drawingcanvaswidget.cpp @@ -2,6 +2,7 @@ #include #include +#include DrawingCanvasWidget::DrawingCanvasWidget(QWidget *parent) : QWidget{parent} @@ -57,3 +58,28 @@ void DrawingCanvasWidget::paintEvent(QPaintEvent *ev) painter.drawPixmap(rect(), *m_pixmap); } + +void DrawingCanvasWidget::mousePressEvent(QMouseEvent *event) +{ + QWidget::mousePressEvent(event); + + if (event->button() == Qt::LeftButton) + { + setMouseTracking(true); + } +} + +void DrawingCanvasWidget::mouseReleaseEvent(QMouseEvent *event) +{ + QWidget::mouseReleaseEvent(event); + + if (event->button() == Qt::LeftButton) + { + setMouseTracking(false); + } +} + +void DrawingCanvasWidget::mouseMoveEvent(QMouseEvent *event) +{ + QWidget::mouseMoveEvent(event); +} diff --git a/src/editor/widgets/drawingcanvaswidget.h b/src/editor/widgets/drawingcanvaswidget.h index 1409ac2..2a0cf6c 100644 --- a/src/editor/widgets/drawingcanvaswidget.h +++ b/src/editor/widgets/drawingcanvaswidget.h @@ -23,6 +23,9 @@ signals: protected: void paintEvent(QPaintEvent *ev) override; + void mousePressEvent(QMouseEvent *event) override; + void mouseReleaseEvent(QMouseEvent *event) override; + void mouseMoveEvent(QMouseEvent *event) override; private: QPixmap *m_pixmap{};