
    KcP                         d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dlmZ d dlmZ d dl	Z	d dl
Z
d dlmZmZ ddlT d dlZd dlT d	Zd
Z G d de          ZdS )    N)GLib)Gdk)Gtk)Pango)TimedOperationOperationCanceled   )*z/com/redhat/PrinterSpoolerzcom.redhat.PrinterSpoolerc                   :   e Zd Zej         ed          ej         ed          ej         ed          ej         ed          ej	         ed          ej
         ed          ej         ed          iZd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )PrintTestPagePendingHeld
ProcessingStoppedCanceledAborted	Completedc                    t                               | |d           t          j                    }|                    d           |                    d           t          j                    }|                    dd           |                    d           |	                    d           |
                    |ddd           || _        dt          d          z   dz   t          d	          z   | _        t          j                    }|                    d           |                    d
           |                    t          j        j                   t          j                            t          d                    | _        |
                    | j        ddd           t          j                            t          d                    | _        |
                    | j        ddd           |
                    |ddd           t          j                    }t          j                    }t          j        t          d          |d          }t          j        t          d          t          j                    d          }t          j                    }	t          j        t          d          |	d          }
t          j                    }t          j        t          d          |d
          }t          j        t          d          t          j                    d          }|                    d           || _        |
                    d           |	                    dt<          j        j                    |	                    dd           |                    d           |                    dt<          j        j                    |                    dd           |                    d           |!                    |           |!                    |           |!                    |
           |!                    |           |!                    |           |"                    d           t          j#                    }|$                    t          j%        j&        t          j%        j&                   |'                    t          j(        j)                   |*                    |           || _+        |
                    |ddd           t          j        t          d                    }|	                    d           |                    dd           |
                    |ddd           t          j                    }|                    d           t          j,        t          d                    | _-        t          j,        .                    | j-        t          d                    }|
                    | j-        ddd           |
                    |ddd           |
                    |ddd           i | _/        |0                    ||            d S )NzPrint test page   r   TFz"<span weight="bold" size="larger">z	Test Pagez	</span>

