Resolved issue #657. Improve feature: Allow more paper formats for printing
tiled PDF. --HG-- branch : develop
This commit is contained in:
parent
0fb0763191
commit
67b01c0337
|
@ -25,6 +25,7 @@
|
|||
- New math parser function "r2cm". Round to up to 1 decimal.
|
||||
- Two new shortcut sequences: Ctrl+PgDown and Ctrl+PgUp to switch to next and previous pattern piece.
|
||||
- [#765] New feature. Free curve mode.
|
||||
- [#657] Improve feature: Allow more paper formats for printing tiled PDF
|
||||
|
||||
# Version 0.5.1
|
||||
- [#683] Tool Seam allowance's dialog is off screen on small resolutions.
|
||||
|
|
|
@ -92,7 +92,8 @@ void DialogLayoutProgress::Error(const LayoutErrors &state)
|
|||
qCritical() << tr("Couldn't prepare data for creation layout");
|
||||
break;
|
||||
case LayoutErrors::EmptyPaperError:
|
||||
qCritical() << tr("Several workpieces left not arranged, but none of them match for paper");
|
||||
qCritical() << tr("One or more pattern pieces are bigger than the paper format you selected. Please, "
|
||||
"select a bigger paper format.");
|
||||
break;
|
||||
case LayoutErrors::ProcessStoped:
|
||||
default:
|
||||
|
|
|
@ -38,25 +38,12 @@
|
|||
#include <QPushButton>
|
||||
#include <QPrinterInfo>
|
||||
|
||||
//must be the same order as PaperSizeTemplate constants
|
||||
const DialogLayoutSettings::FormatsVector DialogLayoutSettings::pageFormatNames =
|
||||
DialogLayoutSettings::FormatsVector () << QLatin1String("A0")
|
||||
<< QLatin1String("A1")
|
||||
<< QLatin1String("A2")
|
||||
<< QLatin1String("A3")
|
||||
<< QLatin1String("A4")
|
||||
<< QApplication::translate("DialogLayoutSettings", "Letter")
|
||||
<< QApplication::translate("DialogLayoutSettings", "Legal")
|
||||
<< QApplication::translate("DialogLayoutSettings", "Roll 24in")
|
||||
<< QApplication::translate("DialogLayoutSettings", "Roll 30in")
|
||||
<< QApplication::translate("DialogLayoutSettings", "Roll 36in")
|
||||
<< QApplication::translate("DialogLayoutSettings", "Roll 42in")
|
||||
<< QApplication::translate("DialogLayoutSettings", "Roll 44in")
|
||||
<< QApplication::translate("DialogLayoutSettings", "Custom");
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
DialogLayoutSettings::DialogLayoutSettings(VLayoutGenerator *generator, QWidget *parent, bool disableSettings)
|
||||
: QDialog(parent), disableSettings(disableSettings), ui(new Ui::DialogLayoutSettings), oldPaperUnit(Unit::Mm),
|
||||
: VAbstractLayoutDialog(parent),
|
||||
disableSettings(disableSettings),
|
||||
ui(new Ui::DialogLayoutSettings),
|
||||
oldPaperUnit(Unit::Mm),
|
||||
oldLayoutUnit(Unit::Mm), generator(generator), isInitialized(false)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
@ -67,7 +54,7 @@ DialogLayoutSettings::DialogLayoutSettings(VLayoutGenerator *generator, QWidget
|
|||
//even cleanse lists before adding
|
||||
InitPaperUnits();
|
||||
InitLayoutUnits();
|
||||
InitTemplates();
|
||||
InitTemplates(ui->comboBoxTemplates);
|
||||
MinimumPaperSize();
|
||||
MinimumLayoutSize();
|
||||
InitPrinter();
|
||||
|
@ -107,7 +94,7 @@ DialogLayoutSettings::DialogLayoutSettings(VLayoutGenerator *generator, QWidget
|
|||
|
||||
connect(ui->checkBoxIgnoreFileds, &QCheckBox::stateChanged, this, &DialogLayoutSettings::IgnoreAllFields);
|
||||
|
||||
connect(ui->toolButtonPortrate, &QToolButton::toggled, this, &DialogLayoutSettings::Swap);
|
||||
connect(ui->toolButtonPortrait, &QToolButton::toggled, this, &DialogLayoutSettings::Swap);
|
||||
connect(ui->toolButtonLandscape, &QToolButton::toggled, this, &DialogLayoutSettings::Swap);
|
||||
connect(ui->comboBoxLayoutUnit, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||
this, &DialogLayoutSettings::ConvertLayoutSize);
|
||||
|
@ -368,10 +355,12 @@ void DialogLayoutSettings::FindTemplate()
|
|||
const qreal height = ui->doubleSpinBoxPaperHeight->value();
|
||||
QSizeF size(width, height);
|
||||
|
||||
const Unit paperUnit = PaperUnit();
|
||||
|
||||
const int max = static_cast<int>(PaperSizeTemplate::Custom);
|
||||
for (int i=0; i < max; ++i)
|
||||
{
|
||||
const QSizeF tmplSize = TemplateSize(static_cast<PaperSizeTemplate>(i));
|
||||
const QSizeF tmplSize = GetTemplateSize(static_cast<PaperSizeTemplate>(i), paperUnit);
|
||||
if (size == tmplSize)
|
||||
{
|
||||
ui->comboBoxTemplates->blockSignals(true);
|
||||
|
@ -522,9 +511,9 @@ void DialogLayoutSettings::PaperSizeChanged()
|
|||
{
|
||||
if (ui->doubleSpinBoxPaperHeight->value() > ui->doubleSpinBoxPaperWidth->value())
|
||||
{
|
||||
ui->toolButtonPortrate->blockSignals(true);
|
||||
ui->toolButtonPortrate->setChecked(true);
|
||||
ui->toolButtonPortrate->blockSignals(false);
|
||||
ui->toolButtonPortrait->blockSignals(true);
|
||||
ui->toolButtonPortrait->setChecked(true);
|
||||
ui->toolButtonPortrait->blockSignals(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -602,7 +591,7 @@ void DialogLayoutSettings::DialogAccepted()
|
|||
{
|
||||
QMessageBox::StandardButton answer;
|
||||
answer = QMessageBox::question(this, tr("Wrong fields."),
|
||||
tr("Fields go beyond printing. \n\nApply settings anyway?"),
|
||||
tr("Margins go beyond printing. \n\nApply settings anyway?"),
|
||||
QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
|
||||
if (answer == QMessageBox::No)
|
||||
{
|
||||
|
@ -748,31 +737,6 @@ void DialogLayoutSettings::InitLayoutUnits()
|
|||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogLayoutSettings::InitTemplates()
|
||||
{
|
||||
const QIcon icoPaper("://icon/16x16/template.png");
|
||||
const QIcon icoRoll("://icon/16x16/roll.png");
|
||||
const QString pdi = QString("(%1ppi)").arg(PrintDPI);
|
||||
|
||||
auto cntr = static_cast<VIndexType>(PaperSizeTemplate::A0);
|
||||
foreach(const auto& v, pageFormatNames)
|
||||
{
|
||||
if (cntr <= static_cast<int>(PaperSizeTemplate::Legal))
|
||||
{
|
||||
ui->comboBoxTemplates->addItem(icoPaper, v+" "+pdi, QVariant(cntr++));
|
||||
}
|
||||
else if (cntr <= static_cast<int>(PaperSizeTemplate::Roll44in))
|
||||
{
|
||||
ui->comboBoxTemplates->addItem(icoRoll, v+" "+pdi, QVariant(cntr++));
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->comboBoxTemplates->addItem(v+" "+pdi, QVariant(cntr++));
|
||||
}
|
||||
}
|
||||
ui->comboBoxTemplates->setCurrentIndex(-1);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogLayoutSettings::InitPrinter()
|
||||
|
@ -825,13 +789,13 @@ QString DialogLayoutSettings::MakeHelpTemplateList()
|
|||
QString out = "\n";
|
||||
|
||||
auto cntr = static_cast<VIndexType>(PaperSizeTemplate::A0);
|
||||
for (int i = 0; i < pageFormatNames.size(); ++i)
|
||||
for (int i = 0; i < VAbstractLayoutDialog::pageFormatNames.size(); ++i)
|
||||
{
|
||||
if (cntr <= static_cast<int>(PaperSizeTemplate::Roll44in))// Don't include custom template
|
||||
{
|
||||
out += "\t* "+pageFormatNames.at(i)+" = "+ QString::number(cntr++);
|
||||
out += "\t* "+VAbstractLayoutDialog::pageFormatNames.at(i)+" = "+ QString::number(cntr++);
|
||||
|
||||
if (i < pageFormatNames.size() - 1)
|
||||
if (i < VAbstractLayoutDialog::pageFormatNames.size() - 1)
|
||||
{
|
||||
out += ",\n";
|
||||
}
|
||||
|
@ -850,6 +814,8 @@ QSizeF DialogLayoutSettings::Template()
|
|||
PaperSizeTemplate temp;
|
||||
temp = static_cast<PaperSizeTemplate>(ui->comboBoxTemplates->currentData().toInt());
|
||||
|
||||
const Unit paperUnit = PaperUnit();
|
||||
|
||||
switch (temp)
|
||||
{
|
||||
case PaperSizeTemplate::A0:
|
||||
|
@ -859,7 +825,7 @@ QSizeF DialogLayoutSettings::Template()
|
|||
case PaperSizeTemplate::A4:
|
||||
case PaperSizeTemplate::Letter:
|
||||
SetAdditionalOptions(false);
|
||||
return TemplateSize(temp);
|
||||
return GetTemplateSize(temp, paperUnit);
|
||||
case PaperSizeTemplate::Legal:
|
||||
case PaperSizeTemplate::Roll24in:
|
||||
case PaperSizeTemplate::Roll30in:
|
||||
|
@ -867,9 +833,9 @@ QSizeF DialogLayoutSettings::Template()
|
|||
case PaperSizeTemplate::Roll42in:
|
||||
case PaperSizeTemplate::Roll44in:
|
||||
SetAdditionalOptions(true);
|
||||
return TemplateSize(temp);
|
||||
return GetTemplateSize(temp, paperUnit);
|
||||
case PaperSizeTemplate::Custom:
|
||||
return TemplateSize(temp);
|
||||
return GetTemplateSize(temp, paperUnit);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -877,96 +843,24 @@ QSizeF DialogLayoutSettings::Template()
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QSizeF DialogLayoutSettings::TemplateSize(const PaperSizeTemplate &tmpl) const
|
||||
QSizeF DialogLayoutSettings::GetTemplateSize(const PaperSizeTemplate &tmpl, const Unit &unit) const
|
||||
{
|
||||
const Unit paperUnit = PaperUnit();
|
||||
qreal width = 0;
|
||||
qreal height = 0;
|
||||
|
||||
switch (tmpl)
|
||||
{
|
||||
case PaperSizeTemplate::A0:
|
||||
width = UnitConvertor(841, Unit::Mm, paperUnit);
|
||||
height = UnitConvertor(1189, Unit::Mm, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::A1:
|
||||
width = UnitConvertor(594, Unit::Mm, paperUnit);
|
||||
height = UnitConvertor(841, Unit::Mm, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::A2:
|
||||
width = UnitConvertor(420, Unit::Mm, paperUnit);
|
||||
height = UnitConvertor(594, Unit::Mm, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::A3:
|
||||
width = UnitConvertor(297, Unit::Mm, paperUnit);
|
||||
height = UnitConvertor(420, Unit::Mm, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::A4:
|
||||
width = UnitConvertor(210, Unit::Mm, paperUnit);
|
||||
height = UnitConvertor(297, Unit::Mm, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::Letter:
|
||||
width = UnitConvertor(8.5, Unit::Inch, paperUnit);
|
||||
height = UnitConvertor(11, Unit::Inch, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::Legal:
|
||||
width = UnitConvertor(8.5, Unit::Inch, paperUnit);
|
||||
height = UnitConvertor(14, Unit::Inch, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::Roll24in:
|
||||
width = UnitConvertor(24, Unit::Inch, paperUnit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::Roll30in:
|
||||
width = UnitConvertor(30, Unit::Inch, paperUnit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::Roll36in:
|
||||
width = UnitConvertor(36, Unit::Inch, paperUnit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::Roll42in:
|
||||
width = UnitConvertor(42, Unit::Inch, paperUnit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::Roll44in:
|
||||
width = UnitConvertor(44, Unit::Inch, paperUnit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, paperUnit);
|
||||
return RoundTemplateSize(width, height);
|
||||
case PaperSizeTemplate::Custom:
|
||||
width = ui->doubleSpinBoxPaperWidth->value();
|
||||
height = ui->doubleSpinBoxPaperHeight->value();
|
||||
return RoundTemplateSize(width, height);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
default:
|
||||
break;
|
||||
return VAbstractLayoutDialog::GetTemplateSize(tmpl, unit);
|
||||
}
|
||||
return QSizeF();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QSizeF DialogLayoutSettings::RoundTemplateSize(qreal width, qreal height) const
|
||||
{
|
||||
qreal w = 0;
|
||||
qreal h = 0;
|
||||
|
||||
switch (PaperUnit())
|
||||
{
|
||||
case Unit::Cm:
|
||||
case Unit::Mm:
|
||||
case Unit::Px:
|
||||
w = qRound(width * 100.0) / 100.0;
|
||||
h = qRound(height * 100.0) / 100.0;
|
||||
return QSizeF(w, h);
|
||||
case Unit::Inch:
|
||||
w = qRound(width * 100000.0) / 100000.0;
|
||||
h = qRound(height * 100000.0) / 100000.0;
|
||||
return QSizeF(w, h);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return QSizeF(width, height);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QMarginsF DialogLayoutSettings::MinPrinterFields() const
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#define DIALOGLAYOUTSETTINGS_H
|
||||
|
||||
#include <QCloseEvent>
|
||||
#include <QDialog>
|
||||
#include "vabstractlayoutdialog.h"
|
||||
|
||||
#include "../vlayout/vbank.h"
|
||||
#include "../ifc/ifcdef.h"
|
||||
|
@ -48,23 +48,10 @@ namespace Ui
|
|||
|
||||
class VLayoutGenerator;
|
||||
|
||||
class DialogLayoutSettings : public QDialog
|
||||
class DialogLayoutSettings : public VAbstractLayoutDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum class PaperSizeTemplate : char { A0 = 0,
|
||||
A1,
|
||||
A2,
|
||||
A3,
|
||||
A4,
|
||||
Letter,
|
||||
Legal,
|
||||
Roll24in = 7, // Be carefull when change order roll type
|
||||
Roll30in, // Used also for showing icon
|
||||
Roll36in,
|
||||
Roll42in,
|
||||
Roll44in = 11,
|
||||
Custom = 12};
|
||||
explicit DialogLayoutSettings(VLayoutGenerator *generator, QWidget *parent = nullptr, bool disableSettings = false);
|
||||
virtual ~DialogLayoutSettings();
|
||||
|
||||
|
@ -125,6 +112,8 @@ public:
|
|||
static QString MakeGroupsHelp();
|
||||
protected:
|
||||
virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE;
|
||||
QSizeF GetTemplateSize(const PaperSizeTemplate &tmpl, const Unit &unit) const;
|
||||
|
||||
public slots:
|
||||
void DialogAccepted();
|
||||
private slots:
|
||||
|
@ -155,11 +144,9 @@ private:
|
|||
|
||||
void InitPaperUnits();
|
||||
void InitLayoutUnits();
|
||||
void InitTemplates();
|
||||
void InitPrinter();
|
||||
QSizeF Template();
|
||||
QSizeF TemplateSize(const PaperSizeTemplate &tmpl) const;
|
||||
QSizeF RoundTemplateSize(qreal width, qreal height) const;
|
||||
|
||||
QMarginsF MinPrinterFields() const;
|
||||
QMarginsF GetDefPrinterFields() const;
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
<item row="2" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QToolButton" name="toolButtonPortrate">
|
||||
<widget class="QToolButton" name="toolButtonPortrait">
|
||||
<property name="text">
|
||||
<string notr="true">...</string>
|
||||
</property>
|
||||
|
|
|
@ -20,7 +20,8 @@ HEADERS += \
|
|||
$$PWD/dialogdatetimeformats.h \
|
||||
$$PWD/dialogknownmaterials.h \
|
||||
$$PWD/dialogpatternmaterials.h \
|
||||
$$PWD/dialogfinalmeasurements.h
|
||||
$$PWD/dialogfinalmeasurements.h \
|
||||
$$PWD/vabstractlayoutdialog.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/dialogincrements.cpp \
|
||||
|
@ -40,7 +41,8 @@ SOURCES += \
|
|||
$$PWD/dialogdatetimeformats.cpp \
|
||||
$$PWD/dialogknownmaterials.cpp \
|
||||
$$PWD/dialogpatternmaterials.cpp \
|
||||
$$PWD/dialogfinalmeasurements.cpp
|
||||
$$PWD/dialogfinalmeasurements.cpp \
|
||||
$$PWD/vabstractlayoutdialog.cpp
|
||||
|
||||
FORMS += \
|
||||
$$PWD/dialogincrements.ui \
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include <QProcess>
|
||||
#include <QtDebug>
|
||||
#include <QRegularExpression>
|
||||
#include <QtDebug>
|
||||
|
||||
const QString baseFilenameRegExp = QStringLiteral("^[\\p{L}\\p{Nd}\\-. _]+$");
|
||||
|
||||
|
@ -47,7 +48,7 @@ bool DialogSaveLayout::tested = false;
|
|||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
DialogSaveLayout::DialogSaveLayout(int count, Draw mode, const QString &fileName, QWidget *parent)
|
||||
: QDialog(parent),
|
||||
: VAbstractLayoutDialog(parent),
|
||||
ui(new Ui::DialogSaveLAyout),
|
||||
count(count),
|
||||
isInitialized(false),
|
||||
|
@ -133,8 +134,44 @@ DialogSaveLayout::DialogSaveLayout(int count, Draw mode, const QString &fileName
|
|||
connect(ui->lineEditPath, &QLineEdit::textChanged, this, &DialogSaveLayout::PathChanged);
|
||||
|
||||
ui->lineEditPath->setText(qApp->ValentinaSettings()->GetPathLayout());
|
||||
|
||||
InitTemplates(ui->comboBoxTemplates);
|
||||
|
||||
ReadSettings();
|
||||
|
||||
// connect for the template drop down box of the tiled pds
|
||||
connect(ui->comboBoxTemplates, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||
this, &DialogSaveLayout::WriteSettings);
|
||||
|
||||
// connects for the margins of the tiled pdf
|
||||
connect(ui->doubleSpinBoxLeftField, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
||||
this, &DialogSaveLayout::WriteSettings);
|
||||
connect(ui->doubleSpinBoxTopField, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
||||
this, &DialogSaveLayout::WriteSettings);
|
||||
connect(ui->doubleSpinBoxRightField, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
||||
this, &DialogSaveLayout::WriteSettings);
|
||||
connect(ui->doubleSpinBoxBottomField, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
||||
this, &DialogSaveLayout::WriteSettings);
|
||||
|
||||
// connects for the orientation buttons for the tiled pdf
|
||||
connect(ui->toolButtonPortrait, &QToolButton::toggled, this, &DialogSaveLayout::WriteSettings);
|
||||
connect(ui->toolButtonLandscape, &QToolButton::toggled, this, &DialogSaveLayout::WriteSettings);
|
||||
|
||||
|
||||
ShowExample();//Show example for current format.
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogSaveLayout::InitTemplates(QComboBox *comboBoxTemplates)
|
||||
{
|
||||
SCASSERT(comboBoxTemplates != nullptr)
|
||||
VAbstractLayoutDialog::InitTemplates(comboBoxTemplates);
|
||||
|
||||
// remove the custom format,
|
||||
comboBoxTemplates->removeItem(comboBoxTemplates->findData(static_cast<int>(PaperSizeTemplate::Custom)));
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
void DialogSaveLayout::SelectFormat(LayoutExportFormats format)
|
||||
|
@ -513,6 +550,10 @@ void DialogSaveLayout::ShowExample()
|
|||
const LayoutExportFormats currentFormat = Format();
|
||||
ui->labelExample->setText(tr("Example:") + FileName() + QLatin1String("1") + ExportFromatSuffix(currentFormat));
|
||||
|
||||
ui->checkBoxBinaryDXF->setEnabled(false);
|
||||
ui->groupBoxPaperFormat->setEnabled(false);
|
||||
ui->groupBoxMargins->setEnabled(false);
|
||||
|
||||
switch(currentFormat)
|
||||
{
|
||||
case LayoutExportFormats::DXF_AC1006_Flat:
|
||||
|
@ -544,15 +585,17 @@ void DialogSaveLayout::ShowExample()
|
|||
case LayoutExportFormats::DXF_AC1027_ASTM:
|
||||
ui->checkBoxBinaryDXF->setEnabled(true);
|
||||
break;
|
||||
case LayoutExportFormats::PDFTiled:
|
||||
ui->groupBoxPaperFormat->setEnabled(true);
|
||||
ui->groupBoxMargins->setEnabled(true);
|
||||
break;
|
||||
case LayoutExportFormats::SVG:
|
||||
case LayoutExportFormats::PDF:
|
||||
case LayoutExportFormats::PDFTiled:
|
||||
case LayoutExportFormats::PNG:
|
||||
case LayoutExportFormats::OBJ:
|
||||
case LayoutExportFormats::PS:
|
||||
case LayoutExportFormats::EPS:
|
||||
default:
|
||||
ui->checkBoxBinaryDXF->setEnabled(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -691,3 +734,87 @@ void DialogSaveLayout::RemoveFormatFromList(LayoutExportFormats format)
|
|||
ui->comboBoxFormat->removeItem(index);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief ReadSettings reads the values of the variables needed for the save layout dialog, for instance
|
||||
* the margins, teamplte and orientation of tiled pdf. Then sets the corresponding
|
||||
* elements of the dialog to these values.
|
||||
*/
|
||||
void DialogSaveLayout::ReadSettings()
|
||||
{
|
||||
VSettings *settings = qApp->ValentinaSettings();
|
||||
const Unit unit = qApp->patternUnit();
|
||||
|
||||
// read Margins top, right, bottom, left
|
||||
const QMarginsF margins = settings->GetTiledPDFMargins(unit);
|
||||
|
||||
ui->doubleSpinBoxLeftField->setValue(margins.left());
|
||||
ui->doubleSpinBoxTopField->setValue(margins.top());
|
||||
ui->doubleSpinBoxRightField->setValue(margins.right());
|
||||
ui->doubleSpinBoxBottomField->setValue(margins.bottom());
|
||||
|
||||
// read Template
|
||||
const QSizeF size = QSizeF(settings->GetTiledPDFPaperWidth(Unit::Mm), settings->GetTiledPDFPaperHeight(Unit::Mm));
|
||||
|
||||
const int max = static_cast<int>(PaperSizeTemplate::Custom);
|
||||
for (int i=0; i < max; ++i)
|
||||
{
|
||||
|
||||
const QSizeF tmplSize = GetTemplateSize(static_cast<PaperSizeTemplate>(i), Unit::Mm);
|
||||
if (size == tmplSize)
|
||||
{
|
||||
ui->comboBoxTemplates->setCurrentIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// read Orientation
|
||||
if(settings->GetTiledPDFOrientation() == PageOrientation::Portrait)
|
||||
{
|
||||
ui->toolButtonPortrait->setChecked(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->toolButtonLandscape->setChecked(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief WriteSettings writes the values of some variables (like the margins, template and orientation of tiled pdf)
|
||||
* of the save layout dialog into the settings.
|
||||
*/
|
||||
void DialogSaveLayout::WriteSettings() const
|
||||
{
|
||||
VSettings *settings = qApp->ValentinaSettings();
|
||||
const Unit unit = qApp->patternUnit();
|
||||
|
||||
// write Margins top, right, bottom, left
|
||||
QMarginsF margins = QMarginsF(
|
||||
ui->doubleSpinBoxLeftField->value(),
|
||||
ui->doubleSpinBoxTopField->value(),
|
||||
ui->doubleSpinBoxRightField->value(),
|
||||
ui->doubleSpinBoxBottomField->value()
|
||||
);
|
||||
settings->SetTiledPDFMargins(margins,unit);
|
||||
|
||||
// write Template
|
||||
const PaperSizeTemplate temp = static_cast<PaperSizeTemplate>(ui->comboBoxTemplates->currentData().toInt());
|
||||
const QSizeF size = GetTemplateSize(temp, Unit::Mm);
|
||||
|
||||
settings->SetTiledPDFPaperHeight(size.height(), Unit::Mm);
|
||||
settings->SetTiledPDFPaperWidth(size.width(), Unit::Mm);
|
||||
|
||||
// write Orientation
|
||||
if(ui->toolButtonPortrait->isChecked())
|
||||
{
|
||||
settings->SetTiledPDFOrientation(PageOrientation::Portrait);
|
||||
}
|
||||
else
|
||||
{
|
||||
settings->SetTiledPDFOrientation(PageOrientation::Landscape);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,8 +29,8 @@
|
|||
#ifndef DIALOGSAVELAYOUT_H
|
||||
#define DIALOGSAVELAYOUT_H
|
||||
|
||||
#include <QDialog>
|
||||
#include "../vgeometry/vgeometrydef.h"
|
||||
#include "vabstractlayoutdialog.h"
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
# define PDFTOPS "pdftops.exe"
|
||||
|
@ -82,7 +82,7 @@ enum class LayoutExportFormats : char
|
|||
COUNT /*Use only for validation*/
|
||||
};
|
||||
|
||||
class DialogSaveLayout : public QDialog
|
||||
class DialogSaveLayout : public VAbstractLayoutDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -113,6 +113,8 @@ public:
|
|||
|
||||
protected:
|
||||
virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE;
|
||||
void InitTemplates(QComboBox *comboBoxTemplates);
|
||||
|
||||
private slots:
|
||||
void Save();
|
||||
void PathChanged(const QString &text);
|
||||
|
@ -131,6 +133,9 @@ private:
|
|||
static QVector<std::pair<QString, LayoutExportFormats> > InitFormats();
|
||||
|
||||
void RemoveFormatFromList(LayoutExportFormats format);
|
||||
|
||||
void ReadSettings();
|
||||
void WriteSettings() const;
|
||||
};
|
||||
|
||||
#endif // DIALOGSAVELAYOUT_H
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>748</width>
|
||||
<height>206</height>
|
||||
<width>601</width>
|
||||
<height>325</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -20,18 +20,6 @@
|
|||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetDefaultConstraint</enum>
|
||||
</property>
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||
</property>
|
||||
<property name="labelAlignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="formAlignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
|
@ -69,7 +57,7 @@
|
|||
<string>Select path to destination folder</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Browse…</string>
|
||||
<string>Browse...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -92,13 +80,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="checkBoxBinaryDXF">
|
||||
<property name="enabled">
|
||||
|
@ -109,14 +90,188 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="checkBoxTextAsPaths">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Text as paths</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<property name="bottomMargin">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBoxMargins">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Margins</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<item>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="labelRightField">
|
||||
<property name="text">
|
||||
<string>Right:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxRightField"/>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxLeftField">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>71</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="labelLeftField">
|
||||
<property name="text">
|
||||
<string>Left:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QFormLayout" name="formLayout_3">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="labelTopField">
|
||||
<property name="text">
|
||||
<string>Top:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxTopField"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="labelBottomField">
|
||||
<property name="text">
|
||||
<string>Bottom:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxBottomField"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBoxPaperFormat">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Paper format</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<layout class="QFormLayout" name="formLayout_4">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="labelTemplates">
|
||||
<property name="text">
|
||||
<string>Templates: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="comboBoxTemplates"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Orientation: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QToolButton" name="toolButtonPortrait">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../../libs/vmisc/share/resources/icon.qrc">
|
||||
<normaloff>:/icon/16x16/portrait.png</normaloff>:/icon/16x16/portrait.png</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="toolButtonLandscape">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../../libs/vmisc/share/resources/icon.qrc">
|
||||
<normaloff>:/icon/16x16/landscape.png</normaloff>:/icon/16x16/landscape.png</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>File name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<item row="5" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEditFileName">
|
||||
|
@ -152,16 +307,6 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="checkBoxTextAsPaths">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Text as paths</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -176,6 +321,20 @@
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>lineEditPath</tabstop>
|
||||
<tabstop>pushButtonBrowse</tabstop>
|
||||
<tabstop>checkBoxBinaryDXF</tabstop>
|
||||
<tabstop>checkBoxTextAsPaths</tabstop>
|
||||
<tabstop>doubleSpinBoxLeftField</tabstop>
|
||||
<tabstop>doubleSpinBoxTopField</tabstop>
|
||||
<tabstop>doubleSpinBoxRightField</tabstop>
|
||||
<tabstop>doubleSpinBoxBottomField</tabstop>
|
||||
<tabstop>comboBoxTemplates</tabstop>
|
||||
<tabstop>toolButtonPortrait</tabstop>
|
||||
<tabstop>toolButtonLandscape</tabstop>
|
||||
<tabstop>lineEditFileName</tabstop>
|
||||
</tabstops>
|
||||
<resources>
|
||||
<include location="../../../libs/vmisc/share/resources/icon.qrc"/>
|
||||
</resources>
|
||||
|
|
172
src/app/valentina/dialogs/vabstractlayoutdialog.cpp
Normal file
172
src/app/valentina/dialogs/vabstractlayoutdialog.cpp
Normal file
|
@ -0,0 +1,172 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file dialogsavelayout.cpp
|
||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
** @date 9 10, 2017
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentina project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2013-2017 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina 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.
|
||||
**
|
||||
** Valentina 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 Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#include "vabstractlayoutdialog.h"
|
||||
#include "../core/vapplication.h"
|
||||
|
||||
//must be the same order as PaperSizeTemplate constants
|
||||
const VAbstractLayoutDialog::FormatsVector VAbstractLayoutDialog::pageFormatNames =
|
||||
VAbstractLayoutDialog::FormatsVector () << QLatin1String("A0")
|
||||
<< QLatin1String("A1")
|
||||
<< QLatin1String("A2")
|
||||
<< QLatin1String("A3")
|
||||
<< QLatin1String("A4")
|
||||
<< QApplication::translate("VAbstractLayoutDialog", "Letter")
|
||||
<< QApplication::translate("VAbstractLayoutDialog", "Legal")
|
||||
<< QApplication::translate("VAbstractLayoutDialog", "Roll 24in")
|
||||
<< QApplication::translate("VAbstractLayoutDialog", "Roll 30in")
|
||||
<< QApplication::translate("VAbstractLayoutDialog", "Roll 36in")
|
||||
<< QApplication::translate("VAbstractLayoutDialog", "Roll 42in")
|
||||
<< QApplication::translate("VAbstractLayoutDialog", "Roll 44in")
|
||||
<< QApplication::translate("VAbstractLayoutDialog", "Custom");
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractLayoutDialog::VAbstractLayoutDialog(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VAbstractLayoutDialog::InitTemplates(QComboBox *comboBoxTemplates)
|
||||
{
|
||||
SCASSERT(comboBoxTemplates != nullptr)
|
||||
const QIcon icoPaper("://icon/16x16/template.png");
|
||||
const QIcon icoRoll("://icon/16x16/roll.png");
|
||||
const QString pdi = QString("(%1ppi)").arg(PrintDPI);
|
||||
|
||||
auto cntr = static_cast<VIndexType>(PaperSizeTemplate::A0);
|
||||
foreach(const auto& v, pageFormatNames)
|
||||
{
|
||||
if (cntr <= static_cast<int>(PaperSizeTemplate::Legal))
|
||||
{
|
||||
comboBoxTemplates->addItem(icoPaper, v+" "+pdi, QVariant(cntr++));
|
||||
}
|
||||
else if (cntr <= static_cast<int>(PaperSizeTemplate::Roll44in))
|
||||
{
|
||||
comboBoxTemplates->addItem(icoRoll, v+" "+pdi, QVariant(cntr++));
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxTemplates->addItem(v+" "+pdi, QVariant(cntr++));
|
||||
}
|
||||
}
|
||||
comboBoxTemplates->setCurrentIndex(-1);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief DialogLayoutSettings::TemplateSize
|
||||
* @param tmpl
|
||||
* @param unit
|
||||
* @return
|
||||
*/
|
||||
QSizeF VAbstractLayoutDialog::GetTemplateSize(const PaperSizeTemplate &tmpl, const Unit &unit) const
|
||||
{
|
||||
qreal width = 0;
|
||||
qreal height = 0;
|
||||
|
||||
switch (tmpl)
|
||||
{
|
||||
case PaperSizeTemplate::A0:
|
||||
width = UnitConvertor(841, Unit::Mm, unit);
|
||||
height = UnitConvertor(1189, Unit::Mm, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::A1:
|
||||
width = UnitConvertor(594, Unit::Mm, unit);
|
||||
height = UnitConvertor(841, Unit::Mm, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::A2:
|
||||
width = UnitConvertor(420, Unit::Mm, unit);
|
||||
height = UnitConvertor(594, Unit::Mm, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::A3:
|
||||
width = UnitConvertor(297, Unit::Mm, unit);
|
||||
height = UnitConvertor(420, Unit::Mm, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::A4:
|
||||
width = UnitConvertor(210, Unit::Mm, unit);
|
||||
height = UnitConvertor(297, Unit::Mm, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::Letter:
|
||||
width = UnitConvertor(8.5, Unit::Inch, unit);
|
||||
height = UnitConvertor(11, Unit::Inch, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::Legal:
|
||||
width = UnitConvertor(8.5, Unit::Inch, unit);
|
||||
height = UnitConvertor(14, Unit::Inch, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::Roll24in:
|
||||
width = UnitConvertor(24, Unit::Inch, unit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::Roll30in:
|
||||
width = UnitConvertor(30, Unit::Inch, unit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::Roll36in:
|
||||
width = UnitConvertor(36, Unit::Inch, unit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::Roll42in:
|
||||
width = UnitConvertor(42, Unit::Inch, unit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
case PaperSizeTemplate::Roll44in:
|
||||
width = UnitConvertor(44, Unit::Inch, unit);
|
||||
height = UnitConvertor(QIMAGE_MAX, Unit::Px, unit);
|
||||
return RoundTemplateSize(width, height, unit);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return QSizeF();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QSizeF VAbstractLayoutDialog::RoundTemplateSize(qreal width, qreal height, Unit unit) const
|
||||
{
|
||||
qreal w = 0;
|
||||
qreal h = 0;
|
||||
|
||||
switch (unit)
|
||||
{
|
||||
case Unit::Cm:
|
||||
case Unit::Mm:
|
||||
case Unit::Px:
|
||||
w = qRound(width * 100.0) / 100.0;
|
||||
h = qRound(height * 100.0) / 100.0;
|
||||
return QSizeF(w, h);
|
||||
case Unit::Inch:
|
||||
w = qRound(width * 100000.0) / 100000.0;
|
||||
h = qRound(height * 100000.0) / 100000.0;
|
||||
return QSizeF(w, h);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return QSizeF(width, height);
|
||||
}
|
69
src/app/valentina/dialogs/vabstractlayoutdialog.h
Normal file
69
src/app/valentina/dialogs/vabstractlayoutdialog.h
Normal file
|
@ -0,0 +1,69 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file dialogsavelayout.cpp
|
||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
** @date 9 10, 2017
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentina project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2013-2017 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina 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.
|
||||
**
|
||||
** Valentina 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 Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef VABSTRACTLAYOUTDIALOG_H
|
||||
#define VABSTRACTLAYOUTDIALOG_H
|
||||
|
||||
#include "../ifc/ifcdef.h"
|
||||
|
||||
#include <QComboBox>
|
||||
#include <QDialog>
|
||||
|
||||
class VAbstractLayoutDialog : public QDialog
|
||||
{
|
||||
public:
|
||||
enum class PaperSizeTemplate : char { A0 = 0,
|
||||
A1,
|
||||
A2,
|
||||
A3,
|
||||
A4,
|
||||
Letter,
|
||||
Legal,
|
||||
Roll24in = 7, // Be carefull when change order roll type
|
||||
Roll30in, // Used also for showing icon
|
||||
Roll36in,
|
||||
Roll42in,
|
||||
Roll44in = 11,
|
||||
Custom = 12};
|
||||
|
||||
explicit VAbstractLayoutDialog(QWidget *parent = nullptr);
|
||||
|
||||
protected:
|
||||
typedef QStringList FormatsVector;
|
||||
const static FormatsVector pageFormatNames;
|
||||
typedef int VIndexType;
|
||||
|
||||
QSizeF GetTemplateSize(const PaperSizeTemplate &tmpl, const Unit &unit) const;
|
||||
QSizeF RoundTemplateSize(qreal width, qreal height, Unit unit) const;
|
||||
|
||||
void InitTemplates(QComboBox *comboBoxTemplates);
|
||||
private:
|
||||
Q_DISABLE_COPY(VAbstractLayoutDialog)
|
||||
};
|
||||
|
||||
#endif // VABSTRACTDIALOG_H
|
|
@ -217,7 +217,8 @@ void MainWindowsNoGUI::ErrorConsoleMode(const LayoutErrors &state)
|
|||
qCritical() << tr("Couldn't prepare data for creation layout");
|
||||
break;
|
||||
case LayoutErrors::EmptyPaperError:
|
||||
qCritical() << tr("Several workpieces left not arranged, but none of them match for paper");
|
||||
qCritical() << tr("One or more pattern pieces are bigger than the paper format you selected. Please, "
|
||||
"select a bigger paper format.");
|
||||
break;
|
||||
case LayoutErrors::ProcessStoped:
|
||||
default:
|
||||
|
@ -533,6 +534,15 @@ void MainWindowsNoGUI::PrintPages(QPrinter *printer)
|
|||
|
||||
if (isTiled)
|
||||
{
|
||||
VSettings *settings = qApp->ValentinaSettings();
|
||||
// when isTiled, the landscape tiles have to be rotated, because the pages
|
||||
// stay portrait in the pdf
|
||||
if(settings->GetTiledPDFOrientation() == PageOrientation::Landscape)
|
||||
{
|
||||
painter.rotate(-90);
|
||||
painter.translate(-ToPixel(printer->pageRect(QPrinter::Millimeter).height(), Unit::Mm), 0);
|
||||
}
|
||||
|
||||
poster = QSharedPointer<QVector<PosterData>>(new QVector<PosterData>());
|
||||
posterazor = QSharedPointer<VPoster>(new VPoster(printer));
|
||||
|
||||
|
@ -541,7 +551,7 @@ void MainWindowsNoGUI::PrintPages(QPrinter *printer)
|
|||
auto *paper = qgraphicsitem_cast<QGraphicsRectItem *>(papers.at(i));
|
||||
if (paper)
|
||||
{
|
||||
*poster += posterazor->Calc(paper->rect().toRect(), i);
|
||||
*poster += posterazor->Calc(paper->rect().toRect(), i, settings->GetTiledPDFOrientation());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -933,7 +943,6 @@ void MainWindowsNoGUI::PdfTiledFile(const QString &name)
|
|||
}
|
||||
QPrinter printer;
|
||||
SetPrinterSettings(&printer, PrintType::PrintPDF);
|
||||
printer.setPageSize(QPrinter::A4);// Want to be sure that page size is correct.
|
||||
|
||||
// Call IsPagesFit after setting a printer settings and check if pages is not bigger than printer's paper size
|
||||
if (not isTiled && not IsPagesFit(printer.paperRect().size()))
|
||||
|
@ -1238,10 +1247,11 @@ void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer, const PrintType &pr
|
|||
{
|
||||
SCASSERT(printer != nullptr)
|
||||
printer->setCreator(QGuiApplication::applicationDisplayName()+" "+QCoreApplication::applicationVersion());
|
||||
printer->setOrientation(QPrinter::Portrait);
|
||||
|
||||
if (not isTiled)
|
||||
{
|
||||
printer->setOrientation(QPrinter::Portrait);
|
||||
|
||||
QSizeF size = QSizeF(FromPixel(paperSize.width(), Unit::Mm), FromPixel(paperSize.height(), Unit::Mm));
|
||||
if (isAutoCrop || isUnitePages)
|
||||
{
|
||||
|
@ -1253,7 +1263,7 @@ void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer, const PrintType &pr
|
|||
}
|
||||
}
|
||||
|
||||
const QPrinter::PageSize pSZ = FindTemplate(size);
|
||||
const QPrinter::PageSize pSZ = FindQPrinterPageSize(size);
|
||||
if (pSZ == QPrinter::Custom)
|
||||
{
|
||||
printer->setPaperSize (size, QPrinter::Millimeter );
|
||||
|
@ -1265,15 +1275,50 @@ void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer, const PrintType &pr
|
|||
}
|
||||
else
|
||||
{
|
||||
printer->setPaperSize(QPrinter::A4);
|
||||
VSettings *settings = qApp->ValentinaSettings();
|
||||
if(settings->GetTiledPDFOrientation() == PageOrientation::Landscape)
|
||||
{
|
||||
printer->setOrientation(QPrinter::Landscape);
|
||||
}
|
||||
else
|
||||
{
|
||||
printer->setOrientation(QPrinter::Portrait);
|
||||
}
|
||||
}
|
||||
|
||||
printer->setFullPage(ignorePrinterFields);
|
||||
|
||||
const qreal left = FromPixel(margins.left(), Unit::Mm);
|
||||
const qreal top = FromPixel(margins.top(), Unit::Mm);
|
||||
const qreal right = FromPixel(margins.right(), Unit::Mm);
|
||||
const qreal bottom = FromPixel(margins.bottom(), Unit::Mm);
|
||||
qreal left, top, right, bottom;
|
||||
|
||||
if (not isTiled)
|
||||
{
|
||||
QMarginsF pageMargin = QMarginsF(UnitConvertor(margins, Unit::Px, Unit::Mm));
|
||||
left = pageMargin.left();
|
||||
top = pageMargin.top();
|
||||
right = pageMargin.right();
|
||||
bottom = pageMargin.bottom();
|
||||
}
|
||||
else
|
||||
{
|
||||
VSettings *settings = qApp->ValentinaSettings();
|
||||
QMarginsF pageMargin = QMarginsF(settings->GetTiledPDFMargins(Unit::Mm));
|
||||
if(settings->GetTiledPDFOrientation() == PageOrientation::Landscape)
|
||||
{
|
||||
// because when painting we have a -90rotation in landscape modus,
|
||||
// see function PrintPages.
|
||||
left = pageMargin.bottom();
|
||||
top = pageMargin.left();
|
||||
right = pageMargin.top();
|
||||
bottom = pageMargin.right();
|
||||
}
|
||||
else
|
||||
{
|
||||
left = pageMargin.left();
|
||||
top = pageMargin.top();
|
||||
right = pageMargin.right();
|
||||
bottom = pageMargin.bottom();
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 3, 0)
|
||||
const bool success = printer->setPageMargins(QMarginsF(left, top, right, bottom), QPageLayout::Millimeter);
|
||||
|
||||
|
@ -1353,39 +1398,39 @@ bool MainWindowsNoGUI::IsLayoutGrayscale() const
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QPrinter::PaperSize MainWindowsNoGUI::FindTemplate(const QSizeF &size) const
|
||||
QPrinter::PaperSize MainWindowsNoGUI::FindQPrinterPageSize(const QSizeF &size) const
|
||||
{
|
||||
if (size == QSizeF(841, 1189))
|
||||
if (size == QSizeF(841, 1189) || size == QSizeF(1189, 841))
|
||||
{
|
||||
return QPrinter::A0;
|
||||
}
|
||||
|
||||
if (size == QSizeF(594, 841))
|
||||
if (size == QSizeF(594, 841) || size == QSizeF(841, 594))
|
||||
{
|
||||
return QPrinter::A1;
|
||||
}
|
||||
|
||||
if (size == QSizeF(420, 594))
|
||||
if (size == QSizeF(420, 594) || size == QSizeF(594, 420))
|
||||
{
|
||||
return QPrinter::A2;
|
||||
}
|
||||
|
||||
if (size == QSizeF(297, 420))
|
||||
if (size == QSizeF(297, 420) || size == QSizeF(420, 297))
|
||||
{
|
||||
return QPrinter::A3;
|
||||
}
|
||||
|
||||
if (size == QSizeF(210, 297))
|
||||
if (size == QSizeF(210, 297) || size == QSizeF(297, 210))
|
||||
{
|
||||
return QPrinter::A4;
|
||||
}
|
||||
|
||||
if (size == QSizeF(215.9, 355.6))
|
||||
if (size == QSizeF(215.9, 355.6) || size == QSizeF(355.6, 215.9))
|
||||
{
|
||||
return QPrinter::Legal;
|
||||
}
|
||||
|
||||
if (size == QSizeF(215.9, 279.4))
|
||||
if (size == QSizeF(215.9, 279.4) || size == QSizeF(279.4, 215.9))
|
||||
{
|
||||
return QPrinter::Letter;
|
||||
}
|
||||
|
|
|
@ -151,7 +151,7 @@ private:
|
|||
|
||||
void SetPrinterSettings(QPrinter *printer, const PrintType &printType);
|
||||
bool IsLayoutGrayscale() const;
|
||||
QPrinter::PaperSize FindTemplate(const QSizeF &size) const;
|
||||
QPrinter::PaperSize FindQPrinterPageSize(const QSizeF &size) const;
|
||||
|
||||
bool isPagesUniform() const;
|
||||
bool IsPagesFit(const QSizeF &printPaper) const;
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include <QString>
|
||||
#include <QVector>
|
||||
#include <Qt>
|
||||
#include <QDebug>
|
||||
|
||||
#include "../vmisc/vmath.h"
|
||||
#include "../vmisc/def.h"
|
||||
|
@ -49,7 +50,7 @@ VPoster::VPoster(const QPrinter *printer)
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QVector<PosterData> VPoster::Calc(const QRect &imageRect, int page) const
|
||||
QVector<PosterData> VPoster::Calc(const QRect &imageRect, int page, PageOrientation orientation) const
|
||||
{
|
||||
QVector<PosterData> poster;
|
||||
|
||||
|
@ -58,14 +59,14 @@ QVector<PosterData> VPoster::Calc(const QRect &imageRect, int page) const
|
|||
return poster;
|
||||
}
|
||||
|
||||
const int rows = CountRows(imageRect.height());
|
||||
const int columns = CountColumns(imageRect.width());
|
||||
const int rows = CountRows(imageRect.height(), orientation);
|
||||
const int columns = CountColumns(imageRect.width(), orientation);
|
||||
|
||||
for (int i=0; i < rows; i++)
|
||||
{
|
||||
for (int j=0; j< columns; j++)
|
||||
{
|
||||
PosterData data = Cut(i, j, imageRect);
|
||||
PosterData data = Cut(i, j, imageRect, orientation);
|
||||
data.index = static_cast<quint32>(page);
|
||||
data.rows = static_cast<quint32>(rows);
|
||||
data.columns = static_cast<quint32>(columns);
|
||||
|
@ -165,89 +166,61 @@ QVector<QGraphicsItem *> VPoster::Borders(QGraphicsItem *parent, const PosterDat
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int VPoster::CountRows(int height) const
|
||||
int VPoster::CountRows(int height, PageOrientation orientation) const
|
||||
{
|
||||
const qreal imgLength = height;
|
||||
const qreal pageLength = PageRect().height();
|
||||
qreal pageLength = 0;
|
||||
|
||||
// Example
|
||||
// ― ―
|
||||
// * *
|
||||
// * *
|
||||
// * *
|
||||
// * * ―
|
||||
// ― ― *
|
||||
// * *
|
||||
// * *
|
||||
// * * ―
|
||||
// * ― *
|
||||
// — *
|
||||
// * *
|
||||
// * * ―
|
||||
// * ― *
|
||||
// * *
|
||||
// — *
|
||||
// * * ―
|
||||
// * ― * <-(2)
|
||||
// * + *
|
||||
// * + *
|
||||
// — + * ― <-(4)
|
||||
// ^ ^ ― *
|
||||
//(3) (1) *
|
||||
// *
|
||||
// *
|
||||
// ―
|
||||
if(orientation == PageOrientation::Landscape)
|
||||
{
|
||||
pageLength = PageRect().width();
|
||||
}
|
||||
else
|
||||
{
|
||||
pageLength = PageRect().height();
|
||||
}
|
||||
|
||||
const int pCount = qCeil(imgLength/pageLength);// Pages count without allowance (or allowance = 0) (3)
|
||||
|
||||
// Calculate how many pages will be after using allowance.
|
||||
// We know start pages count. This number not enought because
|
||||
// each n-1 pages add (n-1)*allowance length to page (1).
|
||||
const qreal addionalLength = (pCount-1)*static_cast<int>(allowance); //-V636
|
||||
|
||||
// Calculate additional length form pages that will cover this length (2).
|
||||
// In the end add page length (3).
|
||||
// Bottom page have mandatory border (4)
|
||||
return qCeil((addionalLength +
|
||||
qCeil(addionalLength/pageLength)*static_cast<int>(allowance) + static_cast<int>(allowance) +
|
||||
imgLength)/pageLength);
|
||||
return qCeil(imgLength/(pageLength - static_cast<int>(allowance)));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int VPoster::CountColumns(int width) const
|
||||
int VPoster::CountColumns(int width, PageOrientation orientation) const
|
||||
{
|
||||
const qreal imgLength = width;
|
||||
const qreal pageLength = PageRect().width();
|
||||
qreal pageLength = 0;
|
||||
|
||||
// Example
|
||||
// |----|----|----|----| <- (3)
|
||||
// |----|+++++++++++++++
|
||||
// |----|+++++++++++
|
||||
// |----|+++++++
|
||||
// |----|+++ <- (1)
|
||||
// |----|
|
||||
// ^
|
||||
// (2)
|
||||
const int pCount = qCeil(imgLength/pageLength);// Pages count without allowance (or allowance = 0) (3)
|
||||
if(orientation == PageOrientation::Landscape)
|
||||
{
|
||||
pageLength = PageRect().height();
|
||||
}
|
||||
else
|
||||
{
|
||||
pageLength = PageRect().width();
|
||||
}
|
||||
|
||||
// Calculate how many pages will be after using allowance.
|
||||
// We know start pages count. This number not enought because
|
||||
// each n-1 pages add (n-1)*allowance length to page (1).
|
||||
const qreal addionalLength = (pCount-1)*static_cast<int>(allowance); //-V636
|
||||
|
||||
// Calculate additional length form pages that will cover this length (2).
|
||||
// In the end add page length (3).
|
||||
return qCeil((addionalLength + qCeil(addionalLength/pageLength)*static_cast<int>(allowance) +
|
||||
imgLength)/pageLength);
|
||||
return qCeil(imgLength/(pageLength-static_cast<int>(allowance)));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
PosterData VPoster::Cut(int i, int j, const QRect &imageRect) const
|
||||
PosterData VPoster::Cut(int i, int j, const QRect &imageRect, PageOrientation orientation) const
|
||||
{
|
||||
Q_UNUSED(imageRect)
|
||||
|
||||
const int x = j*PageRect().width() - j*static_cast<int>(allowance);
|
||||
const int y = i*PageRect().height() - i*static_cast<int>(allowance);
|
||||
int pageLengthX, pageLengthY;
|
||||
|
||||
if(orientation == PageOrientation::Landscape)
|
||||
{
|
||||
pageLengthX = PageRect().height();
|
||||
pageLengthY = PageRect().width();
|
||||
}
|
||||
else
|
||||
{
|
||||
pageLengthX = PageRect().width();
|
||||
pageLengthY = PageRect().height();
|
||||
}
|
||||
|
||||
const int x = j*pageLengthX - j*static_cast<int>(allowance);
|
||||
const int y = i*pageLengthY - i*static_cast<int>(allowance);
|
||||
|
||||
SCASSERT(x <= imageRect.width())
|
||||
SCASSERT(y <= imageRect.height())
|
||||
|
@ -255,7 +228,7 @@ PosterData VPoster::Cut(int i, int j, const QRect &imageRect) const
|
|||
PosterData data;
|
||||
data.row = static_cast<quint32>(i);
|
||||
data.column = static_cast<quint32>(j);
|
||||
data.rect = QRect(x, y, PageRect().width(), PageRect().height());
|
||||
data.rect = QRect(x, y, pageLengthX, pageLengthY);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
#include <QRect>
|
||||
#include <QtGlobal>
|
||||
|
||||
#include "../vmisc/def.h"
|
||||
|
||||
class QGraphicsItem;
|
||||
class QPrinter;
|
||||
template <class T> class QVector;
|
||||
|
@ -62,17 +64,21 @@ class VPoster
|
|||
public:
|
||||
explicit VPoster(const QPrinter *printer);
|
||||
|
||||
QVector<PosterData> Calc(const QRect &imageRect, int page) const;
|
||||
QVector<PosterData> Calc(const QRect &imageRect, int page, PageOrientation orientation) const;
|
||||
|
||||
QVector<QGraphicsItem *> Borders(QGraphicsItem *parent, const PosterData &img, int sheets) const;
|
||||
private:
|
||||
const QPrinter *printer;
|
||||
/**
|
||||
* @brief allowance is the width of the strip that holds the tiled
|
||||
* grid information and that is used for the gluing.
|
||||
*/
|
||||
quint32 allowance;
|
||||
|
||||
int CountRows(int height) const;
|
||||
int CountColumns(int width) const;
|
||||
int CountRows(int height, PageOrientation orientation) const;
|
||||
int CountColumns(int width, PageOrientation orientation) const;
|
||||
|
||||
PosterData Cut(int i, int j, const QRect &imageRect) const;
|
||||
PosterData Cut(int i, int j, const QRect &imageRect, PageOrientation orientation) const;
|
||||
|
||||
QRect PageRect() const;
|
||||
|
||||
|
|
|
@ -342,6 +342,27 @@ qreal UnitConvertor(qreal value, const Unit &from, const Unit &to)
|
|||
return 0;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief UnitConvertor Converts the values of the given margin from given unit to the new unit.
|
||||
* returns a new instand of QMarginsF.
|
||||
*
|
||||
* @param margin
|
||||
* @param from
|
||||
* @param to
|
||||
* @return
|
||||
*/
|
||||
QMarginsF UnitConvertor(const QMarginsF &margins, const Unit &from, const Unit &to)
|
||||
{
|
||||
const qreal left = UnitConvertor(margins.left(), from, to);
|
||||
const qreal top = UnitConvertor(margins.top(), from, to);
|
||||
const qreal right = UnitConvertor(margins.right(), from, to);
|
||||
const qreal bottom = UnitConvertor(margins.bottom(), from, to);
|
||||
|
||||
return QMarginsF(left, top, right, bottom);
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QStringList SupportedLocales()
|
||||
{
|
||||
|
|
|
@ -62,6 +62,7 @@ enum class Unit : char { Mm = 0, Cm, Inch, Px, LAST_UNIT_DO_NOT_USE};
|
|||
enum class Source : char { FromGui, FromFile, FromTool };
|
||||
enum class NodeUsage : bool {NotInUse = false, InUse = true};
|
||||
enum class SelectionType : bool {ByMousePress, ByMouseRelease};
|
||||
enum class PageOrientation : bool {Portrait = true, Landscape = false};
|
||||
|
||||
enum class PieceNodeAngle : unsigned char
|
||||
{
|
||||
|
@ -416,6 +417,7 @@ Q_REQUIRED_RESULT double ToPixel(double val, const Unit &unit);
|
|||
Q_REQUIRED_RESULT double FromPixel(double pix, const Unit &unit);
|
||||
|
||||
Q_REQUIRED_RESULT qreal UnitConvertor(qreal value, const Unit &from, const Unit &to);
|
||||
Q_REQUIRED_RESULT QMarginsF UnitConvertor(const QMarginsF &margins, const Unit &from, const Unit &to);
|
||||
|
||||
void InitLanguages(QComboBox *combobox);
|
||||
Q_REQUIRED_RESULT QStringList SupportedLocales();
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include <QStringDataPtr>
|
||||
#include <QVariant>
|
||||
#include <QPrinterInfo>
|
||||
#include <QtDebug>
|
||||
|
||||
#include "../vmisc/def.h"
|
||||
#include "../vmisc/vmath.h"
|
||||
|
@ -70,6 +71,11 @@ const QString settingIgnoreFields = QStringLiteral("layout/ignoreField
|
|||
const QString settingStripOptimization = QStringLiteral("layout/stripOptimization");
|
||||
const QString settingMultiplier = QStringLiteral("layout/multiplier");
|
||||
const QString settingTextAsPaths = QStringLiteral("layout/textAsPaths");
|
||||
|
||||
const QString settingTiledPDFMargins = QStringLiteral("tiledPDF/margins");
|
||||
const QString settingTiledPDFPaperHeight = QStringLiteral("tiledPDF/paperHeight");
|
||||
const QString settingTiledPDFPaperWidth = QStringLiteral("tiledPDF/paperWidth");
|
||||
const QString settingTiledPDFOrientation = QStringLiteral("tiledPDF/orientation");
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -500,3 +506,117 @@ void VSettings::SetRememberPatternMaterials(bool value)
|
|||
{
|
||||
setValue(settingPatternRememberMaterials, value);
|
||||
}
|
||||
|
||||
// settings for the tiled PDFs
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief GetTiledPDFMargins returns the tiled pdf margins in the given unit. When the setting is
|
||||
* called for the first time, the 4 default margins are 10mm.
|
||||
* @param unit
|
||||
* @return
|
||||
*/
|
||||
QMarginsF VSettings::GetTiledPDFMargins(const Unit &unit) const
|
||||
{
|
||||
// default value is 10mm. We save the margins in mm in the setting.
|
||||
const QMarginsF def = QMarginsF(10, 10, 10, 10);
|
||||
|
||||
const QVariant val = value(settingTiledPDFMargins, QVariant::fromValue(def));
|
||||
|
||||
if (val.canConvert<QMarginsF>())
|
||||
{
|
||||
return UnitConvertor(val.value<QMarginsF>(), Unit::Mm, unit);
|
||||
}
|
||||
return UnitConvertor(def, Unit::Mm, unit);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief SetTiledPDFMargins sets the setting tiled pdf margins to the given value.
|
||||
* @param value the margins to save
|
||||
* @param unit the unit in which are the value. Necessary because we save the values
|
||||
* internaly as mm so there is conversion beeing made.
|
||||
*/
|
||||
void VSettings::SetTiledPDFMargins(const QMarginsF &value, const Unit &unit)
|
||||
{
|
||||
setValue(settingTiledPDFMargins, QVariant::fromValue(UnitConvertor(value, unit, Unit::Mm)));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief GetTiledPDFPaperHeight returns the paper height of tiled pdf in the desired unit.
|
||||
* @param unit the unit to return the value to (internally it's saved as mm)
|
||||
* @return
|
||||
*/
|
||||
qreal VSettings::GetTiledPDFPaperHeight(const Unit &unit) const
|
||||
{
|
||||
const qreal def = 297 /*A4*/;
|
||||
bool ok = false;
|
||||
const qreal height = value(settingTiledPDFPaperHeight, def).toDouble(&ok);
|
||||
if (ok)
|
||||
{
|
||||
return UnitConvertor(height, Unit::Mm, unit);
|
||||
}
|
||||
else
|
||||
{
|
||||
return UnitConvertor(def, Unit::Mm, unit);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief SetTiledPDFPaperHeight sets the tiled pdf paper height
|
||||
* @param value in Mm
|
||||
* @param unit unit of the given value
|
||||
*/
|
||||
void VSettings::SetTiledPDFPaperHeight(qreal value, const Unit &unit)
|
||||
{
|
||||
setValue(settingTiledPDFPaperHeight, UnitConvertor(value, unit, Unit::Mm));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief GetTiledPDFPaperWidth returns the paper height of tiled pdf in the desired unit.
|
||||
* @param unit the unit to return the value to (internally it's saved as mm)
|
||||
* @return
|
||||
*/
|
||||
qreal VSettings::GetTiledPDFPaperWidth(const Unit &unit) const
|
||||
{
|
||||
|
||||
const qreal def = 210 /*A4*/;
|
||||
bool ok = false;
|
||||
const qreal width = value(settingTiledPDFPaperWidth, def).toDouble(&ok);
|
||||
if (ok)
|
||||
{
|
||||
return UnitConvertor(width, Unit::Mm, unit);
|
||||
}
|
||||
else
|
||||
{
|
||||
return UnitConvertor(def, Unit::Mm, unit);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief SetTiledPDFPaperWidth sets the tiled pdf paper width
|
||||
* @param unit unit of the given value
|
||||
* @param value in Mm
|
||||
*/
|
||||
void VSettings::SetTiledPDFPaperWidth(qreal value, const Unit &unit)
|
||||
{
|
||||
setValue(settingTiledPDFPaperWidth, UnitConvertor(value,unit, Unit::Mm));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
PageOrientation VSettings::GetTiledPDFOrientation() const
|
||||
{
|
||||
bool defaultValue = static_cast<bool>(PageOrientation::Portrait);
|
||||
bool result = value(settingTiledPDFOrientation, defaultValue).toBool();
|
||||
return static_cast<PageOrientation>(result);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSettings::SetTiledPDFOrientation(PageOrientation value)
|
||||
{
|
||||
setValue(settingTiledPDFOrientation, static_cast<bool> (value));
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <QString>
|
||||
#include <QtGlobal>
|
||||
|
||||
#include "../vmisc/def.h"
|
||||
#include "../vlayout/vbank.h"
|
||||
#include "vcommonsettings.h"
|
||||
|
||||
|
@ -131,6 +132,19 @@ public:
|
|||
bool IsRememberPatternMaterials() const;
|
||||
void SetRememberPatternMaterials(bool value);
|
||||
|
||||
// settings for the tiled PDFs
|
||||
QMarginsF GetTiledPDFMargins(const Unit &unit) const;
|
||||
void SetTiledPDFMargins(const QMarginsF &value, const Unit &unit);
|
||||
|
||||
qreal GetTiledPDFPaperHeight(const Unit &unit) const;
|
||||
void SetTiledPDFPaperHeight(qreal value, const Unit &unit);
|
||||
|
||||
qreal GetTiledPDFPaperWidth(const Unit &unit) const;
|
||||
void SetTiledPDFPaperWidth(qreal value, const Unit &unit);
|
||||
|
||||
PageOrientation GetTiledPDFOrientation() const;
|
||||
void SetTiledPDFOrientation(PageOrientation value);
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(VSettings)
|
||||
};
|
||||
|
|
|
@ -61,7 +61,7 @@ void TST_VPoster::BigPoster()
|
|||
|
||||
const QRect image(0, 0, 2622, 3178); // Little bit bigger than A1
|
||||
VPoster posterazor(&printer);
|
||||
const QVector<PosterData> poster = posterazor.Calc(image, 0);
|
||||
const QVector<PosterData> poster = posterazor.Calc(image, 0, PageOrientation::Portrait);
|
||||
|
||||
QCOMPARE(poster.size(), 12);
|
||||
|
||||
|
@ -81,7 +81,7 @@ void TST_VPoster::SmallPoster()
|
|||
|
||||
const QRect image(0, 0, 700, 1000); // Little bit less than A4
|
||||
VPoster posterazor(&printer);
|
||||
const QVector<PosterData> poster = posterazor.Calc(image, 0);
|
||||
const QVector<PosterData> poster = posterazor.Calc(image, 0, PageOrientation::Portrait);
|
||||
|
||||
QCOMPARE(poster.size(), 1);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user