
    Hf                     t    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
 d dlmZ  G d de      Zy)	    )GtkN)TimedOperationTimedSubprocess   )*)reducec                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	CheckPPDSanityc                    t         j                  | |d       t        j                         }|j	                  d       |j                  d       t        j                         | _        | j                  j                  d       | j                  j                  d       | j                  j                  dd       |j                  | j                  ddd       t        j                         }|j                  t        j                  j                         t        j                   j#                  t%        d            | _        |j)                  | j&                         |j                  |ddd       |j+                  ||        y )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__#   s   41CDxx{r""YY\


  $'

!!4(

  !Q'UE15nn**001!jj779F$$%
 	eUA.t,    c           	      ^   i | _         | j                  j                   }|d   sy| j                  j                         }|d   }d }	 t        j                  d       t        t        j                  |      | _        | j                  j                         }t        |j                  |f|      | _        | j                  j                         }| j                  j                          d }d }	 t        j                  |      }d| j                   d<   d	 }	i }
|j                  D ]S  } |	|j                         }|j"                  D ]!  } |	|j                         ||j$                  <   # ||
|j$                  <   U |
| j                   d
<   |rt5        j6                  |       ||d   st9        j:                        \  }}||f| j                   d<   t=        |      dkD  st=        |      dkD  rt'        d      }t=        |      dkD  r	 t?        j@                         | _!        t=        |      dkD  r?|d   | _"        t'        d      || jD                  fz  }| j                  jG                          nt'        d      |||z   d   fz  }|$| jH                  jK                  d|z   dz   |z          |d uS # t        $ r Y yt        j                  $ r Y yw xY w# t        $ r t'        d      }d| j                   d<   	 t)        |dd|gdt*        j,                  t*        j.                  t*        j.                        | _        | 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 w xY w#  g }Y xY w)Ncups_queue_listedF
cups_queue )parent)argsr-   Tcups_printer_ppd_validc                 J    i }| D ]  }|j                   ||j                  <    |S N)	defchoicekeyword)options_listooptions      r'   optionsz'CheckPPDSanity.display.<locals>.optionsV   s/    * 9F(.(8(8Afnn%9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:   s   %%--*+$$//2|$		NNB$doofEDGA$ahhdWVLDG77;;>D 	  #$	1((D/C59DLL12 H)) )U]]+ % BH'.0@0@'AAhmm$B'($	)
 9ADLL45, IIt=)>!?&DDcJLT4594LDLL01DzA~da23:>"*8*C*C*F :>#'7DL ; <?C?C||?MMD '',,/ ; <?C@DtQ?O?QQD JJ!!#G#($)+8$9;?$@ A D  W  	}} 		.  	1()E5:DLL121)&1>0M591;1C1C2<//2<//C 5;12 4 57;< v'@&)LLL 1 ) *,011!	1@"!s]   BJ) ,BK N% )	K	4K	K	#N"0BN N"NN"NN"!N"%N,c                 Z    | j                   j                  d| j                        | _        y )Nclicked)r    connectinstall_clickedbutton_sigid)r#   handles     r'   connect_signalszCheckPPDSanity.connect_signals   s'     //779=9M9MOr(   c                 N    | j                   j                  | j                         y r1   )r    
disconnectrv   r#   s    r'   disconnect_signalsz!CheckPPDSanity.disconnect_signals   s    &&(9(9:r(   c                     | j                   S r1   )rG   r{   s    r'   collect_answerzCheckPPDSanity.collect_answer   s    ||r(   c                 8    | j                   j                          y r1   )rL   cancelr{   s    r'   cancel_operationzCheckPPDSanity.cancel_operation   s    r(   c                     | j                   j                  dg       }|j                  | j                         || j                   d<   	 | j                  j                  dd| j                         y #  Y y xY w)Npackages_installedr   )rG   getappendrb   ra   InstallPackageName)r#   buttonro   s      r'   ru   zCheckPPDSanity.install_clicked   sa    || 4b9T\\"-1)*	OO..1dllC	s   'A0 0A4N)
__name__
__module____qualname__r   rq   rx   r|   r~   r   ru   rA   r(   r'   r
   r
   "   s(    -.[!zO;r(   r
   )gi.repositoryr   rI   r\   r_   rZ   rV   timedopsr   r   base	functoolsr   r   r
   rA   r(   r'   <module>r      s0   .     	  4  IX Ir(   