##// END OF EJS Templates
Added GTK support to ZeroMQ kernel....
Added GTK support to ZeroMQ kernel. We use an approach which is a combination of an gtk timer callback into our execution loop, like we do for Qt and Wx, I've run as tests several GTK examples found on the net, as well as multiple matplotlib scripts, and so far everything works as expected. The only catch is that we silently trap gtk.main_quit(), so examples that call it with a 'close' button or similar seem to not do anything. But their windows close normally and no other problems have been found. This solution uses code taken from an old bug report of ours: https://bugs.launchpad.net/ipython/+bug/270856 specifically the attachment in this comment: https://bugs.launchpad.net/ipython/+bug/270856/comments/6 along with the changes suggested by Michiel de Hoon there. Thanks to Ville and Michiel for that old discussion, which put me on the right track to figure out the details of the logic needed for GTK.

File last commit:

r1234:52b55407
r2949:13751b1c
Show More
display_formatter.py
70 lines | 1.8 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""Objects for replacing sys.displayhook()."""
__docformat__ = "restructuredtext en"
#-------------------------------------------------------------------------------
# Copyright (C) 2008 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
class IDisplayFormatter(object):
""" Objects conforming to this interface will be responsible for formatting
representations of objects that pass through sys.displayhook() during an
interactive interpreter session.
"""
# The kind of formatter.
kind = 'display'
# The unique identifier for this formatter.
identifier = None
def __call__(self, obj):
""" Return a formatted representation of an object.
Return None if one cannot return a representation in this format.
"""
raise NotImplementedError
class ReprDisplayFormatter(IDisplayFormatter):
""" Return the repr() string representation of an object.
"""
# The unique identifier for this formatter.
identifier = 'repr'
def __call__(self, obj):
""" Return a formatted representation of an object.
"""
return repr(obj)
class PPrintDisplayFormatter(IDisplayFormatter):
""" Return a pretty-printed string representation of an object.
"""
# The unique identifier for this formatter.
identifier = 'pprint'
def __call__(self, obj):
""" Return a formatted representation of an object.
"""
import pprint
return pprint.pformat(obj)