Example #1
0
def draw_image(name, q):
  image = QSvgGenerator()
  image.setSize(QSize(IMAGE_SIZE, IMAGE_SIZE))
  image.setFileName(name + ".svg")

  painter = QPainter()
  painter.begin(image)
  painter.setBrush(Qt.white)
  painter.setPen(Qt.NoPen)
  painter.drawEllipse(QPointF(IMAGE_SIZE/2, IMAGE_SIZE/2), IMAGE_SIZE/2, IMAGE_SIZE/2)
  painter.setBrush(QBrush())
  painter.setPen(QPen())
  
  draw_defect(painter, q)
  draw_circle(painter, q)
  
  pen = QPen()
  pen.setWidth(7)
  pen.setColor(Qt.red)
  painter.setPen(pen)
  
  painter.drawLine(IMAGE_SIZE/2 - ARROW_SIZE, IMAGE_SIZE/2, IMAGE_SIZE/2 + ARROW_SIZE, IMAGE_SIZE/2)
  painter.drawLine(IMAGE_SIZE/2 + ARROW_SIZE, IMAGE_SIZE/2, IMAGE_SIZE/2 + ARROW_SIZE - 30, IMAGE_SIZE/2 + 20)
  painter.drawLine(IMAGE_SIZE/2 + ARROW_SIZE, IMAGE_SIZE/2, IMAGE_SIZE/2 + ARROW_SIZE - 30, IMAGE_SIZE/2 - 20)
  
  font = painter.font()
  font.setPixelSize(40)
  font.setBold(True)
  painter.setFont(font)
  painter.drawText(QPointF(IMAGE_SIZE/2 + ARROW_SIZE - 30, IMAGE_SIZE/2 - 30), "E")
  
  painter.end()
    def sendReport(self):
        from PyQt4.QtSvg import QSvgGenerator
        if self.tree:
            self.reportSection("Tree")
            urlfn, filefn = self.getUniqueImageName(ext=".svg")
            svg = QSvgGenerator()
            svg.setFileName(filefn)
            ssize = self.scene.sceneRect().size()
            w, h = ssize.width(), ssize.height()
            fact = 600/w
            svg.setSize(QSize(600, h*fact))
            painter = QPainter()
            painter.begin(svg)
            self.scene.render(painter)
            painter.end()
        
#            buffer = QPixmap(QSize(600, h*fact))
#            painter.begin(buffer)
#            painter.fillRect(buffer.rect(), QBrush(QColor(255, 255, 255)))
#            self.scene.render(painter)
#            painter.end()
#            self.reportImage(lambda filename: buffer.save(filename, os.path.splitext(filename)[1][1:]))
            from OWDlgs import OWChooseImageSizeDlg
            self.reportImage(OWChooseImageSizeDlg(self.scene).saveImage)
            self.reportRaw('<!--browsercode<br/>(Click <a href="%s">here</a> to view or download this image in a scalable vector format)-->' % urlfn)
Example #3
0
 def __saveAsSVG( self, fileName ):
     " Saves the flowchart as an SVG file "
     generator = QSvgGenerator()
     generator.setFileName( fileName )
     generator.setSize( QSize( self.scene.width(), self.scene.height() ) )
     painter = QPainter( generator )
     self.scene.render( painter )
     painter.end()
     return
Example #4
0
 def key_action_save(self):
     self.gen = QSvgGenerator()
     self.gen.setFileName('/var/tmp/test.svg')
     self.gen.setSize(QSize(2000, 2000))
     self.gen.setViewBox(QRect(0, 0, 2000, 2000))
     self.gen.setTitle("Hello World")
     self.gen.setDescription("Hello Description")
     self.gen_painter = QPainter()
     self.gen_painter.begin(self.gen)
     self._node_viewer.scene.render(self.gen_painter)
     self.gen_painter.end()
