
    KcI                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZ ej        dd           d dl	m
Z
 d dl	mZ d dl	mZ d dl	m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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Zd dlmZ d dlT d dl Z d dl!Z!d dl"Z"d dl#m$Z$  ej%        d           	  ej        dd           d dl	m&Z& dZ'n# e($ r dZ'Y nw xY wd dl)Z) e)j*        e j+        e j,                   d dl!m-Z- e j.        Z/dZ0dZ1dZ2 e
j3        d           e're&j4        5                    de&j6        j7        e&j8        j9        e&j8        j9        e&j8        j9        e&j8        j9        e&j8        j:        e&j8        j9        e&j8        j9        e&j8        j9        d          Z; G d d          Z< G d d           Z= G d! d"          Z> G d# d$          Z? G d% d&ej                  Z@ G d' d(e          ZAdS ))    NNotifyz0.7)r   )GLib)GObject)Gdk)	GdkPixbuf)Gtk)GtkGUI)Pango)saxutils)*)reducez1.9.47Secret1)r   TF)domain	localedir)StateReasonprinter   zdocument-print-previewz"System Config Printer Notificationzorg.system.config.printer.store)userr   objectprotocolportserverauthtypeuric                   8    e Zd Z ej                    Zd Zd ZdS )
ServiceGetc                 P    t           j                            dd           | _        d S Nr   )r   Serviceget_syncserviceselfs    -/usr/share/system-config-printer/jobviewer.py__init__zServiceGet.__init__^   s$    !>221379 9DLLL    c                     | j         S N)r"   r#   s    r%   get_servicezServiceGet.get_serviceb   s
    <r'   N)__name__
__module____qualname__r   r    r"   r&   r*    r'   r%   r   r   [   sA         &.""	9 	9 	9	  	  	  	  	 r'   r   c                   .    e Zd Z e            Zd Zd ZdS )
ItemSearchc                 ~    t           j                            |t          |t           j        j        d           | _        d S r)   )r   r    search_syncNETWORK_PASSWORDSearchFlagsLOAD_SECRETSitems)r$   r"   attrss      r%   r&   zItemSearch.__init__i   s3    33G4D494:4F4S48	: :DJJJr'   c                     | j         S r)   )r6   r#   s    r%   	get_itemszItemSearch.get_itemsp   s
    :r'   N)r+   r,   r-   listr6   r&   r9   r.   r'   r%   r0   r0   f   s=        	: 	: 	:	 	 	 	 	r'   r0   c                       e Zd Zd Zd ZdS )PasswordStorec           	      b    t          j        t          |t           j        ||d | j                   d S r)   )r   password_storer3   COLLECTION_DEFAULTon_password_stored)r$   r7   namesecrets       r%   r&   zPasswordStore.__init__u   s<    !"2"'"(";"&"("&"&"9; ; ; ; ;r'   c                 .    t          j        |           d S r)   )r   password_store_finish)r$   sourceresultunuseds       r%   r@   z PasswordStore.on_password_stored~   s    (00000r'   N)r+   r,   r-   r&   r@   r.   r'   r%   r<   r<   t   s2        	; 	; 	;	1 	1 	1 	1 	1r'   r<   c                   N    e Zd 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S )PrinterURIIndexNc                 R    i | _         |g }|| _        |                                  d S r)   )r   names_collect_names)r$   rK   s     r%   r&   zPrinterURIIndex.__init__   s2    =E
r'   c                     | j         sd S |s&	 t          j                    }n# t          $ r Y d S w xY w| j         D ]}|                     ||           g | _         d S )N
connection)rK   cups
ConnectionRuntimeErroradd_printer)r$   rO   crA   s       r%   rL   zPrinterURIIndex._collect_names   s    z 	F 	O&&    J 	2 	2Ddq1111


s   ! 
//c                 X    	 |                      ||           d S # t          $ r Y d S w xY w)N)rA   rO   )_map_printerKeyError)r$   r   rO   s      r%   rS   zPrinterURIIndex.add_printer   sH    	G
CCCCC 	 	 	FF	s    
))c                    g }d|v r8|d         }t          |          t          k    r|g}|                    |           d|v r|                    |d                    d|v r|                    |d                    |D ]}|| j        |<   d S )Nprinter-uri-supportedznotify-printer-uriprinter-more-info)typer:   extendappendr   )r$   r   r7   urisuri_supportedr   s         r%   update_from_attrsz!PrinterURIIndex.update_from_attrs   s    "e++!"9:M]##t++!.KK'''5((KK34555%''KK23444 	( 	(C 'DL	( 	(r'   c                     |                                   t          | j                                                  }|D ]}| j        |         |k    r| j        |= d S r)   )rL   r:   r   keys)r$   r   r^   r   s       r%   remove_printerzPrinterURIIndex.remove_printer   se    DL%%(()) 	& 	&C|C G++L%	& 	&r'   c                     |                                   	 | j        |         S # t          $ r |                     ||          cY S w xY w)N)r   rO   )rL   r   rW   rV   )r$   r   rO   s      r%   lookupzPrinterURIIndex.lookup   se    	F<$$ 	F 	F 	F$$#*$EEEEE	Fs   # !AAc                 v    |                                   t          | j                                                  S r)   )rL   setr   valuesr#   s    r%   all_printer_namesz!PrinterURIIndex.all_printer_names   s0    DL''**+++r'   c                     |                                   | j                                        D ]\  }}||k    r|c S t          r)   )rL   r   r6   rW   )r$   rA   r   r   s       r%   lookup_cached_by_namez%PrinterURIIndex.lookup_cached_by_name   sS     L..11 	 	LC$


  r'   c                 F   	 |t          j                    }g d}||                    ||          }n|                    ||          }n*# t          $ r t          t           j        $ r t          w xY w|d         }|                     ||           |
|| j        |<   |S )N)printer-namerY   rZ   r   requested_attributesro   rm   )rP   rQ   getPrinterAttributesrR   rW   IPPErrorr`   r   )r$   r   rA   rO   rr7   s         r%   rV   zPrinterURIIndex._map_printer   s    	!!_//
NNNA"77SNO 8 Q Q #77NO 8 Q Q 	 	 	N} 	 	 	N	 ^$e,,,? $DLs   A
A 'A4r)   )NNN)r+   r,   r-   r&   rL   rS   r`   rc   re   ri   rk   rV   r.   r'   r%   rI   rI      s                 ( ( (& & &F F F F, , ,       r'   rI   c                       e Zd Zej        j        ddfej        j        deffej        j        deej        ffej        j        ddfdZd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd ZdS )CancelJobsOperationNr.   )destroyjob-deleted	ipp-errorfinishedc                 .   t           j                             |            t          |          | _        || _        || _        || _        || _        |rVt          | j                  dk    rt          d          }t          d          }ntt          d          }t          d          }nUt          | j                  dk    rt          d          }t          d          }nt          d          }t          d	          }t          j        ||d
d
          }	|	                    t          d          t          j        j        |t          j        j                   |	                    t          j        j                   |	                    d           |	                    d           t          j                            dd          }
t          j                    }|                    t          j        t          j        j                   |                    dd           |
                    |ddd           t          j        |          }|                    d
           |                    dd           |
                    |ddd           |	j                            |
ddd           |	                    d| j                    |	                    d| j!                   |	"                                 |	| _#        d | _$        tK          d| z             d S )N   zDelete Jobsz(Do you really want to delete these jobs?z
Delete Jobz&Do you really want to delete this job?zCancel Jobsz(Do you really want to cancel these jobs?z
Cancel Jobz&Do you really want to cancel this job?T)titletransient_formodaldestroy_with_parentzKeep Printing   F           r   labelresponsedelete-eventz+%s)&r   r&   r:   jobids	purge_jobhostr   
encryptionlen_r   Dialogadd_buttonsResponseTypeNOYESset_default_responseset_border_widthset_resizableHBoxnewImageset_from_stockSTOCK_DIALOG_QUESTIONIconSizeDIALOGset_alignment
pack_startLabelset_line_wrapvboxconnecton_job_cancel_prompt_responseon_job_cancel_prompt_deleteshow_alldialogrO   
debugprint)r$   parentr   r   r   r   r   dialog_titledialog_labelr   hboximager   s                r%   r&   zCancelJobsOperation.__init__   s     $'''Fmm"		$ 	K4;!## // !KLL  !IJJ4;!## // !KLL  !IJJ<v#'TC C CAo..0@0C(#*:*>	@ 	@ 	@##S%5%8999###e$$$x||UB''	c79LMMMS#&&&ua000	---T"""S#&&&ua000eUA666
D$FGGG(HIIIEDL!!!!!r'   c                 *    t          d| z             d S )Nz-%s)r   r#   s    r%   __del__zCancelJobsOperation.__del__  s    EDL!!!!!r'   c                     | j         r | j                                          d | _         | j        r | j                                         d | _        t          d| z             d S )NzDESTROY: %s)rO   rv   r   r   r#   s    r%   
do_destroyzCancelJobsOperation.do_destroy  se    ? 	#O##&&&"DO; 	K"""DKMD()))))r'   c                 0    |                      d           d S )Nrv   )emitr#   s    r%   rv   zCancelJobsOperation.destroy)  s    		9r'   c                 P    |                      |t          j        j                   d S r)   )r   r   r   r   r$   r   events      r%   r   z/CancelJobsOperation.on_job_cancel_prompt_delete,  s$    **FC4D4GHHHHHr'   c                 V   |                                  d | _        |t          j        j        k    r|                     d           d S t          | j                  dk    r|                     d           d S t          j	        | j
        | j        | j        | j        | j                   d S )Nry   r   )r   r   r   reply_handlererror_handler)rv   r   r   r   r   r   r   r   	asyncconnrQ   r   r   r   
_connected_connect_failed)r$   r   r   s      r%   r   z1CancelJobsOperation.on_job_cancel_prompt_response/  s    s'+++IIz"""Ft{q  IIz"""F49#'9)-,0O,0,@		B 	B 	B 	B 	B 	Br'   c                 J    t          d|dt          |                     d S )Nz$CancelJobsOperation._connect_failed :)r   repr)r$   rO   excs      r%   r   z#CancelJobsOperation._connect_failedA  s*    
:::tUXzzzZ[[[[[r'   c                    || _         | j        rt          d          }nt          d          }| j                             |           | j                             | j        d         | j        | j        | j                   d S )Nzdeleting jobzcanceling jobr   r   r   )rO   r   r   _begin_operation	cancelJobr   cancelJob_finishcancelJob_error)r$   rO   rF   	operations       r%   r   zCancelJobsOperation._connectedD  s    $> 	+.))II/**I(()444!!4;q>4>151F151E 	" 	G 	G 	G 	G 	Gr'   c                 ,   t          d|dt          |                     t          |          t          j        k    rd|j        \  }}|t          j        k    r2|t          j        k    r"|                     d| j	        d         |           | 
                    |d            d S | j                                         | j                                         d | _        |                     d| j	        d         |           |                     d           d S )NzcancelJob_error r   rx   r   ry   )r   r   r[   rP   rr   argsIPP_NOT_POSSIBLEIPP_NOT_FOUNDr   r   r   rO   _end_operationrv   )r$   rO   r   ems        r%   r   z#CancelJobsOperation.cancelJob_errorQ  s    
zzz4:::FGGG::&&XFQT***T'''		;A<<<!!*d33333O**---O##&&&"DOII{DKNC888IIz"""Fr'   c                    t          d|dt          |                     |                     d| j        d                    | j        d= | j        sP| j                                         | j                                         d | _        |                     d           d S |                    | j        d         | j        | j	        | j
                   d S )NzcancelJob_finish r   rw   r   ry   r   )r   r   r   r   rO   r   rv   r   r   r   r   )r$   rO   rF   s      r%   r   z$CancelJobsOperation.cancelJob_finishb  s    



