Esempio n. 1
0
 def on_actionFitPage_triggered(self):
     papersize = self._getPaperSize()
     printer = QPrinter()
     printer.setPaperSize(papersize)
     widthInPixels = printer.pageRect().width()
     maxColumns = self.songProperties.maxColumns(widthInPixels)
     self.widthSpinBox.setValue(maxColumns)
     self.scoreScene.reBuild()
Esempio n. 2
0
 def on_actionFitPage_triggered(self):
     papersize = self._getPaperSize()
     printer = QPrinter()
     printer.setPaperSize(papersize)
     widthInPixels = printer.pageRect().width()
     maxColumns = self.songProperties.maxColumns(widthInPixels)
     self.widthSpinBox.setValue(maxColumns)
     self.scoreScene.reBuild()
Esempio n. 3
0
 def _exportCompositionAsPDF(self,composition,filePath):  
     """
     Render the composition as a PDF file.
     """
     printer = QPrinter()
     printer.setOutputFormat(QPrinter.PdfFormat)
     printer.setOutputFileName(filePath)
     printer.setPaperSize(QSizeF(composition.paperWidth(),composition.paperHeight()),QPrinter.Millimeter)
     printer.setFullPage(True)
     printer.setColorMode(QPrinter.Color)
     printer.setResolution(composition.printResolution())
     
     #Use painter to send output to printer
     pdfPainter = QPainter(printer)
     paperRectMM = printer.pageRect(QPrinter.Millimeter)
     paperRectPixel = printer.pageRect(QPrinter.DevicePixel)
     composition.render(pdfPainter,paperRectPixel,paperRectMM)
     pdfPainter.end()
Esempio n. 4
0
    def _exportCompositionAsPDF(self, composition, filePath):
        """
        Render the composition as a PDF file.
        """
        printer = QPrinter()
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOutputFileName(filePath)
        printer.setPaperSize(
            QSizeF(composition.paperWidth(), composition.paperHeight()),
            QPrinter.Millimeter)
        printer.setFullPage(True)
        printer.setColorMode(QPrinter.Color)
        printer.setResolution(composition.printResolution())

        #Use painter to send output to printer
        pdfPainter = QPainter(printer)
        paperRectMM = printer.pageRect(QPrinter.Millimeter)
        paperRectPixel = printer.pageRect(QPrinter.DevicePixel)
        composition.render(pdfPainter, paperRectPixel, paperRectMM)
        pdfPainter.end()
Esempio n. 5
0
    def handlePrintPdf(self):
        printer = QPrinter()
        pdffile = 'test.pdf'
        printer.setResolution(96)
        printer.setPageSize(QPrinter.Letter)
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOutputFileName(pdffile)
        printer.setPageMargins(5, 5, 5, 10, QPrinter.Millimeter)
        document = self.makeTableDocument()

        document.setPageSize(QSizeF(printer.pageRect().size()))
        document.print_(printer)
Esempio n. 6
0
 def __init__(self, parent=None, fakeStartup=False, filename=None):
     '''
     Constructor
     '''
     self._fakeStartup = fakeStartup
     super(DrumBurp, self).__init__(parent)
     self._state = None
     self._asciiSettings = None
     self._printer = None
     self.setupUi(self)
     self.scoreScene = None
     self.paperBox.blockSignals(True)
     self.paperBox.clear()
     self._knownPageHeights = []
     printer = QPrinter()
     printer.setOutputFileName("invalid.pdf")
     for name in dir(QPrinter):
         attr = getattr(QPrinter, name)
         if (isinstance(attr, QPrinter.PageSize) and name != "Custom"):
             self.paperBox.addItem(name)
             printer.setPaperSize(attr)
             self._knownPageHeights.append(printer.pageRect().height())
     self._pageHeight = printer.paperRect().height()
     self.paperBox.blockSignals(False)
     settings = self._makeQSettings()
     self.recentFiles = [
         unicode(fname)
         for fname in settings.value("RecentFiles").toStringList()
         if os.path.exists(unicode(fname))
     ]
     if filename is None:
         filename = (None
                     if len(self.recentFiles) == 0 else self.recentFiles[0])
     self.filename = filename
     self.addToRecentFiles()
     self.updateRecentFiles()
     self.songProperties = QDisplayProperties()
     # Create scene
     self.scoreScene = QScore(self)
     self.restoreGeometry(settings.value("Geometry").toByteArray())
     self.restoreState(settings.value("MainWindow/State").toByteArray())
     self.statusbar.addPermanentWidget(QFrame())
     self.availableNotesLabel = QLabel()
     self.availableNotesLabel.setMinimumWidth(250)
     self.statusbar.addPermanentWidget(self.availableNotesLabel)
     self._infoBar = QLabel()
     self.statusbar.addPermanentWidget(self._infoBar)
     self._initializeState()
     self.setSections()
     QTimer.singleShot(0, self._startUp)
     self.actionCheckOnStartup.setChecked(
         settings.value("CheckOnStartup").toBool())
Esempio n. 7
0
 def __init__(self, parent = None, fakeStartup = False, filename = None):
     '''
     Constructor
     '''
     self._fakeStartup = fakeStartup
     super(DrumBurp, self).__init__(parent)
     self._state = None
     self._asciiSettings = None
     self._printer = None
     self.setupUi(self)
     self.scoreScene = None
     self.paperBox.blockSignals(True)
     self.paperBox.clear()
     self._knownPageHeights = []
     printer = QPrinter()
     printer.setOutputFileName("invalid.pdf")
     for name in dir(QPrinter):
         attr = getattr(QPrinter, name)
         if (isinstance(attr, QPrinter.PageSize)
             and name != "Custom"):
             self.paperBox.addItem(name)
             printer.setPaperSize(attr)
             self._knownPageHeights.append(printer.pageRect().height())
     self._pageHeight = printer.paperRect().height()
     self.paperBox.blockSignals(False)
     settings = self._makeQSettings()
     self.recentFiles = [unicode(fname) for fname in
                         settings.value("RecentFiles").toStringList()
                         if os.path.exists(unicode(fname))]
     if filename is None:
         filename = (None
                     if len(self.recentFiles) == 0
                     else self.recentFiles[0])
     self.filename = filename
     self.addToRecentFiles()
     self.updateRecentFiles()
     self.songProperties = QDisplayProperties()
     # Create scene
     self.scoreScene = QScore(self)
     self.restoreGeometry(settings.value("Geometry").toByteArray())
     self.restoreState(settings.value("MainWindow/State").toByteArray())
     self.statusbar.addPermanentWidget(QFrame())
     self.availableNotesLabel = QLabel()
     self.availableNotesLabel.setMinimumWidth(250)
     self.statusbar.addPermanentWidget(self.availableNotesLabel)
     self._infoBar = QLabel()
     self.statusbar.addPermanentWidget(self._infoBar)
     self._initializeState()
     self.setSections()
     QTimer.singleShot(0, self._startUp)
     self.actionCheckOnStartup.setChecked(settings.value("CheckOnStartup").toBool())
