diff frontends/wix/param.py @ 183:9ee4a1d0d7fb

Added auto(dis)connect params + misc - parameters,xmlui: "bool" type is now managed - parameters,xmlui: categories now use label in addition of name - QuickFrontend: auto(dis)connection management - plugin XEP-0045: an error dialog is now show in frontend if room cannot be joined - Wix: fixed unproper close event management
author Goffi <goffi@goffi.org>
date Wed, 18 Aug 2010 15:57:26 +0800
parents 7452ac3818e7
children
line wrap: on
line diff
--- a/frontends/wix/param.py	Wed Aug 18 12:45:48 2010 +0800
+++ b/frontends/wix/param.py	Wed Aug 18 15:57:26 2010 +0800
@@ -61,30 +61,37 @@
         
         for param in cat_dom.documentElement.getElementsByTagName("param"):
             name = param.getAttribute("name")
+            label = param.getAttribute("label")
             type = param.getAttribute("type")
             value = param.getAttribute("value")
             sizer = wx.BoxSizer(wx.HORIZONTAL)
             if type=="string":
-                label=wx.StaticText(panel, -1, name+" ")
+                label=wx.StaticText(panel, -1, (label or name)+" ")
                 ctrl = wx.TextCtrl(panel, -1, value)
                 sizer.Add(label)
             elif type=="password":
-                label=wx.StaticText(panel, -1, name+" ")
+                label=wx.StaticText(panel, -1, (label or name)+" ")
                 ctrl = wx.TextCtrl(panel, -1, value, style=wx.TE_PASSWORD)
                 sizer.Add(label)
+            elif type=="bool":
+                ctrl = wx.CheckBox(panel, -1, label or name, style = wx.CHK_2STATE)
+                ctrl.SetValue(value=="true")
             elif type=="button":
                 ctrl = wx.Button(panel, -1, value)
                 ctrl.callback_id = param.getAttribute("callback_id")
             else:
                 error(_("FIXME FIXME FIXME"))  #FIXME !
                 raise NotImplementedError
-            ctrl.param_id=(name, category)
+            if name:
+                ctrl.param_id=(name, category)
+                self.ctl_list[(name, category)] = ctrl
             sizer.Add(ctrl, 1, flag=wx.EXPAND)
-            self.ctl_list[(name, category)] = ctrl
             panel.sizer.Add(sizer, flag=wx.EXPAND)
 
             if type=="string" or type=="password":
                 panel.Bind(wx.EVT_TEXT, self.onTextChanged, ctrl)
+            elif type=="bool":
+                panel.Bind(wx.EVT_CHECKBOX, self.onCheckBoxClicked, ctrl)
             elif type=="button":
                 panel.Bind(wx.EVT_BUTTON, self.onButtonClicked, ctrl)
 
@@ -94,7 +101,7 @@
         cat_dom.unlink()
 
     def onTextChanged(self, event):
-        """Called when a paramated is modified"""
+        """Called when a string paramater is modified"""
         self.modified[event.GetEventObject().param_id]=event.GetString()
         
         ### FIXME # Some hacks for better presentation, should be generic # FIXME ###
@@ -105,8 +112,13 @@
 
         event.Skip()
         
+    def onCheckBoxClicked(self, event):
+        """Called when a bool paramater is modified"""
+        self.modified[event.GetEventObject().param_id]="true" if event.GetEventObject().GetValue() else "false"
+        event.Skip()
+        
     def onButtonClicked(self, event):
-        """Called when a paramated is modified"""
+        """Called when a button paramater is modified"""
         self.__save_parameters()
         name, category = event.GetEventObject().param_id
         callback_id = event.GetEventObject().callback_id