Forgot about trunk folder
[ussd-widget] / ussd-widget / src / usr / lib / hildon-desktop / ussd-widget.py
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3 import gtk
4 import hildon
5 import hildondesktop
6 import os
7 from subprocess import *
8
9 class UssdConfigDialog(gtk.Dialog):
10     def __init__(self, queryNumber):
11         gtk.Dialog.__init__(self, "Hello World", None,
12                             gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_NO_SEPARATOR,
13                             ("Close", gtk.RESPONSE_OK))
14         self.ussdNumber = hildon.Entry(gtk.HILDON_SIZE_AUTO)
15         self.ussdNumber.set_text(queryNumber)
16         self.vbox.add(gtk.Label("USSD number"))
17         self.vbox.add(self.ussdNumber)
18         self.show_all()
19         self.parent
20
21 def get_ussd_number():
22     try :
23         config = open(os.getenv("HOME")+"/.ussdWidget.conf","r")
24         config.readline()
25         config.readline()
26         number = config.readline().strip()
27         config.close()
28         return number
29     except  IOError:
30         return None
31
32 def ussd_renew(button):
33     query = get_ussd_number()
34     if query :
35         p = Popen(['sudo', 'python', '/usr/bin/ussdquery.py', query], stdout=PIPE)
36         reply = p.communicate()[0].strip()
37         if reply == "" :
38             reply = "   Error   "
39     else :
40         reply = " Bad config "
41     button.set_label(reply)
42
43 def on_show_settings(widget):
44     queryNumber = get_ussd_number()
45     if queryNumber == None :
46         queryNumber = ""
47
48     dialog = UssdConfigDialog(queryNumber)
49     dialog.run()
50
51     config = open(os.getenv("HOME")+"/.ussdWidget.conf","w")
52     config.writelines(["# Parameters are taken by line number, do not move them\n", "# USSD query to be run by widget\n", dialog.ussdNumber.get_text(), "\n"])
53     config.close()
54
55     dialog.destroy()
56
57 class UssdWidgetPlugin(hildondesktop.HomePluginItem):
58     def __init__(self):
59         hildondesktop.HomePluginItem.__init__(self)
60         button = gtk.Button("   Error   ")
61         button.connect("clicked", ussd_renew)
62         button.show_all()
63         self.add(button)
64
65         self.set_settings(True)
66         self.connect("show-settings", on_show_settings)    
67
68         ussd_renew(button)
69
70 hd_plugin_type = UssdWidgetPlugin
71
72 # The code below is just for testing purposes.
73 # It allows to run the widget as a standalone process.
74 if __name__ == "__main__":
75     import gobject
76     gobject.type_register(hd_plugin_type)
77