18#include "toolboxwidget.h"
19#include "ui_toolboxwidget.h"
22#include <QResizeEvent>
24#include <QButtonGroup>
26#include "layermanager.h"
27#include "toolmanager.h"
29#include "pencilsettings.h"
34 strCommandName =
QString(
"shortcuts/") + strCommandName;
39ToolBoxWidget::ToolBoxWidget(
QWidget* parent)
45ToolBoxWidget::~ToolBoxWidget()
50void ToolBoxWidget::initUI()
56 "QToolButton { border: 0px; }"
57 "QToolButton:pressed { border: 1px solid #ADADAD; border-radius: 2px; background-color: #D5D5D5; }"
58 "QToolButton:checked { border: 1px solid #ADADAD; border-radius: 2px; background-color: #D5D5D5; }";
59 ui->pencilButton->setStyleSheet(sStyle);
60 ui->selectButton->setStyleSheet(sStyle);
61 ui->moveButton->setStyleSheet(sStyle);
62 ui->handButton->setStyleSheet(sStyle);
63 ui->penButton->setStyleSheet(sStyle);
64 ui->eraserButton->setStyleSheet(sStyle);
65 ui->polylineButton->setStyleSheet(sStyle);
66 ui->bucketButton->setStyleSheet(sStyle);
67 ui->brushButton->setStyleSheet(sStyle);
68 ui->eyedropperButton->setStyleSheet(sStyle);
69 ui->smudgeButton->setStyleSheet(sStyle);
72 ui->pencilButton->setToolTip(
tr(
"Pencil Tool (%1): Sketch with pencil" )
73 .arg( GetToolTips( CMD_TOOL_PENCIL ) ) );
74 ui->selectButton->setToolTip(
tr(
"Select Tool (%1): Select an object" )
75 .arg( GetToolTips( CMD_TOOL_SELECT ) ) );
76 ui->moveButton->setToolTip(
tr(
"Move Tool (%1): Move an object" )
77 .arg( GetToolTips( CMD_TOOL_MOVE ) ) );
78 ui->handButton->setToolTip(
tr(
"Hand Tool (%1): Move the canvas" )
79 .arg( GetToolTips( CMD_TOOL_HAND ) ) );
80 ui->penButton->setToolTip(
tr(
"Pen Tool (%1): Sketch with pen" )
81 .arg( GetToolTips( CMD_TOOL_PEN ) ) );
82 ui->eraserButton->setToolTip(
tr(
"Eraser Tool (%1): Erase" )
83 .arg( GetToolTips( CMD_TOOL_ERASER ) ) );
84 ui->polylineButton->setToolTip(
tr(
"Polyline Tool (%1): Create line/curves" )
85 .arg( GetToolTips( CMD_TOOL_POLYLINE ) ) );
86 ui->bucketButton->setToolTip(
tr(
"Paint Bucket Tool (%1): Fill selected area with a color" )
87 .arg( GetToolTips( CMD_TOOL_BUCKET ) ) );
88 ui->brushButton->setToolTip(
tr(
"Brush Tool (%1): Paint smooth stroke with a brush" )
89 .arg( GetToolTips( CMD_TOOL_BRUSH ) ) );
90 ui->eyedropperButton->setToolTip(
tr(
"Eyedropper Tool (%1): "
91 "Set color from the stage<br>[ALT] for instant access" )
92 .arg( GetToolTips( CMD_TOOL_EYEDROPPER ) ) );
93 ui->smudgeButton->setToolTip(
tr(
"Smudge Tool (%1):<br>Edit polyline/curves<br>"
94 "Liquify bitmap pixels<br> (%1)+[Alt]: Smooth" )
95 .arg( GetToolTips( CMD_TOOL_SMUDGE ) ) );
97 ui->pencilButton->setWhatsThis(
tr(
"Pencil Tool (%1)" )
98 .arg( GetToolTips( CMD_TOOL_PENCIL ) ) );
99 ui->selectButton->setWhatsThis(
tr(
"Select Tool (%1)" )
100 .arg( GetToolTips( CMD_TOOL_SELECT ) ) );
101 ui->moveButton->setWhatsThis(
tr(
"Move Tool (%1)" )
102 .arg( GetToolTips( CMD_TOOL_MOVE ) ) );
103 ui->handButton->setWhatsThis(
tr(
"Hand Tool (%1)" )
104 .arg( GetToolTips( CMD_TOOL_HAND ) ) );
105 ui->penButton->setWhatsThis(
tr(
"Pen Tool (%1)" )
106 .arg( GetToolTips( CMD_TOOL_PEN ) ) );
107 ui->eraserButton->setWhatsThis(
tr(
"Eraser Tool (%1)" )
108 .arg( GetToolTips( CMD_TOOL_ERASER ) ) );
109 ui->polylineButton->setWhatsThis(
tr(
"Polyline Tool (%1)" )
110 .arg( GetToolTips( CMD_TOOL_POLYLINE ) ) );
111 ui->bucketButton->setWhatsThis(
tr(
"Paint Bucket Tool (%1)" )
112 .arg( GetToolTips( CMD_TOOL_BUCKET ) ) );
113 ui->brushButton->setWhatsThis(
tr(
"Brush Tool (%1)" )
114 .arg( GetToolTips( CMD_TOOL_BRUSH ) ) );
115 ui->eyedropperButton->setWhatsThis(
tr(
"Eyedropper Tool (%1)" )
116 .arg( GetToolTips( CMD_TOOL_EYEDROPPER ) ) );
117 ui->smudgeButton->setWhatsThis(
tr(
"Smudge Tool (%1)" )
118 .arg( GetToolTips( CMD_TOOL_SMUDGE ) ) );
134 mFlowlayout->
addWidget(ui->pencilButton);
135 mFlowlayout->
addWidget(ui->eraserButton);
136 mFlowlayout->
addWidget(ui->selectButton);
140 mFlowlayout->
addWidget(ui->polylineButton);
141 mFlowlayout->
addWidget(ui->bucketButton);
142 mFlowlayout->
addWidget(ui->eyedropperButton);
144 mFlowlayout->
addWidget(ui->smudgeButton);
146 delete ui->scrollAreaWidgetContents_2->layout();
147 ui->scrollAreaWidgetContents_2->setLayout(mFlowlayout);
150 ui->scrollArea->setMinimumSize(
QSize(1,1));
154 buttonGroup->
addButton(ui->pencilButton);
155 buttonGroup->
addButton(ui->eraserButton);
156 buttonGroup->
addButton(ui->selectButton);
160 buttonGroup->
addButton(ui->polylineButton);
161 buttonGroup->
addButton(ui->bucketButton);
162 buttonGroup->
addButton(ui->eyedropperButton);
164 buttonGroup->
addButton(ui->smudgeButton);
167int ToolBoxWidget::getMinHeightForWidth(
int width)
const
169 return mFlowlayout->heightForWidth(
width);
172QSize ToolBoxWidget::sizeHint()
const
174 return minimumSizeHint();
177QSize ToolBoxWidget::minimumSizeHint()
const
179 int minWidth = mFlowlayout->minimumSize().
width();
180 return QSize(minWidth, getMinHeightForWidth(
width()));
187 updateLayoutAlignment();
190void ToolBoxWidget::updateLayoutAlignment()
193 if (mFlowlayout->rows() > 1) {
202void ToolBoxWidget::updateUI()
206void ToolBoxWidget::setActiveTool(ToolType toolType)
209 case ToolType::BRUSH:
215 case ToolType::PENCIL:
218 case ToolType::SELECT:
225 case ToolType::CAMERA:
228 case ToolType::ERASER:
231 case ToolType::POLYLINE:
234 case ToolType::SMUDGE:
237 case ToolType::BUCKET:
240 case ToolType::EYEDROPPER:
248void ToolBoxWidget::pencilOn()
250 toolOn(PENCIL, ui->pencilButton);
253void ToolBoxWidget::eraserOn()
255 toolOn(ERASER, ui->eraserButton);
258void ToolBoxWidget::selectOn()
260 toolOn(SELECT, ui->selectButton);
263void ToolBoxWidget::moveOn()
265 if (mEditor->layers()->currentLayer()->type() == Layer::CAMERA) {
266 toolOn(CAMERA, ui->moveButton);
268 toolOn(MOVE, ui->moveButton);
272void ToolBoxWidget::penOn()
274 toolOn(PEN, ui->penButton);
277void ToolBoxWidget::handOn()
279 toolOn(HAND, ui->handButton);
282void ToolBoxWidget::polylineOn()
284 toolOn(POLYLINE, ui->polylineButton);
287void ToolBoxWidget::bucketOn()
289 toolOn(BUCKET, ui->bucketButton);
292void ToolBoxWidget::eyedropperOn()
294 toolOn(EYEDROPPER, ui->eyedropperButton);
297void ToolBoxWidget::brushOn()
299 toolOn(BRUSH, ui->brushButton);
302void ToolBoxWidget::smudgeOn()
304 toolOn(SMUDGE, ui->smudgeButton);
307void ToolBoxWidget::deselectAllTools()
309 ui->pencilButton->setChecked(
false);
310 ui->eraserButton->setChecked(
false);
311 ui->selectButton->setChecked(
false);
312 ui->moveButton->setChecked(
false);
313 ui->handButton->setChecked(
false);
314 ui->penButton->setChecked(
false);
315 ui->polylineButton->setChecked(
false);
316 ui->bucketButton->setChecked(
false);
317 ui->eyedropperButton->setChecked(
false);
318 ui->brushButton->setChecked(
false);
319 ui->smudgeButton->setChecked(
false);
322void ToolBoxWidget::toolOn(ToolType toolType,
QToolButton* toolButton)
324 if (mEditor->tools()->currentTool()->type() == toolType) {
329 if (!mEditor->tools()->leavingThisTool())
334 mEditor->tools()->setCurrentTool(toolType);
virtual void invalidate() override
bool setAlignment(QWidget *w, Qt::Alignment alignment)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString tr(const char *sourceText, const char *disambiguation, int n)
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
void keySequence(QWindow *window, const QKeySequence &keySequence)
char * toString(const T &value)