diff frontends/src/wix/gateways.py @ 223:86d249b6d9b7

Files reorganisation
author Goffi <goffi@goffi.org>
date Wed, 29 Dec 2010 01:06:29 +0100
parents frontends/wix/gateways.py@ec6611445a5b
children fd9b7834d98a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frontends/src/wix/gateways.py	Wed Dec 29 01:06:29 2010 +0100
@@ -0,0 +1,169 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+"""
+wix: a SAT frontend
+Copyright (C) 2009, 2010  Jérôme Poisson (goffi@goffi.org)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+"""
+
+
+
+import wx
+import pdb
+from xml.dom import minidom
+from logging import debug, info, error
+from tools.jid  import JID
+from quick_frontend.quick_gateways import QuickGatewaysManager
+
+class GatewaysManager(wx.Frame,QuickGatewaysManager):
+
+    def __init__(self, host, gateways, title=_("Gateways manager"), server=None):
+        wx.Frame.__init__(self, None, title=title)
+        QuickGatewaysManager.__init__(self, host, gateways, server)
+
+        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)
+        self.ctl_list = {}  # usefull to access ctrl, key = (name, category)
+
+        self.sizer = wx.BoxSizer(wx.VERTICAL)
+        warning = wx.TextCtrl(self, -1, value=self.WARNING_MSG, style = wx.TE_MULTILINE |
+                                                                       wx.TE_READONLY |
+                                                                       wx.TE_LEFT)
+        warning.SetFont(self.bold_font)
+        self.sizer.Add(warning, 0, wx.EXPAND)
+        warning.ShowPosition(0)
+        self.panel = wx.Panel(self)
+        self.panel.sizer = wx.FlexGridSizer(cols=5)
+        self.panel.SetSizer(self.panel.sizer)
+        self.panel.SetAutoLayout(True)
+        self.sizer.Add(self.panel, 1, flag=wx.EXPAND)
+        self.SetSizer(self.sizer)
+        self.SetAutoLayout(True)
+        
+        #events
+        self.Bind(wx.EVT_CLOSE, self.onClose, self)
+        
+        self.MakeModal()
+        self.panel.sizer.Add(wx.Window(self.panel, -1))
+        title_name = wx.StaticText(self.panel, -1, "Name")
+        title_name.SetFont(self.bold_font)
+        title_type = wx.StaticText(self.panel, -1, "Type")
+        title_type.SetFont(self.bold_font)
+        self.panel.sizer.Add(title_name)
+        self.panel.sizer.Add(title_type)
+        self.panel.sizer.Add(wx.Window(self.panel, -1))
+        self.panel.sizer.Add(wx.Window(self.panel, -1))
+    
+        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.profile)
+        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
+        isz = (16,16)
+        im_icon = wx.StaticBitmap(self.panel, -1, wx.ArtProvider.GetBitmap(wx.ART_GO_FORWARD, wx.ART_TOOLBAR, isz))
+
+        #Then the name
+
+        label=wx.StaticText(self.panel, -1, param['name'])
+        label.SetFont(self.normal_font)
+       
+        #Then the transport type message
+        type_label_txt = self.getGatewayDesc(param['type'])
+
+        type_label = wx.StaticText(self.panel, -1, type_label_txt)
+        type_label.SetFont(self.italic_font)
+
+        #The buttons
+        def register_cb(event):
+            """Called when register button is clicked"""
+            gateway_jid = event.GetEventObject().gateway_jid
+            id = self.host.bridge.in_band_register(gateway_jid, self.host.profile)
+            self.host.current_action_ids.add(id)
+            self.MakeModal(False) 
+            self.Destroy()
+
+        def unregister_cb(event):
+            """Called when unregister button is clicked"""
+            gateway_jid = event.GetEventObject().gateway_jid
+            id = self.host.bridge.gatewayRegister("CANCEL",gateway_jid, None, self.host.profile)
+            self.host.current_action_ids.add(id)
+            self.MakeModal(False) 
+            self.Destroy()
+        
+        reg_button = wx.Button(self.panel, -1, _("Register"), size=wx.Size(-1, 8))
+        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(self.button_font)
+        unreg_button.gateway_jid = JID(gateway)
+        self.panel.Bind(wx.EVT_BUTTON, unregister_cb, unreg_button)
+        
+        self.panel.sizer.Add(im_icon)
+        self.panel.sizer.Add(label)
+        self.panel.sizer.Add(type_label)
+        self.panel.sizer.Add(reg_button, 1, wx.EXPAND)
+        self.panel.sizer.Add(unreg_button, 1, wx.EXPAND)
+
+
+    def onClose(self, event):
+        """Close event"""
+        debug(_("close"))
+        self.MakeModal(False)
+        event.Skip()
+