
    Eg
                     H    d dl mZmZmZ d dlmZ d dlmZ  G d dee      Zy)    )GioGLibCScreensaver)
BaseClient)LoginInterfacec                   F     e Zd ZdZdZdZ fdZd Zd	dZd	dZ	d Z
 xZS )
ConsoleKitClientzk
    Client for communicating with ConsoleKit - this is a backup
    to logind, if it's not available.
    zorg.freedesktop.ConsoleKitz#/org/freedesktop/ConsoleKit/Managerc                     t         t        |   t        j                  j
                  t        j                  | j                  | j                         d| _
        d| _        y)zD
        We first try to connect to the ConsoleKit manager.
        N)superr	   __init__r   BusTypeSYSTEMr   ConsoleKitManagerProxy
CK_SERVICECK_MANAGER_PATHsession_proxy
session_id)self	__class__s    =/usr/share/cinnamon-screensaver/dbusdepot/consoleKitClient.pyr   zConsoleKitClient.__init__   sL     	.s{{/A/A/;/R/R/3/3/C/C	E
 "    c           	         | j                   j                         | _        	 t        j                  j                  t        j                  j                  t        j                  j                  | j                  | j                  d| j                  d      | _        y# t        j                  $ r d| _        | j!                          Y yw xY w)z
        If our manager connection succeeds, we ask it for the current session id and
        then attempt to connect to its session interface.
        N)proxycall_get_current_session_syncr   r   ConsoleKitSessionProxynew_for_busr   r   r   DBusProxyFlagsNONEr   on_session_readyr   r   Error
on_failure)r   s    r   on_client_setup_completez)ConsoleKitClient.on_client_setup_complete   s    
 **BBD
	!-!D!D!P!PQTQ\Q\QcQcQTQcQcQhQhQUQ`Q`QUQ`Q`QUQUQfQfQU"WD zz 	!%DOO	s   A8B *CCc                 :    t         j                  j                  |       _         j                  j	                  d fd        j                  j	                  d fd        j                  j	                  d j
                          j                  dd       y)	z
        Once we're connected to the session interface, we can respond to signals sent from
        it - used primarily when returning from suspend, hibernation or the login screen.
        unlockc                 &    j                  d      S )Nr$   emitr   r   s    r   <lambda>z3ConsoleKitClient.on_session_ready.<locals>.<lambda>7   s    499X;N r   lockc                 &    j                  d      S )Nr*   r&   r(   s    r   r)   z3ConsoleKitClient.on_session_ready.<locals>.<lambda>8   s    69J r   zactive-changedstartup-statusTN)r   r   new_for_bus_finishr   connecton_active_changedr'   )r   objectresultdatas   `   r   r   z!ConsoleKitClient.on_session_ready0   sy    
 *@@SSTZ[""8-NO""6+JK""#3T5K5KL		"D)r   c                 ,    |r| j                  d       y y )Nactiver&   )r   r   r4   r2   s       r   r/   z"ConsoleKitClient.on_active_changed=   s    IIh r   c                 (    | j                  dd       y )Nr,   Fr&   )r   argss     r   r!   zConsoleKitClient.on_failureA   s    		"E*r   )N)__name__
__module____qualname____doc__r   r   r   r"   r   r/   r!   __classcell__)r   s   @r   r	   r	   	   s-     3J;O
&* +r   r	   N)	gi.repositoryr   r   r   dbusdepot.baseClientr   dbusdepot.loginInterfacer   r	    r   r   <module>r@      s!    2 1 + 39+~z 9+r   