Example #5
0
 def send_report(self):
     from PyQt4.QtSvg import QSvgGenerator
     if self.tree:
         self.reportSection("Tree")
         urlfn, filefn = self.getUniqueImageName(ext=".svg")
         svg = QSvgGenerator()
         svg.setFileName(filefn)
         ssize = self.scene.sceneRect().size()
         w, h = ssize.width(), ssize.height()
         fact = 600/w
         svg.setSize(QSize(600, h*fact))
         painter = QPainter()
         painter.begin(svg)
         self.scene.render(painter)
         painter.end()
Example #6
0
    def plotSVG(self, width, height, output_file, _plotting_object = None):

        """Plots the data specified in the current input file as a page in a
        PDF file with the given width and height, writing the output to the
        specified output file. Returns the SVG object produced."""

        printer = QPrinter()
        svg = QSvgGenerator()
        svg.setFileName(output_file)
        svg.setSize(QSize(width, height))
        svg.setViewBox(QRect(0, 0, width, height))
        svg.setResolution(printer.resolution())
        return self._plot(width, height, svg, _plotting_object)[0]
Example #7
0
    def sendReport(self):
        from PyQt4.QtSvg import QSvgGenerator
        if self.tree:
            self.reportSection("Tree")
            urlfn, filefn = self.getUniqueImageName(ext=".svg")
            svg = QSvgGenerator()
            svg.setFileName(filefn)
            ssize = self.scene.sceneRect().size()
            w, h = ssize.width(), ssize.height()
            fact = 600 / w
            svg.setSize(QSize(600, h * fact))
            painter = QPainter()
            painter.begin(svg)
            self.scene.render(painter)
            painter.end()

            #            buffer = QPixmap(QSize(600, h*fact))
            #            painter.begin(buffer)
            #            painter.fillRect(buffer.rect(), QBrush(QColor(255, 255, 255)))
            #            self.scene.render(painter)
            #            painter.end()
            #            self.reportImage(lambda filename: buffer.save(filename, os.path.splitext(filename)[1][1:]))
            from OWDlgs import OWChooseImageSizeDlg
            self.reportImage(OWChooseImageSizeDlg(self.scene).saveImage)
            self.reportRaw(
                '<!--browsercode<br/>(Click <a href="%s">here</a> to view or download this image in a scalable vector format)-->'
                % urlfn)
Example #8
0
    def drawIcon(self, colorRamp):
        # input color ramp object: QgsVectorColorRampV2 object.
        # QgsVectorColorRampV2 is a virtual object, the real object name in
        # this case is QgsVectorGradientColorRampV2 object.
        mStops = colorRamp.stops()
        linearGradient = QLinearGradient(0.0, 50.0, 200.0, 50.0)
        for item in mStops:
            linearGradient.setColorAt(item.offset, item.color)
        linearGradient.setSpread(QGradient.PadSpread)

        svgName = os.path.join(os.path.dirname(__file__), self.text() + '.svg')
        pix = QSvgGenerator()
        pix.setFileName(svgName)
        pix.setSize(QSize(200, 100))
        painter = QPainter()
        painter.begin(pix)
        br = QBrush(linearGradient)
        painter.setBrush(br)
        painter.drawRect(QRect(0, 0, 200, 100))
        painter.end()

        pixmap = QPixmap(svgName)
        icon = QIcon(pixmap)
        self.svgName = svgName

        return icon
