HEX
Server: Apache/2.4.65 (Unix) OpenSSL/3.5.5
System: Linux cpanel.ns-taberra.com 5.14.0-681.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 11 20:19:22 UTC 2026 x86_64
User: asif201 (1002)
PHP: 8.3.0
Disabled: NONE
Upload Files
File: //usr/share/system-config-printer/__pycache__/printerproperties.cpython-39.pyc
a

$x]u8�@s�ddlZddlZddlZddlmZddlZddlZddlZejej	ej
d�ddlZddlZddlm
Z
ddlmZddlmZddlZddlmZddlTddlZddlTddlZddlZddlZddlZddlZdd	lmZmZddlZejZ d
d�Z!dd
�Z"Gdd�de�Z#e$dk�r�ddl%Z%e&e%j'�dk�rHe(d�e%�)d�e*d�dej+d<e�,ej-d�e�.�e
�/�Z0dd�Z1e#�Z2e2�3de1�e2�4e%j'd�e0�5�dS)�N)�Gtk)�domain�	localedir)�GObject)�GLib)�GtkGUI)�OptionWidget)�*)�busy�readycCst��}|ddkrdS|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	@sNeZdZejjddfejjddfd�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#d�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-closedZIdleZ
ProcessingZBusyZStoppedc#Cs�tj�|�z t�tj�|_t�tj�|_WnFt�dt	j
d<t�tjd�t�tj�|_t�tj�|_Yn0d|_
d|_|_t�|_t�|_t�|_d|_|jdgd�itjd�|j|_|j�d|j�|j|j|j|j fD].}t!�"�}|�#�|�$|d	�|�%|d
d�q�|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]R\}	}
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]X\}}t!�5t7�}|D]}|jM|dK��q�t!�"�}|�$|d	�|�%|d
d�|�8|��q�tN�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�vboxMarkerLevelsrK)rzdelete-eventT�textr�clickedZMessage�zMembers of this classZOthersZUsers)r��response)Zmarkup�changedzPortrait (no rotation)zLandscape (90 degrees)zReverse landscape (270 degrees)zReverse portrait (180 degrees)�1�2�4�6�9Z16zLeft 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�NoneZStapleZPunchZCoverZBindz
Saddle stitchzEdge stitchZFoldZTrimZBalez
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)ZNormalZReverseZDraftZHigh)�rowZcopies�zorientation-requested)r����zAutomatic rotation)�combobox_mapZspecial_choiceZfitplotz	number-up)r��r�r��	�)r��
use_supportedznumber-up-layout�lrtb)r�ZlrbtZrltbZrlbtZtblrZtbrlZbtlrZbtrl)r�Z
brightness�dZ
finishings)r�r�r�r���r��
���
��������������2�3�4�5zjob-priorityr��mediaZA4)r�Zsides�	one-sided)r�ztwo-sided-long-edgeztwo-sided-short-edgezjob-hold-untilzno-holdZoutputorderZnormal�reversez
print-quality)r�r�r�zprinter-resolution)�,r�r�z
output-binzface-upZmirrorZscalingZ
saturationZhueZgammai�Zcpig$@Zlpig@z	page-leftz
page-rightzpage-topzpage-bottomZprettyprint�wrap�columnsz+%s)�r�__init__�locale�	getlocale�LC_MESSAGES�language�LC_CTYPE�encoding�nonfatalException�os�environ�	setlocaler�parent�printer�ppd�set�	conflictsr��dict�
signal_idsZupdating_widgetsZ
getWidgets�config�PACKAGEr�dialog�connect�	on_deleter5r6r7r8rZCellRendererText�clear�
pack_startZ
add_attributerK�!on_btnRefreshMarkerLevels_clickedZTreeViewColumn�_ZCellRendererPixbufZset_cell_data_func�set_printer_state_reason_icon�set_printer_state_reason_textZ
set_resizablerLZ
append_column�
get_selectionZset_modeZ
SelectionMode�NONE�	ListStore�int�str�	set_modelr�static_tabsrGrHr;ZMULTIPLE�printer_properties_responser�(on_tvPrinterProperties_selection_changedZSINGLErPrTrVrZr^r`rbrdrfrj�append�optionsZOptionAlwaysShownrNrOZOptionAlwaysShownSpecialrQ�boolrRrSrUrWrXrYr[r\r]r_rarcrergZ
IPPResolutionrhrirkrlrmrnrorprqrrrsrtru�floatrvrwrxryrzr{r|r}r~rr�r�r�r�r�r�r�r��job_options_widgets�job_options_buttonsr�button�_monitor�	_ppdcacheZconnect_signals�
debugprint)�self�combobox�cell�btn�column�iconr��	selection�store�name�treeview�model�col�selrZoptsr��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��getr�r�)r��
collection�objr�Zhandler�crrr�_connectsz PrinterPropertiesDialog._connectcCsX|r|g}nt|j���}|D]4}||jvr|j|D]\}}|�|�q6|j|=qdSr)�listr��keysZ
disconnect)r�rZcollrZ	signal_idrrr�_disconnects
z#PrinterPropertiesDialog._disconnectcCs|jr|j��d|_dSr)rrr�rrr�
do_destroys
z"PrinterPropertiesDialog.do_destroycCs4td|�|��d|_d|_d|_|�d�dS)NzDESTROY: %sr)r�rr��	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_monitorcCsz||_||_||_|s t��|_|s.t��|_|jdurJ|�tj	dd��|j�
�|_|�d�t
��|_|�d|jd|j�|�d|jd|j�|r�|j�|�|j||||d�|js�dS|j|j|jfD]}|jjr�|��q�|��q�|jj�r|j��n
|j��|��|j� t!d��|j"� t!d��|j#}|�$t%�&�dd�t'�}|j�(t!d	�||f�|j��dS)
NF)Z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�rrZMonitorZget_ppdcacher�r�
newprinterZ
NewPrinterGUIrr�on_printer_modified�on_printer_not_modifiedr�Zset_transient_for�loadr�rr r!�
discoveredr�showr"�setDataButtonStater1�set_tooltip_textr�r2rZ
set_cursorrZTreePathrZ	set_title)r�r�rrr�r�r�rrrr,sV





�
��



�zPrinterPropertiesDialog.showcCs\|jstjj}|tjjkrztd�}|d7}|jD]}||jjd7}q0tj	|j
ddtjjtj
j|d�}|��|��dS|tjjks�|tjjkr�|tjjkr�t|j�dkr�d}n|�|j�}|tjjkr�|s�z|�|jj�WnYn0|��|tjjk�r
|�r|tjjk�rXd|_d|_d|_|��|�d�|jj�d	��rX|j� d�dS)
Nz^There are conflicting options.
Changes can only be applied after
these conflicts are resolved.z

�
T)r�ZmodalZdestroy_with_parent�message_type�buttonsr�rFr�visible)!r�r�ResponseType�CANCELZREJECTr�r�r�r��
MessageDialogr��MessageType�WARNING�ButtonsTypeZCLOSE�runrZOKZAPPLY�lenr��save_printerrr�rr�r
rrrZNewPrinterWindow�get_propertyZon_NPCancel)r�r�r��messager�Zfailedrrrr�_sL
�
�
�
z3PrinterPropertiesDialog.printer_properties_responsecCs|�|tjj�dSr)r�rr$r%)r�r�rrrrr��sz!PrinterPropertiesDialog.on_deletecCst|tj�r|��}n^t|tj�r,|��}nHt|tj�rB|��}n2t|tj�rl|��}|�	�}|�
|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))'�
isinstancerZCheckButton�
get_activeZEntry�get_textZRadioButtonZComboBox�	get_model�get_active_iter�	get_value�
ValueErrorr�r$�infor%�locationr)�
device_urir-�enabledr.�	rejectingr/�	is_sharedr5�job_sheet_startr6�
job_sheet_endr7�error_policyr8�	op_policyr9�
default_allowr��discard�addr)r�r�valuer��iter�pZ
old_values�	old_valuerrr�on_printer_changed�s:



�z*PrinterPropertiesDialog.on_printer_changedcCs�|��r|j�|�n|j�|�|jr6|j�|�n|j�|�|��|jr�|jr�||jkr�|��dkrx|j�	�n
|j�
�dS)N�True)�
is_changedr�rBrAr�r�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)r�r)r��pathrD�data��resultrr�<lambda>�sz3PrinterPropertiesDialog.getPUsers.<locals>.<lambda>N)r;r2Zforeach�sort)r�r�rrTr�	getPUsers�s
�z!PrinterPropertiesDialog.getPUserscCsD|j��}|��|D]}|�|f�q|�|j�|�|j�dS)z$write list of usernames into the GUIN)r;r2r�r��on_entPUser_changedr<�on_tvPUsers_cursor_changed)r�Zusersr��userrrr�	setPUsers�s
z!PrinterPropertiesDialog.setPUserscCsP|js
dS|��|jjkr*|j�|j�n|j�|j�|�|j�|��dS)zLcheck if users in GUI and printer are different
        and set self.changedN)	r�rX�except_usersr�rBr;rArZrr�rrr�checkPUsersChanged�sz*PrinterPropertiesDialog.checkPUsersChangedcCs:|j��}|r.|j���d|f�|j�d�|��dS)Nrr)r<r1r;r2�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)rZTreeRowReference�new)�.0r��r�rr�
<listcomp>��zBPrinterPropertiesDialog.on_btnPDelUser_clicked.<locals>.<listcomp>)r;r��get_selected_rowsZget_path�get_iter�remover^)r�r��rowsr�rRrDrrdr�on_btnPDelUser_clicked�s
z.PrinterPropertiesDialog.on_btnPDelUser_clickedcCs|j�t|����dSr)r=�
set_sensitiver�r1�r�rrrrrY�sz+PrinterPropertiesDialog.on_entPUser_changedcCs4|��}|durdS|��\}}|j�t|��dSr)r�rgr>rlr�)r�rr�r�rjrrrrZs
z2PrinterPropertiesDialog.on_tvPUsers_cursor_changedcCsV|j|}|��|j|jvr(|j|j=|��r>|j�|�n|j�|�|��dSr)	r��resetr��server_side_optionsrIr�rBrAr�r�r�r�rrr�on_job_option_reset	s

z+PrinterPropertiesDialog.on_job_option_resetcCsl|js
dS|j|}|��|��r>||j|j<|j�|�n"|j|jvrT|j|j=|j�|�|��dSr)	r�r�r�rIror�rBrAr)r�rr�rrr�on_job_option_changeds

z-PrinterPropertiesDialog.on_job_option_changedTcCs�t|j�}|dkr |j��dS|j��}|D]}|j�|�q.d}|jD]�}|j�|jd|dd�|j�dd�|j�|j	d|dd�|j	�
|�tj�
tjtjj�}|�d|j�||_|�
|�|j�|d|dd�|d7}qJ|j��dS)Nrr����?r�r�)r+�other_job_optionsr�r�get_childrenri�attach�label�
set_alignment�selectorrlrZButtonZnew_from_icon_nameZSTOCK_REMOVEZIconSizeZBUTTONr��on_btnJOOtherRemove_clicked�pyobject�show_all)r��editable�nZchildren�child�i�optr�rrr�draw_other_job_options&s,




�

z.PrinterPropertiesDialog.draw_other_job_optionsrcCs�zt�||||j�}Wnty0t�YdS0||_|j�|�|j|d�||j	|<||j
vrjd|_|j
�|�|��|r�|j
��dS)N�r~F)r�rrPr5r��is_newrur�r�ror�rBrrzZ
grab_focus)r�r�rC�	supportedr�r~r�rrr�add_job_option@s"
�

z&PrinterPropertiesDialog.add_job_optioncCsR|j}|j�|�|��|jr.|j�|�n|j�|j�|j	|j=|�
�dSr)r|rurir�r�r�rArBr�rorrprrrr{Us
z3PrinterPropertiesDialog.on_btnJOOtherRemove_clickedcCsB|j��}|�|�|j��|j�d�|j�d�|��dS)NrF)	r�r1r�r�r}r`r�rlr)r�r�r�rrr�on_btnNewJobOption_clickedas


