
    z#gV                     j   S SK r S SKrS SKrS SKrS SKJrJrJrJrJ	r	  S SK
Jr  SSKJrJrJrJr  S SKJr   S SKrS SKr\R,                  R/                  5       r\rS rS	 r " S
 S\5      rS r " S S\R>                  5      r  " S S\!5      r" " S S\"5      r# " S S\"5      r$ " S S\"5      r% " S S\%5      r&S r'S r(\(r)\(r*  S,S jr+S-S jr,  S.S jr-  S/S jr.S0S  jr/S! r0SSSSSSSSS"S#S0 4S$ jr1S1S% jr2SSSS0 4S& jr3  S2S' jr4    S3S( jr5/ S)Qr6S* r7S+ r8g! \ a	    \" S5      ef = f)4    N)UINotImportable	NoPackageNoBugsNoReportQuertBTSError)launch_browser   )display_reportewritespawn_editorsystem)VERSIONz?Please install the python3-urwid package to use this interface.c                      [         R                  R                  5       n U R                  [        5        U R                  SS9  U $ )Ng?)max_wait)urwidraw_displayScreenregister_palettepaletteset_input_timeoutsuis    7/usr/lib/python3/dist-packages/reportbug/ui/urwid_ui.pyinitialize_urwid_uir   7   s:    				!	!	#B 3'I    c                      g N r   r   r   nullfuncr   @   s    r   c                       \ rS rSrSrg)
buttonpushE   r   N)__name__
__module____qualname____firstlineno____static_attributes__r   r   r   r!   r!   E   s    r   r!   c                 ,    [        U R                  5      er   r!   exitcode)buttons    r   button_pressr,   I   s    
V__
%%r   c                       \ rS rSrS rSrg)SelectableTextM   c                     g)NFr   )selfchs     r   
valid_charSelectableText.valid_charN   s    r   r   N)r#   r$   r%   r&   r3   r'   r   r   r   r.   r.   M   s    r   r.   c                   N    \ rS rSr  SS jrSS jrS rS rS rS r	SS	 jr
S
rg)dialogR   Nc                     X l         SU l        U(       dx  U(       a@  [        US9nUR                  S5        [        R
                  " U/5      =U l         nSU l        O1[        R                  " [        R                  " 5       S5      =U l         nU(       d  SnU(       d  Sn[        R                  " USS9U l	        U(       aN  [        R                  " [        R                  " U5      [        R                  " 5       /5      U R                  l        U R                  n[        R                  " US	S
5      n[        R                  " USS5      n[        R                  " US5      nU(       a3  [        R                  " U5      n[        R                  " SU45      Ul        [        R                  " USS[        R                  " [        R                  " [        R                  " S5      S5      S5      4/5      n[        R                  " U[        R                  " [        R                  " S5      S5      S9n[        R                  " USU5      n[        R                  " USU5      n[        R                  " US5      nXl        g )NF)	edit_textr   TtoprelativeP   footer)
focus_part)z
fixed left   )zfixed rightr@   )z	fixed topr	   )zfixed bottomr	   bodytitlefixedr	   )border shadow)r>   centermiddlerD   )rA   
scrollmoder.   set_edit_posr   ListBoxFillerDividerFrameframePileTextheaderPaddingAttrWrapColumnsview)	r1   messagerA   widthheightrB   long_messageboxws	            r   __init__dialog.__init__S   s   	$|<  ##(==##77	D"&#(<<#GG	D$E%F[[(;
 %

EJJw,?,1MMO,= !>DJJ JJMM!.0BCLL,.ABNN1f%AAzz7E"23AH MM1w5>>%,,uzzRaGbdi:jlt+uvwxKK%..O1Lh"WXMM!Xu-LLHf-NN1h'	r   c                    / nU H  u  pVUS:X  a.  [         R                  " U5      n[         R                  " US5      nO>[         R                  " XPR                  5      nXgl        [         R                  " USS5      nUR                  U5        M     U(       a  [         R                  " U5      nUR                  U=(       d    S5        [         R                  " [         R                  " US5      5      U l
        [         R                  " U R                  [        [        U5      S5      5      U R                  l        g [         R                   " USSS	S
5      U l
        U R                  R                  U=(       d    S5        [         R"                  " [         R$                  " 5       U R                  /S	S9U R                  l        g )N---scrolllabel
selectablefocusr   
         r	   rG   )
focus_item)r   rQ   rT   Buttonr,   r*   appendrK   	set_focusrN   buttons
BoxAdapterminlenrO   r>   GridFlowrP   rM   )	r1   rk   defaultverticallinamer*   br[   s	            r   add_buttonsdialog.add_buttons   s,   %ND5 JJt$NN1m4LL'8'89%
NN1lG<IIaL & --#CMM',Q' ;;u~~c<'HIDL % 0 0s3r7B?O PDJJ >>"b!QADLLL""7<a0 %

EMMOT\\+J67!9DJJr   c                 ,    [        UR                  5      er   r)   )r1   r+   s     r   r,   dialog.button_press   s    ))r   c           
         U R                   R                  5       n  U R                  R                  USS9nU R                   R	                  X5        S nU(       d#  U R                   R                  5       nU(       d  M#  U H  n[        R                  R                  U5      (       a!  Uu  pVpxU R                  R                  UXVXxSS9  US:X  a  U R                   R                  5       nU R                  R                  X5      nU(       d  M  U R                  X5        M     GM  ! [         a(  n	U R                  U	R                  S   5      s S n	A	$ S n	A	ff = f)NTrc   zwindow resizer   )r   get_cols_rowsrV   renderdraw_screen	get_inputr   utilis_mouse_eventmouse_eventkeypressunhandled_keyr!   on_exitargs)
r1   sizecanvaskeyskeventr+   colrowes
             r   run
dialog.run   s#   ww$$&	+))$d);##D177,,.D $Azz003323/s		--d.3S48 . : O+#ww446		**43Aq**43  "  	+<<q	**	+s+   A D$ >B
D$ D$ $
E.EEEc                     U$ r   r   r1   r*   s     r   r   dialog.on_exit   s    r   c                 F   US;   aS  U R                   R                  nUS:X  a  U R                   R                  S5        OU R                   R                  S5        US;   a  U R                  (       a7  U R                   R                  S5        U R                  R                  X5        O=US;   a  U R                   R                  S5        OU R                   R                  S5        US:X  a7  U R                   R                  S5        U R                  R                  X5        g g )N)tabz	shift tabr>   rA   )uppage updownz	page down)r   r   enter)rO   r?   rj   rI   rA   r   rV   )r1   r   r   rc   s       r   r   dialog.unhandled_key   s    $$JJ))E 

