10#include "kateprinter.h"
12#include "kateconfig.h"
13#include "katedocument.h"
14#include "kateglobal.h"
17#include <KConfigGroup>
18#include <KSharedConfig>
20#include <QApplication>
23#include <QPrintDialog>
24#include <QPrintPreviewDialog>
27#include "printconfigwidgets.h"
28#include "printpainter.h"
30using namespace KatePrinter;
33class KatePrinterPrivate :
public QObject
36 KatePrinterPrivate(KTextEditor::DocumentPrivate *doc, KTextEditor::ViewPrivate *view);
38 bool print(QPrinter *printer, QWidget *parentWidget);
39 void setColorScheme(
const QString &scheme);
42 void paint(QPrinter *printer);
45 KTextEditor::ViewPrivate *m_view;
46 KTextEditor::DocumentPrivate *m_doc;
47 PrintPainter m_painter;
48 static void readSettings(QPrinter *printer);
49 static void writeSettings(QPrinter *printer);
56 , m_painter(m_doc, m_view)
65 KatePrintTextSettings *kpts =
new KatePrintTextSettings;
66 KatePrintHeaderFooter *kphf =
new KatePrintHeaderFooter;
67 KatePrintLayout *kpl =
new KatePrintLayout;
69 QList<QWidget *> tabs;
74 readSettings(printer);
76 QPointer<QPrintDialog> printDialog(
new QPrintDialog(printer, parentWidget));
77 printDialog->setOptionTabs(tabs);
79 if (m_view && m_view->selection()) {
86 const int dlgCode = printDialog->exec();
92 writeSettings(printer);
95 m_painter.setPrintGuide(kpts->printGuide());
96 m_painter.setPrintLineNumbers(kpts->printLineNumbers());
97 m_painter.setDontPrintFoldedCode(kpts->dontPrintFoldedCode());
99 m_painter.setColorScheme(kpl->colorScheme());
100 m_painter.setTextFont(kpl->textFont());
101 m_painter.setUseBackground(kpl->useBackground());
102 m_painter.setUseBox(kpl->useBox());
103 m_painter.setBoxMargin(kpl->boxMargin());
104 m_painter.setBoxWidth(kpl->boxWidth());
105 m_painter.setBoxColor(kpl->boxColor());
107 m_painter.setHeadersFont(kphf->font());
109 m_painter.setUseHeader(kphf->useHeader());
110 m_painter.setHeaderBackground(kphf->headerBackground());
111 m_painter.setHeaderForeground(kphf->headerForeground());
112 m_painter.setUseHeaderBackground(kphf->useHeaderBackground());
113 m_painter.setHeaderFormat(kphf->headerFormat());
115 m_painter.setUseFooter(kphf->useFooter());
116 m_painter.setFooterBackground(kphf->footerBackground());
117 m_painter.setFooterForeground(kphf->footerForeground());
118 m_painter.setUseFooterBackground(kphf->useFooterBackground());
119 m_painter.setFooterFormat(kphf->footerFormat());
122 m_painter.paint(printer);
127void KatePrinterPrivate::paint(
QPrinter *printer)
129 m_painter.paint(printer);
132void KatePrinterPrivate::setColorScheme(
const QString &scheme)
134 m_painter.setColorScheme(scheme);
137void KatePrinterPrivate::writeSettings(
QPrinter *printer)
140 KConfigGroup group(config, QStringLiteral(
"Kate Print Settings"));
141 KConfigGroup margins(&group, QStringLiteral(
"Margins"));
144 margins.writeEntry(
"left", m.
left());
145 margins.writeEntry(
"top", m.
top());
146 margins.writeEntry(
"right", m.
right());
147 margins.writeEntry(
"bottom", m.
bottom());
150void KatePrinterPrivate::readSettings(
QPrinter *printer)
153 KConfigGroup group(config, QStringLiteral(
"Kate Print Settings"));
154 KConfigGroup margins(&group, QStringLiteral(
"Margins"));
160 left = margins.readEntry(
"left", left);
161 top = margins.readEntry(
"top", top);
162 right = margins.readEntry(
"right", right);
163 bottom = margins.readEntry(
"bottom", bottom);
164 QMarginsF m = QMarginsF(left, top, right, bottom);
175 KatePrinterPrivate p(doc, view);
182 KatePrinterPrivate p(doc, view);
183 p.setColorScheme(QStringLiteral(
"Printing"));
188 if (dialogParent && dialogParent->window()) {
189 preview.resize(dialogParent->window()->size() * 0.75);
193 return preview.exec();
Backend of KTextEditor::Document related public KTextEditor interfaces.
static KSharedConfigPtr config()
The global configuration of katepart, e.g.
qreal bottom() const const
qreal right() const const
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QPageLayout pageLayout() const const
virtual bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units)
QMarginsF margins() const const
void setDocName(const QString &name)
void setPrintRange(PrintRange range)
void paintRequested(QPrinter *printer)
QTextStream & left(QTextStream &stream)
QTextStream & right(QTextStream &stream)