diff --git a/src/app/puzzle/puzzle.pri b/src/app/puzzle/puzzle.pri index 9df2bc733..d4be14864 100644 --- a/src/app/puzzle/puzzle.pri +++ b/src/app/puzzle/puzzle.pri @@ -13,6 +13,7 @@ SOURCES += \ $$PWD/vpcarrouselpiecelist.cpp \ $$PWD/vpcommandline.cpp \ $$PWD/vpcommands.cpp \ + $$PWD/vpexporter.cpp \ $$PWD/vpgraphicspiece.cpp \ $$PWD/vpgraphicssheet.cpp \ $$PWD/vpgraphicstilegrid.cpp \ @@ -43,6 +44,7 @@ HEADERS += \ $$PWD/vpcarrouselpiecelist.h \ $$PWD/vpcommandline.h \ $$PWD/vpcommands.h \ + $$PWD/vpexporter.h \ $$PWD/vpgraphicspiece.h \ $$PWD/vpgraphicssheet.h \ $$PWD/vpgraphicstilegrid.h \ diff --git a/src/app/puzzle/puzzle.pro b/src/app/puzzle/puzzle.pro index b77dc420f..71ccbcc54 100644 --- a/src/app/puzzle/puzzle.pro +++ b/src/app/puzzle/puzzle.pro @@ -260,6 +260,24 @@ DEPENDPATH += $$PWD/../../libs/vgeometry win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vgeometry/$${DESTDIR}/vgeometry.lib else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vgeometry/$${DESTDIR}/libvgeometry.a +# VObj static library +unix|win32: LIBS += -L$$OUT_PWD/../../libs/vobj/$${DESTDIR}/ -lvobj + +INCLUDEPATH += $$PWD/../../libs/vobj +DEPENDPATH += $$PWD/../../libs/vobj + +win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vobj/$${DESTDIR}/vobj.lib +else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vobj/$${DESTDIR}/libvobj.a + +# VDxf static library +unix|win32: LIBS += -L$$OUT_PWD/../../libs/vdxf/$${DESTDIR}/ -lvdxf + +INCLUDEPATH += $$PWD/../../libs/vdxf +DEPENDPATH += $$PWD/../../libs/vdxf + +win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vdxf/$${DESTDIR}/vdxf.lib +else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vdxf/$${DESTDIR}/libvdxf.a + # QMuParser library win32:CONFIG(release, debug|release): LIBS += -L$${OUT_PWD}/../../libs/qmuparser/$${DESTDIR} -lqmuparser2 else:win32:CONFIG(debug, debug|release): LIBS += -L$${OUT_PWD}/../../libs/qmuparser/$${DESTDIR} -lqmuparser2 diff --git a/src/app/puzzle/vpexporter.cpp b/src/app/puzzle/vpexporter.cpp new file mode 100644 index 000000000..60c72d366 --- /dev/null +++ b/src/app/puzzle/vpexporter.cpp @@ -0,0 +1,147 @@ +#include "vpexporter.h" + +#include +#include + +#include "../vwidgets/vmaingraphicsscene.h" +#include "vpsheet.h" +#include "vpmaingraphicsview.h" +#include "../vobj/vobjpaintdevice.h" +#include "../vdxf/vdxfpaintdevice.h" + + +//--------------------------------------------------------------------------------------------------------------------- +VPExporter::VPExporter() +{ + +} + +//--------------------------------------------------------------------------------------------------------------------- +VPExporter::~VPExporter() +{ + +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPExporter::Export(VPLayout* layout, LayoutExportFormats format, VPMainGraphicsView *mainGraphicsView) +{ + QString dir = QDir::homePath(); + QString filters(ExportFormatDescription(format)); + + // is it ok to have a null ptr hier as a parent? + QString fileName = QFileDialog::getSaveFileName(nullptr, tr("Save as"), + dir + QLatin1String("/") + layout->GetFocusedSheet()->GetName() + ExportFormatSuffix(format), + filters, nullptr +#ifdef Q_OS_LINUX + , QFileDialog::DontUseNativeDialog +#endif + ); + + if(not fileName.isEmpty()) + { + mainGraphicsView->PrepareForExport(); + + SetFileName(fileName); + + QSizeF size = QSizeF(layout->GetFocusedSheet()->GetSheetSize()); + if(layout->GetFocusedSheet()->GetOrientation() == PageOrientation::Landscape) + { + size.transpose(); + } + const QRectF rect = QRectF(0, 0, size.width(), size.height()); + + SetImageRect(rect); + + switch(format) + { + case LayoutExportFormats::SVG: + ExportToSVG(mainGraphicsView->scene()); + break; + + case LayoutExportFormats::PDF: + ExportToPDF(mainGraphicsView->scene()); + break; + + case LayoutExportFormats::TIF: + ExportToTIF(mainGraphicsView->scene()); + break; + + case LayoutExportFormats::OBJ: + ExportToOBJ(mainGraphicsView->scene()); + break; + + case LayoutExportFormats::PS: + ExportToPS(mainGraphicsView->scene()); + break; + + case LayoutExportFormats::EPS: + ExportToEPS(mainGraphicsView->scene()); + break; + + default: + // just for test purpuses, to be removed: + QMessageBox msgBox; + msgBox.setText(QString("TODO VPExporter, Handling for format %1 is still missing.").arg(ExportFormatDescription(format))); + int ret = msgBox.exec(); + Q_UNUSED(ret); + break; + } + + mainGraphicsView->CleanAfterExport(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector > VPExporter::InitFormats() +{ + QVector> list; + + auto InitFormat = [&list](LayoutExportFormats format) + { + list.append(std::make_pair(ExportFormatDescription(format), format)); + }; + + InitFormat(LayoutExportFormats::SVG); + InitFormat(LayoutExportFormats::PDF); +// InitFormat(LayoutExportFormats::PNG); + InitFormat(LayoutExportFormats::TIF); + + InitFormat(LayoutExportFormats::OBJ); + + InitFormat(LayoutExportFormats::PS); + InitFormat(LayoutExportFormats::EPS); + + InitFormat(LayoutExportFormats::DXF_AC1006_Flat); +/* InitFormat(LayoutExportFormats::DXF_AC1009_Flat); + InitFormat(LayoutExportFormats::DXF_AC1012_Flat); + InitFormat(LayoutExportFormats::DXF_AC1014_Flat); + InitFormat(LayoutExportFormats::DXF_AC1015_Flat); + InitFormat(LayoutExportFormats::DXF_AC1018_Flat); + InitFormat(LayoutExportFormats::DXF_AC1021_Flat); + InitFormat(LayoutExportFormats::DXF_AC1024_Flat); + InitFormat(LayoutExportFormats::DXF_AC1027_Flat); + InitFormat(LayoutExportFormats::DXF_AC1006_AAMA); + InitFormat(LayoutExportFormats::DXF_AC1009_AAMA); + InitFormat(LayoutExportFormats::DXF_AC1012_AAMA); + InitFormat(LayoutExportFormats::DXF_AC1014_AAMA); + InitFormat(LayoutExportFormats::DXF_AC1015_AAMA); + InitFormat(LayoutExportFormats::DXF_AC1018_AAMA); + InitFormat(LayoutExportFormats::DXF_AC1021_AAMA); + InitFormat(LayoutExportFormats::DXF_AC1024_AAMA); + InitFormat(LayoutExportFormats::DXF_AC1027_AAMA); + InitFormat(LayoutExportFormats::DXF_AC1006_ASTM); + InitFormat(LayoutExportFormats::DXF_AC1009_ASTM); + InitFormat(LayoutExportFormats::DXF_AC1012_ASTM); + InitFormat(LayoutExportFormats::DXF_AC1014_ASTM); + InitFormat(LayoutExportFormats::DXF_AC1015_ASTM); + InitFormat(LayoutExportFormats::DXF_AC1018_ASTM); + InitFormat(LayoutExportFormats::DXF_AC1021_ASTM); + InitFormat(LayoutExportFormats::DXF_AC1024_ASTM); + InitFormat(LayoutExportFormats::DXF_AC1027_ASTM);*/ + +// InitFormat(LayoutExportFormats::PDFTiled); +// InitFormat(LayoutExportFormats::NC); +// InitFormat(LayoutExportFormats::RLD); + + return list; +} diff --git a/src/app/puzzle/vpexporter.h b/src/app/puzzle/vpexporter.h new file mode 100644 index 000000000..6e87a2aa7 --- /dev/null +++ b/src/app/puzzle/vpexporter.h @@ -0,0 +1,32 @@ +#ifndef VPEXPORTER_H +#define VPEXPORTER_H + +#include + +#include "vplayout.h" +#include "../vmisc/def.h" +#include "vcommonsettings.h" +#include "../vlayout/vlayoutdef.h" +#include "../vlayout/vlayoutexporter.h" + +//#include "../dialogs/dialogsavelayout.h" + +class VPMainGraphicsView; + +class VPExporter : VLayoutExporter +{ +public: + VPExporter(); + ~VPExporter(); + + void Export(VPLayout* layout, LayoutExportFormats format, VPMainGraphicsView *mainGraphicsView); + + /** + * @brief InitFormats + * @return returns the list of formats, that we can export in puzzle + */ + QVector > InitFormats(); + +}; + +#endif // VPEXPORTER_H diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 314edbe80..e66656b9b 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -100,7 +100,7 @@ VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : // init status bar statusBar()->addPermanentWidget(m_statusLabel, 1); - + SetupMenu(); InitProperties(); InitCarrousel(); @@ -488,6 +488,14 @@ void VPMainWindow::InitPropertyTabCurrentSheet() ui->comboBoxSheetTemplate->blockSignals(false); ui->comboBoxSheetTemplate->setCurrentIndex(0); + + // ---------------------- export format -------------------------- + + VPExporter exporter; + for (auto &v : exporter.InitFormats()) + { + ui->comboBoxSheetExportFormat->addItem(v.first, QVariant(static_cast(v.second))); + } } //--------------------------------------------------------------------------------------------------------------------- @@ -1604,8 +1612,6 @@ void VPMainWindow::on_checkBoxTilesShowTiles_toggled(bool checked) //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::on_pushButtonTilesExport_clicked() { - // svg export to do some test for the first test - QString dir = QDir::homePath(); QString filters(tr("PDF Files") + QLatin1String("(*.pdf)")); QString fileName = QFileDialog::getSaveFileName(this, tr("Save as"), @@ -1674,45 +1680,10 @@ void VPMainWindow::on_checkBoxSheetStickyEdges_toggled(bool checked) //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::on_pushButtonSheetExport_clicked() { - // svg export to do some test for the first test - - QString dir = QDir::homePath(); - QString filters(tr("SVG Files") + QLatin1String("(*.svg)")); - QString fileName = QFileDialog::getSaveFileName(this, tr("Save as"), - dir + QLatin1String("/") + m_layout->GetFocusedSheet()->GetName() + QLatin1String(".svg"), - filters, nullptr -#ifdef Q_OS_LINUX - , QFileDialog::DontUseNativeDialog -#endif - ); - - if(not fileName.isEmpty()) - { - m_graphicsView->PrepareForExport(); - - const QSizeF s = m_layout->GetFocusedSheet()->GetSheetSize(); - const QRectF r = QRectF(0, 0, s.width(), s.height()); - - QSvgGenerator generator; - generator.setFileName(fileName); - generator.setSize(QSize(qFloor(s.width()),qFloor(s.height()))); - generator.setViewBox(r); - generator.setTitle(m_layout->GetFocusedSheet()->GetName()); - generator.setDescription(m_layout->GetDescription().toHtmlEscaped()); - generator.setResolution(static_cast(PrintDPI)); - - QPainter painter; - painter.begin(&generator); - painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(QPen(Qt::black, VPApplication::VApp()->Settings()->WidthHairLine(), Qt::SolidLine, Qt::RoundCap, - Qt::RoundJoin)); - painter.setBrush ( QBrush ( Qt::NoBrush ) ); - m_graphicsView->GetScene()->render(&painter, r, r, Qt::IgnoreAspectRatio); - painter.end(); - - m_graphicsView->CleanAfterExport(); - } + LayoutExportFormats format = static_cast(ui->comboBoxSheetExportFormat->currentData().toInt()); + VPExporter exporter; + exporter.Export(m_layout, format, m_graphicsView); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index 4fce42e92..e43cb833b 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -40,6 +40,7 @@ #include "vppiece.h" #include "../vlayout/vlayoutpiece.h" #include "vptilefactory.h" +#include "vpexporter.h" #include "vpcommandline.h" #include "../vlayout/vlayoutdef.h" #include "../vwidgets/vabstractmainwindow.h" @@ -105,7 +106,7 @@ protected: virtual void changeEvent(QEvent* event) override; virtual QStringList RecentFileList() const override; -private slots: + private slots: /** * @brief on_actionOpen_triggered When the menu action File > Open is * triggered. diff --git a/src/app/puzzle/vpmainwindow.ui b/src/app/puzzle/vpmainwindow.ui index bc329c0b6..8f7fdea5c 100644 --- a/src/app/puzzle/vpmainwindow.ui +++ b/src/app/puzzle/vpmainwindow.ui @@ -668,7 +668,7 @@ 0 - 0 + -153 342 870 @@ -934,7 +934,11 @@ - + + + 1000.000000000000000 + + @@ -944,7 +948,11 @@ - + + + 1000.000000000000000 + + diff --git a/src/app/valentina/dialogs/dialogsavelayout.cpp b/src/app/valentina/dialogs/dialogsavelayout.cpp index d4e472e72..61f2ec1c2 100644 --- a/src/app/valentina/dialogs/dialogsavelayout.cpp +++ b/src/app/valentina/dialogs/dialogsavelayout.cpp @@ -349,151 +349,6 @@ Draw DialogSaveLayout::Mode() const return m_mode; } -//--------------------------------------------------------------------------------------------------------------------- -QString DialogSaveLayout::ExportFormatDescription(LayoutExportFormats format) -{ - const QString dxfSuffix = QStringLiteral("(*.dxf)"); - const QString dxfFlatFilesStr = tr("(flat) files"); - const QString filesStr = tr("files"); - - switch(format) - { - case LayoutExportFormats::SVG: - return QStringLiteral("Svg %1 (*.svg)").arg(filesStr); - case LayoutExportFormats::PDF: - return QStringLiteral("PDF %1 (*.pdf)").arg(filesStr); - case LayoutExportFormats::PNG: - return tr("Image files") + QStringLiteral(" (*.png)"); - case LayoutExportFormats::OBJ: - return QStringLiteral("Wavefront OBJ (*.obj)"); - case LayoutExportFormats::PS: - return QStringLiteral("PS %1 (*.ps)").arg(filesStr); - case LayoutExportFormats::EPS: - return QStringLiteral("EPS %1 (*.eps)").arg(filesStr); - case LayoutExportFormats::DXF_AC1006_Flat: - return QStringLiteral("AutoCAD DXF R10 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1009_Flat: - return QStringLiteral("AutoCAD DXF R11/12 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1012_Flat: - return QStringLiteral("AutoCAD DXF R13 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1014_Flat: - return QStringLiteral("AutoCAD DXF R14 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1015_Flat: - return QStringLiteral("AutoCAD DXF 2000 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1018_Flat: - return QStringLiteral("AutoCAD DXF 2004 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1021_Flat: - return QStringLiteral("AutoCAD DXF 2007 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1024_Flat: - return QStringLiteral("AutoCAD DXF 2010 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1027_Flat: - return QStringLiteral("AutoCAD DXF 2013 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1006_AAMA: - return QStringLiteral("AutoCAD DXF R10 AAMA %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1009_AAMA: - return QStringLiteral("AutoCAD DXF R11/12 AAMA %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1012_AAMA: - return QStringLiteral("AutoCAD DXF R13 AAMA %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1014_AAMA: - return QStringLiteral("AutoCAD DXF R14 AAMA %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1015_AAMA: - return QStringLiteral("AutoCAD DXF 2000 AAMA %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1018_AAMA: - return QStringLiteral("AutoCAD DXF 2004 AAMA %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1021_AAMA: - return QStringLiteral("AutoCAD DXF 2007 AAMA %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1024_AAMA: - return QStringLiteral("AutoCAD DXF 2010 AAMA %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1027_AAMA: - return QStringLiteral("AutoCAD DXF 2013 AAMA %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1006_ASTM: - return QStringLiteral("AutoCAD DXF R10 ASTM %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1009_ASTM: - return QStringLiteral("AutoCAD DXF R11/12 ASTM %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1012_ASTM: - return QStringLiteral("AutoCAD DXF R13 ASTM %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1014_ASTM: - return QStringLiteral("AutoCAD DXF R14 ASTM %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1015_ASTM: - return QStringLiteral("AutoCAD DXF 2000 ASTM %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1018_ASTM: - return QStringLiteral("AutoCAD DXF 2004 ASTM %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1021_ASTM: - return QStringLiteral("AutoCAD DXF 2007 ASTM %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1024_ASTM: - return QStringLiteral("AutoCAD DXF 2010 ASTM %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::DXF_AC1027_ASTM: - return QStringLiteral("AutoCAD DXF 2013 ASTM %1 %2").arg(filesStr, dxfSuffix); - case LayoutExportFormats::PDFTiled: - return QStringLiteral("PDF %1 %2 (*.pdf)").arg(tr("tiled"), filesStr); - case LayoutExportFormats::NC: - return QStringLiteral("%1 %2 (*.nc)").arg(tr("Numerical control"), filesStr); - case LayoutExportFormats::RLD: - return QStringLiteral("%1 %2 (*.rld)").arg(tr("Raw Layout Data"), filesStr); - case LayoutExportFormats::TIF: - return QStringLiteral("TIFF %1 (*.tif)").arg(filesStr); - default: - return QString(); - } -} - -//--------------------------------------------------------------------------------------------------------------------- -QString DialogSaveLayout::ExportFormatSuffix(LayoutExportFormats format) -{ - switch(format) - { - case LayoutExportFormats::SVG: - return QStringLiteral(".svg"); - case LayoutExportFormats::PDF: - case LayoutExportFormats::PDFTiled: - return QStringLiteral(".pdf"); - case LayoutExportFormats::PNG: - return QStringLiteral(".png"); - case LayoutExportFormats::OBJ: - return QStringLiteral(".obj"); - case LayoutExportFormats::PS: - return QStringLiteral(".ps"); - case LayoutExportFormats::EPS: - return QStringLiteral(".eps"); - case LayoutExportFormats::DXF_AC1006_Flat: - case LayoutExportFormats::DXF_AC1009_Flat: - case LayoutExportFormats::DXF_AC1012_Flat: - case LayoutExportFormats::DXF_AC1014_Flat: - case LayoutExportFormats::DXF_AC1015_Flat: - case LayoutExportFormats::DXF_AC1018_Flat: - case LayoutExportFormats::DXF_AC1021_Flat: - case LayoutExportFormats::DXF_AC1024_Flat: - case LayoutExportFormats::DXF_AC1027_Flat: - case LayoutExportFormats::DXF_AC1006_AAMA: - case LayoutExportFormats::DXF_AC1009_AAMA: - case LayoutExportFormats::DXF_AC1012_AAMA: - case LayoutExportFormats::DXF_AC1014_AAMA: - case LayoutExportFormats::DXF_AC1015_AAMA: - case LayoutExportFormats::DXF_AC1018_AAMA: - case LayoutExportFormats::DXF_AC1021_AAMA: - case LayoutExportFormats::DXF_AC1024_AAMA: - case LayoutExportFormats::DXF_AC1027_AAMA: - case LayoutExportFormats::DXF_AC1006_ASTM: - case LayoutExportFormats::DXF_AC1009_ASTM: - case LayoutExportFormats::DXF_AC1012_ASTM: - case LayoutExportFormats::DXF_AC1014_ASTM: - case LayoutExportFormats::DXF_AC1015_ASTM: - case LayoutExportFormats::DXF_AC1018_ASTM: - case LayoutExportFormats::DXF_AC1021_ASTM: - case LayoutExportFormats::DXF_AC1024_ASTM: - case LayoutExportFormats::DXF_AC1027_ASTM: - return QStringLiteral(".dxf"); - case LayoutExportFormats::NC: - return QStringLiteral(".nc"); - case LayoutExportFormats::RLD: - return QStringLiteral(".rld"); - case LayoutExportFormats::TIF: - return QStringLiteral(".tif"); - default: - return QString(); - } -} - //--------------------------------------------------------------------------------------------------------------------- DialogSaveLayout::~DialogSaveLayout() { @@ -525,7 +380,7 @@ void DialogSaveLayout::Save() for (int i=0; i < count; ++i) { - const QString name = Path()+'/'+FileName()+QString::number(i+1)+ExportFormatSuffix(Format()); + const QString name = Path()+'/'+FileName()+QString::number(i+1)+VLayoutExporter::ExportFormatSuffix(Format()); if (QFile::exists(name)) { QMessageBox::StandardButton res = QMessageBox::question(this, tr("Name conflict"), @@ -573,7 +428,7 @@ void DialogSaveLayout::PathChanged(const QString &text) void DialogSaveLayout::ShowExample() { const LayoutExportFormats currentFormat = Format(); - ui->labelExample->setText(tr("Example:") + FileName() + QLatin1Char('1') + ExportFormatSuffix(currentFormat)); + ui->labelExample->setText(tr("Example:") + FileName() + QLatin1Char('1') + VLayoutExporter::ExportFormatSuffix(currentFormat)); ui->checkBoxBinaryDXF->setEnabled(false); ui->groupBoxPaperFormat->setEnabled(false); @@ -822,7 +677,7 @@ QVector > DialogSaveLayout::InitFormats( auto InitFormat = [&list](LayoutExportFormats format) { - list.append(std::make_pair(ExportFormatDescription(format), format)); + list.append(std::make_pair(VLayoutExporter::ExportFormatDescription(format), format)); }; InitFormat(LayoutExportFormats::SVG); diff --git a/src/app/valentina/dialogs/dialogsavelayout.h b/src/app/valentina/dialogs/dialogsavelayout.h index 4eaafc775..9c4950f17 100644 --- a/src/app/valentina/dialogs/dialogsavelayout.h +++ b/src/app/valentina/dialogs/dialogsavelayout.h @@ -61,9 +61,6 @@ public: Draw Mode() const; - static QString ExportFormatDescription(LayoutExportFormats format); - static QString ExportFormatSuffix(LayoutExportFormats format); - bool IsTextAsPaths() const; void SetTextAsPaths(bool textAsPaths); diff --git a/src/app/valentina/mainwindowsnogui.cpp b/src/app/valentina/mainwindowsnogui.cpp index be4b57485..ef3794c3e 100644 --- a/src/app/valentina/mainwindowsnogui.cpp +++ b/src/app/valentina/mainwindowsnogui.cpp @@ -514,7 +514,7 @@ void MainWindowsNoGUI::ExportData(const QVector &listDetails) for (int i = 0; i < detailsOnLayout.size(); ++i) { const QString name = m_dialogSaveLayout->Path() + '/' + m_dialogSaveLayout->FileName() + - QString::number(i+1) + DialogSaveLayout::ExportFormatSuffix(m_dialogSaveLayout->Format()); + QString::number(i+1) + VLayoutExporter::ExportFormatSuffix(m_dialogSaveLayout->Format()); QGraphicsRectItem *paper = qgraphicsitem_cast( m_layoutSettings->LayoutPapers().at(i)); @@ -827,7 +827,7 @@ void MainWindowsNoGUI::ExportDetailsAsApparelLayout(QVector listDe } const QString name = m_dialogSaveLayout->Path() + '/' + m_dialogSaveLayout->FileName() + - QString::number(1) + DialogSaveLayout::ExportFormatSuffix(m_dialogSaveLayout->Format()); + QString::number(1) + VLayoutExporter::ExportFormatSuffix(m_dialogSaveLayout->Format()); ExportApparelLayout(listDetails, name, rect.size()); } @@ -1110,7 +1110,7 @@ void MainWindowsNoGUI::ExportScene(const QList &scenes, if (paper != nullptr) { const QString name = m_dialogSaveLayout->Path() + '/' + m_dialogSaveLayout->FileName() + - QString::number(i+1) + DialogSaveLayout::ExportFormatSuffix(m_dialogSaveLayout->Format()); + QString::number(i+1) + VLayoutExporter::ExportFormatSuffix(m_dialogSaveLayout->Format()); auto *brush = new QBrush(); brush->setColor( QColor( Qt::white ) ); QGraphicsScene *scene = scenes.at(i); diff --git a/src/libs/vlayout/vlayoutexporter.cpp b/src/libs/vlayout/vlayoutexporter.cpp index 4d9248f60..ca99c2aff 100644 --- a/src/libs/vlayout/vlayoutexporter.cpp +++ b/src/libs/vlayout/vlayoutexporter.cpp @@ -433,3 +433,149 @@ void VLayoutExporter::PdfToPs(const QStringList ¶ms) qCritical() << qUtf8Printable(tr("Creating file '%1' failed! %2").arg(params.last(), proc.errorString())); } } + + +//--------------------------------------------------------------------------------------------------------------------- +QString VLayoutExporter::ExportFormatDescription(LayoutExportFormats format) +{ + const QString dxfSuffix = QStringLiteral("(*.dxf)"); + const QString dxfFlatFilesStr = tr("(flat) files"); + const QString filesStr = tr("files"); + + switch(format) + { + case LayoutExportFormats::SVG: + return QStringLiteral("Svg %1 (*.svg)").arg(filesStr); + case LayoutExportFormats::PDF: + return QStringLiteral("PDF %1 (*.pdf)").arg(filesStr); + case LayoutExportFormats::PNG: + return tr("Image files") + QStringLiteral(" (*.png)"); + case LayoutExportFormats::OBJ: + return QStringLiteral("Wavefront OBJ (*.obj)"); + case LayoutExportFormats::PS: + return QStringLiteral("PS %1 (*.ps)").arg(filesStr); + case LayoutExportFormats::EPS: + return QStringLiteral("EPS %1 (*.eps)").arg(filesStr); + case LayoutExportFormats::DXF_AC1006_Flat: + return QStringLiteral("AutoCAD DXF R10 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1009_Flat: + return QStringLiteral("AutoCAD DXF R11/12 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1012_Flat: + return QStringLiteral("AutoCAD DXF R13 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1014_Flat: + return QStringLiteral("AutoCAD DXF R14 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1015_Flat: + return QStringLiteral("AutoCAD DXF 2000 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1018_Flat: + return QStringLiteral("AutoCAD DXF 2004 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1021_Flat: + return QStringLiteral("AutoCAD DXF 2007 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1024_Flat: + return QStringLiteral("AutoCAD DXF 2010 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1027_Flat: + return QStringLiteral("AutoCAD DXF 2013 %1 %2").arg(dxfFlatFilesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1006_AAMA: + return QStringLiteral("AutoCAD DXF R10 AAMA %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1009_AAMA: + return QStringLiteral("AutoCAD DXF R11/12 AAMA %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1012_AAMA: + return QStringLiteral("AutoCAD DXF R13 AAMA %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1014_AAMA: + return QStringLiteral("AutoCAD DXF R14 AAMA %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1015_AAMA: + return QStringLiteral("AutoCAD DXF 2000 AAMA %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1018_AAMA: + return QStringLiteral("AutoCAD DXF 2004 AAMA %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1021_AAMA: + return QStringLiteral("AutoCAD DXF 2007 AAMA %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1024_AAMA: + return QStringLiteral("AutoCAD DXF 2010 AAMA %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1027_AAMA: + return QStringLiteral("AutoCAD DXF 2013 AAMA %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1006_ASTM: + return QStringLiteral("AutoCAD DXF R10 ASTM %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1009_ASTM: + return QStringLiteral("AutoCAD DXF R11/12 ASTM %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1012_ASTM: + return QStringLiteral("AutoCAD DXF R13 ASTM %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1014_ASTM: + return QStringLiteral("AutoCAD DXF R14 ASTM %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1015_ASTM: + return QStringLiteral("AutoCAD DXF 2000 ASTM %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1018_ASTM: + return QStringLiteral("AutoCAD DXF 2004 ASTM %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1021_ASTM: + return QStringLiteral("AutoCAD DXF 2007 ASTM %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1024_ASTM: + return QStringLiteral("AutoCAD DXF 2010 ASTM %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::DXF_AC1027_ASTM: + return QStringLiteral("AutoCAD DXF 2013 ASTM %1 %2").arg(filesStr, dxfSuffix); + case LayoutExportFormats::PDFTiled: + return QStringLiteral("PDF %1 %2 (*.pdf)").arg(tr("tiled"), filesStr); + case LayoutExportFormats::NC: + return QStringLiteral("%1 %2 (*.nc)").arg(tr("Numerical control"), filesStr); + case LayoutExportFormats::RLD: + return QStringLiteral("%1 %2 (*.rld)").arg(tr("Raw Layout Data"), filesStr); + case LayoutExportFormats::TIF: + return QStringLiteral("TIFF %1 (*.tif)").arg(filesStr); + default: + return QString(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +QString VLayoutExporter::ExportFormatSuffix(LayoutExportFormats format) +{ + switch(format) + { + case LayoutExportFormats::SVG: + return QStringLiteral(".svg"); + case LayoutExportFormats::PDF: + case LayoutExportFormats::PDFTiled: + return QStringLiteral(".pdf"); + case LayoutExportFormats::PNG: + return QStringLiteral(".png"); + case LayoutExportFormats::OBJ: + return QStringLiteral(".obj"); + case LayoutExportFormats::PS: + return QStringLiteral(".ps"); + case LayoutExportFormats::EPS: + return QStringLiteral(".eps"); + case LayoutExportFormats::DXF_AC1006_Flat: + case LayoutExportFormats::DXF_AC1009_Flat: + case LayoutExportFormats::DXF_AC1012_Flat: + case LayoutExportFormats::DXF_AC1014_Flat: + case LayoutExportFormats::DXF_AC1015_Flat: + case LayoutExportFormats::DXF_AC1018_Flat: + case LayoutExportFormats::DXF_AC1021_Flat: + case LayoutExportFormats::DXF_AC1024_Flat: + case LayoutExportFormats::DXF_AC1027_Flat: + case LayoutExportFormats::DXF_AC1006_AAMA: + case LayoutExportFormats::DXF_AC1009_AAMA: + case LayoutExportFormats::DXF_AC1012_AAMA: + case LayoutExportFormats::DXF_AC1014_AAMA: + case LayoutExportFormats::DXF_AC1015_AAMA: + case LayoutExportFormats::DXF_AC1018_AAMA: + case LayoutExportFormats::DXF_AC1021_AAMA: + case LayoutExportFormats::DXF_AC1024_AAMA: + case LayoutExportFormats::DXF_AC1027_AAMA: + case LayoutExportFormats::DXF_AC1006_ASTM: + case LayoutExportFormats::DXF_AC1009_ASTM: + case LayoutExportFormats::DXF_AC1012_ASTM: + case LayoutExportFormats::DXF_AC1014_ASTM: + case LayoutExportFormats::DXF_AC1015_ASTM: + case LayoutExportFormats::DXF_AC1018_ASTM: + case LayoutExportFormats::DXF_AC1021_ASTM: + case LayoutExportFormats::DXF_AC1024_ASTM: + case LayoutExportFormats::DXF_AC1027_ASTM: + return QStringLiteral(".dxf"); + case LayoutExportFormats::NC: + return QStringLiteral(".nc"); + case LayoutExportFormats::RLD: + return QStringLiteral(".rld"); + case LayoutExportFormats::TIF: + return QStringLiteral(".tif"); + default: + return QString(); + } +} diff --git a/src/libs/vlayout/vlayoutexporter.h b/src/libs/vlayout/vlayoutexporter.h index 5952cae93..439f56b95 100644 --- a/src/libs/vlayout/vlayoutexporter.h +++ b/src/libs/vlayout/vlayoutexporter.h @@ -34,6 +34,8 @@ #include #include +#include "../vlayout/vlayoutdef.h" + class QGraphicsScene; class QGraphicsItem; class VLayoutPiece; @@ -91,6 +93,9 @@ public: static auto SupportPDFConversion() -> bool; + static QString ExportFormatDescription(LayoutExportFormats format); + static QString ExportFormatSuffix(LayoutExportFormats format); + private: QString m_fileName{}; QMarginsF m_margins{};