comparison 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
comparison
equal deleted inserted replaced
38:3e24753b9e0b 39:2e3411a6baad
29 29
30 WARNING_MSG = u"""Be careful ! Gateways allow you to use an external IM (legacy IM), so you can see your contact as jabber contacts. 30 WARNING_MSG = u"""Be careful ! Gateways allow you to use an external IM (legacy IM), so you can see your contact as jabber contacts.
31 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).""" 31 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)."""
32 32
33 class GatewaysManager(wx.Frame): 33 class GatewaysManager(wx.Frame):
34 def __init__(self, host, gateways, title="Gateways manager"): 34 def __init__(self, host, gateways, title="Gateways manager", server=None):
35 super(GatewaysManager, self).__init__(None, title=title) 35 super(GatewaysManager, self).__init__(None, title=title)
36 36
37 self.host = host 37 self.host = host
38 if server:
39 self.SetTitle(title+" (%s)" % server)
38 40
39 #Fonts 41 #Fonts
40 self.normal_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.NORMAL) 42 self.normal_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
41 self.bold_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD) 43 self.bold_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD)
42 self.italic_font = wx.Font(8, wx.DEFAULT, wx.FONTSTYLE_ITALIC, wx.NORMAL) 44 self.italic_font = wx.Font(8, wx.DEFAULT, wx.FONTSTYLE_ITALIC, wx.NORMAL)
45 self.button_font = wx.Font(6, wx.DEFAULT, wx.NORMAL, wx.BOLD)
43 46
44 47
45 self.modified = {} # dict of modified data (i.e. what we have to save) 48 self.modified = {} # dict of modified data (i.e. what we have to save)
46 self.ctl_list = {} # usefull to access ctrl, key = (name, category) 49 self.ctl_list = {} # usefull to access ctrl, key = (name, category)
47 50
75 self.panel.sizer.Add(wx.Window(self.panel, -1)) 78 self.panel.sizer.Add(wx.Window(self.panel, -1))
76 79
77 for gateway in gateways: 80 for gateway in gateways:
78 self.addGateway(gateway, gateways[gateway]) 81 self.addGateway(gateway, gateways[gateway])
79 82
83 self.ext_server_panel = wx.Panel(self)
84 self.ext_server_panel.sizer = wx.BoxSizer(wx.HORIZONTAL)
85 self.ext_server_panel.SetSizer(self.ext_server_panel.sizer)
86 self.ext_server_panel.SetAutoLayout(True)
87 self.sizer.Add(self.ext_server_panel, 0, flag=wx.EXPAND)
88
89 ext_server_label = wx.StaticText(self.ext_server_panel, -1, "Use external XMPP server: ")
90 ext_server_label.SetFont(wx.ITALIC_FONT)
91 self.ext_server_text = wx.TextCtrl(self.ext_server_panel, -1)
92 ext_server_button = wx.Button(self.ext_server_panel, -1, "GO !")
93 self.ext_server_panel.Bind(wx.EVT_BUTTON, self.browseExternalServer, ext_server_button)
94
95 self.ext_server_panel.sizer.Add(ext_server_label)
96 self.ext_server_panel.sizer.Add(self.ext_server_text, 1, flag=wx.EXPAND)
97 self.ext_server_panel.sizer.Add(ext_server_button)
80 98
81 #self.panel.sizer.Fit(self) 99 #self.panel.sizer.Fit(self)
82 self.sizer.Fit(self) 100 self.sizer.Fit(self)
83 101
84 self.Show() 102 self.Show()
85 103
104 def browseExternalServer(self, event):
105 """Open the gateway manager on given server"""
106 server = self.ext_server_text.GetValue()
107 debug("Opening gateways manager on [%s]" % server)
108 id = self.host.bridge.findGateways(server)
109 self.host.current_action_ids.add(id)
110 self.host.current_action_ids_cb[id] = self.host.onGatewaysFound
111 self.MakeModal(False)
112 self.Destroy()
113
114
86 def addGateway(self, gateway, param): 115 def addGateway(self, gateway, param):
87 116
88 117
89 118
90 #First The icon 119 #First The icon
91 isz = (16,16) 120 isz = (16,16)
92 im_icon = wx.StaticBitmap(self.panel, -1, wx.ArtProvider.GetBitmap(wx.ART_GO_FORWARD, wx.ART_TOOLBAR, isz)) 121 im_icon = wx.StaticBitmap(self.panel, -1, wx.ArtProvider.GetBitmap(wx.ART_GO_FORWARD, wx.ART_TOOLBAR, isz))
131 id = self.host.bridge.in_band_register(gateway_jid) 160 id = self.host.bridge.in_band_register(gateway_jid)
132 self.host.current_action_ids.add(id) 161 self.host.current_action_ids.add(id)
133 print "register id:",id 162 print "register id:",id
134 self.MakeModal(False) 163 self.MakeModal(False)
135 self.Destroy() 164 self.Destroy()
136 event.Skip()
137 165
138 def unregister_cb(event): 166 def unregister_cb(event):
139 """Called when unregister button is clicked""" 167 """Called when unregister button is clicked"""
140 gateway_jid = event.GetEventObject().gateway_jid 168 gateway_jid = event.GetEventObject().gateway_jid
141 id = self.host.bridge.gatewayRegister("CANCEL",gateway_jid, None) 169 id = self.host.bridge.gatewayRegister("CANCEL",gateway_jid, None)
142 self.host.current_action_ids.add(id) 170 self.host.current_action_ids.add(id)
143 print "unregister id:",id 171 print "unregister id:",id
144 self.MakeModal(False) 172 self.MakeModal(False)
145 self.Destroy() 173 self.Destroy()
146 event.Skip()
147 174
148 button_font = wx.Font(6, wx.DEFAULT, wx.NORMAL, wx.BOLD)
149 reg_button = wx.Button(self.panel, -1, "Register", size=wx.Size(-1, 8)) 175 reg_button = wx.Button(self.panel, -1, "Register", size=wx.Size(-1, 8))
150 reg_button.SetFont(button_font) 176 reg_button.SetFont(self.button_font)
151 reg_button.gateway_jid = JID(gateway) 177 reg_button.gateway_jid = JID(gateway)
152 self.panel.Bind(wx.EVT_BUTTON, register_cb, reg_button) 178 self.panel.Bind(wx.EVT_BUTTON, register_cb, reg_button)
153 unreg_button = wx.Button(self.panel, -1, "Unregister", size=wx.Size(-1, 8)) 179 unreg_button = wx.Button(self.panel, -1, "Unregister", size=wx.Size(-1, 8))
154 unreg_button.SetFont(button_font) 180 unreg_button.SetFont(self.button_font)
155 unreg_button.gateway_jid = JID(gateway) 181 unreg_button.gateway_jid = JID(gateway)
156 self.panel.Bind(wx.EVT_BUTTON, unregister_cb, unreg_button) 182 self.panel.Bind(wx.EVT_BUTTON, unregister_cb, unreg_button)
157 183
158 self.panel.sizer.Add(im_icon) 184 self.panel.sizer.Add(im_icon)
159 self.panel.sizer.Add(label) 185 self.panel.sizer.Add(label)