Button export with test svg export

This commit is contained in:
Ronan Le Tiec 2020-11-14 12:37:43 +01:00
parent 491d5848b4
commit f6e5f67159
7 changed files with 104 additions and 11 deletions

View File

@ -7,7 +7,7 @@
# File with common stuff for whole project # File with common stuff for whole project
include(../../../common.pri) include(../../../common.pri)
QT += core gui widgets network xml xmlpatterns printsupport concurrent QT += core gui widgets network xml svg xmlpatterns printsupport concurrent
# Name of binary file # Name of binary file
TARGET = puzzle TARGET = puzzle

View File

@ -55,12 +55,18 @@ void VPGraphicsSheet::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
painter->setPen(pen); painter->setPen(pen);
painter->setBrush(noBrush); painter->setBrush(noBrush);
painter->drawRect(GetMarginsRect()); if(m_showMargin)
{
painter->drawRect(GetMarginsRect());
}
pen.setColor(Qt::black); if(m_showBorder)
{
pen.setColor(Qt::black);
painter->setPen(pen); painter->setPen(pen);
painter->drawRect(GetSheetRect()); painter->drawRect(GetSheetRect());
}
m_boundingRect = GetSheetRect(); m_boundingRect = GetSheetRect();
} }
@ -96,6 +102,18 @@ QRectF VPGraphicsSheet::GetMarginsRect() const
return rect; return rect;
} }
//---------------------------------------------------------------------------------------------------------------------
void VPGraphicsSheet::SetShowMargin(bool value)
{
m_showMargin = value;
}
//---------------------------------------------------------------------------------------------------------------------
void VPGraphicsSheet::SetShowBorder(bool value)
{
m_showBorder = value;
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QRectF VPGraphicsSheet::boundingRect() const QRectF VPGraphicsSheet::boundingRect() const

View File

@ -47,12 +47,28 @@ public:
QRectF GetSheetRect() const; QRectF GetSheetRect() const;
QRectF GetMarginsRect() const; QRectF GetMarginsRect() const;
/**
* @brief ShowMargin Sets Wether we see the margin
* @param value true to show the margin
*/
void SetShowMargin(bool value);
/**
* @brief ShowBorder Sets whether we see the border of the sheet
* @param value true to show the border
*/
void SetShowBorder(bool value);
private: private:
Q_DISABLE_COPY(VPGraphicsSheet) Q_DISABLE_COPY(VPGraphicsSheet)
VPSheet *m_sheet{nullptr}; VPSheet *m_sheet{nullptr};
QRectF m_boundingRect; QRectF m_boundingRect;
bool m_showMargin{true};
bool m_showBorder{true};
}; };
#endif // VPGRAPHICSSHEET_H #endif // VPGRAPHICSSHEET_H

View File

@ -80,6 +80,24 @@ VMainGraphicsScene* VPMainGraphicsView::GetScene()
return m_scene; return m_scene;
} }
//---------------------------------------------------------------------------------------------------------------------
void VPMainGraphicsView::PrepareForExport()
{
m_graphicsSheet->SetShowBorder(false);
m_graphicsSheet->SetShowMargin(false);
RefreshLayout();
}
//---------------------------------------------------------------------------------------------------------------------
void VPMainGraphicsView::CleanAfterExport()
{
m_graphicsSheet->SetShowBorder(true);
m_graphicsSheet->SetShowMargin(true);
RefreshLayout();
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPMainGraphicsView::dragEnterEvent(QDragEnterEvent *event) void VPMainGraphicsView::dragEnterEvent(QDragEnterEvent *event)
{ {

View File

@ -55,6 +55,16 @@ public:
*/ */
VMainGraphicsScene* GetScene(); VMainGraphicsScene* GetScene();
/**
* @brief PrepareForExport prepares the graphic for an export (i.e hide margin etc)
*/
void PrepareForExport();
/**
* @brief CleanAfterExport cleans the graphic for an export (i.e show margin etc)
*/
void CleanAfterExport();
protected: protected:
void dragEnterEvent(QDragEnterEvent *event) override; void dragEnterEvent(QDragEnterEvent *event) override;

View File

@ -45,6 +45,7 @@
#include "vpsheet.h" #include "vpsheet.h"
#include <QLoggingCategory> #include <QLoggingCategory>
#include <QtSvg>
QT_WARNING_PUSH QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes") QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
@ -993,14 +994,42 @@ void VPMainWindow::on_checkBoxSheetStickyEdges_toggled(bool checked)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPMainWindow::on_pushButtonSheetExport_clicked() void VPMainWindow::on_pushButtonSheetExport_clicked()
{ {
// just for test purpuses, to be removed: m_graphicsView->PrepareForExport();
QMessageBox msgBox;
msgBox.setText("TODO VPMainWindow::on_pushButtonSheetExport_clicked");
int ret = msgBox.exec();
Q_UNUSED(ret); // svg export to do some test for the first test
// TODO QString dir = QDir::homePath();
QString filters(tr("SVG Files") + QLatin1String("(*.svg)"));
QString fileName = QFileDialog::getSaveFileName(this, tr("Save as"),
dir + QLatin1String("/") + tr("Layout") + QLatin1String(".svg"),
filters, nullptr
#ifdef Q_OS_LINUX
, QFileDialog::DontUseNativeDialog
#endif
);
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(tr("Pattern"));
generator.setDescription(m_layout->GetDescription().toHtmlEscaped());
generator.setResolution(static_cast<int>(PrintDPI));
QPainter painter;
painter.begin(&generator);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, qApp->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();
} }

View File

@ -40,6 +40,7 @@
#include "vppiece.h" #include "vppiece.h"
#include "../vlayout/vlayoutpiece.h" #include "../vlayout/vlayoutpiece.h"
#include "vpcommandline.h" #include "vpcommandline.h"
#include "../vlayout/vlayoutdef.h"
namespace Ui namespace Ui
{ {
@ -216,6 +217,7 @@ private:
bool MaybeSave(); bool MaybeSave();
private slots: private slots:
/** /**
* @brief on_actionOpen_triggered When the menu action File > Open is * @brief on_actionOpen_triggered When the menu action File > Open is