z2PrinterPropertiesDialog.on_btnNewJobOption_clickedcCs0|j��}t|�dko||jv}|j�|�dSrQ)r�r1r+ror�rl)r�rr�Zactiverrr�on_entNewJobOption_changedis
z2PrinterPropertiesDialog.on_entNewJobOption_changedcCs|�|�dSr)r�rmrrr�on_entNewJobOption_activatensz3PrinterPropertiesDialog.on_entNewJobOption_activatec	Cs\�z^|jj}|�dg�}t|j�o4|jjo4|jj}z|�d�|}Wnty^d}Yn0|j	�
|�|jjp|t|j�}|j|j
fD]}|�
|�q�d}d}|�r&|jjtj@dk�r&zR|�d�|�dg�}	|	D]2}
|
dkr�d}|r��qq�|
d	kr�d}|r��qq�Wnt�y$Yn0||jf||jffD]"\}}|�rR|��n|���q:Wnt�Yn0|j�s�|jj�s�|jj�d
��s�|jj�d��r�|jj�d��r�|jj�s�|j	��n
|j	��d}d}
|j�r(td
�|j��|jD]&}|j��|j ��k�rd}nd}
�q�n
|j��t!d�}t!d�}|�rPd|}|
�r^d|}|j �"|�|j#�"|�|j$�%�}|�r(t&|j'�(��D]�}|j'�)|�}|j'�*|���}zZ||j ��k�r�|�+|f�}|�,|d|�n*||j#��k�r|�+|f�}|�,|d|�Wnt�y"Yn0�q�|j-�
t.|j�dk�oD|j�|j/�
|j�dS)Nzdocument-format-supportedzapplication/postscriptFr�application/vnd.cups-commandzprinter-commands�PrintSelfTestPageTZCleanzdnssd:zmdns:z/cupszConflicts detectedzInstallable OptionszPrinter Options�	<b>%s</b>)0r��other_attributesrr�r�r9r:�indexr5r1rlrr,r+�typer�CUPS_PRINTER_COMMANDSr2r3rrr�r�Zremoter8�
startswith�endswithr�r�r4�	tab_labelr1r?r�Z
set_markuprCrr2�ranger#�get_n_pages�get_nth_page�
get_tab_labelrh�	set_valuer!r+r )r��attrs�formatsZ	printableZtestpageZ
adjustabler�ZselftestZ
cleanheadsZcommands�commandZcondZinstallableboldZoptionsboldr�ZinstallabletextZoptionstextr�r�pagerxrDrrrrrs���

