Mercurial > libervia-backend
annotate frontends/src/wix/gateways.py @ 500:00d3679976ab
primitivus: keep focus position in contacts list on redraw
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 05 Sep 2012 00:19:32 +0200 |
parents | 2a072735e459 |
children | ca13633d3b6b |
rev | line source |
---|---|
28 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 """ | |
5 wix: a SAT frontend | |
459 | 6 Copyright (C) 2009, 2010, 2011, 2012 Jérôme Poisson (goffi@goffi.org) |
28 | 7 |
8 This program is free software: you can redistribute it and/or modify | |
480
2a072735e459
Licence modification: the full project is now under AGPL v3+ instead of GPL v3+
Goffi <goffi@goffi.org>
parents:
459
diff
changeset
|
9 it under the terms of the GNU Affero General Public License as published by |
28 | 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 | |
480
2a072735e459
Licence modification: the full project is now under AGPL v3+ instead of GPL v3+
Goffi <goffi@goffi.org>
parents:
459
diff
changeset
|
16 GNU Affero General Public License for more details. |
28 | 17 |
480
2a072735e459
Licence modification: the full project is now under AGPL v3+ instead of GPL v3+
Goffi <goffi@goffi.org>
parents:
459
diff
changeset
|
18 You should have received a copy of the GNU Affero General Public License |
28 | 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 | |
225
fd9b7834d98a
distutils installation script, draft
Goffi <goffi@goffi.org>
parents:
223
diff
changeset
|
28 from sat.tools.jid import JID |
227 | 29 from sat_frontends.quick_frontend.quick_gateways import QuickGatewaysManager |
28 | 30 |
173 | 31 class GatewaysManager(wx.Frame,QuickGatewaysManager): |
28 | 32 |
70 | 33 def __init__(self, host, gateways, title=_("Gateways manager"), server=None): |
173 | 34 wx.Frame.__init__(self, None, title=title) |
35 QuickGatewaysManager.__init__(self, host, gateways, server) | |
28 | 36 |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
37 if server: |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
38 self.SetTitle(title+" (%s)" % server) |
29
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
39 |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
40 #Fonts |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
41 self.normal_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.NORMAL) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
42 self.bold_font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
43 self.italic_font = wx.Font(8, wx.DEFAULT, wx.FONTSTYLE_ITALIC, wx.NORMAL) |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
44 self.button_font = wx.Font(6, wx.DEFAULT, wx.NORMAL, wx.BOLD) |
29
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
45 |
28 | 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) | |
173 | 51 warning = wx.TextCtrl(self, -1, value=self.WARNING_MSG, style = wx.TE_MULTILINE | |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
52 wx.TE_READONLY | |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
53 wx.TE_LEFT) |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
54 warning.SetFont(self.bold_font) |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
55 self.sizer.Add(warning, 0, wx.EXPAND) |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
56 warning.ShowPosition(0) |
28 | 57 self.panel = wx.Panel(self) |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
58 self.panel.sizer = wx.FlexGridSizer(cols=5) |
28 | 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() | |
29
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
69 self.panel.sizer.Add(wx.Window(self.panel, -1)) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
70 title_name = wx.StaticText(self.panel, -1, "Name") |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
71 title_name.SetFont(self.bold_font) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
72 title_type = wx.StaticText(self.panel, -1, "Type") |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
73 title_type.SetFont(self.bold_font) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
74 self.panel.sizer.Add(title_name) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
75 self.panel.sizer.Add(title_type) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
76 self.panel.sizer.Add(wx.Window(self.panel, -1)) |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
77 self.panel.sizer.Add(wx.Window(self.panel, -1)) |
29
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
78 |
28 | 79 for gateway in gateways: |
80 self.addGateway(gateway, gateways[gateway]) | |
81 | |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
82 self.ext_server_panel = wx.Panel(self) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
83 self.ext_server_panel.sizer = wx.BoxSizer(wx.HORIZONTAL) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
84 self.ext_server_panel.SetSizer(self.ext_server_panel.sizer) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
85 self.ext_server_panel.SetAutoLayout(True) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
86 self.sizer.Add(self.ext_server_panel, 0, flag=wx.EXPAND) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
87 |
70 | 88 ext_server_label = wx.StaticText(self.ext_server_panel, -1, _("Use external XMPP server: ")) |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
89 ext_server_label.SetFont(wx.ITALIC_FONT) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
90 self.ext_server_text = wx.TextCtrl(self.ext_server_panel, -1) |
70 | 91 ext_server_button = wx.Button(self.ext_server_panel, -1, _("GO !")) |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
92 self.ext_server_panel.Bind(wx.EVT_BUTTON, self.browseExternalServer, ext_server_button) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
93 |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
94 self.ext_server_panel.sizer.Add(ext_server_label) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
95 self.ext_server_panel.sizer.Add(self.ext_server_text, 1, flag=wx.EXPAND) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
96 self.ext_server_panel.sizer.Add(ext_server_button) |
28 | 97 |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
98 #self.panel.sizer.Fit(self) |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
99 self.sizer.Fit(self) |
28 | 100 |
101 self.Show() | |
102 | |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
103 def browseExternalServer(self, event): |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
104 """Open the gateway manager on given server""" |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
105 server = self.ext_server_text.GetValue() |
70 | 106 debug(_("Opening gateways manager on [%s]") % server) |
102 | 107 id = self.host.bridge.findGateways(server, self.host.profile) |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
108 self.host.current_action_ids.add(id) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
109 self.host.current_action_ids_cb[id] = self.host.onGatewaysFound |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
110 self.MakeModal(False) |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
111 self.Destroy() |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
112 |
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
113 |
28 | 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 | |
29
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
120 #Then the name |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
121 |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
122 label=wx.StaticText(self.panel, -1, param['name']) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
123 label.SetFont(self.normal_font) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
124 |
28 | 125 #Then the transport type message |
173 | 126 type_label_txt = self.getGatewayDesc(param['type']) |
28 | 127 |
128 type_label = wx.StaticText(self.panel, -1, type_label_txt) | |
29
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
129 type_label.SetFont(self.italic_font) |
28 | 130 |
131 #The buttons | |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
29
diff
changeset
|
132 def register_cb(event): |
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
29
diff
changeset
|
133 """Called when register button is clicked""" |
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
29
diff
changeset
|
134 gateway_jid = event.GetEventObject().gateway_jid |
102 | 135 id = self.host.bridge.in_band_register(gateway_jid, self.host.profile) |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
29
diff
changeset
|
136 self.host.current_action_ids.add(id) |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
137 self.MakeModal(False) |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
138 self.Destroy() |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
29
diff
changeset
|
139 |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
140 def unregister_cb(event): |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
141 """Called when unregister button is clicked""" |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
142 gateway_jid = event.GetEventObject().gateway_jid |
102 | 143 id = self.host.bridge.gatewayRegister("CANCEL",gateway_jid, None, self.host.profile) |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
144 self.host.current_action_ids.add(id) |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
145 self.MakeModal(False) |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
146 self.Destroy() |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
147 |
70 | 148 reg_button = wx.Button(self.panel, -1, _("Register"), size=wx.Size(-1, 8)) |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
149 reg_button.SetFont(self.button_font) |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
29
diff
changeset
|
150 reg_button.gateway_jid = JID(gateway) |
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
29
diff
changeset
|
151 self.panel.Bind(wx.EVT_BUTTON, register_cb, reg_button) |
70 | 152 unreg_button = wx.Button(self.panel, -1, _("Unregister"), size=wx.Size(-1, 8)) |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
153 unreg_button.SetFont(self.button_font) |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
154 unreg_button.gateway_jid = JID(gateway) |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
155 self.panel.Bind(wx.EVT_BUTTON, unregister_cb, unreg_button) |
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
156 |
29
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
157 self.panel.sizer.Add(im_icon) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
158 self.panel.sizer.Add(label) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
159 self.panel.sizer.Add(type_label) |
df3b0b5ac49e
Wix: gateways manager => better presentation
Goffi <goffi@goffi.org>
parents:
28
diff
changeset
|
160 self.panel.sizer.Add(reg_button, 1, wx.EXPAND) |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
161 self.panel.sizer.Add(unreg_button, 1, wx.EXPAND) |
28 | 162 |
163 | |
164 def onClose(self, event): | |
165 """Close event""" | |
70 | 166 debug(_("close")) |
28 | 167 self.MakeModal(False) |
168 event.Skip() | |
169 |