forked from qt-creator/qt-creator
QmlJSEditor: inline .ui files
qmljscomponentnamedialog.ui qmljseditingsettingspage.ui Change-Id: I3d0410c22c4c08e58fe92cae16d1daf465b3facd Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -2,29 +2,54 @@
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "qmljscomponentnamedialog.h"
|
||||
#include "ui_qmljscomponentnamedialog.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <utils/classnamevalidatinglineedit.h>
|
||||
#include <utils/layoutbuilder.h>
|
||||
#include <utils/pathchooser.h>
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QFileDialog>
|
||||
#include <QFileInfo>
|
||||
#include <QLabel>
|
||||
#include <QListWidget>
|
||||
#include <QPlainTextEdit>
|
||||
#include <QPushButton>
|
||||
|
||||
using namespace QmlJSEditor::Internal;
|
||||
|
||||
ComponentNameDialog::ComponentNameDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::ComponentNameDialog)
|
||||
QDialog(parent)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
setWindowTitle(tr("Move Component into Separate File"));
|
||||
m_componentNameEdit = new Utils::ClassNameValidatingLineEdit;
|
||||
m_componentNameEdit->setPlaceholderText(tr("Component Name"));
|
||||
m_messageLabel = new QLabel;
|
||||
m_pathEdit = new Utils::PathChooser;
|
||||
m_label = new QLabel;
|
||||
m_listWidget = new QListWidget;
|
||||
m_plainTextEdit = new QPlainTextEdit;
|
||||
m_checkBox = new QCheckBox(tr("ui.qml file"));
|
||||
m_buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
|
||||
connect(ui->pathEdit, &Utils::PathChooser::rawPathChanged,
|
||||
this, &ComponentNameDialog::validate);
|
||||
connect(ui->componentNameEdit, &QLineEdit::textChanged,
|
||||
this, &ComponentNameDialog::validate);
|
||||
}
|
||||
using namespace Utils::Layouting;
|
||||
Column {
|
||||
Form {
|
||||
tr("Component name:"), m_componentNameEdit, br,
|
||||
empty, m_messageLabel, br,
|
||||
tr("Path:"), m_pathEdit, br,
|
||||
},
|
||||
m_label,
|
||||
Row { m_listWidget, m_plainTextEdit },
|
||||
Row { m_checkBox, m_buttonBox },
|
||||
}.attachTo(this);
|
||||
|
||||
ComponentNameDialog::~ComponentNameDialog()
|
||||
{
|
||||
delete ui;
|
||||
connect(m_buttonBox, &QDialogButtonBox::accepted, this, &ComponentNameDialog::accept);
|
||||
connect(m_buttonBox, &QDialogButtonBox::rejected, this, &ComponentNameDialog::reject);
|
||||
connect(m_pathEdit, &Utils::PathChooser::rawPathChanged,
|
||||
this, &ComponentNameDialog::validate);
|
||||
connect(m_componentNameEdit, &QLineEdit::textChanged,
|
||||
this, &ComponentNameDialog::validate);
|
||||
}
|
||||
|
||||
bool ComponentNameDialog::go(QString *proposedName,
|
||||
@@ -42,32 +67,32 @@ bool ComponentNameDialog::go(QString *proposedName,
|
||||
const bool isUiFile = QFileInfo(oldFileName).completeSuffix() == "ui.qml";
|
||||
|
||||
ComponentNameDialog d(parent);
|
||||
d.ui->componentNameEdit->setNamespacesEnabled(false);
|
||||
d.ui->componentNameEdit->setLowerCaseFileName(false);
|
||||
d.ui->componentNameEdit->setForceFirstCapitalLetter(true);
|
||||
d.m_componentNameEdit->setNamespacesEnabled(false);
|
||||
d.m_componentNameEdit->setLowerCaseFileName(false);
|
||||
d.m_componentNameEdit->setForceFirstCapitalLetter(true);
|
||||
if (proposedName->isEmpty())
|
||||
*proposedName = QLatin1String("MyComponent");
|
||||
d.ui->componentNameEdit->setText(*proposedName);
|
||||
d.ui->pathEdit->setExpectedKind(Utils::PathChooser::ExistingDirectory);
|
||||
d.ui->pathEdit->setHistoryCompleter(QLatin1String("QmlJs.Component.History"));
|
||||
d.ui->pathEdit->setPath(*proposedPath);
|
||||
d.ui->label->setText(tr("Property assignments for %1:").arg(oldFileName));
|
||||
d.ui->checkBox->setChecked(isUiFile);
|
||||
d.ui->checkBox->setVisible(isUiFile);
|
||||
d.m_componentNameEdit->setText(*proposedName);
|
||||
d.m_pathEdit->setExpectedKind(Utils::PathChooser::ExistingDirectory);
|
||||
d.m_pathEdit->setHistoryCompleter(QLatin1String("QmlJs.Component.History"));
|
||||
d.m_pathEdit->setPath(*proposedPath);
|
||||
d.m_label->setText(tr("Property assignments for %1:").arg(oldFileName));
|
||||
d.m_checkBox->setChecked(isUiFile);
|
||||
d.m_checkBox->setVisible(isUiFile);
|
||||
d.m_sourcePreview = sourcePreview;
|
||||
|
||||
d.setProperties(properties);
|
||||
|
||||
d.generateCodePreview();
|
||||
|
||||
d.connect(d.ui->listWidget, &QListWidget::itemChanged, &d, &ComponentNameDialog::generateCodePreview);
|
||||
d.connect(d.ui->componentNameEdit, &QLineEdit::textChanged, &d, &ComponentNameDialog::generateCodePreview);
|
||||
d.connect(d.m_listWidget, &QListWidget::itemChanged, &d, &ComponentNameDialog::generateCodePreview);
|
||||
d.connect(d.m_componentNameEdit, &QLineEdit::textChanged, &d, &ComponentNameDialog::generateCodePreview);
|
||||
|
||||
if (QDialog::Accepted == d.exec()) {
|
||||
*proposedName = d.ui->componentNameEdit->text();
|
||||
*proposedPath = d.ui->pathEdit->filePath().toString();
|
||||
*proposedName = d.m_componentNameEdit->text();
|
||||
*proposedPath = d.m_pathEdit->filePath().toString();
|
||||
|
||||
if (d.ui->checkBox->isChecked())
|
||||
if (d.m_checkBox->isChecked())
|
||||
*proposedSuffix = "ui.qml";
|
||||
else
|
||||
*proposedSuffix = "qml";
|
||||
@@ -82,24 +107,24 @@ bool ComponentNameDialog::go(QString *proposedName,
|
||||
|
||||
void ComponentNameDialog::setProperties(const QStringList &properties)
|
||||
{
|
||||
ui->listWidget->addItems(properties);
|
||||
m_listWidget->addItems(properties);
|
||||
|
||||
for (int i = 0; i < ui->listWidget->count(); ++i) {
|
||||
QListWidgetItem *item = ui->listWidget->item(i);
|
||||
for (int i = 0; i < m_listWidget->count(); ++i) {
|
||||
QListWidgetItem *item = m_listWidget->item(i);
|
||||
item->setFlags(Qt::ItemIsUserCheckable | Qt:: ItemIsEnabled);
|
||||
if (item->text() == QLatin1String("x")
|
||||
|| item->text() == QLatin1String("y"))
|
||||
ui->listWidget->item(i)->setCheckState(Qt::Checked);
|
||||
m_listWidget->item(i)->setCheckState(Qt::Checked);
|
||||
else
|
||||
ui->listWidget->item(i)->setCheckState(Qt::Unchecked);
|
||||
m_listWidget->item(i)->setCheckState(Qt::Unchecked);
|
||||
}
|
||||
}
|
||||
|
||||
QStringList ComponentNameDialog::propertiesToKeep() const
|
||||
{
|
||||
QStringList result;
|
||||
for (int i = 0; i < ui->listWidget->count(); ++i) {
|
||||
QListWidgetItem *item = ui->listWidget->item(i);
|
||||
for (int i = 0; i < m_listWidget->count(); ++i) {
|
||||
QListWidgetItem *item = m_listWidget->item(i);
|
||||
|
||||
if (item->checkState() == Qt::Checked)
|
||||
result.append(item->text());
|
||||
@@ -110,43 +135,43 @@ QStringList ComponentNameDialog::propertiesToKeep() const
|
||||
|
||||
void ComponentNameDialog::generateCodePreview()
|
||||
{
|
||||
const QString componentName = ui->componentNameEdit->text();
|
||||
const QString componentName = m_componentNameEdit->text();
|
||||
|
||||
ui->plainTextEdit->clear();
|
||||
ui->plainTextEdit->appendPlainText(componentName + QLatin1String(" {"));
|
||||
m_plainTextEdit->clear();
|
||||
m_plainTextEdit->appendPlainText(componentName + QLatin1String(" {"));
|
||||
if (!m_sourcePreview.first().isEmpty())
|
||||
ui->plainTextEdit->appendPlainText(m_sourcePreview.first());
|
||||
m_plainTextEdit->appendPlainText(m_sourcePreview.first());
|
||||
|
||||
for (int i = 0; i < ui->listWidget->count(); ++i) {
|
||||
QListWidgetItem *item = ui->listWidget->item(i);
|
||||
for (int i = 0; i < m_listWidget->count(); ++i) {
|
||||
QListWidgetItem *item = m_listWidget->item(i);
|
||||
|
||||
if (item->checkState() == Qt::Checked)
|
||||
ui->plainTextEdit->appendPlainText(m_sourcePreview.at(i + 1));
|
||||
m_plainTextEdit->appendPlainText(m_sourcePreview.at(i + 1));
|
||||
}
|
||||
|
||||
ui->plainTextEdit->appendPlainText(QLatin1String("}"));
|
||||
m_plainTextEdit->appendPlainText(QLatin1String("}"));
|
||||
}
|
||||
|
||||
void ComponentNameDialog::validate()
|
||||
{
|
||||
const QString message = isValid();
|
||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(message.isEmpty());
|
||||
ui->messageLabel->setText(message);
|
||||
m_buttonBox->button(QDialogButtonBox::Ok)->setEnabled(message.isEmpty());
|
||||
m_messageLabel->setText(message);
|
||||
}
|
||||
|
||||
QString ComponentNameDialog::isValid() const
|
||||
{
|
||||
if (!ui->componentNameEdit->isValid())
|
||||
return ui->componentNameEdit->errorMessage();
|
||||
if (!m_componentNameEdit->isValid())
|
||||
return m_componentNameEdit->errorMessage();
|
||||
|
||||
QString compName = ui->componentNameEdit->text();
|
||||
QString compName = m_componentNameEdit->text();
|
||||
if (compName.isEmpty() || !compName[0].isUpper())
|
||||
return tr("Invalid component name.");
|
||||
|
||||
if (!ui->pathEdit->isValid())
|
||||
if (!m_pathEdit->isValid())
|
||||
return tr("Invalid path.");
|
||||
|
||||
if (ui->pathEdit->filePath().pathAppended(compName + ".qml").exists())
|
||||
if (m_pathEdit->filePath().pathAppended(compName + ".qml").exists())
|
||||
return tr("Component already exists.");
|
||||
|
||||
return QString();
|
||||
|
Reference in New Issue
Block a user