##// END OF EJS Templates
Add pexpect version 2.3 (revision 507) to IPython.external....
Add pexpect version 2.3 (revision 507) to IPython.external. We will only use our copy if the system-installed one isn't found. This lets us run the core of ipython on top of the stdlib, while having far better subprocess control than we otherwise would on posix. On windows, pexpect doesn't exist, so the subprocess situation is still not ideal. pexpect is MIT-licensed. For more information on pexpect: http://www.noah.org/wiki/Pexpect

File last commit:

r2765:1f32be1b
r2906:9c141886
Show More
svg.py
89 lines | 2.4 KiB | text/x-python | PythonLexer
""" Defines utility functions for working with SVG documents in Qt.
"""
# System library imports.
from PyQt4 import QtCore, QtGui, QtSvg
def save_svg(string, parent=None):
""" Prompts the user to save an SVG document to disk.
Parameters:
-----------
string : str
A Python string or QString 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.
"""
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, 'w')
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 : str
A Python string or QString containing a SVG document.
"""
if isinstance(string, basestring):
bytes = QtCore.QByteArray(string)
else:
bytes = string.toAscii()
mime_data = QtCore.QMimeData()
mime_data.setData('image/svg+xml', bytes)
QtGui.QApplication.clipboard().setMimeData(mime_data)
def svg_to_image(string, size=None):
""" Convert a SVG document to a QImage.
Parameters:
-----------
string : str
A Python string or QString 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, basestring):
bytes = QtCore.QByteArray.fromRawData(string) # shallow copy
else:
bytes = string.toAscii()
renderer = QtSvg.QSvgRenderer(bytes)
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