D&MMMJKKK		=$+a.111KN{ 	FO**---O##&&&"DOIIz"""F   $+a.$.040E040D ! F F F F Fr'   )r+   r,   r-   r   SignalFlagsRUN_LASTintTYPE_PYOBJECT__gsignals__r&   r   r   rv   r   r   r   r   r   r   r.   r'   r%   ru   ru      s       +4dB?+4dSFC+4dg346+4dB?
 
L," ," ,"\" " "	* 	* 	*  I I IB B B$\ \ \G G G  "F F F F Fr'   ru   c                   $   e Zd Z eg d          Zdej        j        ddfiZ	 	 	 	 dPdZ	d Z
d	 Zd
 ZdQdZd ZdRdZd Zd Zd Zd ZdQdZd ZdQdZd ZdQdZd Zd Zd Zd Zd ZdQd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) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3dQd2Z4d3 Z5dQd4Z6dQd5Z7dQd6Z8dQd7Z9d8 Z:d9 Z;dQd:Z<d; Z=dQd<Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdS )S	JobViewer)job-k-octetsjob-namejob-originating-user-namejob-printer-uri	job-statetime-at-creationauth-info-requiredjob-preservedry   Nr.   FTc                 !   t           j                             |            || _        || _        || _        || _        || _        t          j                    }d|v | _	        d|v | _
        i | _        i | _        g | _        i | _        t                      | _        t                      | _        i | _        d| _        i | _        i | _        i | _        d | _        i | _        i | _        t                      | _        g | _        |                     g ddgdt:          j                   t?          j         d	          }	|	!                    d
t>          j"        tG          d          d tG          d          | j$        fdt>          j%        tG          d          d tG          d          | j&        fdt>          j'        tG          d          d tG          d          | j(        fdt>          j)        tG          d          d tG          d          | j*        fdt>          j+        tG          d          d tG          d          | j,        fdt>          j-        tG          d          d tG          d          | j.        fdd tG          d          d d d fdd tG          d          d d | j/        fd d tG          d!          d d | j0        fd"t>          j1        d d#tG          d$          | j2        fg
           t?          j3                    | _4        | j4        5                    |	d%           | j4        6                    d&           | j4        7                                 | j8        9                    | j4        :                                           t?          j;                    | _<        d'D ]}
|
st?          j=                    }ns|	>                    |
          }|?                    d(           |@                                }|
dk    r/|| _A        t?          j;                    }|B                    |           |C                                 | j<        D                    |           d)D ]}
|	>                    |
          }|?                    |
d"k               |E                    |
d"k               |F                                }|C                                 | jG        H                    |d%           d(d(tG          d*          | jI        fd+d(tG          d,          | jJ        fd(d+tG          d-          | jK        fd(d+tG          d.          | jL        fd(d(tG          d/          | jM        ffD ]\  }}}}|r|rt?          jN                    }|r;|O                    d0t          jQ        jR                   |O                    d1d2           t?          jS        ||          }|T                    ||d            |U                    d+           | jV        W                    |           t?          jN                    }t?          jS        tG          d3          |d45          }|U                    d+           | jV        W                    |           t?          jS        tG          d6                    }t?          jX                    }|Y                    |d(           t?          jN                    }|O                    d0t          jQ        jR                   |O                    d1d2           |Y                    |d+           |T                    || jZ        d            |T                    || j[        d            | jV        W                    |           t?          j\        t          t                    | __        | j_        `                    dt>          ja        jb                   | jV        c                    | j_                   | jV        d                    d+           | jV        e                                | _f        | jf        g                    t>          jh        ji                   | jf        j                    d7| jk                   | jV        j                    d8| jl                   | jV        j                    d9| jm                   | j8        n                    t                     | j8        p                                 |rt          d: |          }|r%|rtG          d;          |z  }n'tG          d<          }n|rd=|z  }ntG          d>          }| j8        r                    tG          d?          |z             |r| j8        s                    |           d@ }t>          jt        u                                } ||t                    | _v         ||dA          | _w        | jv        x                                | _y        | jy        z                    d           | jv        {                    | jy        dd| jy        |                                | jy        }                                dddBdBt          j        j        dC           | j        r| j
        st?          j                    | _        | j                            | jy                   | j        j                    dD| j                   | j        j                    d9| j                   | j                            d(           |t          j                    }|                                  |                     d+           t          j                    | _        t          j                    | _        t          j                    | _        t%          j        |||| j        | j        | j        E          | _        | j        j                    dF| j                   | j        j                    dG| j                   | j        j                    dH| j                   | j        j                    dI| j                   | j        j                    dJ| j                   | j        j                    dK| j                   | j        j                    dL| j                   | j        j                    dM| j                   | j        j                    dN| j                   | j        j                    dO| j                   | j        j                    dP| j                   | j                                         d | _        |st%          j        |d+| j        | j        | j        Q          | _        | j        j                    dG| j                   | j        j                    dH| j                   | j                                         | j        s| j8        C                                 t?          j                    | _        | j        r                    tG          dR                     | j                            t>          j        j                   | j                            dSdS           | j        s                    | j8                   | j        j                    dT| j                   | j        9                    | j4        :                                           t?          j         dU	          }|!                    d"t>          j1        d d#tG          d$          | j        fg           t?          j3                    | _        | j        5                    |d%           | j        6                    dV           | j        7                                 | j        9                    | j        :                                           t?          j                    }| j                            |           t?          j                    }| j        >                    dW          }|F                                }|E                    d+           |H                    |d           |Y                    |d(d(d           t?          j                    | _        |Y                    | j        d+d+d           d S )XNactionspersistencer   )
JobsWindowtreeview	statusbartoolbarstatusicon_popupmenu)r   r   )r   JobActionGroup)rA   
cancel-job_CancelzCancel selected jobs
delete-job_DeletezDelete selected jobshold-job_HoldzHold selected jobsrelease-job_ReleasezRelease selected jobsreprint-jobRe_printzReprint selected jobsretrieve-job	Re_trievezRetrieve selected jobsmove-jobz_Move Toauthenticate-job_Authenticatejob-attributesz_View Attributesclosez<ctrl>wzClose this windoway  
<ui>
 <accelerator action="cancel-job"/>
 <accelerator action="delete-job"/>
 <accelerator action="hold-job"/>
 <accelerator action="release-job"/>
 <accelerator action="reprint-job"/>
 <accelerator action="retrieve-job"/>
 <accelerator action="move-job"/>
 <accelerator action="authenticate-job"/>
 <accelerator action="job-attributes"/>
 <accelerator action="close"/>
</ui>
)
r   r   r   r   r   r   r   Nr   r   F)r   r   r   r   r   r   r   JobTUserDocumentPrinterSize	ellipsizezwidth-chars   zTime submittedr{   textStatuschangedbutton_release_eventz
popup-menuc                     | dz   |z   S )Nz, r.   )xys     r%   <lambda>z$JobViewer.__init__.<locals>.<lambda>/  s    QX\ r'   zmy jobs on %szmy jobsz%szall jobszDocument Print Status (%s)c                 2   	 |                      |t          d          }nx# t          j        $ rf t	          d|z             t
          j                            t
          j        j	        ddt          t                    }|
                    d           Y nw xY w|S )Nr   No %s icon availableT   )	load_icon	ICON_SIZEr   GErrorr   r   Pixbufr   
ColorspaceRGBfill)themeiconpixbufs      r%   r  z%JobViewer.__init__.<locals>.load_icon@  s     $	1==>      2T9:::")--y/C/G)-q)YH HQ  Ms    A2BBzprinter-printing      ?   activate)busmy_jobsspecific_destsr   r   r   refreshz	job-addedz	job-eventzjob-removedzstate-reason-addedzstate-reason-removedzstill-connectingznow-connectedzprinter-addedzprinter-eventzprinter-removed)r  r  r   r   r   zJob attributesiX  delete_eventAttrsActionGroupz+
<ui>
 <accelerator action="close"/>
</ui>
z/close)r   r&   loopappletsuppress_icon_hider  r  r   get_server_capsnotify_has_actionsnotify_has_persistencejobsjobitersr   
jobs_attrsrg   active_jobsstopped_job_promptsprinter_state_reasonsnum_jobs_when_hiddenconnecting_to_devicestate_reason_notificationsauth_info_dialogsjob_creation_times_timernew_printer_notificationscompleted_job_notificationsauthenticated_jobsops
getWidgetsconfigPACKAGEr   ActionGroupadd_actionsSTOCK_CANCELr   on_job_cancel_activateSTOCK_DELETEon_job_delete_activateSTOCK_MEDIA_PAUSEon_job_hold_activateSTOCK_MEDIA_PLAYon_job_release_activate
STOCK_REDOon_job_reprint_activateSTOCK_SAVE_ASon_job_retrieve_activateon_job_authenticate_activateon_job_attributes_activateSTOCK_CLOSEon_delete_event	UIManagerjob_ui_managerinsert_action_groupadd_ui_from_stringensure_updater   add_accel_groupget_accel_groupMenujob_context_menuSeparatorMenuItem
get_actionset_sensitivecreate_menu_itemmove_job_menuitemset_submenushowr]   set_is_importantcreate_tool_itemr   insert_set_job_job_number_text_set_job_user_text_set_job_document_text_set_job_printer_text_set_job_size_textCellRendererTextset_propertyr
   EllipsizeModeENDTreeViewColumnset_cell_data_funcr   r   append_columnCellRendererPixbufr   _set_job_status_icon_set_job_status_text	TreeStorer   strstoreset_sort_column_idSortType