Esempio n. 8
0
 def on_stampa_triggered(self, checked=None):
     """Slot launched when the user click on the "stampa" button"""
     if checked is None:
         return
     printer = QPrinter()
     print_dialog = QPrintDialog(printer, self)
     if print_dialog.exec_() == QDialog.Accepted:
         printer.setOrientation(QPrinter.Landscape)
         painter = QPainter()
         painter.begin(printer)
         geometry = self.ui_calendar.Table.geometry()
         self.ui_calendar.Table.setGeometry(printer.pageRect())
         self.ui_calendar.Table.render(painter)
         self.ui_calendar.Table.setGeometry(geometry)
         painter.end()
Esempio n. 9
0
    def makeTableDocument(self):
        printer = QPrinter()
        document = QTextDocument()
        document.setDefaultStyleSheet("table {border:1px; border-color:teal}")
        document.setDefaultStyleSheet("h1, h2, h3 {color:teal}")
        document.setDocumentMargin(0.0)
        document.setPageSize(QSizeF(printer.pageRect().size()))
        header = '''
                <html>
                    <body>
                        <div style="line-height:2.5">
                            <h1>Desmond International College</h1>
                            <h2>Km4, Happiness Street, Kafanchan</h2>
                            <h2>Kaduna, Nigeria</h2>
                        </div>
                        <div>
                            <h2 style='display:block; text-align:center; word-spacing:10vw; text-transform: uppercase; margin-top:25px; margin-bottom:15px'><u>STUDENT DATA TABLE</u></h2>    
                        </div>
                    </body>
                </html>
                '''
        #print(dir(document))

        cursor = QTextCursor(document)
        rows = self.table.rowCount()
        columns = self.table.columnCount()
        cursor.insertHtml(header)
        table = cursor.insertTable(rows + 1, columns)
        formats = table.format()
        formats.setHeaderRowCount(1)
        table.setFormat(formats)
        formats = cursor.blockCharFormat()
        formats.setFontWeight(QFont.Bold)
        for column in range(columns):
            cursor.setCharFormat(formats)
            cursor.insertText(self.table.horizontalHeaderItem(column).text())
            cursor.movePosition(QTextCursor.NextCell)
        for row in range(rows):
            for column in range(columns):
                cursor.insertText(self.table.item(row, column).text())
                cursor.movePosition(QTextCursor.NextCell)

        return document
def main():
	app = QApplication(sys.argv)
	
	# Preparing the pdf
	doc = QTextDocument()
	printer = QPrinter()
	printer.setOutputFileName("KabitGurdas.pdf")
	printer.setOutputFormat(QPrinter.PdfFormat)
	
	# Setting page size as A5
	printer.setPaperSize(QPrinter.A5);
	# page margin
	
	printer.setPageMargins(12, 16, 12, 20, QPrinter.Millimeter)
	doc.setPageSize(QSizeF(printer.pageRect().size()))
	
	painter = QPainter()
	painter.begin( printer )	
	
	# Set poem book and get each poem in pdf
	book = kb()
	
	for KabitNumber in range(1,676):		
		# Add text in html to page
		doc.setHtml(book.getKabitHTML(KabitNumber))
		doc.defaultFont().setPointSize(20)
	
		# A new page
		printer.newPage()
		# Create a QPainter to draw our content    
		doc.drawContents(painter)#,printer.pageRect().translated( -printer.pageRect().x(), -printer.pageRect().y() ))
		#QTextDocument.drawContents(QPainter, QRectF rect=QRectF())
		doc.print_(printer)
	
	# Done.
	painter.end()
