Changeset 2965

Show
Ignore:
Timestamp:
01/21/08 12:05:57 (11 months ago)
Author:
walter.doerwald
Message:

Register ipipe's displayhooks via the generic function
generics.result_display() instead of using ipapi.set_hook().

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ipython/trunk/IPython/Extensions/ipipe.py

    r2963 r2965  
    126126import path 
    127127try: 
    128     from IPython import genutils, ipapi 
     128    from IPython import genutils, generics 
    129129except ImportError: 
    130130    genutils = None 
    131     ipapi = None 
     131    generics = None 
    132132 
    133133 
     
    22052205    from ibrowse import ibrowse 
    22062206except ImportError: 
    2207     # No curses (probably Windows) 
     2207    # No curses (probably Windows) => try igrid 
    22082208    try: 
    22092209        from igrid import igrid 
     
    22192219 
    22202220 
    2221 # If we're running under IPython, install an IPython displayhook that 
    2222 # returns the object from Display.display(), else install a displayhook 
     2221# If we're running under IPython, register our objects with IPython's 
     2222# generic function ``result_display``, else install a displayhook 
    22232223# directly as sys.displayhook 
    2224 api = None 
    2225 if ipapi is not None: 
    2226     try: 
    2227         api = ipapi.get() 
    2228     except AttributeError: 
    2229         pass 
    2230  
    2231 if api is not None: 
    2232     def displayhook(self, obj): 
    2233         if isinstance(obj, type) and issubclass(obj, Table): 
    2234             obj = obj() 
    2235         if isinstance(obj, Table): 
    2236             obj = defaultdisplay(obj) 
    2237         if isinstance(obj, Display): 
    2238             return obj.display() 
    2239         else: 
    2240             raise ipapi.TryNext 
    2241     api.set_hook("result_display", displayhook) 
     2224if generics is not None: 
     2225    def display_display(obj): 
     2226        return obj.display() 
     2227    generics.result_display.when_type(Display)(display_display) 
     2228 
     2229    def display_tableobject(obj): 
     2230        return display_display(defaultdisplay(obj)) 
     2231    generics.result_display.when_type(Table)(display_tableobject) 
     2232 
     2233    def display_tableclass(obj): 
     2234        return display_tableobject(obj()) 
     2235    generics.result_display.when_type(Table.__metaclass__)(display_tableclass) 
    22422236else: 
    22432237    def installdisplayhook(): 
  • ipython/trunk/doc/ChangeLog

    r2964 r2965  
     12008-01-21  Walter Doerwald  <walter@livinglogic.de> 
     2 
     3    * ipipe.py: Register ipipe's displayhooks via the generic function 
     4    generics.result_display() instead of using ipapi.set_hook(). 
     5     
    162008-01-19  Walter Doerwald  <walter@livinglogic.de> 
    27