
    Eg                         d dl mZmZmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ dZdZdZdZd	Z G d
 dej"                        Zy)    )GtkGObjectGio)trackersN)DEBUG               c                        e Zd ZdZdej
                  j                  ddfiZ fdZd Z	d Z
d Zd	 Zd
 Zd Zd Z xZS )PowerWidgetz
    PowerWidget is a child of InfoPanel, and is only shown if we're on
    a system that can run on battery power.  It is usually only visible
    if the system is actually currently running on battery power.
    power-state-changedN c                    t         t        |           | j                  t        j
                  j                         | j                         j                  d       g | _	        t	        j                  t        j                  j                        | _        | j                  | j                         | j                  j                          t         j"                  | _        d| _        t)        j*                         j-                  | j$                  d| j.                         t)        j*                         j-                  | j$                  d| j0                         y )Npowerwidget)orientationFr   zpercentage-changed)superr   __init__set_shadow_typer   
ShadowTypeNONEget_style_context	add_classpath_widget_pairsBoxOrientation
HORIZONTALboxaddshow_all
singletonsUPowerClientpower_clientbattery_criticalr   con_tracker_getconnecton_power_state_changedon_percentage_changed)self	__class__s    6/usr/share/cinnamon-screensaver/widgets/powerWidget.pyr   zPowerWidget.__init__   s    k4)+S^^001 **=9!#77s'A'AB&33 %  "**4+<+<+@+/+F+F	H 	  "**4+<+<+?+/+E+E	G    c                 :    | j                  | j                         y N)r(   r$   r*   s    r,   refreshzPowerWidget.refresh3   s    ##D$5$56r-   c                     | j                   j                         D ]  }|j                           g | _        d| _        | j                          | j                  d       y )NFr   )r   get_childrendestroyr   r%   construct_iconsemit)r*   clientwidgets      r,   r(   z"PowerWidget.on_power_state_changed6   sS    hh++- 	FNN	 "$ %		'(r-   c                 ~    |j                         }| j                  D ]  \  }}||k(  s| j                  ||        y  y r/   )get_object_pathr   update_battery_tooltip)r*   r7   batterybattery_pathpathr8   s         r,   r)   z!PowerWidget.on_percentage_changedA   sD    ..0 22 	LD&|#++FG<	r-   c           	          | j                   j                         }|D ]  \  }}|j                  d      }| j                  |      }t	        d|d|j                         d|       t        j                  j                  |t        j                  j                        }| j                  ||       | j                  j                  |ddd       | j                  j                  ||f        d| _        | j                  j#                          y)	zT
        The upower dbus interface actually tells us what icon name to use.
        
percentagez$powerWidget: Updating battery info: z	 - icon: z - percentage: Fr
   TN)r$   get_batteriesget_propertyget_gicon_for_current_levelr   	to_stringr   Imagenew_from_giconIconSizeLARGE_TOOLBARr;   r   
pack_startr   append_should_showr!   )r*   	batteriesr>   r<   r@   giconimages          r,   r5   zPowerWidget.construct_iconsI   s     %%335	& 	9MD' --l;J44W=E5??,j: ; II,,UCLL4N4NOE''w7HHueQ7""))4-8	9 !r-   c                 N   |j                  d      }|j                  d      }d }|t        t        t        t        fv r|dk  rddg}n^|dk  rddg}nT|d	k  rd
dg}nJ|dk  rddg}n@|dk  rddg}n6|dk  rddg}n,|dk  rddg}n"|dk  rddg}n|dk  rddg}n|dk  rddg}nddg}|t        t        fv r|dxx   dz  cc<   |dxx   dz  cc<   |dxx   dz  cc<   |dxx   dz  cc<   n |t
        k(  rg d }n|j                  d!      f}t        j                  j                  |      S )"Nr@   state
   zbattery-level-0zbattery-caution   zbattery-level-10zbattery-low   zbattery-level-20(   zbattery-level-30zbattery-good2   zbattery-level-40<   zbattery-level-50F   zbattery-level-60zbattery-fullP   zbattery-level-70Z   zbattery-level-80c   zbattery-level-90zbattery-level-100r   z	-chargingr   z	-symbolic)z"battery-level-100-charged-symboliczbattery-full-charged-symboliczbattery-full-charging-symbolicz	icon-name)	rB   UPOWER_STATE_CHARGINGUPOWER_STATE_DISCHARGINGUPOWER_STATE_PENDING_CHARGEUPOWER_STATE_PENDING_DISCHARGEUPOWER_STATE_FULLY_CHARGEDr   
ThemedIconnew_from_names)r*   r<   r@   rP   namess        r,   rC   z'PowerWidget.get_gicon_for_current_level_   sx   )),7
$$W-*,D02PR RB*,=>b+];b+];b+^<b+^<b+^<b+^<b+^<b+^<b+^<,n=.0KLLaK'aK'!H#H!H#H007E ))+68E~~,,U33r-   c                     d}	 t        |j                  d            }|dkD  r(t        d|z        }|t        j                  k  rd| _        |j                  |       y # t        $ r
}Y d }~ d }~ww xY w)N r@   r   z%d%%T)intrB   _cBATTERY_CRITICAL_PERCENTr%   	Exceptionset_tooltip_text)r*   r8   r<   textpctes         r,   r;   z"PowerWidget.update_battery_tooltip   sp    	g**<89CQw#333,0D) 	%  		s   AA 	A0+A0c                 8    | j                   j                          S r/   )r$   full_and_on_ac_or_no_batteriesr0   s    r,   should_showzPowerWidget.should_show   s    $$CCEEEr-   )__name__
__module____qualname____doc__r   SignalFlagsRUN_LAST__gsignals__r   r1   r(   r)   r5   rC   r;   rp   __classcell__)r+   s   @r,   r   r      sT     	 3 3 < <dBGLG07	),,4\&Fr-   r   )gi.repositoryr   r   r   utilr   r"   	constantsrg   status
util.utilsr   r[   r\   r_   r]   r^   Framer   r   r-   r,   <module>r      sN    , +         !" LF#)) LFr-   