Example #9
0
def grab_svg(scene):
    """
    Return a SVG rendering of the scene contents.

    Parameters
    ----------
    scene : :class:`CanvasScene`

    """
    from PyQt4.QtSvg import QSvgGenerator
    svg_buffer = QBuffer()
    gen = QSvgGenerator()
    gen.setOutputDevice(svg_buffer)

    items_rect = scene.itemsBoundingRect().adjusted(-10, -10, 10, 10)

    if items_rect.isNull():
        items_rect = QRectF(0, 0, 10, 10)

    width, height = items_rect.width(), items_rect.height()
    rect_ratio = float(width) / height

    # Keep a fixed aspect ratio.
    aspect_ratio = 1.618
    if rect_ratio > aspect_ratio:
        height = int(height * rect_ratio / aspect_ratio)
    else:
        width = int(width * aspect_ratio / rect_ratio)

    target_rect = QRectF(0, 0, width, height)
    source_rect = QRectF(0, 0, width, height)
    source_rect.moveCenter(items_rect.center())

    gen.setSize(target_rect.size().toSize())
    gen.setViewBox(target_rect)

    painter = QPainter(gen)

    # Draw background.
    painter.setBrush(QBrush(Qt.white))
    painter.drawRect(target_rect)

    # Render the scene
    scene.render(painter, target_rect, source_rect)
    painter.end()

    buffer_str = str(svg_buffer.buffer())
    return unicode(buffer_str.decode("utf-8"))
 def saveWindow(self):
     fileTypes = {'PDF':('pdf',), 'Postscript':('ps',),'SVG':('svg',)}
     filters = ';;'.join(['%s (%s)' % (k, ' '.join(['*.'+e for e in v])) for k, v in fileTypes.items()])
     dlg = QFileDialog(self,
         QCoreApplication.translate('QwtPlot', 'Select type and name of file to save'),
         SimuVis4.Globals.defaultFolder or '', filters)
     dlg.setFileMode(QFileDialog.AnyFile)
     dlg.setAcceptMode(QFileDialog.AcceptSave)
     if dlg.exec_() != QDialog.Accepted:
         return
     tmp = str(dlg.selectedFilter())
     fileType = tmp[:tmp.find('(')-1]
     dlg.setDefaultSuffix(fileTypes[fileType][0])
     files = dlg.selectedFiles()
     if not files:
         return
     fileName = unicode(files[0])
     SimuVis4.Globals.defaultFolder, tmp = os.path.split(fileName)
     if fileType == 'PDF':
         printer = QPrinter()
         printer.setOutputFormat(QPrinter.PdfFormat)
         printer.setOrientation(QPrinter.Landscape)
         printer.setOutputFileName(fileName)
         printer.setCreator('SimuVis4')
         self.plot.print_(printer)
     elif fileType == 'Postscript':
         printer = QPrinter()
         printer.setOutputFormat(QPrinter.PostScriptFormat)
         printer.setOrientation(QPrinter.Landscape)
         printer.setOutputFileName(fileName)
         printer.setCreator('SimuVis4')
         self.plot.print_(printer)
     elif fileType == 'SVG':
         generator = QSvgGenerator()
         generator.setFileName(fileName)
         generator.setSize(QSize(800, 600))
         self.plot.print_(generator)
Example #11
0
 def __saveAsSVG(self, fileName):
     " Saves the flowchart as an SVG file "
     generator = QSvgGenerator()
     generator.setFileName(fileName)
     generator.setSize(QSize(self.scene.width(), self.scene.height()))
     painter = QPainter(generator)
     self.scene.render(painter)
     painter.end()
     return
Example #12
0
 def send_report(self):
     from PyQt4.QtSvg import QSvgGenerator
     if self.tree:
         self.reportSection("Tree")
         urlfn, filefn = self.getUniqueImageName(ext=".svg")
         svg = QSvgGenerator()
         svg.setFileName(filefn)
         ssize = self.scene.sceneRect().size()
         w, h = ssize.width(), ssize.height()
         fact = 600 / w
         svg.setSize(QSize(600, h * fact))
         painter = QPainter()
         painter.begin(svg)
         self.scene.render(painter)
         painter.end()
