/*===========================================================================*\ * * * OpenFlipper * * Copyright (C) 2001-2010 by Computer Graphics Group, RWTH Aachen * * www.openflipper.org * * * *--------------------------------------------------------------------------- * * This file is part of OpenFlipper. * * * * OpenFlipper is free software: you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * * published by the Free Software Foundation, either version 3 of * * the License, or (at your option) any later version with the * * following exceptions: * * * * If other files instantiate templates or use macros * * or inline functions from this file, or you compile this file and * * link it with other files to produce an executable, this file does * * not by itself cause the resulting executable to be covered by the * * GNU Lesser General Public License. This exception does not however * * invalidate any other reasons why the executable file might be * * covered by the GNU Lesser General Public License. * * * * OpenFlipper is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License for more details. * * * * You should have received a copy of the GNU LesserGeneral Public * * License along with OpenFlipper. If not, * * see . * * * \*===========================================================================*/ /*===========================================================================*\ * * * $Revision$ * * $LastChangedBy$ * * $Date$ * * * \*===========================================================================*/ #include #include "PrintPlugin.hh" #include #include #include #include void PrintPlugin::pluginsInitialized() { // color menu QMenu *printMenu = new QMenu(tr("&Printing")); printMenu->setIcon(QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"document-print.png")); emit addMenubarAction(printMenu->menuAction(), FILEMENU ); QAction* AC_Print = new QAction(tr("&Print"), this);; AC_Print->setStatusTip(tr("Print the current view")); AC_Print->setIcon(QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"document-print.png")); connect(AC_Print, SIGNAL(triggered()), this, SLOT(printView())); printMenu->addAction(AC_Print); } void PrintPlugin::printView () { QPrinter printer(QPrinter::HighResolution); QPrintDialog *dialog = new QPrintDialog(&printer); dialog->setWindowTitle(tr("Print Current View")); if (dialog->exec() != QDialog::Accepted) return; QImage image; // create the snapshot PluginFunctions::getCurrentViewImage(image); QPainter painter; painter.begin(&printer); painter.save(); QRect rect = painter.viewport(); QSize size = image.size(); size.scale(rect.size(), Qt::KeepAspectRatio); painter.setViewport(rect.x(), rect.y(), size.width(), size.height()); painter.setWindow(image.rect()); painter.drawImage(0, 0, image); painter.restore(); painter.end(); } void PrintPlugin::slotKeyEvent( QKeyEvent* _event ) { if (_event->modifiers() == Qt::ControlModifier ) { switch (_event->key()) { case Qt::Key_P : printView(); return; } } } Q_EXPORT_PLUGIN2( printplugin , PrintPlugin );