util.py
64 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
epatters
|
r2643 | """ Defines miscellaneous Qt-related helper classes and functions. | ||
""" | ||||
# System library imports. | ||||
epatters
|
r2756 | from PyQt4 import QtCore, QtGui | ||
epatters
|
r2643 | |||
# IPython imports. | ||||
from IPython.utils.traitlets import HasTraits | ||||
epatters
|
r2756 | #----------------------------------------------------------------------------- | ||
# Metaclasses | ||||
#----------------------------------------------------------------------------- | ||||
epatters
|
r2643 | |||
MetaHasTraits = type(HasTraits) | ||||
MetaQObject = type(QtCore.QObject) | ||||
Brian Granger
|
r2726 | # You can switch the order of the parents here and it doesn't seem to matter. | ||
epatters
|
r2643 | class MetaQObjectHasTraits(MetaQObject, MetaHasTraits): | ||
""" A metaclass that inherits from the metaclasses of both HasTraits and | ||||
QObject. | ||||
Using this metaclass allows a class to inherit from both HasTraits and | ||||
QObject. See QtKernelManager for an example. | ||||
""" | ||||
epatters
|
r2702 | pass | ||
epatters
|
r2756 | |||
#----------------------------------------------------------------------------- | ||||
# Functions | ||||
#----------------------------------------------------------------------------- | ||||
epatters
|
r2643 | |||
epatters
|
r2756 | def image_from_svg(string, size=None): | ||
""" Convert a string containing SVG data into a QImage. | ||||
Parameters: | ||||
----------- | ||||
string : str | ||||
A Python string containing the SVG data. | ||||
size : QSize or None [default None] | ||||
The size of the image that is produced. If not specified, the SVG data's | ||||
default size is used. | ||||
Raises: | ||||
------- | ||||
ValueError | ||||
If an invalid SVG string is provided. | ||||
Returns: | ||||
-------- | ||||
A QImage with format QImage.Format_ARGB32_Premultiplied. | ||||
""" | ||||
from PyQt4 import QtSvg | ||||
bytes = QtCore.QByteArray(string) | ||||
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_Premultiplied) | ||||
painter = QtGui.QPainter(image) | ||||
renderer.render(painter) | ||||
return image | ||||