##// END OF EJS Templates
add parent to Configurable...
add parent to Configurable this adds the notion of a parent and member config, so the config: c.Foo.Bar.attr = value will only set `Bar.attr = value` for `Bar` instances which are members of `Foo` instances. The mechanism for doing this is ```python f = Foo(config=cfg) f.b = Bar(parent=f) ``` This Instance config has higher priority than plain class config for Bar, but still lower priority than direct keyword arg trait assignment. The main implication this has is to change the standard creation of descendants: ```python self.bar = Bar(config=self.config) ``` into a direct parent expression ```python self.bar = Bar(parent=self) ``` This also means that most Configurables will actually have a handle on their parent object.

File last commit:

r11009:e16cf2f8
r11062:7f44a560
Show More
svg.py
89 lines | 2.3 KiB | text/x-python | PythonLexer
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765 """ Defines utility functions for working with SVG documents in Qt.
"""
# System library imports.
Evan Patterson
Paved the way for PySide support....
r3304 from IPython.external.qt import QtCore, QtGui, QtSvg
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765
def save_svg(string, parent=None):
""" Prompts the user to save an SVG document to disk.
Parameters:
-----------
epatters
PySide fix: PySide's QByteArray constructor does not overload for unicode.
r3335 string : basestring
Evan Patterson
Paved the way for PySide support....
r3304 A Python string containing a SVG document.
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765
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.
"""
Martin Spacek
check for unicode before encoding as UTF-8
r3920 if isinstance(string, unicode):
string = string.encode('utf-8')
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765 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:
Martin Spacek
check for unicode before encoding as UTF-8
r3920 f.write(string)
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765 finally:
f.close()
return filename
return None
def svg_to_clipboard(string):
""" Copy a SVG document to the clipboard.
Parameters:
-----------
epatters
PySide fix: PySide's QByteArray constructor does not overload for unicode.
r3335 string : basestring
Evan Patterson
Paved the way for PySide support....
r3304 A Python string containing a SVG document.
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765 """
epatters
PySide fix: PySide's QByteArray constructor does not overload for unicode.
r3335 if isinstance(string, unicode):
string = string.encode('utf-8')
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765 mime_data = QtCore.QMimeData()
Evan Patterson
Paved the way for PySide support....
r3304 mime_data.setData('image/svg+xml', string)
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765 QtGui.QApplication.clipboard().setMimeData(mime_data)
def svg_to_image(string, size=None):
""" Convert a SVG document to a QImage.
Parameters:
-----------
epatters
PySide fix: PySide's QByteArray constructor does not overload for unicode.
r3335 string : basestring
Evan Patterson
Paved the way for PySide support....
r3304 A Python string containing a SVG document.
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765
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.
"""
epatters
PySide fix: PySide's QByteArray constructor does not overload for unicode.
r3335 if isinstance(string, unicode):
string = string.encode('utf-8')
Evan Patterson
Paved the way for PySide support....
r3304 renderer = QtSvg.QSvgRenderer(QtCore.QByteArray(string))
epatters
* Added a custom context menu to the RichIPythonWidget which allows saving plot as an images or SVG documents....
r2765 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