��
�
�����






�z*PrinterPropertiesDialog.setDataButtonStateFc
Cs�|dur|j}d}|j}|jr4|j�td�|�n|j�td�|��zj|js�|jr�|��|j��sn|r�|jj	||jd�|j�rlt
�|j�}|�st
jdt
jjt
jjtd�d�}|�td��|�t
jt
jjt
jt
jj�|��}|��|t
jjk�r|j��Wd	Sd	}|jdd�}	|D]*}
|
|	v�r@|	�|
�n|j�|
|��q&|	D]}
|j� |
|��qV|j!�"�}|j#�"�}|j$�"�}
|j%�&�}|j'�&�}|j(�&�}||j)k�s�|�r�|j�*||�||j+k�s�|�r�|j�,||�|j�s|
|j-k�s|�r|j�.||
�||j/k�s"|�r,|�0|�||j1k�s>|�rH|�2|�||j3k�sZ|�rd|�4|�d
d�}||j5�}||j6�}||j7�}||j8�}||j9k�s�||j:k�s�|�r�|�;||�||j<k�s�|�r�|�=|�||j>k�s�|�r�|�?|�|j@�&�}|�A�}||jBk�s&||jCk�s&|�r2|�D||�|jED]}||jFv�r8|�G|��q8|jF�H�D]P}|�I��s�|�r`|�J�|�K�k�r`tLd|j|�J�f�|�M|j|�J���q`WnJtjN�y�}z.|jO\}}tP|||�|j��WYd}~d	Sd}~00|j��tQ�|_R|jjS�sfd
|jTv�rf|j�td��z|j�U�|_VWntW�Yn0|j��|�s�z|�X�|�Y�WntjN�y�Yn0|jZ�[�dS)NFzmodifying class %szmodifying printer %s)r�rzThis will delete this class!)�flagsr!r"r�zProceed anyway?TcSs|��}|��}|�|d�S�Nr�)r2r3r4)Zcmbr�rDrrr�get_combo_value!sz=PrinterPropertiesDialog.save_printer.<locals>.get_combo_valuezSet %s = %s�server_settingszfetching server settings)\r�r��is_classr�_begin_operationr�r��getPrinterSettingsZnondefaultsMarkedZ
addPrinterr�getCurrentClassMembersrGrr&r'r(r)r�Zformat_secondary_textZadd_buttonsZSTOCK_CANCELr$ZNOZSTOCK_DELETEZYESr*r�_end_operation�
class_membersriZaddPrinterToClassZdeletePrinterFromClassr%r1r$r)r-r0r.r/r6ZsetPrinterInfor7ZsetPrinterLocationr8ZsetPrinterDevicer9Z
setEnabledr:ZsetAcceptingr;Z	setSharedr5r6r7r8r<r=ZsetJobSheetsr>ZsetErrorPolicyr?ZsetOperationPolicyr9rXr@r]Z	setAccess�
attributesroZunsetOption�valuesrIrL�get_defaultr�Z	setOption�IPPError�args�show_IPP_Errorr�r�Z_use_pk�__dict__ZadminGetServerSettingsr�r��
getAttributes�updatePrinterPropertiesr��update)r�r�Zsaveallr�Z
class_deletedr�Znew_membersr�rUZold_members�memberr7r6r8r9Z	acceptingZsharedr�r<r=r>r?r@r]r��e�srrrr,�s��
�







��






��


��

���




z$PrinterPropertiesDialog.save_printercCs|j��D]}|��q
dSr)r�r�Z	writebackrOrrrr�esz*PrinterPropertiesDialog.getPrinterSettingscCsP|��\}}|r||_n4z
|j}Wnty6YdS0|�|�rL|�|�dSr)Zget_selectedZ%printer_properties_last_iter_selected�AttributeErrorZ
iter_is_validZselect_iter)r�r�r�rDrrrr�ks

z@PrinterPropertiesDialog.on_tvPrinterProperties_selection_changedcCsB|��\}}|dur>|��}|�|�}|�|d�}|j�|�dSr�)Z
get_cursorr2rhr4r#�set_current_page)r�r�rRr�r�rDrrrr�%on_tvPrinterProperties_cursor_changedzs
z=PrinterPropertiesDialog.on_tvPrinterProperties_cursor_changedcCs|j��dSr)r1r�r�rrr�
printTestPage�sz%PrinterPropertiesDialog.printTestPagec

Cs�|j}|sdSd}|jdkrD|j�d�}|rDtj�td|j���}t	�
�}t	�d�ztj
|jd|j|jd�}Wn4ty�}ztd||j�WYd}~dSd}~00d}|�td��zF|r�tj�|�r�td|�|j|j|d�}ntd	�|�|j�}Wn�t	j�y�}zd|j\}}	|t	jk�r^|jd
k�r^|jddk�r^ttd
�td�|j�nt||	|j�WYd}~n
d}~00|��t	�|�|du�r�ttd�td�||jd�dS)NF�PageSizeztestpage-%s.psr)Ztry_as_rootrrzprinting 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�rR�join�pkgdata�	defchoice�lowerr�getUserZsetUser�authconn�
Connectionr�rr�RuntimeErrorr�r�r��existsr�r�r�r�r��IPP_NOT_AUTHORIZED�show_error_dialogr��show_info_dialog)
r�r�r�Zcustom_testpager�r[rr��job_id�msgrrr�on_btnPrintTestPage_clicked�sf
��

�
�
���$


�z3PrinterPropertiesDialog.on_btnPrintTestPage_clickedcCs|j}|sdStjdd���}|�d|�|��|j�td��z@d}|jj|j	||j	t�
�d�}ttd�td�||jd	�Wnltj
y�}zR|j\}}|tjkr�|jj	d
kr�ttd�td�|j�nt|||j�WYd}~n
d}~00|j��Wd�n1�s0YdS)
NZwt)�modez#CUPS-COMMAND
%s
zsending maintenance commandr�)�formatr�r[r�z'Maintenance command submitted as job %dr�r
r�r�)r��tempfileZNamedTemporaryFile�write�flushrr�r�r�r�r�r�r�r�r�r�r�r�r�)r�r�r�Ztmpfiler�r�r�r�rrr�maintenance_command�s>
���



��$z+PrinterPropertiesDialog.maintenance_commandcCs|�d�dS)Nr��r��r�r�rrr�on_btnSelfTest_clicked�sz.PrinterPropertiesDialog.on_btnSelfTest_clickedcCs|�d�dS)Nz	Clean allr�r�rrr�on_btnCleanHeads_clicked�sz0PrinterPropertiesDialog.on_btnCleanHeads_clickedc	Csx|durt��}t�tt�}|�|�d}t|�D]2\}}|�|�|�|g�||kr2|�	|�d}q2|st|�	d�dS)NFTr)
�	ppdippstrZTranslationDictrr�r�r��	enumerater�r�
set_active)	r�r�r�rCZtranslationdictr�r��nr�valrrr�fillComboBox�s�

z$PrinterPropertiesDialog.fillComboBoxcCs�t�|_i|_t�|_|s"t��}|s.t��}tj|j	||d�}||_t
�||j�}||_z|j
d}||_Wnty�Yn0|jj}z,|��|_|��|_|jdkr�|j��Wn�tj�y6}	zb|	j\}	}
|	tjkr�t|	|
|j�|	tjtjfv�rttd�td�tjj|j�d|_WYd}	~	nnd}	~	0t �y�}	zLt!|	��"d��rnt#td�td�|j�nt#td�td	�|j��WYd}	~	n
d}	~	00|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@�r~|�A�n|�B��qhz6|jC�r�|j�r�|jD�A�n
|jD�E�n
|jD�A�WntF�|jD�A�Yn0|j-�7|�|j.�7|�|j/�7|�|j0�7|�|j4�8d
�i|_G|jH�I�D�]}
|
jJdk�rb|j�rb|j�Kd�}|�rb|
�L|jM�|}z|jjN|
jJ}Wnt�y�|
�Od�Ynx0zL|
jJ|jjPv�r�|jjP|
jJd
}|
jO||d�n
|
�O|�|
|jG|
jJ<Wn(tF�d}tQd|
jJ|f�Yn0|
jR�7|�|�s*|
jS�7d��q*g|_T|jU|d�|jjN�V�D]�}
|
|jGv�rb�qN|
dk�sN|
dk�rz�qN|jjN|
}|
|jjPv�r�|jjP|
d
}n.tW|tX��r�ddg}t!|��Y�}nd
}t!|�}|jZ|
||d|d��qN|j[�8d
�|j[�7|�|j\�7d�|j@�rH|j]�^|j_�}|dk�r<|j]�`|�|�a|�n|�b||�|�c�|�d�|�e�t�|_|�f�|�g�dS)N)r�rrzserver-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.rr�r�r�)r�z0Option '%s' has value '%s' and cannot be edited.r�zoutput-modez	media-col�trueZfalse)rCr�r�r~���)hr�r�r�r�rrrr�r�r��cupshelpersZPrinterr�r�Zserver_is_publishing�KeyErrorrZgetPPDr�r
Zlocalizer�r�ZIPP_INTERNAL_ERRORr�r�ZIPP_SERVICE_UNAVAILABLEZshow_dialogr�rr'ZERRORr�r�r�r�r$r%r)Zset_editabler+r,r-r.r/r5r6r7r8r9r:r;r<r=r>rlr`r6r7r8rAr'r&r*r�rrr;r0r}r�ror�r�r�r�Zset_defaultr�r�ZreinitZpossible_attributesr�rr�rur�rr/r�r�r�r�r�r#�page_numr@�remove_page�fillClassMembers�fillPrinterOptions�updateMarkerLevels�updateStateReasons�updatePrinterPropertiesTreeViewr�r)r�r�rrr�rr�Z
publishingr~r��mrZurir�r�Zoption_editablerCr��tab_nrrrrr�s*�







�������
��
�

zPrinterPropertiesDialog.loadcCs�t�tt�}|j�d�t|j���D]F}|j�|�}|j�	|�}|�
d�}|�|d|���|�|d|�q&|j
��}|j
�|�dS)NFrr�)rr�r�r�r#Z
set_show_tabsr�r�r�r�r�r�r1rr�r�)r�r�rr�rxrDr�rrrr��s

z7PrinterPropertiesDialog.updatePrinterPropertiesTreeViewcs^|j}|sdS|j��D]}|j�|�qt�}d}dtfdtfdtfdtffD]�\}�|j�|g�}�tkr�t	|�dkr�z�|d�WnDt
y�}z,td|�|f�dd�|D�}WYd}~n
d}~00�fd	d�|D�||<|dks�t	|�|krPt	|�}qPd
D]B}t	||�|k�rtd|||d�|f�|||d�=�qtt
dd
�|d|d|d|d��}t|�|jtj@dk}	|	�r�|j��n
|j��t	|�dk�r�tjtd�d�}
|
�d�|
�dd�|j�|
ddd��n^d}t	|�}d|dd}|dk�rd}t��}
|
�d�|
�d�|
�d�|
�d�|j�|
ddd�|D]�\}}}}|du�r~d}n&|jdk�r�|j� |�}|du�r�|}|d}|d}tj!dd�}t�!�}t"�#||�}|�$d|�|�|ddd�|�|ddd�tj|d�}
|
�%d�|
�d�|�|
ddd�|
�&|||dd�|d7}�qb|j�'�dS)Nr�
marker-colors�marker-names�marker-types�
marker-levelsz %s value not coercible to %s: %scSsg|]}d�qS)rsr�rc�xrrrre�rfz>PrinterPropertiesDialog.updateMarkerLevels.<locals>.<listcomp>cs$g|]}�tkr|dkrdn|�qS)rrs)r�r���typrrre�s�)r�r�r�r�zTrimming %s from %scSs||||fSrr)�colorr�r��levelrrrrV�sz<PrinterPropertiesDialog.updateMarkerLevels.<locals>.<lambda>z0Marker levels are not reported for this printer.�rxTrsFr�r�r�r�r)Zspacingz%d%%r�)(r�r�rvrir�r�r�r�rr+�	TypeErrorr�r�mapr�rr�rKrrr�Labelr�Z
set_line_wrapryr��GridZset_column_homogeneousZset_row_homogeneous�set_column_spacing�set_row_spacingr�ZlocalizeMarkerName�Box�gtkinklevelZGtkInkLevelrZset_width_charsrwr})r�r�rZmarker_infoZnum_markers�attrr�r�ZmarkersZcan_refreshrxZcolsrj�gridr�r�Zmarker_typer�Zlocalized_namer�r�ZvboxZsubhboxZinklevelrr�rr��s���$
�

�
�










z*PrinterPropertiesDialog.updateMarkerLevelscCs|�d�dS)NZReportLevelsr�r�rrrr�6sz9PrinterPropertiesDialog.on_btnRefreshMarkerLevels_clickedcCs�|j}|j�dg�}t�tt�}d}|D]|}|dkr8q�d}|�d�}t�|j	||j
�}|��dkrltj}ntjj
|��}|�|d|�|��\}	}
|�|d|
�q(|j�|�d}|r�d}|j�|�dS)Nzprinter-state-reasonsFZnoneTZpausedrr�)r�r�rrr�r�r��statereasonZStateReasonr�r�Z
get_reasonZSTOCK_MEDIA_PAUSEZ
LEVEL_ICONZ	get_levelr�Zget_descriptionrLr�rMr�)r�r�Zreasonsr��any�reasonrD�rr��titler�r�rrrr�9s*
z*PrinterPropertiesDialog.updateStateReasonsc	GsN|�|d�}tj��}z|�|dd�}|�d|�WntjyHYn0dS)Nrr��pixbuf)r4rZ	IconThemer�Z	load_icon�set_propertyrZGError)	r�r�r�r�rDrSr�Zthemerrrrr�Ts
z5PrinterPropertiesDialog.set_printer_state_reason_iconcGs|�d|�|d��dS)Nr�r�)rr4)r�r�r�r�rDrSrrrr�]sz5PrinterPropertiesDialog.set_printer_state_reason_textcCsZtd�|j}|j�|j�|j�|j�|j�|j	t
d��}|j�dd�}t|�dkrd|d|7}|j
�|�t|j�dk�rVtd�|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*�|�+�|�,�|�-�dS)Nzupdate printer propertiesZUnknownzprinter-state-messagerrz - z.no changes yet: full printer properties update).r�r�r)r`r8r&Zmake_and_model�printer_statesr�stater�r�r+r(r�r-r�r9r.r:r/r;r�r5Zjob_sheets_supportedr<r�Z
job_sheetsr6r=r7Zerror_policy_supportedr>Zprinter_error_policyr8Zop_policy_supportedr?Zprinter_op_policyr9r@r:r\r]r�r�r�)r�r�r
rrrrr�`sR
�����z/PrinterPropertiesDialog.updatePrinterPropertiesc	Cs�|j�|j�}|dkr"|j�|�|j��D]}|j�|�q,|j��D]}|j�|�qH|j�|j�dkr�|j�	|j|j
|j�|js�|j�|j
�}|dkr�|j�|�|j�|j�}|dkr�|j�|�dS|j}|��|j��d}|jjD�],}|jdk�rNd}|j}|j�|j
�}|dk�rF|j�	|j
tj|jd�|j�|j}	n�tj�|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||_(n|j,dk�r||_)�qq�|�sN|j�|j
�}|dk�rN|j�|�|j+�4�D] }|�5�}|�rX|j6�$|��qX|j
�7�|j�7�dS)Nr�FZInstallableOptionsTr�r�rrtg�?r�r�Z
PageRegionr�)r�r�Z	InputSlotZ
ManualFeed)8r#r�rEr�rArvrirDrB�insert_pagerCr�r�r@ZmarkDefaultsr
ZoptionGroupsr�rr�r�r?r�rZFrame�html�escapeZget_label_widgetZset_use_markupZset_shadow_typeZ
ShadowTyper�r�Z	AlignmentrbZset_paddingrBr�r�r�rKrJr�r��keywordrrwZconflictIconr�rxrzrlr�ZcheckConflictsr�r})r�r�r~r�rr�ZhasInstallableOptions�group�	containerr�Z
group_name�framerrjr�r��oZhbox�ar�rrrr��s��


�





z*PrinterPropertiesDialog.fillPrinterOptionscCs�|j�|�|j�|�|j�|j�}|dkr:|j�|�|j�|j�dkrb|j�|j|j	|j
�|j��}|j
��}|��|��t|j���}|��|D]D}||jjkr�||jjvr�|�|f�q�|jjtj@s�|�|f�q�dS)Nr�)rIrlrJr#r�rBr�rErrFr�rGr2rHr�rr�Zget_printersrWr�r�r�r�r�rZCUPS_PRINTER_CLASS)r�r~r�Z
model_membersZmodel_not_members�namesr�rrrr�s,�

z(PrinterPropertiesDialog.fillClassMemberscCsNt�|j|j�t�|j�|jjkr4|j�|j�n|j�	|j�|�
�dSr)r�moveClassMembersrHrGr�r�r�r�rBrArr�rrr�on_btnClassAddMember_clickeds�z4PrinterPropertiesDialog.on_btnClassAddMember_clickedcCsNt�|j|j�t�|j�|jjkr4|j�|j�n|j�	|j�|�
�dSr)rrrGrHr�r�r�r�rBrArr�rrr�on_btnClassDelMember_clicked's�z4PrinterPropertiesDialog.on_btnClassDelMember_clickedcCsB|o |jduo |jjpt|j�}|j|jfD]}|�|�q.dSr)r�rr�r�r,r+rl)r�Z	sensitiver�rrr�sensitise_new_printer_widgets0s����z5PrinterPropertiesDialog.sensitise_new_printer_widgetscCs|�d�dS�NF�rr�rrr�desensitise_new_printer_widgets9sz7PrinterPropertiesDialog.desensitise_new_printer_widgetscCsNt|j�|��|jjd|jj|jj|j|j	|jd�s@|�
�t|j�dS)NZdevice)r8r�rrr�)r
r�rr�initr�r8r�rrrrr�rrr�on_btnSelectDevice_clicked=s
�z2PrinterPropertiesDialog.on_btnSelectDevice_clickedc	CsRt|j�|��|jjd|jj|j|jj|j	|j
|jd�sD|��t|j�dS)Nr�)r8r�r�rrr�)
r
r�rrrr�r8r�r�rrrrr�rrr�on_btnChangePPD_clickedJs
�z/PrinterPropertiesDialog.on_btnChangePPD_clickedcCsbtd�|��|j�d�r^|jr^z&|j��|r>|�|�n|��Wntj	y\Yn0dS)Nzon_printer_modified calledr#)
r�rr�r-r�r�rr�rr�)r�rr�Zppd_has_changedrrrrXs
z+PrinterPropertiesDialog.on_printer_modifiedcCs|��dSrr)r�rrrrrfsz/PrinterPropertiesDialog.on_printer_not_modifiedcCs|�d|d�dSr)r)r��monr�Z	eventnamerrrrrjsz(PrinterPropertiesDialog.on_printer_eventcCsJ|j�d�r.|jr.|jj|kr.|j�tjj�|jrF|jj|krFd|_dS�Nr#)r�r-r�r�r�rr$r%)r�rr�rrrr
ms�
�z*PrinterPropertiesDialog.on_printer_removedcCsR|j�d�rN|jrN|jj|��krNz|j��|��WntjyLYn0dSr �	r�r-r�r�Zget_printerr�r�rr��r�rrrrrrus��
z-PrinterPropertiesDialog.on_state_reason_addedcCsR|j�d�rN|jrN|jj|��krNz|j��|��WntjyLYn0dSr r!r"rrrr~s��
z/PrinterPropertiesDialog.on_state_reason_removedcCsdSrr)r�rrrrr�sz0PrinterPropertiesDialog.on_cups_connection_error)N)NNN)T)rrTT)FN)N)NNN)T)K�__name__�
__module__�__qualname__rZSignalFlagsZRUN_LASTZ__gsignals__rZIPP_PRINTER_IDLEr�ZIPP_PRINTER_PROCESSINGZIPP_PRINTER_BUSYZIPP_PRINTER_STOPPEDr	r�r�rrr	rrrr�r�rGrPrXr\r^rarkrYrZrqrrr�r�r{r�r�r�rr,r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�rrrrrrrrrr
rrrrrrrr?s���	0


31%	
		
�
i
<"

M
`	0q		
	
		r�__main__r�zSpecify queue namer�TZuiZSYSTEM_CONFIG_PRINTER_UIrcCs|��t��dSr)r�loop�quit)rrrr�on_dialog_closed�sr)r)6r�r�r�Z
gi.repositoryrrr��gettext�installr�rr�r�rrZguirrZ
optionwidgetsr�debugr�Zerrordialogsr�Zppdcacherrrr
rr�Z
pkgdatadirr�rrrr#�sysr+�argv�print�exitZ
set_debuggingr�r�rrZMainLoopr'r)Z
propertiesr�rr*rrrr�<module>snZ