ó
[³XMc           @   sÁ   d  d l  m Z d  d l Z d  d l m Z d  d l m Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z d  d l m Z d  d l m Z d d	 „ Z d
 d d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   nested_scopesN(   t	   copyright(   t   defer(   t   failuret   logt   util(   t   pb(   t   UsernamePassword(   t   errorc         K   s    t  j ƒ  } t |  | | ƒ | S(   sÃ   
    @param host:
    @param port:
    @param identityName:
    @param password:
    @param serviceName:
    @param perspectiveName:

    @returntype: Deferred RemoteReference of Perspective
    (   R   t   Deferredt   LoginDialog(   t   clientt   defaultst   d(    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyt   login   s    t   GladeKeeperc           B   s,   e  Z d  Z d Z d Z d „  Z d „  Z RS(   sÕ   
    @cvar gladefile: The file in which the glade GUI definition is kept.
    @type gladefile: str

    @cvar _widgets: Widgets that should be attached to me as attributes.
    @type _widgets: list of strings
    c         C   ss   d d l  m } | j |  j ƒ |  _ i  } x' t |  ƒ D] } t |  | ƒ | | <q8 W|  j j | ƒ |  j ƒ  d  S(   Niÿÿÿÿ(   t   glade(   t   gtkR   t   XMLt	   gladefilet   dirt   getattrt   signal_autoconnectt   _setWidgets(   t   selfR   t   moldt   k(    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyt   __init__-   s    c         C   s>   |  j  j } x+ |  j D]  } t |  d | | | ƒ ƒ q Wd  S(   Nt   _(   R   t
   get_widgett   _widgetst   setattr(   R   R   t
   widgetName(    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyR   8   s    N(    (   t   __name__t
   __module__t   __doc__t   NoneR   R   R   R   (    (    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyR   !   s
   	R
   c           B   sÎ   e  Z d  d d d d g Z d Z d d	 d d g Z e j e d ƒ Z d Z
 d „  Z d „  Z d „  Z d „  Z d d „ Z d d „ Z d „  Z d d „ Z d „  Z d „  Z d „  Z d d „ Z d „  Z RS(   t   hostt   portt   identityNamet   passwordt   perspectiveNamet	   hostEntryt	   portEntryt   identityNameEntryt   passwordEntryt   perspectiveNameEntryt	   statusBart   loginDialogt   perspectiveLabelt   protocolLabelt   versionLabels   login2.gladec         C   s=   | |  _  | |  _ t j |  ƒ |  j | ƒ |  j j ƒ  d  S(   N(   R   t   deferredResultR   R   t   setDefaultst   _loginDialogt   show(   R   R   t   deferredR   (    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyR   U   s
    		c         C   s«   | j  d ƒ s% t t j ƒ | d <n0 t | d t t f ƒ rU t | d ƒ | d <n  xO | j ƒ  D]A \ } } | |  j k rb t	 |  d | f ƒ } | j
 | ƒ qb qb Wd  S(   NR&   s   _%sEntry(   t   has_keyt   strR   t   portnot
   isinstancet   intt   longt	   iteritemst   fieldsR   t   set_text(   R   R   R   t   vt   widget(    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyR5   _   s    c         C   sh   t  j |  ƒ |  j j d ƒ |  _ |  j j } | d ƒ j t j	 ƒ | d ƒ j d t
 j j f ƒ d  S(   Ns   Login dialog.R3   R2   s   Protocol PB-%s(   R   R   t
   _statusBart   get_context_idt   _statusContextR   R   RA   R   t   longversionR   t   Brokert   version(   R   R   (    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyR   j   s    c         C   sz   i |  j  t j 6|  j  t j 6|  j t j 6|  j t j 6} | j | ƒ } | d  k	 r_ | ƒ  n t
 j d | | f ƒ d  S(   Ns%   Unexpected dialog response %r from %s(   t   _windowClosedR   t   RESPONSE_NONEt   RESPONSE_DELETE_EVENTt   _doLogint   RESPONSE_OKt
   _cancelledt   RESPONSE_CANCELt   getR$   R   t   msg(   R   RC   t   responset   handlerst   handler(    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyt   _on_loginDialog_responser   s    
c         C   s   |  j  ƒ  d  S(   N(   RJ   (   R   RC   t   userdata(    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyt   _on_loginDialog_close~   s    c         C   s   |  j  ƒ  d  S(   N(   RJ   (   R   RC   RW   (    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyt   _on_loginDialog_destroy_event   s    c         C   s9   |  j  j s( |  j  j t j d ƒ ƒ n  |  j j ƒ  d  S(   Ns   User hit Cancel.(   R4   t   calledt   errbackt   netErrort	   UserErrorR6   t   destroy(   R   (    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyRO   „   s    c         C   s,   |  j  j s( |  j  j t j d ƒ ƒ n  d  S(   Ns   Window closed.(   R4   RZ   R[   R\   R]   (   R   t   reason(    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyRJ   ‰   s    c            s/  i  } ˆ  j  j ƒ  | d <ˆ  j j ƒ  | d <ˆ  j j ƒ  | d <ˆ  j j ƒ  | d <y t | d ƒ | d <Wn t k
 r} n Xt j ƒ  } d d l	 m
 } | j | d | d | ƒ t | d | d ƒ } | j | ˆ  j ƒ ‰ ‡  ‡ f d †  } | j d | ƒ ˆ  _ ˆ j ˆ  j ˆ  j ƒ ˆ  j d	 ƒ d  S(
   NR%   R&   R'   R(   iÿÿÿÿ(   t   reactorc              s,   d  ˆ  _ ˆ j t j t j d ƒ ƒ ƒ d  S(   Ns   Login timed out.(   R$   t
   _timeoutIDR[   R   t   FailureR   t   TimeoutError(    (   R   R   (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyt   _timeoutLoginŸ   s    	i   s   Contacting server...(   t
   _hostEntryt   get_textt
   _portEntryt   _identityNameEntryt   _passwordEntryR=   t
   ValueErrorR   t   PBClientFactoryt   twisted.internetR`   t
   connectTCPR   R   R   t	   callLaterRa   t   addCallbackst   _cbGotPerspectivet   _ebFailedLogint	   statusMsg(   R   t   idParamst   fR`   t   credsRd   (    (   R   R   s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyRM      s$    c         C   sV   |  j  d ƒ |  j d  k	 r5 |  j j ƒ  d  |  _ n  |  j j | ƒ |  j j ƒ  d  S(   Ns   Connected to server.(   Rr   Ra   R$   t   cancelR4   t   callbackR6   R^   (   R   t   perspective(    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyRp   °   s    c            s£   t  | t j ƒ r | j } n  |  j | ƒ t  | t t f ƒ rI | } n t | ƒ } t j |  j	 t j
 t j t j | ƒ ‰  ˆ  j ƒ  ˆ  j d ‡  f d †  ƒ d  S(   NRS   c             s
   ˆ  j  ƒ  S(   N(   R^   (   t   a(   RR   (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyt   <lambda>Ç   s    (   R<   R   Rb   t   valueRr   t   unicodeR:   R   t   MessageDialogR6   t   DIALOG_DESTROY_WITH_PARENTt   MESSAGE_ERRORt   BUTTONS_CLOSEt   show_allt   connect(   R   R_   t   text(    (   RR   s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyRq   ¹   s    		
c         C   s[   | j  ƒ  } | r d } n d } x3 |  j D]( } |  j j | ƒ } t | | ƒ ƒ  q+ Wd  S(   NR7   t   hide(   t
   get_activet   _advancedControlsR   R   R   (   R   RC   RW   t   activet   opR    (    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyt   _on_advancedButton_toggledÑ   s    	c         C   s:   t  | t t f ƒ s$ t | ƒ } n  |  j j |  j | ƒ S(   N(   R<   R|   R:   RD   t   pushRF   (   R   Rƒ   (    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyRr   Û   s    (   R*   R+   R,   R-   R.   R/   R0   N(   R!   R"   R@   R   R†   R   t   sibpatht   __file__R   R$   Ra   R   R5   R   RV   RX   RY   RO   RJ   RM   Rp   Rq   R‰   Rr   (    (    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyR
   >   s,   		  	
					#			
(    (   t
   __future__R    R   t   twistedR   Rl   R   t   twisted.pythonR   R   R   t   twisted.spreadR   t   twisted.cred.credentialsR   R   R\   R$   R   R   R
   (    (    (    s>   /usr/lib/python2.7/dist-packages/twisted/spread/ui/gtk2util.pyt   <module>   s   