Example #13
0
def makeSvg(chart, path, width, height):
	"""Create a Svg file.
	
	:type chart: BiChart
	:type path: str
	:type width: int
	:type height: int
	"""
	svg = QSvgGenerator()
	if not path.endswith('.svg'):
		path = '%s%s' % (path, '.svg')
	svg.setFileName(path)
	svg.setSize(QSize(width, height))
	##svg.setResolution(100)
	ChartPainter(svg, chart)
 def outSVG(self, iface, wdg, mdl, library):
     for i in range(0, mdl.rowCount()):
         if mdl.item(i, 0).data(Qt.CheckStateRole):
             name = str(mdl.item(i, 2).data(Qt.EditRole))
             #return
     fileName = QFileDialog.getSaveFileName(
         iface.mainWindow(), "Save As", "Profile of " + name + ".svg",
         "Scalable Vector Graphics (*.svg)")
     if fileName:
         if library == "Qwt5" and has_qwt:
             printer = QSvgGenerator()
             printer.setFileName(fileName)
             printer.setSize(QSize(800, 400))
             wdg.plotWdg.print_(printer)
         elif library == "Matplotlib" and has_mpl:
             wdg.plotWdg.figure.savefig(str(fileName))
    def _get_composer_svg_image(self, width, height, dpi):
        # from qgscomposer.cpp, QgsComposer::on_mActionExportAsSVG_triggered,
        # line 1909, near end of function
        svgpath = getTempfilePath('svg')
        temp_size = os.path.getsize(svgpath)

        svg_g = QSvgGenerator()
        # noinspection PyArgumentList
        svg_g.setTitle(QgsProject.instance().title())
        svg_g.setFileName(svgpath)
        # width and height in pixels
        # svg_w = int(self._c.paperWidth() * self._c.printResolution() / 25.4)
        # svg_h = int(self._c.paperHeight() * self._c.printResolution() / 25.4)
        svg_w = width
        svg_h = height
        svg_g.setSize(QSize(svg_w, svg_h))
        svg_g.setViewBox(QRect(0, 0, svg_w, svg_h))
        # because the rendering is done in mm, convert the dpi
        # svg_g.setResolution(self._c.printResolution())
        svg_g.setResolution(dpi)

        sp = QPainter(svg_g)
        self._c.renderPage(sp, 0)
        sp.end()

        if temp_size == os.path.getsize(svgpath):
            # something went pear-shaped
            return False, ''

        image = QImage(width, height, QImage.Format_ARGB32)
        image.fill(QColor(152, 219, 249).rgb())
        image.setDotsPerMeterX(dpi / 25.4 * 1000)
        image.setDotsPerMeterY(dpi / 25.4 * 1000)

        svgr = QSvgRenderer(svgpath)
        p = QPainter(image)
        svgr.render(p)
        p.end()

        filepath = getTempfilePath('png')
        res = image.save(filepath, 'png')
        if not res:
            os.unlink(filepath)
            filepath = ''
        # TODO: remove .svg file as well?

        return res, filepath
Example #16
0
    def _get_composer_svg_image(self, width, height, dpi):
        # from qgscomposer.cpp, QgsComposer::on_mActionExportAsSVG_triggered,
        # near end of function
        svgpath = getTempfilePath('svg')
        temp_size = os.path.getsize(svgpath)

        svg_g = QSvgGenerator()
        # noinspection PyArgumentList
        svg_g.setTitle(QgsProject.instance().title())
        svg_g.setFileName(svgpath)
        svg_g.setSize(QSize(width, height))
        svg_g.setViewBox(QRect(0, 0, width, height))
        svg_g.setResolution(dpi)

        sp = QPainter(svg_g)
        self._c.renderPage(sp, 0)
        sp.end()

        if temp_size == os.path.getsize(svgpath):
            return False, ''

        image = QImage(width, height,
                       self._TestMapSettings.outputImageFormat())
        image.fill(QColor(152, 219, 249).rgb())
        image.setDotsPerMeterX(dpi / 25.4 * 1000)
        image.setDotsPerMeterY(dpi / 25.4 * 1000)

        svgr = QSvgRenderer(svgpath)
        p = QPainter(image)
        p.setRenderHint(
            QPainter.Antialiasing,
            self._TestMapSettings.testFlag(QgsMapSettings.Antialiasing))
        p.setRenderHint(QPainter.TextAntialiasing)
        svgr.render(p)
        p.end()

        filepath = getTempfilePath('png')
        res = image.save(filepath, 'png')
        if not res:
            os.unlink(filepath)
            filepath = ''
        # TODO: remove .svg file as well?

        return res, filepath
    def _get_composer_svg_image(self, width, height, dpi):
        # from qgscomposer.cpp, QgsComposer::on_mActionExportAsSVG_triggered,
        # near end of function
        svgpath = getTempfilePath('svg')
        temp_size = os.path.getsize(svgpath)

        svg_g = QSvgGenerator()
        # noinspection PyArgumentList
        svg_g.setTitle(QgsProject.instance().title())
        svg_g.setFileName(svgpath)
        svg_g.setSize(QSize(width, height))
        svg_g.setViewBox(QRect(0, 0, width, height))
        svg_g.setResolution(dpi)

        sp = QPainter(svg_g)
        self._c.renderPage(sp, 0)
        sp.end()

        if temp_size == os.path.getsize(svgpath):
            return False, ''

        image = QImage(width, height, QImage.Format_ARGB32)
        image.fill(QColor(152, 219, 249).rgb())
        image.setDotsPerMeterX(dpi / 25.4 * 1000)
        image.setDotsPerMeterY(dpi / 25.4 * 1000)

        svgr = QSvgRenderer(svgpath)
        p = QPainter(image)
        svgr.render(p)
        p.end()

        filepath = getTempfilePath('png')
        res = image.save(filepath, 'png')
        if not res:
            os.unlink(filepath)
            filepath = ''
        # TODO: remove .svg file as well?

        return res, filepath
