annotate frontends/src/wix/profile_manager.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 485a6d125498
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/python
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
3
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
4 """
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
5 wix: a SAT frontend
228
b1794cbb88e5 2011 copyright upgrade
Goffi <goffi@goffi.org>
parents: 225
diff changeset
6 Copyright (C) 2009, 2010, 2011 Jérôme Poisson (goffi@goffi.org)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
7
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
8 This program is free software: you can redistribute it and/or modify
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
11 (at your option) any later version.
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
12
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
13 This program is distributed in the hope that it will be useful,
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
16 GNU General Public License for more details.
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
17
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
20 """
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
21
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
22
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
23
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
24 import wx
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
25 import pdb
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
26 from logging import debug, info, error
225
fd9b7834d98a distutils installation script, draft
Goffi <goffi@goffi.org>
parents: 223
diff changeset
27 from sat.tools.jid import JID
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
28 import pdb
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
29
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
30
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
31 class ProfileManager(wx.Panel):
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
32 def __init__(self, host):
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
33 super(ProfileManager, self).__init__(host)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
34 self.host = host
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
35
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
36 #self.sizer = wx.FlexGridSizer(cols=2)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
37 self.sizer = wx.BoxSizer(wx.VERTICAL)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
38 self.SetSizer(self.sizer)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
39
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
40 profiles = self.host.bridge.getProfilesList()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
41 self.profile_name = wx.ComboBox(self, -1, style=wx.CB_READONLY|wx.CB_SORT)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
42 self.__refillProfiles()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
43 self.Bind(wx.EVT_COMBOBOX, self.onProfileChange)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
44 self.panel_id = wx
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
45
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
46 self.sizer.Add(wx.Window(self, -1), 1)
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
47 self.sizer.Add(wx.StaticText(self, -1, _("Profile:")), 0, flag=wx.ALIGN_CENTER)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
48 self.sizer.Add(self.profile_name, 0, flag=wx.ALIGN_CENTER)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
49 button_panel = wx.Panel(self)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
50 button_panel.sizer = wx.BoxSizer(wx.HORIZONTAL)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
51 button_panel.SetSizer(button_panel.sizer)
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
52 button_new = wx.Button(button_panel, -1, _("New"))
Goffi <goffi@goffi.org>
parents: 68
diff changeset
53 button_del = wx.Button(button_panel, -1, _("Delete"))
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
54 button_panel.sizer.Add(button_new)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
55 button_panel.sizer.Add(button_del)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
56 self.sizer.Add(button_panel, flag=wx.CENTER)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
57 self.Bind(wx.EVT_BUTTON, self.onNewProfile, button_new)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
58 self.Bind(wx.EVT_BUTTON, self.onDeleteProfile, button_del)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
59
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
60 login_box = wx.StaticBox(self, -1, _("Login"))
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
61 self.login_sizer = wx.StaticBoxSizer(login_box, wx.VERTICAL)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
62 self.sizer.Add(self.login_sizer, 1, wx.EXPAND | wx.ALL)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
63 self.login_jid = wx.TextCtrl(self, -1)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
64 self.login_sizer.Add(wx.StaticText(self, -1, "JID:"), 0, flag=wx.ALIGN_CENTER)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
65 self.login_sizer.Add(self.login_jid, flag=wx.EXPAND)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
66 self.login_pass = wx.TextCtrl(self, -1, style = wx.TE_PASSWORD)
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
67 self.login_sizer.Add(wx.StaticText(self, -1, _("Password:")), 0, flag=wx.ALIGN_CENTER)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
68 self.login_sizer.Add(self.login_pass, flag=wx.EXPAND)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
69
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
70 loggin_button = wx.Button(self, -1, _("Connect"))
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
71 self.Bind(wx.EVT_BUTTON, self.onConnectButton, loggin_button)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
72 self.login_sizer.Add(loggin_button, flag=wx.ALIGN_CENTER)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
73
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
74 self.sizer.Add(wx.Window(self, -1), 1)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
75
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
76 #Now we can set the default value
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
77 self.__setDefault()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
78
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
79
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
80 def __setDefault(self):
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
81 profile_default = self.host.bridge.getProfileName("@DEFAULT@")
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
82 if profile_default:
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
83 self.profile_name.SetValue(profile_default)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
84 self.onProfileChange(None)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
85
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
86 def __refillProfiles(self):
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
87 """Update profiles with current names. Must be called after a profile change"""
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
88 self.profile_name.Clear()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
89 profiles = self.host.bridge.getProfilesList()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
90 profiles.sort()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
91 for profile in profiles:
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
92 self.profile_name.Append(profile)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
93
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
94
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
95 def onNewProfile(self, event):
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
96 dlg = wx.TextEntryDialog(self, _("Please enter the new profile name"), _("New profile"), style = wx.OK | wx.CANCEL)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
97 if dlg.ShowModal() == wx.ID_OK:
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
98 name = dlg.GetValue()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
99 if name:
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
100 if name[0]=='@':
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
101 wx.MessageDialog(self, _("A profile name can't start with a @"), _("Bad profile name"), wx.ICON_ERROR).ShowModal()
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
102 else:
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
103 profile = self.host.bridge.createProfile(name)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
104 self.__refillProfiles()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
105 self.profile_name.SetValue(name)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
106 dlg.Destroy()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
107
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
108 def onDeleteProfile(self, event):
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
109 name = self.profile_name.GetValue()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
110 if not name:
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
111 return
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
112 dlg = wx.MessageDialog(self, _("Are you sure to delete the profile [%s]") % name, _("Confirmation"), wx.ICON_QUESTION | wx.YES_NO)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
113 if dlg.ShowModal() == wx.ID_YES:
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
114 self.host.bridge.deleteProfile(name)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
115 self.__refillProfiles()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
116 self.__setDefault()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
117 dlg.Destroy()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
118
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
119 def onProfileChange(self, event):
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
120 """Called when a profile is choosen in the combo box"""
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
121 jabberID = self.host.bridge.getParamA("JabberID", "Connection", profile_key=self.profile_name.GetValue())
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
122 password = self.host.bridge.getParamA("Password", "Connection", profile_key=self.profile_name.GetValue())
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
123 self.login_jid.SetValue(jabberID)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
124 self.login_pass.SetValue(password)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
125
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
126 def onConnectButton(self, event):
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
127 """Called when the Connect button is pressed"""
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
128 name = self.profile_name.GetValue()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
129 if not name:
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
130 wx.MessageDialog(self, _("You must select a profile or create a new one before connecting"), _("No profile selected"), wx.ICON_ERROR).ShowModal()
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
131 return
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
132 if name[0]=='@':
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
133 wx.MessageDialog(self, _("A profile name can't start with a @"), _("Bad profile name"), wx.ICON_ERROR).ShowModal()
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
134 return
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
135 profile = self.host.bridge.getProfileName(name)
89
23caf1051099 multi-profile/subscription misc fixes
Goffi <goffi@goffi.org>
parents: 72
diff changeset
136 assert(profile)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
137 old_jid = self.host.bridge.getParamA("JabberID", "Connection", profile_key=profile)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
138 old_pass = self.host.bridge.getParamA("Password", "Connection", profile_key=profile)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
139 new_jid = self.login_jid.GetValue()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
140 new_pass = self.login_pass.GetValue()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
141 if old_jid != new_jid:
72
f271fff3a713 MUC implementation: first draft
Goffi <goffi@goffi.org>
parents: 70
diff changeset
142 debug(_('Saving new JID and server'))
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
143 self.host.bridge.setParam("JabberID", new_jid, "Connection", profile)
72
f271fff3a713 MUC implementation: first draft
Goffi <goffi@goffi.org>
parents: 70
diff changeset
144 self.host.bridge.setParam("Server", JID(new_jid).domain, "Connection", profile)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
145 if old_pass != new_pass:
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
146 debug(_('Saving new password'))
72
f271fff3a713 MUC implementation: first draft
Goffi <goffi@goffi.org>
parents: 70
diff changeset
147 self.host.bridge.setParam("Password", new_pass, "Connection", profile)
89
23caf1051099 multi-profile/subscription misc fixes
Goffi <goffi@goffi.org>
parents: 72
diff changeset
148 self.host.plug_profile(profile)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents:
diff changeset
149