Added ability to set options for ussdqueru.py in widget
[ussd-widget] / ussd-widget / src / usr / lib / hildon-desktop / ussd-widget.py
index 7898b41..0256a0c 100755 (executable)
@@ -31,8 +31,8 @@ ussd_languages = ["German", "English", "Italian", "French", "Spanish", "Dutch",
 class USSD_Controller:
        def __init__( self, widget ) :
                self.widget = widget
-               # number, parser, chain, interval, regexp, width, execute_at_start, retry pattern, font, name, language, show_message_box, message_box_parser 
-               self.default_config = ["", "", "", 0, "", 0, True, [], pango.FontDescription("Nokia Sans 18"), _("Click to update"), 15, False, ""]
+               # number, parser, chain, interval, regexp, width, execute_at_start, retry pattern, font, name, language, show_message_box, message_box_parser, additional arguments 
+               self.default_config = ["", "", "", 0, "", 0, True, [], pango.FontDescription("Nokia Sans 18"), _("Click to update"), 15, False, "", ""]
                self.config = self.default_config
                self.timeout_version = 0
                self.retry_version = 0
@@ -85,6 +85,7 @@ class USSD_Controller:
                fconfig.writelines(["#Widget name\n", "name="+self.config[9], "\n"])
                fconfig.writelines(["#Show banner\n", "show_box="+str(self.config[11]), "\n"])
                fconfig.writelines(["#USSD reply language\n", "language="+str(self.config[10]), "\n"])
+               fconfig.writelines(["#Additional ussdquery.py arguments\n", "args="+self.config[13], "\n"])
                fconfig.close()
 
                fcntl.flock(lockf,fcntl.LOCK_UN)
@@ -200,6 +201,8 @@ class USSD_Controller:
                                        except:
                                                error = True
                                                print _("Error reading config on line %(line)d. Integer expected.")%{"line":i}
+                               elif line[0] == "args" :
+                                       self.config[13] = line[1].strip()
                                else :
                                        error = True
                                        print _("Error reading config on line %(line)d. Unexpected variable: ")%{"line":i}+line[0]
@@ -270,7 +273,8 @@ class USSD_Controller:
                        dialog.wname.get_text(),
                        dialog.language.get_active(),
                        dialog.show_box.get_active(),
-                       dialog.b_parser.get_text()
+                       dialog.b_parser.get_text(),
+                       dialog.args.get_text()
                ]
 
                widget.set_bg_color(dialog.bg_color)
@@ -315,7 +319,7 @@ class USSD_Controller:
        def call_external_script( self, ussd_code, language ):
                self.cb_ready = 0
                self.cb_reply = "";
-               p = Popen(['/usr/bin/ussdquery.py', ussd_code, "-l", ussd_languages[language]], stdout=PIPE)
+               p = Popen(['/usr/bin/ussdquery.py', ussd_code, "-l", ussd_languages[language]] + smart_split_string(self.config[13],"%"), stdout=PIPE)
                gobject.io_add_watch( p.stdout, gobject.IO_IN | gobject.IO_PRI | gobject.IO_HUP | gobject.IO_ERR , self.callback_ussd_data )
 
        def ussd_renew(self, widget, event):
@@ -437,7 +441,8 @@ class UssdConfigDialog(gtk.Dialog):
                self.widthEdit = hildon.NumberEditor(0, 1000)
                self.widthEdit.set_value(config[5])
                self.retryEdit = hildon.Entry(gtk.HILDON_SIZE_AUTO)
-
+               self.args = hildon.Entry(gtk.HILDON_SIZE_AUTO)
+               self.args.set_text(config[13])
 
                selector = hildon.TouchSelector(text=True)
                for i in ussd_languages:
@@ -496,7 +501,7 @@ class UssdConfigDialog(gtk.Dialog):
                
                numberBox = gtk.HBox()
                numberLabel = gtk.Label(_("USSD number"))
-               numberLabel.set_alignment(0,0)
+               numberLabel.set_alignment(0,0.6)
                numberLabel.set_size_request(100, -1)
                numberhelp.set_size_request(1, -1)
                self.ussdNumber.set_size_request(200, -1)
@@ -511,7 +516,7 @@ class UssdConfigDialog(gtk.Dialog):
 
                nameBox = gtk.HBox()
                nameLabel = gtk.Label(_("Name"))
-               nameLabel.set_alignment(0,0)
+               nameLabel.set_alignment(0,0.6)
                nameLabel.set_size_request(100, -1)
                self.wname.set_size_request(200, -1)
                nameBox.add(nameLabel)
@@ -520,7 +525,7 @@ class UssdConfigDialog(gtk.Dialog):
 
                parserBox = gtk.HBox()
                parserLabel = gtk.Label(_("Parser for widget"))
-               parserLabel.set_alignment(0,0)
+               parserLabel.set_alignment(0,0.6)
                parserLabel.set_size_request(200, -1)
                phelp.set_size_request(10, -1)
                parserBox.add(parserLabel)
@@ -538,7 +543,7 @@ class UssdConfigDialog(gtk.Dialog):
 
                chainBox = gtk.HBox()
                chainLabel = gtk.Label(_("Chain"))
-               chainLabel.set_alignment(0,0)
+               chainLabel.set_alignment(0,0.6)
                chainLabel.set_size_request(200, -1)
                chelp.set_size_request(10, -1)
                chainBox.add(chainLabel)
@@ -548,7 +553,7 @@ class UssdConfigDialog(gtk.Dialog):
 
                regexpBox = gtk.HBox()
                regexpLabel = gtk.Label(_("RegExp"))
-               regexpLabel.set_alignment(0,0)
+               regexpLabel.set_alignment(0,0.6)
                regexpLabel.set_size_request(200, -1)
                reghelp.set_size_request(10, -1)
                regexpBox.add(regexpLabel)
@@ -558,7 +563,7 @@ class UssdConfigDialog(gtk.Dialog):
 
                widthBox = gtk.HBox()
                widthLabel = gtk.Label(_("Max. width"))
-               widthLabel.set_alignment(0,0)
+               widthLabel.set_alignment(0,0.6)
                symbolsLabel = gtk.Label(_("symbols"))
                widthLabel.set_size_request(140, -1)
                self.widthEdit.set_size_request(50, -1)
@@ -570,7 +575,7 @@ class UssdConfigDialog(gtk.Dialog):
 
                updateBox = gtk.HBox()
                updateLabel = gtk.Label(_("Update every"))
-               updateLabel.set_alignment(0,0)
+               updateLabel.set_alignment(0,0.6)
                minutesLabel = gtk.Label(_("minutes"))
                updateLabel.set_size_request(140, -1)
                self.update_interval.set_size_request(50, -1)
@@ -582,7 +587,7 @@ class UssdConfigDialog(gtk.Dialog):
 
                retryBox = gtk.HBox()
                retryLabel = gtk.Label(_("Retry pattern"))
-               retryLabel.set_alignment(0,0)
+               retryLabel.set_alignment(0,0.6)
                retryLabel.set_size_request(200, -1)
                retryhelp.set_size_request(10, -1)
                retryBox.add(retryLabel)
@@ -590,6 +595,11 @@ class UssdConfigDialog(gtk.Dialog):
                vbox.add(retryBox)
                vbox.add(self.retryEdit)                
                
+               argsLabel = gtk.Label(_("Additional ussdquery.py options"))
+               argsLabel.set_alignment(0,0.6)
+               vbox.add(argsLabel)
+               vbox.add(self.args)             
+               
                viewBox = gtk.HBox()
                viewBox.add(self.fontButton)
                viewBox.add(self.textColorButton)