2 # -*- coding: utf-8 -*-
7 from subprocess import *
9 class UssdConfigDialog(gtk.Dialog):
10 def __init__(self, queryNumber):
11 gtk.Dialog.__init__(self, "USSD widget", None,
12 gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_NO_SEPARATOR,
13 ("Save", 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)
21 def get_ussd_number():
23 config = open(os.getenv("HOME")+"/.ussdWidget.conf","r")
26 number = config.readline().strip()
32 def ussd_renew(button):
33 query = get_ussd_number()
35 p = Popen(['python', '/usr/bin/ussdquery.py', query], stdout=PIPE)
36 reply = p.communicate()[0].strip()
40 reply = " Bad config "
41 button.set_label(reply)
43 def on_show_settings(widget):
44 queryNumber = get_ussd_number()
45 if queryNumber == None :
48 dialog = UssdConfigDialog(queryNumber)
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"])
57 if queryNumber == "" :
58 widget.button.set_label("Click to update")
60 class UssdWidgetPlugin(hildondesktop.HomePluginItem):
62 hildondesktop.HomePluginItem.__init__(self)
63 query = get_ussd_number()
65 self.button = gtk.Button("Click to update")
67 self.button = gtk.Button("Configure me")
68 self.button.connect("clicked", ussd_renew)
69 self.button.show_all()
72 self.set_settings(True)
73 self.connect("show-settings", on_show_settings)
75 hd_plugin_type = UssdWidgetPlugin
77 # The code below is just for testing purposes.
78 # It allows to run the widget as a standalone process.
79 if __name__ == "__main__":
81 gobject.type_register(hd_plugin_type)