summaryrefslogtreecommitdiff
path: root/src/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r--src/mainwindow.cpp32
1 files changed, 28 insertions, 4 deletions
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) {