source: lliurex-gdrive/trunk/fuentes/lliurex-gdrive-core.install/usr/bin/lliurex-gdrive-endsession @ 4087

Last change on this file since 4087 was 4087, checked in by jrpelegrina, 3 years ago

Updated changelog

  • Property svn:executable set to *
File size: 2.4 KB
Line 
1#!/usr/bin/python
2
3import os
4import syslog
5import dbus
6from dbus.mainloop.glib import DBusGMainLoop
7
8from gi.repository import Gtk,GObject,Gio
9
10import signal
11signal.signal(signal.SIGINT, signal.SIG_DFL)
12
13import lliurex.lliurexgdrive
14
15LOCK_INDICATOR="/tmp/lgdIndicator.lock"
16LOCK_GUI="/tmp/lgdGUI.lock"
17
18
19class Service:
20       
21       
22        def __init__(self):
23
24                syslog.syslog("iniciando")
25                DBusGMainLoop(set_as_default=True)
26                self.session_bus = dbus.SessionBus()
27               
28                # ###########################
29                #CAPTURE END SESSION SIGNAL
30                # ###########################
31                proxy = self.session_bus.get_object('org.gnome.SessionManager','/org/gnome/SessionManager')
32                proxy=dbus.Interface(proxy,"org.gnome.SessionManager")
33
34                d_id=os.getenv("DESKTOP_AUTOSTART_ID")
35                if d_id==None:
36                        d_id="lliurex-gdrive"
37
38                print d_id
39                self.client_id=proxy.RegisterClient("lliurex-gdrive",d_id)
40                print self.client_id
41
42                proxy = self.session_bus.get_object('org.gnome.SessionManager',self.client_id)
43                print proxy
44                proxy=dbus.Interface(proxy,"org.gnome.SessionManager.ClientPrivate")
45                print proxy
46                proxy.connect_to_signal("EndSession",self.on_end_session)
47               
48                proxy.connect_to_signal("QueryEndSession",self.on_query_end_session)
49
50
51        def on_query_end_session(self,sender):
52               
53               
54                proxy = self.session_bus.get_object('org.gnome.SessionManager',self.client_id)
55                proxy=dbus.Interface(proxy,"org.gnome.SessionManager.ClientPrivate")
56                proxy.EndSessionResponse(True,"saving session.")
57
58        def on_end_session(self,sender):
59               
60                self.LliurexGoogleDriveManager=lliurex.lliurexgdrive.LliurexGoogleDriveManager()
61                self.delete_lock()
62                self.dismount()
63                proxy = self.session_bus.get_object('org.gnome.SessionManager',self.client_id)
64                proxy=dbus.Interface(proxy,"org.gnome.SessionManager.ClientPrivate")
65                proxy.EndSessionResponse(True,"unregistering")
66                Gtk.main_quit()
67
68        def dismount(self):
69               
70                if self.LliurexGoogleDriveManager.check_google_connection():
71                        for profile in self.LliurexGoogleDriveManager.profiles_config:
72                                mountpoint=self.LliurexGoogleDriveManager.profiles_config[profile]["mountpoint"]
73                                status=self.LliurexGoogleDriveManager.check_mountpoint_status(mountpoint)
74                                if status["status"]:
75                                        self.LliurexGoogleDriveManager.dismount_mountpoint(mountpoint)
76                #return
77                       
78        def delete_lock(self):
79                               
80                if os.path.exists(LOCK_INDICATOR):
81                        os.remove(LOCK_INDICATOR)
82
83                if os.path.exists(LOCK_GUI):
84                        os.remove(LOCK_GUI)
85               
86                #return
87
88if __name__=="__main__":
89       
90        ms = Service()
91        Gtk.main()
92                       
Note: See TracBrowser for help on using the repository browser.