U
    9_m                     @   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 | |d | tdtd}t | _| jdd | jd |	| jddd |
||  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 }z|jd }W n tk
r*   Y dS X | j  }td ttj|d| _| j	 }t|j
|f|d| _| j	 }t }d}|d }|r|td| 7 }|d7 }|d	 }	t|	tkr|	g}	|| _|	| _g }
g }|	D ]`}|d
krqt|||}| \}}| }|tjjkr$|
| q|tjjkr|| q|
rl|tdd 7 }|tdd |
7 }|d7 }|r|tdd 7 }|tdd |7 }| j| |dkrt|
dkrt|dkrdS d|jkr|jd | jkr|jd	 | jkrdS dS )NZ
cups_queueF )parent)argsr   printer-state-messagez%The printer's state message is: '%s'.z

printer-state-reasonsZnonezErrors are listed below:
c                 S   s   | d | S Nr   r   xyr   r   r   <lambda>[       z-PrinterStateReasons.display.<locals>.<lambda>zWarnings are listed below:c                 S   s   | d | S r   r   r   r   r   r   r   `   r   r   T)r   ZanswersKeyErrorZ
get_windowcupsZ	setServerr   Z
Connectionop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,   sz    






zPrinterStateReasons.displayc                 C   s   | j s
i S | j| jdS )N)r   r   )Z	displayedr#   r$   r   r   r   r   collect_answers   s
    z"PrinterStateReasons.collect_answerc                 C   s   | j   d S )N)r   Zcancelr0   r   r   r   cancel_operationz   s    z$PrinterStateReasons.cancel_operationN)__name__
__module____qualname__r	   r/   r1   r2   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   