107 m_d->gradient =
nullptr;
108 m_d->canvasResourcesInterface =
nullptr;
109 m_d->widgetGradientEditor =
nullptr;
111 QVBoxLayout *layoutMain =
new QVBoxLayout;
112 layoutMain->setContentsMargins(0, 0, 0, 0);
113 layoutMain->setSpacing(10);
115 QHBoxLayout *layoutButtons =
new QHBoxLayout;
116 layoutButtons->setContentsMargins(0, 0, 0, 0);
117 layoutButtons->setSpacing(5);
119 m_d->buttonConvertGradient =
new QPushButton(
this);
120 m_d->labelConvertGradientWarning =
new QLabel(
this);
122 m_d->labelConvertGradientWarning->setToolTip(
124 "Warning text shown when converting from a segment gradient to a stop gradient",
125 "Converting a segment gradient to a stop gradient may cause loss of information"
130 m_d->widgetGradientPresetChooser->setNameLabelVisible(
false);
131 m_d->widgetGradientPresetChooser->setEditOptionsVisible(
false);
133 m_d->toolButtonGradientPresetChooser =
new QToolButton(
this);
134 m_d->toolButtonGradientPresetChooser->setText(
135 i18nc(
"Choose a preset gradient from the button popup",
"Choose Gradient Preset")
137 m_d->toolButtonGradientPresetChooser->setPopupMode(QToolButton::InstantPopup);
138 m_d->widgetToolButtonGradientPresetChooser =
new QWidget(
this);
139 QVBoxLayout *layoutWidgetToolButtonGradientPresetChooser =
new QVBoxLayout;
140 layoutWidgetToolButtonGradientPresetChooser->setContentsMargins(0, 0, 0, 0);
141 layoutWidgetToolButtonGradientPresetChooser->setSpacing(0);
142 m_d->widgetToolButtonGradientPresetChooser->setLayout(layoutWidgetToolButtonGradientPresetChooser);
143 QWidgetAction *widgetActionToolButtonGradientPresetChooser =
new QWidgetAction(
this);
144 widgetActionToolButtonGradientPresetChooser->setDefaultWidget(
m_d->widgetToolButtonGradientPresetChooser);
145 m_d->toolButtonGradientPresetChooser->addAction(widgetActionToolButtonGradientPresetChooser);
147 m_d->buttonUpdateGradient =
new QPushButton(
this);
149 m_d->buttonUpdateGradient->setToolTip(
151 "Update the current gradient in the presets with the one in the generic gradient editor",
152 "Update the selected gradient preset with the current gradient"
156 m_d->buttonAddGradient =
new QPushButton(
this);
158 m_d->buttonAddGradient->setToolTip(
160 "Add the current gradient in the generic gradient editor to the presets",
161 "Add the current gradient to the presets"
166 m_d->toolButtonGradientPresetChooserOptions->setArrowVisible(
false);
167 m_d->toolButtonGradientPresetChooserOptions->setAutoRaise(
true);
169 m_d->actionUseGradientPresetChooserPopUp =
new QAction(
this);
170 m_d->actionUseGradientPresetChooserPopUp->setCheckable(
true);
171 m_d->actionUseGradientPresetChooserPopUp->setText(
173 "Show the gradient preset chooser as a pop-up in a button or inline",
174 "Use a pop-up gradient preset chooser"
177 m_d->actionCompactGradientPresetChooserMode =
new QAction(
this);
178 m_d->actionCompactGradientPresetChooserMode->setCheckable(
true);
179 m_d->actionCompactGradientPresetChooserMode->setText(
181 "Hide/show option widgets around the gradient preset chooser",
182 "Show compact gradient preset chooser"
185 QMenu *toolButtonGradientPresetChooserOptionsMenu =
new QMenu;
186 toolButtonGradientPresetChooserOptionsMenu->addAction(
m_d->actionUseGradientPresetChooserPopUp);
187 toolButtonGradientPresetChooserOptionsMenu->addAction(
m_d->actionCompactGradientPresetChooserMode);
188 m_d->toolButtonGradientPresetChooserOptions->setPopupWidget(toolButtonGradientPresetChooserOptionsMenu);
190 layoutButtons->addWidget(
m_d->buttonAddGradient, 0);
191 layoutButtons->addWidget(
m_d->buttonUpdateGradient, 0);
192 layoutButtons->addWidget(
m_d->buttonConvertGradient, 0);
193 layoutButtons->addWidget(
m_d->labelConvertGradientWarning, 0);
194 layoutButtons->addStretch(1);
195 layoutButtons->addWidget(
m_d->toolButtonGradientPresetChooser, 0);
196 layoutButtons->addWidget(
m_d->toolButtonGradientPresetChooserOptions, 0);
198 layoutMain->addWidget(
m_d->widgetGradientPresetChooser, 1);
199 layoutMain->addLayout(layoutButtons, 0);
200 layoutMain->addStretch();
202 setLayout(layoutMain);
204 m_d->compactMode =
false;
205 m_d->isConvertGradientButtonVisible =
true;
206 m_d->isUpdateGradientButtonVisible =
true;
207 m_d->isAddGradientButtonVisible =
true;
208 m_d->isGradientPresetChooserVisible =
true;
209 m_d->isGradientPresetChooserOptionsButtonVisible =
true;
210 m_d->useGradientPresetChooserPopUp =
true;
211 m_d->compactGradientPresetChooserMode =
false;
212 m_d->compactGradientEditorMode =
false;
221 m_d->buttonConvertGradient,
228 m_d->buttonUpdateGradient,
235 m_d->buttonAddGradient,
242 m_d->widgetGradientPresetChooser,
249 m_d->actionUseGradientPresetChooserPopUp,
250 SIGNAL(toggled(
bool)),
256 m_d->actionCompactGradientPresetChooserMode,
257 SIGNAL(toggled(
bool)),
262 m_d->updateCachedSizeHint();
263 setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
349 if (newGradient ==
m_d->gradient) {
353 if (!newGradient || !newGradient->valid()) {
354 if (
m_d->widgetGradientEditor) {
355 layout()->removeWidget(
m_d->widgetGradientEditor);
356 delete m_d->widgetGradientEditor;
357 m_d->widgetGradientEditor =
nullptr;
359 m_d->gradient =
nullptr;
368 if (
m_d->canvasResourcesInterface) {
372 QWidget *newGradientEditorWidget =
nullptr;
377 newGradientEditorWidget =
384 newGradientEditorWidget =
389 if (newGradientEditorWidget) {
390 QWidget *oldGradientEditorWidget =
m_d->widgetGradientEditor;
391 m_d->widgetGradientEditor = newGradientEditorWidget;
392 m_d->widgetGradientEditor->layout()->setContentsMargins(0, 0, 0, 0);
393 m_d->widgetGradientEditor->setMinimumSize(0, 0);
394 m_d->widgetGradientEditor->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
400 if (oldGradientEditorWidget) {
401 setUpdatesEnabled(
false);
402 layout()->replaceWidget(oldGradientEditorWidget,
m_d->widgetGradientEditor);
403 dynamic_cast<QVBoxLayout*
>(layout())->setStretchFactor(
m_d->widgetGradientEditor, 0);
404 layout()->activate();
405 delete oldGradientEditorWidget;
406 setUpdatesEnabled(
true);
408 dynamic_cast<QVBoxLayout*
>(layout())->insertWidget(
409 m_d->useGradientPresetChooserPopUp ? 1 : 2,
410 m_d->widgetGradientEditor,
420 m_d->updateCachedSizeHint();
556 m_d->widgetGradientPresetChooser->resourceItemChooser()->showImportExportBtns(!
m_d->compactGradientPresetChooserMode);
557 m_d->widgetGradientPresetChooser->resourceItemChooser()->showStorageBtn(!
m_d->compactGradientPresetChooserMode);
558 m_d->widgetGradientPresetChooser->resourceItemChooser()->showTaggingBar(!
m_d->compactGradientPresetChooserMode);
559 m_d->widgetGradientPresetChooser->resourceItemChooser()->showViewModeBtn(!
m_d->compactGradientPresetChooserMode);
562 int margin = !
m_d->useGradientPresetChooserPopUp ||
m_d->compactGradientPresetChooserMode ? 0 : 10;
563 m_d->widgetGradientPresetChooser->setContentsMargins(margin, margin, margin, margin);
565 if (
m_d->useGradientPresetChooserPopUp) {
566 if (!
m_d->widgetToolButtonGradientPresetChooser->children().contains(
m_d->widgetGradientPresetChooser)) {
567 layout()->removeWidget(
m_d->widgetGradientPresetChooser);
568 m_d->widgetToolButtonGradientPresetChooser->layout()->addWidget(
m_d->widgetGradientPresetChooser);
570 m_d->widgetGradientPresetChooser->setMinimumSize(
571 m_d->compactGradientPresetChooserMode ? 300 : 320,
572 m_d->compactGradientPresetChooserMode ? 300 : 320
574 m_d->widgetGradientPresetChooser->adjustSize();
576 if (!children().contains(
m_d->widgetGradientPresetChooser)) {
577 m_d->widgetToolButtonGradientPresetChooser->layout()->removeWidget(
m_d->widgetGradientPresetChooser);
578 static_cast<QVBoxLayout*
>(layout())->insertWidget(0,
m_d->widgetGradientPresetChooser, 1);
580 m_d->widgetGradientPresetChooser->setMinimumSize(
582 m_d->compactGradientPresetChooserMode ? 100 : 200
584 m_d->widgetGradientPresetChooser->show();
588 m_d->toolButtonGradientPresetChooser->setVisible(
590 m_d->isGradientPresetChooserVisible &&
591 m_d->useGradientPresetChooserPopUp
593 m_d->toolButtonGradientPresetChooserOptions->setVisible(
595 m_d->isGradientPresetChooserVisible &&
596 m_d->isGradientPresetChooserOptionsButtonVisible
598 m_d->actionUseGradientPresetChooserPopUp->setChecked(
m_d->useGradientPresetChooserPopUp);
599 m_d->actionCompactGradientPresetChooserMode->setChecked(
m_d->compactGradientPresetChooserMode);