Mercurial > libervia-backend
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 |