
    =	f*7                         d dl Z d dlZddl ddlmZ ddlmZ ddlmZ ddZ	ddZ
dd	Zd
 Zd ZddZd Zd Zd dZddZd Z G d de      Z G d de      Zd ZdZdZdefdZdefdZd Zd!dZd Zy)"    N   )*)utils)PY3)inputc                 d   t        |      t        d      k(  r
|dk(  rd}nd}||r| dz  } n| dz  } n| |z  } 	 	 t        t        j                  |             j	                         j                         }|sd|fS |dk(  ry|dk(  ry	|d
v rd|fS t        j                  d       k# t        $ r Y ww xY w)N yTFz (y=yes*, n=no, q=quit) ? z (y=yes, n=no*, q=quit) ? n)TF)TT)qcz/Please press <enter> or enter 'y', 'n', or 'q'.)typer   logboldlowerstripEOFErrorerror)questiondefault_valuechoice_prompt
user_inputs       /usr/share/hplip/base/tui.pyenter_yes_nor   !   s    Md2h&C M!M 44H44HM!
	sxx1288:@@BJ &&#-''		CD%   		s   :B# #	B/.B/c                 v   	 	 t        t        j                  |             j                         j	                         }|s|d|fS |dk(  rd|fS 	 t        |      }||k  s||kD  rt        j                  d||fz         ~d|fS # t
        $ r Y w xY w# t        $ r t        j                  d||fz         Y w xY w)NTr   Fz8Please enter a number between %d and %d, or "q" to quit.)	r   r   r   r   r   r   int
ValueErrorr   )r   	min_value	max_valuer   r   	value_ints         r   enter_ranger!   G   s    
	sxx1288:@@BJ (]**-''	JI y I	$9IIPI&' (Y-  		  	IIPI&' (	s#   :B B 	BB#B87B8c           
         d|vr|j                  d       	 	 t        t        j                  |             j	                         j                         }|s|s||k(  r|dk(  rd|fS d|fS |dk(  rd|fS ||v rd|fS t        j                  ddj                  |D cg c]  }d|z  	 c}      d|d       # t        $ r Y w xY wc c}w )	Nr   TFzPlease enter z, z'%s'z& or press <enter> for the default of 'z'.)	appendr   r   r   r   r   r   r   join)r   choicesr   r   xs        r   enter_choicer'   d   s    
's
	sxx1288:@@BJ
 }}1L#m++]** *$$ ##		YYG4q
