Address review feedback: double spinboxes, tabs, and fix export bug

This commit is contained in:
Kellermorph
2026-06-18 13:37:24 +02:00
parent 7a80ce40b7
commit 0555cd9045
7 changed files with 94 additions and 81 deletions
+3
View File
@@ -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)
+2
View File
@@ -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);
+5
View File
@@ -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",
+1
View File
@@ -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
+1
View File
@@ -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);
} }
} }
+11 -11
View File
@@ -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