$$V,

$$X.66

$$V,		""4+''

$$V,

$$X.<JJ  *IIt' r   c                     U(       a  Xl         O[        5       U l         U R                   R                  U R                  5      $ r   )r   r   run_wrapperr   )r1   r   s     r   maindialog.main   s-    G)+DGww""488,,r   )rA   rk   rO   rI   r   rV   )NNN r   )r   Fr   )r#   r$   r%   r&   r]   ru   r,   r   r   r   r   r'   r   r   r   r6   r6   R   s,    >B(**X90*+0(,-r   r6   c                       \ rS rSrSS jrSrg)
displaybox   Nc                 D   U(       a  Xl         O[        5       U l         U R                   R                  5       nU R                  R	                  USS9nU R                   R                  5         U R                   R                  X#5        U R                   R                  5         g )NTrz   )r   r   r{   rV   r|   startr}   stop)r1   r   r   r   s       r   showdisplaybox.show   sk    G)+DGww$$&!!$d!3D)r   r   r   )r#   r$   r%   r&   r   r'   r   r   r   r   r      s    	r   r   c                   (    \ rS rSr  SS jrS rSrg)	textentry   Nc                    [         R                  " XdS9U l        [         R                  " U R                  /5      n[         R                  " USS5      nU(       dD  [         R
                  " SSU4[         R                  " 5       /5      n[         R                  " U5      n[        R                  XXrX55        U R                  R                  S5        g )N)r9   	multilinerb   	focustextrC   r	   rA   )r   EditeditrK   rT   rP   rM   rL   r6   r]   rO   rj   )r1   textrX   rY   r   rB   r9   rA   s           r   r]   textentry.__init__   s    JJH	}}dii[)~~dL+>::D15==?CDD<<%DD?

V$r   c                 8    XR                   R                  5       4$ r   )r   get_edit_textr   s     r   r   textentry.on_exit   s    00222r   )r   )NNFr   r   r#   r$   r%   r&   r]   r   r'   r   r   r   r   r      s    @E%'%3r   r   c                   (    \ rS rSr  SS jrS rSrg)
listdialog   Nc           	         / n/ U l         U H  u  pU R                   U	l        U R                   R                  U	5        U
(       a/  [        R                  " SXy4[        R
                  " U
5      /S5      n	[        R                  " U	SS5      n	UR                  U	5        M     [        R                  " U5      n[        R                  " US5      n[        R                  XXTUUS9  U R                  R                  S5        g )NrC   r@   rb   rc   )rY   rX   rA   rB   rA   )itemsothersri   r   rU   rQ   rT   rK   r6   r]   rO   rj   )r1   r   widgetshas_defaultrX   rY   rB   buttonwidthrr   r\   labellbs               r   r]   listdialog.__init__   s    
!JQzzAHJJa MMG[#<#(::e#4#678:q,8AIIaL " ]]2^^B-6R# 	 	% 	

V$r   c                     U(       a  US4$ U R                    H>  n[        US5      (       d  M  UR                  5       (       d  M-  XR                  5       4s  $    US4$ )z#Print the tag of the item selected.N	get_state)r   hasattrr   	get_label)r1   r*   is      r   r   listdialog.on_exit  sO    T>!Aq+&&1;;==..  ~r   )r   )FNNr   re   r   r   r   r   r   r      s    ?C46%(r   r   c                       \ rS rSrS rSrg)checklistdialogi  c                     U(       a  U/ 4$ / nU R                    H9  nUR                  5       (       d  M  UR                  UR                  5       5        M;     X4$ )zc
Mimic dialog(1)'s --checklist exit.
Put each checked item in double quotes with a trailing space.
)r   r   ri   r   )r1   r*   rr   r   s       r   r   checklistdialog.on_exit  sK    
 R<A{{}}		!++-(  |r   r   N)r#   r$   r%   r&   r   r'   r   r   r   r   r     s    r   r   c                    U(       a  U [        U5      -  n SU;   a  US   nOSnSU;   a  US   nOS n[        R                  " SU 5      nU Vs/ s H)  n[        R                  " SSU5      R	                  5       PM+     nnSR                  U5      R	                  5       n [        SX=(       d    [        S9nUR                  U5        g s  snf )	NrB   r   r   z

+\s+rE   

rZ   rB   )	tupleresplitsubstripjoinr   r   r   rW   r   kwargsrB   r   chunksxr[   s           r   display_messager   "  s    E$K'&wv~D\ XXgw'F6<=fbffVS!$**,fF=kk&!'')G
Rg5Eg
FCHHRL	 >s   0Cc                    U(       a  U [        U5      -  n SU;   a  US   nOSnSU;   a  US   nOS n[        R                  " SU 5      nU Vs/ s H)  n[        R                  " SSU5      R	                  5       PM+     nnSR                  U5      R	                  5       n [        SX=(       d    [        S9nUR                  S	/5        UR                  U5        g s  snf )
NrB   r   r   z
+r   rE   r   r   OKr   )
r   r   r   r   r   r   r6   r   ru   r   r   s           r   rZ   rZ   9  s    E$K'&wv~D\ XXeW%F6<=fbffVS!$**,fF=kk&!'')G
'1A'
BCOOYK HHRL >s   0CFc                    [         R                  " [         R                  5      nU R                  USS9R	                  SS9n[        SUSU=(       d    [        S9n	U(       d  0 n/ n
S n[        U5       HN  u  pUR                  5       (       a  UnUR                  5       nU
R                  UR                  X5      U45        MP     U	R                  XSS9  U	R                  U5      nU$ )Nreplace)errorsr   r;   )rZ   rY   rB   T)rq   )localenl_langinfoCODESETencodedecoder6   r   	enumerateisupperlowerri   getru   r   )msgokhelpallow_numbersnowrapr   rB   locsafe_msgr[   rk   rp   r   optionresults                  r   select_optionsr   U  s    


V^^
,Czz#iz077y7IH
(3C')CGGr]	>>G\\^F0&9:	 # OOGtO4XXb\FMr   c                     [        SU [        S9nUR                  SS/S[        U5      -
  S9  UR	                  U5      nU$ )Nr   r   )YesT)NoFr	   )rp   )r6   r   ru   intr   )r   yeshelpnohelprp   r   r   r[   r   s           r   yes_nor   k  s@    
#W
5COO]M2AG<LOMXXb\FMr   c                     U(       a  [         < SU< 3nO[         n[        XUS9nUR                  S/5        UR                  U5      u  pU	=(       d    U$ )N: )rB   r9   r   )r   r   ru   r   )
promptoptionsrB   empty_okforce_promptrp   r   r[   coder   s
             r   
get_stringr  r  sG    #U+
F7
;COOYK "JD?7r   c                     U(       a  [         < SU< 3nO[         n[        U SS9nUR                  S/5        UR                  U5      u  pgUR	                  S5      nU$ )Nr   T)r   r   
)r   r   ru   r   r   )	r   r   rB   r   r   r[   r   r   rr   s	            r   get_multiliner    sP    #U+
Fd
+COOYK "JD	D	BIr   c                 .    [         R                   " U 5      $ r   )getpass)r   s    r   get_passwordr    s    ??6""r   c                     U(       a?  U(       a7  U R                    H&  nUR                  U:X  d  M  UR                  S5        M(     g g g NT)r   r   	set_state)r1   stateotherwidgets       r   _enable_other_checkboxr    s6    kkF||u$  & " ur   OkCancelc                    U(       d  / nO[        U5      nU(       a  Uc  / nO"[        U[        5      (       a  U/nO	U(       d  SnU(       a  [        < SU< 3nO[        n[        U[        5      (       a  UR                  5       nU(       ar  / nU H$  nUU;   d  M  UR                  UUU   45        UU	 M&     [        UR                  5       5      nUR                  5         U H  nUR                  U5        M     UnO)[        UR                  5       5      nUR                  5         / nU HK  u  nnU(       a+  UR                  U[        R                  " SSU5      45        M8  UR                  UU45        MM     UnU(       a  U VVs/ s H?  u  nn[        R                  " UUU;   [        UR                  US5      S9U=(       d    S4PMA     nnn[        U USUS9nU(       a  UR!                  US	4US
4US4/5        OUR!                  US	4US
4/5        UR#                  U
5      u  nnUS	:  a  g U$ S n/ n/ nU H  u  nnUS:X  a0  [        R$                  " U5      n[        R&                  " US5      nSnO?[        R(                  " UU" UU5      UU:H  S9nUUl        [        R&                  " USS5      nUR                  UU45        M     [-        U USUSS9nU(       a  UR!                  US	4US
4US4/5        OUR!                  US	4US
4/5        S	nU(       a"  [/        U5       H  u  nnUS	   U:X  d  M  Un  O   UR#                  U
5      u  nnUS	:  a  U$ U$ s  snnf )Nr   r   r   rE   F)r  on_state_change	user_datar;   )rY   rB   r   c                     U $ r   r   )r   descs     r   label_buttonmenu.<locals>.label_button  s    r   r`   ra   )r  rb   rc   re   )rY   rB   r   )list
isinstancestrr   dictcopyri   r   sortr   r   r   CheckBoxr  r   r   ru   r   rQ   rT   RadioButtonr*   r   r   )parr   r   rp   rB   any_okorderextrasmultipler   r   oklabelcancellabel	quitlabelenable_otherolistkeyr   optsr  r   r[   r   chosenr  rlistrt   rc   r   opts                                 r   menur1    sS    f?G%%iG#U+'4  ,,.E'>LL#ws|!45  7==?+GLLN!V$ "G7==?+GLLNDKKT!:;<KK'	  
 G
 7>	? 7>NVT	 NN6&G2C3I-9-=-=fe-L% JB	  7>	 	 ?
 c73C$)+OOgq\K+<'_. / OOgq\K+<=>"A: GEU?

4 Aq-0AD!!%fd)CFV]L]_AAJq,8A4y!   S'*: b2C'1R'89b/JK'1R'89:E(FAs1v  )
 XXb\NFFzMk?s   AMc                     [        XUUS9$ )N)rB   r   rp   )r  )r   rB   r   rp   s       r   get_filenamer3    s    f%' 'r   c                      [        XX#UXVSSUS9
$ )NTF)rp   rB   r$  r%  r&  r   r*  )r1  )r"  r   r   rp   rB   r$  r%  r*  s           r   select_multipler5    s    fUTE)+ +r   c
           	         SSK Jn
  UnU(       d
  [        5       nU
R                  U   n[	        SXS   X{S9  U
R                  XXX8S9nU(       d  [        SXUS9  g [        SS	S
SS9nSn Uu  nnUS   n[        UUUR                  XS9nS nU(       a  US:X  a   g US:X  a  gUS:X  a  U$ [        U
R                  XU5      5        M]  )Nr   debbugsz4Retrieving report #%d from %s bug tracking system...rs   )rB   r   )mirrors
http_proxyarchivedzBug report #%d not found.r  zMore details (launch browser)zSubmit more informationQuit)odmqOdmq)rB   r   r   r=  r@  r  r?  )	reportbugr8  r   SYSTEMSr   
get_reportrZ   r  r   subjectr   get_report_url)numberbtsr9  r:  timeoutscreen	queryonlyrB   r;  mbox_reader_cmdr8  r   sysinfoinfor   validbuginfobodiesrA   rs                       r   show_reportrS    s     "	B "ooc"GJFO5A fs)3  HD0&"MT<.&:GE
 &ay4goo"SQ#X  #X#XNw--c8DE r   c                    SSK Jn  UR                  U   nUR                  S5      nU(       d  [	        SUS   5        g UnU(       d
  [        5       n[        U [        5      (       a,  U nU	(       a  US-  n[        SUR                  U   S   UUUS9  OF[        S	UR                  U   S   S
R                  U  Vs/ s H  n[        U5      PM     sn5      UUS9  S n UR                  XXU
XHU	S9u  nnn U(       d$  UR                  [        5        Uc  [         e["        eUS:  a  SU4-  nOSU4-  n/ nU H  u  nnUR%                  SU45        0 nU H3  nSnUR&                  S:X  a  SnUR(                  U-   UUR*                  '   M5     [-        [/        UR$                  [1        UUS9 V s/ s H  n [        U 5      UU    4PM     sn 5      5        M     US   S   n!U(       a  Sn"S n#OSn"Sn# [3        [5        SUSUUU!SU"U#S9	5      n$S nU$S:  a+  U$S:X  a  S nO!U$S:X  a  [6        eUR9                  U$U5      S   nO[;        U$XUX%S9n%U%(       a  U%nOMe  U(       a+  [        UUR>                  R@                  5      (       d  [6        eU$ s  snf ! [         a<  nUR                  [        5        SUS   < S[        U5      < S3n[        U5      eS nAff = fs  sn f ! [          a&    UR                  [        5        [=        S US!9  [         ef = f)"Nr   r7  btsrootz8%s bug tracking system has no web URL; bypassing query.
rs   z	 (source)z1Querying %s bug tracking system for reports on %s)r   rB   z.Querying %s bug tracking system for reports %srE   )r9  versionr:  r;  sourcezUnable to connect to z BTS (error: "z"); r	   z%d bug reports foundz%d bug report foundr`   r   donez  [RESOLVED])reverseExitzNew bugr<  zPSelect a bug to read (and possibly report more information) or report a new bug:zRead bug)r   rB   rp   r'  r(  r)  r  r  )rK  z No record of this package found.)rB   )!rB  r8  rC  r   r   r   r  r  r   r   get_reports	Exceptionr   r   reprr   r   r   ri   pendingrE  bug_numr  mapsortedr   r1  r   rD  rS  rZ   	debianbts	Bugreport)&packagerH  rI  r9  r:  rK  rJ  rB   r;  rW  rV  mboxbuglistrL  latest_firstr8  rM  rootr   pkgnamer   r   countsectitle	hierarchyr   errmsgtbugsbuglist_tmpbugrX  r   pr(  r)  rN  ress&                                         r   handle_bts_queryrt  8  s7    "ooc"G;;y!DJv	 	B "'3{"GK,V4gU	, 	H,V4'!:'Q#a&'!:;%	Q F$'.':':cG!V (; (E$)>NN8$ qy1UH<0E8;G&	Dqz* CD{{f,-/2{{T/AK,   SFS^htLu)vLuq3q6;q>*BLu)vwx ' 
1A$ 	'"	4 r '(A(2,7*3	5 6
 !8rz!%& ")!3!3D'!B1!E%dC*&-DC!$- > j):):)D)DEEMc ";  $
x BI&/SWXYSZ[F##$: *wF  
x 7uEsJ   8JJ
 3B7K *KA4K 9K K 

K7KKK 0L))rA   black
light graystandout)rD   ru  	dark blue)rF   whiteru  )rb   ru  	dark cyan)rc   ry  rx  bold)r   rv  rx  )rB   zdark redrv  )ra   ry  rz  c                      gr	  r   r   r   r   
initializer}    s    r   c                  >    [         R                  R                  5       $ r   )sysstdinisattyr   r   r   	can_inputr    s    99r   )NFFNN)TFN)NNFFr   N)NNFNr   )NFr   )NFr   noN)Nr   FNr   r  FNFNNF)9r   r  r   r  reportbug.exceptionsr   r   r   r   r   reportbug.urlutilsr   text_uir
   r   r   r   rB  r   urwid.raw_displayr   ImportErrorr  r  ISATTYlog_messager   r   r\  r!   r,   r   r.   objectr6   r   r   r   r   r   rZ   final_messagedisplay_failurer   r   r  r  r  r  r1  r3  r5  rS  rt  r   r}  r  r   r   r   <module>r     s  4  
 	   .  ] 
				
	 	&UZZ 
~-V ~-B
 
3 3$ @j  .0  DI"&, OT"
 BG#' (,4D55T8t"gV'
 37dt"+ JL/3%P FHFJEI8=m`	U  ]
[
\\]s   D# #D2