45}F 	G)   		$ 5s   :B6 C6	CCc                    t         j                  d       t         j                  d       t         j                  t         j                  |              t         j                  t         j                  dt        |       z               y )Nr	   -)r   infor   len)texts    r   titler-      sI    HHRLHHRLHHSXXd^HHSXXc#d)m$%    c                    t        |       }t        j                  d       t        j                  d|dz   z         t        j                  d| z   dz          t        j                  d|dz   z         t        j                  d       y )Nr	   r)      z| z |)r+   r   r*   )r,   r   s     r   headerr1      s]    D	AHHRLHHS!A#YHHT$Yt^HHS!A#YHHRLr.   c                      | sd} t        |       S )NzAA page will be printed.
Please load plain paper into the printer.continue_prompt)msgr-   s     r   load_paper_promptr6      s    R3r.   c                      t        d      S )NzzLoad the alignment page on the scanner bed and push the 'Scan' or 'Enter' button on the printer to complete the alignment.r3    r.   r   load_scanner_for_align_promptr9      s      X  Y  Yr.   c                      t        d      S )NzVA page will be printed.
Please load HP Advanced Photo Paper - Glossy into the printer.r3   r8   r.   r   load_photo_paper_promptr;      s    tuur.   c                     	 	 t        t        j                  | dz               j                         j	                         }|sy|dk(  ryt        j                  d       ]# t
        $ r Y iw xY w)NTz+ Press <enter> to continue or 'q' to quit: r   Fz*Please press <enter> or enter 'q' to quit.)r   r   r   r   r   r   r   )promptr&   s     r   r4   r4      sm    
	chhv(UUVW]]_eegA #X		>?   		s   =A 	A+*A+c                    t        j                  |       }	 	 t        t        j	                  |            }|s|||fS |dk(  rd|fS |j                  |      }|st        j                  d       Zd|fS # t
        $ r Y iw xY w)NTr   Fz,Incorrect input. Please enter correct input.)recompiler   r   r   r   searchr   )regexr=   patternr   re_objr&   matchs          r   enter_regexrF      s    ZZF
	chhv&'A ]. !###X-''a IIDEQw  		s   A4 4	B ?B c                     	 t         r'dd l} | j                  d      j                         d   }n&dd l}|j                  d      j                         d   }d d d}|j                  d      D ]7  }|j                         }t        |      dk(  s"|d   ||d   <   |d   ||d   <   9 t        |d         t        |d         fS # t        $ r Y y	w xY w)
Nr   zstty -a)rowscolumns;   r   rH   rI   )(   @   )	r   
subprocess	getoutput
splitlinescommandssplitr+   r   	TypeError)rN   ln1rQ   valsphr&   s         r   ttysizerW      s    &&y1<<>qAC$$Y/::<Q?Ct,))C. 	"B
A1v{qTQqT
qTQqT
		"
 4< #d9o"666 s   B
C 3C 	CCc                       e Zd ZddZddZy)ProgressMeterc                     d| _         || _        d| _        d| _        d| _        t               d   t        |      z
  dz
  | _        | j                  d       y )Nr   z	\|/-\|/-*r      )	progressr=   prev_lengthspinnerspinner_posrW   r+   max_sizeupdate)selfr=   s     r   __init__zProgressMeter.__init__   sM    #	!s6{2R7Ar.   c                    || _         t        | j                   | j                  z  dz        }|| j                  kD  r| j                  }| j                   dk\  rd| _        d| _         t        j
                  j                  d| j                  z         d| j                  d|dz
  z  | j                  | j                     d| j                  |z
  z  | j                   |fz  }t        j
                  j                  |       t        j
                  j                          t        |      | _        | j                  dz   dz  | _        y )Nd      z%s [%s%s%s] %d%%  %s   r   r    )r\   r   r`   r_   sysstdoutwriter]   r=   r^   flushr+   )rb   r\   r5   r&   r
   s        r   ra   zProgressMeter.update   s    -34t}}$--a==C DDM

 0 001%[[#qs)T\\$2B2B%C$--/"DMM388 	



q6 ,,q0A5r.   N)z	Progress:r	   )__name__
__module____qualname__rc   ra   r8   r.   r   rY   rY      s    6r.   rY   c                        e Zd ZddZd Zd Zy)	FormatterNc                 J    || _         || _        g | _        || _        || _        y N)marginr1   rH   
max_widths
min_widths)rb   ru   r1   rw   rv   s        r   rc   zFormatter.__init__   s%    	$$r.   c                 :    | j                   j                  |       y rt   )rH   r#   )rb   row_datas     r   addzFormatter.add  s    		"r.   c           	      d   | j                   rt        | j                   d         }| j                   D ]*  }t        |      |k7  st        j                  d|z          y  t        | j                        |k7  rt        j                  d       g }| j                  D ]B  }|j                  d      }d}|D ]  }t        |t        |            } |j                  |       D g }t        | j                        D ]A  \  }}d}| j                   D ]  }t        |t        ||               } |j                  |       C d }	| j                  Lt               d   }	d|	|z  z  dz  }
g | _	        | j                  D ]  }| j                  j                  |
        n-t        | j                        |k7  rt        j                  d       | j                  N|	t               d   }	d	|	|z  z  dz  }g | _        | j                  D ]  }| j                  j                  |        n-t        | j                        |k7  rt        j                  d
       g }g }t        | j                  || j                  |      D ]V  \  }}}}t        t        ||      t        ||            }|j                  |       |j                  || j                  d       X t        j                   t#        |            }t        j%                  |j'                  | j                               g }|D ]  }|j                  dt)        |      z         ! t        j%                  |j'                  t#        |                   | j                   D ]&  }t        j%                  |j'                  |             ( y t        j                  d       y )Nr   z"Invalid number of items in row: %sz"Invalid number of items in header.rh   r   rf   
   z*Invalid number of items in max col widths.r0   z*Invalid number of items in min col widths.)widthru   r)   zNo data rows)rH   r+   r   r   r1   rR   maxr#   	enumeraterv   rW   rw   zipminru   r   TextFormattertupler*   composer   )rb   num_colsrmin_calc_widthsr   header_parts	max_widthr&   max_calc_widthsmax_screen_widthdef_maxdef_min
col_widthsformatsm1m2m3m4	col_width	formatterseps                        r   outputzFormatter.output  sF   99499Q<(HYY q6X%IIBQFG
 4;;8+		>? O[[ 2 wws|	% 7A #Is1v 6I7  &&y12 !O!$++. 21	 :A #Is1Q4y 9I:  &&y12  $&#*9Q< -h67:"$ 4AOO**734 t'83IIJK&#+'.y|$-h67:"$ 4AOO**734 t'83IIJKJG"%doo&*oo#H LBBBSR[9	!!),dkkJK	L ++E'N;IHHY&&t{{34C '

3s1v:&' HHY&&uSz23YY /**1-./ IIn%r.   )rK   NNN)rn   ro   rp   rc   rz   r   r8   r.   r   rr   rr      s    %#I&r.   rr   rK   F   c                     |t        |       z
  }|t        k(  rd|dz  z  | z   d|dz  |dz  z   z  z   S |t        k(  rd|z  | z   S | d|z  z   S )Nrh   rK   )r+   ALIGN_CENTERALIGN_RIGHT)liner}   	alignmentspaces       r   alignr   X  sq    CIEL E!G}t#E!GeAg%&' 	' 
k	!5y4 c%ir.   c                 T   |t               d   }g }| j                         }	 |d   |dd  }}|D ]H  }dt        |      z   }t        |      |z   |kD  r|j	                  t        |||             |}A|dz   |z   }J |j	                  t        |||             |S # t        $ r | gcY S w xY w)Nr   r   rh   )rW   rR   
IndexErrorr+   r#   r   )	paragraphr}   r   resultwordscurrentword	increments           r   format_paragraphr   f  s    }	!FOOEq59  'D	M	w<)#e+MM%	:;G ck$&G' MM%	23M  {s   
B B'&B'c                    t        d       t        j                  dd      }d }t        ddd      }d }t	        |       D ]Q  \  }}|| |   k(  r%|j                  t        |      dz   | |   f       |}3|j                  t        |      | |   f       S |j                          |t        d	|fz  d
||      \  }}nt        dz  d
|      \  }}|r| |   }|S t        j                  d
       |S )NzSELECT PRINTER	last_usedprinter_name)NumzCUPS Printerrf   re   )rf      r1   rv   rw   r   zA
Enter number 0...%d for printer (q=quit, <enter>=default: *%d) ?r   z+
Enter number 0...%d for printer (q=quit) ?)r1   	user_confgetrr   r   rz   strr   r!   ri   exit)	printerslast_used_printer_namerettabledefault_indexr&   _okis	            r   printer_tabler     s   
&]];G
C4)1gGE M(# -1!Xa[0IIs1v|Xa[12MIIs1vx{+,- 
LLN `degtcuu !1m5A JQNPQSTUA	qk J 	Jr.   c           	         t        d       t        j                  dd      }d }|rt        ddd      }nt        dd	d
      }d }i }t	        |       D ]  \  }}|||<   ||k(  rW|r |j                  t        |      dz   |f       n2|j                  t        |      dz   |dj                  | |         f       |}g|r|j                  t        |      |f       |j                  t        |      |dj                  | |         f        |j                          |t        d|fz  d||      \  }	}
