From 11c77e40997430a83eb26f8db56cb3ec17ce2218 Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Mon, 3 Feb 2025 17:34:14 +0100 Subject: [PATCH] TechDraw: Export with default filename (#19033) * TechDraw: Export with default filename * TechDraw: templates consistent drawing_number/revision_index --- src/Mod/TechDraw/Gui/MDIViewPage.cpp | 48 +++++++++++++------ src/Mod/TechDraw/Gui/MDIViewPage.h | 1 + .../A0_Landscape_ISO5457_minimal.svg | 2 +- .../A1_Landscape_ISO5457_minimal.svg | 2 +- .../A2_Landscape_ISO5457_minimal.svg | 2 +- .../A3_Landscape_ISO5457_minimal.svg | 2 +- .../TechDraw/Templates/A3_Landscape_TD.svg | 2 +- .../A4_Landscape_ISO5457_minimal.svg | 2 +- .../Templates/A4_Portrait_ISO5457_minimal.svg | 2 +- .../TechDraw/Templates/ANSIA_Landscape.svg | 4 +- src/Mod/TechDraw/Templates/ANSIA_Portrait.svg | 4 +- src/Mod/TechDraw/Templates/ANSIB.svg | 4 +- .../TechDraw/Templates/ANSIB_Landscape.svg | 4 +- src/Mod/TechDraw/Templates/ANSIB_Portrait.svg | 4 +- .../TechDraw/Templates/ANSIC_Landscape.svg | 2 +- .../TechDraw/Templates/Arch_A_Landscape.svg | 2 +- .../TechDraw/Templates/Arch_A_Portrait.svg | 2 +- .../TechDraw/Templates/Arch_B_Landscape.svg | 2 +- .../TechDraw/Templates/Arch_B_Portrait.svg | 2 +- .../TechDraw/Templates/Arch_C_Landscape.svg | 2 +- .../TechDraw/Templates/Arch_C_Portrait.svg | 2 +- .../TechDraw/Templates/Arch_D_Landscape.svg | 2 +- .../TechDraw/Templates/Arch_D_Portrait.svg | 2 +- .../TechDraw/Templates/Arch_E1_Landscape.svg | 2 +- .../TechDraw/Templates/Arch_E1_Portrait.svg | 2 +- .../TechDraw/Templates/Arch_E2_Landscape.svg | 2 +- .../TechDraw/Templates/Arch_E2_Portrait.svg | 2 +- .../TechDraw/Templates/Arch_E3_Landscape.svg | 2 +- .../TechDraw/Templates/Arch_E3_Portrait.svg | 2 +- .../TechDraw/Templates/Arch_E_Landscape.svg | 2 +- .../TechDraw/Templates/Arch_E_Portrait.svg | 2 +- .../ISO 5457/ISO7200_titleblock_1_minimal.svg | 2 +- .../ISO 5457/ISO7200_titleblock_2.svg | 2 +- .../ISO 5457/ISO7200_titleblock_4.svg | 2 +- .../ISO 5457/ISO7200_titleblock_5_maximal.svg | 2 +- .../TechDraw/Templates/USLetter_Landscape.svg | 4 +- .../ca/A1_Landscape_ISO5457_minimal.svg | 2 +- .../ca/A2_Landscape_ISO5457_minimal.svg | 2 +- 38 files changed, 76 insertions(+), 57 deletions(-) diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index 4944e89635..4246b971bf 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -457,6 +457,22 @@ void MDIViewPage::viewAll() m_vpPage->getQGVPage()->fitInView(m_scene->itemsBoundingRect(), Qt::KeepAspectRatio); } +QString MDIViewPage::defaultFileName() +{ + const std::string separator{"_"}; + + auto doc = getPage()->getDocument(); + std::string docLabel{doc->Label.getValue()}; + std::string pageLabel{getPage()->Label.getValue()}; + auto pageTemplate = dynamic_cast(getPage()->Template.getValue()); + auto textMap = pageTemplate->EditableTexts.getValues(); + auto drawingNumber = textMap["drawing_number"]; + auto revision = textMap["revision_index"]; + auto defaultName = docLabel + separator + pageLabel + separator + drawingNumber + separator + revision; + + return QString::fromStdString(defaultName); +} + void MDIViewPage::saveSVG(std::string filename) { auto vpp = getViewProviderPage(); @@ -474,7 +490,7 @@ void MDIViewPage::saveSVG() filter << QObject::tr("All Files (*.*)"); QString fn = Gui::FileDialog::getSaveFileName(Gui::getMainWindow(), QObject::tr("Export page as SVG"), - QString(), filter.join(QLatin1String(";;"))); + defaultFileName(), filter.join(QLatin1String(";;"))); if (fn.isEmpty()) { return; } @@ -490,15 +506,16 @@ void MDIViewPage::saveDXF(std::string filename) void MDIViewPage::saveDXF() { - QString defaultDir; - QString fileName = Gui::FileDialog::getSaveFileName( - Gui::getMainWindow(), QString::fromUtf8(QT_TR_NOOP("Save DXF file")), defaultDir, - QString::fromUtf8("DXF (*.dxf)")); - if (fileName.isEmpty()) { + QStringList filter; + filter << QStringLiteral("DXF (*.dxf)"); + filter << QObject::tr("All Files (*.*)"); + QString fn = + Gui::FileDialog::getSaveFileName(Gui::getMainWindow(), QObject::tr("Export page as DXF"), + defaultFileName(), filter.join(QLatin1String(";;"))); + if (fn.isEmpty()) { return; } - - std::string sFileName = fileName.toUtf8().constData(); + std::string sFileName = fn.toUtf8().constData(); saveDXF(sFileName); } @@ -513,15 +530,16 @@ void MDIViewPage::savePDF(std::string filename) void MDIViewPage::savePDF() { - QString defaultDir; - QString fileName = Gui::FileDialog::getSaveFileName( - Gui::getMainWindow(), QString::fromUtf8(QT_TR_NOOP("Save PDF file")), defaultDir, - QString::fromUtf8("PDF (*.pdf)")); - if (fileName.isEmpty()) { + QStringList filter; + filter << QStringLiteral("PDF (*.pdf)"); + filter << QObject::tr("All Files (*.*)"); + QString fn = + Gui::FileDialog::getSaveFileName(Gui::getMainWindow(), QObject::tr("Export page as PDF"), + defaultFileName(), filter.join(QLatin1String(";;"))); + if (fn.isEmpty()) { return; } - - std::string sFileName = fileName.toUtf8().constData(); + std::string sFileName = fn.toUtf8().constData(); savePDF(sFileName); } diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.h b/src/Mod/TechDraw/Gui/MDIViewPage.h index 404347d12c..6843703d4f 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.h +++ b/src/Mod/TechDraw/Gui/MDIViewPage.h @@ -157,6 +157,7 @@ private: QList m_orderedSceneSelection; //items in selection order + QString defaultFileName(); }; class MDIViewPagePy : public Py::PythonExtension diff --git a/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_minimal.svg index 7a82383fd7..1765f2e267 100644 --- a/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_minimal.svg +++ b/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_minimal.svg @@ -237,7 +237,7 @@ - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_minimal.svg index 66f0ca4c3e..3375b0712d 100644 --- a/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_minimal.svg +++ b/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_minimal.svg @@ -190,7 +190,7 @@ - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_minimal.svg index 04bc82b06e..2f9f994195 100644 --- a/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_minimal.svg +++ b/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_minimal.svg @@ -157,7 +157,7 @@ - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_minimal.svg index f6b95768f5..0dfff42a26 100644 --- a/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_minimal.svg +++ b/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_minimal.svg @@ -133,7 +133,7 @@ - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/A3_Landscape_TD.svg b/src/Mod/TechDraw/Templates/A3_Landscape_TD.svg index cf981c1026..28d639ad68 100644 --- a/src/Mod/TechDraw/Templates/A3_Landscape_TD.svg +++ b/src/Mod/TechDraw/Templates/A3_Landscape_TD.svg @@ -901,7 +901,7 @@ x="266.50964" y="278.57715" style="line-height:0%" - freecad:editable="DrawingNumber">NUMBER - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_minimal.svg index 617dc8a078..91c3486856 100644 --- a/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_minimal.svg +++ b/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_minimal.svg @@ -108,7 +108,7 @@ - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/ANSIA_Landscape.svg b/src/Mod/TechDraw/Templates/ANSIA_Landscape.svg index c9eba5a968..5f2d7f9f61 100644 --- a/src/Mod/TechDraw/Templates/ANSIA_Landscape.svg +++ b/src/Mod/TechDraw/Templates/ANSIA_Landscape.svg @@ -52,8 +52,8 @@ Drawing Title 1 Drawing Title 2 Drawing Title 3 - Drawing Number - Rev + Drawing Number + Rev Drawn By Checked By Approved 1 diff --git a/src/Mod/TechDraw/Templates/ANSIA_Portrait.svg b/src/Mod/TechDraw/Templates/ANSIA_Portrait.svg index 6147891942..729b023d5b 100644 --- a/src/Mod/TechDraw/Templates/ANSIA_Portrait.svg +++ b/src/Mod/TechDraw/Templates/ANSIA_Portrait.svg @@ -40,8 +40,8 @@ Drawing Title 1 Drawing Title 2 Drawing Title 3 - Drawing Number - Rev + Drawing Number + Rev Drawn By Checked By Approved 1 diff --git a/src/Mod/TechDraw/Templates/ANSIB.svg b/src/Mod/TechDraw/Templates/ANSIB.svg index 82190e68e5..0c1ec5dd12 100644 --- a/src/Mod/TechDraw/Templates/ANSIB.svg +++ b/src/Mod/TechDraw/Templates/ANSIB.svg @@ -605,7 +605,7 @@ stroke-width="1px" word-spacing="0px" style="line-height:0%;text-decoration-line:none;text-indent:0;text-transform:none" - freecad:editable="DrawingNumber">Drawing Number @@ -620,7 +620,7 @@ stroke-width="1px" word-spacing="0px" style="line-height:0%;text-decoration-line:none;text-indent:0;text-transform:none" - freecad:editable="Revision">Rev diff --git a/src/Mod/TechDraw/Templates/ANSIB_Landscape.svg b/src/Mod/TechDraw/Templates/ANSIB_Landscape.svg index 979fdfb462..7e07608f5f 100644 --- a/src/Mod/TechDraw/Templates/ANSIB_Landscape.svg +++ b/src/Mod/TechDraw/Templates/ANSIB_Landscape.svg @@ -548,7 +548,7 @@ stroke-width="1px" word-spacing="0px" style="line-height:0%;text-decoration-line:none;text-indent:0;text-transform:none" - freecad:editable="DrawingNumber">Drawing Number @@ -564,7 +564,7 @@ stroke-width="1px" word-spacing="0px" style="line-height:0%;text-decoration-line:none;text-indent:0;text-transform:none" - freecad:editable="Revision">Rev diff --git a/src/Mod/TechDraw/Templates/ANSIB_Portrait.svg b/src/Mod/TechDraw/Templates/ANSIB_Portrait.svg index b37751f001..4d12b5bac6 100644 --- a/src/Mod/TechDraw/Templates/ANSIB_Portrait.svg +++ b/src/Mod/TechDraw/Templates/ANSIB_Portrait.svg @@ -398,7 +398,7 @@ stroke-width="1px" word-spacing="0px" style="line-height:0%;text-decoration-line:none;text-indent:0;text-transform:none" - freecad:editable="DrawingNumber">Drawing Number @@ -414,7 +414,7 @@ stroke-width="1px" word-spacing="0px" style="line-height:0%;text-decoration-line:none;text-indent:0;text-transform:none" - freecad:editable="Revision">Rev diff --git a/src/Mod/TechDraw/Templates/ANSIC_Landscape.svg b/src/Mod/TechDraw/Templates/ANSIC_Landscape.svg index cfd64e69f3..784dd7a7e3 100644 --- a/src/Mod/TechDraw/Templates/ANSIC_Landscape.svg +++ b/src/Mod/TechDraw/Templates/ANSIC_Landscape.svg @@ -321,7 +321,7 @@ ANSI C SCALE WEIGHT - NUMBER + NUMBER SHEET TITLE SUBTITLE diff --git a/src/Mod/TechDraw/Templates/Arch_A_Landscape.svg b/src/Mod/TechDraw/Templates/Arch_A_Landscape.svg index 1704829275..3d726e2f8b 100644 --- a/src/Mod/TechDraw/Templates/Arch_A_Landscape.svg +++ b/src/Mod/TechDraw/Templates/Arch_A_Landscape.svg @@ -1239,7 +1239,7 @@ stroke-width=".054953" word-spacing="0px" style="line-height:125%" - freecad:editable="DrawingNumber"> - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_2.svg b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_2.svg index 831835b595..02596c93ac 100644 --- a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_2.svg +++ b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_2.svg @@ -61,7 +61,7 @@ - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_4.svg b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_4.svg index 1b66171c6e..4102e6ebfb 100644 --- a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_4.svg +++ b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_4.svg @@ -67,7 +67,7 @@ - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_5_maximal.svg b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_5_maximal.svg index 681bea4ac2..0c40a6d417 100644 --- a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_5_maximal.svg +++ b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_5_maximal.svg @@ -78,7 +78,7 @@ - DN + DN AAA YYYY-MM-DD X / Y diff --git a/src/Mod/TechDraw/Templates/USLetter_Landscape.svg b/src/Mod/TechDraw/Templates/USLetter_Landscape.svg index 310f48cd99..1c825f67d2 100644 --- a/src/Mod/TechDraw/Templates/USLetter_Landscape.svg +++ b/src/Mod/TechDraw/Templates/USLetter_Landscape.svg @@ -586,7 +586,7 @@ stroke-width="1px" word-spacing="0px" style="line-height:0%;text-decoration-line:none;text-indent:0;text-transform:none" - freecad:editable="DrawingNumber">X / Y ND