zNow print a test page.  If you are having problems printing a specific document, print that document now and mark the print job below.   zPrint Test PagezCancel All JobsTest)activeJobr	   )textPrinter   DocumentStatus   	ellipsizezwidth-chars   z*Did the marked print jobs print correctly?)label   YesNo)1Question__init__r   VBoxset_spacingset_border_widthLabelset_alignmentset_use_markupset_line_wrap
pack_start
main_label_main_label_text
HButtonBox
set_layoutButtonBoxStyleSTARTButtonnew_with_labelprint_buttoncancel_buttonTreeViewCellRendererToggleTreeViewColumnCellRendererText	set_radio	test_cellset_resizableset_propertyr   EllipsizeModeENDappend_columnset_rules_hintScrolledWindow
set_policy
PolicyType	AUTOMATICset_shadow_type
ShadowTypeINaddtreeviewRadioButtonyesnew_with_label_from_widgetpersistent_answersnew_page)selftroubleshooterpager"   hboxtvr@   testjobprinter_cellprinter	name_cellnamestatusswvboxnos                    >/usr/share/system-config-printer/troubleshoot/PrintTestPage.pyr'   zPrintTestPage.__init__3   sr   41BCCCx{{"r"""	Q"""d###T"""ua000 D !+!/1>!? ! #/ !0 !0!0 ~  q!!!!+1222J55q9J7K7KLL*E5!<<< Z66:K8L8LMM+UE1===ueQ///\__*--	!1V99iBBB !E((C,@,C,C!LLL+..$a	llLqIII(++	!1Z==)!DDD#Qx[[#2F2I2I*+- - -U###"t$$$!!;0C0GHHH!!="555D!!!U-@-DEEEr222d###
$
#
'"""
$
&!!!
4   ""
s~/1IJJJ
CN-...
UE1---	"N O OPPPT"""Q"""ua000x{{!?!E((333_771T77KK5%333UE1---ueQ///"$t,,,,,    c                 `     j         j        }d|vrdS  j                                         }|d          _        d }|                    di           }|                                D ]&}|                                D ]\  }}|dk    r|} n'|dt          d          |z  z   }nd} j        |z   }	 j	        
                    |	           t          j        t          t          t          t          t                    }
 j                            |
           i  _         j                            d	g           } fd
}t)          ||           _        	  j                                        \  }n# t.          t0          j        f$ r Y dS w xY w	 d j         j        d         z   fd                                D             }n	#  g }Y nxY wt7          t9          |                              t9          |                              }d }|D ]}	 |         }n+# t<          $ r 	 ||         }n# t<          $ r Y Y -w xY wY nw xY w|
                    d           }| j        |<   |
                     |d||v            |
                     |d|            !                    ||           dS )N
cups_queueF_authenticated_connectioncups_printer_ppd_defaults	MediaTypez

z;Remember to load paper of type '%s' into the printer first. test_page_job_idc                      j         } 	 g d}|                     dd|          }|                     d|          }n=# t          $ r0 |                     dd          }|                     d          }Y nw xY w||fS )	N)zjob-idjob-name	job-statejob-printer-uriprinter-nameznot-completedF)
which_jobsmy_jobsrequested_attributes	completed)rr   rt   )rr   rs   rr   )authconngetJobs	TypeError)cr	jobs_dictcompleted_jobs_dictrU   s       rd   get_jobsz'PrintTestPage.display.<locals>.get_jobs   s    AI% % %
 II//4<= & ? ?	 '(iiKFG '0 'I 'I## I I III//4 & 6 6	&'iiKi&H&H###	I
 233s   3> 7A87A8parent/c                 V    g | ]%}|         d                                         #|&S )rp   )endswith).0xr|   queue_uri_endings     rd   
<listcomp>z)PrintTestPage.display.<locals>.<listcomp>   sL     $I $I $I!,5aL9J,K,4H6F,G,G$IA $I $I $Ire   r   r	   T)"rV   answers
get_windowrw   getvaluesitemsr1   r2   r0   
set_markupr   	ListStoreboolintstrrO   	set_modeljob_to_iterrS   r   oprunr   cupsIPPErrorkeyslistsetunionKeyErrorappend	set_value
update_job)rU   r   r   	mediatypedefaultsoptsoptvaluemediatype_string
label_textmodel	test_jobsr~   r}   jobs_on_this_printerjobsr[   jiterr|   r   s   `                  @@rd   displayzPrintTestPage.display   sY   %-w&&5$//22 ;<	;; ;R@@OO&& 	 	D"jjmm  
U+%% %IE &  % ,J *K *K)2*3  4  "),<<
""J///t""""	$ $
 	'''+//1CRHH		4 	4 	4 	4 	4( !(6:::	/3w{{~~,Y++!4=1 	 	 	55		&"T%8%@%NN$I $I $I $I $Iy~~/@/@ $I $I $I  	&#%    S^^))30D+E+EFFGG" 	% 	%CcN   +C0AA   HH A <<&&D$(DS!OOT1cY&6777OOT1c***OOS!$$$$tsT   E3 3FF6G GH
I(H10I1
H?;I>H??IIc                      j                             d j                   _         j                            d j                   _         j                            d j                   _	         fd} j
                                        }t          ||           _        	  j                                         _        n# t           t"          j        f$ r Y nw xY w	 t'          j                    }n	#  d }Y nxY w| _        |r'|                     j        t0          t2                     t5          j        d j                   _        d S )Nclickedtoggledc                  H    j         } |                     dg d          }|S )Nr   )job-createdjob-completedjob-stoppedzjob-progresszjob-state-changed)events)rw   createSubscription)rz   sub_idrU   s     rd   create_subscriptionz:PrintTestPage.connect_signals.<locals>.create_subscription   sA    A))33H 3H 3H * I IF Mre   r   pathdbus_interfacer	   )r9   connectprint_clickedprint_sigidr:   cancel_clickedcancel_sigidr@   test_toggled
test_sigidrV   r   r   r   r   r   r   r   r   dbus	SystemBusbusadd_signal_receiverhandle_dbus_signal	DBUS_PATH
DBUS_IFACEr   timeout_add_secondsupdate_jobs_listtimer)rU   handlerr   r   r   s   `    rd   connect_signalszPrintTestPage.connect_signals   sq   ,44i6:6HJ J .66	8<8KM M.00)262CE E	 	 	 	 	 $//22 "5fEEE	'++..DKK!4=1 	 	 	D		.##CC	CCC 	@##T%<*34> $ @ @ @ -q$2GHH


s   &C CC"C6 6C<c                 T     j         r, j                              j        t          t                      j                             j                    j                             j	                    j
                             j                    fd} j                                        }t          | j        f|           _        	  j                                         n# t$          t&          j        f$ r Y nw xY w	  `n#  Y nxY wt-          j         j                   d S )Nr   c                 @    j         }|                    |            d S N)rw   cancelSubscription)r   rz   rU   s     rd   cancel_subscriptionz=PrintTestPage.disconnect_signals.<locals>.cancel_subscription
  s$    A  &)))))re   r   )r   remove_signal_receiverr   r   r   r9   
disconnectr   r:   r   r@   r   rV   r   r   r   r   r   r   r   r   sub_seqr   source_remover   )rU   r   r   s   `  rd   disconnect_signalsz PrintTestPage.disconnect_signals   sK   8 	HH++T-D2;<F , H H H 	$$d&6777%%t'8999!!4?333	* 	* 	* 	* 	* $//22 "5#';.)/1 1 1	GKKNNNN!4=1 	 	 	D			DDJ'''''s   C( (D DD Dc                       j         si S  j                                         _         j                                        } j                                        }| j        d<    G d d          } j        	                                } ||          j
        } fd}t          ||f|           _        	  j                                        }| j        d<   n# t          t          j        f$ r Y nw xY w j        S )Ntest_page_successfulc                       e Zd Zd Zd ZdS )2PrintTestPage.collect_answer.<locals>.collect_jobsc                 J    g | _         |                    | j        d            d S r   )r   foreacheach)rU   r   s     rd   r'   z;PrintTestPage.collect_answer.<locals>.collect_jobs.__init__(  s%    	ty$/////re   c           
      j    | j                             |                    |ddddd                     d S )Nr   r	   r   r   r   )r   r   r   )rU   r   r   r   	user_datas        rd   r   z7PrintTestPage.collect_answer.<locals>.collect_jobs.each,  s4    	  %))T1aAq"A"ABBBBBre   N)__name__