Example #18
0
 def exportToSvg(self):
     size = QSize(self.logo.imageSize, self.logo.imageSize)
     viewport = self.viewportFromSize(QSizeF(size))
     transform = self.viewportTransform(QSizeF(size), viewport)
     fileName = QFileDialog.getSaveFileName(self, "Save logo", "", "SVG files (*.svg)")
     if not fileName or fileName.isEmpty():
         return
     svg = QSvgGenerator()
     svg.setFileName(fileName)
     svg.setTitle("Spark Logo")
     # save settings as description
     settings = self.settingsMap()
     settingsText = "{%s}" % ", ".join(["'%s': %s" % (k, repr(v))
                                        for (k, v) in settings.iteritems()])
     svg.setDescription("This picture was generated to be a Spark logo.\n"
         "The settings used were: %s" % settingsText)
     # crop the logo to its bounding box
     svg.setViewBox(transform.mapRect(viewport))
     svg.setSize(size)
     p = QPainter()
     p.begin(svg)
     p.setTransform(transform)
     self.logo.draw(p)
     p.end()
Example #19
0
def create_svg(text, font, rect=None):
    if not rect:
        rect = QRect(0, 0, 200, 200)
    f = tempfile.NamedTemporaryFile()

    generator = QSvgGenerator()
    generator.setFileName(f.name)
    generator.setSize(rect.size())
    generator.setViewBox(rect)
    generator.setTitle("puddletag image")
    generator.setDescription("just to see")

    painter = QPainter()
    painter.begin(generator)
    painter.fillRect(rect, Qt.black)
    painter.setFont(font)
    painter.setPen(Qt.white)
    painter.setBrush(QBrush(Qt.white))
    painter.drawText(rect, Qt.AlignCenter, text)
    painter.end()

    svg = open(f.name).read()
    f.close()
    return svg
Example #20
0
def export_scene(canvas, width, height, dpi, exportFileName):
    """ This function exports the scene to a file. """

    # need this to make sure we take away focus from
    # any currently selected legend items
    canvas.clearFocus()

    with HiddenStitchManager(canvas):

        # NOTE: We seem to need the 1px buffer region to avoid
        # the image being cut off
        margin = 10
        theScene = visible_bounding_rect(canvas.items())
        theScene.adjust(-margin, -margin, margin, margin)

        # check if user requested an svg file
        svg = True if QFileInfo(exportFileName).completeSuffix() == "svg" \
                else False

        if svg:
            generator = QSvgGenerator()
            generator.setFileName(exportFileName)
            generator.setSize(QSize(width, height))
            generator.setViewBox(QRect(0, 0, width, height))
            generator.setTitle("sconcho generated SVG image")
            generator.setDescription("this svg image was exported from "
                                     "a sconcho project")
            generator.setResolution(dpi)
        else:
            generator = QImage(width + 2 * margin, height + 2 * margin,
                               QImage.Format_ARGB32_Premultiplied)
            generator.fill(1)

            inchesToMeter = 39.3700787
            generator.setDotsPerMeterX(dpi * inchesToMeter)
            generator.setDotsPerMeterY(dpi * inchesToMeter)

        painter = QPainter(generator)
        painter.setRenderHints(QPainter.SmoothPixmapTransform
                               | QPainter.HighQualityAntialiasing
                               | QPainter.TextAntialiasing)
        painter.setBackgroundMode(Qt.TransparentMode)

        canvas.render(painter, QRectF(), theScene)
        painter.end()

        if not svg:
            generator.save(exportFileName)
