comparison 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
comparison
equal deleted inserted replaced
222:3198bfd66daa 223:86d249b6d9b7
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 """
5 wix: a SAT frontend
6 Copyright (C) 2009, 2010 Jérôme Poisson (goffi@goffi.org)
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 """
21
22
23
24 import wx
25 import pdb
26 from xml.dom import minidom
27 from logging import debug, info, error
28 from tools.jid import JID
29 from quick_frontend.quick_gateways import QuickGatewaysManager
30
31 class GatewaysManager(wx.Frame,QuickGatewaysManager):
32
33 def __init__(self, host, gateways, title=_("Gateways manager"), server=None):
34 wx.Frame.__init__(self, None, title=title)
35 QuickGatewaysManager.__init__(self, host, gateways, server)
36
37 if server:
38 self.SetTitle(title+" (%s)" % server)
39
40 #Fonts
41 self.normal_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
42 self.bold_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD)
43 self.italic_font = wx.Font(8, wx.DEFAULT, wx.FONTSTYLE_ITALIC, wx.NORMAL)
44 self.button_font = wx.Font(6, wx.DEFAULT, wx.NORMAL, wx.BOLD)
45
46
47 self.modified = {} # dict of modified data (i.e. what we have to save)
48 self.ctl_list = {} # usefull to access ctrl, key = (name, category)
49
50 self.sizer = wx.BoxSizer(wx.VERTICAL)
51 warning = wx.TextCtrl(self, -1, value=self.WARNING_MSG, style = wx.TE_MULTILINE |
52 wx.TE_READONLY |
53 wx.TE_LEFT)
54 warning.SetFont(self.bold_font)
55 self.sizer.Add(warning, 0, wx.EXPAND)
56 warning.ShowPosition(0)
57 self.panel = wx.Panel(self)
58 self.panel.sizer = wx.FlexGridSizer(cols=5)
59 self.panel.SetSizer(self.panel.sizer)
60 self.panel.SetAutoLayout(True)
61 self.sizer.Add(self.panel, 1, flag=wx.EXPAND)
62 self.SetSizer(self.sizer)
63 self.SetAutoLayout(True)
64
65 #events
66 self.Bind(wx.EVT_CLOSE, self.onClose, self)
67
68 self.MakeModal()
69 self.panel.sizer.Add(wx.Window(self.panel, -1))
70 title_name = wx.StaticText(self.panel, -1, "Name")
71 title_name.SetFont(self.bold_font)
72 title_type = wx.StaticText(self.panel, -1, "Type")
73 title_type.SetFont(self.bold_font)
74 self.panel.sizer.Add(title_name)
75 self.panel.sizer.Add(title_type)
76 self.panel.sizer.Add(wx.Window(self.panel, -1))
77 self.panel.sizer.Add(wx.Window(self.panel, -1))
78
79 for gateway in gateways:
80 self.addGateway(gateway, gateways[gateway])
81
82 self.ext_server_panel = wx.Panel(self)
83 self.ext_server_panel.sizer = wx.BoxSizer(wx.HORIZONTAL)
84 self.ext_server_panel.SetSizer(self.ext_server_panel.sizer)
85 self.ext_server_panel.SetAutoLayout(True)
86 self.sizer.Add(self.ext_server_panel, 0, flag=wx.EXPAND)
87
88 ext_server_label = wx.StaticText(self.ext_server_panel, -1, _("Use external XMPP server: "))
89 ext_server_label.SetFont(wx.ITALIC_FONT)
90 self.ext_server_text = wx.TextCtrl(self.ext_server_panel, -1)
91 ext_server_button = wx.Button(self.ext_server_panel, -1, _("GO !"))
92 self.ext_server_panel.Bind(wx.EVT_BUTTON, self.browseExternalServer, ext_server_button)
93
94 self.ext_server_panel.sizer.Add(ext_server_label)
95 self.ext_server_panel.sizer.Add(self.ext_server_text, 1, flag=wx.EXPAND)
96 self.ext_server_panel.sizer.Add(ext_server_button)
97
98 #self.panel.sizer.Fit(self)
99 self.sizer.Fit(self)
100
101 self.Show()
102
103 def browseExternalServer(self, event):
104 """Open the gateway manager on given server"""
105 server = self.ext_server_text.GetValue()
106 debug(_("Opening gateways manager on [%s]") % server)
107 id = self.host.bridge.findGateways(server, self.host.profile)
108 self.host.current_action_ids.add(id)
109 self.host.current_action_ids_cb[id] = self.host.onGatewaysFound
110 self.MakeModal(False)
111 self.Destroy()
112
113
114 def addGateway(self, gateway, param):
115
116 #First The icon
117 isz = (16,16)
118 im_icon = wx.StaticBitmap(self.panel, -1, wx.ArtProvider.GetBitmap(wx.ART_GO_FORWARD, wx.ART_TOOLBAR, isz))
119
120 #Then the name
121
122 label=wx.StaticText(self.panel, -1, param['name'])
123 label.SetFont(self.normal_font)
124
125 #Then the transport type message
126 type_label_txt = self.getGatewayDesc(param['type'])
127
128 type_label = wx.StaticText(self.panel, -1, type_label_txt)
129 type_label.SetFont(self.italic_font)
130
131 #The buttons
132 def register_cb(event):
133 """Called when register button is clicked"""
134 gateway_jid = event.GetEventObject().gateway_jid
135 id = self.host.bridge.in_band_register(gateway_jid, self.host.profile)
136 self.host.current_action_ids.add(id)
137 self.MakeModal(False)
138 self.Destroy()
139
140 def unregister_cb(event):
141 """Called when unregister button is clicked"""
142 gateway_jid = event.GetEventObject().gateway_jid
143 id = self.host.bridge.gatewayRegister("CANCEL",gateway_jid, None, self.host.profile)
144 self.host.current_action_ids.add(id)
145 self.MakeModal(False)
146 self.Destroy()
147
148 reg_button = wx.Button(self.panel, -1, _("Register"), size=wx.Size(-1, 8))
149 reg_button.SetFont(self.button_font)
150 reg_button.gateway_jid = JID(gateway)
151 self.panel.Bind(wx.EVT_BUTTON, register_cb, reg_button)
152 unreg_button = wx.Button(self.panel, -1, _("Unregister"), size=wx.Size(-1, 8))
153 unreg_button.SetFont(self.button_font)
154 unreg_button.gateway_jid = JID(gateway)
155 self.panel.Bind(wx.EVT_BUTTON, unregister_cb, unreg_button)
156
157 self.panel.sizer.Add(im_icon)
158 self.panel.sizer.Add(label)
159 self.panel.sizer.Add(type_label)
160 self.panel.sizer.Add(reg_button, 1, wx.EXPAND)
161 self.panel.sizer.Add(unreg_button, 1, wx.EXPAND)
162
163
164 def onClose(self, event):
165 """Close event"""
166 debug(_("close"))
167 self.MakeModal(False)
168 event.Skip()
169