Esempio n. 11
0
class Printer(BasePrinter):

    FONT_NAME = 'Courrier'

    def __init__(self, *args, **kwargs):
        BasePrinter.__init__(self, *args, **kwargs)
        self.page_number = 0

        self.printer = QPrinter(QPrinter.HighResolution)
        ## todo: remove-me
        self.printer.setOutputFileName("ufwi_log-page.pdf")
        self.printer.setOutputFormat(QPrinter.NativeFormat)
        #self.printer.setOrientation(QPrinter.Landscape)
        self.printer.setPaperSize(QPrinter.A4)
        self.printer.setResolution(100)

    def _init_painter(self):
        self.painter = QPainter(self.printer)
        self.painter.setRenderHint(QPainter.Antialiasing)
        self.painter.setBackgroundMode(Qt.OpaqueMode)
        self.painter.setBrush(Qt.white)
        self.painter.setFont(QFont(self.FONT_NAME, 9))
        fillrect = QRect(0, 0, self.printer.pageRect().width(), self.printer.pageRect().height())
        self.painter.fillRect(fillrect, self.painter.brush())
        self.page_number = 1

        self._draw_header()
        self._draw_footer()
        self.drawCentralTitle(self.title)
        if self.logo:
            self.painter.drawImage(QPoint(self.width() / 2 - self.logo.width() / 2,
                                          self.height() / 2 + QFontMetrics(self.painter.font()).height() + self.height() / 4 - self.logo.height() / 2),
                                   self.logo)

    def _draw_header(self):
        if not self.header_enabled:
            return

        h = -self.headerHeight()
        self.drawText(QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm'), h, Qt.AlignLeft)
        h += self.drawText(self.interval_label, h, Qt.AlignRight)
        self.drawText(self.title, h, Qt.AlignLeft)
        self.drawText(self.enterprise, h, Qt.AlignRight)

        self.painter.drawLine(0,
                              self.headerHeight() - 1,
                              self.printer.pageRect().width(),
                              self.headerHeight() - 1)

    def _draw_footer(self):
        if not self.footer_enabled:
            return

        self.painter.drawLine(10,
                              self.printer.pageRect().height() - self.footerHeight(),
                              self.printer.pageRect().width() - 10,
                              self.printer.pageRect().height() - self.footerHeight())
        h = self.height() + 1
        #self.drawText('topleft', h, Qt.AlignLeft)
        h += self.drawText(u'© 2008-2010 EdenWall', h, Qt.AlignRight, size=9)
        self.drawText(unicode(self.page_number), h, Qt.AlignHCenter)
        #self.drawText('bottomright', h, Qt.AlignRight)

    def headerHeight(self):
        if self.header_enabled:
            return 40
        else:
            return 0

    def footerHeight(self):
        if self.footer_enabled:
            return 40
        else:
            return 0

    def height(self):
        return self.printer.pageRect().height() - self.headerHeight() - self.footerHeight()

    def width(self):
        return self.printer.pageRect().width()

    def showDialog(self, parent):
        dialog = QPrintDialog(self.printer, parent)
        if dialog.exec_() != QPrintDialog.Accepted:
            return False

        self._init_painter()
        return True

    def end(self):
        self.painter.end()

    def newPage(self):
        self.printer.newPage()
        self.page_number += 1
        self._draw_header()
        self._draw_footer()

    def drawCentralTitle(self, text):
        self.painter.setBackgroundMode(Qt.TransparentMode)
        f = QFont(self.FONT_NAME, 22)
        f.setWeight(QFont.Bold)
        self.painter.setFont(f)
        height = QFontMetrics(self.painter.font()).height()
        self.painter.drawText(QRect(0,
                                    self.printer.pageRect().height() * 0.5,
                                    self.printer.pageRect().width(),
                                    height),
                              Qt.AlignHCenter | Qt.AlignVCenter,
                              text)
        self.painter.setFont(QFont(self.FONT_NAME, 10))

    def drawHCenteredTitle(self, text, vpos):
        self.painter.setBackgroundMode(Qt.TransparentMode)
        self.painter.setFont(QFont(self.FONT_NAME, 18))
        height = QFontMetrics(self.painter.font()).height()
        self.painter.drawText(QRect(0,
                                    self.headerHeight() + vpos,
                                    self.printer.pageRect().width(),
                                    height),
                              Qt.AlignHCenter | Qt.AlignVCenter,
                              text)
        self.painter.setFont(QFont(self.FONT_NAME, 10))
        return height

    def drawText(self, text, vpos, halign=Qt.AlignLeft, size=10, width=None):
        self.painter.setBackgroundMode(Qt.TransparentMode)
        self.painter.setFont(QFont(self.FONT_NAME, size))
        height = QFontMetrics(self.painter.font()).height()
        if width is None:
            width = self.printer.pageRect().width()
        self.painter.drawText(QRect(0,
                                    self.headerHeight() + vpos,
                                    width,
                                    height),
                              halign | Qt.AlignVCenter,
                              text)

        return height

    def drawFragment(self, frag_widget, vpos, len_frags):

        # Display it on half the page
        scale = 1
        single_frag = False
        if frag_widget.pos == len_frags - 1 and frag_widget.pos % 2 == 0:
            scale = 2
            single_frag = True

        y = self.headerHeight() + vpos
        width = self.printer.pageRect().width() * 0.8 * scale
        height = self.printer.pageRect().height() * 0.5 * 0.8
        x = self.printer.pageRect().width() * 0.1

        if single_frag:
            if frag_widget.view.__class__.__name__ != "TreeFragmentView":
                x = -(width - self.printer.pageRect().width()) / 2.
            else:
                width = width / 2.

        rect = QRect(x, y, width, height)

        # Temporary remove stylesheet to avoid to print background.
        stylesheet_save = frag_widget.styleSheet()
        frag_widget.setStyleSheet('')
        frag_widget.getView().printMe(self.painter, rect)
        frag_widget.setStyleSheet(stylesheet_save)
Esempio n. 12
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self._TITLE = 'Equilibrium Simulator 2015'
        self.setGeometry(0, 22, 1200, 400)
        self.setWindowTitle(self._TITLE)
        self._showorhide = "Show "
        self._printbox = None
        self._printer = QPrinter()
        self._Squares = []

        # Menu bar
        self.MenuBar = self.menuBar()
        self.filemenu = self.MenuBar.addMenu('File')
        self.optionsmenu = self.MenuBar.addMenu('Options')
        self.aboutmenu = self.MenuBar.addMenu('About')

        # File - New
        newfile = QAction(QIcon('exit.png'), 'New', self)
        newfile.setStatusTip('Create a new file')
        self.filemenu.addAction(newfile)
        newfile.triggered.connect(self.shownew)

        # File - Open
        openfile = QAction(QIcon('open.png'), 'Open', self)
        openfile.setStatusTip('Open a file')
        self.filemenu.addAction(openfile)
        openfile.triggered.connect(self.showopen)

        # File - Save
        savefile = QAction(QIcon('save.png'), 'Save', self)
        savefile.setStatusTip('Save the current file')
        self.filemenu.addAction(savefile)
        savefile.triggered.connect(self.save)

        # File - Save as
        saveasfile = QAction(QIcon('save.png'), 'Save as', self)
        saveasfile.setStatusTip('Save the current file as a different file')
        self.filemenu.addAction(saveasfile)
        saveasfile.triggered.connect(self.showsaveas)

        # File - Print
        printfile = QAction(QIcon('save.png'), 'Print', self)
        printfile.setStatusTip('Print the displayed reactions')
        self.filemenu.addAction(printfile)
        printfile.triggered.connect(self.showprint)

        # File - Exit
        exitaction = QAction(QIcon('exit.png'), '&Exit', self)
        exitaction.setStatusTip('Exit the program')
        exitaction.triggered.connect(qApp.quit)
        self.filemenu.addAction(exitaction)

        # Options - Edit Conditions
        editconds = QAction(QIcon('exit.png'), 'Edit Conditions', self)
        editconds.setStatusTip('Edit the conditions of the current reaction')
        editconds.triggered.connect(self.editcd)
        self.optionsmenu.addAction(editconds)

        # About - Version
        version = QAction(QIcon('exit.png'), 'Version 1.1', self)
        version.setStatusTip('The version of this program you are using')

        # Widget of editable reactions
        self._ReactionsWindow = ReactionWidget()
        self._ReactionsWindow.setGeometry(0, 20, 600, 380)
        self._ReactionsWindow.setParent(self)

        # Widget of non-editable reaction, for comparison
        self._ComparingProfile = ReactionProfile(
            self._ReactionsWindow.GetCurrentReaction(), True)
        self._ComparingProfile.setGeometry(600, 40, 600, 380)
        self._ComparingProfile.setParent(self)
        self.aboutmenu.addAction(version)
        self.show()

    # You should call the shownew(), showopen() etc. methods,
    # not the new(), open() etc. methods, as a) they do not provide user options;
    # b) it may lead to errors; c) the showing methods call them anyway
    def editcd(self):
        self._ReactionsWindow.EditReaction()

    def showopen(self):
        fileaddress = QFileDialog.getOpenFileName(self, "Open...", "",
                                                  "Simulator Files (*.rctn)")
        if fileaddress != "":
            self.open(fileaddress)
            self.setWindowTitle(fileaddress + " - " + self._TITLE)

    def open(self, fileaddress):
        openfrom = open(fileaddress, "rb")
        loadedfile = pickle.load(openfrom)
        openfrom.close()
        file = open("last.ptr", "w")
        file.write(fileaddress)
        file.close()
        self._ReactionsWindow.SetOpenReactionFile(loadedfile)
        self.setWindowTitle(fileaddress + " - " + self._TITLE)

    def save(self):
        self._ReactionsWindow.save()

    def showsaveas(self):
        self._ReactionsWindow.showsaveas()

    def shownew(self):
        self._newfilebox = QMessageBox()
        self._newfilebox.setWindowTitle("Save?")
        self._newfilebox.setText(
            "Would you like to save this file before opening a new one?")
        self._newfilebox.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
        self._newfilebox.setDefaultButton(QMessageBox.Yes)
        if self._newfilebox.exec_() == QMessageBox.Yes:
            file = open("last.ptr", "w")
            file.write("")
            file.close()
            self.save()
        self.setWindowTitle(self._TITLE)
        self._ReactionsWindow.SetOpenReactionFile(ReactionFile())

    def showprint(self):
        self._printbox = QPrintDialog(self)
        if self._printbox.exec_() == QDialog.Accepted:
            self.printout()

    def printout(self):
        # Page width, page height, widget width
        pw = self._printer.pageRect().width()
        ph = self._printer.pageRect().height()
        ww = self._ComparingProfile.width()
        painter = QPainter(self._printer)
        scale = (ww / pw) * 1.5
        painter.scale(scale, scale)
        self._ReactionsWindow.currentWidget().render(painter)
        painter.translate(0, ph / 2)
        self._ComparingProfile.render(painter)
        painter.translate(pw * 0.6, -ph / 2)
        painter.scale(0.8, 0.8)
        self._ReactionsWindow.currentWidget().PrintGraph(
            painter, "Concentration")
        painter.translate(0, ph * 0.25)
        self._ReactionsWindow.currentWidget().PrintGraph(painter, "Rate")
        painter.translate(0, ph * 0.4)
        self._ComparingProfile.PrintGraph(painter, "Concentration")
        painter.translate(0, ph * 0.25)
        self._ComparingProfile.PrintGraph(painter, "Rate")
        painter.end()

    # GETTERS AND SETTERS
    def GetWindowTitle(self):
        return self._TITLE

    def SetComparingReaction(self, reaction):
        self._ComparingProfile.SetReaction(reaction)
        self._ComparingProfile.update()

    def GetComparingReaction(self):
        return self._ComparingProfile.GetReaction()
    def export_all_features(self):
        pdf_painter = None
        """Export map to pdf atlas style (one page per feature)"""
        if VRP_DEBUG is True: QgsMessageLog.logMessage(u'exporting map', DLG_CAPTION)
        try:

            result = self.__delete_pdf()
            if not result is None:
                return result

            ids = []
            exp = QgsExpression(self.feature_filter)
            if exp.hasParserError():
                raise Exception(exp.parserErrorString())
            exp.prepare(self.coverage_layer.pendingFields())
            for feature in self.coverage_layer.getFeatures():
                value = exp.evaluate(feature)
                if exp.hasEvalError():
                    raise ValueError(exp.evalErrorString())
                if bool(value):
                    if VRP_DEBUG is True: QgsMessageLog.logMessage(u'export map, feature id:{0}'.format(feature.id()), DLG_CAPTION)
                    ids.append(feature.id())
            self.coverage_layer.select(ids)
            bbox = self.coverage_layer.boundingBoxOfSelected()
            self.canvas.zoomToSelected(self.coverage_layer)
            if VRP_DEBUG is True: QgsMessageLog.logMessage(u'bbox:{0}'.format(bbox.toString()), DLG_CAPTION)

            #self.map_renderer.setExtent(bbox)
            #self.map_renderer.updateScale()

            #read plotlayout
            composition = QgsComposition(self.map_renderer)
            self.composition = composition
            composition.setPlotStyle(QgsComposition.Print)
            error, xml_doc = self.__read_template()
            if not error is None:
                return error
            if composition.loadFromTemplate(xml_doc) is False:
                return u'Konnte Template nicht laden!\n{0}'.format(self.template_qpt)

            #read textinfo layout
            self.comp_textinfo = QgsComposition(self.map_renderer)
            self.comp_textinfo.setPlotStyle(QgsComposition.Print)
            error, xml_doc = self.__read_template(True)
            if not error is None:
                return error
            if self.comp_textinfo.loadFromTemplate(xml_doc) is False:
                return u'Konnte Template nicht laden!\n{0}'.format(self.settings.textinfo_layout())


            new_ext = bbox
            if QGis.QGIS_VERSION_INT > 20200:
                compmaps = self.__get_items(QgsComposerMap)
                if len(compmaps) < 1:
                    return u'Kein Kartenfenster im Layout vorhanden!'
                compmap = compmaps[0]
            else:
                if len(composition.composerMapItems()) < 1:
                    return u'Kein Kartenfenster im Layout vorhanden!'
                compmap = composition.composerMapItems()[0]

            self.composermap = compmap
            #self.composermap.setPreviewMode(QgsComposerMap.Render)
            #self.composermap.setPreviewMode(QgsComposerMap.Rectangle)
            #taken from QgsComposerMap::setNewAtlasFeatureExtent (not yet available in QGIS 2.0)
            #http://www.qgis.org/api/qgscomposermap_8cpp_source.html#l00610
            old_ratio = compmap.rect().width() / compmap.rect().height()
            new_ratio = new_ext.width() / new_ext.height()
            if old_ratio < new_ratio:
                new_height = new_ext.width() / old_ratio
                delta_height = new_height - new_ext.height()
                new_ext.setYMinimum( bbox.yMinimum() - delta_height / 2)
                new_ext.setYMaximum(bbox.yMaximum() + delta_height / 2)
            else:
                new_width = old_ratio * new_ext.height()
                delta_width = new_width - new_ext.width()
                new_ext.setXMinimum(bbox.xMinimum() - delta_width / 2)
                new_ext.setXMaximum(bbox.xMaximum() + delta_width / 2)

            if VRP_DEBUG is True: QgsMessageLog.logMessage(u'bbox old:{0}'.format(compmap.extent().toString()), DLG_CAPTION)
            compmap.setNewExtent(new_ext)
            if VRP_DEBUG is True: QgsMessageLog.logMessage(u'bbox new:{0}'.format(compmap.extent().toString()), DLG_CAPTION)
            #round up to next 1000
            compmap.setNewScale(math.ceil((compmap.scale()/1000.0)) * 1000.0)
            if VRP_DEBUG is True: QgsMessageLog.logMessage(u'bbox new (after scale):{0}'.format(compmap.extent().toString()), DLG_CAPTION)

            #add ORTHO after new extent -> performance
            if not self.ortho is None:
                self.ortho_lyr = self.__add_raster_layer(self.ortho, self.lyrname_ortho)
                self.__reorder_layers()

            self.comp_leg = self.__get_items(QgsComposerLegend)
            self.comp_lbl = self.__get_items(QgsComposerLabel)


            self.__update_composer_items(self.settings.dkm_gemeinde(self.gem_name)['lyrnamegstk'])

            if VRP_DEBUG is True:
                QgsMessageLog.logMessage(u'paperWidth:{0} paperHeight:{1}'.format(composition.paperWidth(), composition.paperHeight()), DLG_CAPTION)

            printer = QPrinter()
            printer.setOutputFormat(QPrinter.PdfFormat)
            printer.setOutputFileName(self.pdf_map)
            printer.setPaperSize(QSizeF(composition.paperWidth(), composition.paperHeight()), QPrinter.Millimeter)
            printer.setFullPage(True)
            printer.setColorMode(QPrinter.Color)
            printer.setResolution(composition.printResolution())

            pdf_painter = QPainter(printer)
            paper_rect_pixel = printer.pageRect(QPrinter.DevicePixel)
            paper_rect_mm = printer.pageRect(QPrinter.Millimeter)
            QgsPaintEngineHack.fixEngineFlags(printer.paintEngine())
            #DKM only
            if len(self.themen) < 1:
                composition.render(pdf_painter, paper_rect_pixel, paper_rect_mm)
            else:
                self.statistics = OrderedDict()
                try:
                    pass
                    #lyr = QgsVectorLayer('/home/bergw/VoGIS-Raumplanung-Daten/Geodaten/Raumplanung/Flaechenwidmung/Dornbirn/Flaechenwidmungsplan/fwp_flaeche.shp', 'flaeiw', 'ogr')
                    #lyr.loadNamedStyle('/home/bergw/VoGIS-Raumplanung-Daten/Geodaten/Raumplanung/Flaechenwidmung/Vorarlberg/Flaechenwidmungsplan/fwp_flaeche.qml')
                    #QgsMapLayerRegistry.instance().addMapLayer(lyr)
                except:
                    QgsMessageLog.logMessage('new lyr:{0}'.format(sys.exc_info()[0]), DLG_CAPTION)
                #QgsMapLayerRegistry.instance().addMapLayer(lyr)
                cntr = 0
                for thema, sub_themen in self.themen.iteritems():
                    if VRP_DEBUG is True: QgsMessageLog.logMessage('drucke Thema:{0}'.format(thema.name), DLG_CAPTION)
                    if sub_themen is None:
                        layers = self.__add_layers(thema)
                        self.__calculate_statistics(thema, thema, layers)
                        #no qml -> not visible -> means no map
                        if self.__at_least_one_visible(layers) is True:
                            if cntr > 0:
                                printer.newPage()
                            self.__reorder_layers()
                            self.__update_composer_items(thema.name, layers=layers)
                            composition.renderPage(pdf_painter, 0)
                            QgsMapLayerRegistry.instance().removeMapLayers([lyr.id() for lyr in layers])
                            cntr += 1
                        else:
                            QgsMapLayerRegistry.instance().removeMapLayers([lyr.id() for lyr in layers])
                    if not sub_themen is None:
                        for sub_thema in sub_themen:
                            if VRP_DEBUG is True: QgsMessageLog.logMessage(u'drucke SubThema:{0}'.format(sub_thema.name), DLG_CAPTION)
                            layers = self.__add_layers(sub_thema)
                            self.__calculate_statistics(thema, sub_thema, layers)
                            #no qml -> not visible -> means no map
                            if self.__at_least_one_visible(layers) is True:
                                if cntr > 0:
                                    printer.newPage()
                                self.__reorder_layers()
                                self.__update_composer_items(thema.name, subthema=sub_thema.name, layers=layers)
                                composition.renderPage(pdf_painter, 0)
                                QgsMapLayerRegistry.instance().removeMapLayers([lyr.id() for lyr in layers])
                                cntr += 1
                            else:
                                QgsMapLayerRegistry.instance().removeMapLayers([lyr.id() for lyr in layers])
            #output statistics
            if len(self.statistics) > 0:
                printer.setPaperSize(QSizeF(210, 297), QPrinter.Millimeter)
                tabelle = self.__get_item_byid(self.comp_textinfo, 'TABELLE')
                if tabelle is None:
                    self.iface.messageBar().pushMessage(u'Layout (Textinfo): Kein Textelement mit ID "TABELLE" vorhanden.', QgsMessageBar.CRITICAL)
                else:
                    try:
                        str_flaechen = ''
                        idx = 0
                        for gnr, stats in self.statistics.iteritems():
                            comma = ', ' if idx > 0 else ''
                            str_flaechen += u'{0}{1} ({2:.2f}m²)'.format(comma, gnr, stats[0].flaeche)
                            idx += 1
                        lbls = self.__get_items(QgsComposerLabel, self.comp_textinfo)
                        self.__update_composer_items('', labels=lbls, gnrflaeche=str_flaechen)
                        html = tabelle.text()
                        html += u'<table>'
                        #gnrcnt = 0
                        for gnr, stats in self.statistics.iteritems():
                            #if gnrcnt > 0:
                            #    html += u'<tr class="abstand"><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>'
                            html += u'<tr><th class="gnr"></th><th class="gnr">{0}</th><th class="gnr"></th></tr>'.format(gnr)
                            #html += u'<tr class="abstand"><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>'
                            curr_thema = ''
                            for stat in stats:
                                if stat.thema != curr_thema:
                                    html += u'<tr><th class="thema"></th><th class="thema">{0}</th><th class="thema"></th></tr>'.format(stat.thema)
                                curr_thema = stat.thema
                                for thema, subthema in stat.subthemen.iteritems():
                                    for quelle in subthema:
                                        html += u'<tr><td class="col1">{0}</td>'.format(quelle.name)
                                        attr_val = ''
                                        attr_area = ''
                                        for text, area in quelle.txt_area.iteritems():
                                            attr_val += u'{0}<br />'.format(text)
                                            attr_area += u'{0:.2f}m² <br />'.format(area)
                                        html += u'<td class="col2">{0}</td><td class="col3">{1}</td></tr>'.format(attr_val, attr_area)
                            #gnrcnt += 1
                        html += u'</table>'
                        tabelle.setText(html)
                        printer.newPage()
                        self.comp_textinfo.renderPage(pdf_painter, 0)
                    except:
                        msg = 'Statistikausgabe:\n\n{0}'.format(traceback.format_exc())
                        QgsMessageLog.logMessage(msg, DLG_CAPTION)
                        self.iface.messageBar().pushMessage(msg, QgsMessageBar.CRITICAL)
        except:
            msg = 'export pdf (catch all):\n\n{0}'.format(traceback.format_exc())
            QgsMessageLog.logMessage(msg, DLG_CAPTION)
            self.iface.messageBar().pushMessage(msg.replace(u'\n', u''), QgsMessageBar.CRITICAL)
            return msg
        finally:
            #end pdf
            if not pdf_painter is None:
                pdf_painter.end()
        return None
    def save(self, imgName, w=None, h=None, header=None, \
                 dpi=150, take_region=False):
        ext = imgName.split(".")[-1].upper()

        root = self.startNode
        #aspect_ratio = root.fullRegion.height() / root.fullRegion.width()
        aspect_ratio = self.i_height / self.i_width

        # auto adjust size
        if w is None and h is None and (ext == "PDF" or ext == "PS"):
            w = dpi * 6.4
            h = w * aspect_ratio
            if h>dpi * 11:
                h = dpi * 11
                w = h / aspect_ratio
        elif w is None and h is None:
            w = self.i_width
            h = self.i_height
        elif h is None :
            h = w * aspect_ratio
        elif w is None:
            w = h / aspect_ratio

        if ext == "SVG": 
            svg = QtSvg.QSvgGenerator()
            svg.setFileName(imgName)
            svg.setSize(QtCore.QSize(w, h))
            svg.setViewBox(QtCore.QRect(0, 0, w, h))
            #svg.setTitle("SVG Generator Example Drawing")
            #svg.setDescription("An SVG drawing created by the SVG Generator")
            
            pp = QtGui.QPainter()
            pp.begin(svg)
            targetRect =  QtCore.QRectF(0, 0, w, h)
            self.render(pp, targetRect, self.sceneRect())
            pp.end()

        elif ext == "PDF" or ext == "PS":
            format = QPrinter.PostScriptFormat if ext == "PS" else QPrinter.PdfFormat

            printer = QPrinter(QPrinter.HighResolution)
            printer.setResolution(dpi)
            printer.setOutputFormat(format)
            printer.setPageSize(QPrinter.A4)
            
            pageTopLeft = printer.pageRect().topLeft()
            paperTopLeft = printer.paperRect().topLeft()
            # For PS -> problems with margins
            # print paperTopLeft.x(), paperTopLeft.y()
            # print pageTopLeft.x(), pageTopLeft.y()
            # print  printer.paperRect().height(),  printer.pageRect().height()
            topleft =  pageTopLeft - paperTopLeft

            printer.setFullPage(True);
            printer.setOutputFileName(imgName);
            pp = QtGui.QPainter(printer)
            if header:
                pp.setFont(QtGui.QFont("Verdana",12))
                pp.drawText(topleft.x(),20, header)
                targetRect =  QtCore.QRectF(topleft.x(), 20 + (topleft.y()*2), w, h)
            else:
                targetRect =  QtCore.QRectF(topleft.x(), topleft.y()*2, w, h)

            if take_region:
                self.selector.setVisible(False)
                self.render(pp, targetRect, self.selector.rect())
                self.selector.setVisible(True)
            else:
                self.render(pp, targetRect, self.sceneRect())
            pp.end()
            return
        else:
            targetRect = QtCore.QRectF(0, 0, w, h)
            ii= QtGui.QImage(w, \
                                 h, \
                                 QtGui.QImage.Format_ARGB32)
            pp = QtGui.QPainter(ii)
            pp.setRenderHint(QtGui.QPainter.Antialiasing )
            pp.setRenderHint(QtGui.QPainter.TextAntialiasing)
            pp.setRenderHint(QtGui.QPainter.SmoothPixmapTransform)
            if take_region:
                self.selector.setVisible(False)
                self.render(pp, targetRect, self.selector.rect())
                self.selector.setVisible(True)
            else:
                self.render(pp, targetRect, self.sceneRect())
            pp.end()
            ii.save(imgName)
Esempio n. 15
0
Pun = u"punjabi"
Hin = u"hindi"
Tr = u"english"
Ro = u"roman"

# Preparing the pdf
doc = QTextDocument()

printer = QPrinter()
printer.setOutputFileName("KabitGurdas2.pdf")
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setPaperSize(QPrinter.A4)
# page margin

printer.setPageMargins(12, 16, 12, 20, QPrinter.Millimeter)
doc.setPageSize(QSizeF(printer.pageRect().size()))

# We have a database of 675 kabits
KabitRange = range(1, 676)
html = [1] * KabitRange.__len__()
ch = [1] * KabitRange.__len__()

count = 0

painter = QPainter()
painter.begin(printer)

for KabitNumber in KabitRange:
    # 	print KabitNumber
    Plist = GetKabitTextList(KabitNumber, Pun)
    Elist = GetKabitTextList(KabitNumber, Tr)
Esempio n. 16
0
File: dw2pdf.py Progetto: tedlaz/m13
class Form(QDialog):
    def __init__(self, args=None,parent=None):
        super(Form, self).__init__(parent)
        self.printer = QPrinter()
        self.printer.setPageSize(QPrinter.A4)
        self.filename = ''
        #File name to convert
        lblFileName = QLabel("File Name")
        self.txtFileName = QLineEdit()
        if len(args) > 1:
          self.txtFileName.setText(args[1])
          self.filename = args[1]
        self.txtFileName.setReadOnly(True)
        btnGetFileName = QToolButton()
        btnGetFileName.setText("..")
        getFileLayout = QHBoxLayout()
        getFileLayout.addWidget(lblFileName)
        getFileLayout.addWidget(self.txtFileName)
        getFileLayout.addWidget(btnGetFileName)
        
        #Code page of file
        lblCodePage = QLabel("Code Page")
        self.cmbCodePage = QComboBox()
        self.cmbCodePage.addItem("dos")
        self.cmbCodePage.addItem("windows")
        self.cmbCodePage.addItem("utf8")
        codePageLayout = QHBoxLayout()
        codePageLayout.addStretch()
        codePageLayout.addWidget(lblCodePage)
        codePageLayout.addWidget(self.cmbCodePage)
       
        
        #Printer Orientation (Portrait / Landscape)
        lblOrientation = QLabel("Orientation")
        self.cmbOrientation = QComboBox()
        self.cmbOrientation.addItem("portait")
        self.cmbOrientation.addItem("landscape")
        orientationLayout = QHBoxLayout()
        orientationLayout.addStretch()
        orientationLayout.addWidget(lblOrientation)
        orientationLayout.addWidget(self.cmbOrientation)
        
        
        #Buttons for save or Just quit
        bSave = QPushButton("Go for it")
        bQuit = QPushButton("Abort")
        buttonLayout = QHBoxLayout()
        buttonLayout.addWidget(bQuit)
        buttonLayout.addStretch()
        buttonLayout.addWidget(bSave)
        
        #Final Layout
        layout = QVBoxLayout()
        layout.addLayout(getFileLayout)
        layout.addLayout(codePageLayout)
        layout.addLayout(orientationLayout)
        layout.addLayout(buttonLayout)
        self.setLayout(layout)
        
        #Connections
        self.connect(bSave, SIGNAL("clicked()"),self.printViaQPainter)
        self.connect(bQuit, SIGNAL("clicked()"), self.accept)
        self.connect(btnGetFileName, SIGNAL("clicked()"),self.getFileName)
        self.setWindowTitle("dos/windows text to PDF")
        
    def getFileName(self):
        fd = QFileDialog(self)
        self.filename = fd.getOpenFileName()
        self.txtFileName.setText(self.filename)
        
    def printViaQPainter(self):
        from os.path import isfile
        if isfile(self.filename):
            lines = open(self.filename)
        else:
            return
        a = self.filename.split('.')
        s = a[-1]
        fname = ''
        for i in range(len(a)-1) :
          fname += a[i]
        fname += '.pdf'        
        self.printer.setOutputFileName(fname)
        self.printer.setOutputFormat(QPrinter.PdfFormat)
        if self.cmbOrientation.currentText() == 'landscape':
            self.printer.setOrientation(QPrinter.Landscape)
        pageRect = self.printer.pageRect()
        LeftMargin = 15
        biggest = findBiggestLine(self.filename)
        bestSize = findBestFontSize(biggest,pageRect)
        sansFont = QFont("Courier", bestSize)
        sansLineHeight = QFontMetrics(sansFont).height()
        painter = QPainter(self.printer)
        page = 1
        y = 20
        cpage = codePage(self.cmbCodePage.currentText())
        for line in lines:
            painter.save()
            painter.setFont(sansFont)
            y += sansLineHeight
            x = LeftMargin
            try:
                painter.drawText(x,y,line[:-1].decode(cpage))
            except:
                painter.drawText(x,y,'CodePage error !!!')
            if y > (pageRect.height() - 54) :
                self.printer.newPage()
                y = 20
            painter.restore()
        lines.close()
        self.accept()
    def save(self, imgName, w=None, h=None, header=None, \
                 dpi=150, take_region=False):
        ext = imgName.split(".")[-1].upper()

        root = self.startNode
        #aspect_ratio = root.fullRegion.height() / root.fullRegion.width()
        aspect_ratio = self.i_height / self.i_width

        # auto adjust size
        if w is None and h is None and (ext == "PDF" or ext == "PS"):
            w = dpi * 6.4
            h = w * aspect_ratio
            if h > dpi * 11:
                h = dpi * 11
                w = h / aspect_ratio
        elif w is None and h is None:
            w = self.i_width
            h = self.i_height
        elif h is None:
            h = w * aspect_ratio
        elif w is None:
            w = h / aspect_ratio

        if ext == "SVG":
            svg = QtSvg.QSvgGenerator()
            svg.setFileName(imgName)
            svg.setSize(QtCore.QSize(w, h))
            svg.setViewBox(QtCore.QRect(0, 0, w, h))
            #svg.setTitle("SVG Generator Example Drawing")
            #svg.setDescription("An SVG drawing created by the SVG Generator")

            pp = QtGui.QPainter()
            pp.begin(svg)
            targetRect = QtCore.QRectF(0, 0, w, h)
            self.render(pp, targetRect, self.sceneRect())
            pp.end()

        elif ext == "PDF" or ext == "PS":
            format = QPrinter.PostScriptFormat if ext == "PS" else QPrinter.PdfFormat

            printer = QPrinter(QPrinter.HighResolution)
            printer.setResolution(dpi)
            printer.setOutputFormat(format)
            printer.setPageSize(QPrinter.A4)

            pageTopLeft = printer.pageRect().topLeft()
            paperTopLeft = printer.paperRect().topLeft()
            # For PS -> problems with margins
            # print paperTopLeft.x(), paperTopLeft.y()
            # print pageTopLeft.x(), pageTopLeft.y()
            # print  printer.paperRect().height(),  printer.pageRect().height()
            topleft = pageTopLeft - paperTopLeft

            printer.setFullPage(True)
            printer.setOutputFileName(imgName)
            pp = QtGui.QPainter(printer)
            if header:
                pp.setFont(QtGui.QFont("Verdana", 12))
                pp.drawText(topleft.x(), 20, header)
                targetRect = QtCore.QRectF(topleft.x(), 20 + (topleft.y() * 2),
                                           w, h)
            else:
                targetRect = QtCore.QRectF(topleft.x(), topleft.y() * 2, w, h)

            if take_region:
                self.selector.setVisible(False)
                self.render(pp, targetRect, self.selector.rect())
                self.selector.setVisible(True)
            else:
                self.render(pp, targetRect, self.sceneRect())
            pp.end()
            return
        else:
            targetRect = QtCore.QRectF(0, 0, w, h)
            ii= QtGui.QImage(w, \
                                 h, \
                                 QtGui.QImage.Format_ARGB32)
            pp = QtGui.QPainter(ii)
            pp.setRenderHint(QtGui.QPainter.Antialiasing)
            pp.setRenderHint(QtGui.QPainter.TextAntialiasing)
            pp.setRenderHint(QtGui.QPainter.SmoothPixmapTransform)
            if take_region:
                self.selector.setVisible(False)
                self.render(pp, targetRect, self.selector.rect())
                self.selector.setVisible(True)
            else:
                self.render(pp, targetRect, self.sceneRect())
            pp.end()
            ii.save(imgName)
#compmap.updateItem()
#emit compmap.itemChanged();
#compmap.extentChanged();
#compmap.toggleAtlasPreview()
#compmap.setNewScale(compmap.scale()+1)
#c.setPrintResolution(150)
#print c.printResolution()
c.setPrintAsRaster(False)

printer = QPrinter()
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName(pdf_out)
printer.setPaperSize(QSizeF(c.paperWidth(), c.paperHeight()),
                     QPrinter.Millimeter)
printer.setFullPage(True)
printer.setColorMode(QPrinter.Color)
printer.setResolution(c.printResolution())

pdfPainter = QPainter(printer)
paperRectMM = printer.pageRect(QPrinter.Millimeter)
paperRectPixel = printer.pageRect(QPrinter.DevicePixel)

QgsPaintEngineHack.fixEngineFlags(printer.paintEngine())

#c.renderPage(pdfPainter, 0)
c.doPrint(printer, pdfPainter)

pdfPainter.end()
subprocess.call(('xdg-open', pdf_out))

print 'FERTIG'
Esempio n. 19
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self._TITLE = 'Equilibrium Simulator 2015'
        self.setGeometry (0, 22, 1200, 400)
        self.setWindowTitle(self._TITLE)
        self._showorhide = "Show "
        self._printbox = None
        self._printer = QPrinter()
        self._Squares = []

        # Menu bar
        self.MenuBar = self.menuBar()
        self.filemenu = self.MenuBar.addMenu('File')
        self.optionsmenu = self.MenuBar.addMenu('Options')
        self.aboutmenu = self.MenuBar.addMenu('About')

        # File - New
        newfile = QAction(QIcon('exit.png'), 'New', self)
        newfile.setStatusTip('Create a new file')
        self.filemenu.addAction(newfile)
        newfile.triggered.connect(self.shownew)

        # File - Open
        openfile = QAction(QIcon('open.png'), 'Open', self)
        openfile.setStatusTip('Open a file')
        self.filemenu.addAction(openfile)
        openfile.triggered.connect(self.showopen)

        # File - Save
        savefile = QAction(QIcon('save.png'), 'Save', self)
        savefile.setStatusTip('Save the current file')
        self.filemenu.addAction(savefile)
        savefile.triggered.connect(self.save)

        # File - Save as
        saveasfile = QAction(QIcon('save.png'), 'Save as', self)
        saveasfile.setStatusTip('Save the current file as a different file')
        self.filemenu.addAction(saveasfile)
        saveasfile.triggered.connect(self.showsaveas)

        # File - Print
        printfile = QAction(QIcon('save.png'), 'Print', self)
        printfile.setStatusTip('Print the displayed reactions')
        self.filemenu.addAction(printfile)
        printfile.triggered.connect(self.showprint)

        # File - Exit
        exitaction = QAction(QIcon('exit.png'), '&Exit', self)
        exitaction.setStatusTip('Exit the program')
        exitaction.triggered.connect(qApp.quit)
        self.filemenu.addAction(exitaction)

        # Options - Edit Conditions
        editconds = QAction(QIcon('exit.png'), 'Edit Conditions', self)
        editconds.setStatusTip('Edit the conditions of the current reaction')
        editconds.triggered.connect(self.editcd)
        self.optionsmenu.addAction(editconds)

        # About - Version
        version = QAction(QIcon('exit.png'), 'Version 1.1', self)
        version.setStatusTip('The version of this program you are using')

        # Widget of editable reactions
        self._ReactionsWindow = ReactionWidget()
        self._ReactionsWindow.setGeometry(0, 20, 600, 380)
        self._ReactionsWindow.setParent(self)

        # Widget of non-editable reaction, for comparison
        self._ComparingProfile = ReactionProfile(self._ReactionsWindow.GetCurrentReaction(), True)
        self._ComparingProfile.setGeometry(600, 40, 600, 380)
        self._ComparingProfile.setParent(self)
        self.aboutmenu.addAction(version)
        self.show()

    # You should call the shownew(), showopen() etc. methods,
    # not the new(), open() etc. methods, as a) they do not provide user options;
    # b) it may lead to errors; c) the showing methods call them anyway
    def editcd(self):
        self._ReactionsWindow.EditReaction()

    def showopen(self):
        fileaddress = QFileDialog.getOpenFileName(self, "Open...", "", "Simulator Files (*.rctn)")
        if fileaddress != "":
            self.open(fileaddress)
            self.setWindowTitle(fileaddress+" - "+self._TITLE)

    def open(self, fileaddress):
        openfrom = open(fileaddress, "rb")
        loadedfile = pickle.load(openfrom)
        openfrom.close()
        file = open("last.ptr", "w")
        file.write(fileaddress)
        file.close()
        self._ReactionsWindow.SetOpenReactionFile(loadedfile)
        self.setWindowTitle(fileaddress+" - "+self._TITLE)

    def save(self):
        self._ReactionsWindow.save()

    def showsaveas(self):
        self._ReactionsWindow.showsaveas()

    def shownew(self):
        self._newfilebox = QMessageBox()
        self._newfilebox.setWindowTitle("Save?")
        self._newfilebox.setText("Would you like to save this file before opening a new one?")
        self._newfilebox.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
        self._newfilebox.setDefaultButton(QMessageBox.Yes)
        if self._newfilebox.exec_() == QMessageBox.Yes:
            file = open("last.ptr", "w")
            file.write("")
            file.close()
            self.save()
        self.setWindowTitle(self._TITLE)
        self._ReactionsWindow.SetOpenReactionFile(ReactionFile())

    def showprint(self):
        self._printbox = QPrintDialog(self)
        if self._printbox.exec_() == QDialog.Accepted:
            self.printout()

    def printout(self):
        # Page width, page height, widget width
        pw = self._printer.pageRect().width()
        ph = self._printer.pageRect().height()
        ww = self._ComparingProfile.width()
        painter = QPainter(self._printer)
        scale = (ww / pw) * 1.5
        painter.scale(scale, scale)
        self._ReactionsWindow.currentWidget().render(painter)
        painter.translate(0, ph/2)
        self._ComparingProfile.render(painter)
        painter.translate(pw * 0.6, -ph/2)
        painter.scale(0.8, 0.8)
        self._ReactionsWindow.currentWidget().PrintGraph(painter, "Concentration")
        painter.translate(0, ph*0.25)
        self._ReactionsWindow.currentWidget().PrintGraph(painter, "Rate")
        painter.translate(0, ph * 0.4)
        self._ComparingProfile.PrintGraph(painter, "Concentration")
        painter.translate(0, ph * 0.25)
        self._ComparingProfile.PrintGraph(painter, "Rate")
        painter.end()

    # GETTERS AND SETTERS
    def GetWindowTitle(self):
        return self._TITLE

    def SetComparingReaction(self, reaction):
        self._ComparingProfile.SetReaction(reaction)
        self._ComparingProfile.update()

    def GetComparingReaction(self):
        return self._ComparingProfile.GetReaction()
compmap.setPreviewMode(QgsComposerMap.Render)
#compmap.updateItem()
#emit compmap.itemChanged();
#compmap.extentChanged();
#compmap.toggleAtlasPreview()
#compmap.setNewScale(compmap.scale()+1)
#c.setPrintResolution(150)
#print c.printResolution()
c.setPrintAsRaster(False)

printer = QPrinter()
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName(pdf_out)
printer.setPaperSize(QSizeF(c.paperWidth(), c.paperHeight()), QPrinter.Millimeter)
printer.setFullPage(True)
printer.setColorMode(QPrinter.Color)
printer.setResolution(c.printResolution())

pdfPainter = QPainter(printer)
paperRectMM = printer.pageRect(QPrinter.Millimeter)
paperRectPixel = printer.pageRect(QPrinter.DevicePixel)

QgsPaintEngineHack.fixEngineFlags(printer.paintEngine())

#c.renderPage(pdfPainter, 0)
c.doPrint(printer,pdfPainter)

pdfPainter.end()
subprocess.call(('xdg-open', pdf_out))

print 'FERTIG'