From 200a66644ef3d02bfb9969f6e9010f35fbec62ae Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Fri, 27 Jan 2023 11:12:03 +0100 Subject: [PATCH] QmlEditorWidgets: Inline contextpanewidgetrectangle.ui Change-Id: I8f823c0035ef74671e8240cb50f447a521ec088e Reviewed-by: hjk --- src/libs/qmleditorwidgets/CMakeLists.txt | 2 +- .../contextpanewidgetrectangle.cpp | 173 ++++++---- .../contextpanewidgetrectangle.h | 20 +- .../contextpanewidgetrectangle.ui | 314 ------------------ .../qmleditorwidgets/qmleditorwidgets.qbs | 2 +- 5 files changed, 124 insertions(+), 387 deletions(-) delete mode 100644 src/libs/qmleditorwidgets/contextpanewidgetrectangle.ui diff --git a/src/libs/qmleditorwidgets/CMakeLists.txt b/src/libs/qmleditorwidgets/CMakeLists.txt index c57b4d6e00f..5fbe9e38f07 100644 --- a/src/libs/qmleditorwidgets/CMakeLists.txt +++ b/src/libs/qmleditorwidgets/CMakeLists.txt @@ -6,7 +6,7 @@ add_qtc_library(QmlEditorWidgets contextpanetextwidget.cpp contextpanetextwidget.h contextpanewidget.cpp contextpanewidget.h contextpanewidgetimage.cpp contextpanewidgetimage.h - contextpanewidgetrectangle.cpp contextpanewidgetrectangle.h contextpanewidgetrectangle.ui + contextpanewidgetrectangle.cpp contextpanewidgetrectangle.h customcolordialog.cpp customcolordialog.h easingpane/easingcontextpane.cpp easingpane/easingcontextpane.h easingpane/easinggraph.cpp easingpane/easinggraph.h diff --git a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp index b6c40291dfd..6382ebf4fff 100644 --- a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp +++ b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp @@ -2,40 +2,82 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "contextpanewidgetrectangle.h" -#include "ui_contextpanewidgetrectangle.h" + +#include "colorbutton.h" #include "contextpanewidget.h" #include "customcolordialog.h" +#include "gradientline.h" + #include +#include #include + +#include #include +#include +#include +#include namespace QmlEditorWidgets { -ContextPaneWidgetRectangle::ContextPaneWidgetRectangle(QWidget *parent) : - QWidget(parent), - ui(new Ui::ContextPaneWidgetRectangle) +ContextPaneWidgetRectangle::ContextPaneWidgetRectangle(QWidget *parent) + : QWidget(parent) { - ui->setupUi(this); + const auto toolButton = [] (const QString &icon) { + auto result = new QToolButton; + result->setAutoExclusive(true); + result->setCheckable(true); + result->setFixedSize(30, 30); + result->setIcon(QIcon(":/qmldesigner/images/" + icon + ".png")); + return result; + }; - ui->colorColorButton->setShowArrow(false); - ui->borderColorButton->setShowArrow(false); + m_gradientLabel = new QLabel(tr("Gradient")); + m_gradientLabel->setAlignment(Qt::AlignBottom); + m_gradientLine = new GradientLine; + m_gradientLine->setMinimumWidth(240); - connect(ui->colorColorButton, &QmlEditorWidgets::ColorButton::toggled, + m_colorColorButton = new ColorButton; + m_colorColorButton->setShowArrow(false); + m_colorSolid = toolButton("icon_color_solid"); + m_colorGradient = toolButton("icon_color_gradient"); + m_colorNone = toolButton("icon_color_none"); + auto colorButtons = new QButtonGroup(this); + colorButtons->addButton(m_colorSolid); + colorButtons->addButton(m_colorGradient); + colorButtons->addButton(m_colorNone); + + m_borderColorButton = new ColorButton; + m_borderColorButton->setShowArrow(false); + m_borderSolid = toolButton("icon_color_solid"); + m_borderNone = toolButton("icon_color_none"); + auto borderButtons = new QButtonGroup(this); + borderButtons->addButton(m_borderSolid); + borderButtons->addButton(m_borderNone); + + using namespace Utils::Layouting; + Grid { + m_gradientLabel, m_gradientLine, br, + tr("Color"), Row { m_colorColorButton, m_colorSolid, m_colorGradient, m_colorNone, st, }, br, + tr("Border"), Row { m_borderColorButton, m_borderSolid, m_borderNone, st, }, br, + }.attachTo(this); + + connect(m_colorColorButton, &QmlEditorWidgets::ColorButton::toggled, this, &ContextPaneWidgetRectangle::onColorButtonToggled); - connect(ui->borderColorButton, &QmlEditorWidgets::ColorButton::toggled, + connect(m_borderColorButton, &QmlEditorWidgets::ColorButton::toggled, this, &ContextPaneWidgetRectangle::onBorderColorButtonToggled); - connect(ui->colorSolid, &QToolButton::clicked, + connect(m_colorSolid, &QToolButton::clicked, this, &ContextPaneWidgetRectangle::onColorSolidClicked); - connect(ui->borderSolid, &QToolButton::clicked, + connect(m_borderSolid, &QToolButton::clicked, this, &ContextPaneWidgetRectangle::onBorderSolidClicked); - connect(ui->colorNone, &QToolButton::clicked, + connect(m_colorNone, &QToolButton::clicked, this, &ContextPaneWidgetRectangle::onColorNoneClicked); - connect(ui->borderNone, &QToolButton::clicked, + connect(m_borderNone, &QToolButton::clicked, this, &ContextPaneWidgetRectangle::onBorderNoneClicked); - connect(ui->colorGradient, &QToolButton::clicked, this, &ContextPaneWidgetRectangle::onGradientClicked); + connect(m_colorGradient, &QToolButton::clicked, this, &ContextPaneWidgetRectangle::onGradientClicked); ContextPaneWidget *parentContextWidget = qobject_cast(parentWidget()); connect(parentContextWidget->colorDialog(), &CustomColorDialog::accepted, @@ -43,17 +85,12 @@ ContextPaneWidgetRectangle::ContextPaneWidgetRectangle(QWidget *parent) : connect(parentContextWidget->colorDialog(), &CustomColorDialog::rejected, this, &ContextPaneWidgetRectangle::onColorDialogCancled); - connect(ui->gradientLine, &QmlEditorWidgets::GradientLine::openColorDialog, + connect(m_gradientLine, &QmlEditorWidgets::GradientLine::openColorDialog, this, &ContextPaneWidgetRectangle::onGradientLineDoubleClicked); - connect(ui->gradientLine, &QmlEditorWidgets::GradientLine::gradientChanged, + connect(m_gradientLine, &QmlEditorWidgets::GradientLine::gradientChanged, this, &ContextPaneWidgetRectangle::onUpdateGradient); } -ContextPaneWidgetRectangle::~ContextPaneWidgetRectangle() -{ - delete ui; -} - void ContextPaneWidgetRectangle::setProperties(QmlJS::PropertyReader *propertyReader) { m_hasGradient = propertyReader->hasProperty(QLatin1String("gradient")); @@ -64,44 +101,44 @@ void ContextPaneWidgetRectangle::setProperties(QmlJS::PropertyReader *propertyRe QString str = propertyReader->readProperty(QLatin1String("color")).toString(); if (QmlJS::toQColor(str).alpha() == 0) m_none = true; - ui->colorColorButton->setColor(str); + m_colorColorButton->setColor(str); } else { - ui->colorColorButton->setColor(QLatin1String("white")); + m_colorColorButton->setColor(QLatin1String("white")); } if (propertyReader->hasProperty(QLatin1String("border.color"))) { - ui->borderColorButton->setColor(propertyReader->readProperty(QLatin1String("border.color")).toString()); + m_borderColorButton->setColor(propertyReader->readProperty(QLatin1String("border.color")).toString()); m_hasBorder = true; } else { - ui->borderColorButton->setColor(QLatin1String("transparent")); + m_borderColorButton->setColor(QLatin1String("transparent")); } if (propertyReader->hasProperty(QLatin1String("border.width"))) m_hasBorder = true; - ui->colorSolid->setChecked(true); - ui->borderNone->setChecked(true); - ui->borderSolid->setChecked(m_hasBorder); + m_colorSolid->setChecked(true); + m_borderNone->setChecked(true); + m_borderSolid->setChecked(m_hasBorder); if (m_none) - ui->colorNone->setChecked(true); + m_colorNone->setChecked(true); - ui->gradientLabel->setEnabled(true); - ui->gradientLine->setEnabled(true); + m_gradientLabel->setEnabled(true); + m_gradientLine->setEnabled(true); if (m_hasGradient && isGradientEditingEnabled()) { bool isBound; - ui->colorGradient->setChecked(true); - ui->gradientLine->setGradient(propertyReader->parseGradient(QLatin1String("gradient"), &isBound)); + m_colorGradient->setChecked(true); + m_gradientLine->setGradient(propertyReader->parseGradient(QLatin1String("gradient"), &isBound)); if (isBound) { - ui->gradientLabel->setEnabled(false); - ui->gradientLine->setEnabled(false); - ui->colorColorButton->setColor(QLatin1String("invalidColor")); + m_gradientLabel->setEnabled(false); + m_gradientLine->setEnabled(false); + m_colorColorButton->setColor(QLatin1String("invalidColor")); } } else { - ui->gradientLine->setEnabled(false); - ui->gradientLabel->setEnabled(false); + m_gradientLine->setEnabled(false); + m_gradientLabel->setEnabled(false); setColor(); } @@ -110,7 +147,7 @@ void ContextPaneWidgetRectangle::setProperties(QmlJS::PropertyReader *propertyRe m_gradientTimer = -1; } - ui->colorGradient->setEnabled(isGradientEditingEnabled()); + m_colorGradient->setEnabled(isGradientEditingEnabled()); } void ContextPaneWidgetRectangle::enabableGradientEditing(bool b) @@ -121,12 +158,12 @@ void ContextPaneWidgetRectangle::enabableGradientEditing(bool b) void ContextPaneWidgetRectangle::onBorderColorButtonToggled(bool flag) { if (flag) { - ui->colorColorButton->setChecked(false); + m_colorColorButton->setChecked(false); m_gradientLineDoubleClicked = false; } ContextPaneWidget *parentContextWidget = qobject_cast(parentWidget()); - QPoint p = mapToGlobal(ui->borderColorButton->pos()); - parentContextWidget->colorDialog()->setupColor(ui->borderColorButton->convertedColor()); + QPoint p = mapToGlobal(m_borderColorButton->pos()); + parentContextWidget->colorDialog()->setupColor(m_borderColorButton->convertedColor()); p = parentContextWidget->colorDialog()->parentWidget()->mapFromGlobal(p); parentContextWidget->onShowColorDialog(flag, p); } @@ -134,12 +171,12 @@ void ContextPaneWidgetRectangle::onBorderColorButtonToggled(bool flag) void ContextPaneWidgetRectangle::onColorButtonToggled(bool flag ) { if (flag) { - ui->borderColorButton->setChecked(false); + m_borderColorButton->setChecked(false); m_gradientLineDoubleClicked = false; } ContextPaneWidget *parentContextWidget = qobject_cast(parentWidget()); - QPoint p = mapToGlobal(ui->colorColorButton->pos()); - parentContextWidget->colorDialog()->setupColor(ui->colorColorButton->convertedColor()); + QPoint p = mapToGlobal(m_colorColorButton->pos()); + parentContextWidget->colorDialog()->setupColor(m_colorColorButton->convertedColor()); p = parentContextWidget->colorDialog()->parentWidget()->mapFromGlobal(p); parentContextWidget->onShowColorDialog(flag, p); } @@ -148,14 +185,14 @@ void ContextPaneWidgetRectangle::onColorDialogApplied(const QColor &) { ContextPaneWidget *parentContextWidget = qobject_cast(parentWidget()); parentContextWidget->onShowColorDialog(false, QPoint()); - if (ui->colorColorButton->isChecked()) + if (m_colorColorButton->isChecked()) emit propertyChanged(QLatin1String("color"),parentContextWidget->colorDialog()->color()); //write back color - if (ui->borderColorButton->isChecked()) + if (m_borderColorButton->isChecked()) emit propertyChanged(QLatin1String("border.color"),parentContextWidget->colorDialog()->color()); //write back color if (m_gradientLineDoubleClicked) - ui->gradientLine->setActiveColor(parentContextWidget->colorDialog()->color()); - ui->colorColorButton->setChecked(false); - ui->borderColorButton->setChecked(false); + m_gradientLine->setActiveColor(parentContextWidget->colorDialog()->color()); + m_colorColorButton->setChecked(false); + m_borderColorButton->setChecked(false); m_gradientLineDoubleClicked = false; } @@ -163,48 +200,48 @@ void ContextPaneWidgetRectangle::onColorDialogCancled() { ContextPaneWidget *parentContextWidget = qobject_cast(parentWidget()); parentContextWidget->onShowColorDialog(false, QPoint()); - ui->colorColorButton->setChecked(false); - ui->borderColorButton->setChecked(false); + m_colorColorButton->setChecked(false); + m_borderColorButton->setChecked(false); m_gradientLineDoubleClicked = false; } void ContextPaneWidgetRectangle::onGradientClicked() { - if (ui->colorGradient->isChecked()) { + if (m_colorGradient->isChecked()) { m_hasGradient = true; QLinearGradient gradient; QGradientStops stops; - stops.append(QGradientStop(0, ui->colorColorButton->convertedColor())); + stops.append(QGradientStop(0, m_colorColorButton->convertedColor())); stops.append(QGradientStop(1, Qt::white)); gradient.setStops(stops); - ui->gradientLine->setEnabled(true); - ui->gradientLine->setGradient(gradient); + m_gradientLine->setEnabled(true); + m_gradientLine->setGradient(gradient); } } void ContextPaneWidgetRectangle::onColorNoneClicked() { - if (ui->colorNone->isChecked()) { - ui->colorGradient->setEnabled(isGradientEditingEnabled()); + if (m_colorNone->isChecked()) { + m_colorGradient->setEnabled(isGradientEditingEnabled()); emit removeAndChangeProperty(QLatin1String("gradient"), QLatin1String("color"), QLatin1String("\"transparent\""), true); } - ui->colorGradient->setEnabled(isGradientEditingEnabled()); + m_colorGradient->setEnabled(isGradientEditingEnabled()); } void ContextPaneWidgetRectangle::onColorSolidClicked() { - if (ui->colorSolid->isChecked()) { - ui->gradientLine->setEnabled(false); + if (m_colorSolid->isChecked()) { + m_gradientLine->setEnabled(false); emit removeAndChangeProperty(QLatin1String("gradient"), QLatin1String("color"), QLatin1String("\"black\""), true); } - ui->colorGradient->setEnabled(isGradientEditingEnabled()); + m_colorGradient->setEnabled(isGradientEditingEnabled()); } void ContextPaneWidgetRectangle::onBorderNoneClicked() { - if (ui->borderNone->isChecked()) { + if (m_borderNone->isChecked()) { emit removeProperty(QLatin1String("border.color")); emit removeProperty(QLatin1String("border.width"));//### } @@ -212,7 +249,7 @@ void ContextPaneWidgetRectangle::onBorderNoneClicked() void ContextPaneWidgetRectangle::onBorderSolidClicked() { - if (ui->borderSolid->isChecked()) + if (m_borderSolid->isChecked()) emit propertyChanged(QLatin1String("border.color"), QLatin1String("\"black\"")); } @@ -221,7 +258,7 @@ void ContextPaneWidgetRectangle::onGradientLineDoubleClicked(const QPoint &p) m_gradientLineDoubleClicked = true; ContextPaneWidget *parentContextWidget = qobject_cast(parentWidget()); QPoint pos = mapToGlobal(p); - parentContextWidget->colorDialog()->setupColor(ui->gradientLine->activeColor()); + parentContextWidget->colorDialog()->setupColor(m_gradientLine->activeColor()); pos = parentContextWidget->colorDialog()->parentWidget()->mapFromGlobal(pos); parentContextWidget->onShowColorDialog(true, pos); } @@ -239,7 +276,7 @@ void ContextPaneWidgetRectangle::timerEvent(QTimerEvent *event) killTimer(m_gradientTimer); m_gradientTimer = -1; - QLinearGradient gradient = ui->gradientLine->gradient(); + QLinearGradient gradient = m_gradientLine->gradient(); QString str = QLatin1String("Gradient {\n"); const QGradientStops stops = gradient.stops(); for (const QGradientStop &stop : stops) { @@ -257,11 +294,11 @@ void ContextPaneWidgetRectangle::setColor() { QLinearGradient gradient; QGradientStops stops; - QColor color = ui->colorColorButton->convertedColor(); + QColor color = m_colorColorButton->convertedColor(); stops.append(QGradientStop(0, color)); stops.append(QGradientStop(1, color)); gradient.setStops(stops); - ui->gradientLine->setGradient(gradient); + m_gradientLine->setGradient(gradient); } } //QmlDesigner diff --git a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.h b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.h index 9e027fdc873..bad51c2b76e 100644 --- a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.h +++ b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.h @@ -7,20 +7,24 @@ #include QT_BEGIN_NAMESPACE -namespace Ui { class ContextPaneWidgetRectangle; } +class QLabel; +class QToolButton; QT_END_NAMESPACE namespace QmlJS { class PropertyReader; } namespace QmlEditorWidgets { +class ColorButton; +class GradientLine; + class QMLEDITORWIDGETS_EXPORT ContextPaneWidgetRectangle : public QWidget { Q_OBJECT public: explicit ContextPaneWidgetRectangle(QWidget *parent = nullptr); - ~ContextPaneWidgetRectangle(); + void setProperties(QmlJS::PropertyReader *propertyReader); void enabableGradientEditing(bool); @@ -48,7 +52,17 @@ private: void setColor(); bool isGradientEditingEnabled() const { return m_enableGradientEditing; } - Ui::ContextPaneWidgetRectangle *ui; + + QLabel *m_gradientLabel; + GradientLine *m_gradientLine; + ColorButton *m_colorColorButton; + QToolButton *m_colorSolid; + QToolButton *m_colorGradient; + QToolButton *m_colorNone; + ColorButton *m_borderColorButton; + QToolButton *m_borderSolid; + QToolButton *m_borderNone; + bool m_hasBorder = false; bool m_hasGradient = false; bool m_none = false; diff --git a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.ui b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.ui deleted file mode 100644 index 721a9ace086..00000000000 --- a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.ui +++ /dev/null @@ -1,314 +0,0 @@ - - - ContextPaneWidgetRectangle - - - - 0 - 0 - 241 - 120 - - - - - - - - 0 - - - 2 - - - 2 - - - 2 - - - 4 - - - 2 - - - - - - 75 - true - - - - Gradient - - - Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing - - - - - - - - 160 - 50 - - - - - 240 - 16777215 - - - - - - - - - 75 - true - - - - Color - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 22 - 22 - - - - - 22 - 22 - - - - ... - - - true - - - - - - - - 0 - - - 0 - - - - - - 30 - 30 - - - - - - - - :/qmldesigner/images/icon_color_solid.png:/qmldesigner/images/icon_color_solid.png - - - true - - - true - - - - - - - - 30 - 30 - - - - - - - - :/qmldesigner/images/icon_color_gradient.png:/qmldesigner/images/icon_color_gradient.png - - - true - - - true - - - - - - - - 30 - 30 - - - - - - - - :/qmldesigner/images/icon_color_none.png:/qmldesigner/images/icon_color_none.png - - - true - - - true - - - - - - - - - - Qt::Horizontal - - - - 9 - 29 - - - - - - - - - 75 - true - - - - Border - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 22 - 22 - - - - - 22 - 22 - - - - ... - - - true - - - - - - - - 0 - - - 0 - - - - - - 30 - 30 - - - - - - - - :/qmldesigner/images/icon_color_solid.png:/qmldesigner/images/icon_color_solid.png - - - true - - - true - - - - - - - - 30 - 30 - - - - - - - - :/qmldesigner/images/icon_color_none.png:/qmldesigner/images/icon_color_none.png - - - true - - - true - - - - - - - - - - - QmlEditorWidgets::ColorButton - QToolButton -
qmleditorwidgets/colorbutton.h
-
- - QmlEditorWidgets::GradientLine - QWidget -
qmleditorwidgets/gradientline.h
- 1 -
-
- - - - -
diff --git a/src/libs/qmleditorwidgets/qmleditorwidgets.qbs b/src/libs/qmleditorwidgets/qmleditorwidgets.qbs index 1c7382c1981..75406cd2ae7 100644 --- a/src/libs/qmleditorwidgets/qmleditorwidgets.qbs +++ b/src/libs/qmleditorwidgets/qmleditorwidgets.qbs @@ -20,7 +20,7 @@ QtcLibrary { "contextpanetextwidget.cpp", "contextpanetextwidget.h", "contextpanewidget.cpp", "contextpanewidget.h", "contextpanewidgetimage.cpp", "contextpanewidgetimage.h", - "contextpanewidgetrectangle.cpp", "contextpanewidgetrectangle.h", "contextpanewidgetrectangle.ui", + "contextpanewidgetrectangle.cpp", "contextpanewidgetrectangle.h", "customcolordialog.cpp", "customcolordialog.h", "filewidget.cpp", "filewidget.h", "fontsizespinbox.cpp", "fontsizespinbox.h",