__module____qualname__r'   r    re   rd   collect_jobsr   '  s7        0 0 0C C C C Cre   r   c           	      
   d }
j         }g }| D ]s\  }}}}}d }	|rL	 |                    |          }	n5# t          $ r( ||                    d          }
j        |         }	Y nw xY w|                    ||||||	f           t|S )Nallrv   )rw   getJobAttributesAttributeErrorrx   	job_attrsr   )r   r   rz   
with_attrsrZ   jobidr]   docr`   attrsrU   s             rd   collect_attributesz8PrintTestPage.collect_answer.<locals>.collect_attributes1  s    IAJ7; O O3ugsF 66 ! 2 2E : :) 6 6 6$,()		e	(D(DI $u 56 !!D%#vu#MNNNNs   2/A$#A$r   test_page_job_status)	displayedrS   copyr   rV   r   rQ   
get_activerO   	get_modelr   r   r   r   r   r   r   )rU   r   successr   r   r   r   r   s   `       rd   collect_answerzPrintTestPage.collect_answer  sD   ~ 	I.3366$//22(%%((/6+,	C 	C 	C 	C 	C 	C 	C 	C ''**|U##(	 	 	 	 	( !"4#'')/1 1 1	J3=DL/00!4=1 	 	 	D	 |s   9#C C65C6c                     | j                                          | j        j        }|d         }|                                | _        | j        | j        d<   d S )N!_authenticated_connection_factoryrh   )r   cancelrV   r   get_connectionrw   )rU   r   factorys      rd   cancel_operationzPrintTestPage.cancel_operationP  sT     %-=>..1148M0111re   c                     t          d           t          j        | j                   t          j        d| j                  | _        d S )Nz,D-Bus signal caught: updating jobs list soon   )
debugprintr   r   r   timeout_addr   )rU   argss     rd   r   z PrintTestPage.handle_dbus_signalY  s?    BCCCDJ'''%sD,ABB


re   c                    | j         |         }| j                                        }	 |d         }nN# t          $ rA 	 |d         }|                    d          }||dz   d          }n# t          $ r d }Y nw xY wY nw xY w||                    |d|           |                    |d|d                    |                    |d| j        |d	                             d S )
Nrq   rp   r   r	   r   r   rn   r   ro   )r   rO   r   r   rfindr   STATE)rU   r   job_dictr   r   printer_nameurir{   s           rd   r   zPrintTestPage.update_job^  s   &''**	$#N3LL 	$ 	$ 	$$01IIsOO"1q566{ $ $ $#$	$ #OOT1l333q(:"6777q$*Xk-B"CDDDDDs2   1 
A<*A'&A<'A63A<5A66A<;A<c                 :   t          j                     }t          j        |          }t          j        d|          }|| j        d<   | j        j        | j                                        }fd}d }d dg}|D ]}		 |	8t          |d         f|          | _        | j        	                                }
n|	dk    rt          j                    \  }}t          j        |d           t          j        |           t          |d         f||	d|	          | _        | j        	                                }
	 t          j        |           n# t           $ r Y nw xY wd }| j                            d
g           }|                    |
           || j        d
<    d S # t&          $ r d| j        d<   Y  d S t(          $ r d| j        d<   Y  d S t*          j        $ r}|j        \  }}|t*          j        k    rG|                    |	          t5          |          dz
  k     r|t          j        |           d }Y d }~||f| j        d<   t7          t9          d          t9          d          |z  | j                                                   Y d }~ d S d }~ww xY wd S )Nz%d/%b/%Y:%T %ztest_page_attemptedc                  V    d         }|                                 } |j        | i |S )Nr   )r   printTestPage)r  kwargsr   rz   r   s       rd   print_test_pagez4PrintTestPage.print_clicked.<locals>.print_test_pagey  s6    ABG&&))A"1?T4V444re   z
text/plainrg   r   s   This is a test page.
)fileformat)r  r   rl   r   test_page_submit_failurer   r	   zError submitting test pagez3There was an error during the CUPS operation: '%s'.)time	localtimestrftimerS   rV   r   r   r   r   r   tempfilemkstemposwritecloseunlinkOSErrorr   r   r   RuntimeErrorr   r   r  IPP_DOCUMENT_FORMATindexlenshow_error_dialogr1   )rU   widgetnowttwhenr   r  tmpfname	mimetypesmimetyper   tmpfdr   esr   s                  @rd   r   zPrintTestPage.print_clickedq  s0   ill^S!!}.339= 56%-$//22	5 	5 	5 	5 	5
 <(	! 2	 2	H1#,o/6|/D.F5;= = =DG !GKKNNEE--(0(8(;(;%UHHe%>???He$$$,o/6|/D.F>F@H6J 6J5;	= = =DG
 !GKKNNE	8,,,,"     $H.224FKKU###>B'(:;$   FN'(BC   FO'(BC=   A111OOX..#y//A2EFF+	8,,,#'HHHHGH!f'(BC!1%A#B#B#$ &8 $9 $9;<$=#'#6#A#A#D#DF F F G2	 2	sQ   >B:F9EF
EFE?FJ5JJAJ;AJJc                 ^    d j         d<   g } j                                        D ]\  }}|                    |            fd}t	          ||f j                                                   _        	  j                                         d S # t          t          j        f$ r Y d S w xY w)NTtest_page_jobs_cancelledc                     j         }| D ]Z}	 |                    |           # t          j        $ r0}|j        \  }}|t          j        k    r||fj        d<   Y d }~Sd }~ww xY wd S )Ntest_page_cancel_failure)rw   	cancelJobr   r   r  IPP_NOT_POSSIBLErS   )jobidsrz   r   r)  r*  rU   s        rd   cancel_jobsz1PrintTestPage.cancel_clicked.<locals>.cancel_jobs  s    A U UUKK''''} U U UVFQD111OPRSf/0JKUU Us   $A#&AA#r   )rS   r   r   r   r   rV   r   r   r   r   r   r   )rU   r!  r1  r   r   r2  s   `     rd   r   zPrintTestPage.cancel_clicked  s    >B :;+1144 	" 	"KE4MM5!!!!	U 	U 	U 	U 	U !+#)))-)<)G)G)J)JL L L	GKKNNNNN!4=1 	 	 	DD	s   7B B,+B,c                     | j                                         }|                    |          }|                    |d          }|                    |d|            d S )Nr   )rO   r   get_iter	get_valuer   )rU   cellr   r   r   r   s         rd   r   zPrintTestPage.test_toggled  sW    ''**~~t$$$**qf*-----re   c                 ~   d }t          j                     | j                                        }t	          || f|          | _        	 | j                                        }n0# t          t          j	        f$ r t          j
                     Y dS w xY w| j        j        }| j                                        }|d         }| j                            dg           }|d         D ]}|d         }	|	| _        |d         }
