##// END OF EJS Templates
more robust code...
Matthias BUSSONNIER -
Show More
@@ -15,6 +15,7 b' import re'
15 from IPython.external.qt import QtCore, QtGui
15 from IPython.external.qt import QtCore, QtGui
16
16
17 # Local imports
17 # Local imports
18 from IPython.utils.traitlets import Bool
18 from IPython.frontend.qt.svg import save_svg, svg_to_clipboard, svg_to_image
19 from IPython.frontend.qt.svg import save_svg, svg_to_clipboard, svg_to_image
19 from ipython_widget import IPythonWidget
20 from ipython_widget import IPythonWidget
20
21
@@ -27,7 +28,7 b' class RichIPythonWidget(IPythonWidget):'
27
28
28 # RichIPythonWidget protected class variables.
29 # RichIPythonWidget protected class variables.
29 _payload_source_plot = 'IPython.zmq.pylab.backend_payload.add_plot_payload'
30 _payload_source_plot = 'IPython.zmq.pylab.backend_payload.add_plot_payload'
30
31 _jpg_supported = Bool(False)
31 #---------------------------------------------------------------------------
32 #---------------------------------------------------------------------------
32 # 'object' interface
33 # 'object' interface
33 #---------------------------------------------------------------------------
34 #---------------------------------------------------------------------------
@@ -47,8 +48,9 b' class RichIPythonWidget(IPythonWidget):'
47 # Do we support jpg ?
48 # Do we support jpg ?
48 # it seems that sometime jpg support is a plugin of QT, so try to assume
49 # it seems that sometime jpg support is a plugin of QT, so try to assume
49 # it is not always supported.
50 # it is not always supported.
50 self._supported_format = map(str, QtGui.QImageReader.supportedImageFormats())
51 _supported_format = map(str, QtGui.QImageReader.supportedImageFormats())
51 self._jpg_supported = 'jpeg' in self._supported_format
52 self._jpg_supported = 'jpeg' in _supported_format
53
52
54
53 #---------------------------------------------------------------------------
55 #---------------------------------------------------------------------------
54 # 'ConsoleWidget' protected interface
56 # 'ConsoleWidget' protected interface
@@ -79,40 +81,39 b' class RichIPythonWidget(IPythonWidget):'
79 #---------------------------------------------------------------------------
81 #---------------------------------------------------------------------------
80 # 'BaseFrontendMixin' abstract interface
82 # 'BaseFrontendMixin' abstract interface
81 #---------------------------------------------------------------------------
83 #---------------------------------------------------------------------------
84 def _pre_image_append(self, msg, prompt_number):
85 """ Append the Out[] prompt and make the output nicer
86
87 Shared code for some the following if statement
88 """
89 self.log.debug("pyout: %s", msg.get('content', ''))
90 self._append_plain_text(self.output_sep, True)
91 self._append_html(self._make_out_prompt(prompt_number), True)
92 self._append_plain_text('\n', True)
82
93
83 def _handle_pyout(self, msg):
94 def _handle_pyout(self, msg):
84 """ Overridden to handle rich data types, like SVG.
95 """ Overridden to handle rich data types, like SVG.
85 """
96 """
86 def pre_image_append():
87 """ Append the Out[] prompt and mke the output nicer
88
89 Shared code for some the following if statement
90 """
91 self.log.debug("pyout: %s", msg.get('content', ''))
92 self._append_plain_text(self.output_sep, True)
93 self._append_html(self._make_out_prompt(prompt_number), True)
94 self._append_plain_text('\n', True)
95
96 if not self._hidden and self._is_from_this_session(msg):
97 if not self._hidden and self._is_from_this_session(msg):
97 content = msg['content']
98 content = msg['content']
98 prompt_number = content['execution_count']
99 prompt_number = content['execution_count']
99 data = content['data']
100 data = content['data']
100 if data.has_key('image/svg+xml'):
101 if data.has_key('image/svg+xml'):
101 pre_image_append()
102 self._pre_image_append(msg, prompt_number)
102 self._append_svg(data['image/svg+xml'], True)
103 self._append_svg(data['image/svg+xml'], True)
103 self._append_html(self.output_sep2, True)
104 self._append_html(self.output_sep2, True)
104 elif data.has_key('image/png'):
105 elif data.has_key('image/png'):
105 pre_image_append()
106 self._pre_image_append(msg, prompt_number)
106 self._append_png(decodestring(data['image/png'].encode('ascii')), True)
107 self._append_png(decodestring(data['image/png'].encode('ascii')), True)
107 self._append_html(self.output_sep2, True)
108 self._append_html(self.output_sep2, True)
108 elif data.has_key('image/jpeg') and self._jpg_supported:
109 elif data.has_key('image/jpeg') and self._jpg_supported:
109 pre_image_append()
110 self._pre_image_append(msg, prompt_number)
110 self._append_jpg(decodestring(data['image/jpeg'].encode('ascii')), True)
111 self._append_jpg(decodestring(data['image/jpeg'].encode('ascii')), True)
111 self._append_html(self.output_sep2, True)
112 self._append_html(self.output_sep2, True)
112 # image/jpg should be an invalid mimetype, but python mimetype package
113 # image/jpg should be an invalid mimetype, but python mimetype package
113 # handel it.
114 # handel it.
114 elif data.has_key('image/jpg') and self._jpg_supported:
115 elif data.has_key('image/jpg') and self._jpg_supported:
115 pre_image_append()
116 self._pre_image_append(msg, prompt_number)
116 self._append_jpg(decodestring(data['image/jpg'].encode('ascii')), True)
117 self._append_jpg(decodestring(data['image/jpg'].encode('ascii')), True)
117 self._append_html(self.output_sep2, True)
118 self._append_html(self.output_sep2, True)
118 else:
119 else:
General Comments 0
You need to be logged in to leave comments. Login now