Example #21
0
def export_scene(canvas, width, height, dpi, exportFileName):
    """ This function exports the scene to a file. """

    # need this to make sure we take away focus from
    # any currently selected legend items
    canvas.clearFocus()

    with HiddenStitchManager(canvas):

        # NOTE: We seem to need the 1px buffer region to avoid
        # the image being cut off
        margin = 10
        theScene = visible_bounding_rect(canvas.items())
        theScene.adjust(-margin, -margin, margin, margin)

        # check if user requested an svg file
        svg = True if QFileInfo(exportFileName).completeSuffix() == "svg" \
                else False

        if svg:
            generator = QSvgGenerator()
            generator.setFileName(exportFileName)
            generator.setSize(QSize(width, height))
            generator.setViewBox(QRect(0, 0, width, height))
            generator.setTitle("sconcho generated SVG image")
            generator.setDescription("this svg image was exported from "
                                     "a sconcho project")
            generator.setResolution(dpi)
        else:
            generator = QImage(width+2*margin, height+2*margin, 
                               QImage.Format_ARGB32_Premultiplied)
            generator.fill(1)

            inchesToMeter = 39.3700787
            generator.setDotsPerMeterX(dpi*inchesToMeter)
            generator.setDotsPerMeterY(dpi*inchesToMeter)


        painter = QPainter(generator)
        painter.setRenderHints(QPainter.SmoothPixmapTransform 
                               | QPainter.HighQualityAntialiasing 
                               | QPainter.TextAntialiasing )
        painter.setBackgroundMode(Qt.TransparentMode )

        canvas.render(painter, QRectF(), theScene )
        painter.end()

        if not svg:
            generator.save(exportFileName)
