diff --git a/resources/etc/OpenBoard.config b/resources/etc/OpenBoard.config index ffc35de9b..f17da3e54 100644 --- a/resources/etc/OpenBoard.config +++ b/resources/etc/OpenBoard.config @@ -51,6 +51,12 @@ MarkerLightBackgroundSelectedColors=#E3FF00, #FF0000, #004080, #008000, #C87400 MarkerMediumWidth=24 MarkerPressureSensitive=false MarkerStrongWidth=48 +DesktopPaletteScalePercent=100 +DesktopPaletteShowPen=true +DesktopPaletteShowEraser=true +DesktopPaletteShowMarker=true +DesktopPaletteShowSelector=true +DesktopPaletteShowPointer=true pageDpi=0 PenColorIndex=0 PenDarkBackgroundColors=#FFFFFF, #FF3400, #66C0FF, #81FF5C, #FFFF00, #B68360, #FF497E, #8D69FF, #000000 diff --git a/resources/forms/preferences.ui b/resources/forms/preferences.ui index 4ec35bd9f..6fa6ad8d7 100644 --- a/resources/forms/preferences.ui +++ b/resources/forms/preferences.ui @@ -94,20 +94,20 @@ 0 0 1018 - 1200 + 1300 783 - 1200 + 1300 0 - 920 + 1020 1011 111 @@ -234,7 +234,7 @@ 0 - 1040 + 1140 1011 111 @@ -485,7 +485,7 @@ 0 840 1011 - 111 + 211 @@ -498,7 +498,7 @@ Mode - + @@ -564,6 +564,42 @@ + + + + Drawing palette scale: + + + + + + 100% + 110% + 120% + 130% + 140% + 150% + 160% + 170% + 180% + 190% + 200% + + + + + + + Visible palette tools: + + + Pen + Marker + Eraser + Selector + Laser pointer + + diff --git a/src/core/UBPreferencesController.cpp b/src/core/UBPreferencesController.cpp index 76c5fa479..7a94aead4 100644 --- a/src/core/UBPreferencesController.cpp +++ b/src/core/UBPreferencesController.cpp @@ -316,6 +316,21 @@ void UBPreferencesController::wire() settings->appThemeMode->setInt(index); UBThemeManager::instance()->applyUserThemePreference(); }); + connect(mPreferencesUI->desktopPaletteScaleComboBox, + qOverload(&QComboBox::currentIndexChanged), this, + [settings](int index) { + settings->desktopPaletteScalePercent->setInt(100 + index * 10); + }); + connect(mPreferencesUI->desktopShowPenCheckBox, SIGNAL(clicked(bool)), + settings->desktopPaletteShowPen, SLOT(setBool(bool))); + connect(mPreferencesUI->desktopShowMarkerCheckBox, SIGNAL(clicked(bool)), + settings->desktopPaletteShowMarker, SLOT(setBool(bool))); + connect(mPreferencesUI->desktopShowEraserCheckBox, SIGNAL(clicked(bool)), + settings->desktopPaletteShowEraser, SLOT(setBool(bool))); + connect(mPreferencesUI->desktopShowSelectorCheckBox, SIGNAL(clicked(bool)), + settings->desktopPaletteShowSelector, SLOT(setBool(bool))); + connect(mPreferencesUI->desktopShowPointerCheckBox, SIGNAL(clicked(bool)), + settings->desktopPaletteShowPointer, SLOT(setBool(bool))); connect(mPreferencesUI->useExternalBrowserCheckBox, SIGNAL(clicked(bool)), settings->webUseExternalBrowser, SLOT(setBool(bool))); connect(mPreferencesUI->displayBrowserPageCheckBox, SIGNAL(clicked(bool)), settings->webShowPageImmediatelyOnMirroredScreen, SLOT(setBool(bool))); @@ -472,6 +487,13 @@ void UBPreferencesController::init() mPreferencesUI->startModeComboBox->setCurrentIndex(settings->appStartMode->get().toInt()); mPreferencesUI->themeComboBox->setCurrentIndex(settings->appThemeMode->get().toInt()); + const int desktopScale = qBound(100, settings->desktopPaletteScalePercent->get().toInt(), 200); + mPreferencesUI->desktopPaletteScaleComboBox->setCurrentIndex((desktopScale - 100) / 10); + mPreferencesUI->desktopShowPenCheckBox->setChecked(settings->desktopPaletteShowPen->get().toBool()); + mPreferencesUI->desktopShowMarkerCheckBox->setChecked(settings->desktopPaletteShowMarker->get().toBool()); + mPreferencesUI->desktopShowEraserCheckBox->setChecked(settings->desktopPaletteShowEraser->get().toBool()); + mPreferencesUI->desktopShowSelectorCheckBox->setChecked(settings->desktopPaletteShowSelector->get().toBool()); + mPreferencesUI->desktopShowPointerCheckBox->setChecked(settings->desktopPaletteShowPointer->get().toBool()); mPreferencesUI->useExternalBrowserCheckBox->setChecked(settings->webUseExternalBrowser->get().toBool()); mPreferencesUI->displayBrowserPageCheckBox->setChecked(settings->webShowPageImmediatelyOnMirroredScreen->get().toBool()); @@ -546,6 +568,13 @@ void UBPreferencesController::defaultSettings() mPreferencesUI->verticalChoice->setChecked(settings->appToolBarOrientationVertical->reset().toBool()); mPreferencesUI->horizontalChoice->setChecked(!settings->appToolBarOrientationVertical->reset().toBool()); mPreferencesUI->startModeComboBox->setCurrentIndex(0); + mPreferencesUI->desktopPaletteScaleComboBox->setCurrentIndex( + (settings->desktopPaletteScalePercent->reset().toInt() - 100) / 10); + mPreferencesUI->desktopShowPenCheckBox->setChecked(settings->desktopPaletteShowPen->reset().toBool()); + mPreferencesUI->desktopShowMarkerCheckBox->setChecked(settings->desktopPaletteShowMarker->reset().toBool()); + mPreferencesUI->desktopShowEraserCheckBox->setChecked(settings->desktopPaletteShowEraser->reset().toBool()); + mPreferencesUI->desktopShowSelectorCheckBox->setChecked(settings->desktopPaletteShowSelector->reset().toBool()); + mPreferencesUI->desktopShowPointerCheckBox->setChecked(settings->desktopPaletteShowPointer->reset().toBool()); mPreferencesUI->useSystemOSKCheckBox->setChecked(settings->useSystemOnScreenKeyboard->reset().toBool()); diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 0d6cd120c..a49b51eec 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -315,6 +315,13 @@ void UBSettings::init() boardUseHighResTabletEvent = new UBSetting(this, "Board", "UseHighResTabletEvent", true); + desktopPaletteScalePercent = new UBSetting(this, "Board", "DesktopPaletteScalePercent", 100); + desktopPaletteShowPen = new UBSetting(this, "Board", "DesktopPaletteShowPen", true); + desktopPaletteShowEraser = new UBSetting(this, "Board", "DesktopPaletteShowEraser", true); + desktopPaletteShowMarker = new UBSetting(this, "Board", "DesktopPaletteShowMarker", true); + desktopPaletteShowSelector = new UBSetting(this, "Board", "DesktopPaletteShowSelector", true); + desktopPaletteShowPointer = new UBSetting(this, "Board", "DesktopPaletteShowPointer", true); + boardInterpolatePenStrokes = new UBSetting(this, "Board", "InterpolatePenStrokes", true); boardSimplifyPenStrokes = new UBSetting(this, "Board", "SimplifyPenStrokes", true); boardSimplifyPenStrokesThresholdAngle = new UBSetting(this, "Board", "SimplifyPenStrokesThresholdAngle", 2); diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h index f87e8e7cf..b6e06c8b1 100644 --- a/src/core/UBSettings.h +++ b/src/core/UBSettings.h @@ -300,6 +300,13 @@ class UBSettings : public QObject UBSetting* boardUseHighResTabletEvent; + UBSetting* desktopPaletteScalePercent; + UBSetting* desktopPaletteShowPen; + UBSetting* desktopPaletteShowEraser; + UBSetting* desktopPaletteShowMarker; + UBSetting* desktopPaletteShowSelector; + UBSetting* desktopPaletteShowPointer; + UBSetting* boardInterpolatePenStrokes; UBSetting* boardSimplifyPenStrokes; UBSetting* boardSimplifyPenStrokesThresholdAngle; diff --git a/src/desktop/UBDesktopAnnotationController.cpp b/src/desktop/UBDesktopAnnotationController.cpp index 14948b3a7..3d6d75e3c 100644 --- a/src/desktop/UBDesktopAnnotationController.cpp +++ b/src/desktop/UBDesktopAnnotationController.cpp @@ -570,15 +570,7 @@ void UBDesktopAnnotationController::penActionPressed() mPenHoldTimer = QTime::currentTime(); mPendingPenButtonPressed = true; - // Check if the mouse cursor is on the little arrow - QPoint cursorPos = QCursor::pos(); - QPoint palettePos = mDesktopPalette->mapToGlobal(QPoint(0, 0)); // global coordinates of palette - QPoint buttonPos = mDesktopPalette->buttonPos(UBApplication::mainWindow->actionPen); - - int iX = cursorPos.x() - (palettePos.x() + buttonPos.x()); // x position of the cursor in the palette - int iY = cursorPos.y() - (palettePos.y() + buttonPos.y()); // y position of the cursor in the palette - - if(iX >= 30 && iX <= 44 && iY >= 30 && iY <= 44) + if (isSubtoolArrowPressed(UBApplication::mainWindow->actionPen)) { mbArrowClicked = true; penActionReleased(); @@ -624,15 +616,7 @@ void UBDesktopAnnotationController::eraserActionPressed() mEraserHoldTimer = QTime::currentTime(); mPendingEraserButtonPressed = true; - // Check if the mouse cursor is on the little arrow - QPoint cursorPos = QCursor::pos(); - QPoint palettePos = mDesktopPalette->mapToGlobal(QPoint(0, 0)); - QPoint buttonPos = mDesktopPalette->buttonPos(UBApplication::mainWindow->actionEraser); - - int iX = cursorPos.x() - (palettePos.x() + buttonPos.x()); // x position of the cursor in the palette - int iY = cursorPos.y() - (palettePos.y() + buttonPos.y()); // y position of the cursor in the palette - - if(iX >= 30 && iX <= 44 && iY >= 30 && iY <= 44) + if (isSubtoolArrowPressed(UBApplication::mainWindow->actionEraser)) { mbArrowClicked = true; eraserActionReleased(); @@ -679,15 +663,7 @@ void UBDesktopAnnotationController::markerActionPressed() mMarkerHoldTimer = QTime::currentTime(); mPendingMarkerButtonPressed = true; - // Check if the mouse cursor is on the little arrow - QPoint cursorPos = QCursor::pos(); - QPoint palettePos = mDesktopPalette->mapToGlobal(QPoint(0, 0)); - QPoint buttonPos = mDesktopPalette->buttonPos(UBApplication::mainWindow->actionMarker); - - int iX = cursorPos.x() - (palettePos.x() + buttonPos.x()); // x position of the cursor in the palette - int iY = cursorPos.y() - (palettePos.y() + buttonPos.y()); // y position of the cursor in the palette - - if(iX >= 30 && iX <= 44 && iY >= 30 && iY <= 44) + if (isSubtoolArrowPressed(UBApplication::mainWindow->actionMarker)) { mbArrowClicked = true; markerActionReleased(); @@ -777,6 +753,21 @@ void UBDesktopAnnotationController::switchCursor(const int tool) mTransparentDrawingView->setToolCursor(tool); } +bool UBDesktopAnnotationController::isSubtoolArrowPressed(QAction* action) const +{ + UBActionPaletteButton* button = mDesktopPalette->getButtonFromAction(action); + + if (!button) + return false; + + const QPoint localPosition = button->mapFromGlobal(QCursor::pos()); + const int arrowExtent = qMax(14, qRound(qMin(button->width(), button->height()) * 0.36)); + const QRect arrowRegion(button->width() - arrowExtent, + button->height() - arrowExtent, + arrowExtent, arrowExtent); + return arrowRegion.contains(localPosition); +} + /** * \brief Reconnect the pressed & released signals of the property palettes */ diff --git a/src/desktop/UBDesktopAnnotationController.h b/src/desktop/UBDesktopAnnotationController.h index b217a663a..3510b4a56 100644 --- a/src/desktop/UBDesktopAnnotationController.h +++ b/src/desktop/UBDesktopAnnotationController.h @@ -133,6 +133,7 @@ class UBDesktopAnnotationController : public QObject void togglePropertyPalette(UBActionPalette* palette); void updateMask(bool bTransparent); static QPixmap clipboardScreenshot(); + bool isSubtoolArrowPressed(QAction* action) const; UBDesktopPalette *mDesktopPalette; //UBKeyboardPalette *mKeyboardPalette; diff --git a/src/desktop/UBDesktopPalette.cpp b/src/desktop/UBDesktopPalette.cpp index 9e28a6442..b0d48276d 100644 --- a/src/desktop/UBDesktopPalette.cpp +++ b/src/desktop/UBDesktopPalette.cpp @@ -50,29 +50,14 @@ UBDesktopPalette::UBDesktopPalette(QWidget *parent, UBRightPalette* _rightPalett , mDisplaySelectAction(NULL) , rightPalette(_rightPalette) { - QList actions; - mActionUniboard = new QAction(QIcon(":/images/toolbar/board.png"), tr("Show OpenBoard"), this); connect(mActionUniboard, SIGNAL(triggered()), this, SIGNAL(uniboardClick())); - actions << mActionUniboard; - - - actions << UBApplication::mainWindow->actionPen; - actions << UBApplication::mainWindow->actionEraser; - actions << UBApplication::mainWindow->actionMarker; - actions << UBApplication::mainWindow->actionSelector; - actions << UBApplication::mainWindow->actionPointer; - - if (UBPlatformUtils::hasVirtualKeyboard()) - actions << UBApplication::mainWindow->actionVirtualKeyboard; mActionCustomSelect = new QAction(QIcon(":/images/toolbar/captureArea.png"), tr("Capture Part of the Screen"), this); connect(mActionCustomSelect, SIGNAL(triggered()), this, SIGNAL(customClick())); - actions << mActionCustomSelect; mDisplaySelectAction = new QAction(QIcon(":/images/toolbar/captureScreen.png"), tr("Capture the Screen"), this); connect(mDisplaySelectAction, SIGNAL(triggered()), this, SIGNAL(screenClick())); - actions << mDisplaySelectAction; QIcon showHideIcon; showHideIcon.addPixmap(QPixmap(":/images/toolbar/eyeOpened.png"), QIcon::Normal , QIcon::On); @@ -81,10 +66,9 @@ UBDesktopPalette::UBDesktopPalette(QWidget *parent, UBRightPalette* _rightPalett mShowHideAction->setCheckable(true); connect(mShowHideAction, SIGNAL(triggered(bool)), this, SLOT(showHideClick(bool))); - actions << mShowHideAction; - setActions(actions); - setButtonIconSize(QSize(42, 42)); + setActions(maximizedActions()); + applyScale(); adjustSizeAndPosition(); @@ -98,6 +82,20 @@ UBDesktopPalette::UBDesktopPalette(QWidget *parent, UBRightPalette* _rightPalett setMinimizePermission(true); connect(rightPalette, SIGNAL(resized()), this, SLOT(parentResized())); + + UBSettings* settings = UBSettings::settings(); + connect(settings->desktopPaletteScalePercent, SIGNAL(changed(QVariant)), + this, SLOT(desktopPaletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowPen, SIGNAL(changed(QVariant)), + this, SLOT(desktopPaletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowEraser, SIGNAL(changed(QVariant)), + this, SLOT(desktopPaletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowMarker, SIGNAL(changed(QVariant)), + this, SLOT(desktopPaletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowSelector, SIGNAL(changed(QVariant)), + this, SLOT(desktopPaletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowPointer, SIGNAL(changed(QVariant)), + this, SLOT(desktopPaletteSettingsChanged(QVariant))); } @@ -165,6 +163,7 @@ void UBDesktopPalette::minimizeMe(eMinimizedLocation location) { Q_UNUSED(location); QList actions; + mIsMinimized = true; clearLayout(); actions << mMaximizeAction; @@ -180,30 +179,70 @@ void UBDesktopPalette::minimizeMe(eMinimizedLocation location) // Called when the user wants to maximize the palette void UBDesktopPalette::maximizeMe() { - QList actions; + mIsMinimized = false; clearLayout(); + setActions(maximizedActions()); + + adjustSizeAndPosition(); + + // Notify that the maximization has been done + emit maximized(); +#ifdef UB_REQUIRES_MASK_UPDATE + emit refreshMask(); +#endif +} + +QList UBDesktopPalette::maximizedActions() const +{ + UBSettings* settings = UBSettings::settings(); + QList actions; + actions << mActionUniboard; - actions << UBApplication::mainWindow->actionPen; - actions << UBApplication::mainWindow->actionEraser; - actions << UBApplication::mainWindow->actionMarker; - actions << UBApplication::mainWindow->actionSelector; - actions << UBApplication::mainWindow->actionPointer; + if (settings->desktopPaletteShowPen->get().toBool()) + actions << UBApplication::mainWindow->actionPen; + if (settings->desktopPaletteShowEraser->get().toBool()) + actions << UBApplication::mainWindow->actionEraser; + if (settings->desktopPaletteShowMarker->get().toBool()) + actions << UBApplication::mainWindow->actionMarker; + if (settings->desktopPaletteShowSelector->get().toBool()) + actions << UBApplication::mainWindow->actionSelector; + if (settings->desktopPaletteShowPointer->get().toBool()) + actions << UBApplication::mainWindow->actionPointer; + if (UBPlatformUtils::hasVirtualKeyboard()) actions << UBApplication::mainWindow->actionVirtualKeyboard; actions << mActionCustomSelect; actions << mDisplaySelectAction; actions << mShowHideAction; + return actions; +} - setActions(actions); +void UBDesktopPalette::applyScale() +{ + const int percent = qBound(100, + UBSettings::settings()->desktopPaletteScalePercent->get().toInt(), 200); + const int iconExtent = qRound(42.0 * percent / 100.0); + setButtonIconSize(QSize(iconExtent, iconExtent)); +} + +void UBDesktopPalette::desktopPaletteSettingsChanged(QVariant value) +{ + Q_UNUSED(value); + applyScale(); + + if (!mIsMinimized) + { + clearLayout(); + setActions(maximizedActions()); + emit maximized(); + } adjustSizeAndPosition(); - // Notify that the maximization has been done - emit maximized(); #ifdef UB_REQUIRES_MASK_UPDATE - emit refreshMask(); + emit refreshMask(); #endif } diff --git a/src/desktop/UBDesktopPalette.h b/src/desktop/UBDesktopPalette.h index 25a2b031c..7914534f4 100644 --- a/src/desktop/UBDesktopPalette.h +++ b/src/desktop/UBDesktopPalette.h @@ -69,6 +69,7 @@ class UBDesktopPalette : public UBActionPalette void minimizeMe(eMinimizedLocation location); void maximizeMe(); void parentResized(); + void desktopPaletteSettingsChanged(QVariant value = QVariant()); protected: void showEvent(QShowEvent *event); @@ -83,10 +84,13 @@ class UBDesktopPalette : public UBActionPalette QAction *mActionUniboard; QAction *mActionCustomSelect; QAction* mActionTest; + bool mIsMinimized{false}; UBRightPalette* rightPalette; void adjustPosition(); + QList maximizedActions() const; + void applyScale(); signals: diff --git a/src/gui/UBActionPalette.cpp b/src/gui/UBActionPalette.cpp index 66d241a09..64af42288 100644 --- a/src/gui/UBActionPalette.cpp +++ b/src/gui/UBActionPalette.cpp @@ -109,7 +109,8 @@ UBActionPaletteButton* UBActionPalette::createPaletteButton(QAction* action, QWi connect(button, &UBActionPaletteButton::clicked, this, &UBActionPalette::buttonClicked); connect(action, &QAction::changed, - this, &UBActionPalette::actionChanged); + this, &UBActionPalette::actionChanged, + Qt::UniqueConnection); return button; } diff --git a/src/gui/UBStylusPalette.cpp b/src/gui/UBStylusPalette.cpp index 0e8b5b7e3..d3aa534e2 100644 --- a/src/gui/UBStylusPalette.cpp +++ b/src/gui/UBStylusPalette.cpp @@ -76,13 +76,39 @@ UBStylusPalette::UBStylusPalette(QWidget *parent, Qt::Orientation orient) UBApplication::mainWindow->actionSnap->setProperty("ungrouped", true); setActions(actions); - setButtonIconSize(QSize(42, 42)); groupActions(); UBShortcutManager::shortcutManager()->addActionGroup(mActionGroup); - adjustSizeAndPosition(); + UBSettings* settings = UBSettings::settings(); + connect(settings->desktopPaletteScalePercent, SIGNAL(changed(QVariant)), + this, SLOT(paletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowPen, SIGNAL(changed(QVariant)), + this, SLOT(paletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowEraser, SIGNAL(changed(QVariant)), + this, SLOT(paletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowMarker, SIGNAL(changed(QVariant)), + this, SLOT(paletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowSelector, SIGNAL(changed(QVariant)), + this, SLOT(paletteSettingsChanged(QVariant))); + connect(settings->desktopPaletteShowPointer, SIGNAL(changed(QVariant)), + this, SLOT(paletteSettingsChanged(QVariant))); + + const QList configurableActions = { + UBApplication::mainWindow->actionPen, + UBApplication::mainWindow->actionEraser, + UBApplication::mainWindow->actionMarker, + UBApplication::mainWindow->actionSelector, + UBApplication::mainWindow->actionPointer + }; + + for (QAction* action : configurableActions) + { + // Reapply palette visibility after QAction state changes. + connect(action, &QAction::changed, this, [this]() { applyToolVisibility(); }); + } + paletteSettingsChanged(); initPosition(); foreach(const UBActionPaletteButton* button, mButtons) @@ -92,6 +118,40 @@ UBStylusPalette::UBStylusPalette(QWidget *parent, Qt::Orientation orient) } +void UBStylusPalette::paletteSettingsChanged(QVariant value) +{ + Q_UNUSED(value); + + UBSettings* settings = UBSettings::settings(); + const int percent = qBound(100, settings->desktopPaletteScalePercent->get().toInt(), 200); + const int iconExtent = qRound(42.0 * percent / 100.0); + setButtonIconSize(QSize(iconExtent, iconExtent)); + + applyToolVisibility(); + adjustSizeAndPosition(); +} + +void UBStylusPalette::applyToolVisibility() +{ + UBSettings* settings = UBSettings::settings(); + + const auto setButtonVisible = [this](QAction* action, bool visible) { + if (UBActionPaletteButton* button = getButtonFromAction(action)) + button->setVisible(visible); + }; + + setButtonVisible(UBApplication::mainWindow->actionPen, + settings->desktopPaletteShowPen->get().toBool()); + setButtonVisible(UBApplication::mainWindow->actionEraser, + settings->desktopPaletteShowEraser->get().toBool()); + setButtonVisible(UBApplication::mainWindow->actionMarker, + settings->desktopPaletteShowMarker->get().toBool()); + setButtonVisible(UBApplication::mainWindow->actionSelector, + settings->desktopPaletteShowSelector->get().toBool()); + setButtonVisible(UBApplication::mainWindow->actionPointer, + settings->desktopPaletteShowPointer->get().toBool()); +} + void UBStylusPalette::initPosition() { QWidget* pParentW = parentWidget(); @@ -130,5 +190,3 @@ void UBStylusPalette::stylusToolDoubleClicked() { emit stylusToolDoubleClicked(mActionGroup->checkedAction()->property("id").toInt()); } - - diff --git a/src/gui/UBStylusPalette.h b/src/gui/UBStylusPalette.h index 4bce4cf8d..346ceabd5 100644 --- a/src/gui/UBStylusPalette.h +++ b/src/gui/UBStylusPalette.h @@ -48,8 +48,10 @@ class UBStylusPalette : public UBActionPalette private slots: void stylusToolDoubleClicked(); + void paletteSettingsChanged(QVariant value = QVariant()); private: + void applyToolVisibility(); int mLastSelectedId; signals: