
    HfI                       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 d dl Z d dl!Z!d dl"Z"d dl#m$Z$  ejJ                  d       	  ej                  dd       d dl	m&Z& dZ'd dl)Z) e)jT                  e jV                  e jX                         d dl!m-Z- e j\                  Z/dZ0dZ1dZ2 e
jf                  d       e're&jh                  jk                  de&jl                  jn                  e&jp                  jr                  e&jp                  jr                  e&jp                  jr                  e&jp                  jr                  e&jp                  jt                  e&jp                  jr                  e&jp                  jr                  e&jp                  jr                  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      ZAy# e($ r dZ'Y w xY w))    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                   :    e Zd Z ej                         Zd Zd Zy)
ServiceGetc                 N    t         j                  j                  dd       | _        y Nr   )r   Serviceget_syncserviceselfs    -/usr/share/system-config-printer/jobviewer.py__init__zServiceGet.__init__^   s    !>>221379DL    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   [   s     &.."	9	 r'   r   c                   &    e Zd Z e       Zd Zd Zy)
ItemSearchc                     t         j                  j                  |t        |t         j                  j
                  d       | _        y r)   )r   r    search_syncNETWORK_PASSWORDSearchFlagsLOAD_SECRETSitems)r$   r"   attrss      r%   r&   zItemSearch.__init__i   s2    33G4D494:4F4F4S4S48	:DJr'   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y)PasswordStorec           	      r    t        j                  t        |t         j                  ||d | j                         y r)   )r   password_storer3   COLLECTION_DEFAULTon_password_stored)r$   r7   namesecrets       r%   r&   zPasswordStore.__init__u   s1    !!"2"'"(";";"&"("&"&"9"9;r'   c                 .    t        j                  |       y r)   )r   password_store_finish)r$   sourceresultunuseds       r%   r@   z PasswordStore.on_password_stored~   s    ((0r'   N)r+   r,   r-   r&   r@   r.   r'   r%   r<   r<   t   s    	;	1r'   r<   c                   L    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y)PrinterURIIndexNc                 H    i | _         |g }|| _        | j                          y r)   )r   names_collect_names)r$   rK   s     r%   r&   zPrinterURIIndex.__init__   s&    =E
r'   c                     | j                   sy |s	 t        j                         }| j                   D ]  }| j	                  |        g | _         y # t        $ r Y y w xY w)N
connection)rK   cups
ConnectionRuntimeErroradd_printer)r$   rO   crA   s       r%   rL   zPrinterURIIndex._collect_names   se    zzOO& JJ 	2Ddq1	2 
   s   A 	AAc                 J    	 | j                  ||       y # t        $ r Y y w xY w)N)rA   rO   )_map_printerKeyError)r$   r   rO   s      r%   rS   zPrinterURIIndex.add_printer   s,    	G
C 		s    	""c                     g }d|v r+|d   }t        |      t        k7  r|g}|j                  |       d|v r|j                  |d          d|v r|j                  |d          |D ]  }|| j                  |<    y )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%'KK234 	(C 'DLL	(r'   c                     | j                          t        | j                  j                               }|D ]"  }| j                  |   |k(  s| j                  |= $ y r)   )rL   r:   r   keys)r$   r   r^   r   s       r%   remove_printerzPrinterURIIndex.remove_printer   sQ    DLL%%() 	&C||C G+LL%	&r'   c                     | j                          	 | j                  |   S # t        $ r | j                  ||      cY S w xY w)N)r   rO   )rL   r   rW   rV   )r$   r   rO   s      r%   lookupzPrinterURIIndex.lookup   sJ    	F<<$$ 	F$$#*$EE	Fs   ! A A c                 h    | j                          t        | j                  j                               S r)   )rL   setr   valuesr#   s    r%   all_printer_namesz!PrinterURIIndex.all_printer_names   s&    DLL''*++r'   c                     | j                          | j                  j                         D ]  \  }}||k(  s|c S  t        r)   )rL   r   r6   rW   )r$   rA   r   r   s       r%   lookup_cached_by_namez%PrinterURIIndex.lookup_cached_by_name   sA     LL..1 	LC$
	 r'   c                 4   	 |t        j                         }g d}||j                  ||      }n|j                  ||      }|d   }| j                  ||       ||| j                  |<   |S # t        $ r t        t         j
                  $ r t        w xY w)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    	!!__/
NA"77SNO 8 Q #77NO 8 Q ^$e,? $DLL  	N}} 	N	s   AA/ /(Br)   )NNN)r+   r,   r-   r&   rL   rS   r`   rc   re   ri   rk   rV   r.   r'   r%   rI   rI      s0    (&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y)CancelJobsOperationNr.   )destroyjob-deleted	ipp-errorfinishedc                    t         j                   j                  |        t        |      | _        || _        || _        || _        || _        |rFt        | j                        dkD  rt        d      }t        d      }n\t        d      }t        d      }nEt        | j                        dkD  rt        d      }t        d      }nt        d      }t        d	      }t        j                  ||d
d
      }	|	j                  t        d      t        j                  j                  |t        j                  j                         |	j!                  t        j                  j                         |	j#                  d       |	j%                  d       t        j&                  j)                  dd      }
t        j*                         }|j-                  t        j.                  t        j0                  j2                         |j5                  dd       |
j7                  |ddd       t        j8                  |      }|j;                  d
       |j5                  dd       |
j7                  |ddd       |	j<                  j7                  |
ddd       |	j?                  d| j@                         |	j?                  d| jB                         |	jE                          |	| _#        d | _$        tK        d| z         y )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__   s8     $'Fm"		$4;;!# / !KL  !IJ4;;!# / !KL  !IJ<v#'TCAo.0@0@0C0C(#*:*:*>*>	@##S%5%5%8%89#e$xx||UB'		c779L9LMS#&ua0		-T"S#&ua0eUA6
D$F$FG(H(HIEDL!r'   c                      t        d| z         y )Nz-%s)r   r#   s    r%   __del__zCancelJobsOperation.__del__  s    EDL!r'   c                     | j                   r!| j                   j                          d | _         | j                  r!| j                  j                          d | _        t        d| z         y )NzDESTROY: %s)rO   rv   r   r   r#   s    r%   
do_destroyzCancelJobsOperation.do_destroy  sK    ??OO##&"DO;;KK"DKMD()r'   c                 &    | j                  d       y )Nrv   )emitr#   s    r%   rv   zCancelJobsOperation.destroy)  s    		9r'   c                 X    | j                  |t        j                  j                         y r)   )r   r   r   r   r$   r   events      r%   r   z/CancelJobsOperation.on_job_cancel_prompt_delete,  s    **FC4D4D4G4GHr'   c                 |   |j                          d | _        |t        j                  j                  k7  r| j                  d       y t        | j                        dk(  r| j                  d       y t        j                  | j                  | j                  | j                  | j                  | j                         y )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"t{{q IIz"499#'99)-,0OO,0,@,@		Br'   c                 8    t        d|dt        |             y )Nz$CancelJobsOperation._connect_failed :)r   repr)r$   rO   excs      r%   r   z#CancelJobsOperation._connect_failedA  s    :tUXzZ[r'   c                 "   || _         | j                  rt        d      }nt        d      }| j                   j                  |       | j                   j	                  | j
                  d   | j                  | j                  | j                         y )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  sp    $>>.)I/*I(()4!!4;;q>4>>151F1F151E1E 	" 	Gr'   c                    t        d|dt        |             t        |      t        j                  k(  rh|j
                  \  }}|t        j                  k7  r3|t        j                  k7  r | j                  d| j                  d   |       | j                  |d        y | j                  j                          | j                  j                          d | _        | j                  d| j                  d   |       | j                  d       y )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    z4:FG:&XXFQT***T'''		;A<!!*d3OO**-OO##&"DOII{DKKNC8IIz"r'   c                    t        d|dt        |             | j                  d| j                  d          | j                  d= | j                  sM| j                  j                          | j                  j                          d | _        | j                  d       y |j                  | j                  d   | j                  | j                  | j                         y )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&MJK		=$++a.1KKN{{OO**-OO##&"DOIIz"   $++a.$..040E0E040D0D ! 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    ++44dB?++44dSFC++44dg3346++44dB?
L,"\"	*IB$\G"Fr'   ru   c                   0   e Zd Z eg d      Zdej                  j                  ddfiZ	 	 	 	 dNdZ	d Z
d Zd ZdOd	Zd
 ZdPdZd Zd Zd Zd ZdOdZd ZdOdZd ZdOdZd Zd Zd Zd Zd ZdOd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- Z1d. Z2d/ Z3dOd0Z4d1 Z5dOd2Z6dOd3Z7dOd4Z8dOd5Z9d6 Z:d7 Z;dOd8Z<d9 Z=dOd:Z>d; Z?d< Z@d= ZAd> ZBd? ZCd@ ZDdA ZEdB ZFdC ZGdD ZHdE ZIdF ZJdG ZKdH ZLdI ZMdJ ZNdK ZOdL ZPdM ZQy)Q	JobViewer)job-k-octetsjob-namejob-originating-user-namejob-printer-uri	job-statetime-at-creationauth-info-requiredjob-preservedry   Nr.   c                 "   t         j                   j                  |        || _        || _        || _        || _        || _        t        j                         }d|v | _	        d|v | _
        i | _        i | _        g | _        i | _        t               | _        t               | _        i | _        d| _        i | _        i | _        i | _        d | _        i | _        i | _        t               | _        g | _        | j9                  g ddgdt:        j<                         t?        j@                  d	      }	|	jC                  d
t>        jD                  tG        d      d tG        d      | jH                  fdt>        jJ                  tG        d      d tG        d      | jL                  fdt>        jN                  tG        d      d tG        d      | jP                  fdt>        jR                  tG        d      d tG        d      | jT                  fdt>        jV                  tG        d      d tG        d      | jX                  fdt>        jZ                  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 | j`                  fd"t>        jb                  d d#tG        d$      | jd                  fg
       t?        jf                         | _4        | jh                  jk                  |	d%       | jh                  jm                  d&       | jh                  jo                          | jp                  js                  | jh                  ju                                t?        jv                         | _<        d'D ]  }
|
st?        jz                         }nc|	j}                  |
      }|j                  d(       |j                         }|
dk(  r,|| _A        t?        jv                         }|j                  |       |j                          | jx                  j                  |        d)D ]w  }
|	j}                  |
      }|j                  |
d"k(         |j                  |
d"k(         |j                         }|j                          | j                  j                  |d%       y d(d(tG        d*      | j                  fd+d(tG        d,      | j                  fd(d+tG        d-      | j                  fd(d+tG        d.      | j                  fd(d(tG        d/      | j                  ffD ]  \  }}}}|r|rt?        j                         }|r<|j                  d0t        j                  j                         |j                  d1d2       t?        j                  ||      }|j                  ||d        |j                  d+       | j                  j                  |        t?        j                         }t?        j                  tG        d3      |d45      }|j                  d+       | j                  j                  |       t?        j                  tG        d6            }t?        j                         }|j                  |d(       t?        j                         }|j                  d0t        j                  j                         |j                  d1d2       |j                  |d+       |j                  || j                  d        |j                  || j                  d        | j                  j                  |       t?        j                  t        t              | __        | j                  j                  dt>        j                  j                         | j                  j                  | j                         | j                  j                  d+       | j                  j                         | _f        | j                  j                  t>        j                  j                         | j                  j                  d7| j                         | j                  j                  d8| j                         | j                  j                  d9| j                         | jp                  j                  t               | jp                  j                          |rt        d: |      }|r|rtG        d;      z  }ntG        d<      }n|rd=z  }ntG        d>      }| jp                  j                  tG        d?      |z         |r| jp                  j                  |       d@ }t>        j                  j                         } ||t              | _v         ||dA      | _w        | j                  j                         | _y        | j                  j                  d       | j                  j                  | j                  dd| j                  j                         | j                  j                         dddBdBt        j                  j                   dC       | j                  r| j                  st?        j                         | _        | j                  j                  | j                         | j                  j                  dD| j                         | j                  j                  d9| j
                         | j                  j                  d(       |t        j                         }| j                          | 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| j0                         | j$                  j                  dK| j2                         | j$                  j                  dL| j4                         | j$                  j                  dM| j6                         | j$                  j                  dN| j8                         | j$                  j                  dO| j:                         | j$                  j                  dP| j<                         | j$                  j?                          d | _        |st%        j&                  |d+| j                  | j                  | j"                  Q      | _        | j@                  j                  dG| j*                         | j@                  j                  dH| j,                         | j@                  j?                          | j                  s| jp                  j                          t?        jB                         | _        | jD                  j                  tG        dR             | jD                  jG                  t>        jH                  jJ                         | jD                  jM                  dSdS       | jD                  j                  | jp                         | jD                  j                  dT| jN                         | jD                  js                  | jh                  ju                                t?        j@                  dU	      }|jC                  d"t>        jb                  d d#tG        d$      | jN                  fg       t?        jf                         | _        | jP                  jk                  |d%       | jP                  jm                  dV       | jP                  jo                          | jD                  js                  | jP                  ju                                t?        jR                         }| jD                  jU                  |       t?        jV                         }| jP                  j}                  dW      }|j                         }|j                  d+       |j                  |d       |j                  |d(d(d       t?        jX                         | _        |j                  | jZ                  d+d+d       y )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                 .   	 | j                  |t        d      }|S # t        j                  $ rf t	        d|z         t
        j                  j                  t
        j                  j                  ddt        t              }|j                  d       Y |S w xY w)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= M >>  2T9:"))--y/C/C/G/G)-q)YHQM s    A5B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__  sU    	  $'	"4,,,/"+{":&3{&B#	5#&5 %'"$%!$&!*,'!#(,%)+&+-("%%*
  668 !' 	 	0 ??1AB$$s//9t)*D,G,GIs//9t)*D,G,GIS22AgJ'($*C*CE 4 4a
mT*+T-I-IK*t*+T-I-IK!2!2AkND+,d.K.KMT1Z=$dC#T1_+=tT224!4+=)>d002#//4&')=)=?%' 	* "mm.//1A2F..	  	)),'')<)<)L)L)OP #	. 	0K ,,/)44kB$$e,..1*,-1D*"xx{H$$h/IIL!!(($//	02% 	+K &00+>F  +"89##[G%;<**-DIILLLr*	+ %$*G*GHqy$*A*ABq}d.I.IJq|T-G-GH&	4+B+BC	E	0)D)T6 $'')D!!;0C0C0G0GH!!="5''d3F%%tVT:  &MM''/%	0( ##&##Q'7%8$QGd###V,##Qx[1%%(4'##&;(;(;(?(?@="-4&!!4)B)BDI!!4)B)BDI##V,]]3,


%%q#,,*A*AB

+$$d+446 1 1 : :;y$*C*CD5#DD	F|T-H-HI%%t, 9>JI/*Y6)y(*!!1%A#BU#JKOO--v6		 )),"E40$-u6H$I! NN//2"  $"3"3"#Q"&"3"3"="="?"&"3"3">">"@"#Q"%s"+"6"6"?"?"%	' ;;t::!nn/DOOO++T->->?OO##Z1K1KLOO##\43I3IJOO''/ ;..#C  $'NN%	LLO	,,/C7E-1YYTYY37??D 	i9k4>>:k4>>:mT-=-=>2D4K4KL4d6O6OP0$2G2GHot/A/ABot/A/ABot/A/AB/1E1EF%oo#t37994999=JDO OO##[$..AOO##[$..AOO##&{{OO  #$'JJL!!!++Q/?-@A!!..s/A/A/G/GH!!223<!!33T__E!!)).*.*M*M	O!!1143F3F3V3V3YZ __3EF&&#//4&')L)LN) 	 !$ 0113ErJ00	 	++.!!1143H3H3X3X3[\xx{!!%%t,++.&&118<&&)t$a %2dA6r'   c                    | j                   j                          | j                  r| j                  j                          | j                  j	                          | j
                  j                         | j                  j                         fD ]2  }|D ]+  }t        |dd       dk7  s	 |j                          d|_        - 4 | j                  &t        j                  | j                         d | _        | j                  D ]  }|j!                           | j"                  r'| j$                  s| j&                  j)                  d       | j+                  d       y # t        j                  $ r Y w xY w)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:   ??OO##& 0077:1188;= 
	/A ! /L(D9TA$**-
 +/L'/
	/ ((4 = =>,0D)(( 	BJJM	 ;;t::OO''/		:!  ;;  s   )EE21E2c                     || _         y r)   )process_pending_events)r$   whethers     r%   r  zJobViewer.set_process_pending  s
    &-#r'   c                     | j                   s| j                  sH| j                  j                          d| j                  _        | j                   s| j                          y| j                  j                          y)NFT)r  r  r   r|  visibler  quit)r$   r   s     r%   rG  zJobViewer.on_delete_event  sS    ;;diiOO  #&+DOO#;;  IINNr'   c                     t        | j                  j                               D ]  }| j                  j                  d        i | _        | j
                  j                          y)Nr   T)ranger  get_n_pagesremove_pager&  r  r|  )r$   widgetr   pages       r%   r  z(JobViewer.job_attributes_on_delete_event  sQ    $--3356 	*DMM%%b)	*!!&&(r'   c                 D    t        j                  ||| j                        S r)   )errordialogsshow_IPP_Errorr   )r$   	exceptionmessages      r%   r  zJobViewer.show_IPP_Error  s    **IwPPr'   c                    t        | j                  dd       }|rd}| j                  r:|r| j                  j                          n0| j                  j	                          n|r| j                  j                         }| j                  j                         }| j                  j                         \  }}}}	|r?|j                  d       ||j                  d       | j                  j                          n~| j                  j                  d       nb| j                  j                          | j                  j                  d       | j                  j                         }||j                  d       | | j                  _        y )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&&$$'$$'OO..0..99;$(OO$@$@$C!aq++T2~00$7OO++.OO//7''*55u=..99;>,,e4&-+r'   c                     |j                         rd}nd}| j                  j                  |d       | j                  r| j                  j                  |d       y y )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   sR    &&(J(J
F??OO##zu#M r'   c                     t        j                          }d} j                  j                         D ]U  \  }}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      }nmt        d      |
z  }n^|dk  r.t	        |dz        }|dk(  rt        d      }n:t        d      |z  }n+d}t        j
                  dt        j                  |            }| j                  v s* j                  |   } j                  j                  |d|       X |r. j                  s" fd}t        j                  d|      }| _
        |s2 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                  x    t        j                          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  s.    !!$44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	  s   iil* #	2IC)A!T)12Gm"<.)A7]b>D*+d2A<'1Ezm,n-5++| 45DqykNm,t3//(8!9:EzkNn-5"'Kw0HIAdmm#}}S)

$$dAq1G#	2J t<< ((".GHA,-D),,""D$A$AB04- r'   c                     |j                          |j                          | j                  j                  |       |t        j
                  j                  k(  r6d| j                  vr'dd l}|j                  | j                        }|| _        y y y )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  st      ''/s''***t}}4#!-!1!143L3L!M&4# 5 +r'   c                     | ` y r)   )r	  )r$   r	  s     r%   r  zJobViewer.on_troubleshoot_quitN  s    r'   c                      j                  |||       | j                  vry  j                  } j                  j                  d       }|j	                  |d|       t        d|z         | j                  |<    j                  j                         }||\  }} j                  j                         dt        j                  j                  fk(  rI|t        j                  d      k(  r1 j                  j                  t        j                         d ddd        j                  s fd}	t!        j"                  d|	       y y )	NrN   r   zJob %d addedr{   Fr   c                  v    t        j                           j                          t        j                          yNFr  r#   s   r%   !start_updating_job_creation_timesz<JobViewer.add_job.<locals>.start_updating_job_creation_timesk  s*    !!$..1!!$r'   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: dii

zz  $'q#&NS()!c//2 LUC

--0Q58\\5L5L5N Na( ,,cllnd.3S#? ,, c#DE -r'   c                     | j                   j                          | j                  r| j                  j                          y y r)   )r  updater  r#   s    r%   update_monitorzJobViewer.update_monitors  s.    ??OO""% r'   c           	         | j                   t        |j                               z
  }|| j                  v r| j	                  |       |rzd }	 |6t        j                  | j                  | j                  | j                        }t        d|z         t        |      }|j                  ||      }|r|j!                  |       || j"                  |<   d}	 |j%                  dt
        j&                        }t)        |      }|t
        j*                  t
        j,                  fv rg d}	ddg}
|j%                  d	      }t/        j                  | j0                  | j                  | j                  | j                        }|j3                  ||

      }	 |d   }t7        |t              s|g}||d<   |j!                  |       |j                  ||	      }|j!                  |       |j%                  dt
        j&                        }t)        |      }	 |d= | j:                  j=                          t
        j*                  k(  xr |j%                  dd      dk(  }|rM| j?                  ||j%                  d      |j%                  d	      |j%                  dg       | j@                         d| _!        | jE                          y # t        $ r Y t        $ r Y #t
        j                  $ r Y y w xY w# t4        $ r t        d       ddg}Y qw xY w# t8        $ r Y 	t        $ r Y t
        j                  $ r Y )w xY w# t4        $ r Y 5w xY w)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  s6   ((3		+== $//!--c2E%!%tyy7;yy=A__"NJ Oa/0!H"33SJK 4 M U#		#!+	XX{D,C,CDFVAT&&(<(<==K.= hh 12''.2ii.2ii48OOE ..cEK / MB)./C)D& "#5t<*<)=&2DE./U#**CAG + IU#;0G0GHL	^$ 	  # $"3"33 2!XX'7@12 	  ##S$((L*A%)XX/@%A%)XX/CR%H%)[[2
 !"a   ! == @   B !3 4*4j)A&B   	 	}} 		  		su   A$J; B:L	 K* A8L	 L9 ;	K'K'K'&K'*LL	 LL	 		L6L6 L65L69	MMc                     || j                   vrw	 t        j                  d       t        }t               }d }|rd|v rt        j                  j                  |      \  }	}
|	dk(  r;t        j                  |      }|j                         \  }}}}}t        |      |d<   nIt        j                  j                  |
      \  }}
|d }n"t        j                  j                  |      \  }}|	|d}n4|j                  t        |j!                               t        |	      d       || j"                  v rd}d	t        |      i}|rd|v r||fD ]  }t               }|j%                         D ]  \  }}||i}|j                  |        t'               }|j)                         }t+        ||      }|j-                         }|ss|D cg c]  }d
 }}|j/                  d      }|d   j1                         j3                  d      ||<   |j/                  d      }|d   j5                         j3                         j7                         ||<    n t        d       |rB	 t9        j:                  | j<                  | j>                  | j@                  | jB                        }|ry|w	 jG                  tI        d             |jK                  ||       |jM                          | jO                          t        d|z         | j"                  jQ                  |       y |ro|rltW        jX                  t[        j\                               d   } |j_                         }|j                  |       t        |       |d<   | ja                  ||       y y y y #  t        d       Y y xY wc c}w # tD        $ r d}Y w xY w# t        jR                  $ r jM                          tU                Y y  jM                          tU                Y xY w)Nz1.9.37z;Authentication required but authenticateJob() not availabler(  smb)r   r   F)r   r   r    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   r  indrT   r'  s!                                    r%   r7  zJobViewer.get_authentication  s    d,,,h' $J"&&Ij,>>!'!7!7!DU? --Z8C'*||%UFE847K'1)/)?)?)F&Z!)!%)/)@)@*)M>V^!&J'..C<Q=@&\1K L d---"
 #(k): <j,>>&79L%M EM FE$1$7$7$: 4S(+c{l34 #-,K)557G!+GU!;J&002E1C$DAR$D	$D066
C).q)@)@)B)F)Fv)N	#066
C).q)<)<)>)B)B)D)K)K)M	#%E(  CD' ++T__26))26))8<IA i3)&&*>(?@%%sI6$$'''* Ds JK++//5 "k<<6q9 3 8 8 :$$%67(+Xf%--sMB '2!{ - > ?f %E  $ '!&J' }} $$'%()$$'%(s7   N 	NAN A5N1 NN.-N.1-O= O=c           	         | j                   |   }	 |d   }t        j                  |t
              }||_        ||_        |j                  t        j                  j                         |D cg c]  }d }}t        j                  t        j                               d   }d|v r(	 |j!                  d      }	|||	<   |j#                  |       d}
|D ]"  }||
   dk(  r|j'                  |        n|
dz  }
$ |j)                  t+        d	      |j-                  d
t+        d            |fz         || j.                  |<   |j1                  d| j2                         |j1                  d| j4                         ||_        |j9                          |j;                  d       |j=                          y # t        $ r t        d       ddg}Y w xY wc c}w #  t%                Y xY w)Nr   r&  r'  r(  )r>  allow_rememberrA  r   r{   z;Authentication required for printing document `%s' (job %d)r   r  r   r   T)r$  rW   r   r3  
AuthDialogrD  rf  r>  r  r   r  CENTERrU  rV  rW  rX  rO  set_auth_inforT  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  rf  r  r>  r   r  r_  r'  rl  rO  fields               r%   rY  z"JobViewer.display_auth_info_dialogE  s   yy~	:!%&:!;
 $$9K5?A,$6!S//667 "44AR4	4<<.q1++%(..
;!)	#$$i0
 ' 	E2%''/QJE		 	1 ? @ HHZ9>!! 	" '-s#
D$B$BC(D(DEt$O  	: + ,",j!9	: 5%!$s#   F. ,	G&'G .G
	G
G!c                 X    | j                  |t        j                  j                         y r)   )rt  r   r   CANCELr   s      r%   ru  z!JobViewer.auth_info_dialog_deleter  s    &&0@0@0G0GHr'   c                    |j                   }| j                  |= |t        j                  j                  k7  r|j                          y |j                         }	 t        j                  | j                  | j                  | j                  | j                        }d}|j                  t!        d             	 |j#                  ||       |j%                         }| j&                  j)                  |       | j+                          |j5                          |r	 t7        |dd       }	t7        |dd       }
|	|
	 |
j9                  d      }||   |	d<   |	j=                  d      d	|	j=                  d
      d|	j=                  d      d}|
j9                  d      }||   }t?               }|	jA                         D ]  \  }}||i}|jC                  |        tE        |||      }t        dtF        |fz         |j                          y # t        $ r t        d       Y y w xY w# t,        j.                  $ r,}|j0                  \  }}| j3                  ||       Y d }~Vd }~ww xY w# t:        $ r Y w xY w#  tI                Y xY w)Nr#  z+Error connecting to CUPS for authenticationFrB  rf  r>  r'  r   @r   z (r   )r(  zkeyring: created id %d for %s)%rv  r-  r   r   OKrv   get_auth_infor3  rQ   r   r   r   r   rR   r   r   r   rS  get_remember_passwordr1  r  r!  rP   rr   r   r  r   r  rO  
IndexErrorr/  rE  r6   r   r<   idrT  )r$   r   r   r  r_  rT   rememberr   r   rf  r>  rl  rA   rB   r7   rg  rh  ri  password_objs                      r%   rt  z#JobViewer.auth_info_dialog_responseu  sr   ""5)s''***NN((+		##T__*.))*.))04AA 	A234	'ui0336H##''/"
 	
% ')8)-!/ &-f.B.2&4" !,1C1O066
C09#f- ,9+<+<f+E+8+<+<h+G+8+<+<j+IKD -22J?C&s^F FE$1$7$7$: 4S(+c{l34 $11517$9L  ?2t* LM 	a  	EF	 }} 	'VVFQA&&	'$ &  %!$s]   AH 7AH  I2 6I" B&I2 HH I3!II"	I/+I2 .I//I2 2J c                 8   | j                   sy | j                  rd| _        y t        | j                  j	                               }|t        | j
                  j	                               z  }| j                  j                         D ]  \  }}t        |dd       dk7  s|dz  } t        | j                        }t        d|z         t        d|z         t        d| j                  z         | j                  ry | j                  j                  d       | j                  j                  |dkD  xs || j                  kD         | j                   rLt#        j$                         r7t#        j&                          | j                   rt#        j$                         r5y y y y )	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  sl   {{"" ',D# $"@"@"E"E"HIc4#C#C#H#H#KLL$($C$C$I$I$K 	( FLh5="a'"	( ((),/AABNX-..1J1JJK&&
 	''/##%7!%; &J%-0I0I%I	K ))c.@.@.C! ))c.@.@.C).C)r'   c                     t        j                  t         j                  j                        }| j	                  ||d       y r   )r   Event	EventTypeNOTHINGshow_treeview_popup_menur$   r   r   s      r%   ry  z JobViewer.on_treeview_popup_menu  s,    		3==001%%x:r'   c                 ^    |j                   dk(  r| j                  |||j                          y y )N   )buttonr  r  s      r%   rx  z*JobViewer.on_treeview_button_release_event  s)    <<1))8UELLI r'   c           	      	   || j                   j                         }|j                         \  }}| j                  j	                  d      }| j                  j	                  d      }| j                  j	                  d      }| j                  j	                  d      }| j                  j	                  d      }| j                  j	                  d      }	| j                  j	                  d      }
| j                  j	                  d      }| j                  j	                  d	      }t        |      d
k(  r"||||||	||
|f	D ]  }|j                  d        y d}d}d}d}d}d}| j                  j                         }t               }g | _
        |D ]?  }| j                  j                  |      }| j                  j                  |d
      }| j                  j                  |       | j                  |   }d|v rX|d   }|t         j"                  k\  rd}|t         j$                  k7  rd}|t         j&                  k7  rd}|j)                  dd      sd}|j)                  dt         j"                        t         j&                  k7  s|j)                  dd      dk7  rd}|j)                  dd       }|s	 | j                  j+                  |      }|||<   B t        |j/                               dk(  r,	 |j1                  t3        |j/                               d
          t        |      d
kD  rt5        j6                         }t3        |      }|j9                          |D ]  }	 | j                  j;                  |      }t5        j<                  |      }|j                  |d u       |j?                          | jA                  || jB                  |       |j                  |        | jD                  jG                  |       d}|j                  |       |j                  |        |j                  |       |j                  |       |j                  |       |	j                  |       |j                  |       |
j                  |       |j                  d       y # t,        $ r |}Y w xY w# t,        $ r Y w xY w# t,        $ r d }Y Qw xY w)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   rE  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  s   336I%779$$//?$$//?""--{;%%00.A%%00.A&&11?C**557JK((335FG
""--{;>Q!64'8z; -$$e,-   !%//AADv 	,D::&&-DJJ(($2EKKu%))E"Cc!$---',$,,,%*N)))(-%7(-%..0373D3DE)626JJ).&'',d3C""44;;SAG ),W%9	,< !!$%*%%tL,=,=,@'A!'DE !#HHKM!>2N") 000FFPC <<w7&&48 **H,0,E,E,/1 $$h/0 ""..>!N-.!112>*/0/001N+""#9:  &M   "!G"     Cs6   ,R,+R( R8R%$R%(	R54R58SSc                 &    | j                  |       y r)   )r9  )r$   rs  s     r%   rw  zJobViewer.on_selection_changed@  s    +r'   c           	      `    | j                   j                  d d d d ||j                                y r)   )rP  popupget_time)r$   r   r   event_buttons       r%   r  z"JobViewer.show_treeview_popup_menuC  s*    ##T4t\%*^^%6	8r'   c                 D    | j                   j                  d d d d ||       y r)   )r   r  )r$   r  r  r  s       r%   r  zJobViewer.on_icon_popupmenuH  s     !!''tT4Nr'   c                 t    t        | j                  j                               | _        | j	                          y r)   )r   r$  rb   r*  r  r$   r  s     r%   on_icon_hide_activatezJobViewer.on_icon_hide_activateK  s&    $'):$;!&&)r'   c                     i }t         j                  j                         D ]  \  }}|dk(  r|||<    t        j                  dgd|      }t        j                  d| j                  |       y )NSYSTEM_CONFIG_PRINTER_UIzsystem-config-printerT)	close_fdsenv
   )rW  environr6   
subprocessPopenr   r  poll_subprocess)r$   r  r  rA   valueps         r%   #on_icon_configure_printers_activatez-JobViewer.on_icon_configure_printers_activateO  sq    ::++. 	KD%11CI	  79(,#7  "d&:&:A>r'   c                 *    |j                         }|d u S r)   )poll)r$   process
returncodes      r%   r  zJobViewer.poll_subprocessY  s    \\_
T!!r'   c                 r    | j                          | j                  r| j                  j                          y y r)   )r  r  r  r  s     r%   on_icon_quit_activatezJobViewer.on_icon_quit_activate]  s%    99IINN r'   c                 &    | j                  d       y r  on_job_cancel_activate2r  s     r%   r9  z JobViewer.on_job_cancel_activateb  s    $$U+r'   c                 &    | j                  d       y )NTr  r  s     r%   r;  z JobViewer.on_job_delete_activatee  s    $$T*r'   c                 H   | j                   rt        | j                  | j                  | j                  | j
                  | j                   |      }| j                  j                  |       |j                  d| j                         |j                  d| j                         y y )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  sr    ;;$dootyy$))&*oot{{IOBHHOOR JJ
D$?$?@JJT%=%=> r'   c                     |j                          | j                  j                  |      }| j                  |= | j                          y r)   )rv   r2  rO  r!  )r$   canceljobsoperationis      r%   r  z JobViewer.on_canceljobs_finishedp  s8    ##&HHNN/0HHQKr'   c                     | j                          t        |      t        j                  k(  rH|j                  \  }}|t        j
                  k7  r%|t        j                  k7  r| j                  ||       y |r)   )r!  r[   rP   rr   r   r   r   r  )r$   r  r  r   r   r   s         r%   r  zJobViewer.on_canceljobs_errorv  s_    :&XXFQT***T'''##Q*	r'   c                 t   	 t        j                  | j                  | j                  | j                  | j
                        }| j                  D ]?  }|j                  t        d             	 |j                  |d       |j%                          A ~| j#                          y # t        $ r Y y w xY w# t        j                  $ rr}|j                  \  }}|t        j                  k7  r%|t        j                  k7  r| j!                  ||       | j#                          |j%                          Y d }~ y d }~ww xY w)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  s   	##T__*.))*.))04AA [[ 	 E- 01	!!5,7 	  %  		 == A...+++''A.##&  #+   AB# -B2#	B/.B/2D7A'D22D7c                 t   	 t        j                  | j                  | j                  | j                  | j
                        }| j                  D ]?  }|j                  t        d             	 |j                  |d       |j%                          A ~| j#                          y # t        $ r Y y w xY w# t        j                  $ rr}|j                  \  }}|t        j                  k7  r%|t        j                  k7  r| j!                  ||       | j#                          |j%                          Y d }~ y d }~ww xY w)Nr#  zreleasing jobzno-holdr  r  s         r%   r?  z!JobViewer.on_job_release_activate  s   	##T__*.))*.))04AA [[ 	 E/ 23	!!5)4 	  %  		 == A...+++''A.##&  #r  c                    	 t        j                  | j                  | j                  | j                  | j
                        }| j                  D ]  }|j                  |        ~| j                          y # t        j                  $ r;}|j                  \  }}| j                  ||       | j                          Y d }~y d }~wt        $ r Y y w xY w)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  %e$% 	 }} 	VVFQA&" 		s   A$A7 7C
1C  CCc                    	 t        j                  | j                  | j                  | j                  | j
                        }| j                  D ]b  }	 |j                  |      }|d   }	 |d   }t        d|dz         D ]/  }|j                  |||      }|j                  d      }	|j                  d      }
|j                  d	d
      }|
ut        d      t        |      z   }
|dk(  r|
dz   }
nS|j                  d      dk7  r|
|j!                  dd
      z   }
n)|j                  d      dk7  r|
|j!                  dd      z   }
|	_t#        j$                  t        d      | j                  t"        j&                  j(                        }|j+                  t"        j,                  t"        j.                  j0                  t"        j2                  t"        j.                  j4                         |j7                  |
       |j9                  d       |j;                         }|t"        j.                  j4                  k(  r(|j=                         }	 t?        j@                  |	|       n|t"        j.                  j0                  k(  r	 |jI                          tK        jL                  |	       $tG        d         y  e ~| jW                          y # t        $ r Y y w xY w# t        $ r |j                  dd      }Y w xY w# tB        t>        jD                  f$ r tG        d|z          Y w xY w# tN        jP                  $ r<}|jR                  \  }}| jU                  ||       | jW                          Y d }~ y d }~ww xY w)Nr#  r   znumber-of-documentszdocument-countr   r{   filezdocument-namezdocument-formatrA  	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   rW  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 [[ 8	E7((/!"34E%*+@%AN (-Qq0@'A )O]];OH'||F3H#<<8D%\\*;R@F | ~c/.BB!%==#'%<D#[[);<B#'&..9JB*O#OD#[[8B>#'&..*M#MD+!$!6!6an:>//363H3H3M3M"O **$'$4$4c6F6F6M6M$'NNC4D4D4G4GI //5<<TB#)::<#s'7'7':'::+1+>+>+@LP &, G &)9)9)@)@@ (		(+"#JKS)8	t }  		   E%*YY0@!%DNEH %,V\\#: P *+A,+N OP == A##Q*##&	sz   AK L%+K0GL%K8AL%1L%	KKK51L%4K55L%8'L"L%!L""L%%M481M//M4c                     t        j                  d      dfd	}|j                  d|      |j                  d|      fS )Nr{   c                 X    j                  d      rt        j                  | g  y y r  )acquirer   idle_add)r  r   r   callback	only_onces     r%   handle_eventz5JobViewer._submenu_connect_hack.<locals>.handle_event  s+      %(  (D848 )r'   zbutton-press-eventr  r)   )	threading	Semaphorer   )r$   r  r  r   r  r  s     `` @r%   r  zJobViewer._submenu_connect_hack  sA    ''+		9 2LAj,79 	9r'   c                    	 t        j                  | j                  | j                  | j                  | j
                        }| j                  D ]  }|j                  ||        ~| j                          y # t        j                  $ r;}|j                  \  }}| j                  ||       | j                          Y d }~y d }~wt        $ r Y y w xY w)Nr#  )rv  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  J		%	IJ 	 }} 	VVFQA&" 		s   A&A9 9C1CCCc                    	 t        j                  | j                  | j                  | j                        }dg}ddg}| j                  D ]c  }|j                  ||      }|j                  d      }|j                  ||      }	 |d   }	| j                  ||j                  d      ||	d       e y # t
        $ r Y yw xY w# t        $ r t        d       d	d
g}	Y Pw xY w)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,  s
   	dii&*ii,0OO=A ((
*L9
[[ 	DE''>H ( JF**/0C++3BL , NF>%+,@%A" ##UFJJ,E%(*<dD	D  		  > / 0&0*%=">s#   6B2 C2	B>=B>CCc                     | j                   j                          | j                  r| j                  j                          | j                          y r)   )r  r  r  r  )r$   
toolbuttons     r%   on_refresh_clickedzJobViewer.on_refresh_clickedH  s5    ??OO##&&&)r'   c                     	 t        j                  | j                  | j                  | j                        }| j                  D ]  }|| j                  vst        j                         }t        j                  t        |            }| j                  j                  ||      }t        j                         }|j                  |       t        j                          }|j#                  dt%        d      |d       t        j                          }|j#                  dt%        d      |d       t        j&                  t        t              }	|j)                  |	       |j+                         j-                  t        j.                  j0                         |	j3                  dt        j4                  j6                         |	|f| j                  |<   | j9                  ||	        | j:                  j=                          y
# t
        $ r Y yw xY w)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   	dii&*ii,0OO=A [[ 	BEDOO+!$!3!3!5		E
3!]]66~uM
 #""=1++.;;Aqy<@q < J++.;;Aqz<@q < J ]]34
''
3++-66s7H7H7M7MN--q#,,2H2HI*4j)A&115q1A'	B* 	!!**-1  		s   6H 	HHc                 (   ||}n7	 t        j                  | j                  | j                  | j                        }|| j                  v rn| j                  |   \  }}	 |j                  |      }|j                          |j                         D ]&  \  }}|dv r|j                  |t        |      g       ( yy# t
        $ r Y yw xY w# t        $ r Y yt         j                  $ r+ | j                  j                  |       | j                  |= Y yw xY w)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  s   AOO$))*.))04A DOO#!%!7Z	**51 ${{} 6e<<!!4U"456 $    " ==  ))$/OOE*s)   6B: C	 :	CC		D:DDc                 l    |j                  dt        j                        }|t        j                  k\  ryy)Nr   FT)r/  rP   r  )r$   jobdatastates      r%   job_is_activezJobViewer.job_is_active  s,    [$*?*?@D)))r'   c                    d }|o| j                   c| j                   j                         }d}| j                  j                  |g       D ]  }|| j                   k(  s| j                   } n |d | _         |.| j                  j                  |g       D ]  }||}||kD  s|} ||j	                         }|t
        j                  kD  rt
        j                  |   }|j                         }	 t        j                  j                         }|j                  |dd      }	|	j                  ||j                         dz  |j                         dz  |	j                         dz  |	j                         dz  |j                         dz  |j                         dz  ddt         j"                  j$                  d       |S |S # t&        j(                  $ r t+        d|z         Y |S w xY w)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   r*  foundr  levelr  r  emblems
             r%   add_state_reason_emblemz!JobViewer.add_state_reason_emblem  s   ?t00<''336GE4488'2F T...#'#4#4L #$(!4488'2F *'#)Ll*#)L	* # **-E{)))"--e4?MM558E"__dB:F$$f&,&6&6&9A&=&,&7&7&:Q&>&,&6&6&9A&=&,&7&7&:Q&>&,&6&6&9A&=&,&7&7&:Q&>&)3&/&:&:&C&CSJ v ~~ ? 6 =>?s   .C
F< <!G! G!c                    | j                   sy |&t        | j                  j                               dkD  }|rp| j                  }| j                  j                         D ]F  \  }}|j                  dt        j                        }|t        j                  k(  s:| j                  } n n| j                  }	 | j                  |      }|S #  t                Y |S xY w)Nr   r   )r  r   r$  rb   r  r6   r/  rP   r  r0  r  r  r2  rT  )r$   	have_jobsr  r  r$  r;  s         r%   get_icon_pixbufzJobViewer.get_icon_pixbuf  s    {{TYY^^./!3I^^F"&))//"4 w k43G3GHT444!66F	 &&F	!116:F 	! s   5C Cc                     | j                   sy |Et        | j                        }|dk(  rt        d      }n|dk(  rt        d      }nt        d      |z  }| j                  j                  |       y )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  sd    {{?DIIH1}12Q/012X=**G4r'   c                 v   t               }| j                  j                         D ]%  \  }}t        |      dkD  s|j	                  |       ' t        d|z         t               }t        |      rQt               }| j                  D ]*  }| j                  |   d   }||v s|j	                  |       , t        d|z         g }|D ]   }|j                  | j                  |          " d | _	        t        |      dkD  r)|d   }|D ]
  }	|	|kD  s	|	} || _	        t        d|z         t        j                          | j                  j                  d       | j                  :| j                  j                         \  }
}| j                  j                  d|       nd }d}d}d}| j                  D ]G  }	 | j                  |   d   }|t"        j$                  k(  r|dz   }/|t"        j&                  k(  sC|dz   }I |dkD  s|dkD  r,t)        d	      ||fz  }| j                  j                  d|       | j*                  r[| j,                  sO| j/                  |
      }| j0                  j3                  |       | j5                          | j7                  |       t        j8                          y # t         $ r Y w xY w)Nr   zUpset printers: %sjob-printer-namezMy upset printers: %szWorst reason: %srA  r   r{   zprocessing / pending:   %d / %dr4  )r8  )rg   r)  r6   r   r  r   r'  r$  r\   r*  r   r  r   popget_descriptionpushrW   rP   r0  r  r   r  r#  r5  r  r  r  r9  r  )r$   r4  upset_printersr   reasonsmy_upset_printersr  
my_reasonsr*  r  r|   r8  status_message
processingpending	job_stater  s                    r%   update_statuszJobViewer.update_status  s    $ : : @ @ C 	-GWG}q ""G,	- 	(>9:E #)) 4))E*+=>n,%))73	4
 /2CCD
( 	DGt99'BC	D !
a%a=L$ *L(#)L* !-D*\9:A(#00@@CUGNNG,GNJG)) * $		% 0 =I  7 77!+aJ$"6"66%kG* aWq[!"#D!EU\H]!]##A~6;;t::))Y)?FOO++V4**-'''9!   s   3J++	J87J8c                     |j                         }|t        j                  k  ry g d}|j                         |v ry | j	                  |       y )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)r,  r   WARNING
get_reasonnotify_printer_state_reason)r$   r  r0  	blacklists       r%   (notify_printer_state_reason_if_importantz2JobViewer.notify_printer_state_reason_if_important(  sL      #;&&&	8 9,((&1r'   c                 .   |j                         }|| j                  v rt        dt        |      z         y |j	                         }|t
        j                  k(  s|j                         dk(  rt        j                  j                  }nt        j                  j                  }|j                         \  }}t        j                  j                  ||d      }d|_        |j!                  |       | j"                  r|j%                  t        j&                         |j)                  d| j*                         || j                  |j                         <   | j-                          	 |j/                          y # t0        j2                  $ r t5                Y y w xY w)Nz Already sent notification for %srK  r   Tr  )	get_tupler,  r   r   r,  r   ERRORrM  r   UrgencyNORMALLOWr>  Notificationr   user_notifiedset_urgencyr"  set_timeoutEXPIRES_NEVERr   #on_state_reason_notification_closedr  rW  r   r  rT  )r$   r  tupler0  urgencyr|   r   r  s           r%   rN  z%JobViewer.notify_printer_state_reasonO  sG     #D333:T6]JK  #[&&& $::nn++Gnn((G..1**..tYG#  '*""$$f&:&:;h"FF	H?K''(8(8(;<&&)	! ~~ 	! 	!s   #E4 4FFc                 `    t        dt        |      z         d|_        | j                          y )NzNotification %s closedT)r   r   r  r  )r$   r  r  s      r%   r\  z-JobViewer.on_state_reason_notification_closedk  s,    ,t\/BBC"&&)r'   c                    | j                   j                  |i       }|j                  dt        d            }|j                  d      }||j                  d      }|idg}t        j                  | j
                  | j                  | j                  | j                        }	 |j                  ||      }|j                  d      }|'t        j                  j                  |      \  }	}
|	dvry |j                  dt        d            }t        j                   j#                  t        d	      t        d
      ||fz  d      }|j%                  t        j&                  j(                         |j+                  d| j,                         ||_        || j0                  |<   | j3                          	 |j5                          y # t        j                  $ r Y y w xY w# t6        j8                  $ r t;                Y y w xY w)Nr   r  r   r%  r#  rn   )socketipphttpr@  r;  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   rF  rG  rH  r   rW  r   rY  rT  rV  r   $on_completed_job_notification_closedr  r0  r  rW  r   r  rT  )r$   r  r  r  r[  rZ  r=  rT   r7   r`  ra  r   r  s                r%   notify_completed_jobzJobViewer.notify_completed_jobq  s   iimmUB'77J)5gg01" ,/J!&''.2ii.2ii48OOE22IO 3 QE
 #YY5
%!'!7!7!D!AA''-q|<**..2D0E./ 1H /I/7/6/8/8 /89 	  &.."4"45h"GG	I"2>((/&&)	! 1 }} 2 ~~ 	! 	!s$   #G  /G  GGG98G9c                 V    |j                   }| j                  |= | j                          y r)   )r  r0  r  )r$   r  r  r  s       r%   rd  z.JobViewer.on_completed_job_notification_closed  s'    "",,U3&&)r'   c                     | j                   j                          i | _        t               | _        i | _        t               | _        y r)   )rl  r"  r$  rg   r'  r%  rI   r  )r$   mons     r%   r  zJobViewer.on_refresh  s5    

	5!0!3r'   c                 j   |j                  dd      }	 | j                  j                  |      }| j                  r|| j                  vry ||d<   || j
                  vr| j                  ||       n]|| j                  k(  rN|j                         D ];  \  }}	|| j                  |   vs|	| j                  |   |<   t        d|d|	d       = || j
                  vry | j                  |      r| j                  j                  |       n)|| j                  v r| j                  j                  |       | j                  d       | j                   rR| j                  |      sy | j"                  j                  |g       D ]   }
|
j$                  r| j'                  |
       " y y # t        $ r |}Y w xY w)	Nr   rA  r;  zAdd =z	 (my job)Tr<  )r/  r  re   rW   r  r%  r  r  r6   r$  r   r&  r'  r  r
  rH  r  r)  rX  rP  )r$   rh  r  	eventnamer   r$  r   r   attrr  r  s              r%   r  zJobViewer.job_added  s   kk,b1	,,33S9G 7$2E2E#E&-"# %LL%)DOO#&}}/ Fetyy//-2DIIe$T*e DEF %w'  %(d&&&##U+d+;;%%w/4488'2F K++AA6JK	 ;  	G	s   F# #F21F2c                 
   |j                  dd      }	 | j                  j                  |      }| j                  r|| j                  vry ||d<   | j                  |      r| j                  j                  |       n)|| j                  v r| j                  j                  |       | j                  ||       | j                          || j                  vry | j                  |   }| j                  rk|dk(  s|dk(  ra|d   t        j                  k(  rK|d   }t        |      t         k7  r|g}d}	|D ]  }
|
j#                  d	      sd
}	 n |	s| j%                  |       | j                  r|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   }|j1                  d      dk7  rt3        d      ||fz  }n`|j1                  d      dk7  rt3        d      ||fz  }n;|j1                  d      dk7  s|t        j&                  k7  rd}nt3        d      |||fz  }|rt5        d       | j7                  d d
       t9        j:                  t3        d      | j<                        }|j?                  t3        d      t8        j@                  jB                  t8        jD                  t8        j@                  jF                         |jI                  t8        j@                  jF                         |jK                  d       |jM                  d       |jO                  tP               t8        jR                  jU                  dd      }|jK                  d       t9        jV                         }|jY                  t8        jZ                  t8        j\                  j^                         |ja                  |ddd       t8        jb                  jU                  dd      }dt3        d      z   d z   te        jf                        z   }	 |d!   t        jh                  k(  r|d"   }|d#z  }|t3        d$      |z  z  }t9        jj                  |%      }|jm                  d
       |jo                  d
       |jq                  dd       |ja                  |ddd       |ja                  |ddd       |jr                  ja                  |ddd       |ju                  d&| jv                  |       | j*                  j                  |       |jy                          y y y y y y # t        $ r |}Y =w xY w# t        $ r Y w xY w)'Nr   rA  r;  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  rH  r$  r  rP   IPP_JOB_COMPLETEDr[   r:   
startswithre  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$   rh  r  rk  r   r$  r   r   rA  canceledr  may_be_problemr;  notify_textr  r  r   r   r   r   markuprA   r   s                          r%   r  zJobViewer.job_event  s<   kk,b1	,,33S9G 7$2E2E#E&-"#w'  %(d&&&##U+( 		!))E" ;;I8&*==";/43I3II/0GW~%")H! $$n5#H
 ))51 KK-'..K T%9%9%)%9%9%; ;111 "N[)F$1114,,,)*.BB!&. $M2":.##%56"<  "<  = (%0 1G !%%72= !, -08%/@AG!&&72= 4 44%*N  ! "3  4 (%= >G ./**DT*B1]+;37??D""AkNC4D4D4G4G$'LL#2B2B2E2EG++S-=-=-@-@A''+$$e,$$d+xx||UB/%%q)		$$c&<&<&)ll&9&9;ua8xx||UB/>M*+-:;"//734_-1I1II$^4#1 &6 $79=$> ?
 		/$$d+##T*##Q*ua8ueQ7&&eUA>
 $ @ @%I((,,e4"S m 2; / Y  	G	F   s#   U 1U0 U-,U-0	U<;U<c                 P   | j                   rv|dk(  s|dk(  rl|d   t        j                  k(  rV|d   }t        |       t	        |      t
        k7  r|g}d}|D ]  }|j                  d      sd} n |s| j                  |       || j                  v rB| j                  j                  | j                  |          | j                  |= | j                  |= || j                  v r| j                  j                  |       || j                  v r| j                  |= | j                          y )Nrn  ro  r   rp  Frq  T)r  rP   rt  r   r[   r:   ru  re  r%  rl  r
  r$  r'  r&  rH  )r$   rh  r  rk  r   rA  r{  r  s           r%   r  zJobViewer.job_removedo  s   ;;I8&*==";/43I3II/0G W~%")H! $$n5#H
 ))51DMM!JJt}}U34e$		% D$$$##U+DOO#&r'   c                    |j                         \  }}|j                         }	 | j                  |   }d|_        |j                  |       | j                          | j                  j                          | j                  sy | j                  j                         D ]2  \  }}| j                  |      s|d   |k(  s!| j                  |        y  y # t        $ r g }|| j                  |<   Y w xY w)NFr;  )r>  r+  r)  rW   rX  r]   rH  r   r6  r  r$  r6   r&  rP  )	r$   rh  r  r|   r   r   r  r  r  s	            r%   r  zJobViewer.state_reason_added  s    ..1$$'	4**73A
  %	&  #{{ + 	IC%%t,&'72==vF	  	4A23D&&w/	4s   C C0/C0c                 P   |j                         }	 | j                  |   }	 |j	                  |      }||= | j                          | j                  j                          | j                  sy |j                         }	 | j                  |   }t        |dd       dk7  r	 |j                          | j                  |= | j!                          y # t        $ r t        d       Y y w xY w# t
        $ r t        d       Y y w xY w# t        j                  $ r Y gw xY w# t        $ r Y y w xY w)NzPrinter not foundzReason not foundr  T)r+  r)  rW   r   rO  r  rH  r   r6  r  rR  r,  r  r   r   r  r  )r$   rh  r  r   rA  r  r]  r  s           r%   r  zJobViewer.state_reason_removed  s-   $$'	009G
	v&A
 AJ  #{{  #	::5ALh5= &&) //6**-=  	+,	  	*+	$ {{    		sX   C C& >D D  .D C#"C#&C=<C= DD DD 	D%$D%c                 @    | j                   sy | j                  |       y r)   )r  rN  )r$   rh  r  s      r%   r  zJobViewer.still_connecting  s    {{((&1r'   c                 f   | j                   sy 	 | j                  |   }d }|D ]  }|j                         dk(  s|} n |j                         }n[t	        d       d }| j                  j                         D ]#  \  }}}||k(  s|dk(  st	        d       |||f} n |t	        d       y 	 | j                  |   }	t        |	dd       dk7  r	 |	j                          d|	_        y y # t        $ r t	        d       Y w xY w# t        $ r t	        d       Y y w xY w# t        j                  $ r Y Rw xY w)	NrK  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)  rM  rW   r   rR  r,  rb   r  r   r   r  r  )
r$   rh  r   rA  r  rs   r]  r0  r  r  s
             r%   r  zJobViewer.now_connected  sr   {{	D009GF <<?&<<F $$'E=>E 66;;> <A)?$? ?@"AqME } A B	::5AL
 L(D1T9""% #'L :7  	DBC	D.  	9:	 ;; s:   )C& C& -D  D &C=<C= DDD0/D0c                 :    | j                   j                  |       y r)   )r  rS   r$   rh  r   s      r%   r  zJobViewer.printer_added	  s    **G4r'   c                 <    | j                   j                  ||       y r)   )r  r`   )r$   rh  r   rk  r   s        r%   r  zJobViewer.printer_event	  s    00'5Ar'   c                 :    | j                   j                  |       y r)   )r  rc   r  s      r%   r  zJobViewer.printer_removed	  s    --w7r'   c           	      Z    |j                  dt        |j                  |d                   y )Nr   r   )ra  rk  r  )r$   r  r  r  r  r  s         r%   r[  z"JobViewer._set_job_job_number_text	  s"    &#ua'@"ABr'   c           	          |j                  |d      }	 | j                  |   }|j                  d|j	                  dt        d                   y # t        $ r Y y w xY w)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"C 	&#''+F+,Y<#9 	:  		   A 	AAc           	          |j                  |d      }	 | j                  |   }|j                  d|j	                  dt        d                   y # t        $ r Y y w xY w)Nr   r   r   r  r  r  s           r%   r]  z JobViewer._set_job_document_text	  sZ    q)	))E"C 	&#''*a	l"CD  		r  c                     |j                  |d      }	 | j                  |   j                  d      }|dk(  rdt	        d      z   }nd}|j                  d| j                  |   d   |z          y # t        $ r Y y w xY w)	Nr   rp  zprinter-stopped - disabledrA  r   r;  )r  r$  r/  rW   r   ra  )	r$   r  r  r  r  r  r  rA  r  s	            r%   r^  zJobViewer._set_job_printer_text%	  s    q)	ii&**+>?G ''Qz]*FF&$))E"23E"Fv"MN  		s   A. .	A:9A:c                     |j                  |d      }	 | j                  |   }t        d      }d|v rt	        |d         dz   }|j                  d|       y # t        $ r Y y w xY w)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	  sp    q)	))E"C |S N+,s2D&$'  		s   A 	A"!A"c                 :   	 | j                   |   }|j                  dt        j                        }t        |      }|t        j                  k(  xr |j                  dd      dk(  }d }|rt        d      }n|t        j                  k(  r9t        d      }|j                  d      }|	 |j                  d      }|dk7  rt        j                         }	t        |d |       }
||d	z   d  j                  d      }|dk7  r+||d	z   z  }t        ||d	z   |       }t        ||d	z   d        }nt        ||d	z   d        }d
}|	j                  }|
|	j                  k  s<|
|	j                  k(  r2||	j                  k  s||	j                  k(  r||	j                  k  r|d	z  }|	j                  |	j                   ||
||d
d
df	}t"        j$                  j                  d      }dt"        j$                  d<   t        j&                  |      }|t"        j$                  d= n|t"        j$                  d<   t        j(                  |      }t        d      t        j*                  d|      z  }|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(  rt        d      }n	 t        j.                  t        d      t        j                  t        d      t        j0                  t        d      t        j2                  t        d      t        j4                  t        d      t        j6                  t        d       i|   }|t        d!      }|S # t        $ r Y y w xY w# t,        $ r Y ,w xY w# t        $ r Y 9w xY w)"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_monrW  r  mktimer  r  r5  r  r2  r  IPP_JOB_ABORTEDrt  )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>	  sm   	99S>D ;(?(?@L$"3"33 2!XX'7@12 	 /0E$###fIEHH./E $"ZZ-F|"kkn %.1!&vz{!3!8!8#!>!R<"fqj0F!$eFQJv&>!?B!$eFQJK&8!9B!$eFQJK&8!9B!"B!kk,3;;. 3::o!SZZ/BO1HC #SZZ "BAq" 6!#!5+0