|d	         }|d
k    r_|
|v s|d         |k    rN|                    d           }|| j        |
<   |                    |dd           |                    |d|
           n|
| j        vr|
|v rF|dv rB| j                            dg           }|                    |
|d         f           || j        d<   |                     |
|           t+          j        | j                   t+          j        |d         | j                  | _        t5          d|d         z             t          j
                     dS )Nc                     | j         }	 |                    | j        g| j        dz   g          }n+# t          $ r |                    | j        g          }Y nw xY w|S )Nr	   )rw   getNotificationsr   r   r   )rU   rz   notificationss      rd   get_notificationsz9PrintTestPage.update_jobs_list.<locals>.get_notifications  s}    AC ! 2 2T[M59\A5E4F!H !H! C C C ! 2 2T[M B BC ! s   %/ %AAr   Trg   rl   r   znotify-sequence-numberznotify-job-idznotify-subscribed-eventr   rq   r   r	   )r   r   test_page_completionsznotify-textznotify-get-intervalzUpdate again in %dsF)r   threads_enterrV   r   r   r   r   r   r   r   threads_leaver   rO   r   rS   r   r   r   r   r   r   r   r   r   r   r   r   )rU   r;  r   r:  r   r   queuer   eventseqr[   nser   comps                 rd   r   zPrintTestPage.update_jobs_list  s   	! 	! 	! 	$//22 "3#'')/1 1 1	 GKKNNMM!4=1 	 	 	   44	 %-''**%+//0BBGG	"8, 	) 	)E01CDL(C12Cm##9$$.)U22 <<..D,0D$S)OOT1d333OOT1c2222D,,,y  777.224KRPPc5#78999CG'(?@OOS%(((( 	DJ'''-/0!# #
 	)!"789 	: 	: 	:us   	A# #)BBN)r   r   r   r   IPP_JOB_PENDINGr1   IPP_JOB_HELDIPP_JOB_PROCESSINGIPP_JOB_STOPPEDIPP_JOB_CANCELEDIPP_JOB_ABORTEDIPP_JOB_COMPLETEDr  r'   r   r   r   r   r   r   r   r   r   r   r   r   re   rd   r   r   *   s^       "AAiLL6%qq"AAiLL#QQz]]"AAiLL$aann7EK- K- K-ZX X Xt$I $I $IL( ( (<0 0 0dB B BC C C
E E E&A A AF  0. . .A A A A Are   r   )r   r   	dbus.glibgi.repositoryr   r  r   r   r   r  r  timedopsr   r   baseerrordialogsr   r   r&   r   r   re   rd   <module>rP     s  .             				                     6 6 6 6 6 6 6 6            
&	&
i i i i iH i i i i ire   