o
    Ìv›aô  ã                   @   sˆ   d 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	d
dœddd
dœddd
dœddd
dœgZG dd„ de
ƒZdS )zQuicklook plugin.é    )Úcpu_percent)Úlogger)ÚBar)Ú	Sparkline)ÚGlancesPluginNÚcpuzCPU percent usageú%)ÚnameÚdescriptionZy_unitÚpercpuzPERCPU percent usageÚmemzMEM percent usageÚswapzSWAP percent usagec                       sd   e Zd ZdZd‡ fdd„	Zejejdd„ ƒƒZ‡ fdd„Z	dd
d„Z
dd„ Zdd„ Zdd„ Z‡  ZS )ÚPluginz<Glances quicklook plugin.

    'stats' is a dictionary.
    Nc                    s    t t| ƒj||td d| _dS )zInit the quicklook plugin.)ÚargsÚconfigÚitems_history_listTN)Úsuperr   Ú__init__r   Zdisplay_curse)Úselfr   r   ©Ú	__class__© úC/usr/lib/python3/dist-packages/glances/plugins/glances_quicklook.pyr   5   s
   þ
zPlugin.__init__c                 C   sÜ   |   ¡ }| jdkrbt ¡ |d< tjdd|d< t ¡ j|d< z	t ¡ j|d< W n ty4   d|d< Y nw t 	¡ }|d	 |d	< |d
 durL|  
|d
 ¡nd|d
< |d dur]|  
|d ¡nd|d< n| jdkrh	 || _| jS )z.Update quicklook stats using the input method.Zlocalr   T)r   r   r   r   NÚcpu_nameÚcpu_hz_currentÚcpu_hzZsnmp)Zget_init_valueZinput_methodr   ÚgetÚpsutilZvirtual_memoryÚpercentZswap_memoryÚRuntimeErrorZget_infoÚ
_mhz_to_hzÚstats)r   r!   Zcpu_infor   r   r   Úupdate=   s$   
þ"$
zPlugin.updatec                    sD   t t| ƒ ¡  dD ]}|| jv r| j| j| |d| j| d< q	dS )zUpdate stats views.©r   r   r   )ÚheaderÚ
decorationN)r   r   Úupdate_viewsr!   Z	get_alertZviews)r   Úkeyr   r   r   r&   a   s   
€þzPlugin.update_viewsé
   c              	      st  g }| j r	|  ¡ r|S d}| jjr |  ¡ r | jjs t|ƒ}|j}|s0t|| j	ddgdd d}d| j v r„d| j v r„d	| j v r„| j d }| j d ra| j d	 rad
 
|  | j d ¡|  | j d	 ¡¡}nd}t|| ƒd |kru| |  |¡¡ | |  |¡¡ | |  ¡ ¡ dD ]­}|dkró|jró|r™| jd|jd}	t| j d ƒD ]Q\‰ }
|rÁ‡ fdd„|	D ƒ|_| jdg|jt|jƒ  7  _n|
d |_|
|
d  dk rÙd 
| ¡ |
d ¡}nd 
|
d ¡}| |  |||¡¡ | |  ¡ ¡ q q†|rdd„ | j||jdD ƒ|_| jdg|jt|jƒ  7  _n| j | |_d 
| ¡ ¡}| |  |||¡¡ | |  ¡ ¡ q†| ¡  |S )z%Return the list to display in the UI.FÚpercentage_charú|)Údefaultr   )r)   r   r   r   z - {:.2f}/{:.2f}GHzÚ é   r#   r   r   )ÚitemÚnbc                    s   g | ]
}|d  ˆ  d ‘qS )é   Útotalr   ©Ú.0Úi©Z	cpu_indexr   r   Ú
<listcomp>“   s    z$Plugin.msg_curse.<locals>.<listcomp>Nr1   r'   r(   z{:3}{} Z
cpu_numberz{:4} c                 S   s   g | ]}|d  ‘qS )r0   r   r2   r   r   r   r6   ¢   s    )r!   Zis_disabledr   Z	sparklineZhistory_enableZclientr   Z	availabler   Zget_conf_valueÚformatÚ
_hz_to_ghzÚlenÚappendÚcurse_add_lineZcurse_new_liner   Zget_raw_historyÚsizeÚ	enumerateÚpercentsr   ÚupperÚextendÚ_msg_create_lineÚpop)r   r   Z	max_widthÚretZsparkline_tagÚdataZmsg_nameZmsg_freqr'   Zraw_cpur   Úmsgr   r5   r   Ú	msg_cursel   sd   ÿÿÿ
ÿ"
ò"zPlugin.msg_cursec              	   C   st   g }|  |  |¡¡ |  | j|jdd¡ |  |  | ¡ | j|dd¡¡ |  | j|jdd¡ |  |  d¡¡ |S )z#Create a new line to the Quickview.ZBOLD)r%   r%   )r'   Úoptionz  )r:   r;   Zpre_charr   Z	get_viewsZ	post_char)r   rE   rD   r'   rC   r   r   r   rA   ²   s    zPlugin._msg_create_linec                 C   s   |d S )zConvert Hz to Ghz.g    eÍÍAr   ©r   Úhzr   r   r   r8   ¾   ó   zPlugin._hz_to_ghzc                 C   s   |d S )zConvert Mhz to Hz.g    €„.Ar   rH   r   r   r   r    Â   rJ   zPlugin._mhz_to_hz)NN)Nr(   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Z_check_decoratorZ_log_result_decoratorr"   r&   rF   rA   r8   r    Ú__classcell__r   r   r   r   r   /   s    "
Fr   )rN   Zglances.cpu_percentr   Zglances.loggerr   Zglances.outputs.glances_barsr   Z"glances.outputs.glances_sparklinesr   Zglances.plugins.glances_pluginr   r   r   r   r   r   r   r   Ú<module>   s2   þþþþ÷