mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-07-07 20:14:12 +02:00
Address review feedback: double spinboxes, tabs, and fix export bug
This commit is contained in:
@@ -116,9 +116,12 @@ void renderDiagram(Diagram *diagram, QPainter &painter, const QRectF &target)
|
|||||||
// draw_grid_ is set (default true), so toggle it off around the render
|
// draw_grid_ is set (default true), so toggle it off around the render
|
||||||
// and restore it afterwards.
|
// and restore it afterwards.
|
||||||
const bool was_drawing_grid = diagram->displayGrid();
|
const bool was_drawing_grid = diagram->displayGrid();
|
||||||
|
const bool was_drawing_guides = diagram->displayGuides();
|
||||||
diagram->setDisplayGrid(false);
|
diagram->setDisplayGrid(false);
|
||||||
|
diagram->setDisplayGuides(false);
|
||||||
diagram->render(&painter, target, source, Qt::KeepAspectRatio);
|
diagram->render(&painter, target, source, Qt::KeepAspectRatio);
|
||||||
diagram->setDisplayGrid(was_drawing_grid);
|
diagram->setDisplayGrid(was_drawing_grid);
|
||||||
|
diagram->setDisplayGuides(was_drawing_guides);
|
||||||
}
|
}
|
||||||
|
|
||||||
int exportPdf(QETProject &project, const QString &output)
|
int exportPdf(QETProject &project, const QString &output)
|
||||||
|
|||||||
@@ -2315,6 +2315,7 @@ ExportProperties Diagram::applyProperties(
|
|||||||
// exporte les options de rendu en cours
|
// exporte les options de rendu en cours
|
||||||
ExportProperties old_properties;
|
ExportProperties old_properties;
|
||||||
old_properties.draw_grid = displayGrid();
|
old_properties.draw_grid = displayGrid();
|
||||||
|
old_properties.draw_guides = displayGuides();
|
||||||
old_properties.draw_border = border_and_titleblock.borderIsDisplayed();
|
old_properties.draw_border = border_and_titleblock.borderIsDisplayed();
|
||||||
old_properties.draw_titleblock = border_and_titleblock.titleBlockIsDisplayed();
|
old_properties.draw_titleblock = border_and_titleblock.titleBlockIsDisplayed();
|
||||||
old_properties.draw_terminals = drawTerminals();
|
old_properties.draw_terminals = drawTerminals();
|
||||||
@@ -2328,6 +2329,7 @@ ExportProperties Diagram::applyProperties(
|
|||||||
setDrawTerminals (new_properties.draw_terminals);
|
setDrawTerminals (new_properties.draw_terminals);
|
||||||
setDrawColoredConductors (new_properties.draw_colored_conductors);
|
setDrawColoredConductors (new_properties.draw_colored_conductors);
|
||||||
setDisplayGrid (new_properties.draw_grid);
|
setDisplayGrid (new_properties.draw_grid);
|
||||||
|
setDisplayGuides (new_properties.draw_guides);
|
||||||
border_and_titleblock.displayBorder(new_properties.draw_border);
|
border_and_titleblock.displayBorder(new_properties.draw_border);
|
||||||
border_and_titleblock.displayTitleBlock (new_properties.draw_titleblock);
|
border_and_titleblock.displayTitleBlock (new_properties.draw_titleblock);
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ ExportProperties::ExportProperties() :
|
|||||||
destination_directory(QETApp::documentDir()),
|
destination_directory(QETApp::documentDir()),
|
||||||
format("PNG"),
|
format("PNG"),
|
||||||
draw_grid(false),
|
draw_grid(false),
|
||||||
|
draw_guides(false),
|
||||||
draw_border(true),
|
draw_border(true),
|
||||||
draw_titleblock(true),
|
draw_titleblock(true),
|
||||||
draw_terminals(false),
|
draw_terminals(false),
|
||||||
@@ -61,6 +62,8 @@ void ExportProperties::toSettings(QSettings &settings,
|
|||||||
format);
|
format);
|
||||||
settings.setValue(prefix % "drawgrid",
|
settings.setValue(prefix % "drawgrid",
|
||||||
draw_grid);
|
draw_grid);
|
||||||
|
settings.setValue(prefix % "drawguides",
|
||||||
|
draw_guides);
|
||||||
settings.setValue(prefix % "drawborder",
|
settings.setValue(prefix % "drawborder",
|
||||||
draw_border);
|
draw_border);
|
||||||
settings.setValue(prefix % "drawtitleblock",
|
settings.setValue(prefix % "drawtitleblock",
|
||||||
@@ -94,6 +97,8 @@ void ExportProperties::fromSettings(QSettings &settings,
|
|||||||
|
|
||||||
draw_grid = settings.value(prefix % "drawgrid",
|
draw_grid = settings.value(prefix % "drawgrid",
|
||||||
false).toBool();
|
false).toBool();
|
||||||
|
draw_guides = settings.value(prefix % "drawguides",
|
||||||
|
false).toBool();
|
||||||
draw_border = settings.value(prefix % "drawborder",
|
draw_border = settings.value(prefix % "drawborder",
|
||||||
true ).toBool();
|
true ).toBool();
|
||||||
draw_titleblock = settings.value(prefix % "drawtitleblock",
|
draw_titleblock = settings.value(prefix % "drawtitleblock",
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class ExportProperties {
|
|||||||
QDir destination_directory; ///< Target directory for generated files
|
QDir destination_directory; ///< Target directory for generated files
|
||||||
QString format; ///< Image format of generated files
|
QString format; ///< Image format of generated files
|
||||||
bool draw_grid; ///< Whether to render the diagram grid
|
bool draw_grid; ///< Whether to render the diagram grid
|
||||||
|
bool draw_guides; ///< Whether to render the diagram guides
|
||||||
bool draw_border; ///< Whether to render the border (along with rows/columns headers)
|
bool draw_border; ///< Whether to render the border (along with rows/columns headers)
|
||||||
bool draw_titleblock; ///< Whether to render the title block
|
bool draw_titleblock; ///< Whether to render the title block
|
||||||
bool draw_terminals; ///< Whether to render terminals
|
bool draw_terminals; ///< Whether to render terminals
|
||||||
|
|||||||
@@ -519,6 +519,7 @@ ExportProperties ProjectPrintWindow::exportProperties() const
|
|||||||
exp.draw_terminals = ui->m_draw_terminal_cb->isChecked();
|
exp.draw_terminals = ui->m_draw_terminal_cb->isChecked();
|
||||||
exp.draw_colored_conductors = ui->m_keep_conductor_color_cb->isChecked();
|
exp.draw_colored_conductors = ui->m_keep_conductor_color_cb->isChecked();
|
||||||
exp.draw_grid = false;
|
exp.draw_grid = false;
|
||||||
|
exp.draw_guides = false;
|
||||||
|
|
||||||
return exp;
|
return exp;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,108 +5,109 @@
|
|||||||
#include <QTableWidget>
|
#include <QTableWidget>
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QSpinBox>
|
#include <QDoubleSpinBox>
|
||||||
#include <QColorDialog>
|
#include <QColorDialog>
|
||||||
|
|
||||||
GuidesPropertiesWidget::GuidesPropertiesWidget(QWidget *parent)
|
GuidesPropertiesWidget::GuidesPropertiesWidget(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
setupUi();
|
setupUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
GuidesPropertiesWidget::~GuidesPropertiesWidget() {}
|
GuidesPropertiesWidget::~GuidesPropertiesWidget() {}
|
||||||
|
|
||||||
void GuidesPropertiesWidget::setupUi() {
|
void GuidesPropertiesWidget::setupUi() {
|
||||||
QVBoxLayout *main_layout = new QVBoxLayout(this);
|
QVBoxLayout *main_layout = new QVBoxLayout(this);
|
||||||
|
|
||||||
m_table = new QTableWidget(0, 3, this);
|
m_table = new QTableWidget(0, 3, this);
|
||||||
m_table->setHorizontalHeaderLabels({tr("Orientation"), tr("Position"), tr("Couleur")});
|
m_table->setHorizontalHeaderLabels({tr("Orientation"), tr("Position"), tr("Couleur")});
|
||||||
m_table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
m_table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
m_table->setSelectionBehavior(QAbstractItemView::SelectRows);
|
m_table->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
|
||||||
m_add_btn = new QPushButton(tr("Ajouter"), this);
|
m_add_btn = new QPushButton(tr("Ajouter"), this);
|
||||||
m_remove_btn = new QPushButton(tr("Supprimer"), this);
|
m_remove_btn = new QPushButton(tr("Supprimer"), this);
|
||||||
|
|
||||||
QHBoxLayout *btn_layout = new QHBoxLayout();
|
QHBoxLayout *btn_layout = new QHBoxLayout();
|
||||||
btn_layout->addWidget(m_add_btn);
|
btn_layout->addWidget(m_add_btn);
|
||||||
btn_layout->addWidget(m_remove_btn);
|
btn_layout->addWidget(m_remove_btn);
|
||||||
btn_layout->addStretch();
|
btn_layout->addStretch();
|
||||||
|
|
||||||
main_layout->addWidget(m_table);
|
main_layout->addWidget(m_table);
|
||||||
main_layout->addLayout(btn_layout);
|
main_layout->addLayout(btn_layout);
|
||||||
|
|
||||||
connect(m_add_btn, &QPushButton::clicked, this, &GuidesPropertiesWidget::addGuide);
|
connect(m_add_btn, &QPushButton::clicked, this, &GuidesPropertiesWidget::addGuide);
|
||||||
connect(m_remove_btn, &QPushButton::clicked, this, &GuidesPropertiesWidget::removeGuide);
|
connect(m_remove_btn, &QPushButton::clicked, this, &GuidesPropertiesWidget::removeGuide);
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Diagram::Guide> GuidesPropertiesWidget::guides() const {
|
QList<Diagram::Guide> GuidesPropertiesWidget::guides() const {
|
||||||
QList<Diagram::Guide> list;
|
QList<Diagram::Guide> list;
|
||||||
for (int row = 0; row < m_table->rowCount(); ++row) {
|
for (int row = 0; row < m_table->rowCount(); ++row) {
|
||||||
QComboBox *combo = qobject_cast<QComboBox*>(m_table->cellWidget(row, 0));
|
QComboBox *combo = qobject_cast<QComboBox*>(m_table->cellWidget(row, 0));
|
||||||
QSpinBox *spin = qobject_cast<QSpinBox*>(m_table->cellWidget(row, 1));
|
QDoubleSpinBox *spin = qobject_cast<QDoubleSpinBox*>(m_table->cellWidget(row, 1));
|
||||||
QPushButton *colorBtn = qobject_cast<QPushButton*>(m_table->cellWidget(row, 2));
|
QPushButton *colorBtn = qobject_cast<QPushButton*>(m_table->cellWidget(row, 2));
|
||||||
|
|
||||||
if (combo && spin && colorBtn) {
|
if (combo && spin && colorBtn) {
|
||||||
Diagram::Guide g;
|
Diagram::Guide g;
|
||||||
g.orientation = (combo->currentIndex() == 0) ? Diagram::Guide::Horizontal : Diagram::Guide::Vertical;
|
g.orientation = (combo->currentIndex() == 0) ? Diagram::Guide::Horizontal : Diagram::Guide::Vertical;
|
||||||
g.position = spin->value();
|
g.position = spin->value();
|
||||||
g.color = colorBtn->property("color").value<QColor>();
|
g.color = colorBtn->property("color").value<QColor>();
|
||||||
list.append(g);
|
list.append(g);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuidesPropertiesWidget::setGuides(const QList<Diagram::Guide> &guides) {
|
void GuidesPropertiesWidget::setGuides(const QList<Diagram::Guide> &guides) {
|
||||||
m_table->setRowCount(0);
|
m_table->setRowCount(0);
|
||||||
for (const auto &g : guides) {
|
for (const auto &g : guides) {
|
||||||
addGuide();
|
addGuide();
|
||||||
int row = m_table->rowCount() - 1;
|
int row = m_table->rowCount() - 1;
|
||||||
|
|
||||||
QComboBox *combo = qobject_cast<QComboBox*>(m_table->cellWidget(row, 0));
|
QComboBox *combo = qobject_cast<QComboBox*>(m_table->cellWidget(row, 0));
|
||||||
QSpinBox *spin = qobject_cast<QSpinBox*>(m_table->cellWidget(row, 1));
|
QDoubleSpinBox *spin = qobject_cast<QDoubleSpinBox*>(m_table->cellWidget(row, 1));
|
||||||
QPushButton *colorBtn = qobject_cast<QPushButton*>(m_table->cellWidget(row, 2));
|
QPushButton *colorBtn = qobject_cast<QPushButton*>(m_table->cellWidget(row, 2));
|
||||||
|
|
||||||
if (combo && spin && colorBtn) {
|
if (combo && spin && colorBtn) {
|
||||||
combo->setCurrentIndex(g.orientation == Diagram::Guide::Horizontal ? 0 : 1);
|
combo->setCurrentIndex(g.orientation == Diagram::Guide::Horizontal ? 0 : 1);
|
||||||
spin->setValue(qRound(g.position));
|
spin->setValue(g.position);
|
||||||
colorBtn->setProperty("color", g.color);
|
colorBtn->setProperty("color", g.color);
|
||||||
colorBtn->setStyleSheet(QString("background-color: %1; color: white; font-weight: bold;").arg(g.color.name()));
|
colorBtn->setStyleSheet(QString("background-color: %1; color: white; font-weight: bold;").arg(g.color.name()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuidesPropertiesWidget::addGuide() {
|
void GuidesPropertiesWidget::addGuide() {
|
||||||
int row = m_table->rowCount();
|
int row = m_table->rowCount();
|
||||||
m_table->insertRow(row);
|
m_table->insertRow(row);
|
||||||
|
|
||||||
QComboBox *combo = new QComboBox(this);
|
QComboBox *combo = new QComboBox(this);
|
||||||
combo->addItems({tr("Horizontal"), tr("Vertical")});
|
combo->addItems({tr("Horizontal"), tr("Vertical")});
|
||||||
m_table->setCellWidget(row, 0, combo);
|
m_table->setCellWidget(row, 0, combo);
|
||||||
|
|
||||||
QSpinBox *spin = new QSpinBox(this);
|
QDoubleSpinBox *spin = new QDoubleSpinBox(this);
|
||||||
spin->setRange(-10000, 10000);
|
spin->setRange(-10000.0, 10000.0);
|
||||||
spin->setValue(100);
|
spin->setDecimals(2);
|
||||||
m_table->setCellWidget(row, 1, spin);
|
spin->setValue(100.0);
|
||||||
|
m_table->setCellWidget(row, 1, spin);
|
||||||
|
|
||||||
QPushButton *colorBtn = new QPushButton(tr("Couleur"), this);
|
QPushButton *colorBtn = new QPushButton(tr("Couleur"), this);
|
||||||
QColor defaultColor = Qt::lightGray;
|
QColor defaultColor = Qt::lightGray;
|
||||||
colorBtn->setProperty("color", defaultColor);
|
colorBtn->setProperty("color", defaultColor);
|
||||||
colorBtn->setStyleSheet(QString("background-color: %1; color: white; font-weight: bold;").arg(defaultColor.name()));
|
colorBtn->setStyleSheet(QString("background-color: %1; color: white; font-weight: bold;").arg(defaultColor.name()));
|
||||||
|
|
||||||
connect(colorBtn, &QPushButton::clicked, [this, colorBtn]() {
|
connect(colorBtn, &QPushButton::clicked, [this, colorBtn]() {
|
||||||
QColor c = QColorDialog::getColor(colorBtn->property("color").value<QColor>(), this);
|
QColor c = QColorDialog::getColor(colorBtn->property("color").value<QColor>(), this);
|
||||||
if (c.isValid()) {
|
if (c.isValid()) {
|
||||||
colorBtn->setProperty("color", c);
|
colorBtn->setProperty("color", c);
|
||||||
colorBtn->setStyleSheet(QString("background-color: %1; color: white; font-weight: bold;").arg(c.name()));
|
colorBtn->setStyleSheet(QString("background-color: %1; color: white; font-weight: bold;").arg(c.name()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
m_table->setCellWidget(row, 2, colorBtn);
|
m_table->setCellWidget(row, 2, colorBtn);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuidesPropertiesWidget::removeGuide() {
|
void GuidesPropertiesWidget::removeGuide() {
|
||||||
int row = m_table->currentRow();
|
int row = m_table->currentRow();
|
||||||
if (row >= 0) {
|
if (row >= 0) {
|
||||||
m_table->removeRow(row);
|
m_table->removeRow(row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,24 +9,24 @@ class QTableWidget;
|
|||||||
class QPushButton;
|
class QPushButton;
|
||||||
|
|
||||||
class GuidesPropertiesWidget : public QWidget {
|
class GuidesPropertiesWidget : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit GuidesPropertiesWidget(QWidget *parent = nullptr);
|
explicit GuidesPropertiesWidget(QWidget *parent = nullptr);
|
||||||
~GuidesPropertiesWidget() override;
|
~GuidesPropertiesWidget() override;
|
||||||
|
|
||||||
QList<Diagram::Guide> guides() const;
|
QList<Diagram::Guide> guides() const;
|
||||||
void setGuides(const QList<Diagram::Guide> &guides);
|
void setGuides(const QList<Diagram::Guide> &guides);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void addGuide();
|
void addGuide();
|
||||||
void removeGuide();
|
void removeGuide();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setupUi();
|
void setupUi();
|
||||||
|
|
||||||
QTableWidget *m_table;
|
QTableWidget *m_table;
|
||||||
QPushButton *m_add_btn;
|
QPushButton *m_add_btn;
|
||||||
QPushButton *m_remove_btn;
|
QPushButton *m_remove_btn;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GUIDESPROPERTIESWIDGET_H
|
#endif // GUIDESPROPERTIESWIDGET_H
|
||||||
|
|||||||
Reference in New Issue
Block a user