forked from qt-creator/qt-creator
Meson: Inline mesonbuildsettingswidget.ui
Change-Id: Ib927f8166f9c43f10c4dd0feae912e3cb4cb153f Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -60,7 +60,6 @@ add_qtc_plugin(MesonProjectManager
|
|||||||
project/mesonbuildconfiguration.cpp
|
project/mesonbuildconfiguration.cpp
|
||||||
project/ninjabuildstep.h
|
project/ninjabuildstep.h
|
||||||
project/ninjabuildstep.cpp
|
project/ninjabuildstep.cpp
|
||||||
project/buildoptions/mesonbuildsettingswidget.ui
|
|
||||||
project/buildoptions/mesonbuildsettingswidget.h
|
project/buildoptions/mesonbuildsettingswidget.h
|
||||||
project/buildoptions/mesonbuildsettingswidget.cpp
|
project/buildoptions/mesonbuildsettingswidget.cpp
|
||||||
project/buildoptions/optionsmodel/buildoptionsmodel.h
|
project/buildoptions/optionsmodel/buildoptionsmodel.h
|
||||||
|
@@ -49,7 +49,6 @@ Project {
|
|||||||
"mesonprojectplugin.h",
|
"mesonprojectplugin.h",
|
||||||
"project/buildoptions/mesonbuildsettingswidget.cpp",
|
"project/buildoptions/mesonbuildsettingswidget.cpp",
|
||||||
"project/buildoptions/mesonbuildsettingswidget.h",
|
"project/buildoptions/mesonbuildsettingswidget.h",
|
||||||
"project/buildoptions/mesonbuildsettingswidget.ui",
|
|
||||||
"project/buildoptions/optionsmodel/arrayoptionlineedit.cpp",
|
"project/buildoptions/optionsmodel/arrayoptionlineedit.cpp",
|
||||||
"project/buildoptions/optionsmodel/arrayoptionlineedit.h",
|
"project/buildoptions/optionsmodel/arrayoptionlineedit.h",
|
||||||
"project/buildoptions/optionsmodel/buildoptionsmodel.cpp",
|
"project/buildoptions/optionsmodel/buildoptionsmodel.cpp",
|
||||||
|
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
#include "../mesonbuildconfiguration.h"
|
#include "../mesonbuildconfiguration.h"
|
||||||
#include "../mesonbuildsystem.h"
|
#include "../mesonbuildsystem.h"
|
||||||
#include "ui_mesonbuildsettingswidget.h"
|
|
||||||
|
|
||||||
#include <coreplugin/find/itemviewfind.h>
|
#include <coreplugin/find/itemviewfind.h>
|
||||||
|
|
||||||
@@ -14,119 +13,157 @@
|
|||||||
|
|
||||||
#include <utils/detailswidget.h>
|
#include <utils/detailswidget.h>
|
||||||
#include <utils/headerviewstretcher.h>
|
#include <utils/headerviewstretcher.h>
|
||||||
|
#include <utils/itemviews.h>
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
|
#include <QLayout>
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace MesonProjectManager {
|
namespace MesonProjectManager::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buildCfg)
|
MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buildCfg)
|
||||||
: ProjectExplorer::NamedWidget{tr("Meson")}
|
: ProjectExplorer::NamedWidget{tr("Meson")}
|
||||||
, ui{new Ui::MesonBuildSettingsWidget}
|
, m_progressIndicator(ProgressIndicatorSize::Large)
|
||||||
, m_progressIndicator(Utils::ProgressIndicatorSize::Large)
|
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
auto configureButton = new QPushButton(tr("Apply Configuration Changes"));
|
||||||
ui->container->setState(Utils::DetailsWidget::NoSummary);
|
configureButton->setEnabled(false);
|
||||||
ui->container->setWidget(ui->details);
|
configureButton->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
|
||||||
|
|
||||||
Layouting::Form buildDirWBuilder;
|
auto wipeButton = new QPushButton(tr("Wipe Project"));
|
||||||
|
wipeButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
|
||||||
|
wipeButton->setIcon(Utils::Icons::WARNING.icon());
|
||||||
|
wipeButton->setToolTip(tr("Wipes build directory and reconfigures using previous command "
|
||||||
|
"line options.\nUseful if build directory is corrupted or when "
|
||||||
|
"rebuilding with a newer version of Meson."));
|
||||||
|
|
||||||
|
auto container = new DetailsWidget;
|
||||||
|
|
||||||
|
auto details = new QWidget;
|
||||||
|
|
||||||
|
container->setState(DetailsWidget::NoSummary);
|
||||||
|
container->setWidget(details);
|
||||||
|
|
||||||
|
auto parametersLineEdit = new QLineEdit;
|
||||||
|
|
||||||
|
auto buildDirWidget = new QWidget;
|
||||||
|
|
||||||
|
auto optionsFilterLineEdit = new FancyLineEdit;
|
||||||
|
|
||||||
|
auto optionsTreeView = new TreeView;
|
||||||
|
optionsTreeView->setMinimumHeight(300);
|
||||||
|
optionsTreeView->setFrameShape(QFrame::NoFrame);
|
||||||
|
optionsTreeView->setSelectionBehavior(QAbstractItemView::SelectItems);
|
||||||
|
optionsTreeView->setUniformRowHeights(true);
|
||||||
|
optionsTreeView->setSortingEnabled(true);
|
||||||
|
|
||||||
|
using namespace Layouting;
|
||||||
|
|
||||||
|
Column {
|
||||||
|
Form { tr("Parameters"), parametersLineEdit, br, },
|
||||||
|
buildDirWidget,
|
||||||
|
optionsFilterLineEdit,
|
||||||
|
optionsTreeView,
|
||||||
|
}.attachTo(details, WithoutMargins);
|
||||||
|
|
||||||
|
Column {
|
||||||
|
container,
|
||||||
|
Row { configureButton, wipeButton, }
|
||||||
|
}.attachTo(this, WithoutMargins);
|
||||||
|
|
||||||
|
Form buildDirWBuilder;
|
||||||
buildCfg->buildDirectoryAspect()->addToLayout(buildDirWBuilder);
|
buildCfg->buildDirectoryAspect()->addToLayout(buildDirWBuilder);
|
||||||
buildDirWBuilder.attachTo(ui->buildDirWidget);
|
buildDirWBuilder.attachTo(buildDirWidget, WithoutMargins);
|
||||||
|
|
||||||
ui->parametersLineEdit->setText(buildCfg->parameters());
|
parametersLineEdit->setText(buildCfg->parameters());
|
||||||
ui->optionsFilterLineEdit->setFiltering(true);
|
optionsFilterLineEdit->setFiltering(true);
|
||||||
|
|
||||||
ui->optionsTreeView->sortByColumn(0, Qt::AscendingOrder);
|
optionsTreeView->sortByColumn(0, Qt::AscendingOrder);
|
||||||
|
|
||||||
QFrame *findWrapper
|
QFrame *findWrapper
|
||||||
= Core::ItemViewFind::createSearchableWrapper(ui->optionsTreeView,
|
= Core::ItemViewFind::createSearchableWrapper(optionsTreeView,
|
||||||
Core::ItemViewFind::LightColored);
|
Core::ItemViewFind::LightColored);
|
||||||
findWrapper->setFrameStyle(QFrame::StyledPanel);
|
findWrapper->setFrameStyle(QFrame::StyledPanel);
|
||||||
m_progressIndicator.attachToWidget(findWrapper);
|
m_progressIndicator.attachToWidget(findWrapper);
|
||||||
m_progressIndicator.raise();
|
m_progressIndicator.raise();
|
||||||
m_progressIndicator.hide();
|
m_progressIndicator.hide();
|
||||||
ui->details->layout()->addWidget(findWrapper);
|
details->layout()->addWidget(findWrapper);
|
||||||
|
|
||||||
m_showProgressTimer.setSingleShot(true);
|
m_showProgressTimer.setSingleShot(true);
|
||||||
m_showProgressTimer.setInterval(50); // don't show progress for < 50ms tasks
|
m_showProgressTimer.setInterval(50); // don't show progress for < 50ms tasks
|
||||||
connect(&m_showProgressTimer, &QTimer::timeout, [this]() { m_progressIndicator.show(); });
|
connect(&m_showProgressTimer, &QTimer::timeout, [this]() { m_progressIndicator.show(); });
|
||||||
connect(&m_optionsModel, &BuidOptionsModel::configurationChanged, this, [this]() {
|
connect(&m_optionsModel, &BuidOptionsModel::configurationChanged, this, [configureButton] {
|
||||||
ui->configureButton->setEnabled(true);
|
configureButton->setEnabled(true);
|
||||||
});
|
});
|
||||||
m_optionsFilter.setSourceModel(&m_optionsModel);
|
m_optionsFilter.setSourceModel(&m_optionsModel);
|
||||||
m_optionsFilter.setSortRole(Qt::DisplayRole);
|
m_optionsFilter.setSortRole(Qt::DisplayRole);
|
||||||
m_optionsFilter.setFilterKeyColumn(-1);
|
m_optionsFilter.setFilterKeyColumn(-1);
|
||||||
|
|
||||||
ui->optionsTreeView->setModel(&m_optionsFilter);
|
optionsTreeView->setModel(&m_optionsFilter);
|
||||||
|
optionsTreeView->setItemDelegate(new BuildOptionDelegate{optionsTreeView});
|
||||||
|
|
||||||
ui->optionsTreeView->setItemDelegate(new BuildOptionDelegate{ui->optionsTreeView});
|
|
||||||
MesonBuildSystem *bs = static_cast<MesonBuildSystem *>(buildCfg->buildSystem());
|
MesonBuildSystem *bs = static_cast<MesonBuildSystem *>(buildCfg->buildSystem());
|
||||||
connect(buildCfg->target(),
|
connect(buildCfg->target(), &ProjectExplorer::Target::parsingFinished,
|
||||||
&ProjectExplorer::Target::parsingFinished,
|
this, [this, bs, optionsTreeView](bool success) {
|
||||||
this,
|
|
||||||
[this, bs](bool success) {
|
|
||||||
if (success) {
|
if (success) {
|
||||||
m_optionsModel.setConfiguration(bs->buildOptions());
|
m_optionsModel.setConfiguration(bs->buildOptions());
|
||||||
} else {
|
} else {
|
||||||
m_optionsModel.clear();
|
m_optionsModel.clear();
|
||||||
}
|
}
|
||||||
ui->optionsTreeView->expandAll();
|
optionsTreeView->expandAll();
|
||||||
ui->optionsTreeView->resizeColumnToContents(0);
|
optionsTreeView->resizeColumnToContents(0);
|
||||||
ui->optionsTreeView->setEnabled(true);
|
optionsTreeView->setEnabled(true);
|
||||||
m_showProgressTimer.stop();
|
m_showProgressTimer.stop();
|
||||||
m_progressIndicator.hide();
|
m_progressIndicator.hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(bs, &MesonBuildSystem::parsingStarted, this, [this]() {
|
connect(bs, &MesonBuildSystem::parsingStarted, this, [this, optionsTreeView] {
|
||||||
if (!m_showProgressTimer.isActive()) {
|
if (!m_showProgressTimer.isActive()) {
|
||||||
ui->optionsTreeView->setEnabled(false);
|
optionsTreeView->setEnabled(false);
|
||||||
m_showProgressTimer.start();
|
m_showProgressTimer.start();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(&m_optionsModel, &BuidOptionsModel::dataChanged, this, [bs, this]() {
|
connect(&m_optionsModel, &BuidOptionsModel::dataChanged, this, [bs, this] {
|
||||||
bs->setMesonConfigArgs(this->m_optionsModel.changesAsMesonArgs());
|
bs->setMesonConfigArgs(this->m_optionsModel.changesAsMesonArgs());
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(&m_optionsFilter, &QAbstractItemModel::modelReset, this, [this]() {
|
connect(&m_optionsFilter, &QAbstractItemModel::modelReset, this, [optionsTreeView] {
|
||||||
ui->optionsTreeView->expandAll();
|
optionsTreeView->expandAll();
|
||||||
ui->optionsTreeView->resizeColumnToContents(0);
|
optionsTreeView->resizeColumnToContents(0);
|
||||||
});
|
});
|
||||||
connect(ui->optionsFilterLineEdit,
|
|
||||||
&QLineEdit::textChanged,
|
connect(optionsFilterLineEdit, &QLineEdit::textChanged, &m_optionsFilter, [this](const QString &txt) {
|
||||||
&m_optionsFilter,
|
|
||||||
[this](const QString &txt) {
|
|
||||||
m_optionsFilter.setFilterRegularExpression(
|
m_optionsFilter.setFilterRegularExpression(
|
||||||
QRegularExpression(QRegularExpression::escape(txt),
|
QRegularExpression(QRegularExpression::escape(txt),
|
||||||
QRegularExpression::CaseInsensitiveOption));
|
QRegularExpression::CaseInsensitiveOption));
|
||||||
});
|
});
|
||||||
connect(ui->optionsTreeView,
|
|
||||||
|
connect(optionsTreeView,
|
||||||
&Utils::TreeView::activated,
|
&Utils::TreeView::activated,
|
||||||
ui->optionsTreeView,
|
optionsTreeView,
|
||||||
[tree = ui->optionsTreeView](const QModelIndex &idx) { tree->edit(idx); });
|
[tree = optionsTreeView](const QModelIndex &idx) { tree->edit(idx); });
|
||||||
connect(ui->configureButton, &QPushButton::clicked, [bs, this]() {
|
|
||||||
ui->optionsTreeView->setEnabled(false);
|
connect(configureButton, &QPushButton::clicked, [this, bs, configureButton, optionsTreeView] {
|
||||||
ui->configureButton->setEnabled(false);
|
optionsTreeView->setEnabled(false);
|
||||||
|
configureButton->setEnabled(false);
|
||||||
m_showProgressTimer.start();
|
m_showProgressTimer.start();
|
||||||
bs->configure();
|
bs->configure();
|
||||||
});
|
});
|
||||||
connect(ui->wipeButton, &QPushButton::clicked, [bs, this]() {
|
connect(wipeButton, &QPushButton::clicked, [this, bs, configureButton, optionsTreeView] {
|
||||||
ui->optionsTreeView->setEnabled(false);
|
optionsTreeView->setEnabled(false);
|
||||||
ui->configureButton->setEnabled(false);
|
configureButton->setEnabled(false);
|
||||||
m_showProgressTimer.start();
|
m_showProgressTimer.start();
|
||||||
bs->wipe();
|
bs->wipe();
|
||||||
});
|
});
|
||||||
connect(ui->parametersLineEdit, &QLineEdit::editingFinished, this, [this, buildCfg] {
|
connect(parametersLineEdit, &QLineEdit::editingFinished, this, [ buildCfg, parametersLineEdit] {
|
||||||
buildCfg->setParameters(ui->parametersLineEdit->text());
|
buildCfg->setParameters(parametersLineEdit->text());
|
||||||
});
|
});
|
||||||
bs->triggerParsing();
|
bs->triggerParsing();
|
||||||
}
|
}
|
||||||
|
|
||||||
MesonBuildSettingsWidget::~MesonBuildSettingsWidget()
|
MesonBuildSettingsWidget::~MesonBuildSettingsWidget() = default;
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // MesonProjectManager::Internal
|
||||||
} // namespace MesonProjectManager
|
|
||||||
|
@@ -12,12 +12,10 @@
|
|||||||
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
namespace MesonProjectManager {
|
namespace MesonProjectManager::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
namespace Ui { class MesonBuildSettingsWidget; }
|
|
||||||
|
|
||||||
class MesonBuildConfiguration;
|
class MesonBuildConfiguration;
|
||||||
|
|
||||||
class MesonBuildSettingsWidget : public ProjectExplorer::NamedWidget
|
class MesonBuildSettingsWidget : public ProjectExplorer::NamedWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -27,12 +25,10 @@ public:
|
|||||||
~MesonBuildSettingsWidget();
|
~MesonBuildSettingsWidget();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MesonBuildSettingsWidget *ui;
|
|
||||||
BuidOptionsModel m_optionsModel;
|
BuidOptionsModel m_optionsModel;
|
||||||
Utils::CategorySortFilterModel m_optionsFilter;
|
Utils::CategorySortFilterModel m_optionsFilter;
|
||||||
Utils::ProgressIndicator m_progressIndicator;
|
Utils::ProgressIndicator m_progressIndicator;
|
||||||
QTimer m_showProgressTimer;
|
QTimer m_showProgressTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // MesonProjectManager::Internal
|
||||||
} // namespace MesonProjectManager
|
|
||||||
|
@@ -1,158 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>MesonProjectManager::Internal::MesonBuildSettingsWidget</class>
|
|
||||||
<widget class="QWidget" name="MesonProjectManager::Internal::MesonBuildSettingsWidget">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>400</width>
|
|
||||||
<height>300</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QPushButton" name="configureButton">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Apply Configuration Changes</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QPushButton" name="wipeButton">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Wipes build directory and reconfigures using previous command line options.
|
|
||||||
Useful if build directory is corrupted or when rebuilding with a newer version of Meson.</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Wipe Project</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset theme=":/utils/images/warning.png"/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0" colspan="2">
|
|
||||||
<widget class="Utils::DetailsWidget" name="container" native="true">
|
|
||||||
<widget class="QWidget" name="details" native="true">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>20</y>
|
|
||||||
<width>371</width>
|
|
||||||
<height>211</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Parameters</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="parametersLineEdit"/>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QWidget" name="buildDirWidget" native="true"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="Utils::FancyLineEdit" name="optionsFilterLineEdit">
|
|
||||||
<property name="placeholderText">
|
|
||||||
<string>Filter</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="Utils::TreeView" name="optionsTreeView">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>300</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::NoFrame</enum>
|
|
||||||
</property>
|
|
||||||
<property name="selectionBehavior">
|
|
||||||
<enum>QAbstractItemView::SelectItems</enum>
|
|
||||||
</property>
|
|
||||||
<property name="uniformRowHeights">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="sortingEnabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>Utils::DetailsWidget</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header>utils/detailswidget.h</header>
|
|
||||||
<container>1</container>
|
|
||||||
</customwidget>
|
|
||||||
<customwidget>
|
|
||||||
<class>Utils::FancyLineEdit</class>
|
|
||||||
<extends>QLineEdit</extends>
|
|
||||||
<header>utils/fancylineedit.h</header>
|
|
||||||
</customwidget>
|
|
||||||
<customwidget>
|
|
||||||
<class>Utils::TreeView</class>
|
|
||||||
<extends>QTreeView</extends>
|
|
||||||
<header>utils/itemviews.h</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
Reference in New Issue
Block a user