diff --git a/libs/ui/forms/wdgpaintopsettings.ui b/libs/ui/forms/wdgpaintopsettings.ui --- a/libs/ui/forms/wdgpaintopsettings.ui +++ b/libs/ui/forms/wdgpaintopsettings.ui @@ -7,13 +7,13 @@ 0 0 1197 - 431 + 371 Brush Editor - + @@ -618,7 +618,7 @@ 3 - 3 + 0 @@ -646,103 +646,14 @@ - - - 5 - - - 5 - - - 0 - - - 5 - - - 5 + + + Qt::Horizontal - - - - - 0 - 0 - - - - Erase mode will use a separate brush size - - - Eraser switch size - - - false - - - - - - - - 0 - 0 - - - - Temporarily Save Tweaks To Presets - - - true - - - - - - - - 0 - 0 - - - - Erase mode will use a separate brush opacity - - - Eraser switch opacity - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 60 - 0 - - - - - + - + 5 @@ -756,8 +667,115 @@ 5 - 0 + 5 + + + + 3 + + + 0 + + + + + 0 + + + + + + 0 + 0 + + + + Temporarily Save Tweaks To Presets + + + true + + + + + + + + + + 0 + 0 + + + + Erase mode will use a separate brush size + + + Eraser switch size + + + false + + + + + + + + 0 + 0 + + + + Erase mode will use a separate brush opacity + + + Eraser switch opacity + + + false + + + + + + + + 0 + 0 + + + + + 60 + 0 + + + + + + + + + + + 0 + 0 + + + + Instant Preview threshold: + + + + + + + + + + @@ -947,6 +965,12 @@
kis_lod_availability_widget.h
1 + + KisDoubleSliderSpinBox + QWidget +
kis_slider_spin_box.h
+ 1 +
diff --git a/libs/ui/widgets/kis_lod_availability_widget.h b/libs/ui/widgets/kis_lod_availability_widget.h --- a/libs/ui/widgets/kis_lod_availability_widget.h +++ b/libs/ui/widgets/kis_lod_availability_widget.h @@ -41,7 +41,7 @@ public Q_SLOTS: void slotUserChangedLodAvailability(bool value); - void slotUserChangedLodThreshold(qreal value); + void slotUserChangedLodThreshold(); void slotUserChangedSize(qreal value); Q_SIGNALS: @@ -50,7 +50,6 @@ private Q_SLOTS: void showLodToolTip(); - void showLodThresholdWidget(const QPoint &pos); private: struct Private; diff --git a/libs/ui/widgets/kis_lod_availability_widget.cpp b/libs/ui/widgets/kis_lod_availability_widget.cpp --- a/libs/ui/widgets/kis_lod_availability_widget.cpp +++ b/libs/ui/widgets/kis_lod_availability_widget.cpp @@ -30,16 +30,6 @@ #include #include -namespace { -/** - * These strings are added intentionally so we could relayout the threshold slider after - * the string freeze for 4.0. Please translate them :) - */ -static const QString stringForInstantPreviewThreshold1 = i18nc("@label:slider", "Threshold:"); -static const QString stringForInstantPreviewThreshold2 = i18nc("@label:slider", "Instant preview threshold:"); -} - - struct KisLodAvailabilityWidget::Private { Private() : chkLod(0), resourceManager(0) {} @@ -66,35 +56,12 @@ connect(m_d->btnLod, SIGNAL(clicked()), SLOT(showLodToolTip())); - { - m_d->thresholdMenu.reset(new QMenu()); - m_d->thresholdMenu->addSection(i18n("Enable after:")); - - m_d->btnLod->setContextMenuPolicy(Qt::CustomContextMenu); - connect(m_d->btnLod, SIGNAL(customContextMenuRequested(QPoint)), - this, SLOT(showLodThresholdWidget(QPoint))); - - KisConfig cfg; - m_d->thresholdSlider = new KisDoubleSliderSpinBox(m_d->thresholdMenu.data()); - - m_d->thresholdSlider->setRange(0, cfg.readEntry("maximumBrushSize", 1000), 2); - m_d->thresholdSlider->setValue(100); - m_d->thresholdSlider->setSingleStep(1); - m_d->thresholdSlider->setExponentRatio(3.0); - m_d->thresholdSlider->setSuffix(i18n(" px")); - m_d->thresholdSlider->setBlockUpdateSignalOnDrag(true); - - QWidgetAction *sliderAction = new QWidgetAction(this); - sliderAction->setDefaultWidget(m_d->thresholdSlider); - - m_d->thresholdMenu->addAction(sliderAction); - } - QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(m_d->chkLod); layout->addWidget(m_d->btnLod); layout->setSpacing(0); + layout->setMargin(0); setLayout(layout); @@ -102,7 +69,6 @@ setLimitations(m_d->limitations); connect(m_d->chkLod, SIGNAL(toggled(bool)), SIGNAL(sigUserChangedLodAvailability(bool))); - connect(m_d->thresholdSlider, SIGNAL(valueChanged(qreal)), SIGNAL(sigUserChangedLodThreshold(qreal))); } KisLodAvailabilityWidget::~KisLodAvailabilityWidget() @@ -114,12 +80,6 @@ QToolTip::showText(QCursor::pos(), m_d->btnLod->toolTip(), m_d->btnLod); } -void KisLodAvailabilityWidget::showLodThresholdWidget(const QPoint &pos) -{ - Q_UNUSED(pos); - m_d->thresholdMenu->popup(QCursor::pos()); -} - void KisLodAvailabilityWidget::setLimitations(const KisPaintopLodLimitations &l) { QString limitationsText; @@ -157,10 +117,11 @@ toolTip = i18nc("@info:tooltip", "

