Fix PDF export checkbox state not being remembered

- Save and restore the state of m_component_info_cb, m_fit_in_page_cb,
  and m_use_full_page_cb via QSettings, in addition to the existing
  ExportProperties-based checkboxes (border, titleblock, terminals, etc.)
- Add savePrintProperties() to persist all checkbox states after
  print/export under the "print/default" settings prefix
- Remove unused QPrinter(HighResolution) local variable in launchDialog()
  that caused an unnecessary ~2s CUPS round-trip on Linux
This commit is contained in:
Kellermorph
2026-09-17 21:33:05 +02:00
parent 918756a91a
commit 520f4245b3
2 changed files with 17 additions and 1 deletions
+16 -1
View File
@@ -56,7 +56,6 @@
void ProjectPrintWindow::launchDialog(QETProject *project, QPrinter::OutputFormat format, QWidget *parent)
{
auto printer_ = new QPrinter();
QPrinter printer(QPrinter::HighResolution);
printer_->setDocName(ProjectPrintWindow::docName(project));
printer_->setPageOrientation(QPageLayout::Landscape);
@@ -150,6 +149,11 @@ ProjectPrintWindow::ProjectPrintWindow(QETProject *project, QPrinter *printer, Q
ui->m_draw_terminal_names_cb->setChecked(exp.draw_terminal_names);
ui->m_keep_conductor_color_cb->setChecked(exp.draw_colored_conductors);
QSettings settings;
ui->m_component_info_cb->setChecked(settings.value("print/default/componentinfo", false).toBool());
ui->m_fit_in_page_cb->setChecked(settings.value("print/default/fitinpage", true).toBool());
ui->m_use_full_page_cb->setChecked(settings.value("print/default/fullpage", false).toBool());
ui->m_date_cb->blockSignals(true);
ui->m_date_cb->setDate(QDate::currentDate());
ui->m_date_cb->blockSignals(false);
@@ -657,6 +661,16 @@ void ProjectPrintWindow::loadPageSetupForCurrentPrinter()
settings.endGroup();
}
void ProjectPrintWindow::savePrintProperties()
{
QSettings settings;
exportProperties().toSettings(settings, "print/default");
settings.setValue("print/default/componentinfo", ui->m_component_info_cb->isChecked());
settings.setValue("print/default/fitinpage", ui->m_fit_in_page_cb->isChecked());
settings.setValue("print/default/fullpage", ui->m_use_full_page_cb->isChecked());
settings.sync();
}
void ProjectPrintWindow::savePageSetupForCurrentPrinter()
{
QSettings settings;
@@ -842,6 +856,7 @@ void ProjectPrintWindow::print()
// is created/destroyed inside that call
savePageSetupForCurrentPrinter();
savePrintProperties();
if (isPdf && !pdfFile.isEmpty()) {
// Defer post-processing and window close to the next event-loop
+1
View File
@@ -91,6 +91,7 @@ class ProjectPrintWindow : public QMainWindow
void setUpDiagramList();
QString settingsSectionName(const QPrinter *printer);
void loadPageSetupForCurrentPrinter();
void savePrintProperties();
void savePageSetupForCurrentPrinter();
void saveReloadDiagramParameters(Diagram *diagram, const ExportProperties &options, bool save);
QList<Diagram *> selectedDiagram() const;