##// END OF EJS Templates
Handle some tricky Comm lifecycle issues...
Handle some tricky Comm lifecycle issues * If the comm was a primary comm, but there was an error opening it, _closed was False, which is wrong * If Comm.close() was called, but an error happened, it still appeared to be open This change makes the _closed attribute more conservative. If _closed is False, the comm is definitely open for messages. If _closed is True, we either didn't initialize correctly, or we tried to close at some point.

File last commit:

r13587:210d5e2f
r18454:d2c994e5
Show More
svg.py
91 lines | 2.4 KiB | text/x-python | PythonLexer
""" Defines utility functions for working with SVG documents in Qt.
"""
# System library imports.
from IPython.external.qt import QtCore, QtGui, QtSvg
# Our own imports
from IPython.utils.py3compat import unicode_type
def save_svg(string, parent=None):
""" Prompts the user to save an SVG document to disk.
Parameters
----------
string : basestring
A Python string containing a SVG document.
parent : QWidget, optional
The parent to use for the file dialog.
Returns
-------
The name of the file to which the document was saved, or None if the save
was cancelled.
"""
if isinstance(string, unicode_type):
string = string.encode('utf-8')
dialog = QtGui.QFileDialog(parent, 'Save SVG Document')
dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave)
dialog.setDefaultSuffix('svg')
dialog.setNameFilter('SVG document (*.svg)')
if dialog.exec_():
filename = dialog.selectedFiles()[0]
f = open(filename, 'wb')
try:
f.write(string)
finally:
f.close()
return filename
return None
def svg_to_clipboard(string):
""" Copy a SVG document to the clipboard.
Parameters
----------
string : basestring
A Python string containing a SVG document.
"""
if isinstance(string, unicode_type):
string = string.encode('utf-8')
mime_data = QtCore.QMimeData()
mime_data.setData('image/svg+xml', string)
QtGui.QApplication.clipboard().setMimeData(mime_data)
def svg_to_image(string, size=None):
""" Convert a SVG document to a QImage.
Parameters
----------
string : basestring
A Python string containing a SVG document.
size : QSize, optional
The size of the image that is produced. If not specified, the SVG
document's default size is used.
Raises
------
ValueError
If an invalid SVG string is provided.
Returns
-------
A QImage of format QImage.Format_ARGB32.
"""
if isinstance(string, unicode_type):
string = string.encode('utf-8')
renderer = QtSvg.QSvgRenderer(QtCore.QByteArray(string))
if not renderer.isValid():
raise ValueError('Invalid SVG data.')
if size is None:
size = renderer.defaultSize()
image = QtGui.QImage(size, QtGui.QImage.Format_ARGB32)
painter = QtGui.QPainter(image)
renderer.render(painter)
return image