Gui: [skip ci] improve usability of VectorListEditor

This commit is contained in:
wmayer
2020-06-29 21:29:12 +02:00
parent 1da81df756
commit 0a8f4b5103
3 changed files with 18 additions and 0 deletions

View File

@@ -28,6 +28,7 @@
#include "VectorListEditor.h"
#include "ui_VectorListEditor.h"
#include <Gui/QuantitySpinBox.h>
#include <Base/Tools.h>
using namespace Gui;
@@ -239,6 +240,7 @@ VectorListEditor::VectorListEditor(int decimals, QWidget* parent)
connect(ui->toolButtonAdd, SIGNAL(clicked(bool)), this, SLOT(addRow()));
connect(ui->toolButtonRemove, SIGNAL(clicked(bool)), this, SLOT(removeRow()));
connect(ui->toolButtonAccept, SIGNAL(clicked(bool)), this, SLOT(acceptCurrent()));
connect(ui->tableWidget, SIGNAL(clicked(QModelIndex)), this, SLOT(clickedRow(QModelIndex)));
}
VectorListEditor::~VectorListEditor()
@@ -256,6 +258,9 @@ void VectorListEditor::setValues(const QList<Base::Vector3d>& v)
}
else {
ui->spinBox->setRange(1, v.size());
ui->coordX->setValue(model->data(model->index(0, 0), Qt::EditRole).toDouble());
ui->coordY->setValue(model->data(model->index(0, 1), Qt::EditRole).toDouble());
ui->coordZ->setValue(model->data(model->index(0, 2), Qt::EditRole).toDouble());
}
}
@@ -275,6 +280,15 @@ void VectorListEditor::reject()
QDialog::reject();
}
void VectorListEditor::clickedRow(const QModelIndex& index)
{
QSignalBlocker blocker(ui->spinBox);
ui->spinBox->setValue(index.row() + 1);
ui->coordX->setValue(model->data(model->index(index.row(), 0), Qt::EditRole).toDouble());
ui->coordY->setValue(model->data(model->index(index.row(), 1), Qt::EditRole).toDouble());
ui->coordZ->setValue(model->data(model->index(index.row(), 2), Qt::EditRole).toDouble());
}
void VectorListEditor::setCurrentRow(int row)
{
QModelIndex index = model->index(row - 1, 0);

View File

@@ -97,6 +97,7 @@ private Q_SLOTS:
void removeRow();
void acceptCurrent();
void setCurrentRow(int);
void clickedRow(const QModelIndex&);
private:
std::unique_ptr<Ui_VectorListEditor> ui;

View File

@@ -1440,6 +1440,9 @@ void VectorListButton::browse()
{
VectorListEditor dlg(decimals, Gui::getMainWindow());
dlg.setValues(value().value<QList<Base::Vector3d>>());
QPoint p(0, 0);
p = this->mapToGlobal(p);
dlg.move(p);
if (dlg.exec() == QDialog::Accepted) {
QVariant data = QVariant::fromValue<QList<Base::Vector3d>>(dlg.getValues());
setValue(data);