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

Last change on this file since 5574 was 5574, checked in by jrpelegrina, 21 months ago

Clean cache when mountpoint is dismounted

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