
    Eg                     l    d dl mZmZmZmZmZ d dlmZmZm	Z	 d dl
mZ d dlmZ dZdZ G d dee      Zy	)
    )CinnamonDesktopGLibGtkGioPango)utilstrackerssettings)
BaseWindow)Floatingi@     c                   L     e Zd ZdZd	 fd	Zd Zd Zd Zd Zd
dZ	ddZ
 xZS )ClockWidgetak  
    ClockWidget displays the time and away message on the screen.

    It is a child of the Stage's GtkOverlay, and its placement is
    controlled by the overlay's child positioning function.

    When not Awake, it positions itself around all monitors
    using a timer which randomizes its halign and valign properties
    as well as its current monitor.
    c                    t         t        |   |       | j                         j	                  d       | j                  t        j                  j                         | j                  dd       d | _
        || _        t        j                         sy || _        t        j                  t        j                   j"                        }| j%                  |       |j'                          t        j(                         | _        | j*                  j'                          | j*                  j-                  d       | j*                  j/                  dd       |j1                  | j*                  ddd       t        j(                         | _        | j2                  j'                          | j2                  j-                  d       | j2                  j/                  dd       | j                  r| j2                  j5                  d       n| j2                  j5                  d	       |j1                  | j2                  ddd       t7        j8                         | _
        | j;                          t=        j>                         jA                  | j                  d
| jB                         tD        jF                  jI                  d      }|jK                  tD        jL                  jN                  d       | _(        t=        j>                         jA                  | jP                  d| jR                         t=        j>                         jA                  | d| jT                         | jW                          y )Nclockmargin   )orientationTg      ?F2   P   notify::clockz/etc/localtime)pathchangeddestroy),superr   __init__get_style_context	add_class
set_halignr   AlignSTARTset_propertyr   low_resr
   get_show_clockaway_messageBoxOrientationVERTICALaddshowLabellabelset_line_wrapset_alignment
pack_start	msg_labelset_max_width_charsr   	WallClockset_clock_formatr	   con_tracker_getconnecton_clock_changedr   Filenew_for_pathmonitor_fileFileMonitorFlagsNONE
tz_monitoron_tz_changed
on_destroyupdate_clock)selfr%   initial_monitorr#   boxtz	__class__s         (/usr/share/cinnamon-screensaver/clock.pyr   zClockWidget.__init__   sS   k4)/: **73		((A&
&&((gg#//":":;
YY[




  &

  c*tzz42$$T*$$S#.<<NN..r2NN..r2t~~tT15$..0
  "**4::+:+/+@+@	B XX""(8"9//#*>*>*C*CTJ  "**4??+4+/+=+=	? 	  "**4+4+/??	< 	    c           	      .   d}d}t        j                         r)t        j                         }t        j                         }nF| j                  j                         }| j                  j                         }|j                  dd      }t        j                  j                  t        j                               }t        j                  j                  t        j                               }| j                  rZ|j                         dz  }|j                         dz  }|j                  t!        |             |j                  t!        |             d|j#                         d|d|j#                         d|d	}| j                  j%                  |       y )	N z%lz%-lQ?<b><span font_desc="z" foreground="#FFFFFF">z </span></b>
<b><span font_desc="z</span></b>)r
   get_use_custom_formatget_custom_date_formatget_custom_time_formatr   get_default_date_formatget_default_time_formatreplacer   FontDescriptionfrom_stringget_time_fontget_date_fontr#   get_sizeset_sizeint	to_stringset_format_string)r@   date_formattime_format	time_font	date_font	time_size	date_sizes          rE   r3   zClockWidget.set_clock_formatQ   s5   ))+"99;K"99;K**<<>K**<<>K &--dE:K))55h6L6L6NO	))55h6L6L6NO	<<!**,s2I!**,s2Is9~.s9~. ""$k93F3F3H+W 	

$$[1rF   c                 $    | j                          y Nr?   )r@   r   pspecs      rE   r6   zClockWidget.on_clock_changedo       rF   c                 $    | j                          y ra   rb   )r@   monitorfileotherevents        rE   r=   zClockWidget.on_tz_changedr   rd   rF   c                    t        j                  t        j                         d      }t        j
                  j                  t        j                               }| j                  r-|j                         dz  }|j                  t        |             | j                  rO| j                  dk7  r@t        j                         }dj                  |j!                         | j                  |      }nd|j!                         d|d}| j"                  j%                  | j&                  j)                                | j*                  j%                  |       y )NrI   rH   z<span font_desc="{0}"><b><span foreground="#CCCCCC">{1}</span></b>
<b><span font_size="smaller" foreground="#ACACAC">  ~ {2}</span></b></span>
 rJ   z" foreground="#CCCCCC">z</span></b>
 )r   markup_escape_textr
   get_default_away_messager   rQ   rR   get_message_fontr#   rU   rV   rW   r%   r   get_user_display_nameformatrX   r,   
set_markupr   	get_clockr0   )r@   default_messagefont_messagemsg_size	user_namemarkups         rE   r?   zClockWidget.update_clocku   s   1183T3T3VXZ[,,889R9R9TU<<#,,.4H!!#h-0!2!2b!8335I !'!++-t/@/@)!M  #,,.AF 	

djj2245!!&)rF   c                 L    | j                   sy || _        | j                          y ra   )r   r%   r?   )r@   msgs     rE   set_messagezClockWidget.set_message   s     zzrF   c                 b   t        j                         j                  | j                  d| j                         t        j                         j                  | j
                  d| j                         t        j                         j                  | d| j                         d | _        d | _        y )Nr   r   r   )r	   r4   
disconnectr   r6   r<   r=   r>   )r@   datas     rE   r>   zClockWidget.on_destroy   s      "--djj.=.2.C.C	E 	  "--doo.7.2.@.@	B 	  "--d.7.2oo	? 
rF   )Nr   F)rH   ra   )__name__
__module____qualname____doc__r   r3   r6   r=   r?   rz   r>   __classcell__)rD   s   @rE   r   r      s,    	8t2<*,rF   r   N)gi.repositoryr   r   r   r   r   utilr   r	   r
   
baseWindowr   floatingr   	MAX_WIDTHMAX_WIDTH_LOW_RESr    rF   rE   <module>r      s5    A @ * * ! 	 T(J TrF   