DESCENDING	set_modelset_rules_hintget_selection	selectionset_modeSelectionModeMULTIPLEr   on_selection_changed on_treeview_button_release_eventon_treeview_popup_menuset_icon_nameICONhider   	set_titleset_transient_for	IconThemeget_default	icon_jobsicon_jobs_processingcopyicon_no_jobsr  	composite	get_width
get_heightr   
InterpTypeBILINEAR
StatusIcon
statusiconset_from_pixbuftoggle_window_displayon_icon_popupmenuset_visibledbus	SystemBusconnect_signalsset_process_pendingrP   	getServerr   getPortr   getEncryptionr   monitorMonitor
on_refresh	job_added	job_eventjob_removedstate_reason_addedstate_reason_removedstill_connectingnow_connectedprinter_addedprinter_eventprinter_removedr  
my_monitorWindowJobsAttributesWindowset_positionWindowPositionMOUSEset_default_sizejob_attributes_on_delete_eventattrs_ui_managerVBoxaddToolbarNotebooknotebook)r$   r  r  r  r   r  r  r   notify_capsjob_action_groupaction_nameitemactionprintersskipr   rA   settercellcolumnr  r   	the_destsr|   r  r  attrs_action_groupr   r   s                                r%   r&   zJobViewer.__init__  s!    	  $'''	"4,,//"+{":&3{&B#	55#&55 %'"$%!$&!*,'!#(,%)+&+-("%%%* * *
  668 8 !' 	 	0 	0 	0 ?1ABBB$$s/9t)**D,GIs/9t)**D,GIS2AgJJ'(($*CE 4a
mmT*++T-IK*t*++T-IK!2AkNND+,,d.KMT1Z==$dC#T1_+=+=tT24!4+=)>)>d02#/4&'')=?%' 	 	 	* "m..//1A2FFF..	 	 	  	)),,,'')<)L)L)O)OPPP #	. 	0 	0K  
0,//)44kBB$$e,,,..11*,,-1D*"x{{H$$h///IILLL!(($////% 	+ 	+K &00+>>F  +"8999##[G%;<<<**--DIILLLLr**** %$*GHqyy$*ABq}}d.IJq||T-GH&		4+BC	E	0 	0)D)T6  $ '))D 6!!;0C0GHHH!!="555'd33F%%tVT:::  &&&M''////#&&#Q'7%8%8$QGGGd#####V,,,#Qx[[11%((4'''#&&;(;(?@@@="---4&&&!!4)BDIII!!4)BDIII##V,,,]3,,

%%q#,*ABBB
+++$$d+++4466 1 :;;;y$*CDDD5#D	F 	F 	F|T-HIII%%t,,, 	K 9 9>JJI 		& %/**Y6) &y(*!!1%A#B#BU#JKKK 	7O--v666		 		 		 )),,"E400$-Iu6H$I$I! N//22"""  $"3"#Q"&"3"="="?"?"&"3">">"@"@"#Q"%s"+"6"?"%	' 	' 	' ; 	0t: 	0!n//DOO++T->???O##Z1KLLLO##\43IJJJO''/// ;.##C  $'''N%%	LOO	,//C7E-1YTY37?D D D 	i999k4>:::k4>:::mT-=>>>2D4KLLL4d6OPPP0$2GHHHot/ABBBot/ABBBot/ABBB/1EFFF 	'%o#t379499=J J JDO O##[$.AAAO##[$.AAAO##&&&{ 	$O  ###$'JLL!!++Q/?-@-@AAA!..s/A/GHHH!223<<<!33T_EEE!)).*.*M	O 	O 	O!1143F3V3V3Y3YZZZ _3EFFF&&#/4&'')LN) 	 	 	 !$ 0 0113ErJJJ00	 	 	 	++...!1143H3X3X3[3[\\\x{{!%%t,,,+..&118<<&&))t$$$a   %222dA66666r'   c                    | j                                          | j        r| j                                         | j                                         | j                                        | j                                        fD ]N}|D ]I}t          |dd           dk    r2	 |	                                 n# t          j        $ r Y nw xY wd|_        JO| j         t          j        | j                   d | _        | j        D ]}|                                 | j        r!| j        s| j                            d           |                     d           d S )NclosedTFry   )r  cleanupr  r   r|  r/  rh   r,  getattrr   r   r  r  r.  source_remover2  rv   r  r#  r  r  r   )r$   lnotificationops       r%   r  zJobViewer.cleanup  s|   ? 	'O##&&& 077::188;;= 
	/ 
	/A ! / /L(D99TAA$**----;     +/L'/ (4 =>>>,0D)( 	 	BJJMMMM; 	0t: 	0O''///		:s   !B66CCc                     || _         d S r)   )process_pending_events)r$   whethers     r%   r  zJobViewer.set_process_pending  s    &-###r'   c                     | j         s| j        sA| j                                         d| j        _        | j         s|                                  n| j                                         dS )NFT)r  r  r   r|  visibler  quit)r$   r   s     r%   rG  zJobViewer.on_delete_event  sb    ; 	di 	O  ###&+DO#;  INNtr'   c                     t          | j                                                  D ]}| j                            d           i | _        | j                                         dS )Nr   T)ranger  get_n_pagesremove_pager&  r  r|  )r$   widgetr   pages       r%   r  z(JobViewer.job_attributes_on_delete_event  sa    $-335566 	* 	*DM%%b))))!&&(((tr'   c                 8    t          j        ||| j                  S r)   )errordialogsshow_IPP_Errorr   )r$   	exceptionmessages      r%   r  zJobViewer.show_IPP_Error  s    *IwPPPr'   c                    t          | j        dd           }|rd}| j        r8|r| j                                         n3| j                                         n|r| j                                        }| j                                        }| j                                        \  }}}}	|rF|	                    d           ||	                    d           | j        
                                 n~| j                            d           nc| j                                         | j        	                    d           | j                                        }||	                    d           | | j        _        d S )Nr  FT)r  r   r#  r|  rW  
get_windowr  r  get_geometryset_skip_taskbar_hinticonifyr  presentr  )
r$   r  
force_showr  wawlocsareaos
             r%   r  zJobViewer.toggle_window_display  s|   4?It<< 	G& 	5 ($$''''$$'''' 5O..00.99;;$(O$@$@$C$C!aq 8++T222~00$777O++....O//7777''***55u===.99;;>,,e444&-+r'   c                     |                                 rd}nd}| j                            |d           | j        r| j                            |d           d S d S )Nallznot-completedF)
which_jobsrefresh_all)
get_activer  r  r  )r$   toggletoolbuttonr  s      r%   on_show_completed_jobs_clickedz(JobViewer.on_show_completed_jobs_clicked   su    &&(( 	)JJ(J
FFF? 	NO##zu#MMMMM	N 	Nr'   c                      t          j                     }d} j                                        D ]\  }}t          d          }d|v r=|d         }||z
  }d}|dk     rt          d          }n|dk     r%t	          |dz            }t          d	          |z  }n|d
k     r;t	          |dz            }	|	dk    rt          d          }nt          d          |	z  }n|dk     r;t	          |d
z            }
|
dk    rt          d          }n}t          d          |
z  }nj|dk     r;t	          |dz            }|dk    rt          d          }n<t          d          |z  }n)d}t          j        dt          j        |                    }| j        v r) j        |         } j        	                    |d|           |r( j
        s! fd}t          j        d|          }| _
        |s' j
        r t          j         j
                   d  _
        |S )NFUnknownr   Tx   za minute agoi  <   z%d minutes agoiQ r{   zan hour agoz%d hours agoi:	 	yesterdayz%d days agoi _7 z	last weekz%d weeks agoz%B %Yc                  |    t          j                                                     } t          j                     | S r)   r   threads_enterupdate_job_creation_timesthreads_leave)retr$   s    r%   update_times_with_lockingzFJobViewer.update_job_creation_times.<locals>.update_times_with_locking2  s7    !$$$4477!$$$
r'   )timer$  r6   r   r   strftime	localtimer%  rl  	set_valuer.  r   timeout_add_secondsr  )r$   nowneed_updatejobdatatcreatedagominshoursdaysweeksiterr  s   `             r%   r  z#JobViewer.update_job_creation_times	  sR   ill** #	2 #	2IC)A!T))12Gm"<<.))AA7]]b>>D*++d2AA<''11Ezzm,,n--5+++| 455DqyykNNm,,t3///(8!9::EzzkNNn--5"'Kw0H0HIIAdm##}S)
$$dAq111 	.t< 	.     (".GHHA,-D) 	5, 5"D$ABBB04- r'   c                    |                                  |                                 | j                            |           |t          j        j        k    r0d| j        vr)dd l}|	                    | j
                  }|| _        d S d S d S )Ntroubleshooterr   )r|  rv   r(  remover   r   r   __dict__troubleshootrunon_troubleshoot_quitr	  )r$   r   r   jobidr  r	  s         r%   print_error_dialog_responsez%JobViewer.print_error_dialog_responseC  s     ''///s'***t}44####!-!1!143L!M!M&4### +*44r'   c                 
    | ` d S r)   )r	  )r$   r	  s     r%   r  zJobViewer.on_troubleshoot_quitN  s    r'   c                 f                          |||           | j        vrd S  j        } j                            d           }|                    |d|           t          d|z             | j        |<    j                                        }|z|\  }} j        	                                dt          j        j        fk    rG|t          j        d          k    r/ j                            t          j                    d ddd            j        s fd}	t!          j        d|	           d S d S )	NrN   r   zJob %d addedr{   Fr   c                  |    t          j                                                       t          j                     dS NFr  r#   s   r%   !start_updating_job_creation_timesz<JobViewer.add_job.<locals>.start_updating_job_creation_timesk  s8    !$$$..111!$$$ur'   i  )
update_jobr$  rl  r]   r  r   r%  r   get_visible_rangeget_sort_column_idr   rn  ro  TreePathscroll_to_cellr.  r   timeout_add)
r$   r  r  rO   rl  r  r  startendr  s
   `         r%   add_jobzJobViewer.add_jobQ  s^   dz::: diF
z  $''q#&&&NS()))!c//22 LUC
--00Q58\5L5N N Na(( ,,clnnd.3S#? ? ? , 	F     c#DEEEEE	F 	Fr'   c                 |    | j                                          | j        r| j                                         d S d S r)   )r  updater  r#   s    r%   update_monitorzJobViewer.update_monitors  sD    ? 	&O""%%%%%	& 	&r'   c           	         | j         t          |                                          z
  }|| j        v r|                     |           |rd }	 |&t          j        | j        | j        | j	                  }t          d|z             t          |          }|                    ||          }n,# t          $ r Y n t          $ r Y nt
          j        $ r Y d S w xY w|r|                    |           || j        |<   d}	 |                    dt
          j                  }t)          |          }|t
          j        t
          j        fv rg d}	ddg}
