3
Zm                 @   sX   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T d dlm	Z	 G dd de
ZdS )	    )GtkN)TimedOperation   )*)reducec               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
PrinterStateReasonsc             C   sh   t j| |d | jtdtd}tj | _| jjdd | jjd |j	| jddd |j
||  d S )NzPrinter state reasonszStatus Messagesz5There are status messages associated with this queue.r   TF)Question__init__Zinitial_vbox_r   ZLabellabelZset_alignmentZset_line_wrapZ
pack_startZnew_page)selftroubleshooterZpage r   D/usr/share/system-config-printer/troubleshoot/PrinterStateReasons.pyr	       s    


zPrinterStateReasons.__init__c             C   s  | j }y|jd }W n tk
r(   dS X | j j }tjd ttj|d| _| jj	 }t|j
|f|d| _| jj	 }tj }d}|d }|r|td| 7 }|d7 }|d	 }	t|	tkr|	g}	|| _|	| _g }
g }xh|	D ]`}|d
krqtj|||}|j \}}|j }|tjjkr$|
j| q|tjjkr|j| qW |
rn|tdd 7 }|tdd |
7 }|d7 }|r|tdd 7 }|tdd |7 }| jj| |dkrt|
dkrt|dkrdS d|jkr |jd | jkr |jd	 | jkr dS dS )NZ
cups_queueF )parent)argsr   zprinter-state-messagez%The printer's state message is: '%s'.z

zprinter-state-reasonsZnonezErrors are listed below:
c             S   s   | d | S )Nr   r   )xyr   r   r   <lambda>[   s    z-PrinterStateReasons.display.<locals>.<lambda>zWarnings are listed below:c             S   s   | d | S )Nr   r   )r   r   r   r   r   r   `   s    r   T)r   ZanswersKeyErrorZ
get_windowcupsZ	setServerr   Z
ConnectionopZrunZgetPrinterAttributesppdcacheZPPDCacher
   typestrstate_messagestate_reasonsstatereasonZStateReasonZget_descriptionZ	get_levelZERRORappendZWARNINGr   r   Zset_textlen)r   r   Zqueuer   cdictZthe_ppdcachetextr   Zstate_reasons_listZhuman_readable_errorsZhuman_readable_warningsreasonrtitleZdescriptionlevelr   r   r   display,   sn    








zPrinterStateReasons.displayc             C   s   | j s
i S | j| jdS )N)zprinter-state-messagezprinter-state-reasons)Z	displayedr   r   )r   r   r   r   collect_answers   s    z"PrinterStateReasons.collect_answerc             C   s   | j j  d S )N)r   Zcancel)r   r   r   r   cancel_operationz   s    z$PrinterStateReasons.cancel_operationN)__name__
__module____qualname__r	   r)   r*   r+   r   r   r   r   r      s   Gr   )Zgi.repositoryr   r   r   r   Ztimedopsr   base	functoolsr   r   r   r   r   r   r   <module>   s   