Example #22
0
class NodeViewerLayout(QWidget):
    def __init__(self, *args, **kwargs):
        super(NodeViewerLayout, self).__init__(*args, **kwargs)
        self._node_viewer = NodeViewer()
        self._text_widget = QTextBrowser()
        self._text_widget.setStyleSheet("background-color: grey;")
        self._node_viewer.new_info.connect(self.display_new_info)
        layout = QHBoxLayout(self)
        layout.setSpacing(0)
        layout.setMargin(0)
        layout.addWidget(self._node_viewer, 1000)
        layout.addWidget(self._text_widget, 300)
        self.setLayout(layout)

    def set_node_data(self, graph):
        self._node_viewer.set_node_data(graph)
        self._text_widget.setHtml("""
            <style> body {background:black} </style>
            <p>The <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>asdfThe <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>Theasdf <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>asdfThe <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>The <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>The <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>The <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>The <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>The <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>The <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            <p>The <div style='color:red'>quick</div> <strong>brown</strong> fox</p>
            """)

    def search_return(self, search):
        self._search = str(search).strip()
        for key, item in self._node_viewer._graph.iter_nodes():
            if self._search.lower() in item.label().lower():
                item.ui().set_state('consider_selection')
                self._node_viewer.considered_selection.append(item.ui())
            elif item.ui() in self._node_viewer.considered_selection:
                item.ui().set_state('normal')
                self._node_viewer.considered_selection.remove(item.ui())

    def search_good(self):

        self._node_viewer.scene.clearSelection()

        for item in self._node_viewer.considered_selection:
            if self._search.lower() in item._dag_node.label().lower():
                item.set_state('selected')
                item.setSelected(True)
            else:
                item.set_state('normal')
                item.setSelected(False)

        self._node_viewer._dirty_nodes.union(
            self._node_viewer.considered_selection)

        self._node_viewer._selection_changed()

        self._node_viewer.text.text_entry.disconnect()
        self._node_viewer.text.enter_pressed.disconnect()
        self._node_viewer.text.cancel_pressed.disconnect()
        self._node_viewer.text.hide()
        self._node_viewer.scene.clearFocus()

    def search_bad(self):
        self._node_viewer.scene.clearSelection()

        self._node_viewer._dirty_nodes.union(
            self._node_viewer.considered_selection)

        self._node_viewer._selection_changed()
        self._node_viewer.text.text_entry.disconnect()
        self._node_viewer.text.enter_pressed.disconnect()
        self._node_viewer.text.cancel_pressed.disconnect()
        self._node_viewer.text.hide()
        self._node_viewer.scene.clearFocus()

    def display_new_info(self, text):
        import simplejson
        import pygments.formatters
        from pygments import highlight
        import pygments.lexers
        text = ''
        for item in self._node_viewer.scene.selectedItems():
            json = simplejson.dumps(item.info(), indent=2 * ' ')
            text += '\n' + highlight(json, pygments.lexers.JsonLexer(),
                                     pygments.formatters.HtmlFormatter())
        self._text_widget.setHtml(text)

    def key_action_toggle_fullscreen(self):
        if self.windowState() == Qt.WindowFullScreen:
            self.showNormal()
        else:
            self.showFullScreen()

    def key_action_toggle_info(self):
        if self._text_widget.isVisible():
            self._text_widget.hide()
        else:
            self._text_widget.show()

    def key_action_search(self):
        self._node_viewer.text.show()
        self._node_viewer.text.sync_pos()
        self._node_viewer.scene.setFocusItem(self._node_viewer.text)

        self._node_viewer.text.text_entry.connect(self.search_return)
        self._node_viewer.text.enter_pressed.connect(self.search_good)
        self._node_viewer.text.cancel_pressed.connect(self.search_bad)

    def key_action_rename(self):
        print 'rename'

    def key_action_reshape(self):
        print 'reshape'

    def key_action_save(self):
        self.gen = QSvgGenerator()
        self.gen.setFileName('/var/tmp/test.svg')
        self.gen.setSize(QSize(2000, 2000))
        self.gen.setViewBox(QRect(0, 0, 2000, 2000))
        self.gen.setTitle("Hello World")
        self.gen.setDescription("Hello Description")
        self.gen_painter = QPainter()
        self.gen_painter.begin(self.gen)
        self._node_viewer.scene.render(self.gen_painter)
        self.gen_painter.end()

    def key_action_test(self):
        print 'asdf'

    def key_action_quit(self):
        QApplication.quit()

    def keyPressEvent(self, event):

        key = event.key()
        modifiers = event.modifiers()
        shift = modifiers == Qt.ShiftModifier
        ctrl = modifiers == Qt.ControlModifier
        alt = modifiers == Qt.AltModifier

        if key == Qt.Key_F and not shift:
            self._node_viewer.key_action_focus()
        if key == Qt.Key_F and shift:
            self.key_action_toggle_fullscreen()
        elif key == Qt.Key_U:
            self._node_viewer.key_action_ungroup()
        elif key == Qt.Key_G:
            self._node_viewer.key_action_group()
        elif key == Qt.Key_Q:
            self.key_action_quit()
        elif key == Qt.Key_I:
            self.key_action_toggle_info()
        elif key == Qt.Key_Slash:
            self.key_action_search()
        elif key == Qt.Key_R and not shift:
            self.key_action_rename()
        elif key == Qt.Key_R and shift:
            self.key_action_reshape()
        elif key == Qt.Key_I:
            self.key_action_toggle_info()
        elif key == Qt.Key_S:
            self.key_action_save()
        elif alt and ctrl:
            self.key_action_test()