|                    d	          }t/          j        | j        | j        | j        | j	                  }|                    ||

          }	 |d         }n## t4          $ r t          d           ddg}Y nw xY wt7          |t                    s|g}||d<   |                    |           |                    ||	          }|                    |           |                    dt
          j                  }t)          |          }n+# t8          $ r Y nt          $ r Y nt
          j        $ r Y nw xY w	 |d= n# t4          $ r Y nw xY w| j                                         |t
          j        k    o|                    dd          dk    }|rX|                     ||                    d          |                    d	          |                    dg           | j                    d| _!        | "                                 d S )Nr   r   r   zrequesting %srp   Fr   )r   job-hold-untilr   r   
device-urir   rn   1No auth-info-required attribute; guessing insteadusernamepassword_status_textr$  none)#required_job_attributesrg   rb   r&  update_job_attributes_viewerrP   rQ   r   r   r   r   r:   getJobAttributesrR   AttributeErrorrr   r   r$  getIPP_JOB_PROCESSINGr   IPP_JOB_HELDIPP_JOB_STOPPEDauthconnr   rq   rW   
isinstance
ValueErrorr   
queue_drawget_authenticationr  submenu_setupdate_sensitivity)r$   r  r  rO   rs   r7   job_requires_authjstater  jattrspattrsr   rT   auth_info_requireds                 r%   r  zJobViewer.update_jobx  s'   (3		+=+== $/!!--c222 	$E%!%ty7;y=A_"N "N "NJ Oa/000!HH"33SJK 4 M M   !   =     $U###	#!+	XX{D,CDDFVAT&(<===KKK.= hh 122'.2i.2i48OE E E ..cEK / M MB)./C)D&& B B B !3 4 4 4*4j)A&&&B
 "#5t<< E*<)=&2DE./U###**CAG + I IU###;0GHHLL 	 	 	D 	 	 	D} 	 	 	D		^$$ 	 	 	D	  ### $"33 2!XX'7@@12 	  	2 ##S$((L*A*A%)XX/@%A%A%)XX/CR%H%H%)[2 2 2
 !"""""su   A B. .
C:	CCC>B*I# )F2 1I# 2GI# GBI# #
J/	J:J
JJ 
J J c                    || j         vrj	 t          j        d           n#  t          d           Y d S xY wt          }t                      }d }|rd|v rt          j                            |          \  }	}
|	dk    rBt          j
        |          }|                                \  }}}}}t          |          |d<   nIt          j                            |
          \  }}
|d }n"t          j                            |          \  }}|	|d}nD|                    t          |                                          t          |	          d           || j        v rd}d	t          |          i}|rOd|v rJ||fD ]5}t                      }|                                D ]\  }}||i}|                    |           t'                      }|                                }t+          ||          }|                                }|rd
 |D             }|                    d          }|d                                                             d          ||<   |                    d          }|d                                                                                                         ||<    n7t          d           |r@	 t9          j        | j        | j        | j         | j!                  }n# tD          $ r d}Y nw xY w|r|	 |#                    tI          d                     |%                    ||           |&                                 | '                                 t          d|z             | j        (                    |           d S # t          j)        $ r& |&                                 tU                       Y d S  |&                                 tU                       Y nxY w|r|rtW          j,        t[          j.                              d         }|/                                }|                    |           t          |          |d<   | 0                    ||           d S d S d S d S )Nz1.9.37z;Authentication required but authenticateJob() not availabler(  smb)r   r   F)r   r   r   c                     g | ]}d S  r.   .0r  s     r%   
<listcomp>z0JobViewer.get_authentication.<locals>.<listcomp>  s    $D$D$DAR$D$D$Dr'   r'  r   r   z!Failed to find secret in keyring.r#  authenticating jobz"Automatically authenticated job %d)1r-  rP   requirer   
USE_SECRETdicturllibparse	splittypesmburiSMBURIseparaterk  	splithost
splitnportr   lowerr1  r6   r   r*   r0   r9   indexget_attributesr/  
get_secretdecoder3  rQ   r   r   r   r   rR   r   r   authenticateJobr   r!  r  rr   nonfatalExceptionpwdgetpwuidosgetuidr  display_auth_info_dialog) r$   r  
device_uriprinter_urir>  show_dialog
try_secretinformational_attrs	auth_infoschemerestr   groupr   sharer   r(  
serverportr   identifying_attrskeyring_attrsr7   keyvalkey_val_dictservice_objr"   
search_objr6   indrT   r'  s                                    r%   r7  zJobViewer.get_authentication  s    d,,,h'''' > ? ? ? $J"&&&I Lj,>>>!'!7!7!D!DU?? -Z888C'*||%UFE847KK'11)/)?)?)F)F&Z!)!%)/)@)@*)M)M>V^!&JJ'..C<Q<Q=@&\\1K 1K L L L d---"
 #(k):): < Ej,>>>&79L%M E EM FFE$1$7$7$:$: 4 4S(+c{l3333",,,K)5577G!+GU!;!;J&0022E $D$D1C$D$D$D	066
CC).q)@)@)B)B)F)Fv)N)N	#066
CC).q)<)<)>)>)B)B)D)D)K)K)M)M	#  CDDD '' +T_26)26)8<I I IAA $ ' ' '!&JJJ'  )i3)&&*>(?(?@@@%%sI666$$'''''*** Ds JKKK+//555F}   $$'''%(((FF)$$'''%(((((! Ck C<66q9 3 8 8 : :$$%6777(+Xf%--sMBBBBBE -,zC C C Cs-   ! 5,K2 2L L	BN 1O0#O0c           	         | j         |         }	 |d         }n## t          $ r t          d           ddg}Y nw xY wt          j        |t
                    }||_        ||_        |                    t          j
        j                   d |D             }t          j        t          j                              d         }d|v rF	 |                    d          }|||<   |                    |           n#  t%                       Y nxY wd}	|D ]*}
||	         dk    r|                    |
            n|	d	z  }	+|                    t+          d
          |                    dt+          d                    |fz             || j        |<   |                    d| j                   |                    d| j                   ||_        |                                 |                    d           |                                 d S )Nr   r&  r'  r(  )r>  allow_rememberc                     g | ]}d S rB  r.   rD  s     r%   rF  z6JobViewer.display_auth_info_dialog.<locals>.<listcomp>T  s    444AR444r'   r   rC  r{   z;Authentication required for printing document `%s' (job %d)r   r  r   r   T)r$  rW   r   r3  
AuthDialogrI  rk  r>  r  r   r  CENTERrZ  r[  r\  r]  rT  set_auth_inforY  field_grab_focus
set_promptr   r/  r-  r   auth_info_dialog_responseauth_info_dialog_deletejob_idr   set_keep_aboveshow_now)r$   r  rk  r  r>  r   rd  r'  rq  rT  fields              r%   r^  z"JobViewer.display_auth_info_dialogE  sV   y~	:!%&:!; 	: 	: 	: + , , ,",j!9	: $9K5?A A A,$6!S/6777 54!3444	<..q1+++%(..
;;!)	#$$i0000%!$$$$$ ' 	 	E2%%''///QJEE1 ? @ @ HHZ9>>!! 	" 	" 	" '-s#
D$BCCC(DEEEt$$$s    88/C4 4Dc                 P    |                      |t          j        j                   d S r)   )rz  r   r   CANCELr   s      r%   r{  z!JobViewer.auth_info_dialog_deleter  s$    &&0@0GHHHHHr'   c                    |j         }| j        |= |t          j        j        k    r|                                 d S |                                }	 t          j        | j	        | j
        | j        | j                  }n # t          $ r t          d           Y d S w xY wd}|                    t!          d                     	 |                    ||           |                                }| j                            |           |                                  n<# t,          j        $ r*}|j        \  }}|                     ||           Y d }~nd }~ww xY w|                                 |r<	 t7          |dd           }	t7          |dd           }
|	 |
	 |
                    d          }||         |	d<   n# t:          $ r Y nw xY w|	                    d          d	|	                    d
          d|	                    d          d}|
                    d          }||         }t?                      }|	                                 D ]\  }}||i}|!                    |           tE          |||          }t          dtF          |fz             n#  tI                       Y nxY w|                                 d S )Nr#  z+Error connecting to CUPS for authenticationFrG  rk  r>  r'  r   @r   z (r   )r(  zkeyring: created id %d for %s)%r|  r-  r   r   OKrv   get_auth_infor3  rQ   r   r   r   r   rR   r   r   r   rX  get_remember_passwordr1  r  r!  rP   rr   r   r  r   r  rT  
IndexErrorr/  rJ  r6   r   r<   idrY  )r$   r   r   r  rd  rT   rememberr   r   rk  r>  rq  rA   rB   r7   rl  rm  rn  password_objs                      r%   rz  z#JobViewer.auth_info_dialog_responseu  s>   "5)s'***NNF((++		#T_*.)*.)04A A AAA  	 	 	EFFFFF	 	A233444	'ui0003366H#''///""""} 	' 	' 	'VFQA&&&&&&&&	' 	
 	%% ')8)-!/ !/ &-f.B.2&4 &4" !,1C1O066
CC09#f--%    ,9+<+<f+E+E+E+E+8+<+<h+G+G+G+G+8+<+<j+I+I+I+IKD -22J??C&s^F FFE$1$7$7$:$: 4 4S(+c{l3333#01517$9 $9L  ?2t* LMMM%!$$$$$s\   ,A= =BBAD E* EE/'J  F8 7J 8
GJ GCJ J'c                    | j         sd S | j        r	d| _        d S t          | j                                                  }|t          | j                                                  z  }| j                                        D ]\  }}t          |dd           dk    r|dz  } t          | j	                  }t          d|z             t          d|z             t          d| j        z             | j        rd S | j                            d           | j                            |dk    p
|| j        k               | j        rBt#          j                    r3t#          j                     | j        rt#          j                    -d S d S d S d S )	NFr  Tr{   zopen notifications: %dznum_jobs: %dznum_jobs_when_hidden: %dr   )r  r   r   r/  rb   r0  r,  r6   r  r'  r   r*  r#  r  set_has_tooltipr  r  r   events_pendingmain_iteration)r$   open_notificationsreasonr  num_jobss        r%   set_statusicon_visibilityz#JobViewer.set_statusicon_visibility  s   { 	F" 	 ',D#F $"@"E"E"H"HIIc4#C#H#H#K#KLLL$($C$I$I$K$K 	( 	( FLh55=="a'"()),/AABBBNX-....1JJKKK& 	F
 	''///##%7!%; &J%-0I%I	K 	K 	K ) 	"c.@.C.C 	"!!! ) 	"c.@.C.C 	" 	" 	" 	" 	" 	" 	" 	" 	"r'   c                 z    t          j        t           j        j                  }|                     ||d           d S r   )r   Event	EventTypeNOTHINGshow_treeview_popup_menur$   r   r   s      r%   ry  z JobViewer.on_treeview_popup_menu  s4    	3=011%%x:::::r'   c                 X    |j         dk    r|                     |||j                    d S d S )N   )buttonr  r  s      r%   rx  z*JobViewer.on_treeview_button_release_event  s7    <1))8UELIIIII r'   c           	      6
   || j                                         }|                                \  }}| j                            d          }| j                            d          }| j                            d          }| j                            d          }| j                            d          }| j                            d          }	| j                            d          }
