diff --git a/src/printing/kateprinter.cpp b/src/printing/kateprinter.cpp --- a/src/printing/kateprinter.cpp +++ b/src/printing/kateprinter.cpp @@ -24,6 +24,7 @@ #include "kateconfig.h" #include "katedocument.h" +#include "kateglobal.h" #include "kateview.h" #include @@ -57,6 +58,8 @@ KTextEditor::ViewPrivate *m_view; KTextEditor::DocumentPrivate *m_doc; PrintPainter *m_painter; + static void readSettings(QPrinter *printer); + static void writeSettings(QPrinter *printer); }; KatePrinterPrivate::KatePrinterPrivate(KTextEditor::DocumentPrivate *doc, KTextEditor::ViewPrivate *view) @@ -92,6 +95,8 @@ parentWidget = QApplication::activeWindow(); } + readSettings(printer); + QPointer printDialog(new QPrintDialog(printer, parentWidget)); printDialog->setOptionTabs(tabs); @@ -108,6 +113,8 @@ return false; } + writeSettings(printer); + // configure the painter m_painter->setPrintGuide(kpts->printGuide()); m_painter->setPrintLineNumbers(kpts->printLineNumbers()); @@ -150,6 +157,38 @@ m_painter->setColorScheme(scheme); } +void KatePrinterPrivate::writeSettings(QPrinter *printer) +{ + KSharedConfigPtr config = KTextEditor::EditorPrivate::config(); + KConfigGroup group(config, QStringLiteral("Kate Print Settings")); + KConfigGroup margins(&group, QStringLiteral("Margins")); + + qreal left, right, top, bottom; + printer->getPageMargins(&left, &top, &right, &bottom, QPrinter::Millimeter); + + margins.writeEntry( "left", left); + margins.writeEntry( "top", top); + margins.writeEntry( "right", right); + margins.writeEntry( "bottom", bottom); +} + +void KatePrinterPrivate::readSettings(QPrinter *printer) +{ + KSharedConfigPtr config = KTextEditor::EditorPrivate::config(); + KConfigGroup group(config, QStringLiteral("Kate Print Settings")); + KConfigGroup margins(&group, QStringLiteral("Margins")); + + qreal left, right, top, bottom; + printer->getPageMargins(&left, &top, &right, &bottom, QPrinter::Millimeter); + + left = margins.readEntry("left", left); + top = margins.readEntry("top", top); + right = margins.readEntry("right", right); + bottom = margins.readEntry("bottom", bottom); + + printer->setPageMargins(left, top, right, bottom, QPrinter::Millimeter); +} + //END KatePrinterPrivate //BEGIN KatePrinter