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)
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)
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 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
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
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
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]
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)
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()
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 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()
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)
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
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, 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 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)
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)
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)
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()
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 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
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() painter.begin(svg)
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()