| j                            d          }| j                            d	          }t          |          d
k    r%||||||	||
|f	D ]}|                    d           d S d}d}d}d}d}d}| j                                        }t                      }g | _
        |D ]N}| j                            |          }| j                            |d
          }| j
                            |           | j        |         }d|v rV|d         }|t           j        k    rd}|t           j        k    rd}|t           j        k    rd}|                    dd          sd}|                    dt           j                  t           j        k    s|                    dd          dk    rd}|                    dd           }|r3	 | j                            |          }n# t,          $ r |}Y nw xY w|||<   Pt          |                                          dk    rL	 |                    t3          |                                          d
                    n# t,          $ r Y nw xY wt          |          d
k    rt5          j                    }t3          |          }|                                 |D ]}	 | j                            |          }n# t,          $ r d }Y nw xY wt5          j        |          }|                    |d u           |                                 |                      || j!        |           |                    |           | j"        #                    |           d}|                    |           |                    |            |                    |           |                    |           |                    |           |	                    |           |                    |           |
                    |           |                    d           d S )Nz/cancel-jobz/delete-jobz	/hold-jobz/release-jobz/reprint-jobz/retrieve-jobz/authenticate-jobz/job-attributesz	/move-jobr   FTr   r   r$  r*  r   r   r{   r   )$r   rr  get_selected_rowsrI  rR  r   rS  printer_uri_indexri   rJ  r   rl  get_iter	get_valuer]   r$  rP   IPP_JOB_CANCELEDIPP_JOB_PENDINGr1  r/  re   rW   rb   r
  r:   r   rO  sortrk   MenuItemrW  _submenu_connect_hackon_job_move_activaterU  rV  )r$   rs  modelpathlistcanceldeleteholdreleasereprintretrieveauthenticate
attributesmover  cancel_sensitivehold_sensitiverelease_sensitivereprint_sensitiveauthenticate_sensitivemove_sensitiveother_printersjob_printerspathr  r  r  r  r   r   printers_menumenuitems                                  r%   r9  zJobViewer.update_sensitivity  sf   3366I%7799$//??$//??"--{;;%00.AA%00.AA&11?CC*557JKK(335FGG
"--{;;>>Q!64'8z; - -$$e,,,,F  !%/AADDvv 	, 	,D:&&--DJ(($22EKu%%%)E"Cc!!$---',$,,,%*N)))(-%77 .(-%.0 0373DE E)6226JJJ).&'',d33C ,""4;;SAAGG " " "!GGG"(+W%!!$$%%**%%tL,=,=,@,@'A'A!'DEEEE    !##HKKM!>22N""") 0 00FFPPCC   CCC<w777&&4888   **H,0,E,/1 1 1 $$h////"..>>>!N-...!11222>***/000/0000111N+++""#9:::  &&&&&s6   -KKK:M 
MM N;;O
	O
c                 0    |                      |           d S r)   )r9  )r$   rs  s     r%   rw  zJobViewer.on_selection_changed@  s    +++++r'   c           	      h    | j                             d d d d ||                                           d S r)   )rP  popupget_time)r$   r   r   event_buttons       r%   r  z"JobViewer.show_treeview_popup_menuC  s>    ##T4t\%*^^%6%6	8 	8 	8 	8 	8r'   c                 D    | j                             d d d d ||           d S r)   )r   r  )r$   r  r  r  s       r%   r  zJobViewer.on_icon_popupmenuH  s)    !''tT4NNNNNr'   c                     t          | j                                                  | _        |                                  d S r)   )r   r$  rb   r*  r  r$   r  s     r%   on_icon_hide_activatezJobViewer.on_icon_hide_activateK  s6    $'):):$;$;!&&)))))r'   c                     i }t           j                                        D ]\  }}|dk    r|||<   t          j        dgd|          }t          j        d| j        |           d S )NSYSTEM_CONFIG_PRINTER_UIzsystem-config-printerT)	close_fdsenv
   )r\  environr6   
