Mercurial > libervia-backend
annotate frontends/src/wix/gateways.py @ 297:c5554e2939dd
plugin XEP 0277: author for in request + author, updated management for out request
- a workaround is now used to parse "nick" tag (Jappix behaviour)
- author and updated can now be used in data when sendind microblog. Is no author is given, user jid is used, if no updated is given, current timestamp is used
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 18 Feb 2011 22:32:02 +0100 |
parents | b1794cbb88e5 |
children | cf005701624b |
rev | line source |
---|---|
28 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 """ | |
5 wix: a SAT frontend | |
228 | 6 Copyright (C) 2009, 2010, 2011 Jérôme Poisson (goffi@goffi.org) |
28 | 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 | |
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 |