nt        dz  d|      \  }	}
|	r||
   }|S t        j                  d       |S )NzSELECT DEVICEr   
device_uri)r   zScan device URIr   )rf      r   )r   z
Device URIzCUPS Printer(s))rf   re   re   )rf   r   r   r   ,z@
Enter number 0...%d for device (q=quit, <enter>=default: %d*) ?r   z*
Enter number 0...%d for device (q=quit) ?)r1   r   r   rr   r   rz   r   r$   r   r!   ri   r   )devices	scan_flaglast_used_device_urir   r   r   device_indexr&   dr   r   s              r   device_tabler     sy   
?$==lC
C!;,4J !I,9kS ML'" =1Q1$		3q6C<+,		3q6C<CHHWQZ,@ABM		3q61+&		3q61chhwqz&:;<= 
LLN _cdfsbtt !1m5A IAMqRSTA	1o J 	Jr.   c                     d ddid}}} t         j                  r
d||<   |dz  }t         j                  r
d||<   |dz  }t        |      dkD  rt	        d       t        ddd	
      }t        |j                               D ]T  \  }}|dk(  r'|j                  t        |      dz   |d   |d   f       2|j                  t        |      |d   |d   f       V |j                          t        d|z  d|d      \  }}|r	||   d   g} | S dg} | S )Nr   )usbzUniversal Serial Bus (USB)r   )netz:Network/Ethernet/Wireless (direct connection or JetDirect))parzParallel Port (LPT:)zSELECT CONNECTION (I/O) TYPE)r   zConnection TypeDescription)rf   r   P   )rf   r|   rL   r   r   z@
Enter number 0...%d for connection type (q=quit, enter=usb*) ? r   )prop	net_build	par_buildr+   r1   rr   listitemsrz   r   r   r!   )r   iosr&   r   datar   vals          r   connection_tabler     s)   ACQaC~~VA	Q~~0A	Q
3x!|-.!J%0[J CIIK( 	6GAtAv		3q6C<a$q':;		3q647DG45		6 	adeeq!C s8A;-C
 J gJr.   )r
   Nrt   )r	   r	   rm   )F)ri   r?   gr	   r   sixextr   sixext.movesr   r   r!   r'   r-   r1   r6   r9   r;   r4   rF   rW   objectrY   rr   
ALIGN_LEFTr   r   r   r   r   r   r   r8   r.   r   <module>r      s   .  	    #EL:G8& Yv@ .&6F 6DV& V&t 
 J   '+j 2@)X"r.   