Calculate correct paper size. Print preview doesn't support non native
printers. --HG-- branch : feature
This commit is contained in:
parent
9a865ab72d
commit
9327da7a2c
|
@ -528,8 +528,8 @@ void DialogLayoutSettings::DialogAccepted()
|
|||
SCASSERT(generator != nullptr)
|
||||
generator->SetLayoutWidth(GetLayoutWidth());
|
||||
generator->SetCaseType(GetGroup());
|
||||
generator->SetPaperHeight(qFloor(GetPaperHeight()));
|
||||
generator->SetPaperWidth(qFloor(GetPaperWidth()));
|
||||
generator->SetPaperHeight(GetPaperHeight());
|
||||
generator->SetPaperWidth(GetPaperWidth());
|
||||
generator->SetShift(qFloor(GetShift()));
|
||||
generator->SetRotate(GetRotate());
|
||||
generator->SetRotationIncrease(GetIncrease());
|
||||
|
|
|
@ -62,7 +62,7 @@ MainWindowsNoGUI::MainWindowsNoGUI(QWidget *parent)
|
|||
pattern(new VContainer(qApp->TrVars(), qApp->patternUnitP())), doc(nullptr), papers(QList<QGraphicsItem *>()),
|
||||
shadows(QList<QGraphicsItem *>()), scenes(QList<QGraphicsScene *>()), details(QList<QList<QGraphicsItem *> >()),
|
||||
undoAction(nullptr), redoAction(nullptr), actionDockWidgetToolOptions(nullptr), curFile(QString()),
|
||||
isLayoutStale(true), margins(), isTiled(false)
|
||||
isLayoutStale(true), margins(), paperSize(), isTiled(false)
|
||||
{
|
||||
InitTempLayoutScene();
|
||||
}
|
||||
|
@ -133,6 +133,7 @@ bool MainWindowsNoGUI::LayoutSettings(VLayoutGenerator& lGenerator)
|
|||
CreateScenes();
|
||||
PrepareSceneList();
|
||||
margins = lGenerator.GetFields();
|
||||
paperSize = QSizeF(lGenerator.GetPaperWidth(), lGenerator.GetPaperHeight());
|
||||
isLayoutStale = false;
|
||||
break;
|
||||
case LayoutErrors::ProcessStoped:
|
||||
|
@ -799,7 +800,7 @@ void MainWindowsNoGUI::PrintPreview()
|
|||
return;
|
||||
}
|
||||
|
||||
SetPrinterSettings(printer.data());
|
||||
SetPrinterSettings(printer.data(), false);
|
||||
// display print preview dialog
|
||||
QPrintPreviewDialog preview(printer.data());
|
||||
connect(&preview, &QPrintPreviewDialog::paintRequested, this, &MainWindowsNoGUI::PrintPages);
|
||||
|
@ -830,7 +831,7 @@ void MainWindowsNoGUI::LayoutPrint()
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer)
|
||||
void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer, bool prepareForPrinting)
|
||||
{
|
||||
SCASSERT(printer != nullptr)
|
||||
printer->setCreator(qApp->applicationDisplayName()+" "+qApp->applicationVersion());
|
||||
|
@ -852,10 +853,8 @@ void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer)
|
|||
|
||||
if (not isTiled && papers.size() > 0)
|
||||
{
|
||||
QGraphicsRectItem *paper = qgraphicsitem_cast<QGraphicsRectItem *>(papers.at(0));
|
||||
SCASSERT(paper != nullptr)
|
||||
printer->setPaperSize ( QSizeF(FromPixel(paper->rect().width(), Unit::Mm),
|
||||
FromPixel(paper->rect().height(), Unit::Mm)), QPrinter::Millimeter );
|
||||
printer->setPaperSize ( QSizeF(FromPixel(paperSize.width(), Unit::Mm),
|
||||
FromPixel(paperSize.height(), Unit::Mm)), QPrinter::Millimeter );
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -866,11 +865,14 @@ void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer)
|
|||
printer->setPageMargins(left, top, right, bottom, QPrinter::Millimeter);
|
||||
}
|
||||
|
||||
if (prepareForPrinting)
|
||||
{
|
||||
#ifdef Q_OS_WIN
|
||||
printer->setOutputFileName(QDir::homePath() + QDir::separator() + FileName());
|
||||
#else
|
||||
printer->setOutputFileName(QDir::homePath() + QDir::separator() + FileName() + QLatin1Literal(".pdf"));
|
||||
#endif
|
||||
}
|
||||
printer->setDocName(FileName());
|
||||
|
||||
IsLayoutGrayscale() ? printer->setColorMode(QPrinter::GrayScale) : printer->setColorMode(QPrinter::Color);
|
||||
|
|
|
@ -88,6 +88,7 @@ protected:
|
|||
|
||||
bool isLayoutStale;
|
||||
QMarginsF margins;
|
||||
QSizeF paperSize;
|
||||
|
||||
void PrepareDetailsForLayout(const QHash<quint32, VDetail> *details);
|
||||
void ExportLayout(const DialogSaveLayout &dialog);
|
||||
|
@ -120,7 +121,7 @@ private:
|
|||
void PrintPreview();
|
||||
void LayoutPrint();
|
||||
|
||||
void SetPrinterSettings(QPrinter *printer);
|
||||
void SetPrinterSettings(QPrinter *printer, bool prepareForPrinting = true);
|
||||
bool IsLayoutGrayscale() const;
|
||||
|
||||
bool isPagesUniform() const;
|
||||
|
|
|
@ -192,13 +192,13 @@ void VLayoutGenerator::Abort()
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int VLayoutGenerator::PageHeight() const
|
||||
{
|
||||
return paperHeight - static_cast<int>(margins.top() + margins.bottom());
|
||||
return static_cast<int>(paperHeight - (margins.top() + margins.bottom()));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int VLayoutGenerator::PageWidth() const
|
||||
{
|
||||
return paperWidth - static_cast<int>(margins.left() + margins.right());
|
||||
return static_cast<int>(paperWidth - (margins.left() + margins.right()));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -268,13 +268,13 @@ void VLayoutGenerator::SetRotate(bool value)
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int VLayoutGenerator::GetPaperWidth() const
|
||||
qreal VLayoutGenerator::GetPaperWidth() const
|
||||
{
|
||||
return paperWidth;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VLayoutGenerator::SetPaperWidth(int value)
|
||||
void VLayoutGenerator::SetPaperWidth(qreal value)
|
||||
{
|
||||
paperWidth = value;
|
||||
}
|
||||
|
@ -304,13 +304,13 @@ void VLayoutGenerator::SetShift(quint32 shift)
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int VLayoutGenerator::GetPaperHeight() const
|
||||
qreal VLayoutGenerator::GetPaperHeight() const
|
||||
{
|
||||
return paperHeight;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VLayoutGenerator::SetPaperHeight(int value)
|
||||
void VLayoutGenerator::SetPaperHeight(qreal value)
|
||||
{
|
||||
paperHeight = value;
|
||||
}
|
||||
|
|
|
@ -53,11 +53,11 @@ public:
|
|||
void SetCaseType(Cases caseType);
|
||||
int DetailsCount();
|
||||
|
||||
int GetPaperHeight() const;
|
||||
void SetPaperHeight(int value);
|
||||
qreal GetPaperHeight() const;
|
||||
void SetPaperHeight(qreal value);
|
||||
|
||||
int GetPaperWidth() const;
|
||||
void SetPaperWidth(int value);
|
||||
qreal GetPaperWidth() const;
|
||||
void SetPaperWidth(qreal value);
|
||||
|
||||
QMarginsF GetFields() const;
|
||||
void SetFields(const QMarginsF &value);
|
||||
|
@ -100,8 +100,8 @@ private:
|
|||
Q_DISABLE_COPY(VLayoutGenerator)
|
||||
QVector<VLayoutPaper> papers;
|
||||
VBank *bank;
|
||||
int paperHeight;
|
||||
int paperWidth;
|
||||
qreal paperHeight;
|
||||
qreal paperWidth;
|
||||
QMarginsF margins;
|
||||
volatile bool stopGeneration;
|
||||
LayoutErrors state;
|
||||
|
|
Loading…
Reference in New Issue
Block a user