4(%)[[$%7
!> "

4 0/5BJJt, $
 ;!"?!3!%e!<"= 
"/0)#./'!12.(34-'23)#./..)111\?..)//:..)00!K.C
 DEF =iLE]  		d " ,  s7   M/ +F3M> BN /	M;:M;>	N
N	NNc                    |j                  |d      }	 | j                  |   }|j                  dt        j
                        }t        |      }|t        j
                  k(  r| j                  }	n| j                  }	|t        j                  k(  r	 t        j                  j                         }
|
j                  t        j                  dd      }|	j                         }|j!                  |dd|j#                         |j%                         |j#                         dz  dz
  |j%                         dz  dz
  ddt&        j(                  j*                  d       |}	n|d	   }| j3                  |	|
      }	|j5                  d|	       y # t        $ r Y y w xY w# t,        j.                  $ r t1        dt        j                  z         Y Sw xY w)Nr   r   g      &@r(  r{   r  r)  r	  r;  )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   r2  ra  )r$   r  r  r  r  r  r  r;  r  r  r  r1  r  r   s                 r%   rh  zJobViewer._set_job_status_icon	  s   q)	99U#D ;(?(?@L''',,D>>D!!!L114#*?*?Kyy|  $1"&.."3"&//"4"&.."3a"7!";"&//"4q"81"<"%s"+"6"6"?"?F 
 -.G//w/GD8T*=  		. >> L2S5J5JJKLs$   F CF 	FF/GGc                    |j                  |d      }	 | j                  |   }	 |d   }|d   }| j                  j                  |g       }	t        |	      dkD  r2|	d   }
