source: lliurex-connect/trunk/fuentes/lliurex-connect/usr/share/lliurex-connect/connectionAssistant.py @ 5147

Last change on this file since 5147 was 5147, checked in by joamuran, 4 years ago

fixed

  • Property svn:executable set to *
File size: 5.6 KB
Line 
1#!/usr/bin/env python3
2
3# http://candidtim.github.io/appindicator/2014/09/13/ubuntu-appindicator-step-by-step.html
4# Menus: http://zetcode.com/gui/pygtk/
5
6import os
7import gi
8gi.require_version("Gtk", "3.0")
9gi.require_version("WebKit", "3.0")
10import subprocess
11from gi.repository import Gtk
12from gi.repository import GdkPixbuf
13gi.require_version("AppIndicator3", "0.1")
14from gi.repository import AppIndicator3 as appindicator
15import iniparse
16from appdirs import *
17
18import gettext
19gettext.textdomain('lliurex-connect')
20_ = gettext.gettext
21
22
23class connectionAssistant:
24    def __init__(self):
25        self.APPINDICATOR_ID = 'myappindicator'
26        self.ManagedConnection=None
27       
28        os.chdir("/usr/share/lliurex-connect")
29        pass
30   
31    def main(self):
32        indicator = appindicator.Indicator.new(self.APPINDICATOR_ID, os.path.abspath('img/tabletllxcon.png'), appindicator.IndicatorCategory.SYSTEM_SERVICES)
33        indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
34        indicator.set_menu(self.build_menu())
35        Gtk.main()
36        pass
37
38   
39    def checkNWManaged(self):
40        with open("/etc/NetworkManager/NetworkManager.conf",'r') as fin:
41            for line in fin:
42                if (line.find("managed=true")!=-1):
43                    return True;
44            return False
45       
46   
47    def createStaticMenuOption(self, image, label, cb):
48       
49        pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
50            filename=os.path.abspath(image), 
51            width=16, 
52            height=16, 
53            preserve_aspect_ratio=True)
54   
55        img=Gtk.Image.new_from_pixbuf(pixbuf)
56       
57        item=Gtk.ImageMenuItem()
58        item.set_image(img)
59        item.set_label(label)
60        item.set_always_show_image(True)
61           
62        item.connect('activate', cb)
63        return item
64        pass;
65   
66    def build_menu(self):
67        menu=Gtk.Menu()
68       
69        # Item 1: Enable/Disable wifi
70       
71        self.ManagedConnection=self.checkNWManaged();
72        if (self.ManagedConnection):
73            item1Text=_("Disable Wireless Management");
74            icon="img/wifion.png";
75        else:
76            item1Text=_("Enable Wireless Management");
77            icon="img/wifioff.png";
78       
79       
80        item1=self.createStaticMenuOption(icon, item1Text, self.cbSetupWifi);
81        menu.append(item1)
82       
83        item2=self.createStaticMenuOption('img/mirror.png', _("Mirror Android on this computer"), self.cbMirror);
84        menu.append(item2)
85       
86        item3=self.createStaticMenuOption('img/xsdl.png', _("Launch Application into Android XSDL Server"), self.cbXSDL);
87        menu.append(item3)
88       
89        itemquit=self.createStaticMenuOption('img/quit.png', _("Quit"), self.quit);
90        menu.append(itemquit)
91       
92        menu.show_all()
93        return menu
94   
95    def cbSetupWifi(self, widget):
96        self.ManagedConnection=self.checkNWManaged()
97        if (self.ManagedConnection):
98            command='gksudo ManageWifi.sh false';
99        else:
100            command='gksudo ManageWifi.sh true';
101   
102        proc = subprocess.Popen([command], shell=True, stdout=subprocess.PIPE)
103        (out, err) = proc.communicate()
104        '''print "out:"
105        print out
106        print "err:"
107        print err'''
108       
109        # Set up
110        self.ManagedConnection=self.checkNWManaged();
111        if (self.ManagedConnection):
112            self.set_label(_("Disable Wireless Management"));
113            icon="img/wifion.png";
114            pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
115            filename=os.path.abspath(icon), 
116            width=16, 
117            height=16, 
118            preserve_aspect_ratio=True);
119            img=Gtk.Image.new_from_pixbuf(pixbuf)
120            self.set_image(img);
121           
122        else:
123            self.set_label(_("Enable Wireless Management"));
124            icon="img/wifioff.png";
125            pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
126            filename=os.path.abspath(icon), 
127            width=16, 
128            height=16, 
129            preserve_aspect_ratio=True);
130            img=Gtk.Image.new_from_pixbuf(pixbuf)
131            self.set_image(img);
132       
133        pass
134   
135    def cbMirror(self, widget):
136        command="exec /opt/google/chrome/chrome --profile-directory=Default --app-id=hjbljnpdahefgnopeohlaeohgkiidnoe";
137        proc = subprocess.Popen([command], shell=True, stdout=subprocess.PIPE)
138        #(out, err) = proc.communicate()
139        #print "out"
140        #print out
141        #print "err"
142        #print err
143        pass
144   
145    def cbXSDL(self, widget):
146        command="/usr/xserver.sh";
147        proc = subprocess.Popen([command], shell=True, stdout=subprocess.PIPE)
148        (out, err) = proc.communicate()
149        '''print "out"
150        print out
151        print "err"
152        print err'''
153        pass
154   
155    def checkHelp(self):
156        # requires python3-appdirs
157        # requires python3-iniparse
158        configfile=user_config_dir("lliurex-connect")+"/config.ini";
159        Config=iniparse.ConfigParser();
160       
161        try:
162            print ("Reading "+str(configfile));
163            Config.read(configfile);
164            showConfig=Config.get("main", "ShowAlways")
165           
166        except Exception as e:
167            print ("Exception...");
168            showConfig='True'
169       
170        print ("showCongif is "+str(showConfig));
171       
172        if (showConfig=='True'):
173            os.system("./splash.py")
174        pass
175   
176    def quit(self, self2):
177        Gtk.main_quit()
178        pass
179       
180
181if __name__ == "__main__":
182    app=connectionAssistant()
183    app.checkHelp();
184    app.main();
185
186   
187
188
Note: See TracBrowser for help on using the repository browser.