subprocessPopenr   r  poll_subprocess)r$   r  r  rA   valueps         r%   #on_icon_configure_printers_activatez-JobViewer.on_icon_configure_printers_activateO  s    :++.. 	 	KD%111CII 79(,#7 7 7 "d&:A>>>>>r'   c                 2    |                                 }|d u S r)   )poll)r$   process
returncodes      r%   r  zJobViewer.poll_subprocessY  s    \\__
T!!r'   c                 r    |                                   | j        r| j                                         d S d S r)   )r  r  r  r  s     r%   on_icon_quit_activatezJobViewer.on_icon_quit_activate]  s;    9 	INN	 	r'   c                 0    |                      d           d S r  on_job_cancel_activate2r  s     r%   r9  z JobViewer.on_job_cancel_activateb  s    $$U+++++r'   c                 0    |                      d           d S )NTr  r  s     r%   r;  z JobViewer.on_job_delete_activatee  s    $$T*****r'   c                    | j         rt          | j        | j        | j        | j        | j         |          }| j                            |           |                    d| j	                   |                    d| j
                   d S d S )Nry   rx   )r   ru   r   r   r   r   r2  r]   r   on_canceljobs_finishedon_canceljobs_error)r$   r   r  s      r%   r  z!JobViewer.on_job_cancel_activate2h  s    ; 	?$doty$)&*ot{IO OBHOOR   JJ
D$?@@@JJT%=>>>>>	? 	?r'   c                     |                                  | j                            |          }| j        |= |                                  d S r)   )rv   r2  rT  r!  )r$   canceljobsoperationis      r%   r  z JobViewer.on_canceljobs_finishedp  sI    ##&&&HNN/00HQKr'   c                     |                                   t          |          t          j        k    rB|j        \  }}|t          j        k    r&|t          j        k    r|                     ||           d S |r)   )r!  r[   rP   rr   r   r   r   r  )r$   r  r  r   r   r   s         r%   r  zJobViewer.on_canceljobs_errorv  sn    ::&&XFQT***T'''##Q***F	r'   c                 j   	 t          j        | j        | j        | j        | j                  }n# t          $ r Y d S w xY w| j        D ]}|                    t          d                     	 |
                    |d           n# t          j        $ rt}|j        \  }}|t          j        k    r&|t          j        k    r|                     ||           |                                  |                                 Y d }~ d S d }~ww xY w|                                 ~|                                  d S )Nr#  zholding job
indefiniter3  rQ   r   r   r   r   rR   r   r   r   setJobHoldUntilrP   rr   r   r   r   r  r!  r   r$   r  rT   r  r   r   s         r%   r=  zJobViewer.on_job_hold_activate  sj   	#T_*.)*.)04A A AAA  	 	 	FF	 [ 	  	 E- 0 0111	!!5,7777=   A...+++''A...##&&&  ### %   ,/ 
==,BDA(DDc                 j   	 t          j        | j        | j        | j        | j                  }n# t          $ r Y d S w xY w| j        D ]}|                    t          d                     	 |
                    |d           n# t          j        $ rt}|j        \  }}|t          j        k    r&|t          j        k    r|                     ||           |                                  |                                 Y d }~ d S d }~ww xY w|                                 ~|                                  d S )Nr#  zreleasing jobzno-holdr  r  s         r%   r?  z!JobViewer.on_job_release_activate  sj   	#T_*.)*.)04A A AAA  	 	 	FF	 [ 	  	 E/ 2 2333	!!5)4444=   A...+++''A...##&&&  ### r  c                    	 t          j        | j        | j        | j        | j                  }| j        D ]}|                    |           ~n]# t          j	        $ r?}|j
        \  }}|                     ||           |                                  Y d }~d S d }~wt          $ r Y d S w xY w|                                  d S )Nr#  )r3  rQ   r   r   r   r   r   
restartJobrP   rr   r   r  r!  rR   r  s         r%   rA  z!JobViewer.on_job_reprint_activate  s    	#T_*.)*.)04A A AA  % %e$$$$} 	 	 	VFQA&&&"""FFFFF 	 	 	FF	 	s   AA B)4BB)(B)c                    	 t          j        | j        | j        | j        | j                  }n# t          $ r Y d S w xY w| j        D ]&}	 |                    |          }|d         }	 |d         }n&# t          $ r |
                    dd          }Y nw xY wt          d|dz             D ]n}|                    |||          }|
                    d          }	|
                    d          }
|
                    d	d
          }|
t          d          t          |          z   }
|dk    r|
dz   }
ne|                    d          dk    r|
|                    dd
          z   }
n2|                    d          dk    r|
|                    dd          z   }
|	nt#          j        t          d          | j        t"          j        j                  }|                    t"          j        t"          j        j        t"          j        t"          j        j                   |                    |
           |                    d           |                                }|t"          j        j        k    rY|                                }	 t?          j         |	|           nD# tB          t>          j"        f$ r tG          d|z              Y nw xY w|t"          j        j        k    r	 |$                                 tK          j&        |	           ]tG          d             d S # tN          j(        $ r@}|j)        \  }}| *                    ||           | +                                 Y d }~ d S d }~ww xY w~| +                                 d S )Nr#  r   znumber-of-documentszdocument-countr   r{   filezdocument-namezdocument-formatrC  	retrievedzapplication/postscriptz.pszapplication/vnd.r   zapplication/vndzapplication/.z	Save File)r|   r}   r  TzUnable to save file z%Unable to retrieve file from job file),r3  rQ   r   r   r   r   rR   r   r-  rW   r/  r  getDocumentr   rk  findreplacer   FileChooserDialogFileChooserActionSAVEr   r8  r   r  
STOCK_SAVEr  set_current_nameset_do_overwrite_confirmationr  get_filenameshutilcopyfileIOErrorErrorr   rv   r\  unlinkrP   rr   r   r  r!  )r$   r  rT   r  r7   r`  document_countdocument_numberdocumenttempfilerA   formatr   r   file_to_saver   r   s                    r%   rC  z"JobViewer.on_job_retrieve_activate  s   	#T_*.)*.)04A A AAA  	 	 	FF	 [ 8	 8	E7((//!"34E%*+@%ANN E E E%*YY0@!%D%DNNNE (-Qq0@'A'A ) )O]];OOH'||F33H#<<88D%\\*;R@@F | ~~c/.B.BB!%===#'%<DD#[[);<<BB#'&..9JB*O*O#ODD#[[88B>>#'&..*M*M#MD+!$!6ann:>/363H3M"O "O "O **$'$4c6F6M$'NC4D4GI I I //555<<TBBB#)::<<#s'7':::+1+>+>+@+@LP &, G G G G$+V\#: P P P *+A,+N O O O O OP%)9)@@@ (((	(++++"#JKKKS)V =   A##Q***##&&&	 sn   ,/ 
==L)A21L2 BLBG.LJL(KLKALM,,4M''M,c                     t          j        d          dfd	}|                    d|          |                    d|          fS )Nr{   c                 \                         d          rt          j        | gR   d S d S r  )acquirer   idle_add)r  r   r   callback	only_onces     r%   handle_eventz5JobViewer._submenu_connect_hack.<locals>.handle_event  sD      %(( 9 (D848888889 9r'   zbutton-press-eventr  r)   )	threading	Semaphorer   )r$   r  r
  r   r  r  s     `` @r%   r  zJobViewer._submenu_connect_hack  sl    '++		9 	9 	9 	9 	9 	9 	9 	9 2LAAj,779 	9r'   c                    	 t          j        | j        | j        | j        | j                  }| j        D ]}|                    ||           ~n]# t          j	        $ r?}|j
        \  }}|                     ||           |                                  Y d }~d S d }~wt          $ r Y d S w xY w|                                  d S )Nr#  )r|  job_printer_uri)r3  rQ   r   r   r   r   r   moveJobrP   rr   r   r  r!  rR   )r$   r  r  rT   r  r   r   s          r%   r  zJobViewer.on_job_move_activate  s    	#T_*.)*.)04A A AA  J J		%	IIII} 	 	 	VFQA&&&"""FFFFF 	 	 	FF	 	s   AA B+ 4BB+*B+c                    	 t          j        | j        | j        | j                  }n# t
          $ r Y dS w xY wdg}ddg}| j        D ]}|                    ||          }|                    d          }|	                    ||          }	 |d         }	n## t          $ r t          d           d	d
g}	Y nw xY w|                     ||                    d          ||	d           d S )Nr#  Fr   r   r%  rp   rn   r&  r'  r(  T)rP   rQ   r   r   r   rR   r   r-  r/  rq   rW   r   r7  )
r$   r  rT   
jattrs_req
pattrs_reqr  r<  r   r=  r>  s
             r%   rD  z&JobViewer.on_job_authenticate_activate,  sj   	di&*i,0O= = =AA  	 	 	55	 ((
*L9
[ 	D 	DE''>H ( J JF**/00C++3BL , N NF>%+,@%A"" > > > / 0 0 0&0*%=""">
 ##UFJJ,E,E%(*<dD D D D	D 	Ds   &) 
77BB76B7c                     | j                                          | j        r| j                                         |                                  d S r)   )r  r  r  r  )r$   
toolbuttons     r%   on_refresh_clickedzJobViewer.on_refresh_clickedH  sL    ? 	'O##&&&&&)))))r'   c                    	 t          j        | j        | j        | j                  }n# t
          $ r Y dS w xY w| j        D ]}|| j        vrt          j	                    }t          j
        t          |                    }| j                            ||          }t          j                    }|                    |           t          j                    }|                    dt%          d          |d           t          j                    }|                    dt%          d          |d           t          j        t          t                    }	|                    |	           |                                                    t          j        j                   |	                    dt          j        j                   |	|f| j        |<   |                     ||	           | j                                         d
S )z> For every selected job create notebook page with attributes. r#  Fr   r   Namer   r{   Value)connN)rP   rQ   r   r   r   rR   r   r&  r   ScrolledWindowr   rk  r  append_pageTreeViewr  r`  insert_column_with_attributesr   	ListStorerp  rr  rt  ru  NONErm  rn  	ASCENDINGr,  r  r   )
r$   r  rT   r  scrolledwindowr   
page_indexattr_treeviewr  
attr_stores
             r%   rE  z$JobViewer.on_job_attributes_activateO  s   	di&*i,0O= = =AA  	 	 	55	 [ 	B 	BEDO++!$!3!5!5	E

333!]66~uMM
 #""=111+..;;Aqyy<@q < J J J+..;;Aqzz<@q < J J J ]344
''
333++--66s7H7MNNN--q#,2HIII*4j)A&115q1AAA!**-----s   &) 
77c                    ||}n9	 t          j        | j        | j        | j                  }n# t
          $ r Y dS w xY w|| j        v r| j        |         \  }}	 |                    |          }nD# t          $ r Y dS t           j	        $ r& | j
                            |           | j        |= Y dS w xY w|                                 |                                D ]0\  }}|dv r
|                    |t          |          g           /dS dS )z* Update attributes store with new values. Nr#  F)zjob-idzjob-printer-up-time)rP   rQ   r   r   r   rR   r&  r-  r.  rr   r  r  clearr6   r]   rk  )	r$   r  r  rT   r&  r  r7   rA   r  s	            r%   r,  z&JobViewer.update_job_attributes_viewero  sl   AAO$)*.)04A A A     uu DO##!%!7Z	**511!   =    ))$///OE* ${{}} 6 6e<<<!!4U"45555# $#6 6s$   &. 
<<A/ /
B0<0B0/B0c                 j    |                     dt          j                  }|t          j        k    rdS dS )Nr   FT)r/  rP   r  )r$   jobdatastates      r%   job_is_activezJobViewer.job_is_active  s0    [$*?@@D)))5tr'   c                    d }|]| j         V| j                                         }d}| j                            |g           D ]}|| j         k    r	| j         } n|d | _         |+| j                            |g           D ]}||}||k    r|}|U|                                }|t
          j        k    r0t
          j        |         }|                                }	 t          j
                                        }|                    |dd          }	|	                    ||                                dz  |                                dz  |	                                dz  |	                                dz  |                                dz  |                                dz  ddt           j        j        d           n'# t&          j        $ r t+          d|z             Y nw xY w|S )NFr   r      g      ?   r	  )worst_reasonget_printerr)  r/  	get_levelr   REPORT
LEVEL_ICONr  r   r  r  r  r  r  r  r   r  r  r   r  r   )
r$   r  r   r0  foundr  levelr  r  emblems
             r%   add_state_reason_emblemz!JobViewer.add_state_reason_emblem  s   ?t0<'3366GE488'2FF  T...#'#4LE / #$(!488'2FF * *'#)LLl**#)L# **--E{)))"-e4?M5588E"__dB::F$$f&,&6&6&9&9A&=&,&7&7&:&:Q&>&,&6&6&9&9A&=&,&7&7&:&:Q&>&,&6&6&9&9A&=&,&7&7&:&:Q&>&)3&/&:&CSJ J J J ~ ? ? ? 6 =>>>>>? s   C!G   !G$#G$c                    | j         sd S |*t          | j                                                  dk    }|r`| j        }| j                                        D ]>\  }}|                    dt          j                  }|t          j	        k    r	| j
        } n?n| j        }	 |                     |          }n#  t                       Y nxY w|S )Nr   r   )r  r   r$  rb   r  r6   r/  rP   r  r0  r  r  r8  rY  )r$   	have_jobsr  r  r*  r;  s         r%   get_icon_pixbufzJobViewer.get_icon_pixbuf  s    { 	FTY^^..//!3I 	'^F"&)//"4"4  w k43GHHT444!6FE 5 &F	!116::FF	!     s    B6 6Cc                     | j         sd S |Rt          | j                  }|dk    rt          d          }n(|dk    rt          d          }nt          d          |z  }| j                            |           d S )Nr   zNo documents queuedr{   z1 document queuedz%d documents queued)r  r   r$  r   r  set_tooltip_markup)r$   tooltipr  s      r%   set_statusicon_tooltipz JobViewer.set_statusicon_tooltip  s    { 	F?DIH1}}122Q/00122X=**G44444r'   c                    t                      }| j                                        D ]-\  }}t          |          dk    r|                    |           .t          d|z             t                      }t          |          rVt                      }| j        D ].}| j        |         d         }||v r|                    |           /t          d|z             g }|D ]"}|                    | j        |                    #d | _	        t          |          dk    r.|d         }|D ]
}	|	|k    r|	}|| _	        t          d|z             t          j                     | j                            d           | j	        8| j	                                        \  }
}| j                            d|           nd }d}d}d}| j        D ]R}	 | j        |         d         }n# t           $ r Y #w xY w|t"          j        k    r|dz   }=|t"          j        k    r|dz   }S|dk    s|dk    r/t)          d	          ||fz  }| j                            d|           | j        ra| j        sZ|                     |
          }| j                            |           |                                  |                     |           t          j                     d S )Nr   zUpset printers: %sjob-printer-namezMy upset printers: %szWorst reason: %srC  r   r{   zprocessing / pending:   %d / %dr:  )r>  )rg   r)  r6   r   r  r   r'  r$  r\   r0  r   r  r   popget_descriptionpushrW   rP   r0  r  r   r  r#  r;  r  r  r  r?  r  )r$   r:  upset_printersr   reasonsmy_upset_printersr  
my_reasonsr0  r  r|   r>  status_message
processingpending	job_stater  s                    r%   update_statuszJobViewer.update_status  s.    $ : @ @ C C 	- 	-GWG}}q  ""G,,,(>9:::EE 	E #) 4 4)E*+=>n,,%))7333/2CCDDD
( 	D 	DGt9'BCCCC !
a%a=L$ * *L((#)L ,D*\9:::A(#0@@CCUGNG,,,,GNJG) * * $	% 0 =II   H 777!+aJJ$"666%kGaWq[[!"#D!E!EU\H]!]##A~666; 	:t: 	:))Y)??FO++V444**---'''999s   G
G)(G)c                     |                                 }|t          j        k     rd S g d}|                                |v rd S |                     |           d S )N)otherzcom.apple.print.recoverableconnecting-to-devicezcups-remote-pendingzcups-remote-pending-heldzcups-remote-processingzcups-remote-stoppedzcups-remote-canceledzcups-remote-abortedzcups-remote-completedzcups-waiting-for-job-completed)r2  r   WARNING
get_reasonnotify_printer_state_reason)r$   r  r6  	blacklists       r%   (notify_printer_state_reason_if_importantz2JobViewer.notify_printer_state_reason_if_important(  so      ##;&&&F  	8 9,,F((&11111r'   c                 <   |                                 }|| j        v r!t          dt          |          z             d S |                                }|t
          j        k    s|                                dk    rt          j	        j
        }nt          j	        j        }|                                \  }}t          j                            ||d          }d|_        |                    |           | j        r|                    t          j                   |                    d| j                   || j        |                                 <   |                                  	 |                                 d S # t0          j        $ r t5                       Y d S w xY w)Nz Already sent notification for %srQ  r   Tr  )	get_tupler,  r   r   r2  r   ERRORrS  r   UrgencyNORMALLOWrD  Notificationr   user_notifiedset_urgencyr"  set_timeoutEXPIRES_NEVERr   #on_state_reason_notification_closedr  rW  r   r  rY  )r$   r  tupler6  urgencyr|   r   r  s           r%   rT  z%JobViewer.notify_printer_state_reasonO  s     ##D333:T6]]JKKKF  ##[&&&  $:::n+GGn(G..11*..tYGG#  '***" 	<$$f&:;;;h"F	H 	H 	H?K'(8(8(;(;<&&)))	!     ~ 	! 	! 	!      	!s   $E: :FFc                 z    t          dt          |          z             d|_        |                                  d S )NzNotification %s closedT)r   r   r  r  )r$   r  r  s      r%   rb  z-JobViewer.on_state_reason_notification_closedk  s=    ,t\/B/BBCCC"&&)))r'   c                    | j                             |i           }|                    dt          d                    }|                    d          }||                    d          }|sdg}t          j        | j        | j        | j        | j                  }	 |	                    ||          }n# t          j        $ r Y d S w xY w|                    d          }|(t          j                            |          \  }	}
