
[XMc           @   s  d  Z  d d d !Z d d l m Z d d l m Z d d l m Z m Z m	 Z	 m
 Z
 d d l m Z d d	 l m Z d d
 l m Z d d l m Z d d l m Z d d l Z d d l Z d d l Z d d l Z d e f d     YZ d e j e j f d     YZ i i d d 6d 6i d d 6d 6i d d 6d 6i d d 6d 6i d d 6d 6i d d 6d 6i d  d 6d! 6i d" d 6d# 6Z d$ d/ d%     YZ d& d0 d'     YZ  d( d1 d)     YZ! d*   Z" d+ d2 d,     YZ# d- e j$ e j% f d.     YZ& e j' e& e e  d S(3   s+   
Manhole client with a GTK v2.x front-end.
s   $Revision: 1.9 $i   ii(   t	   copyright(   t   reactor(   t
   componentst   failuret   logt   util(   t   prefixedMethodNames(   t   pb(   t   gtk2util(   t   IManholeClient(   t
   implementsNt   OfflineErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR   !   s   t   ManholeWindowc           B   s   e  Z e j e d   Z d Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d d  Z d   Z d   Z d   Z RS(   s   gtk2manhole.gladet   inputt   outputt   manholeWindowc         C   sv   i  |  _  t j j |   t j j |   t |  j  |  _ |  |  j _	 t
 |  j  |  _ |  j j d |  j j  d  S(   Nt   key_press_event(   t   defaultsR   t   GladeKeepert   __init__R   t   Componentizedt   ConsoleInputt   _inputR   t   toplevelt   ConsoleOutputt   _outputR   t   connectt   _on_key_press_event(   t   self(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR   )   s    	c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   setDefaults7   s    c         C   sX   |  j  t  } t j | |  j  } | j |  j  | j | j  | j |  j  d  S(   N(	   t   getComponentR	   R   t   loginR   t   addCallbackt   _cbLogint
   addErrbackt   _ebLogin(   R   t   clientt   d(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR!   :   s
    c         C   s.   |  j  j d | f d  |  j j d  d  S(   Ns   %s went away. :(
t   localt   Manhole(   R   t   appendt   _manholeWindowt	   set_title(   R   t   perspective(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   _cbDisconnectedA   s    c         C   sT   | j  j j   } |  j j d | f d  | j |  j  |  j j d |  | S(   Ns   Connected to %s
R(   s   Manhole - %s(	   t   brokert	   transportt   getPeerR   R*   t   notifyOnDisconnectR.   R+   R,   (   R   R-   t   peer(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR#   E   s
    c         C   s!   |  j  j d | j f d  d  S(   Ns   Login FAILED %s
t	   exception(   R   R*   t   value(   R   t   reason(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR%   L   s    c         G   s   d d  l  } d d l m } |  j j d i t j d 6| j j d d  d 6| j	 d 6d	 j
 t t t j   d
 6d	 j
 t t t j   d 6| j t  d 6t d 6d  d  S(   Ni(   t   paths   a Twisted Manhole client
  Versions:
    %(twistedVer)s
    Python %(pythonVer)s on %(platform)s
    GTK %(gtkVer)s / PyGTK %(pygtkVer)s
    %(module)s %(modVer)s
http://twistedmatrix.com/
t
   twistedVers   
s   
      t	   pythonVert   platformt   .t   gtkVert   pygtkVert   modulet   modVerR(   (   t   syst   osR7   R   R*   R    t   longversiont   versiont   replaceR:   t   joint   mapt   strt   gtkt   gtk_versiont   pygtk_versiont   basenamet   __file__t   __version__(   R   t   widgett   unusedR@   R7   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   _on_aboutMenuItem_activateO   s    	
c         C   s   |  j    d  S(   N(   R!   (   R   RN   t   userdata(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   _on_openMenuItem_activatec   s    c         G   s   t  j   d  S(   N(   R   t   stop(   R   RN   RO   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   _on_manholeWindow_delete_eventf   s    c         G   s   t  j   d  S(   N(   R   RS   (   R   RN   RO   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   _on_quitMenuItem_activatei   s    c         G   s-   d d l  m } | j t j |  j   d  S(   Ni(   t   rebuild(   t   twisted.pythonRV   t   inspectt	   getmodulet	   __class__(   R   RO   RV   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   on_reload_self_activatel   s    (   s   inputs   outputR   N(   R   R   R   t   sibpathRL   t	   gladefilet   _widgetsR   R   R!   R.   R#   R%   RP   t   NoneRR   RT   RU   R[   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR   $   s   									t	   monospacet   familyt   defaultt   blackt
   foregroundt   stdouts   #AA8000t   stderrt   bluet   resultt   redR4   s   #008000R(   s   #000080R   s   #666666t   commandR   c           B   s5   e  Z d Z d    Z d   Z d d  Z d   Z RS(   c         C   s   | |  _  | j   |  _ xY t j   D]K \ } } |  j j |  } x* | j   D] \ } } | j | |  qP Wq% W|  j j j d  j	 d  |  j
   d  S(   NRb   i    (   t   textViewt
   get_buffert   buffert   tagdefst	   iteritemst
   create_tagt   set_propertyt	   tag_tablet   lookupt   set_priorityt   _captureLocalLog(   R   Rk   t   namet   propst   tagt   kt   v(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR      s    	c         C   s   t  j t |  d  d t S(   NR   t	   setStdout(   R   t   startLoggingt	   _Notafilet   False(   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyRu      s    c         C   so   d g } | d  k	 r% | j |  n  |  j j |  j j   | |  |  j d  k rk t j |  j  |  _ n  d  S(   NRb   (	   R_   R*   Rm   t   insert_with_tags_by_namet   get_end_itert   _willScrollRH   t   idle_addt   _scrollDown(   R   t   textt   kindt   tags(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR*      s    	
c         G   s2   |  j  j |  j j   d t d d  d  |  _ t S(   Ni    g      ?(   Rk   t   scroll_to_iterRm   R   t   TrueR_   R   R~   (   R   RO   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR      s    	N(   R   R   R_   R   R   Ru   R*   R   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR      s
   		t   Historyc           B   s;   e  Z d  d  Z d   Z d d  Z d   Z d   Z RS(   i'  c         C   s"   d g |  _  | |  _ d |  _ d  S(   Nt    i    (   t
   ringbuffert   maxhistt
   histCursor(   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR      s    	c         C   se   |  j  j d |  t |  j   |  j k r> |  j  j d  n  t |  j   d |  _ d |  j  d <d  S(   Nii    i   R   (   R   t   insertt   lenR   t   popR   (   R   t   htext(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR*      s
    i   c         C   sJ   |  j  | } | d k rB | t |  j  k  rB | |  _  |  j | Sd Sd S(   sS   
        Return next/previous item in the history, stopping at top/bottom.
        i    N(   R   R   R   R_   (   R   t   prevnextt   hcpn(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   move   s
    !	c         C   s   |  j  t |  j  d k rQ | j   | j   } } | j | |  |  j d <n  |  j d  } | d  k rp d  S| j |  d  S(   Ni   i(	   R   R   R   t   get_start_iterR   t   get_textR   R_   t   set_text(   R   t
   textbuffert   sit   eit   newtext(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   histup   s    c         C   s0   |  j  d  } | d  k r d  S| j |  d  S(   Ni   (   R   R_   R   (   R   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   histdown   s    (   R   R   R   R*   R   R   R   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR      s
   			R   c           B   s   e  Z d \ Z Z e Z d    Z d   Z d   Z	 d   Z
 d   Z d   Z d   Z e Z e Z d   Z d   Z d	   Z RS(   c         C   sk   | |  _  i  |  _ t   |  _ xF t |  j d  D]2 } | j d  d } | |  j t t j	 |  <q1 Wd  S(   Nt   key_t   _i(
   Rk   t   rkeymapR   t   historyR   RZ   t   splitt   getattrRH   t   keysyms(   R   Rk   Rv   t
   keysymName(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR      s    		c   	      C   s   t  } |  j j | j d   } g  } xO d t j j f d t j j f g D]) \ } } | j	 | @rI | j
 |  qI qI W| r d j | | g  } n  | r t |  d | d    | |  } n  |  j r | GHn  | S(   Nt   ctrlt   shiftR   s   key_%sc          _   s   d  S(   N(   R_   (   t   at   kw(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   <lambda>   s    (   R~   R   t   gett   keyvalR_   RH   t   gdkt   CONTROL_MASKt
   SHIFT_MASKt   stateR*   RE   R   t   _ConsoleInput__debug(	   R   t   entryt   eventt
   stopSignalt   ksymt   modst   prefixt   maskt   rvalue(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR      s    1"	c         C   s:   |  j  j   } | j   \ } } | j | | t  } | S(   N(   Rk   Rl   t
   get_boundsR   R~   (   R   Rm   t   iter1t   iter2R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   getText   s    c         C   s   |  j  j   j |  d  S(   N(   Rk   Rl   R   (   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   setText   s    c         C   s   |  j    } y t j |  } Wn t k
 ru } t j | j | j  } t j |  |  j	 j
 j t |  d  nm t t f k
 r } |  j	 j
 j t |  d  n9 X| d  k	 r |  j   |  j j |  |  j   t St St S(   NR4   (   R   t   codet   compile_commandt   SyntaxErrorRm   t   get_iter_at_line_offsett   linenot   offsett   placeR   R   R*   RG   t   OverflowErrort
   ValueErrorR_   t   sendMessageR   t   clearR   R~   (   R   R   R   R   t   ct   et   point(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt
   key_Return   s      

c         C   sH   |  j  j   } | j | j    j   d k rD |  j j |  t St S(   Ni    (	   Rk   Rl   t   get_iter_at_markt
   get_insertt   get_lineR   R   R   R~   (   R   R   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   key_Up  s
    !c         C   sR   |  j  j   } | j | j    j   | j   d k rN |  j j |  t St	 S(   Ni   (
   Rk   Rl   R   R   R   t   get_line_countR   R   R   R~   (   R   R   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   key_Down  s    c         C   s&   |  j  r" d d  l } | j   n  d  S(   Ni(   R   t   pdbt	   set_trace(   R   R   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   key_ctrl_shift_F9)  s    	 c         C   s&   |  j  j   } | j | j     d  S(   N(   Rk   Rl   t   deleteR   (   R   Rm   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR   -  s    c         C   s   |  j  j   } | j   \ } } | j | | t  } |  j j j t |  d  y |  j j	 t
  j |  SWn' t k
 r |  j j j d d  n Xd  S(   NRj   s!   Not connected, command not sent.
R4   (   Rk   Rl   R   R   R~   R   R   R*   t	   pythonifyR    R	   t   doR   (   R   Rm   R   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR   1  s    N(   NN(   R   R   R_   R   R   R~   R   R   R   R   R   R   R   R   t
   key_ctrl_pt
   key_ctrl_nR   R   R   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR      s   									c         C   s2   |  j  d  } d | d | d <d j |  d S(   sM   
    Make some text appear as though it was typed in at a Python prompt.
    s   
s   >>> i    s   
... (   R   RE   (   R   t   lines(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR   >  s    R}   c           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   sA   Curry to make failure.printTraceback work with the output widget.c         C   s   | |  _  | |  _ d  S(   N(   R   R   (   R   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR   H  s    	c         C   s   |  j  j | |  j  d  S(   N(   R   R*   R   (   R   t   txt(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   writeL  s    c         C   s   d  S(   N(    (   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   flushO  s    (   R   R   t   __doc__R   R   R   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR}   F  s   		t   ManholeClientc           B   sU   e  Z e e  i d  d 6Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(   t   Sett   Failurec         C   s   | |  _  | j |  j  | S(   N(   R-   R2   R.   (   R   R-   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR#   Z  s    	c         C   s   x | D] \ } } t  | t j  r> |  j j j | |  q | d k r{ t  | t j  r{ | j t	 |  j j d   q |  j j j t
 |  |  q Wd  S(   NR4   (   t
   isinstancet   typest   StringTypest   originalR   R*   R   R   t   printTracebackR}   RG   (   R   t   messagesR   t   content(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   remote_console_  s    c         C   s   d  S(   N(    (   R   t   xplorer(    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   remote_receiveExploreri  s    c         C   s   |  j  S(   N(   t   capabilities(   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   remote_listCapabilitiesl  s    c         C   s   d  |  _ d  S(   N(   R_   R-   (   R   R-   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR.   o  s    c         C   s+   |  j  d  k r t  n  |  j  j d |  S(   NR   (   R-   R_   R   t
   callRemote(   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR   r  s    	(   R   R   R
   R	   R   R#   R   R   R   R.   R   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyR   R  s   

		
			(    (    (    (    ((   R   RM   t   twistedR    t   twisted.internetR   RW   R   R   R   R   t   twisted.python.reflectR   t   twisted.spreadR   t   twisted.spread.uiR   t   twisted.manhole.serviceR	   t   zope.interfaceR
   RH   R   R   RX   t	   ExceptionR   R   R   R   Rn   R   R   R   R   R}   t   Adaptert   ReferenceableR   t   registerAdapter(    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/manhole/ui/gtk2manhole.pyt   <module>   s:   "$	M((n	%