From 5b97c6ec4518d600d83fb16539a97e37a0903564 Mon Sep 17 00:00:00 2001 From: Onetchou <83351185+Onetchou@users.noreply.github.com> Date: Sun, 22 Sep 2024 14:54:37 +0200 Subject: [PATCH 1/7] feat: custom SVG generator able to create a single SVG from multiple scenes, each scene being in a different group in the svg --- src/app/seamly2d/mainwindowsnogui.cpp | 19 +-- src/libs/vformat/svg_generator.cpp | 182 ++++++++++++++++++++++++++ src/libs/vformat/svg_generator.h | 59 +++++++++ src/libs/vformat/vformat.pri | 2 + src/libs/vformat/vformat.pro | 2 +- 5 files changed, 248 insertions(+), 16 deletions(-) create mode 100644 src/libs/vformat/svg_generator.cpp create mode 100644 src/libs/vformat/svg_generator.h diff --git a/src/app/seamly2d/mainwindowsnogui.cpp b/src/app/seamly2d/mainwindowsnogui.cpp index 60fb75ecb14e..faee4e545d71 100644 --- a/src/app/seamly2d/mainwindowsnogui.cpp +++ b/src/app/seamly2d/mainwindowsnogui.cpp @@ -67,6 +67,7 @@ #include "../vpatterndb/measurements_def.h" #include "../vtools/tools/vabstracttool.h" #include "../vtools/tools/pattern_piece_tool.h" +#include "../../libs/vformat/svg_generator.h" #include #include @@ -888,21 +889,9 @@ QList MainWindowsNoGUI::CreateScenes(const QListrect().size().toSize()); - generator.setViewBox(paper->rect()); - generator.setTitle(tr("Pattern")); - generator.setDescription(doc->GetDescription()); - generator.setResolution(static_cast(PrintDPI)); - QPainter painter; - painter.begin(&generator); - painter.setFont( QFont( "Arial", 8, QFont::Normal ) ); - painter.setRenderHint(QPainter::Antialiasing, true); - //painter.setPen(QPen(Qt::black, widthHairLine, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); - painter.setBrush ( QBrush ( Qt::NoBrush ) ); - scene->render(&painter, paper->rect(), paper->rect(), Qt::IgnoreAspectRatio); - painter.end(); + SvgGenerator svgGenerator(paper, name, doc->GetDescription(), static_cast(PrintDPI)); + svgGenerator.addSvgFromScene(scene); + svgGenerator.generate(); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vformat/svg_generator.cpp b/src/libs/vformat/svg_generator.cpp new file mode 100644 index 000000000000..09426b1f0985 --- /dev/null +++ b/src/libs/vformat/svg_generator.cpp @@ -0,0 +1,182 @@ +/****************************************************************************** + ** @file svg_generator.cpp + ** @author Evans PERRET + ** @date September 21, 2024 + ** + ** @brief + ** @copyright + ** This source code is part of the Seamly2D project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Seamly2D is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Seamly2D. If not, see . + ** + *****************************************************************************/ + +#include "svg_generator.h" +#include +#include +#include +#include +#include +#include +#include + +SvgGenerator::SvgGenerator(QGraphicsRectItem *paper, QString name, QString description, int resolution): + m_svgCounter(0), + m_paper(paper), + m_filepath(name), + m_description(description), + m_resolution(resolution), + m_tempSvgPrefix("tempSvg") +{ + QFileInfo fileInfo(m_filepath); + m_folderPath = fileInfo.absolutePath(); + m_name = fileInfo.baseName(); + m_tempSvgFolderName = m_tempSvgPrefix + "_" + m_name; +} + + +bool SvgGenerator::loadSvgIntoDom(QDomDocument &domDocument, const QString &filePath) +{ + QFile file(filePath); + if (!file.open(QIODevice::ReadOnly)) { + qDebug() << "Error : Impossible to open the SVG file :" << filePath; + return false; + } + if (!domDocument.setContent(&file)) { + qDebug() << "Error : Impossible to load the SVG content in the QDomDocument."; + file.close(); + return false; + } + file.close(); + return true; +} + +QDomDocument SvgGenerator::mergeSvgDoms(const QList &domList) +{ + /*domList contains DOM representations of multiple SVG + Assuming each svg contains a main group containing every graphical item of the svg, + this function adds to the first svg of the list all the main groups of the other svgs, + thus creating a single svg with each svg of the list in it, every svg being in its own group. + This function is used in order to create svgs containing groups*/ + + if (domList.isEmpty()) { + qDebug() << "Error : the SVG list is empty"; + return QDomDocument(); + } + + QDomDocument mergedSvg = domList.at(0); + + QDomElement mergedSvgRoot = mergedSvg.documentElement(); + if (mergedSvgRoot.tagName() != "svg") { + qDebug() << "Error : the first SVG does not contain a tag."; + return QDomDocument(); + } + + for (int i = 1; i < domList.size(); ++i) { + QDomDocument domSvg = domList.at(i); + QDomElement svgRoot = domSvg.documentElement(); + if (svgRoot.tagName() != "svg") { + qDebug() << "Error : the SVG does not contain a tag."; + return QDomDocument(); + } + QDomNodeList svgGroups = svgRoot.elementsByTagName("g"); + if (svgGroups.isEmpty()) { + qDebug() << "Error : the SVG does not contain a tag."; + return QDomDocument(); + } + QDomElement mainGroup = svgGroups.at(0).toElement(); + mergedSvgRoot.appendChild(mainGroup); + } + + return mergedSvg; +} + +void SvgGenerator::addSvgFromScene(QGraphicsScene *scene) +{ + m_svgCounter++; + + QSvgGenerator svgGenerator; + svgGenerator.setFileName(getTempFilePath(m_svgCounter)); + svgGenerator.setSize(m_paper->rect().size().toSize()); + svgGenerator.setViewBox(m_paper->rect()); + svgGenerator.setTitle(QObject::tr("Pattern")); + svgGenerator.setDescription(m_description); + svgGenerator.setResolution(m_resolution); + + QPainter painter; + painter.begin(&svgGenerator); + painter.setFont( QFont( "Arial", 8, QFont::Normal ) ); + painter.setRenderHint(QPainter::Antialiasing, true); + painter.setBrush ( QBrush ( Qt::NoBrush ) ); + scene->render(&painter, m_paper->rect(), m_paper->rect(), Qt::IgnoreAspectRatio); + painter.end(); +} + + +void SvgGenerator::generate() +{ + QList domList; + + for(int i = 1; i <= m_svgCounter; i++) + { + QDomDocument domDoc; + QString path = getTempFilePath(i); + QFile file(path); + if (!file.exists()) { + qDebug() << "Error : the SVG file does not exist."; + continue; + } + loadSvgIntoDom(domDoc, path); + domList.append(domDoc); + + if (!file.remove()) { + qDebug() << "Error : unable to remove " << path; + } + } + + QDomDocument mergedSvg = mergeSvgDoms(domList); + + QFile outputFile(m_filepath); + if (!outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) { + qDebug() << "Error : Couldn't write the output file."; + } + + QTextStream stream(&outputFile); + stream << mergedSvg.toString(); + outputFile.close(); + + QDir dir(m_folderPath); + if(!dir.rmdir(m_tempSvgFolderName)) + { + qDebug() << "Error : Couldn't remove the temp SVG folder."; + } + + qDebug() << "Merged SVG Generated!"; +} + + +QString SvgGenerator::getTempFilePath(int id) +{ + QDir dir(m_folderPath); + if (!dir.cd(m_tempSvgFolderName)) + { + dir.mkdir(m_tempSvgFolderName); + dir.cd(m_tempSvgFolderName); + } + + return dir.path() + "/" + m_tempSvgPrefix + "_" + m_name + "_" + QString::number(id) + ".svg"; +} diff --git a/src/libs/vformat/svg_generator.h b/src/libs/vformat/svg_generator.h new file mode 100644 index 000000000000..3f4885f58fb5 --- /dev/null +++ b/src/libs/vformat/svg_generator.h @@ -0,0 +1,59 @@ +/****************************************************************************** + ** @file svg_generator.h + ** @author Evans PERRET + ** @date September 21, 2024 + ** + ** @brief + ** @copyright + ** This source code is part of the Seamly2D project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Seamly2D is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Seamly2D. If not, see . + ** + *****************************************************************************/ + +#ifndef SVG_GENERATOR_H +#define SVG_GENERATOR_H + +#include +#include + + +class SvgGenerator +{ +public: + SvgGenerator(QGraphicsRectItem *paper, QString name, QString description, int resolution); + void addSvgFromScene(QGraphicsScene *scene); + void generate(); + + +private: + bool loadSvgIntoDom(QDomDocument &domDocument, const QString &filePath); + QDomDocument mergeSvgDoms(const QList &domList); + QString getTempFilePath(int id); + + int m_svgCounter; + QGraphicsRectItem *m_paper; + QString m_filepath; + QString m_folderPath; + QString m_name; + QString m_description; + int m_resolution; + QString m_tempSvgFolderName; + QString m_tempSvgPrefix; +}; + +#endif // SVG_GENERATOR_H diff --git a/src/libs/vformat/vformat.pri b/src/libs/vformat/vformat.pri index 3ef170718dbd..638628538b9b 100644 --- a/src/libs/vformat/vformat.pri +++ b/src/libs/vformat/vformat.pri @@ -3,6 +3,7 @@ SOURCES += \ $$PWD/measurements.cpp \ + $$PWD/svg_generator.cpp \ $$PWD/vlabeltemplate.cpp *msvc*:SOURCES += $$PWD/stable.cpp @@ -10,4 +11,5 @@ SOURCES += \ HEADERS += \ $$PWD/measurements.h \ $$PWD/stable.h \ + $$PWD/svg_generator.h \ $$PWD/vlabeltemplate.h diff --git a/src/libs/vformat/vformat.pro b/src/libs/vformat/vformat.pro index a9601fdc9fbc..78040d50989b 100644 --- a/src/libs/vformat/vformat.pro +++ b/src/libs/vformat/vformat.pro @@ -9,7 +9,7 @@ message("Entering vformat.pro") include(../../../common.pri) # Library work with xml. -QT += xml xmlpatterns printsupport +QT += xml xmlpatterns printsupport svg # We don't need gui library. QT -= gui From 7c26ef0df6c92d6cd155bd3ee8ff85fa48f4dc4c Mon Sep 17 00:00:00 2001 From: Onetchou <83351185+Onetchou@users.noreply.github.com> Date: Sun, 22 Sep 2024 17:14:17 +0200 Subject: [PATCH 2/7] feat: pieces are in separated groups when exporting svgs --- src/app/seamly2d/mainwindowsnogui.cpp | 16 +++++++++++++++- src/app/seamly2d/mainwindowsnogui.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/app/seamly2d/mainwindowsnogui.cpp b/src/app/seamly2d/mainwindowsnogui.cpp index faee4e545d71..98a4abf185fd 100644 --- a/src/app/seamly2d/mainwindowsnogui.cpp +++ b/src/app/seamly2d/mainwindowsnogui.cpp @@ -894,6 +894,20 @@ void MainWindowsNoGUI::exportSVG(const QString &name, QGraphicsRectItem *paper, svgGenerator.generate(); } +void MainWindowsNoGUI::exportSVG(const QString &name, QGraphicsRectItem *paper, const QList &pieces) const +{ + SvgGenerator svgGenerator(paper, name, doc->GetDescription(), static_cast(PrintDPI)); + + for (int pieceNb=0; pieceNbaddItem(pieces.at(pieceNb)); + svgGenerator.addSvgFromScene(scene); + } + + svgGenerator.generate(); +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief exportPNG save layout to png file. @@ -1622,7 +1636,7 @@ void MainWindowsNoGUI::ExportScene(const ExportLayoutDialog &dialog, const QList { case LayoutExportFormat::SVG: paper->setVisible(false); - exportSVG(name, paper, scene); + exportSVG(name, paper, pieces.at(i)); paper->setVisible(true); break; case LayoutExportFormat::PDF: diff --git a/src/app/seamly2d/mainwindowsnogui.h b/src/app/seamly2d/mainwindowsnogui.h index ab3248037d48..ab58f0544ecd 100644 --- a/src/app/seamly2d/mainwindowsnogui.h +++ b/src/app/seamly2d/mainwindowsnogui.h @@ -84,6 +84,7 @@ public slots: void refreshGrainLines(); void refreshSeamAllowances(); void exportSVG(const QString &name, QGraphicsRectItem *paper, QGraphicsScene *scene)const; + void exportSVG(const QString &name, QGraphicsRectItem *paper, const QList &pieces)const; void exportPNG(const QString &name, QGraphicsScene *scene)const; void exportTIF(const QString &name, QGraphicsScene *scene)const; void exportJPG(const QString &name, QGraphicsScene *scene)const; From a39ae32fec0c8a96e08e2893ce8444fca58cdbcb Mon Sep 17 00:00:00 2001 From: Onetchou <83351185+Onetchou@users.noreply.github.com> Date: Sat, 28 Sep 2024 12:30:29 +0200 Subject: [PATCH 3/7] feat: svg generator does not use temp files anymore --- src/libs/vformat/svg_generator.cpp | 93 ++++++++---------------------- src/libs/vformat/svg_generator.h | 11 +--- 2 files changed, 26 insertions(+), 78 deletions(-) diff --git a/src/libs/vformat/svg_generator.cpp b/src/libs/vformat/svg_generator.cpp index 09426b1f0985..942ac7f99844 100644 --- a/src/libs/vformat/svg_generator.cpp +++ b/src/libs/vformat/svg_generator.cpp @@ -33,52 +33,31 @@ #include #include #include +#include SvgGenerator::SvgGenerator(QGraphicsRectItem *paper, QString name, QString description, int resolution): - m_svgCounter(0), m_paper(paper), m_filepath(name), m_description(description), - m_resolution(resolution), - m_tempSvgPrefix("tempSvg") + m_resolution(resolution) { - QFileInfo fileInfo(m_filepath); - m_folderPath = fileInfo.absolutePath(); - m_name = fileInfo.baseName(); - m_tempSvgFolderName = m_tempSvgPrefix + "_" + m_name; } -bool SvgGenerator::loadSvgIntoDom(QDomDocument &domDocument, const QString &filePath) +QDomDocument SvgGenerator::mergeSvgDoms() { - QFile file(filePath); - if (!file.open(QIODevice::ReadOnly)) { - qDebug() << "Error : Impossible to open the SVG file :" << filePath; - return false; - } - if (!domDocument.setContent(&file)) { - qDebug() << "Error : Impossible to load the SVG content in the QDomDocument."; - file.close(); - return false; - } - file.close(); - return true; -} - -QDomDocument SvgGenerator::mergeSvgDoms(const QList &domList) -{ - /*domList contains DOM representations of multiple SVG + /* m_domList contains DOM representations of multiple SVGs Assuming each svg contains a main group containing every graphical item of the svg, this function adds to the first svg of the list all the main groups of the other svgs, thus creating a single svg with each svg of the list in it, every svg being in its own group. This function is used in order to create svgs containing groups*/ - if (domList.isEmpty()) { + if (m_domList.isEmpty()) { qDebug() << "Error : the SVG list is empty"; return QDomDocument(); } - QDomDocument mergedSvg = domList.at(0); + QDomDocument mergedSvg = m_domList.at(0); QDomElement mergedSvgRoot = mergedSvg.documentElement(); if (mergedSvgRoot.tagName() != "svg") { @@ -86,8 +65,8 @@ QDomDocument SvgGenerator::mergeSvgDoms(const QList &domList) return QDomDocument(); } - for (int i = 1; i < domList.size(); ++i) { - QDomDocument domSvg = domList.at(i); + for (int i = 1; i < m_domList.size(); ++i) { + QDomDocument domSvg = m_domList.at(i); QDomElement svgRoot = domSvg.documentElement(); if (svgRoot.tagName() != "svg") { qDebug() << "Error : the SVG does not contain a tag."; @@ -107,10 +86,12 @@ QDomDocument SvgGenerator::mergeSvgDoms(const QList &domList) void SvgGenerator::addSvgFromScene(QGraphicsScene *scene) { - m_svgCounter++; + QByteArray byteArray; + QBuffer buffer(&byteArray); + buffer.open(QIODevice::WriteOnly); QSvgGenerator svgGenerator; - svgGenerator.setFileName(getTempFilePath(m_svgCounter)); + svgGenerator.setOutputDevice(&buffer); svgGenerator.setSize(m_paper->rect().size().toSize()); svgGenerator.setViewBox(m_paper->rect()); svgGenerator.setTitle(QObject::tr("Pattern")); @@ -124,59 +105,31 @@ void SvgGenerator::addSvgFromScene(QGraphicsScene *scene) painter.setBrush ( QBrush ( Qt::NoBrush ) ); scene->render(&painter, m_paper->rect(), m_paper->rect(), Qt::IgnoreAspectRatio); painter.end(); + + QDomDocument domDoc; + if (domDoc.setContent(byteArray)) { + m_domList.append(domDoc); + } else { + qDebug() << "Error : Impossible to load the SVG content in the QDomDocument."; + } + + buffer.close(); } void SvgGenerator::generate() { - QList domList; - - for(int i = 1; i <= m_svgCounter; i++) - { - QDomDocument domDoc; - QString path = getTempFilePath(i); - QFile file(path); - if (!file.exists()) { - qDebug() << "Error : the SVG file does not exist."; - continue; - } - loadSvgIntoDom(domDoc, path); - domList.append(domDoc); - - if (!file.remove()) { - qDebug() << "Error : unable to remove " << path; - } - } - - QDomDocument mergedSvg = mergeSvgDoms(domList); + QDomDocument mergedSvg = mergeSvgDoms(); QFile outputFile(m_filepath); if (!outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug() << "Error : Couldn't write the output file."; + return; } QTextStream stream(&outputFile); stream << mergedSvg.toString(); outputFile.close(); - QDir dir(m_folderPath); - if(!dir.rmdir(m_tempSvgFolderName)) - { - qDebug() << "Error : Couldn't remove the temp SVG folder."; - } - qDebug() << "Merged SVG Generated!"; } - - -QString SvgGenerator::getTempFilePath(int id) -{ - QDir dir(m_folderPath); - if (!dir.cd(m_tempSvgFolderName)) - { - dir.mkdir(m_tempSvgFolderName); - dir.cd(m_tempSvgFolderName); - } - - return dir.path() + "/" + m_tempSvgPrefix + "_" + m_name + "_" + QString::number(id) + ".svg"; -} diff --git a/src/libs/vformat/svg_generator.h b/src/libs/vformat/svg_generator.h index 3f4885f58fb5..c5872b1d4f7e 100644 --- a/src/libs/vformat/svg_generator.h +++ b/src/libs/vformat/svg_generator.h @@ -41,19 +41,14 @@ class SvgGenerator private: - bool loadSvgIntoDom(QDomDocument &domDocument, const QString &filePath); - QDomDocument mergeSvgDoms(const QList &domList); - QString getTempFilePath(int id); + QDomDocument mergeSvgDoms(); - int m_svgCounter; QGraphicsRectItem *m_paper; QString m_filepath; - QString m_folderPath; - QString m_name; QString m_description; int m_resolution; - QString m_tempSvgFolderName; - QString m_tempSvgPrefix; + + QList m_domList; }; #endif // SVG_GENERATOR_H From 578a7d3cbab45a98fb050d961bd59bab456b631d Mon Sep 17 00:00:00 2001 From: Onetchou <83351185+Onetchou@users.noreply.github.com> Date: Sat, 28 Sep 2024 12:47:01 +0200 Subject: [PATCH 4/7] doc: add comments to the svg generator class --- src/libs/vformat/svg_generator.cpp | 28 +++++++++++++++++++++++----- src/libs/vformat/svg_generator.h | 2 ++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/libs/vformat/svg_generator.cpp b/src/libs/vformat/svg_generator.cpp index 942ac7f99844..812cd5c21bac 100644 --- a/src/libs/vformat/svg_generator.cpp +++ b/src/libs/vformat/svg_generator.cpp @@ -4,6 +4,8 @@ ** @date September 21, 2024 ** ** @brief + ** Custom SVG generator to handle groups in SVGs + ** ** @copyright ** This source code is part of the Seamly2D project, a pattern making ** program, whose allow create and modeling patterns of clothing. @@ -46,11 +48,14 @@ SvgGenerator::SvgGenerator(QGraphicsRectItem *paper, QString name, QString descr QDomDocument SvgGenerator::mergeSvgDoms() { - /* m_domList contains DOM representations of multiple SVGs - Assuming each svg contains a main group containing every graphical item of the svg, - this function adds to the first svg of the list all the main groups of the other svgs, - thus creating a single svg with each svg of the list in it, every svg being in its own group. - This function is used in order to create svgs containing groups*/ + /*@brief Merge all the SVGs in the m_domList list into a single SVG + @return The merged SVG as a DOM document + @details m_domList contains DOM representations of multiple SVGs + Assuming each svg contains a main group containing every graphical item of the svg, + this function adds to the first svg of the list all the main groups of the other svgs, + thus creating a single svg with each svg of the list in it, every svg being in its own group. + This function is used in order to create svgs containing groups + */ if (m_domList.isEmpty()) { qDebug() << "Error : the SVG list is empty"; @@ -86,6 +91,13 @@ QDomDocument SvgGenerator::mergeSvgDoms() void SvgGenerator::addSvgFromScene(QGraphicsScene *scene) { + /*@brief Add a new SVG to the list of SVGs to be merged into a single SVG + @param scene : the scene that must be converted to SVG + @return void + @details This function creates a SVG from the given scene and converts it into + a DOM that is added to the m_domList list of SVGs to be merged. + */ + QByteArray byteArray; QBuffer buffer(&byteArray); buffer.open(QIODevice::WriteOnly); @@ -119,6 +131,12 @@ void SvgGenerator::addSvgFromScene(QGraphicsScene *scene) void SvgGenerator::generate() { + /*@brief Generate the merged SVG where each previously given scene is grouped separately. + @return void + @details This function merges the SVGs of the m_domList list and writes the result + in a file at the path given in the constructor. + */ + QDomDocument mergedSvg = mergeSvgDoms(); QFile outputFile(m_filepath); diff --git a/src/libs/vformat/svg_generator.h b/src/libs/vformat/svg_generator.h index c5872b1d4f7e..dffb446bb86b 100644 --- a/src/libs/vformat/svg_generator.h +++ b/src/libs/vformat/svg_generator.h @@ -4,6 +4,8 @@ ** @date September 21, 2024 ** ** @brief + ** Custom SVG generator to handle groups in SVGs + ** ** @copyright ** This source code is part of the Seamly2D project, a pattern making ** program, whose allow create and modeling patterns of clothing. From e620015f1e3916152f8edd4e97736ac1648b6c23 Mon Sep 17 00:00:00 2001 From: Onetchou <83351185+Onetchou@users.noreply.github.com> Date: Sat, 28 Sep 2024 12:55:07 +0200 Subject: [PATCH 5/7] refactor: remove unused includes --- src/libs/vformat/svg_generator.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/libs/vformat/svg_generator.cpp b/src/libs/vformat/svg_generator.cpp index 812cd5c21bac..b68fa7250add 100644 --- a/src/libs/vformat/svg_generator.cpp +++ b/src/libs/vformat/svg_generator.cpp @@ -29,12 +29,10 @@ #include "svg_generator.h" #include -#include #include #include #include #include -#include #include SvgGenerator::SvgGenerator(QGraphicsRectItem *paper, QString name, QString description, int resolution): From 3688c30aa09545cca5991f8b5d616f9c68c015cb Mon Sep 17 00:00:00 2001 From: Onetchou <83351185+Onetchou@users.noreply.github.com> Date: Tue, 8 Oct 2024 19:25:56 +0200 Subject: [PATCH 6/7] refactor: move comments so they can be parsed with doxygen --- src/libs/vformat/svg_generator.cpp | 50 ++++++++++++++++++------------ 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/src/libs/vformat/svg_generator.cpp b/src/libs/vformat/svg_generator.cpp index b68fa7250add..7e7c9cfc0ec4 100644 --- a/src/libs/vformat/svg_generator.cpp +++ b/src/libs/vformat/svg_generator.cpp @@ -35,6 +35,8 @@ #include #include + +//--------------------------------------------------------------------------------------------------------------------- SvgGenerator::SvgGenerator(QGraphicsRectItem *paper, QString name, QString description, int resolution): m_paper(paper), m_filepath(name), @@ -44,17 +46,18 @@ SvgGenerator::SvgGenerator(QGraphicsRectItem *paper, QString name, QString descr } +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief Merge all the SVGs in the m_domList list into a single SVG + * @return The merged SVG as a DOM document + * @details m_domList contains DOM representations of multiple SVGs + Assuming each svg contains a main group containing every graphical item of the svg, + this function adds to the first svg of the list all the main groups of the other svgs, + thus creating a single svg with each svg of the list in it, every svg being in its own group. + This function is used in order to create svgs containing groups + */ QDomDocument SvgGenerator::mergeSvgDoms() { - /*@brief Merge all the SVGs in the m_domList list into a single SVG - @return The merged SVG as a DOM document - @details m_domList contains DOM representations of multiple SVGs - Assuming each svg contains a main group containing every graphical item of the svg, - this function adds to the first svg of the list all the main groups of the other svgs, - thus creating a single svg with each svg of the list in it, every svg being in its own group. - This function is used in order to create svgs containing groups - */ - if (m_domList.isEmpty()) { qDebug() << "Error : the SVG list is empty"; return QDomDocument(); @@ -87,14 +90,18 @@ QDomDocument SvgGenerator::mergeSvgDoms() return mergedSvg; } + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief Add a new SVG to the list of SVGs to be merged into a single SVG + * @param scene : the scene that must be converted to SVG + * @return void + * @details This function creates a SVG from the given scene and converts it into + a DOM that is added to the m_domList list of SVGs to be merged. +*/ void SvgGenerator::addSvgFromScene(QGraphicsScene *scene) { - /*@brief Add a new SVG to the list of SVGs to be merged into a single SVG - @param scene : the scene that must be converted to SVG - @return void - @details This function creates a SVG from the given scene and converts it into - a DOM that is added to the m_domList list of SVGs to be merged. - */ + QByteArray byteArray; QBuffer buffer(&byteArray); @@ -127,13 +134,16 @@ void SvgGenerator::addSvgFromScene(QGraphicsScene *scene) } +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief Generate the merged SVG where each previously given scene is grouped separately. + * @return void + * @details This function merges the SVGs of the m_domList list and writes the result + in a file at the path given in the constructor. +*/ void SvgGenerator::generate() { - /*@brief Generate the merged SVG where each previously given scene is grouped separately. - @return void - @details This function merges the SVGs of the m_domList list and writes the result - in a file at the path given in the constructor. - */ + QDomDocument mergedSvg = mergeSvgDoms(); From 000cbc394b7f951aaa90b349e100a0d1a0211d4b Mon Sep 17 00:00:00 2001 From: Onetchou <83351185+Onetchou@users.noreply.github.com> Date: Tue, 8 Oct 2024 19:28:22 +0200 Subject: [PATCH 7/7] fix: lupdate --- share/translations/seamly2d_cs_CZ.ts | 32 ++++++--- share/translations/seamly2d_de_DE.ts | 49 ++++++++----- share/translations/seamly2d_el_GR.ts | 32 ++++++--- share/translations/seamly2d_en_CA.ts | 32 ++++++--- share/translations/seamly2d_en_GB.ts | 32 ++++++--- share/translations/seamly2d_en_IN.ts | 32 ++++++--- share/translations/seamly2d_en_US.ts | 32 ++++++--- share/translations/seamly2d_es_ES.ts | 49 ++++++++----- share/translations/seamly2d_fi_FI.ts | 32 ++++++--- share/translations/seamly2d_fr_FR.ts | 32 ++++++--- share/translations/seamly2d_he_IL.ts | 32 ++++++--- share/translations/seamly2d_id_ID.ts | 32 ++++++--- share/translations/seamly2d_it_IT.ts | 32 ++++++--- share/translations/seamly2d_nl_NL.ts | 100 ++++++++++++++++----------- share/translations/seamly2d_pt_BR.ts | 32 ++++++--- share/translations/seamly2d_ro_RO.ts | 32 ++++++--- share/translations/seamly2d_ru_RU.ts | 32 ++++++--- share/translations/seamly2d_uk_UA.ts | 32 ++++++--- share/translations/seamly2d_zh_CN.ts | 32 ++++++--- 19 files changed, 508 insertions(+), 202 deletions(-) diff --git a/share/translations/seamly2d_cs_CZ.ts b/share/translations/seamly2d_cs_CZ.ts index a5f1964399b7..321cf83b0dda 100644 --- a/share/translations/seamly2d_cs_CZ.ts +++ b/share/translations/seamly2d_cs_CZ.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? Opravdu chcete smazat? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7192,10 +7204,6 @@ Chcete uložit své změny? Images - - Open Image File - - Zoom to Point @@ -7352,10 +7360,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Střih - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9879,6 +9883,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + + + + Open Image File + + + + Pattern + Střih + QmuParser diff --git a/share/translations/seamly2d_de_DE.ts b/share/translations/seamly2d_de_DE.ts index 79a904a18020..6b7be41edd58 100644 --- a/share/translations/seamly2d_de_DE.ts +++ b/share/translations/seamly2d_de_DE.ts @@ -4186,7 +4186,7 @@ for writing Date %1 kann nicht zum schreiben geöffnet werden - Unable to get exclusive access to file + Unable to get exclusive access to file %1 Possibly the file is already being downloaded. @@ -4838,6 +4838,18 @@ Possibly the file is already being downloaded. Do you really want to delete? Möchtest Du wirklich löschen? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -5295,7 +5307,8 @@ Das Programm wird WIE ES IST, OHNE GEWÄHRLEISTUNG JEGLICHER ART, EINSCHLIESSLIC Millimeter - Margins go beyond printing. + Margins go beyond printing. + Apply settings anyway? @@ -7199,10 +7212,6 @@ Sollen die Änderungen gespeichert werden? Images Bilder - - Open Image File - Bilddatei öffnen - Zoom to Point Zoom zum Punkt @@ -7368,10 +7377,6 @@ Drücken Sie die Eingabetaste, um ihn vorübergehend in die Liste aufzunehmen.Can't create a path Ein Verzeichnis kann nicht erstellt werden - - Pattern - Schnittmuster - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. Ein oder mehrere Schnittteile sind größer als das ausgewählte Papierformat. Wähle ein größeres. @@ -9896,6 +9901,18 @@ Drücken Sie die Eingabetaste, um ihn vorübergehend in die Liste aufzunehmen.Backward (from end point) Rückwärts (vom Endpunkt) + + Images + Bilder + + + Open Image File + Bilddatei öffnen + + + Pattern + Schnittmuster + QmuParser @@ -10324,13 +10341,13 @@ Drücken Sie die Eingabetaste, um ihn vorübergehend in die Liste aufzunehmen.Zoll - Selects what decimal separator char to use. -When checked the separator for the user's locale is used. + Selects what decimal separator char to use. +When checked the separator for the user's locale is used. When unchecked the period is used. - When checked the Welcome window will not be displayed. + When checked the Welcome window will not be displayed. You can change this setting in the SeamlyMe preferences. @@ -10398,13 +10415,13 @@ You can change this setting in the SeamlyMe preferences. Legt den Klickton für die Knotenauswahl fest. - Selects what decimal separator char to use. -When checked the separator for the user's locale is used. + Selects what decimal separator char to use. +When checked the separator for the user's locale is used. When unchecked the period is used. - When checked the Welcome window will not be displayed. + When checked the Welcome window will not be displayed. You can change this setting in the Seamly2D preferences. diff --git a/share/translations/seamly2d_el_GR.ts b/share/translations/seamly2d_el_GR.ts index 5e8aed930d81..ef5863fadf36 100644 --- a/share/translations/seamly2d_el_GR.ts +++ b/share/translations/seamly2d_el_GR.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? Θέλετε σίγουρα να κάνετε διαγραφή; + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7192,10 +7204,6 @@ Do you want to save your changes? Images Εικόνες - - Open Image File - - Zoom to Point @@ -7352,10 +7360,6 @@ Press enter to temporarily add it to the list. Can't create a path Δεν είναι δυνατή η δημιουργία μονοπατιού - - Pattern - Πατρόν - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9879,6 +9883,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + Εικόνες + + + Open Image File + + + + Pattern + Πατρόν + QmuParser diff --git a/share/translations/seamly2d_en_CA.ts b/share/translations/seamly2d_en_CA.ts index b32a3220431c..ae5b9a759467 100644 --- a/share/translations/seamly2d_en_CA.ts +++ b/share/translations/seamly2d_en_CA.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? Do you really want to delete? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7195,10 +7207,6 @@ Do you want to save your changes? Images Images - - Open Image File - - Zoom to Point @@ -7355,10 +7363,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Pattern - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9882,6 +9886,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + Images + + + Open Image File + + + + Pattern + Pattern + QmuParser diff --git a/share/translations/seamly2d_en_GB.ts b/share/translations/seamly2d_en_GB.ts index 206143f17907..2cb09e667709 100644 --- a/share/translations/seamly2d_en_GB.ts +++ b/share/translations/seamly2d_en_GB.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7195,10 +7207,6 @@ Do you want to save your changes? Images - - Open Image File - - Zoom to Point @@ -7355,10 +7363,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Pattern - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9882,6 +9886,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + + + + Open Image File + + + + Pattern + Pattern + QmuParser diff --git a/share/translations/seamly2d_en_IN.ts b/share/translations/seamly2d_en_IN.ts index 38f95876f29a..6cecd68ba1ac 100644 --- a/share/translations/seamly2d_en_IN.ts +++ b/share/translations/seamly2d_en_IN.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? Do you really want to delete? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7195,10 +7207,6 @@ Do you want to save your changes? Images Images - - Open Image File - - Zoom to Point @@ -7355,10 +7363,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Pattern - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9882,6 +9886,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + Images + + + Open Image File + + + + Pattern + Pattern + QmuParser diff --git a/share/translations/seamly2d_en_US.ts b/share/translations/seamly2d_en_US.ts index 206143f17907..2cb09e667709 100644 --- a/share/translations/seamly2d_en_US.ts +++ b/share/translations/seamly2d_en_US.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7195,10 +7207,6 @@ Do you want to save your changes? Images - - Open Image File - - Zoom to Point @@ -7355,10 +7363,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Pattern - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9882,6 +9886,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + + + + Open Image File + + + + Pattern + Pattern + QmuParser diff --git a/share/translations/seamly2d_es_ES.ts b/share/translations/seamly2d_es_ES.ts index fb5b9375b1a4..701a7ae815df 100644 --- a/share/translations/seamly2d_es_ES.ts +++ b/share/translations/seamly2d_es_ES.ts @@ -4227,7 +4227,7 @@ Do you want to download it? ¿Quiere descargarla? - Unable to get exclusive access to file + Unable to get exclusive access to file %1 Possibly the file is already being downloaded. @@ -4879,6 +4879,18 @@ Possibly the file is already being downloaded. Do you really want to delete? ¿Realmente quiere eliminarlo? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -5336,7 +5348,8 @@ El programa se proporciona TAL CUAL, SIN GARANTÍA DE NINGÚN TIPO, INCLUIDAS LA Ninguno - Margins go beyond printing. + Margins go beyond printing. + Apply settings anyway? @@ -7244,10 +7257,6 @@ Do you want to save your changes? Images Imágenes - - Open Image File - Abrir archivo de imagen - Zoom to Point Zoom al punto @@ -7408,10 +7417,6 @@ Press enter to temporarily add it to the list. Can't create a path No se puede crear un ruta - - Pattern - Patrón - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. Una o más piezas del patrón son más grandes que el formato de papel que seleccionó. Seleccione un formato de papel más grande. @@ -9954,6 +9959,18 @@ actualización: Backward (from end point) Hacia atrás (desde el punto final) + + Images + Imágenes + + + Open Image File + Abrir archivo de imagen + + + Pattern + Patrón + QmuParser @@ -10382,13 +10399,13 @@ actualización: Pulgadas - Selects what decimal separator char to use. -When checked the separator for the user's locale is used. + Selects what decimal separator char to use. +When checked the separator for the user's locale is used. When unchecked the period is used. - When checked the Welcome window will not be displayed. + When checked the Welcome window will not be displayed. You can change this setting in the SeamlyMe preferences. @@ -10456,13 +10473,13 @@ You can change this setting in the SeamlyMe preferences. Establece el sonido del clic de selección del nodo. - Selects what decimal separator char to use. -When checked the separator for the user's locale is used. + Selects what decimal separator char to use. +When checked the separator for the user's locale is used. When unchecked the period is used. - When checked the Welcome window will not be displayed. + When checked the Welcome window will not be displayed. You can change this setting in the Seamly2D preferences. diff --git a/share/translations/seamly2d_fi_FI.ts b/share/translations/seamly2d_fi_FI.ts index e20cd10f1e58..948f43532ace 100644 --- a/share/translations/seamly2d_fi_FI.ts +++ b/share/translations/seamly2d_fi_FI.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? Haluatko todella poistaa? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7192,10 +7204,6 @@ Haluatko tallentaa muutokset? Images - - Open Image File - - Zoom to Point @@ -7352,10 +7360,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Kaava - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9879,6 +9883,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + + + + Open Image File + + + + Pattern + Kaava + QmuParser diff --git a/share/translations/seamly2d_fr_FR.ts b/share/translations/seamly2d_fr_FR.ts index 06bdf7b9fd23..9df3d2f5e963 100644 --- a/share/translations/seamly2d_fr_FR.ts +++ b/share/translations/seamly2d_fr_FR.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? Voulez vous vraiment supprimer? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7195,10 +7207,6 @@ Voulez-vous sauvegarder les changements? Images Images - - Open Image File - - Zoom to Point @@ -7355,10 +7363,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Patron - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9882,6 +9886,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + Images + + + Open Image File + + + + Pattern + Patron + QmuParser diff --git a/share/translations/seamly2d_he_IL.ts b/share/translations/seamly2d_he_IL.ts index 4b7e0ad67b27..e10dcdc5ff30 100644 --- a/share/translations/seamly2d_he_IL.ts +++ b/share/translations/seamly2d_he_IL.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7191,10 +7203,6 @@ Do you want to save your changes? Images - - Open Image File - - Zoom to Point @@ -7351,10 +7359,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9878,6 +9882,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + + + + Open Image File + + + + Pattern + + QmuParser diff --git a/share/translations/seamly2d_id_ID.ts b/share/translations/seamly2d_id_ID.ts index 55f90236cd6a..43832bfe917f 100644 --- a/share/translations/seamly2d_id_ID.ts +++ b/share/translations/seamly2d_id_ID.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7192,10 +7204,6 @@ Apakah anda ingin menyimpan perubahan anda? Images - - Open Image File - - Zoom to Point @@ -7352,10 +7360,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Pola - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9879,6 +9883,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + + + + Open Image File + + + + Pattern + Pola + QmuParser diff --git a/share/translations/seamly2d_it_IT.ts b/share/translations/seamly2d_it_IT.ts index 8cec110f59ae..9eb204054bbb 100644 --- a/share/translations/seamly2d_it_IT.ts +++ b/share/translations/seamly2d_it_IT.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? Vuoi veramente cancellare? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7195,10 +7207,6 @@ Vuoi salvare i cambiamenti? Images Immagini - - Open Image File - - Zoom to Point @@ -7355,10 +7363,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Modello - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9882,6 +9886,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + Immagini + + + Open Image File + + + + Pattern + Modello + QmuParser diff --git a/share/translations/seamly2d_nl_NL.ts b/share/translations/seamly2d_nl_NL.ts index 696a015b349d..984b0c18946c 100644 --- a/share/translations/seamly2d_nl_NL.ts +++ b/share/translations/seamly2d_nl_NL.ts @@ -4170,12 +4170,6 @@ p, li { white-space: pre-wrap; } for writing Kan bestand %1 niet openen voor schrijven - - Unable to get exclusive access to file -%1 -Possibly the file is already being downloaded. - - File download failed: %1. Download bestand mislukt: %1. @@ -4193,6 +4187,12 @@ Possibly the file is already being downloaded. Do you want to download it? Een nieuwe versie %1 is beschikbaar. Wil je het downloaden? + + Unable to get exclusive access to file +%1 +Possibly the file is already being downloaded. + + GroupsWidget @@ -4840,6 +4840,18 @@ Do you want to download it? Do you really want to delete? Wil je dit echt verwijderen? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -5159,12 +5171,6 @@ The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRAN Descending area Kleiner wordend gebied - - Margins go beyond printing. - -Apply settings anyway? - - Centimeters Centimeters @@ -5292,6 +5298,12 @@ Apply settings anyway? Millimeters Millimeters + + Margins go beyond printing. + +Apply settings anyway? + + LineTypeComboBox @@ -7200,10 +7212,6 @@ Wil je de veranderingen opslaan? Images Afbeeldingen - - Open Image File - - Zoom to Point Zoom in op Punt @@ -7360,10 +7368,6 @@ Press enter to temporarily add it to the list. Can't create a path Kan geen pad maken - - Pattern - Patroon - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. Eén of meer patroondelen zijn groter dan het gekozen papierformaat. Selecteer een groter papierformaat. @@ -9887,6 +9891,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + Afbeeldingen + + + Open Image File + + + + Pattern + Patroon + QmuParser @@ -10286,12 +10302,6 @@ Press enter to temporarily add it to the list. Decimal separator: Decimaal scheidingsteken: - - Selects what decimal separator char to use. -When checked the separator for the user's locale is used. -When unchecked the period is used. - - GUI language: GUI taal: @@ -10300,11 +10310,6 @@ When unchecked the period is used. Sets the language used for SeamlyMe. Stelt de taal in die wordt gebruikt voor SeamlyMe. - - When checked the Welcome window will not be displayed. -You can change this setting in the SeamlyMe preferences. - - Do not show again Niet meer weergeven @@ -10325,6 +10330,17 @@ You can change this setting in the SeamlyMe preferences. Inches Inches + + Selects what decimal separator char to use. +When checked the separator for the user's locale is used. +When unchecked the period is used. + + + + When checked the Welcome window will not be displayed. +You can change this setting in the SeamlyMe preferences. + + SeamlyWelcomeDialog @@ -10348,21 +10364,10 @@ You can change this setting in the SeamlyMe preferences. Decimal separator: Decimaal scheidingsteken: - - Selects what decimal separator char to use. -When checked the separator for the user's locale is used. -When unchecked the period is used. - - GUI language: GUI taal: - - When checked the Welcome window will not be displayed. -You can change this setting in the Seamly2D preferences. - - Do not show again Niet meer weergeven @@ -10399,6 +10404,17 @@ You can change this setting in the Seamly2D preferences. Sets the node selection click sound. Stelt het klikgeluid van de knooppuntselectie in. + + Selects what decimal separator char to use. +When checked the separator for the user's locale is used. +When unchecked the period is used. + + + + When checked the Welcome window will not be displayed. +You can change this setting in the Seamly2D preferences. + + SetPieceColor diff --git a/share/translations/seamly2d_pt_BR.ts b/share/translations/seamly2d_pt_BR.ts index d5ed41cb0f06..f451e756066d 100644 --- a/share/translations/seamly2d_pt_BR.ts +++ b/share/translations/seamly2d_pt_BR.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7191,10 +7203,6 @@ Do you want to save your changes? Images Imagens - - Open Image File - - Zoom to Point @@ -7351,10 +7359,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Molde - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9878,6 +9882,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + Imagens + + + Open Image File + + + + Pattern + Molde + QmuParser diff --git a/share/translations/seamly2d_ro_RO.ts b/share/translations/seamly2d_ro_RO.ts index 60dd7a49400a..5b3f5d4c75a3 100644 --- a/share/translations/seamly2d_ro_RO.ts +++ b/share/translations/seamly2d_ro_RO.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7191,10 +7203,6 @@ Do you want to save your changes? Images - - Open Image File - - Zoom to Point @@ -7351,10 +7359,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Model - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9878,6 +9882,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + + + + Open Image File + + + + Pattern + Model + QmuParser diff --git a/share/translations/seamly2d_ru_RU.ts b/share/translations/seamly2d_ru_RU.ts index 2f1aaa726c36..ac4cb6f3540f 100644 --- a/share/translations/seamly2d_ru_RU.ts +++ b/share/translations/seamly2d_ru_RU.ts @@ -4864,6 +4864,18 @@ Do you want to download it? Do you really want to delete? Вы точно хотите удалить? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7220,10 +7232,6 @@ Do you want to save your changes? Images Изображения - - Open Image File - - Zoom to Point Зум до точки @@ -7384,10 +7392,6 @@ Press enter to temporarily add it to the list. Can't create a path Невозможно создать контур - - Pattern - Выкройка - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. Размер одного или нескольких деталей выкройки превышает выбранный вами формат бумаги. Пожалуйста, выберите больший формат бумаги. @@ -9914,6 +9918,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + Изображения + + + Open Image File + + + + Pattern + Выкройка + QmuParser diff --git a/share/translations/seamly2d_uk_UA.ts b/share/translations/seamly2d_uk_UA.ts index 780653bbd2f2..b4861994c8c1 100644 --- a/share/translations/seamly2d_uk_UA.ts +++ b/share/translations/seamly2d_uk_UA.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? Ви дійсно хочете видалити? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7194,10 +7206,6 @@ Do you want to save your changes? Images Зображення - - Open Image File - - Zoom to Point @@ -7354,10 +7362,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - Лекало - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9881,6 +9885,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + Зображення + + + Open Image File + + + + Pattern + Лекало + QmuParser diff --git a/share/translations/seamly2d_zh_CN.ts b/share/translations/seamly2d_zh_CN.ts index 89dfbe247f5c..f631868732e3 100644 --- a/share/translations/seamly2d_zh_CN.ts +++ b/share/translations/seamly2d_zh_CN.ts @@ -4835,6 +4835,18 @@ Do you want to download it? Do you really want to delete? + + The image <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? + + + + Loading image + + + + No image was selected... + + InsertNodesDialog @@ -7191,10 +7203,6 @@ Do you want to save your changes? Images - - Open Image File - - Zoom to Point @@ -7351,10 +7359,6 @@ Press enter to temporarily add it to the list. Can't create a path - - Pattern - 样板 - One or more pattern pieces are bigger than the paper format you selected. Please select a bigger paper format. @@ -9878,6 +9882,18 @@ Press enter to temporarily add it to the list. Backward (from end point) + + Images + + + + Open Image File + + + + Pattern + 样板 + QmuParser