|	dvrd S |                    dt          d                    }t          j                            t          d	          t          d
          ||fz  d          }|                    t          j        j                   |                    d| j                   ||_        || j        |<   |                                  	 |                                 d S # t6          j        $ r t;                       Y d S w xY w)Nr   r  r   r%  r#  rn   )socketipphttpr@  rA  zDocument printedz1Document `%s' has been sent to `%s' for printing.r   r  )r$  r/  r   r3  rQ   r   r   r   r   rq   rP   rr   rK  rL  rM  r   r]  r   r_  rZ  r\  r   $on_completed_job_notification_closedr  r0  r  rW  r   r  rY  )r$   r  r  r  r`  r_  r=  rT   r7   re  rf  r   r  s                r%   notify_completed_jobzJobViewer.notify_completed_jobq  s?   immUB''77J)55gg011" ,//J!&'.2i.2i48OE E E22IO 3 Q QEE}   FF #YY55
%!'!7!7!D!D!AAAF''-q||<<*..2D0E0E./ 1H /I /I/7/6/8/8 /89 9 	  &."4555h"G	I 	I 	I"2>(/&&)))	!     ~ 	! 	! 	!      	!s$   B5 5CCG( (H	H	c                 L    |j         }| j        |= |                                  d S r)   )r  r0  r  )r$   r  r  r  s       r%   rj  z.JobViewer.on_completed_job_notification_closed  s-    ",U3&&)))))r'   c                     | j                                          i | _        t                      | _        i | _        t                      | _        d S r)   )rl  r(  r$  rg   r'  r%  rI   r  )r$   mons     r%   r  zJobViewer.on_refresh  sD    
	55!0!3!3r'   c                 L   |                     dd          }	 | j                            |          }n# t          $ r |}Y nw xY w| j        r|| j        vrd S ||d<   || j        vr|                     ||           nZ|| j        k    rO|                                D ]:\  }}	|| j	        |         vr&|	| j	        |         |<   t          d|d|	d           ;|| j        vrd S |                     |          r| j                            |           n#|| j        v r| j                            |           |                     d           | j        rQ|                     |          sd S | j                             |g           D ] }
|
j        s|                     |
           d S d S )	Nr   rC  rA  zAdd =z	 (my job)TrB  )r/  r  re   rW   r  r%  r  r  r6   r$  r   r,  r'  r  r
  rN  r  r)  r^  rV  )r$   rn  r  	eventnamer   r*  r   r   attrr  r  s              r%   r  zJobViewer.job_added  s   kk,b11	,33S99GG 	 	 	GGG	  	7$2E#E#EF&-"# %%LL%))))DO##&}}// F Fety///-2DIe$T*Jeee DEEE %%Fw'' 	,  %((((d&&&##U+++d+++; 	K%%w// 488'2FF K K+ KAA6JJJ	K 	KK Ks   3 AAc                 v   |                     dd          }	 | j                            |          }n# t          $ r |}Y nw xY w| j        r|| j        vrd S ||d<   |                     |          r| j                            |           n#|| j        v r| j                            |           | 	                    ||           | 
                                 || j        vrd S | j        |         }| j        r||dk    s|dk    rp|d         t          j        k    rZ|d         }t          |          t           k    r|g}d}	|D ]}
|
                    d	          rd
}	 n|	s|                     |           | j        r5|dk    s(|dk    r,|d         t          j        t          j        fv r|| j        vrd
}|d         }|t          j        k    s|t          j        k    r|d         dk    rd}n|d         }|d         }|                    d          dk    rt3          d          ||fz  }no|                    d          dk    rt3          d          ||fz  }nA|                    d          dk    s|t          j        k    rd}nt3          d          |||fz  }|rt5          d           |                     d d
           t9          j        t3          d          | j                  }|                    t3          d          t8          j         j!        t8          j"        t8          j         j#                   |$                    t8          j         j#                   |%                    d           |&                    d           |'                    tP                     t8          j)        *                    dd          }|%                    d           t9          j+                    }|,                    t8          j-        t8          j.        j/                   |0                    |ddd           t8          j1        *                    dd          }dt3          d          z   d z   te          j3        |          z   }	 |d!         t          j4        k    r"|d"         }|d#z  }|t3          d$          |z  z  }n# t          $ r Y nw xY wt9          j5        |%          }|6                    d
           |7                    d
           |8                    dd           |0                    |ddd           |0                    |ddd           |j9        0                    |ddd           |:                    d&| j;        |           | j                            |           |<                                 d S d S d S d S d S d S )'Nr   rC  rA  job-completedjob-state-changedr   job-state-reasonsFjob-canceledTzjob-stoppedr$  r   znotify-textr   zbackend errorsr   zBThere was a problem sending document `%s' (job %d) to the printer.zfilter errorsz6There was a problem processing document `%s' (job %d).zbeing pausedz:There was a problem printing document `%s' (job %d): `%s'.zProblem detected)r  zPrint Error)r|   r}   	_Diagnoser   r   r   z"<span weight="bold" size="larger">z	</span>

zprinter-staterm    z*The printer called `%s' has been disabled.r   r   )=r/  r  re   rW   r  r,  r'  r  r
  r  rN  r$  r  rP   IPP_JOB_COMPLETEDr[   r:   
startswithrk  r2  r  r(  r0  r1  r  r   r   r  r   r   r   r   r   r   STOCK_OKr  r   r   r   rz  r{  r   r   r   r   STOCK_DIALOG_ERRORr   r   r   r  r   escapeIPP_PRINTER_STOPPEDr   set_use_markupr   r   r   r   r  r   )r$   rn  r  rq  r   r*  r   r   rG  canceledr  may_be_problemr;  notify_textr  r  r   r   r   r   markuprA   r   s                          r%   r  zJobViewer.job_event  sv   kk,b11	,33S99GG 	 	 	GGG	  	7$2E#E#EF&-"#w'' 	,  %((((d&&&##U+++((( 	!!F)E" ; 	2I88&*===";/43III/0GW~~%%")H!  $$n55 #HE  2))5111 K d	#-''...K T%9%)%9%; ; ;111 "N[)F$1114,,,)*.BBB!&. $M2":.##%566"<<  "<  =  = (%0 1GG !%%772== !, - -08%/@AGG!&&772== 444%*NN  ! "3  4  4 (%= >G  )#.///**DT*BBB1]+;+;37?D D D""AkNNC4D4G$'L#2B2EG G G++S-=-@AAA''+++$$e,,,$$d+++x||UB//%%q)))	$$c&<&)l&9; ; ;ua888x||UB//>M**+-:;"/7334_-1III$^4#1 &6 $7 $79=$> ?   D 	///$$d+++##T***##Q***ua888ueQ777&&eUA>>>
 $ @%I I I(,,e444"""""Id	# d	#
 21 /.; ;p)# )#s!   3 AA:8R3 3
S ?S c                 6   | j         r|dk    s|dk    r|d         t          j        k    ri|d         }t          |           t	          |          t
          k    r|g}d}|D ]}|                    d          rd} n|s|                     |           || j        v r5| j	        
                    | j        |                    | j        |= | j        |= || j        v r| j        
                    |           || j        v r| j        |= |                                  d S )Nrt  ru  r   rv  Frw  T)r  rP   rz  r   r[   r:   r{  rk  r%  rl  r
  r$  r'  r&  rN  )r$   rn  r  rq  r   rG  r  r  s           r%   r  zJobViewer.job_removedo  sO   ; 	2I88&*===";/43III/0G   W~~%%")H!  $$n55 #HE  2))5111DM!!Jt}U3444e$	% D$$$##U+++DO##&r'   c                    |                                 \  }}|                                }	 | j        |         }n# t          $ r g }|| j        |<   Y nw xY wd|_        |                    |           |                                  | j                                         | j	        sd S | j
                                        D ]?\  }}|                     |          s|d         |k    r|                     |            d S @d S )NFrA  )rD  r1  r)  rW   r^  r]   rN  r   r6  r  r$  r6   r,  rV  )	r$   rn  r  r|   r   r   r  r  r  s	            r%   r  zJobViewer.state_reason_added  s5   ..11$$''	4*73AA 	4 	4 	4A23D&w///	4  %	&  ###{ 	F ++ 	 	IC%%t,, &'722==vFFF 3	 	s   ; AAc                    |                                 }	 | j        |         }n # t          $ r t          d           Y d S w xY w	 |                    |          }n # t
          $ r t          d           Y d S w xY w||= |                                  | j                                         | j	        sd S |
                                }	 | j        |         }t          |dd           dk    r+	 |                                 n# t          j        $ r Y nw xY w| j        |= |                                  d S # t          $ r Y d S w xY w)NzPrinter not foundzReason not foundr  T)r1  r)  rW   r   rT  r  rN  r   r6  r  rX  r,  r  r   r   r  r  )r$   rn  r  r   rG  r  rc  r  s           r%   r  zJobViewer.state_reason_removed  s   $$''	09GG 	 	 	+,,,FF		v&&AA 	 	 	*+++FF	 AJ  ###{ 	F  ##	:5ALh55== &&)))){    D
 /6**----- 	 	 	DD	sW   $ A AA A87A8	"D4 ,D  D4 DD4 DD4 4
EEc                 B    | j         sd S |                     |           d S r)   )r  rT  )r$   rn  r  s      r%   r  zJobViewer.still_connecting  s+    { 	F((&11111r'   c                    | j         sd S 	 | j        |         }d }|D ]}|                                dk    r|} nn# t          $ r t	          d           Y nw xY w||                                }nft	          d           d }| j                                        D ](\  }}}||k    r|dk    rt	          d           |||f} n)|t	          d           d S 	 | j        |         }	n # t          $ r t	          d           Y d S w xY wt          |	dd           dk    r4	 |		                                 n# t          j        $ r Y nw xY wd|	_        d S d S )	NrQ  z(Couldn't find state reason (no reasons)!z#Couldn't find state reason in list!zFound from notifications listzBUnexpected now_connected signal (reason not in notifications list)zUnexpected now_connected signalr  T)r  r)  rS  rW   r   rX  r,  rb   r  r   r   r  r  )
r$   rn  r   rG  r  rs   rc  r6  r  r  s
             r%   r  zJobViewer.now_connected  s   { 	F	D09GF  <<??&<<<FE =  	D 	D 	DBCCCCC	D $$''EE=>>>E 6;;>>  <<A)?$?$? ?@@@"AqMEE} A B B B	:5ALL 	 	 	9:::FF	 L(D11T99""%%%%;    #'L :9s3   0< AAC' 'DDD2 2EEc                 :    | j                             |           d S r)   )r  rS   r$   rn  r   s      r%   r  zJobViewer.printer_added	  s    **G44444r'   c                 <    | j                             ||           d S r)   )r  r`   )r$   rn  r   rq  r   s        r%   r  zJobViewer.printer_event	  s!    00'5AAAAAr'   c                 :    | j                             |           d S r)   )r  rc   r  s      r%   r  zJobViewer.printer_removed	  s    --w77777r'   c           	      t    |                     dt          |                    |d                               d S )Nr   r   )ra  rk  r  )r$   r  r  r  r  r  s         r%   r[  z"JobViewer._set_job_job_number_text	  s4    &#ua'@'@"A"ABBBBBr'   c           	          |                     |d          }	 | j        |         }n# t          $ r Y d S w xY w|                    d|                    dt          d                               d S )Nr   r   r   r  r  r$  rW   ra  r/  r   r$   r  r  r  r  r  r  r  s           r%   r\  zJobViewer._set_job_user_text	  s    q))	)E"CC 	 	 	FF	 	&#''+F+,Y<<#9 #9 	: 	: 	: 	: 	:   & 
