source: lliurex-gdrive/trunk/fuentes/lliurex-gdrive-core.install/usr/bin/lliurex-gdrive-autostart @ 6334

Last change on this file since 6334 was 6334, checked in by jrpelegrina, 2 years ago

New feature: Sync specific folder

  • Property svn:executable set to *
File size: 3.8 KB
Line 
1#!/usr/bin/env python
2import lliurex.lliurexgdrive
3import os
4import subprocess
5import syslog
6import dbus
7from dbus.mainloop.glib import DBusGMainLoop
8
9import gi
10gi.require_version("Gtk","3.0")
11from gi.repository import Gtk,GObject,Gio
12
13import signal
14signal.signal(signal.SIGINT, signal.SIG_DFL)
15
16PROFILES_PATH="~/.config/lliurex-google-drive-profiles/configProfiles"
17DISABLE_INDICATOR="~/.config/lliurex-google-drive-profiles/disableIndicator"
18LOCK_INDICATOR="~/.config/lliurex-google-drive-profiles/lgdIndicator.lock"
19LOCK_GUI="~/.config/lliurex-google-drive-profiles/lgdGUI.lock"
20
21
22class LliurexGdriveAutostart:
23
24        def __init__(self):
25               
26                self.LliurexGoogleDriveManager=lliurex.lliurexgdrive.LliurexGoogleDriveManager()
27                self.disable_indicator=os.path.expanduser(DISABLE_INDICATOR)
28                self.profiles_path=os.path.expanduser(PROFILES_PATH)
29                self.lock_gui=os.path.expanduser(LOCK_GUI)
30                self.lock_indicator=os.path.expanduser(LOCK_INDICATOR)
31
32                self.launch_endsession()
33                self.mount_drives()
34                self.launch_indicator()
35               
36        #def __init__
37
38        def mount_drives(self):
39
40                if os.path.exists(self.profiles_path):
41                        if len(self.LliurexGoogleDriveManager.profiles_config):
42                                self.LliurexGoogleDriveManager.mount_drives()
43
44        #def mount_drives               
45               
46       
47        def launch_indicator(self):
48               
49                self.delete_lock()
50                if len(self.LliurexGoogleDriveManager.profiles_config):
51                        if not os.path.exists(self.disable_indicator):
52                                #os.system("/usr/bin/lliurexGdriveIndicator")
53                                subprocess.Popen(["/usr/bin/lliurexGdriveIndicator"],preexec_fn=os.setpgrp)
54                       
55        #def launch_indicator           
56                       
57        def launch_endsession(self):
58
59                syslog.syslog("INIT GDRIVE")
60                DBusGMainLoop(set_as_default=True)
61                self.session_bus = dbus.SessionBus()
62               
63                # ###########################
64                #CAPTURE END SESSION SIGNAL
65                # ###########################
66                proxy = self.session_bus.get_object('org.gnome.SessionManager','/org/gnome/SessionManager')
67                proxy=dbus.Interface(proxy,"org.gnome.SessionManager")
68
69                d_id=os.getenv("DESKTOP_AUTOSTART_ID")
70                if d_id==None:
71                        d_id="lliurex-gdrive"
72
73                print d_id
74                self.client_id=proxy.RegisterClient("lliurex-gdrive",d_id)
75                print self.client_id
76                syslog.syslog(self.client_id)
77                proxy = self.session_bus.get_object('org.gnome.SessionManager',self.client_id)
78                print proxy
79                self.cp_proxy=dbus.Interface(proxy,"org.gnome.SessionManager.ClientPrivate")
80               
81                self.cp_proxy.connect_to_signal("QueryEndSession",self.on_query_end_session)
82                self.cp_proxy.connect_to_signal("EndSession",self.on_end_session)
83                self.cp_proxy.connect_to_signal("Stop",self.on_stop_session)
84
85        #def launch_endsession 
86
87
88        def on_query_end_session(self,sender):
89               
90                self.cp_proxy.EndSessionResponse(True,"saving session.")
91
92        #def on_query_end_session       
93
94        def on_end_session(self,sender):
95               
96                self.dismount()
97                self.delete_lock()
98                self.quit()
99                self.cp_proxy.EndSessionResponse(True,"unregistering")
100
101        #def on_query_end_session       
102
103        def on_stop_session(self):
104
105                sys.exit(0)     
106
107        #def on_stop_session   
108               
109        def dismount(self):
110               
111                if len(self.LliurexGoogleDriveManager.profiles_config):
112                        if self.LliurexGoogleDriveManager.check_google_connection():
113                                for profile in self.LliurexGoogleDriveManager.profiles_config:
114                                        mountpoint=self.LliurexGoogleDriveManager.profiles_config[profile]["mountpoint"]
115                                        status=self.LliurexGoogleDriveManager.check_mountpoint_status(mountpoint)
116                                        if status["status"]:
117                                                self.LliurexGoogleDriveManager.dismount_mountpoint(mountpoint,profile)
118
119        #def dismount                           
120                                       
121        def delete_lock(self):
122                               
123                syslog.syslog("GDRIVE-TOKEN")
124               
125                if os.path.exists(self.lock_indicator):
126                        os.remove(self.lock_indicator)
127
128                if os.path.exists(self.lock_gui):
129                        os.remove(self.lock_gui)       
130       
131        #def delete_lock               
132
133        def quit(self):
134               
135                Gtk.main_quit()         
136               
137        #def quit       
138
139if __name__=="__main__":
140
141        llxgd=LliurexGdriveAutostart()
142        #llxgd.mount_drives()
143        #llxgd.launch_indicator()       
144        #llxgd.launch_endsession()
145        Gtk.main()
Note: See TracBrowser for help on using the repository browser.