summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukáš Lalinský <lalinsky@gmail.com>2009-07-10 00:04:56 +0200
committerLukáš Lalinský <lalinsky@gmail.com>2009-07-10 00:04:56 +0200
commit54897073cfdbd6f2ca595e6234d517384847ee9f (patch)
tree38281cc05b5d4dcb7d8c1bd35f8580c71a0a3a48
parent5e8edb28accb356032615addd6ac916ce7027687 (diff)
downloaddbmodel-54897073cfdbd6f2ca595e6234d517384847ee9f.tar.gz
dbmodel-54897073cfdbd6f2ca595e6234d517384847ee9f.tar.bz2
Print preview
-rw-r--r--dbmodel.qrc1
-rw-r--r--icons/16x16/document-print-preview.pngbin0 -> 779 bytes
-rw-r--r--src/mainwindow.cpp32
-rw-r--r--src/mainwindow.h4
4 files changed, 33 insertions, 4 deletions
diff --git a/dbmodel.qrc b/dbmodel.qrc
index 1a41100..f7de8dc 100644
--- a/dbmodel.qrc
+++ b/dbmodel.qrc
@@ -9,6 +9,7 @@
<file>icons/16x16/document-save.png</file>
<file>icons/16x16/document-save-as.png</file>
<file>icons/16x16/document-print.png</file>
+ <file>icons/16x16/document-print-preview.png</file>
<file>icons/16x16/edit-undo.png</file>
<file>icons/16x16/edit-redo.png</file>
<file>icons/16x16/edit-delete.png</file>
diff --git a/icons/16x16/document-print-preview.png b/icons/16x16/document-print-preview.png
new file mode 100644
index 0000000..ab92a30
--- /dev/null
+++ b/icons/16x16/document-print-preview.png
Binary files differ
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 85a526d..244cf4a 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -27,6 +27,7 @@
#include <QSettings>
#include <QPrinter>
#include <QPrintDialog>
+#include <QPrintPreviewDialog>
#include <QMessageBox>
#include <QDebug>
#include <QDockWidget>
@@ -54,6 +55,7 @@ public:
QMap<QString, int> propertyEditorsIndexes;
QAction *printAction;
+ QAction *printPreviewAction;
QActionGroup *notationActionGroup;
QMenu *notationMenu;
@@ -224,8 +226,15 @@ MainWindow::setupActions()
d->printAction = new QAction(this);
d->printAction->setText(tr("&Print..."));
d->printAction->setIcon(loadIcon("document-print"));
+ d->printAction->setShortcut(QKeySequence(tr("Ctrl+P")));
connect(d->printAction, SIGNAL(triggered(bool)), SLOT(print()));
+ d->printPreviewAction = new QAction(this);
+ d->printPreviewAction->setText(tr("Print Previe&w..."));
+ d->printPreviewAction->setIcon(loadIcon("document-print-preview"));
+ d->printPreviewAction->setShortcut(QKeySequence(tr("Ctrl+Shift+P")));
+ connect(d->printPreviewAction, SIGNAL(triggered(bool)), SLOT(printPreview()));
+
for (int i = 0; i < MaxRecentFiles; i++) {
m_actionRecentFile[i] = new QAction(this);
m_actionRecentFile[i]->setVisible(false);
@@ -386,6 +395,7 @@ MainWindow::setupMenuBar()
menu->addSeparator();
menu->addAction(m_actionExportPNG);
+ menu->addAction(d->printPreviewAction);
menu->addAction(d->printAction);
m_actionRecentFilesSeparator = menu->addSeparator();
for (int i = 0; i < MaxRecentFiles; i++)
@@ -508,14 +518,28 @@ MainWindow::print()
QPrinter printer;
QPrintDialog printDialog(&printer, this);
if (printDialog.exec() == QDialog::Accepted) {
- QPainter painter(&printer);
- m_model->setPrinting(true);
- m_model->render(&painter);
- m_model->setPrinting(false);
+ paintOnPrinter(&printer);
}
}
void
+MainWindow::printPreview()
+{
+ QPrintPreviewDialog printPreviewDialog(this);
+ connect(&printPreviewDialog, SIGNAL(paintRequested(QPrinter*)), SLOT(paintOnPrinter(QPrinter*)));
+ printPreviewDialog.exec();
+}
+
+void
+MainWindow::paintOnPrinter(QPrinter *printer)
+{
+ QPainter painter(printer);
+ m_model->setPrinting(true);
+ m_model->render(&painter);
+ m_model->setPrinting(false);
+}
+
+void
MainWindow::newModel(DiagramDocument *newModel)
{
if (!newModel) {
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 4f059cc..6c1a094 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -26,6 +26,8 @@
#include "diagramview.h"
#include "diagramdocument.h"
+class QPrinter;
+
class MainWindow: public QMainWindow
{
Q_OBJECT
@@ -54,6 +56,8 @@ public slots:
bool saveAs();
void exportDocument();
void print();
+ void printPreview();
+ void paintOnPrinter(QPrinter *);
void setViewScale(const QString &scale);
void about();