44c           	          |                     |d          }	 | j        |         }n# t          $ r Y d S w xY w|                    d|                    dt          d                               d S )Nr   r   r   r  r  r  s           r%   r]  z JobViewer._set_job_document_text	  s|    q))	)E"CC 	 	 	FF	 	&#''*a	ll"C"CDDDDDr  c                 "   |                     |d          }	 | j        |                             d          }n# t          $ r Y d S w xY w|dk    rdt	          d          z   }nd}|                    d| j        |         d         |z              d S )	Nr   rv  zprinter-stopped - disabledrC  r   rA  )r  r$  r/  rW   r   ra  )	r$   r  r  r  r  r  r  rG  r  s	            r%   r^  zJobViewer._set_job_printer_text%	  s    q))	i&**+>??GG 	 	 	FF	 '''Qz]]*FFF&$)E"23E"Fv"MNNNNNs    9 
AAc                     |                     |d          }	 | j        |         }n# t          $ r Y d S w xY wt          d          }d|v rt	          |d                   dz   }|                    d|           d S )Nr   r  r   kr   )r  r$  rW   r   rk  ra  )	r$   r  r  r  r  r  r  r  sizes	            r%   r_  zJobViewer._set_job_size_text2	  s    q))	)E"CC 	 	 	FF	 ||S  N+,,s2D&$'''''r  c                    	 | j         |         }n# t          $ r Y d S w xY w|                    dt          j                  }t          |          }|t          j        k    o|                    dd          dk    }d }|rt          d          }n7|t          j        k    rvt          d          }|                    d          }|	 |                    d          }|dk    rt          j
                    }	t          |d |                   }
||d	z   d                              d          }|dk    r=||d	z   z  }t          ||d	z   |                   }t          ||d	z   d                    }nt          ||d	z   d                    }d
}|	j        }|
|	j        k     s,|
|	j        k    r&||	j        k     s||	j        k    r||	j        k     r|d	z  }|	j        |	j        ||
||d
d
df	}t"          j                            d          }dt"          j        d<   t          j        |          }|t"          j        d= n|t"          j        d<   t          j        |          }t          d          t          j        d|          z  }n# t,          $ r Y nw xY w|dk    rt          d          }n|dk    rt          d          }n|dk    rt          d          }n|dk    rt          d          }n|dk    rt          d          }n|dk    rt          d          }n	 t          j        t          d          t          j        t          d          t          j        t          d          t          j        t          d          t          j        t          d          t          j        t          d           i|         }n# t          $ r Y nw xY w|t          d!          }|S )"Nr   r$  r*  r   zHeld for authenticationHeldr   r   r{   r   TZUTCzHeld until %sz%Xzday-timezHeld until day-timeeveningzHeld until eveningnightzHeld until night-timezsecond-shiftzHeld until second shiftzthird-shiftzHeld until third shiftweekendzHeld until weekendPending
ProcessingStoppedCanceledAborted	Completedr  )r$  rW   r/  rP   r0  r   r1  r   r  r  gmtimetm_mdaytm_hourtm_mintm_sectm_yeartm_monr\  r  mktimer  r  r5  r  r2  r  IPP_JOB_ABORTEDrz  )r$   r  r  r;  r  r:  r+  untilcolon1r  hhcolon2mmssdayr  old_tz
simpletimelocals                      r%   _find_job_state_textzJobViewer._find_job_state_text>	  s   	9S>DD 	 	 	FF	 ;(?@@LL$"33 2!XX'7@@12 	  @	/00EE$###fIIEHH.//E $"ZZ--F||"knn %.11!&vz{{!3!8!8#!>!>!R<<"fqj0F!$eFQJv,=&>!?!?B!$eFQJKK&8!9!9BB!$eFQJKK&8!9!9B!"B!k,,3;.. 3:oo!SZ//BOO1HC #SZ "BAq" 6!#!5!5+0
4(%)[$%7%7
!> "
4 0 0/5BJt, $
 ; ;!"?!3!3!%e!<!<"=!   D
""/00)##.//'!!122.((344-''233)##.//.)11\??.)/:.)0!K..C
 DEF     =iLLEs2    
F7J   
JJBN6 6
OOc                    |                     |d          }	 | j        |         }n# t          $ r Y d S w xY w|                    dt          j                  }t          |          }|t          j        k    r| j        }	n| j        }	|t          j	        k    r
	 t          j                                        }
|
                    t          j        dd          }|	                                }|                    |dd|                                |                                |                                dz  dz
  |                                dz  dz
  ddt&          j        j        d           |}	nP# t,          j        $ r t1          dt          j        z             Y n#w xY w|d	         }|                     |	|
          }	|                    d|	           d S )Nr   r   g      &@r.  r{   r  r/  r	  rA  )r   r  )r  r$  rW   r/  rP   r0  r   r  r  r1  r   r  r  r  r<  r  r  r  r  r   r  r  r   r  r   r8  ra  )r$   r  r  r  r  r  r  r;  r  r  r  r7  r  r   s                 r%   rh  zJobViewer._set_job_status_icon	  s   q))	9U#DD 	 	 	FF	 ;(?@@LL''',DD>D!!!L1144#*?KKyy||  $1"&.."3"3"&//"4"4"&.."3"3a"7!";"&//"4"4q"81"<"%s"+"6"?F F F > L L L2S5JJKKKKKL -.G//w/GGD8T*****s   & 
44CE/ /+FFc                    |                     |d          }	 | j        |         }n# t          $ r Y d S w xY w	 |d         }n*# t          $ r |                     |          }||d<   Y nw xY w|d         }| j                            |g           }	t          |	          dk    r<|	d         }
|	dd          D ]
}||
k    r|}
|
                                \  }}|d|z   z  }|                    d|           d S )Nr   r)  rA  r{   r  r   )	r  r$  rW   r  r)  r/  r   rD  ra  )r$   r  r  r  r  r  r  r   r   rG  r0  r  r|   rG   s                 r%   ri  zJobViewer._set_job_status_text	  s?   q))	9U#DD 	 	 	FF		('DD 	( 	( 	(,,e44D#'D   	( )*,00'2>>==1"1:L!!""+ * *L((#)L*::==OUFEEM!D64(((((s   & 
44A $A('A()NNFFTNNr)   )F)Rr+   r,   r-   rg   r+  r   r   r   r   r&   r  r  rG  r  r  r  r  r  r  r  r  r!  r  r7  r^  r{  rz  r  ry  rx  r9  rw  r  r  r  r  r  r  r9  r;  r  r  r  r=  r?  rA  rC  r  r  rD  r  rE  r,  r,  r8  r;  r?  rN  rV  rT  rb  rk  rj  r  r  r  r  r  r  r  r  r  r  r  r[  r\  r]  r^  r_  r  rh  ri  r.   r'   r%   r   r   s  sC       !c #4 #4 #4 5 5 	+4dB?
L '+27.2e7 e7 e7 e7N	  @. . .	 	 	   Q Q Q. . . .@N N N8 8 8t	5 	5 	5      F  F  F  FD& & &
d# d# d# d#LeC eC eCN+ + + +ZI I I> > >@"" "" ""H; ; ;J J J]' ]' ]' ]'~, , ,8 8 8
O O O* * *? ? ?" " "  
, , ,+ + +? ? ?  
 
 
  4  4  &D D DL9 9 9  &D D D8* * *. . .@6 6 6 6>  ) ) ) )V   05 5 5 5= = = =@%2 %2 %2N! ! !8   0! 0! 0!d* * * *4 4 4'K 'K 'KRT# T# T#l  @  6$ $ $L2 2 2-' -' -'^5 5 5B B B8 8 8C C C: : :E E EO O O
( 
( 
(Q Q Qf"+ "+ "+H) ) ) ) )r'   r   )Br   r3  rP   r  	dbus.glibdbus.servicer  girequire_versiongi.repositoryr   r   r   r   r   r   guir	   r  r\  r  r
   rZ  rN  r  sysr  urllib.parserK  xml.saxr   debugr4  statereasonr  	functoolsr   rH  r   rI  r5  gettextinstallr5  r   r   
pkgdatadirpkgdatar{  r  SEARCHING_ICONinitSchemar   SchemaFlagsr!  SchemaAttributeTypeSTRINGINTEGERr3   r   r0   r<   rI   ru   r   r.   r'   r%   <module>r     s  *                    				  8U # # #                   ! ! ! ! ! !       # # # # # #                            



      



                               X   Bx%%%$$$$$$JJ   JJJ  v~1A B B B B # # # # # #


	' 0 1 1 1 31}(()JFL^Lc5;5O5V7=7Q7X7=7Q7X9?9S9Z5;5O5W7=7Q7X9?9S9Z4:4N4U	*+ 	*++ +                      1 1 1 1 1 1 1 1_ _ _ _ _ _ _ _DMF MF MF MF MF'/ MF MF MF^Y!) Y!) Y!) Y!) Y!) Y!) Y!) Y!) Y!) Y!)s   3C CC