diff frontends/wix/gateways.py @ 39:2e3411a6baad

Wix: external server management in gateways manager, SàT: bug fixes in gateway management - SàT: from twisted.words.protocols.jabber.error module imported as jab_error to avoir name colision with error log method - XEP_0100 plugin: added errback for disco info - XEP_0077 plugin: registration callback now look for "x" element (data form: see XEP-0004), and send an error message if it can't find it. - Wix: added fields for browsing external server gateways
author Goffi <goffi@goffi.org>
date Thu, 17 Dec 2009 17:29:02 +1100
parents a61beb21d16d
children a5b5fb5fc9fd
line wrap: on
line diff
--- a/frontends/wix/gateways.py	Thu Dec 17 13:13:13 2009 +1100
+++ b/frontends/wix/gateways.py	Thu Dec 17 17:29:02 2009 +1100
@@ -31,15 +31,18 @@
 But when you do this, all your messages go throught the external legacy IM server, it is a huge privacy issue (i.e.: all your messages throught the gateway can be monitored, recorded, analyzed by the external server, most of time a private company)."""
 
 class GatewaysManager(wx.Frame):
-    def __init__(self, host, gateways, title="Gateways manager"):
+    def __init__(self, host, gateways, title="Gateways manager", server=None):
         super(GatewaysManager, self).__init__(None, title=title)
 
         self.host = host
+        if server:
+            self.SetTitle(title+" (%s)" % server)
             
         #Fonts
         self.normal_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
         self.bold_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD)
         self.italic_font = wx.Font(8, wx.DEFAULT, wx.FONTSTYLE_ITALIC, wx.NORMAL)
+        self.button_font = wx.Font(6, wx.DEFAULT, wx.NORMAL, wx.BOLD)
 
 
         self.modified = {}  # dict of modified data (i.e. what we have to save)
@@ -77,14 +80,40 @@
         for gateway in gateways:
             self.addGateway(gateway, gateways[gateway])
 
+        self.ext_server_panel = wx.Panel(self)
+        self.ext_server_panel.sizer = wx.BoxSizer(wx.HORIZONTAL)
+        self.ext_server_panel.SetSizer(self.ext_server_panel.sizer)
+        self.ext_server_panel.SetAutoLayout(True)
+        self.sizer.Add(self.ext_server_panel, 0, flag=wx.EXPAND)
+
+        ext_server_label = wx.StaticText(self.ext_server_panel, -1, "Use external XMPP server: ")
+        ext_server_label.SetFont(wx.ITALIC_FONT)
+        self.ext_server_text = wx.TextCtrl(self.ext_server_panel, -1)
+        ext_server_button =  wx.Button(self.ext_server_panel, -1, "GO !")
+        self.ext_server_panel.Bind(wx.EVT_BUTTON, self.browseExternalServer, ext_server_button)
+
+        self.ext_server_panel.sizer.Add(ext_server_label)
+        self.ext_server_panel.sizer.Add(self.ext_server_text, 1, flag=wx.EXPAND)
+        self.ext_server_panel.sizer.Add(ext_server_button)
         
         #self.panel.sizer.Fit(self)
         self.sizer.Fit(self)
         
         self.Show()
 
+    def browseExternalServer(self, event):
+        """Open the gateway manager on given server"""
+        server = self.ext_server_text.GetValue()
+        debug("Opening gateways manager on [%s]" % server) 
+        id = self.host.bridge.findGateways(server)
+        self.host.current_action_ids.add(id)
+        self.host.current_action_ids_cb[id] = self.host.onGatewaysFound
+        self.MakeModal(False) 
+        self.Destroy()
+
+
     def addGateway(self, gateway, param):
-        
+    
 
 
         #First The icon
@@ -133,7 +162,6 @@
             print "register id:",id
             self.MakeModal(False) 
             self.Destroy()
-            event.Skip()
 
         def unregister_cb(event):
             """Called when unregister button is clicked"""
@@ -143,15 +171,13 @@
             print "unregister id:",id
             self.MakeModal(False) 
             self.Destroy()
-            event.Skip()
         
-        button_font = wx.Font(6, wx.DEFAULT, wx.NORMAL, wx.BOLD)
         reg_button = wx.Button(self.panel, -1, "Register", size=wx.Size(-1, 8))
-        reg_button.SetFont(button_font)
+        reg_button.SetFont(self.button_font)
         reg_button.gateway_jid = JID(gateway)
         self.panel.Bind(wx.EVT_BUTTON, register_cb, reg_button)
         unreg_button = wx.Button(self.panel, -1, "Unregister", size=wx.Size(-1, 8))
-        unreg_button.SetFont(button_font)
+        unreg_button.SetFont(self.button_font)
         unreg_button.gateway_jid = JID(gateway)
         self.panel.Bind(wx.EVT_BUTTON, unregister_cb, unreg_button)