|	dd  D ]
  }||
kD  s	|}
 |
j                         \  }}|d|z   z  }|j                  d|       y # t        $ r Y y w xY w# t        $ r | j                  |      }||d<   Y w xY w)Nr   r)  r;  r{   r  r   )	r  r$  rW   r  r)  r/  r   r>  ra  )r$   r  r  r  r  r  r  r   r   rA  r*  r  r|   rG   s                 r%   ri  zJobViewer._set_job_status_text	  s    q)	99U#D	('D
 )*,,00'2>=1"1:L!!"+ *L(#)L* +::=OUFEEM!D64('  		
  	(,,e4D#'D 	(s"   B B, 	B)(B),CC)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  rY  ru  rt  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&  r2  r5  r9  rH  rP  rN  r\  re  rd  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  s   ! #4 5 	++44dB?
L '+27.2e7N	@.	Q.@N8t	5  FD&
d#LeCN+ZI>@""H;J]'~,8
O*?"
,+?
44&DL9&D8*.@6>)V05=@%2N!80!d*4'KRT#l@6$L2-'^5B8C:EO
(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  rW  r  r
   rU  rI  r  sysr  urllib.parserF  xml.saxr   debugr4  statereasonr  	functoolsr   rC  r   rD  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%$J  v~~1A1A B #



	' 0 1}}(()JFL^L^LcLc5;5O5O5V5V7=7Q7Q7X7X7=7Q7Q7X7X9?9S9S9Z9Z5;5O5O5W5W7=7Q7Q7X7X9?9S9S9Z9Z4:4N4N4U4U	*++    1 1_ _DMF'// MF^Y!) Y!)o	  Js   8I II