
    eh                         d dl Z d dlmZ d dlZ ej                  dd       d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d d	lmZ  G d
 d      Zy)    N)gettextGtkz3.0)r   GLibGio)setup_ui)initiate)MagicAttachWaitOptionswait)MagicAttachTokenErrorc                   b    e Zd Zd Zd ZddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zy)DialogUaAttachc                    t        | t        j                  j                  |dd      d       || _        | j
                  | _        | j                  j                  |       d| _        d| _	        d| _
        d| _        t        j                         | _        | j                  j                  d| j                   d	       | j!                  | j                  | j                  j#                         d
       y)zsetup up the gtk dialog
gtkbuilderzdialog-ua-attach.uizsoftware-properties)domainNF znetwork-changedr      )r   ospathjoin	ua_objectdialog_ua_attachdialogset_transient_forcontract_token	attachingpollpinr   network_monitor_get_defaultnet_monitorconnectnet_status_changedget_network_available)selfparentdatadirr   s       G/usr/lib/python3/dist-packages/softwareproperties/gtk/DialogUaAttach.py__init__zDialogUaAttach.__init__   s    rww||G\;PQZop"++%%f-"	::<  !2D4K4KQOd..DDF	
    c                 l    | j                   j                          | j                   j                          y N)r   runhider#   s    r&   r+   zDialogUaAttach.run1   s     r(   Nc                      j                   j                         rj j                  j                   j                  j                         dk7  xr  j                           j                  } j                  } j                  }n j                  j                   j                          j                  j                   j                  dk7  xr  j                           j                  } j                  } j                   } j                  r|j#                          n|j%                           fd} | j                          j                  j                   j                   xr  j                   j                                 j                  j'                  d        j                  j'                  d        j                  j'                  d        j                   j'                  d       |dk7  r"|j'                  d       |j'                  d       |dk(  rZ|j)                  dt+        d      z         |j-                  d	d
       |j/                         j1                  dt+        d      d       y|dk(  r j3                          y|dk(  rb|j)                  dt+        d      z         |j-                  dd
       |j/                         j1                  dt+        d      d        |d       y|dk(  rW|j)                  t+        d             |j-                  dd
       |j/                         j1                  dt+        d      d       yy)z
        fail   : called by the attachment callback, and it failed.
        success: called by the attachment callback, and it succeeded.
        expired: called by the token polling when the token expires.
        r   Nc                 v    j                   j                  |         j                  j                  |         y r*   )token_radioset_sensitivemagic_radio)booleanr#   s    r&   lock_radio_buttonsz7DialogUaAttach.update_state.<locals>.lock_radio_buttonsN   s/    **w;7**w;7r(   FTfailz <span foreground="red">%s</span>zInvalid tokenzemblem-unreadabler   notificationr   successpin_validatedz"<span foreground="green">%s</span>zValid tokenzemblem-defaultexpiredzCode expiredzgtk-dialog-warning)r0   
