
    Kc                     z    d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 ddl
T d dlmZ  G d de          ZdS )	    )GtkN)TimedOperationTimedSubprocess   )*)reducec                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	CheckPPDSanityc                     t                               | |d           t          j                    }|                    d           |                    d           t          j                    | _        | j                            d           | j        	                    d           | j        
                    dd           |                    | j        ddd           t          j                    }|                    t          j        j                   t          j                            t%          d                    | _        |                    | j                   |                    |ddd           |                    ||            d S )NzCheck PPD sanity   Tr   FInstall)Question__init__r   VBoxset_border_widthset_spacingLabellabelset_line_wrapset_use_markupset_alignment
pack_start
HButtonBox
set_layoutButtonBoxStyleSTARTButtonnew_with_label_install_buttonaddnew_page)selftroubleshootervboxboxs       ?/usr/share/system-config-printer/troubleshoot/CheckPPDSanity.pyr   zCheckPPDSanity.__init__#   sG   41CDDDx{{r""""Y\\

  $'''
!!4(((
  !Q'''UE1555n*0111!j779FF$%%%
 	eUA...t,,,,,    c           	      8   i | _         | j        j         }|d         sdS | j                                        }|d         }d }	 t          j        d           t          t          j        |          | _        | j                                        }t          |j	        |f|          | _        | j                                        }n"# t          $ r Y dS t          j        $ r Y dS w xY w| j                                         d }d }	 t          j        |          }d| j         d<   d	 }	i }
|j        D ]>} |	|j                  }|j        D ]} |	|j                  ||j        <   ||
|j        <   ?|
| j         d
<   n# t          $ r t'          d          }d| j         d<   	 t)          |dd|gdt*          j        t*          j        t*          j                  | _        | j                                        }|| j         d<   t'          d          |z  }|dt1          d |d                   z   z  }n"# t2          $ r t'          d          |z  }Y nw xY wY nw xY w|rt5          j        |           ||d         st9          j        |          \  }}||f| j         d<   t=          |          dk    st=          |          dk    rt'          d          }t=          |          dk    r#	 t?          j                     | _!        n	#  g }Y nxY wt=          |          dk    r@|d         | _"        t'          d          || j"        fz  }| j        #                                 nt'          d          |||z   d         fz  }|#| j$        %                    d|z   dz   |z              |d uS )Ncups_queue_listedF
cups_queue )parent)argsr-   Tcups_printer_ppd_validc                 2    i }| D ]}|j         ||j        <   |S N)	defchoicekeyword)options_listooptions      r'   optionsz'CheckPPDSanity.display.<locals>.optionsV   s-    * 9 9F(.(8Afn%%r(   cups_printer_ppd_defaultszInvalid PPD Filecupstestppdz-rvv)r-   r.   	close_fdsstdinstdoutstderrcupstestppd_outputz^The PPD file for printer '%s' does not conform to the specification.  Possible reason follows:
c                     | dz   |z   S )Nr?    )xys     r'   <lambda>z(CheckPPDSanity.display.<locals>.<lambda>r   s    AHqL r(   r   z6There is a problem with the PPD file for printer '%s'.cups_printer_remotemissing_pkgs_and_exeszMissing Printer DriverzGPrinter '%s' requires the %s package but it is not currently installed.zIPrinter '%s' requires the '%s' program but it is not currently installed.z"<span weight="bold" size="larger">z	</span>

)&answersr$   
get_windowcups	setServerr   
ConnectionoprungetPPDRuntimeErrorIPPErrorr    hidePPDoptionGroupsr7   	subgroupsnamer   r   
subprocessDEVNULLPIPEr   OSErrorosunlinkcupshelpersmissingPackagesAndExecutablesleninstallpackage
PackageKit
packagekitpackageshowr   
set_markup)r#   rG   r-   rU   tmpfctitletextppdr7   defaultsgroupgsubgroupresultpkgsexess                    r'   displayzCheckPPDSanity.display:   sL   %-*+ 	5$//22|$		NB$dofEEEDGA$ahdWVLLLDG7;;>>DD 	 	 	55} 	 	 	55	 	  ###$	1(D//C59DL12   H) ) )GU]++ % B BH'.w0@'A'AAhm$$'($$8@DL455 	1 	1 	1())E5:DL121)&1>0M591;1C2</2</C C C 5;12 4 5 57;< v'@'@&)LLLL 1 1 1 ) * *,011!	1*  	It=)>!?=&DcJJLT4594LDL01DzzA~~da233::>>"*8*C*F*F"!::>>#'7DL ; < <?C?C|?MMD ',,//// ; < <?C@DtQ?O?QQD J!!#G#($)+8$9;?$@ A A A D  s]   BC 
C%C%$C%A3E: :#IBH,+I,II
III!K: :L c                 P    | j                             d| j                  | _        d S )Nclicked)r    connectinstall_clickedbutton_sigid)r#   handles     r'   connect_signalszCheckPPDSanity.connect_signals   s-     /779=9MO Or(   c                 D    | j                             | j                   d S r1   )r    
disconnectrv   r#   s    r'   disconnect_signalsz!CheckPPDSanity.disconnect_signals   s"    &&(9:::::r(   c                     | j         S r1   )rG   r{   s    r'   collect_answerzCheckPPDSanity.collect_answer   s
    |r(   c                 8    | j                                          d S r1   )rL   cancelr{   s    r'   cancel_operationzCheckPPDSanity.cancel_operation   s    r(   c                     | j                             dg           }|                    | j                   || j         d<   	 | j                            dd| j                   d S #  Y d S xY w)Npackages_installedr   )rG   getappendrb   ra   InstallPackageName)r#   buttonro   s      r'   ru   zCheckPPDSanity.install_clicked   sr    | 4b99T\"""-1)*	O..1dlCCCCC	DDs   !A$ $A)N)
__name__
__module____qualname__r   rq   rx   r|   r~   r   ru   rA   r(   r'   r
   r
   "   s        - - -.[! [! [!zO O O; ; ;        r(   r
   )gi.repositoryr   rI   r\   r_   rZ   rV   timedopsr   r   base	functoolsr   r   r
   rA   r(   r'   <module>r      s   .                				     4 4 4 4 4 4 4 4          I I I I IX I I I I Ir(   