Example #23
0
    if not 3 <= len(sys.argv) <= 4:
        sys.stderr.write(
            "Usage: %s [--stitches-only] <JEF file> <SVG file>\n" %
            sys.argv[0])
        sys.exit(1)

    stitches_only = "--stitches-only" in sys.argv
    if stitches_only:
        sys.argv.remove("--stitches-only")

    jef_file = sys.argv[1]
    svg_file = sys.argv[2]

    app = QApplication(sys.argv)
    svg = QSvgGenerator()
    svg.setFileName(svg_file)

    if QT_VERSION >= (4, 5, 0):
        svg.setDescription('Original JEF file "' + os.path.split(jef_file)[1] +
                           '" converted '
                           'to ' + os.path.split(svg_file)[1] +
                           ' by jef2svg.py.')

    convertor = Convertor(jef_file, stitches_only)
    rect = convertor.bounding_rect()
    if QT_VERSION >= (4, 5, 0):
        svg.setViewBox(rect)
    svg.setSize(rect.size())

    painter = QPainter()
    def saveGraph(self):
        sizeDlg = OWChooseImageSizeDlg(self.dendrogram, parent=self)
        filename = sizeDlg.getFileName(
            "graph", "Portable Network Graphics (*.PNG);;"
            "Windows Bitmap (*.BMP);;"
            "Graphics Interchange Format (*.GIF);;"
            "Scalable Vector Graphics (*.SVG)", ".png")

        if not filename:
            return

        _, ext = os.path.splitext(filename)
        ext = ext.lower()

        canvases = (self.headerView.scene(), self.dendrogramView.scene(),
                    self.footerView.scene())
        width = max([c.width() for c in canvases])
        height = sum([c.height() for c in canvases])

        size = QSize(width, height)

        if ext == ".svg":
            device = QSvgGenerator()
            device.setTitle("Dendrogram Plot")
            device.setFileName(filename)
            device.setSize(size)
            device.setViewBox(QRect(QPoint(0, 0), size))
        else:
            device = QPixmap(size)
            device.fill(Qt.white)

        painter = QPainter()
        painter.begin(device)
        painter.setRenderHint(QPainter.Antialiasing)

        self.renderDendrogram(painter)
        painter.end()

        if ext != ".svg":
            device.save(filename)
Example #25
0
def create_svg(text, font, rect=None):
    if not rect:
        rect = QRect(0, 0, 200, 200)
    f = tempfile.NamedTemporaryFile()

    generator = QSvgGenerator()
    generator.setFileName(f.name)
    generator.setSize(rect.size())
    generator.setViewBox(rect);
    generator.setTitle("puddletag image")
    generator.setDescription("just to see")

    painter = QPainter()
    painter.begin(generator)
    painter.fillRect(rect, Qt.black)
    painter.setFont(font)
    painter.setPen(Qt.white)
    painter.setBrush(QBrush(Qt.white))
    painter.drawText(rect, Qt.AlignCenter, text)
    painter.end()

    svg = open(f.name).read()
    f.close()
    return svg
    def saveGraph(self):
        sizeDlg = OWChooseImageSizeDlg(self.dendrogram, parent=self)
        filename = sizeDlg.getFileName(
            "graph",
            "Portable Network Graphics (*.PNG);;"
            "Windows Bitmap (*.BMP);;"
            "Graphics Interchange Format (*.GIF);;"
            "Scalable Vector Graphics (*.SVG)",
            ".png"
        )
        _, ext = os.path.splitext(filename)
        ext = ext.lower()

        canvases = (self.headerView.scene(),
                    self.dendrogramView.scene(),
                    self.footerView.scene())
        width = max([c.width() for c in canvases])
        height = sum([c.height() for c in canvases])

        size = QSize(width, height)

        if ext == ".svg":
            device = QSvgGenerator()
            device.setTitle("Dendrogram Plot")
            device.setFileName(filename)
            device.setSize(size)
            device.setViewBox(QRect(QPoint(0, 0), size))
        else:
            device = QPixmap(size)
            device.fill(Qt.white)

        painter = QPainter()
        painter.begin(device)
        painter.setRenderHint(QPainter.Antialiasing)

        self.renderDendrogram(painter)
        painter.end()

        if ext != ".svg":
            device.save(filename)