summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/qmleditorwidgets/CMakeLists.txt3
-rw-r--r--src/libs/qmleditorwidgets/contextpanewidgetborderimage.ui310
-rw-r--r--src/libs/qmleditorwidgets/contextpanewidgetimage.cpp288
-rw-r--r--src/libs/qmleditorwidgets/contextpanewidgetimage.h39
-rw-r--r--src/libs/qmleditorwidgets/contextpanewidgetimage.ui295
-rw-r--r--src/libs/qmleditorwidgets/qmleditorwidgets.qbs3
6 files changed, 191 insertions, 747 deletions
diff --git a/src/libs/qmleditorwidgets/CMakeLists.txt b/src/libs/qmleditorwidgets/CMakeLists.txt
index 0def321dce..c0b0baec57 100644
--- a/src/libs/qmleditorwidgets/CMakeLists.txt
+++ b/src/libs/qmleditorwidgets/CMakeLists.txt
@@ -5,8 +5,7 @@ add_qtc_library(QmlEditorWidgets
colorbutton.cpp colorbutton.h
contextpanetextwidget.cpp contextpanetextwidget.h
contextpanewidget.cpp contextpanewidget.h
- contextpanewidgetborderimage.ui
- contextpanewidgetimage.cpp contextpanewidgetimage.h contextpanewidgetimage.ui
+ contextpanewidgetimage.cpp contextpanewidgetimage.h
contextpanewidgetrectangle.cpp contextpanewidgetrectangle.h contextpanewidgetrectangle.ui
customcolordialog.cpp customcolordialog.h
easingpane/easingcontextpane.cpp easingpane/easingcontextpane.h easingpane/easingcontextpane.ui
diff --git a/src/libs/qmleditorwidgets/contextpanewidgetborderimage.ui b/src/libs/qmleditorwidgets/contextpanewidgetborderimage.ui
deleted file mode 100644
index 64e0b5f1d9..0000000000
--- a/src/libs/qmleditorwidgets/contextpanewidgetborderimage.ui
+++ /dev/null
@@ -1,310 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>ContextPaneWidgetBorderImage</class>
- <widget class="QWidget" name="ContextPaneWidgetBorderImage">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>300</width>
- <height>97</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string/>
- </property>
- <property name="toolTip">
- <string/>
- </property>
- <layout class="QGridLayout" name="gridLayout_3">
- <property name="margin">
- <number>1</number>
- </property>
- <property name="spacing">
- <number>2</number>
- </property>
- <item row="0" column="0" rowspan="3">
- <widget class="QLabel" name="label">
- <property name="minimumSize">
- <size>
- <width>76</width>
- <height>76</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>76</width>
- <height>76</height>
- </size>
- </property>
- <property name="palette">
- <palette>
- <active>
- <colorrole role="Base">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>57</red>
- <green>57</green>
- <blue>57</blue>
- </color>
- </brush>
- </colorrole>
- </active>
- <inactive>
- <colorrole role="Base">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>57</red>
- <green>57</green>
- <blue>57</blue>
- </color>
- </brush>
- </colorrole>
- </inactive>
- <disabled>
- <colorrole role="Base">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>57</red>
- <green>57</green>
- <blue>57</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>57</red>
- <green>57</green>
- <blue>57</blue>
- </color>
- </brush>
- </colorrole>
- </disabled>
- </palette>
- </property>
- <property name="autoFillBackground">
- <bool>true</bool>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="alignment">
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QmlEditorWidgets::FileWidget" name="fileWidget">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>200</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>200</width>
- <height>16777215</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QWidget" name="widget_2" native="true">
- <layout class="QGridLayout" name="gridLayout_2">
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <item row="0" column="0">
- <widget class="QRadioButton" name="horizontalStretchRadioButton">
- <property name="toolTip">
- <string>Stretch vertically. Scales the image to fit to the available area.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/horizontal-scale-icon.png</normaloff>:/qmldesigner/images/horizontal-scale-icon.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QRadioButton" name="horizontalTileRadioButton">
- <property name="toolTip">
- <string>Repeat vertically. Tiles the image until there is no more space. May crop the last image.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/tile-icon-hor-crop.png</normaloff>:/qmldesigner/images/tile-icon-hor-crop.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="0" column="2">
- <widget class="QRadioButton" name="horizontalTileRadioButtonNoCrop">
- <property name="toolTip">
- <string>Round. Like Repeat, but scales the images down to ensure that the last image is not cropped.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/tile-icon-hor-scale.png</normaloff>:/qmldesigner/images/tile-icon-hor-scale.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="QWidget" name="widget" native="true">
- <layout class="QGridLayout" name="gridLayout">
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <item row="0" column="1">
- <widget class="QRadioButton" name="verticalTileRadioButton">
- <property name="toolTip">
- <string>Repeat horizontally. Tiles the image until there is no more space. May crop the last image.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/tile-icon-vert-crop.png</normaloff>:/qmldesigner/images/tile-icon-vert-crop.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QRadioButton" name="verticalStretchRadioButton">
- <property name="toolTip">
- <string>Stretch horizontally. Scales the image to fit to the available area.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/vertical-scale-icon.png</normaloff>:/qmldesigner/images/vertical-scale-icon.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="0" column="2">
- <widget class="QRadioButton" name="verticalTileRadioButtonNoCrop">
- <property name="toolTip">
- <string>Round. Like Repeat, but scales the images down to ensure that the last image is not cropped.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/tile-icon-vert-scale.png</normaloff>:/qmldesigner/images/tile-icon-vert-scale.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="sizeLabel">
- <property name="font">
- <font>
- <weight>75</weight>
- <bold>true</bold>
- </font>
- </property>
- <property name="text">
- <string>10 x 10</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>QmlEditorWidgets::FileWidget</class>
- <extends>QComboBox</extends>
- <header location="global">qmleditorwidgets/filewidget.h</header>
- </customwidget>
- </customwidgets>
- <resources>
- <include location="resources.qrc"/>
- </resources>
- <connections/>
-</ui>
diff --git a/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp b/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp
index 3d95d8861a..e73784c629 100644
--- a/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp
+++ b/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp
@@ -2,22 +2,27 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "contextpanewidgetimage.h"
+#include "filewidget.h"
-#include "ui_contextpanewidgetimage.h"
-#include "ui_contextpanewidgetborderimage.h"
#include <qmljs/qmljspropertyreader.h>
+#include <utils/layoutbuilder.h>
+
+#include <QApplication>
+#include <QBoxLayout>
+#include <QButtonGroup>
+#include <QDebug>
+#include <QDir>
#include <QFile>
#include <QFileInfo>
-#include <QDir>
-#include <QPixmap>
-#include <QPainter>
#include <QGraphicsEffect>
#include <QMouseEvent>
+#include <QPainter>
+#include <QPixmap>
+#include <QRadioButton>
#include <QScrollArea>
#include <QSlider>
#include <QStyle>
#include <QToolButton>
-#include <QDebug>
namespace QmlEditorWidgets {
@@ -44,35 +49,76 @@ bool WheelFilter::eventFilter(QObject *obj, QEvent *event)
return QObject::eventFilter(obj, event);
}
-ContextPaneWidgetImage::ContextPaneWidgetImage(QWidget *parent, bool borderImage) :
- QWidget(parent),
- ui(nullptr), uiBorderImage(nullptr), previewWasVisible(false)
+ContextPaneWidgetImage::ContextPaneWidgetImage(QWidget *parent, bool borderImage)
+ : QWidget(parent)
+ , m_isBorderImage(borderImage)
{
LabelFilter *labelFilter = new LabelFilter(this);
- m_borderImage = borderImage;
-
- if (m_borderImage) {
- uiBorderImage = new Ui::ContextPaneWidgetBorderImage;
- uiBorderImage->setupUi(this);
- m_fileWidget = uiBorderImage->fileWidget;
- m_sizeLabel = uiBorderImage->sizeLabel;
- uiBorderImage->label->setToolTip(tr("Double click for preview."));
- uiBorderImage->label->installEventFilter(labelFilter);
-
-
- connect(uiBorderImage->verticalTileRadioButton, &QRadioButton::toggled,
+ const auto radioButton = [] (const QString &icon, const QString &toolTip) {
+ auto result = new QRadioButton;
+ result->setIcon(QIcon(":/qmldesigner/images/" + icon + ".png"));
+ result->setIconSize({24, 24});
+ result->setToolTip(toolTip);
+ return result;
+ };
+
+ m_previewLabel = new QLabel;
+ m_previewLabel->setToolTip(tr("Double click for preview."));
+ m_previewLabel->setFixedSize(76, 76);
+ m_previewLabel->installEventFilter(labelFilter);
+
+ m_sizeLabel = new QLabel;
+ m_sizeLabel->setAlignment(Qt::AlignHCenter);
+ m_fileWidget = new FileWidget;
+
+ if (m_isBorderImage) {
+ m_borderImage.horizontalTileRadioButton = radioButton("tile-icon-hor-crop",
+ tr("Repeat vertically. Tiles the image until there is no more space. May crop the last image."));
+ m_borderImage.horizontalStretchRadioButton = radioButton("horizontal-scale-icon",
+ tr("Stretch vertically. Scales the image to fit to the available area."));
+ m_borderImage.horizontalTileRadioButtonNoCrop = radioButton("tile-icon-hor-scale",
+ tr("Round. Like Repeat, but scales the images down to ensure that the last image is not cropped."));
+ auto hRadioButtons = new QButtonGroup(this);
+ hRadioButtons->addButton(m_borderImage.horizontalTileRadioButton);
+ hRadioButtons->addButton(m_borderImage.horizontalStretchRadioButton);
+ hRadioButtons->addButton(m_borderImage.horizontalTileRadioButtonNoCrop);
+
+ m_borderImage.verticalTileRadioButton = radioButton("tile-icon-vert-crop",
+ tr("Repeat horizontally. Tiles the image until there is no more space. May crop the last image."));
+ m_borderImage.verticalStretchRadioButton = radioButton("vertical-scale-icon",
+ tr("Stretch horizontally. Scales the image to fit to the available area."));
+ m_borderImage.verticalTileRadioButtonNoCrop = radioButton("tile-icon-vert-scale",
+ tr("Round. Like Repeat, but scales the images down to ensure that the last image is not cropped."));
+ auto vRadioButtons = new QButtonGroup(this);
+ vRadioButtons->addButton(m_borderImage.verticalTileRadioButton);
+ vRadioButtons->addButton(m_borderImage.verticalStretchRadioButton);
+ vRadioButtons->addButton(m_borderImage.verticalTileRadioButtonNoCrop);
+
+ using namespace Utils::Layouting;
+ Row {
+ Column { m_previewLabel, m_sizeLabel, },
+ Column {
+ m_fileWidget,
+ Grid {
+ m_borderImage.horizontalTileRadioButton, m_borderImage.horizontalStretchRadioButton, m_borderImage.horizontalTileRadioButtonNoCrop, br,
+ m_borderImage.verticalTileRadioButton, m_borderImage.verticalStretchRadioButton, m_borderImage.verticalTileRadioButtonNoCrop,
+ },
+ },
+ }.attachTo(this);
+
+ connect(m_borderImage.verticalTileRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onVerticalStretchChanged);
- connect(uiBorderImage->verticalStretchRadioButton, &QRadioButton::toggled,
+ connect(m_borderImage.verticalStretchRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onVerticalStretchChanged);
- connect(uiBorderImage->verticalTileRadioButtonNoCrop, &QRadioButton::toggled,
+ connect(m_borderImage.verticalTileRadioButtonNoCrop, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onVerticalStretchChanged);
- connect(uiBorderImage->horizontalTileRadioButton, &QRadioButton::toggled,
+ connect(m_borderImage.horizontalTileRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onHorizontalStretchChanged);
- connect(uiBorderImage->horizontalStretchRadioButton, &QRadioButton::toggled,
+ connect(m_borderImage.horizontalStretchRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onHorizontalStretchChanged);
- connect(uiBorderImage->horizontalTileRadioButtonNoCrop, &QRadioButton::toggled,
+ connect(m_borderImage.horizontalTileRadioButtonNoCrop, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onHorizontalStretchChanged);
PreviewLabel *previewLabel = previewDialog()->previewLabel();
connect(previewLabel, &PreviewLabel::leftMarginChanged,
@@ -83,26 +129,44 @@ ContextPaneWidgetImage::ContextPaneWidgetImage(QWidget *parent, bool borderImage
this, &ContextPaneWidgetImage::onTopMarginsChanged);
connect(previewLabel, &PreviewLabel::bottomMarginChanged,
this, &ContextPaneWidgetImage::onBottomMarginsChanged);
-
} else {
- ui = new Ui::ContextPaneWidgetImage;
- ui->setupUi(this);
- ui->label->setToolTip(tr("Double click for preview."));
- ui->label->installEventFilter(labelFilter);
- m_fileWidget = ui->fileWidget;
- m_sizeLabel = ui->sizeLabel;
-
- connect(ui->stretchRadioButton, &QRadioButton::toggled,
+ m_image.stretchRadioButton = radioButton("scale-icon",
+ tr("The image is scaled to fit."));
+ m_image.horizontalStretchRadioButton = radioButton("horizontal-scale-icon",
+ tr("The image is stretched horizontally and tiled vertically."));
+ m_image.verticalStretchRadioButton = radioButton("vertical-scale-icon",
+ tr("The image is stretched vertically and tiled horizontally."));
+
+ m_image.tileRadioButton = radioButton("tile-icon",
+ tr("The image is duplicated horizontally and vertically."));
+ m_image.preserveAspectFitRadioButton = radioButton("aspect-fit-icon",
+ tr("The image is scaled uniformly to fit without cropping."));
+ m_image.cropAspectFitRadioButton = radioButton("aspect-crop-icon",
+ tr("The image is scaled uniformly to fill, cropping if necessary."));
+
+ using namespace Utils::Layouting;
+ Row {
+ Column { m_previewLabel, m_sizeLabel, },
+ Column {
+ m_fileWidget,
+ Grid {
+ m_image.stretchRadioButton, m_image.horizontalStretchRadioButton, m_image.verticalStretchRadioButton, br,
+ m_image.tileRadioButton, m_image.preserveAspectFitRadioButton, m_image.cropAspectFitRadioButton,
+ },
+ },
+ }.attachTo(this);
+
+ connect(m_image.stretchRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onStretchChanged);
- connect(ui->tileRadioButton, &QRadioButton::toggled,
+ connect(m_image.tileRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onStretchChanged);
- connect(ui->horizontalStretchRadioButton, &QRadioButton::toggled,
+ connect(m_image.horizontalStretchRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onStretchChanged);
- connect(ui->verticalStretchRadioButton, &QRadioButton::toggled,
+ connect(m_image.verticalStretchRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onStretchChanged);
- connect(ui->preserveAspectFitRadioButton, &QRadioButton::toggled,
+ connect(m_image.preserveAspectFitRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onStretchChanged);
- connect(ui->cropAspectFitRadioButton, &QRadioButton::toggled,
+ connect(m_image.cropAspectFitRadioButton, &QRadioButton::toggled,
this, &ContextPaneWidgetImage::onStretchChanged);
}
previewDialog();
@@ -116,17 +180,9 @@ ContextPaneWidgetImage::ContextPaneWidgetImage(QWidget *parent, bool borderImage
}
-ContextPaneWidgetImage::~ContextPaneWidgetImage()
-{
- if (ui)
- delete ui;
- if (uiBorderImage)
- delete uiBorderImage;
-}
-
void ContextPaneWidgetImage::setProperties(QmlJS::PropertyReader *propertyReader)
{
- if (m_borderImage) {
+ if (m_isBorderImage) {
int leftBorder = 0;
int rightBorder = 0;
@@ -148,34 +204,34 @@ void ContextPaneWidgetImage::setProperties(QmlJS::PropertyReader *propertyReader
if (fillMode.contains(QLatin1String("BorderImage.")))
fillMode.remove(QLatin1String("BorderImage."));
- uiBorderImage->horizontalStretchRadioButton->setChecked(true);
+ m_borderImage.horizontalStretchRadioButton->setChecked(true);
if (fillMode == QLatin1String("Stretch"))
- uiBorderImage->horizontalStretchRadioButton->setChecked(true);
+ m_borderImage.horizontalStretchRadioButton->setChecked(true);
if (fillMode == QLatin1String("Repeat"))
- uiBorderImage->horizontalTileRadioButton->setChecked(true);
+ m_borderImage.horizontalTileRadioButton->setChecked(true);
if (fillMode == QLatin1String("Round"))
- uiBorderImage->horizontalTileRadioButtonNoCrop->setChecked(true);
+ m_borderImage.horizontalTileRadioButtonNoCrop->setChecked(true);
} else {
//uiBorderImage
- uiBorderImage->horizontalStretchRadioButton->setChecked(true);
+ m_borderImage.horizontalStretchRadioButton->setChecked(true);
}
if (propertyReader->hasProperty(QLatin1String("verticalTileMode"))) {
QString fillMode = propertyReader->readProperty(QLatin1String("verticalTileMode")).toString();
if (fillMode.contains(QLatin1String("BorderImage.")))
fillMode.remove(QLatin1String("BorderImage."));
- uiBorderImage->verticalStretchRadioButton->setChecked(true);
+ m_borderImage.verticalStretchRadioButton->setChecked(true);
if (fillMode == QLatin1String("Stretch"))
- uiBorderImage->verticalStretchRadioButton->setChecked(true);
+ m_borderImage.verticalStretchRadioButton->setChecked(true);
if (fillMode == QLatin1String("Repeat"))
- uiBorderImage->verticalTileRadioButton->setChecked(true);
+ m_borderImage.verticalTileRadioButton->setChecked(true);
if (fillMode == QLatin1String("Round"))
- uiBorderImage->verticalTileRadioButtonNoCrop->setChecked(true);
+ m_borderImage.verticalTileRadioButtonNoCrop->setChecked(true);
} else {
//uiBorderImage
- uiBorderImage->verticalStretchRadioButton->setChecked(true);
+ m_borderImage.verticalStretchRadioButton->setChecked(true);
}
} else {
if (propertyReader->hasProperty(QLatin1String("fillMode"))) {
@@ -183,20 +239,20 @@ void ContextPaneWidgetImage::setProperties(QmlJS::PropertyReader *propertyReader
if (fillMode.contains(QLatin1String("Image.")))
fillMode.remove(QLatin1String("Image."));
- ui->stretchRadioButton->setChecked(true);
+ m_image.stretchRadioButton->setChecked(true);
if (fillMode == QLatin1String("Image.Tile") || fillMode == QLatin1String("Tile"))
- ui->tileRadioButton->setChecked(true);
+ m_image.tileRadioButton->setChecked(true);
if (fillMode == QLatin1String("Image.TileVertically") || fillMode == QLatin1String("TileVertically"))
- ui->horizontalStretchRadioButton->setChecked(true);
+ m_image.horizontalStretchRadioButton->setChecked(true);
if (fillMode == QLatin1String("Image.TileHorizontally") || fillMode == QLatin1String("TileHorizontally"))
- ui->verticalStretchRadioButton->setChecked(true);
+ m_image.verticalStretchRadioButton->setChecked(true);
if (fillMode == QLatin1String("Image.PreserveAspectFit") || fillMode == QLatin1String("PreserveAspectFit"))
- ui->preserveAspectFitRadioButton->setChecked(true);
+ m_image.preserveAspectFitRadioButton->setChecked(true);
if (fillMode == QLatin1String("Image.PreserveAspectCrop") || fillMode == QLatin1String("PreserveAspectCrop"))
- ui->cropAspectFitRadioButton->setChecked(true);
+ m_image.cropAspectFitRadioButton->setChecked(true);
} else {
- ui->stretchRadioButton->setChecked(true);
+ m_image.stretchRadioButton->setChecked(true);
}
}
if (propertyReader->hasProperty(QLatin1String("source"))) {
@@ -255,7 +311,7 @@ void PreviewDialog::setZoom(int z)
void PreviewDialog::setIsBorderImage(bool b)
{
- m_borderImage = b;
+ m_isBorderImage = b;
m_label->setIsBorderImage(b);
}
@@ -267,17 +323,17 @@ PreviewLabel *PreviewDialog::previewLabel() const
void ContextPaneWidgetImage::onStretchChanged()
{
QString stretch;
- if (ui->stretchRadioButton->isChecked())
+ if (m_image.stretchRadioButton->isChecked())
stretch = QLatin1String("Image.Stretch");
- else if (ui->tileRadioButton->isChecked())
+ else if (m_image.tileRadioButton->isChecked())
stretch = QLatin1String("Image.Tile");
- else if (ui->horizontalStretchRadioButton->isChecked())
+ else if (m_image.horizontalStretchRadioButton->isChecked())
stretch = QLatin1String("Image.TileVertically");
- else if (ui->verticalStretchRadioButton->isChecked())
+ else if (m_image.verticalStretchRadioButton->isChecked())
stretch = QLatin1String("Image.TileHorizontally");
- else if (ui->preserveAspectFitRadioButton->isChecked())
+ else if (m_image.preserveAspectFitRadioButton->isChecked())
stretch = QLatin1String("Image.PreserveAspectFit");
- else if (ui->cropAspectFitRadioButton->isChecked())
+ else if (m_image.cropAspectFitRadioButton->isChecked())
stretch = QLatin1String("Image.PreserveAspectCrop");
if (stretch == QLatin1String("Image.Stretch"))
@@ -289,11 +345,11 @@ void ContextPaneWidgetImage::onStretchChanged()
void ContextPaneWidgetImage::onHorizontalStretchChanged()
{
QString stretch;
- if (uiBorderImage->horizontalStretchRadioButton->isChecked())
+ if (m_borderImage.horizontalStretchRadioButton->isChecked())
stretch = QLatin1String("BorderImage.Stretch");
- if (uiBorderImage->horizontalTileRadioButton->isChecked())
+ if (m_borderImage.horizontalTileRadioButton->isChecked())
stretch = QLatin1String("BorderImage.Repeat");
- if (uiBorderImage->horizontalTileRadioButtonNoCrop->isChecked())
+ if (m_borderImage.horizontalTileRadioButtonNoCrop->isChecked())
stretch = QLatin1String("BorderImage.Round");
if (stretch == QLatin1String("BorderImage.Stretch"))
@@ -305,11 +361,11 @@ void ContextPaneWidgetImage::onHorizontalStretchChanged()
void ContextPaneWidgetImage::onVerticalStretchChanged()
{
QString stretch;
- if (uiBorderImage->verticalStretchRadioButton->isChecked())
+ if (m_borderImage.verticalStretchRadioButton->isChecked())
stretch = QLatin1String("BorderImage.Stretch");
- if (uiBorderImage->verticalTileRadioButton->isChecked())
+ if (m_borderImage.verticalTileRadioButton->isChecked())
stretch = QLatin1String("BorderImage.Repeat");
- if (uiBorderImage->verticalTileRadioButtonNoCrop->isChecked())
+ if (m_borderImage.verticalTileRadioButtonNoCrop->isChecked())
stretch = QLatin1String("BorderImage.Round");
if (stretch == QLatin1String("BorderImage.Stretch"))
@@ -331,9 +387,9 @@ void ContextPaneWidgetImage::onPixmapDoubleClicked()
{
previewDialog()->setParent(parentWidget()->parentWidget());
previewDialog()->setMaximumSize(previewDialog()->parentWidget()->size() - QSize(150, 100));
- if (m_borderImage)
+ if (m_isBorderImage)
previewDialog()->setZoom(4);
- previewDialog()->setIsBorderImage(m_borderImage);
+ previewDialog()->setIsBorderImage(m_isBorderImage);
QPoint p = parentWidget()->pos();
p = p + QPoint(-2, -2);
@@ -459,7 +515,7 @@ void ContextPaneWidgetImage::setPixmap(const QString &fileName)
QPixmap pix(76,76);
pix.fill(Qt::black);
- if (m_borderImage) {
+ if (m_isBorderImage) {
QString localFileName(fileName);
if (QFileInfo::exists(fileName)) {
if (fileName.endsWith(QLatin1String("sci"))) {
@@ -475,7 +531,7 @@ void ContextPaneWidgetImage::setPixmap(const QString &fileName)
localFileName = QFileInfo(fileName).absoluteDir().absolutePath() + QLatin1Char('/') + pixmapFileName;
previewDialog()->previewLabel()->setMargins(left, top, right, bottom);
} else { // sci file not parsed correctly
- uiBorderImage->sizeLabel->clear();
+ m_sizeLabel->clear();
return;
}
}
@@ -483,18 +539,18 @@ void ContextPaneWidgetImage::setPixmap(const QString &fileName)
if (source.isNull())
source = pix;
previewDialog()->setPixmap(source, previewDialog()->zoom());
- uiBorderImage->sizeLabel->setText(QString::number(source.width()) + QLatin1Char('x')
- + QString::number(source.height()));
+ m_sizeLabel->setText(QString::number(source.width()) + QLatin1Char('x')
+ + QString::number(source.height()));
QPainter p(&pix);
Qt::TileRule horizontalTileMode = Qt::StretchTile;
Qt::TileRule verticalTileMode = Qt::StretchTile;
- if (uiBorderImage->horizontalTileRadioButton->isChecked())
+ if (m_borderImage.horizontalTileRadioButton->isChecked())
horizontalTileMode =Qt::RepeatTile;
- if (uiBorderImage->horizontalTileRadioButtonNoCrop->isChecked())
+ if (m_borderImage.horizontalTileRadioButtonNoCrop->isChecked())
horizontalTileMode =Qt::RoundTile;
- if (uiBorderImage->verticalTileRadioButton->isChecked())
+ if (m_borderImage.verticalTileRadioButton->isChecked())
verticalTileMode =Qt::RepeatTile;
- if (uiBorderImage->verticalTileRadioButtonNoCrop->isChecked())
+ if (m_borderImage.verticalTileRadioButtonNoCrop->isChecked())
verticalTileMode =Qt::RoundTile;
QTileRules rules(horizontalTileMode, verticalTileMode);
PreviewLabel *previewLabel = previewDialog()->previewLabel();
@@ -502,46 +558,46 @@ void ContextPaneWidgetImage::setPixmap(const QString &fileName)
qDrawBorderPixmap(&p, QRect(0, 0, 76, 76), margins, source, source.rect(), margins, rules);
//p.drawPixmap(0,0,76,76, source);
} else {
- uiBorderImage->sizeLabel->clear();
+ m_sizeLabel->clear();
}
- uiBorderImage->label->setPixmap(pix);
+ m_previewLabel->setPixmap(pix);
} else {
if (QFileInfo::exists(fileName)) {
QPixmap source(fileName);
previewDialog()->setPixmap(source, 1);
- ui->sizeLabel->setText(QString::number(source.width()) + QLatin1Char('x') + QString::number(source.height()));
+ m_sizeLabel->setText(QString::number(source.width()) + QLatin1Char('x') + QString::number(source.height()));
QPainter p(&pix);
- if (ui->stretchRadioButton->isChecked()) {
+ if (m_image.stretchRadioButton->isChecked()) {
p.drawPixmap(0,0,76,76, source);
- } else if (ui->tileRadioButton->isChecked()) {
+ } else if (m_image.tileRadioButton->isChecked()) {
QPixmap small = source.scaled(38,38);
p.drawTiledPixmap(0,0,76,76, small);
- } else if (ui->horizontalStretchRadioButton->isChecked()) {
+ } else if (m_image.horizontalStretchRadioButton->isChecked()) {
QPixmap small = source.scaled(38,38);
QPixmap half = pix.scaled(38, 76);
QPainter p2(&half);
p2.drawTiledPixmap(0,0,38,76, small);
p.drawPixmap(0,0,76,76, half);
- } else if (ui->verticalStretchRadioButton->isChecked()) {
+ } else if (m_image.verticalStretchRadioButton->isChecked()) {
QPixmap small = source.scaled(38,38);
QPixmap half = pix.scaled(76, 38);
QPainter p2(&half);
p2.drawTiledPixmap(0,0,76,38, small);
p.drawPixmap(0,0,76,76, half);
- } else if (ui->preserveAspectFitRadioButton->isChecked()) {
+ } else if (m_image.preserveAspectFitRadioButton->isChecked()) {
QPixmap preserved = source.scaledToWidth(76);
int offset = (76 - preserved.height()) / 2;
p.drawPixmap(0, offset, 76, preserved.height(), source);
- } else if (ui->cropAspectFitRadioButton->isChecked()) {
+ } else if (m_image.cropAspectFitRadioButton->isChecked()) {
QPixmap cropped = source.scaledToHeight(76);
int offset = (76 - cropped.width()) / 2;
p.drawPixmap(offset, 0, cropped.width(), 76, source);
}
} else {
- ui->sizeLabel->clear();
+ m_sizeLabel->clear();
}
- ui->label->setPixmap(pix);
+ m_previewLabel->setPixmap(pix);
}
}
@@ -556,32 +612,16 @@ PreviewDialog* ContextPaneWidgetImage::previewDialog()
return m_previewDialog.data();
}
-void ContextPaneWidgetImage::changeEvent(QEvent *e)
-{
- QWidget::changeEvent(e);
- switch (e->type()) {
- case QEvent::LanguageChange:
- if (ui)
- ui->retranslateUi(this);
- if (uiBorderImage)
- uiBorderImage->retranslateUi(this);
- break;
- default:
- break;
- }
-}
-
-
void ContextPaneWidgetImage::hideEvent(QHideEvent * event)
{
- previewWasVisible = previewDialog()->isVisible();
+ m_previewWasVisible = previewDialog()->isVisible();
previewDialog()->hide();
QWidget::hideEvent(event);
}
void ContextPaneWidgetImage::showEvent(QShowEvent* event)
{
- if (previewWasVisible)
+ if (m_previewWasVisible)
previewDialog()->show();
QWidget::showEvent(event);
}
@@ -620,7 +660,7 @@ void PreviewLabel::setZoom(int z)
void PreviewLabel::setIsBorderImage(bool b)
{
- m_borderImage = b;
+ m_isBorderImage = b;
}
void PreviewLabel::setMargins(int left, int top, int right, int bottom)
@@ -634,7 +674,7 @@ void PreviewLabel::setMargins(int left, int top, int right, int bottom)
void PreviewLabel::paintEvent(QPaintEvent *event)
{
QLabel::paintEvent(event);
- if (m_borderImage) {
+ if (m_isBorderImage) {
QPainter p(this);
@@ -682,7 +722,7 @@ static inline bool rangeCheck(int target, int pos)
void PreviewLabel::mousePressEvent(QMouseEvent * event)
{
- if (!m_borderImage) {
+ if (!m_isBorderImage) {
QLabel::mouseMoveEvent(event);
return;
}
@@ -732,7 +772,7 @@ void PreviewLabel::mousePressEvent(QMouseEvent * event)
void PreviewLabel::mouseReleaseEvent(QMouseEvent * event)
{
- if (!m_borderImage)
+ if (!m_isBorderImage)
return QLabel::mouseMoveEvent(event);
if (m_dragging_left || m_dragging_top || m_dragging_right|| m_dragging_bottom) {
@@ -771,7 +811,7 @@ static inline int limitPositive(int i)
void PreviewLabel::mouseMoveEvent(QMouseEvent * event)
{
- if (!m_borderImage) {
+ if (!m_isBorderImage) {
QLabel::mouseMoveEvent(event);
return;
}
@@ -849,7 +889,7 @@ void PreviewLabel::leaveEvent(QEvent* event )
PreviewDialog::PreviewDialog(QWidget *parent) : DragWidget(parent)
{
- m_borderImage = false;
+ m_isBorderImage = false;
setAutoFillBackground(true);
m_label = new PreviewLabel(this);
diff --git a/src/libs/qmleditorwidgets/contextpanewidgetimage.h b/src/libs/qmleditorwidgets/contextpanewidgetimage.h
index 2544e7c119..093659f45c 100644
--- a/src/libs/qmleditorwidgets/contextpanewidgetimage.h
+++ b/src/libs/qmleditorwidgets/contextpanewidgetimage.h
@@ -11,11 +11,8 @@
#include <QPointer>
QT_BEGIN_NAMESPACE
-namespace Ui {
- class ContextPaneWidgetImage;
- class ContextPaneWidgetBorderImage;
-}
class QLabel;
+class QRadioButton;
class QSlider;
QT_END_NAMESPACE
@@ -60,7 +57,7 @@ private:
bool m_dragging_bottom;
QPoint m_startPos;
int m_zoom;
- bool m_borderImage;
+ bool m_isBorderImage;
QLabel *m_hooverInfo;
};
@@ -88,7 +85,7 @@ private:
QLabel *m_zoomLabel;
int m_zoom;
QPixmap m_pixmap;
- bool m_borderImage;
+ bool m_isBorderImage;
};
class QMLEDITORWIDGETS_EXPORT ContextPaneWidgetImage : public QWidget
@@ -97,7 +94,6 @@ class QMLEDITORWIDGETS_EXPORT ContextPaneWidgetImage : public QWidget
public:
explicit ContextPaneWidgetImage(QWidget *parent = nullptr, bool borderImage = false);
- ~ContextPaneWidgetImage();
void setProperties(QmlJS::PropertyReader *propertyReader);
void setPath(const QString& path);
PreviewDialog* previewDialog();
@@ -120,19 +116,34 @@ public:
void onRightMarginsChanged();
protected:
- void changeEvent(QEvent *e) override;
void hideEvent(QHideEvent* event) override;
void showEvent(QShowEvent* event) override;
private:
- Ui::ContextPaneWidgetImage *ui;
- Ui::ContextPaneWidgetBorderImage *uiBorderImage;
- QString m_path;
- QPointer<PreviewDialog> m_previewDialog;
FileWidget *m_fileWidget;
+ QLabel *m_previewLabel;
QLabel *m_sizeLabel;
- bool m_borderImage;
- bool previewWasVisible;
+ struct {
+ QRadioButton *verticalTileRadioButton;
+ QRadioButton *verticalStretchRadioButton;
+ QRadioButton *verticalTileRadioButtonNoCrop;
+ QRadioButton *horizontalTileRadioButton;
+ QRadioButton *horizontalStretchRadioButton;
+ QRadioButton *horizontalTileRadioButtonNoCrop;
+ } m_borderImage;
+ struct {
+ QRadioButton *stretchRadioButton;
+ QRadioButton *tileRadioButton;
+ QRadioButton *horizontalStretchRadioButton;
+ QRadioButton *verticalStretchRadioButton;
+ QRadioButton *preserveAspectFitRadioButton;
+ QRadioButton *cropAspectFitRadioButton;
+ } m_image;
+
+ QString m_path;
+ QPointer<PreviewDialog> m_previewDialog;
+ bool m_isBorderImage;
+ bool m_previewWasVisible = false;
};
class LabelFilter: public QObject {
diff --git a/src/libs/qmleditorwidgets/contextpanewidgetimage.ui b/src/libs/qmleditorwidgets/contextpanewidgetimage.ui
deleted file mode 100644
index c6d161d0d8..0000000000
--- a/src/libs/qmleditorwidgets/contextpanewidgetimage.ui
+++ /dev/null
@@ -1,295 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>ContextPaneWidgetImage</class>
- <widget class="QWidget" name="ContextPaneWidgetImage">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>282</width>
- <height>93</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string/>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- <property name="horizontalSpacing">
- <number>4</number>
- </property>
- <property name="verticalSpacing">
- <number>0</number>
- </property>
- <item row="0" column="1" colspan="3">
- <widget class="QmlEditorWidgets::FileWidget" name="fileWidget">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>200</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>200</width>
- <height>16777215</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QRadioButton" name="stretchRadioButton">
- <property name="toolTip">
- <string>The image is scaled to fit.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/scale-icon.png</normaloff>:/qmldesigner/images/scale-icon.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="1" column="2">
- <widget class="QRadioButton" name="horizontalStretchRadioButton">
- <property name="toolTip">
- <string>The image is stretched horizontally and tiled vertically.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/horizontal-scale-icon.png</normaloff>:/qmldesigner/images/horizontal-scale-icon.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="1" column="3">
- <widget class="QRadioButton" name="verticalStretchRadioButton">
- <property name="toolTip">
- <string>The image is stretched vertically and tiled horizontally.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/vertical-scale-icon.png</normaloff>:/qmldesigner/images/vertical-scale-icon.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="QRadioButton" name="tileRadioButton">
- <property name="toolTip">
- <string>The image is duplicated horizontally and vertically.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/tile-icon.png</normaloff>:/qmldesigner/images/tile-icon.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="2" column="2">
- <widget class="QRadioButton" name="preserveAspectFitRadioButton">
- <property name="toolTip">
- <string>The image is scaled uniformly to fit without cropping.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/aspect-fit-icon.png</normaloff>:/qmldesigner/images/aspect-fit-icon.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="2" column="3">
- <widget class="QRadioButton" name="cropAspectFitRadioButton">
- <property name="toolTip">
- <string>The image is scaled uniformly to fill, cropping if necessary.</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/qmldesigner/images/aspect-crop-icon.png</normaloff>:/qmldesigner/images/aspect-crop-icon.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="0" column="0" rowspan="3">
- <widget class="QLabel" name="label">
- <property name="minimumSize">
- <size>
- <width>76</width>
- <height>76</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>76</width>
- <height>76</height>
- </size>
- </property>
- <property name="palette">
- <palette>
- <active>
- <colorrole role="Base">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>57</red>
- <green>57</green>
- <blue>57</blue>
- </color>
- </brush>
- </colorrole>
- </active>
- <inactive>
- <colorrole role="Base">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>57</red>
- <green>57</green>
- <blue>57</blue>
- </color>
- </brush>
- </colorrole>
- </inactive>
- <disabled>
- <colorrole role="Base">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>57</red>
- <green>57</green>
- <blue>57</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>57</red>
- <green>57</green>
- <blue>57</blue>
- </color>
- </brush>
- </colorrole>
- </disabled>
- </palette>
- </property>
- <property name="autoFillBackground">
- <bool>true</bool>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="alignment">
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="sizeLabel">
- <property name="font">
- <font>
- <weight>75</weight>
- <bold>true</bold>
- </font>
- </property>
- <property name="text">
- <string>10 x 10</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>QmlEditorWidgets::FileWidget</class>
- <extends>QComboBox</extends>
- <header location="global">qmleditorwidgets/filewidget.h</header>
- </customwidget>
- </customwidgets>
- <resources>
- <include location="resources.qrc"/>
- </resources>
- <connections/>
-</ui>
diff --git a/src/libs/qmleditorwidgets/qmleditorwidgets.qbs b/src/libs/qmleditorwidgets/qmleditorwidgets.qbs
index 414eda687b..8dbf160c25 100644
--- a/src/libs/qmleditorwidgets/qmleditorwidgets.qbs
+++ b/src/libs/qmleditorwidgets/qmleditorwidgets.qbs
@@ -19,8 +19,7 @@ QtcLibrary {
"colorbutton.cpp", "colorbutton.h",
"contextpanetextwidget.cpp", "contextpanetextwidget.h",
"contextpanewidget.cpp", "contextpanewidget.h",
- "contextpanewidgetborderimage.ui",
- "contextpanewidgetimage.cpp", "contextpanewidgetimage.h", "contextpanewidgetimage.ui",
+ "contextpanewidgetimage.cpp", "contextpanewidgetimage.h",
"contextpanewidgetrectangle.cpp", "contextpanewidgetrectangle.h", "contextpanewidgetrectangle.ui",
"customcolordialog.cpp", "customcolordialog.h",
"filewidget.cpp", "filewidget.h",