diff frontends/primitivus/primitivus @ 166:b318d2b58887

Primitivus: parameters management via XMLUI
author Goffi <goffi@goffi.org>
date Mon, 09 Aug 2010 21:39:41 +0800
parents 2fa58703f1b7
children a2655a0a4eac
line wrap: on
line diff
--- a/frontends/primitivus/primitivus	Mon Aug 09 21:36:31 2010 +0800
+++ b/frontends/primitivus/primitivus	Mon Aug 09 21:39:41 2010 +0800
@@ -81,7 +81,7 @@
     
     def __init__(self):
         self.CM = QuickContactManagement() #FIXME: not the best place
-        QuickApp.__init__(self) 
+        QuickApp.__init__(self)
         
         ## main loop setup ##
         self.main_widget = ProfileManager(self)
@@ -183,6 +183,7 @@
         general = _("General")
         menu.addMenu(general, _("Connect"), self.onConnectRequest)
         menu.addMenu(general, _("Disconnect"), self.onDisconnectRequest)
+        menu.addMenu(general, _("Parameters"), self.onParam)
         menu.addMenu(general, _("About"), self.onAboutRequest)
         menu.addMenu(general, _("Exit"), self.onExitRequest, 'ctrl x')
         contact = _("Contact")
@@ -236,8 +237,28 @@
             self.notBar.addPopUp(pop_up_widget)
 
     def notify(self, message):
+        """"Notify message to user via notification bar"""
         self.notBar.addMessage(message)
 
+    def addWindow(self, widget):
+        """Display a window if possible,
+        else add it in the notification bar queue
+        @param widget: BoxWidget"""
+        assert(len(self.center_part.widget_list)<=2)
+        wid_idx = len(self.center_part.widget_list)-1
+        self.center_part.widget_list[wid_idx] = widget
+        self.menu_roller.removeMenu(_('Chat menu'))
+        self.contactList.unselectAll()
+        self.redraw()
+
+    def removeWindow(self):
+        """Remove window showed on the right column"""
+        #TODO: to a better Window management than this crappy hack
+        assert(len(self.center_part.widget_list)<=2)
+        wid_idx = len(self.center_part.widget_list)-1
+        self.center_part.widget_list[wid_idx] = urwid.Filler(urwid.Text(''))
+        self.redraw()
+    
     def contactSelected(self, contact_list):
         contact = contact_list.get_contact()
         if contact:
@@ -299,11 +320,7 @@
                 misc['target'] = data['target']
                 misc['action_back'] = self.bridge.gatewayRegister
             ui = XMLUI(self, title=title, xml_data = data['xml'], misc = misc)
-            assert(len(self.center_part.widget_list)==2)
-            self.center_part.widget_list[1] = ui
-            self.menu_roller.removeMenu(_('Chat menu'))
-            self.contactList.selected = None
-            self.redraw()
+            self.addWindow(ui)
         else:
             error (_("FIXME FIXME FIXME: type [%s] not implemented") % type)
             raise NotImplementedError
@@ -341,6 +358,10 @@
     def onDisconnectRequest(self, menu):
         self.bridge.disconnect(self.profile)
 
+    def onParam(self, menu):
+        params = XMLUI(self,xml_data=self.bridge.getParamsUI(self.profile))
+        self.addWindow(params)
+
     def onExitRequest(self, menu):
         raise urwid.ExitMainLoop()