Instant Preview Mode is " "disabled by instant preview threshold. " - "Please right-click here to change the threshold" "

  • Brush size %1
  • " "
  • Threshold: %2

", - size, lodThreshold); + QString::number(size).append(i18n(" px")), + QString::number(lodThreshold).append(i18n(" px")) + ); } else if (isLimited) { toolTip = i18nc("@info:tooltip", @@ -190,9 +151,8 @@ m_d->chkLod->setChecked(value); } -void KisLodAvailabilityWidget::slotUserChangedLodThreshold(qreal value) +void KisLodAvailabilityWidget::slotUserChangedLodThreshold() { - m_d->thresholdSlider->setValue(value); setLimitations(m_d->limitations); } diff --git a/libs/ui/widgets/kis_paintop_presets_popup.cpp b/libs/ui/widgets/kis_paintop_presets_popup.cpp --- a/libs/ui/widgets/kis_paintop_presets_popup.cpp +++ b/libs/ui/widgets/kis_paintop_presets_popup.cpp @@ -187,10 +187,11 @@ // loading preset from scratch option - m_d->uiWdgPaintOpPresetSettings.newPresetEngineButton->setPopupMode(QToolButton::InstantPopup); + m_d->uiWdgPaintOpPresetSettings.newPresetEngineButton->setPopupMode(QToolButton::InstantPopup); m_d->uiWdgPaintOpPresetSettings.newPresetEngineButton->setIcon(KisIconUtils::loadIcon("addlayer")); m_d->uiWdgPaintOpPresetSettings.bnBlacklistPreset->setIcon(KisIconUtils::loadIcon("deletelayer")); + // show/hide buttons KisConfig cfg; @@ -209,6 +210,17 @@ slotSwitchShowPresets(false); // hide presets by default + // lod (instant preview) threshold slider + m_d->uiWdgPaintOpPresetSettings.ipThresholdSlider->setRange(0, cfg.readEntry("maximumBrushSize", 1000), 2); + m_d->uiWdgPaintOpPresetSettings.ipThresholdSlider->setValue(100); + m_d->uiWdgPaintOpPresetSettings.ipThresholdSlider->setSingleStep(1); + m_d->uiWdgPaintOpPresetSettings.ipThresholdSlider->setExponentRatio(3.0); + m_d->uiWdgPaintOpPresetSettings.ipThresholdSlider->setSuffix(i18n(" px")); + m_d->uiWdgPaintOpPresetSettings.ipThresholdSlider->setBlockUpdateSignalOnDrag(true); + + + + // Connections connect(m_d->uiWdgPaintOpPresetSettings.paintPresetIcon, SIGNAL(clicked()), m_d->uiWdgPaintOpPresetSettings.scratchPad, SLOT(paintPresetImage())); @@ -309,6 +321,11 @@ SIGNAL(sigUserChangedLodThreshold(qreal)), SLOT(slotLodThresholdChanged(qreal))); + + connect(m_d->uiWdgPaintOpPresetSettings.ipThresholdSlider, + SIGNAL(valueChanged(qreal)), this, SLOT(slotLodThresholdChanged(qreal))); + + slotResourceChanged(KisCanvasResourceProvider::LodAvailability, resourceProvider->resourceManager()-> resource(KisCanvasResourceProvider::LodAvailability)); @@ -430,12 +447,15 @@ if (key == KisCanvasResourceProvider::LodAvailability) { m_d->uiWdgPaintOpPresetSettings.wdgLodAvailability->slotUserChangedLodAvailability(value.toBool()); } else if (key == KisCanvasResourceProvider::LodSizeThreshold) { - m_d->uiWdgPaintOpPresetSettings.wdgLodAvailability->slotUserChangedLodThreshold(value.toDouble()); + m_d->uiWdgPaintOpPresetSettings.ipThresholdSlider->setValue(value.toDouble()); + m_d->uiWdgPaintOpPresetSettings.wdgLodAvailability->slotUserChangedLodThreshold(); } else if (key == KisCanvasResourceProvider::Size) { m_d->uiWdgPaintOpPresetSettings.wdgLodAvailability->slotUserChangedSize(value.toDouble()); } } + + void KisPaintOpPresetsPopup::slotLodAvailabilityChanged(bool value) { m_d->resourceProvider->resourceManager()->setResource(KisCanvasResourceProvider::LodAvailability, QVariant(value));