get_activeconfirmr1   token_fieldget_textr   token_status_icontoken_spinnertoken_status	pin_labelset_textr   r   pin_status_iconpin_spinner
pin_statusstartstopset_visible
set_markup_set_from_icon_nameget_accessibleemitfinish)r#   caseiconspinnerstatusr4   s   `     r&   update_statezDialogUaAttach.update_state5   s    &&(LL&&t'7'7'@'@'Bb'H (:+/>>'9;))D((G&&FNN##DHH-LL&&t':':d'B (:+/>>'9;''D&&G__F>>MMOLLN	8 	4>>*&&4>>'9 (I+/+;+;+F+F+H	J
 	**51%%e,((/##E*DLT"t$FN@1_CUUV##$7;!!#((?9KQOiKKMo%BQ}EUUV##$4a8!!#((=9I1Mt$ia/0##$8!<!!#((>9JAN  r(   c                 $     j                   ry  j                  j                         r j                  j	                         }n j
                  }d _          fd} fd} j                  j                  |||dd        j                          y )NTc                  6    d _          j                  d       y )NFr7   )r   rS   r-   s   r&   on_replyz'DialogUaAttach.attach.<locals>.on_replyz   s    "DNi(r(   c                 x    d_         j                  j                         rd _        j	                  d       y )NFr5   )r   r2   r:   r   rS   )errorr#   s    r&   on_errorz'DialogUaAttach.attach.<locals>.on_error}   s2    "DN**,&*#f%r(   z%com.canonical.UbuntuAdvantage.ManageriX  )reply_handlererror_handlerdbus_interfacetimeout)	r   r0   r:   r<   r=   r   r   AttachrS   )r#   tokenrV   rY   s   `   r&   attachzDialogUaAttach.attachp   s    >>&&($$--/E''E	)	&
 	e88  eL  VY  	Zr(   c                 p    | j                   j                  | j                  j                         dk7         y Nr   )r;   r1   r<   r=   )r#   entrys     r&   on_token_typingzDialogUaAttach.on_token_typing   s(    ""4#3#3#<#<#>"#DEr(   c                 d    | j                   j                         }|dk7  r| j                          y y rb   )r<   r=   r`   )r#   rc   r_   s      r&   on_token_entry_activatez&DialogUaAttach.on_token_entry_activate   s+      ))+B;KKM r(   c                 $    | j                          y r*   )r`   r#   buttons     r&   on_confirm_clickedz!DialogUaAttach.on_confirm_clicked   s    r(   c                     | j                   r)t        j                  j                  | j                          | j                  j                  t        j                  j                         y r*   )	r   r   Threadunrefr   responser   ResponseTypeCANCELrh   s     r&   on_cancel_clickedz DialogUaAttach.on_cancel_clicked   s=    99KKdii(S--445r(   c                    t        | j                        }	 t        |      }|j                  | _        | j                  j                         r t        j                  | j                  d       d | _        y # t        $ r= | j                  j                         r t        j                  | j                  d       Y Mt        $ r}t        d|d       Y d }~hd }~ww xY w# d | _        w xY w)N)magic_tokenr8   r9   z$Error getting the Ubuntu Pro token: T)flush)r	   req_idr
   r   r2   r:   r   idle_addrS   r   	Exceptionprintr   )r#   optionsrn   es       r&   poll_for_magic_tokenz#DialogUaAttach.poll_for_magic_token   s    (T[[A	G}H"*"9"9D**,d//A DI % 	<**,d//; 	K8!TJJ	K DIs7   AA6 6AC9C ;CCC CC 	C'c                 ^   | j                   d k7  s| j                  d k7  ry 	 t               }|j                  | _        |j
                  | _        | j                          t        j                  j                  d| j                        | _         y # t        $ r}t        d|       Y d }~y d }~ww xY w)NzError retrieving magic token: r   )r   r   r   	user_coder   r_   ru   rw   rx   rS   r   rl   newr{   )r#   rn   rz   s      r&   start_magic_attachz!DialogUaAttach.start_magic_attach   s    99 3 3t ;
	zH))DH"..DK 	KKOOFD,E,EF		  	2A6	s   ,B 	B,B''B,c                     | j                   j                         r| j                  r| j                  d       y | j                          y )Nr8   )r2   r:   r   rS   rh   s     r&   on_radio_toggledzDialogUaAttach.on_radio_toggled   s6    &&(T-@-@o.r(   c                 $    | j                          y r*   )r   rh   s     r&   on_magic_radio_clickedz%DialogUaAttach.on_magic_radio_clicked   s    !r(   c                 l   | j                   j                  |        | j                  j                  |       | j                  j                  |       |r`| j
                  dk(  r| j                          y | j                  d k(  r0t        j                  j                  d| j                        | _        y y y )Nr   r   )no_connectionrH   radio_net_control_boxr1   confirm_net_control_boxr   r   r   r   rl   r~   r{   )r#   monitor	available	first_runs       r&   r!   z!DialogUaAttach.net_status_changed   s    &&9}5""00;$$229=xx2~'')d" KKOOFD4M4MN	 # r(   c                 j    | j                   j                  t        j                  j                         y r*   )r   rn   r   ro   OKr-   s    r&   rN   zDialogUaAttach.finish   s     S--001r(   r*   )__name__
__module____qualname__r'   r+   rS   r`   rd   rf   rj   rq   r{   r   r   r   r!   rN    r(   r&   r   r      sM    
&9Ov*F
6
G$ "	O2r(   r   )r   r   rJ   girequire_versiongi.repositoryr   r   r   softwareproperties.gtk.utilsr   +uaclient.api.u.pro.attach.magic.initiate.v1r   'uaclient.api.u.pro.attach.magic.wait.v1r	   r
   uaclient.exceptionsr   r   r   r(   r&   <module>r      s@   & 
   	   5%   & & 1 @ P 5q2 q2r(   