annotate frontends/src/wix/main_window.py @ 853:c2f6ada7858f

core (sqlite): automatic database update: - new Updater class check database consistency (by calculating a hash on the .schema), and updates base if necessary - database now has a version (1 for current, 0 will be for 0.3's database), for each change this version will be increased - creation statements and update statements are in the form of dict of dict with tuples. There is a help text at the top of the module to explain how it works - if we are on a development version, the updater try to update the database automaticaly (without deleting table or columns). The Updater.generateUpdateData method can be used to ease the creation of update data (i.e. the dictionary at the top, see the one for the key 1 for an example). - if there is an inconsistency, an exception is raised, and a message indicate the SQL statements that should fix the situation. - well... this is rather complicated, a KISS method would maybe have been better. The future will say if we need to simplify it :-/ - new DatabaseError exception
author Goffi <goffi@goffi.org>
date Sun, 23 Feb 2014 23:30:32 +0100
parents 1fe00f0c9a91
children cd02f5ef30df
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
goffi@necton2
parents:
diff changeset
1 #!/usr/bin/python
goffi@necton2
parents:
diff changeset
2 # -*- coding: utf-8 -*-
goffi@necton2
parents:
diff changeset
3
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
4 # wix: a SAT frontend
811
1fe00f0c9a91 dates update
Goffi <goffi@goffi.org>
parents: 807
diff changeset
5 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Jérôme Poisson (goffi@goffi.org)
0
goffi@necton2
parents:
diff changeset
6
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
7 # This program is free software: you can redistribute it and/or modify
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
10 # (at your option) any later version.
0
goffi@necton2
parents:
diff changeset
11
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
12 # This program is distributed in the hope that it will be useful,
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
15 # GNU Affero General Public License for more details.
0
goffi@necton2
parents:
diff changeset
16
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 587
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0
goffi@necton2
parents:
diff changeset
19
goffi@necton2
parents:
diff changeset
20
771
bfabeedbf32e core: i18n refactoring:
Goffi <goffi@goffi.org>
parents: 759
diff changeset
21 from sat.core.i18n import _
227
533507bb4e32 distutils wix installation
Goffi <goffi@goffi.org>
parents: 225
diff changeset
22 from sat_frontends.quick_frontend.quick_chat_list import QuickChatList
533507bb4e32 distutils wix installation
Goffi <goffi@goffi.org>
parents: 225
diff changeset
23 from sat_frontends.quick_frontend.quick_app import QuickApp
0
goffi@necton2
parents:
diff changeset
24 import wx
227
533507bb4e32 distutils wix installation
Goffi <goffi@goffi.org>
parents: 225
diff changeset
25 from sat_frontends.wix.contact_list import ContactList
533507bb4e32 distutils wix installation
Goffi <goffi@goffi.org>
parents: 225
diff changeset
26 from sat_frontends.wix.chat import Chat
533507bb4e32 distutils wix installation
Goffi <goffi@goffi.org>
parents: 225
diff changeset
27 from sat_frontends.wix.xmlui import XMLUI
533507bb4e32 distutils wix installation
Goffi <goffi@goffi.org>
parents: 225
diff changeset
28 from sat_frontends.wix.profile import Profile
533507bb4e32 distutils wix installation
Goffi <goffi@goffi.org>
parents: 225
diff changeset
29 from sat_frontends.wix.profile_manager import ProfileManager
0
goffi@necton2
parents:
diff changeset
30 import os.path
225
fd9b7834d98a distutils installation script, draft
Goffi <goffi@goffi.org>
parents: 223
diff changeset
31 from sat.tools.jid import JID
72
f271fff3a713 MUC implementation: first draft
Goffi <goffi@goffi.org>
parents: 70
diff changeset
32 from logging import debug, info, warning, error
736
6246eb6d64a0 frontends: define the constants with classes and inheritance instance of using __builtin__
souliane <souliane@mailoo.org>
parents: 688
diff changeset
33 from sat_frontends.wix.constants import Const
0
goffi@necton2
parents:
diff changeset
34
51
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
35 idCONNECT,\
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
36 idDISCONNECT,\
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
37 idEXIT,\
191
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
38 idABOUT,\
51
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
39 idPARAM,\
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
40 idADD_CONTACT,\
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
41 idREMOVE_CONTACT,\
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
42 idSHOW_PROFILE,\
72
f271fff3a713 MUC implementation: first draft
Goffi <goffi@goffi.org>
parents: 70
diff changeset
43 idJOIN_ROOM,\
807
be4c5e24dab9 plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents: 802
diff changeset
44 = range(9)
0
goffi@necton2
parents:
diff changeset
45
goffi@necton2
parents:
diff changeset
46 class ChatList(QuickChatList):
goffi@necton2
parents:
diff changeset
47 """This class manage the list of chat windows"""
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
48
51
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
49 def createChat(self, target):
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
50 return Chat(target, self.host)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
51
0
goffi@necton2
parents:
diff changeset
52 class MainWindow(wx.Frame, QuickApp):
goffi@necton2
parents:
diff changeset
53 """main app window"""
goffi@necton2
parents:
diff changeset
54
goffi@necton2
parents:
diff changeset
55 def __init__(self):
366
0806a65a5fa9 wix: updated paths to use media_dir
Goffi <goffi@goffi.org>
parents: 228
diff changeset
56 QuickApp.__init__(self)
796
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
57 wx.Frame.__init__(self,None, title="SàT Wix", size=(350,500))
0
goffi@necton2
parents:
diff changeset
58
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
59 #sizer
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
60 self.sizer = wx.BoxSizer(wx.VERTICAL)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
61 self.SetSizer(self.sizer)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
62
0
goffi@necton2
parents:
diff changeset
63 #Frame elements
501
e9634d2e7b38 core, quick_frontend, primitivus, wix: Contacts List refactoring phase 1:
Goffi <goffi@goffi.org>
parents: 491
diff changeset
64 self.contact_list = ContactList(self, self)
e9634d2e7b38 core, quick_frontend, primitivus, wix: Contacts List refactoring phase 1:
Goffi <goffi@goffi.org>
parents: 491
diff changeset
65 self.contact_list.registerActivatedCB(self.onContactActivated)
e9634d2e7b38 core, quick_frontend, primitivus, wix: Contacts List refactoring phase 1:
Goffi <goffi@goffi.org>
parents: 491
diff changeset
66 self.contact_list.Hide()
e9634d2e7b38 core, quick_frontend, primitivus, wix: Contacts List refactoring phase 1:
Goffi <goffi@goffi.org>
parents: 491
diff changeset
67 self.sizer.Add(self.contact_list, 1, flag=wx.EXPAND)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
68
0
goffi@necton2
parents:
diff changeset
69 self.chat_wins=ChatList(self)
goffi@necton2
parents:
diff changeset
70 self.CreateStatusBar()
goffi@necton2
parents:
diff changeset
71
goffi@necton2
parents:
diff changeset
72 #ToolBar
goffi@necton2
parents:
diff changeset
73 self.tools=self.CreateToolBar()
736
6246eb6d64a0 frontends: define the constants with classes and inheritance instance of using __builtin__
souliane <souliane@mailoo.org>
parents: 688
diff changeset
74 self.statusBox = wx.ComboBox(self.tools, -1, "Online", choices=[status[1] for status in Const.PRESENCE],
0
goffi@necton2
parents:
diff changeset
75 style=wx.CB_DROPDOWN | wx.CB_READONLY)
goffi@necton2
parents:
diff changeset
76 self.tools.AddControl(self.statusBox)
goffi@necton2
parents:
diff changeset
77 self.tools.AddSeparator()
737
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
78 self.statusTxt = wx.TextCtrl(self.tools, -1, style=wx.TE_PROCESS_ENTER)
0
goffi@necton2
parents:
diff changeset
79 self.tools.AddControl(self.statusTxt)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
80 self.Bind(wx.EVT_COMBOBOX, self.onStatusChange, self.statusBox)
0
goffi@necton2
parents:
diff changeset
81 self.Bind(wx.EVT_TEXT_ENTER, self.onStatusChange, self.statusTxt)
goffi@necton2
parents:
diff changeset
82 self.tools.Disable()
366
0806a65a5fa9 wix: updated paths to use media_dir
Goffi <goffi@goffi.org>
parents: 228
diff changeset
83
11
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
84 #tray icon
679
59c9a7ff903d wix, misc: use picture of dimension 32x32 for tray icon + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents: 653
diff changeset
85 ticon = wx.Icon(os.path.join(self.media_dir, 'icons/crystal/32/tray_icon.xpm'), wx.BITMAP_TYPE_XPM)
11
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
86 self.tray_icon = wx.TaskBarIcon()
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
87 self.tray_icon.SetIcon(ticon, _("Wix jabber client"))
11
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
88 wx.EVT_TASKBAR_LEFT_UP(self.tray_icon, self.onTrayClick)
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
89
0
goffi@necton2
parents:
diff changeset
90
goffi@necton2
parents:
diff changeset
91 #events
goffi@necton2
parents:
diff changeset
92 self.Bind(wx.EVT_CLOSE, self.onClose, self)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
93
101
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
94 #menus
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
95 self.createMenus()
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
96 for i in range(self.menuBar.GetMenuCount()):
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
97 self.menuBar.EnableTop(i, False)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
98
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
99 #profile panel
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
100 self.profile_pan = ProfileManager(self)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
101 self.sizer.Add(self.profile_pan, 1, flag=wx.EXPAND)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
102
119
ded2431cea5a Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents: 105
diff changeset
103 self.postInit()
ded2431cea5a Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents: 105
diff changeset
104
0
goffi@necton2
parents:
diff changeset
105 self.Show()
goffi@necton2
parents:
diff changeset
106
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
107 def plug_profile(self, profile_key='@DEFAULT@'):
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
108 """Hide profile panel then plug profile"""
89
23caf1051099 multi-profile/subscription misc fixes
Goffi <goffi@goffi.org>
parents: 85
diff changeset
109 debug (_('plugin profile %s' % profile_key))
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
110 self.profile_pan.Hide()
501
e9634d2e7b38 core, quick_frontend, primitivus, wix: Contacts List refactoring phase 1:
Goffi <goffi@goffi.org>
parents: 491
diff changeset
111 self.contact_list.Show()
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
112 self.sizer.Layout()
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
113 for i in range(self.menuBar.GetMenuCount()):
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
114 self.menuBar.EnableTop(i, True)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
115 super(MainWindow, self).plug_profile(profile_key)
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
116
0
goffi@necton2
parents:
diff changeset
117 def createMenus(self):
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
118 info(_("Creating menus"))
0
goffi@necton2
parents:
diff changeset
119 connectMenu = wx.Menu()
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
120 connectMenu.Append(idCONNECT, _("&Connect CTRL-c"),_(" Connect to the server"))
Goffi <goffi@goffi.org>
parents: 68
diff changeset
121 connectMenu.Append(idDISCONNECT, _("&Disconnect CTRL-d"),_(" Disconnect from the server"))
Goffi <goffi@goffi.org>
parents: 68
diff changeset
122 connectMenu.Append(idPARAM,_("&Parameters"),_(" Configure the program"))
0
goffi@necton2
parents:
diff changeset
123 connectMenu.AppendSeparator()
736
6246eb6d64a0 frontends: define the constants with classes and inheritance instance of using __builtin__
souliane <souliane@mailoo.org>
parents: 688
diff changeset
124 connectMenu.Append(idABOUT, _("A&bout"), _(" About %s") % Const.APP_NAME)
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
125 connectMenu.Append(idEXIT,_("E&xit"),_(" Terminate the program"))
0
goffi@necton2
parents:
diff changeset
126 contactMenu = wx.Menu()
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
127 contactMenu.Append(idADD_CONTACT, _("&Add contact"),_(" Add a contact to your list"))
Goffi <goffi@goffi.org>
parents: 68
diff changeset
128 contactMenu.Append(idREMOVE_CONTACT, _("&Remove contact"),_(" Remove the selected contact from your list"))
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
129 contactMenu.AppendSeparator()
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
130 contactMenu.Append(idSHOW_PROFILE, _("&Show profile"), _(" Show contact's profile"))
25
53e921c8a357 new plugin: gateways plugin, and first implementation of findGateways
Goffi <goffi@goffi.org>
parents: 23
diff changeset
131 communicationMenu = wx.Menu()
72
f271fff3a713 MUC implementation: first draft
Goffi <goffi@goffi.org>
parents: 70
diff changeset
132 communicationMenu.Append(idJOIN_ROOM, _("&Join Room"),_(" Join a Multi-User Chat room"))
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
133 self.menuBar = wx.MenuBar()
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
134 self.menuBar.Append(connectMenu,_("&General"))
Goffi <goffi@goffi.org>
parents: 68
diff changeset
135 self.menuBar.Append(contactMenu,_("&Contacts"))
Goffi <goffi@goffi.org>
parents: 68
diff changeset
136 self.menuBar.Append(communicationMenu,_("&Communication"))
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
137 self.SetMenuBar(self.menuBar)
0
goffi@necton2
parents:
diff changeset
138
101
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
139 #additionals menus
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
140 #FIXME: do this in a more generic way (in quickapp)
773
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
141 add_menus = self.bridge.getMenus('', Const.NO_SECURITY_LIMIT)
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
142 for id_, type_, path, path_i18n in add_menus:
755
e3ad48a2aab2 core, frontends: callMenu is now async and don't use callback_id anymore
Goffi <goffi@goffi.org>
parents: 737
diff changeset
143 assert(type_=="NORMAL") #TODO: manage other types
773
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
144 if len(path) != 2:
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
145 raise NotImplementedError("Menu with a path != 2 are not implemented yet")
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
146 category = path_i18n[0] # TODO: manage path with more than 2 levels
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
147 name = path_i18n[1]
101
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
148 menu_idx = self.menuBar.FindMenu(category)
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
149 current_menu = None
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
150 if menu_idx == wx.NOT_FOUND:
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
151 #the menu is new, we create it
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
152 current_menu = wx.Menu()
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
153 self.menuBar.Append(current_menu, category)
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
154 else:
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
155 current_menu = self.menuBar.GetMenu(menu_idx)
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
156 assert(current_menu != None)
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
157 item_id = wx.NewId()
773
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
158 help_string = self.bridge.getMenuHelp(id_, '')
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
159 current_menu.Append(item_id, name, help=help_string)
101
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
160 #now we register the event
802
9007bb133009 core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 796
diff changeset
161 def event_answer(e, id_=id_):
773
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
162 self.launchAction(id_, None, profile_key = self.profile)
eac23b1aad90 core: dynamics menus refactoring:
Goffi <goffi@goffi.org>
parents: 771
diff changeset
163
101
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
164 wx.EVT_MENU(self, item_id, event_answer)
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
165
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 91
diff changeset
166
0
goffi@necton2
parents:
diff changeset
167 #events
goffi@necton2
parents:
diff changeset
168 wx.EVT_MENU(self, idCONNECT, self.onConnectRequest)
1
a06a151fc31f Disconnect first draft
Goffi <goffi@goffi.org>
parents: 0
diff changeset
169 wx.EVT_MENU(self, idDISCONNECT, self.onDisconnectRequest)
0
goffi@necton2
parents:
diff changeset
170 wx.EVT_MENU(self, idPARAM, self.onParam)
191
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
171 wx.EVT_MENU(self, idABOUT, self.onAbout)
0
goffi@necton2
parents:
diff changeset
172 wx.EVT_MENU(self, idEXIT, self.onExit)
goffi@necton2
parents:
diff changeset
173 wx.EVT_MENU(self, idADD_CONTACT, self.onAddContact)
goffi@necton2
parents:
diff changeset
174 wx.EVT_MENU(self, idREMOVE_CONTACT, self.onRemoveContact)
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
175 wx.EVT_MENU(self, idSHOW_PROFILE, self.onShowProfile)
72
f271fff3a713 MUC implementation: first draft
Goffi <goffi@goffi.org>
parents: 70
diff changeset
176 wx.EVT_MENU(self, idJOIN_ROOM, self.onJoinRoom)
0
goffi@necton2
parents:
diff changeset
177
513
8ee9113d307b core, quick_frontend, primitivus, wixi, bridge: fixed delayed message timestamp:
Goffi <goffi@goffi.org>
parents: 510
diff changeset
178 def newMessage(self, from_jid, to_jid, msg, _type, extra, profile):
8ee9113d307b core, quick_frontend, primitivus, wixi, bridge: fixed delayed message timestamp:
Goffi <goffi@goffi.org>
parents: 510
diff changeset
179 QuickApp.newMessage(self, from_jid, to_jid, msg, _type, extra, profile)
0
goffi@necton2
parents:
diff changeset
180
goffi@necton2
parents:
diff changeset
181 def showAlert(self, message):
goffi@necton2
parents:
diff changeset
182 # TODO: place this in a separate class
goffi@necton2
parents:
diff changeset
183 popup=wx.PopupWindow(self)
goffi@necton2
parents:
diff changeset
184 ### following code come from wxpython demo
goffi@necton2
parents:
diff changeset
185 popup.SetBackgroundColour("CADET BLUE")
goffi@necton2
parents:
diff changeset
186 st = wx.StaticText(popup, -1, message, pos=(10,10))
goffi@necton2
parents:
diff changeset
187 sz = st.GetBestSize()
goffi@necton2
parents:
diff changeset
188 popup.SetSize( (sz.width+20, sz.height+20) )
goffi@necton2
parents:
diff changeset
189 x=(wx.DisplaySize()[0]-popup.GetSize()[0])/2
goffi@necton2
parents:
diff changeset
190 popup.SetPosition((x,0))
goffi@necton2
parents:
diff changeset
191 popup.Show()
goffi@necton2
parents:
diff changeset
192 wx.CallLater(5000,popup.Destroy)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
193
182
556c2bd7c344 Primitivus now implement showDialog + new "newAlert" bridge method to show a dialog from core
Goffi <goffi@goffi.org>
parents: 180
diff changeset
194 def showDialog(self, message, title="", type="info", answer_cb = None, answer_data = None):
0
goffi@necton2
parents:
diff changeset
195 if type == 'info':
goffi@necton2
parents:
diff changeset
196 flags = wx.OK | wx.ICON_INFORMATION
goffi@necton2
parents:
diff changeset
197 elif type == 'error':
goffi@necton2
parents:
diff changeset
198 flags = wx.OK | wx.ICON_ERROR
51
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
199 elif type == 'yes/no':
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
200 flags = wx.YES_NO | wx.ICON_QUESTION
0
goffi@necton2
parents:
diff changeset
201 else:
goffi@necton2
parents:
diff changeset
202 flags = wx.OK | wx.ICON_INFORMATION
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
203 error(_('unmanaged dialog type: %s'), type)
0
goffi@necton2
parents:
diff changeset
204 dlg = wx.MessageDialog(self, message, title, flags)
goffi@necton2
parents:
diff changeset
205 answer = dlg.ShowModal()
goffi@necton2
parents:
diff changeset
206 dlg.Destroy()
182
556c2bd7c344 Primitivus now implement showDialog + new "newAlert" bridge method to show a dialog from core
Goffi <goffi@goffi.org>
parents: 180
diff changeset
207 if answer_cb:
556c2bd7c344 Primitivus now implement showDialog + new "newAlert" bridge method to show a dialog from core
Goffi <goffi@goffi.org>
parents: 180
diff changeset
208 data = [answer_data] if answer_data else []
556c2bd7c344 Primitivus now implement showDialog + new "newAlert" bridge method to show a dialog from core
Goffi <goffi@goffi.org>
parents: 180
diff changeset
209 answer_cb(True if (answer == wx.ID_YES or answer == wx.ID_OK) else False, *data)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
210
737
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
211 def setStatusOnline(self, online=True, show="", statuses={}):
0
goffi@necton2
parents:
diff changeset
212 """enable/disable controls, must be called when local user online status change"""
goffi@necton2
parents:
diff changeset
213 if online:
736
6246eb6d64a0 frontends: define the constants with classes and inheritance instance of using __builtin__
souliane <souliane@mailoo.org>
parents: 688
diff changeset
214 self.SetStatusText(Const.msgONLINE)
0
goffi@necton2
parents:
diff changeset
215 self.tools.Enable()
737
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
216 try:
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
217 presence = [x for x in Const.PRESENCE if x[0] == show][0][1]
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
218 self.statusBox.SetValue(presence)
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
219 except (TypeError, IndexError):
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
220 pass
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
221 try:
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
222 self.statusTxt.SetValue(statuses['default'])
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
223 except (TypeError, KeyError):
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
224 pass
0
goffi@necton2
parents:
diff changeset
225 else:
736
6246eb6d64a0 frontends: define the constants with classes and inheritance instance of using __builtin__
souliane <souliane@mailoo.org>
parents: 688
diff changeset
226 self.SetStatusText(Const.msgOFFLINE)
0
goffi@necton2
parents:
diff changeset
227 self.tools.Disable()
goffi@necton2
parents:
diff changeset
228 return
goffi@necton2
parents:
diff changeset
229
759
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
230 def launchAction(self, callback_id, data=None, profile_key="@NONE@"):
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
231 """ Launch a dynamic action
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
232 @param callback_id: id of the action to launch
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
233 @param data: data needed only for certain actions
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
234 @param profile_key: %(doc_profile_key)s
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
235
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
236 """
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
237 if data is None:
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
238 data = dict()
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
239 def action_cb(data):
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
240 if not data:
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
241 # action was a one shot, nothing to do
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
242 pass
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
243 elif "xmlui" in data:
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
244 debug (_("XML user interface received"))
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
245 XMLUI(self, xml_data = data['xmlui'])
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
246 else:
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
247 dlg = wx.MessageDialog(self, _(u"Unmanaged action result"),
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
248 _('Error'),
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
249 wx.OK | wx.ICON_ERROR
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
250 )
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
251 dlg.ShowModal()
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
252 dlg.Destroy()
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
253 def action_eb(failure):
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
254 dlg = wx.MessageDialog(self, unicode(failure),
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
255 _('Error'),
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
256 wx.OK | wx.ICON_ERROR
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
257 )
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
258 dlg.ShowModal()
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
259 dlg.Destroy()
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
260
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
261 self.bridge.launchAction(callback_id, data, profile_key, callback=action_cb, errback=action_eb)
93bd868b8fb6 backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents: 755
diff changeset
262
542
3eeb6c865e4d frontends: incoming files transfer management:
Goffi <goffi@goffi.org>
parents: 538
diff changeset
263 def askConfirmation(self, confirmation_id, confirmation_type, data, profile):
0
goffi@necton2
parents:
diff changeset
264 #TODO: refactor this in QuickApp
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
265 if not self.check_profile(profile):
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
266 return
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
267 debug (_("Confirmation asked"))
0
goffi@necton2
parents:
diff changeset
268 answer_data={}
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
269 if confirmation_type == "FILE_TRANSFER":
391
c34fd9d6242e spelling
Goffi <goffi@goffi.org>
parents: 366
diff changeset
270 debug (_("File transfer confirmation asked"))
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
271 dlg = wx.MessageDialog(self, _("The contact %(jid)s wants to send you the file %(filename)s\nDo you accept ?") % {'jid':data["from"], 'filename':data["filename"]},
Goffi <goffi@goffi.org>
parents: 68
diff changeset
272 _('File Request'),
0
goffi@necton2
parents:
diff changeset
273 wx.YES_NO | wx.ICON_QUESTION
goffi@necton2
parents:
diff changeset
274 )
goffi@necton2
parents:
diff changeset
275 answer=dlg.ShowModal()
goffi@necton2
parents:
diff changeset
276 if answer==wx.ID_YES:
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
277 filename = wx.FileSelector(_("Where do you want to save the file ?"), flags = wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
0
goffi@necton2
parents:
diff changeset
278 if filename:
goffi@necton2
parents:
diff changeset
279 answer_data["dest_path"] = filename
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
280 self.bridge.confirmationAnswer(confirmation_id, True, answer_data, profile)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
281 self.waitProgress(confirmation_id, _("File Transfer"), _("Copying %s") % os.path.basename(filename), profile)
0
goffi@necton2
parents:
diff changeset
282 else:
goffi@necton2
parents:
diff changeset
283 answer = wx.ID_NO
goffi@necton2
parents:
diff changeset
284 if answer==wx.ID_NO:
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
285 self.bridge.confirmationAnswer(confirmation_id, False, answer_data, profile)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
286
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
287 dlg.Destroy()
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
288
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
289 elif confirmation_type == "YES/NO":
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
290 debug (_("Yes/No confirmation asked"))
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
291 dlg = wx.MessageDialog(self, data["message"],
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
292 _('Confirmation'),
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
293 wx.YES_NO | wx.ICON_QUESTION
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
294 )
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
295 answer=dlg.ShowModal()
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
296 if answer==wx.ID_YES:
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
297 self.bridge.confirmationAnswer(confirmation_id, True, {}, profile)
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
298 if answer==wx.ID_NO:
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
299 self.bridge.confirmationAnswer(confirmation_id, False, {}, profile)
0
goffi@necton2
parents:
diff changeset
300
goffi@necton2
parents:
diff changeset
301 dlg.Destroy()
goffi@necton2
parents:
diff changeset
302
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
303 def actionResult(self, type, id, data, profile):
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
304 if not self.check_profile(profile):
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
305 return
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
306 debug (_("actionResult: type = [%(type)s] id = [%(id)s] data = [%(data)s]") % {'type':type, 'id':id, 'data':data})
51
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
307 if not id in self.current_action_ids:
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
308 debug (_('unknown id, ignoring'))
51
8c67ea98ab91 frontend improved to take into account new SàT features
Goffi <goffi@goffi.org>
parents: 42
diff changeset
309 return
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
310 if type == "SUPPRESS":
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
311 self.current_action_ids.remove(id)
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
312 elif type == "SUCCESS":
23
925ab466c5ec better presentation for register new account
Goffi <goffi@goffi.org>
parents: 22
diff changeset
313 self.current_action_ids.remove(id)
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
314 dlg = wx.MessageDialog(self, data["message"],
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
315 _('Success'),
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
316 wx.OK | wx.ICON_INFORMATION
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
317 )
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
318 dlg.ShowModal()
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
319 dlg.Destroy()
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
320 elif type == "ERROR":
23
925ab466c5ec better presentation for register new account
Goffi <goffi@goffi.org>
parents: 22
diff changeset
321 self.current_action_ids.remove(id)
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
322 dlg = wx.MessageDialog(self, data["message"],
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
323 _('Error'),
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
324 wx.OK | wx.ICON_ERROR
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
325 )
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
326 dlg.ShowModal()
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
327 dlg.Destroy()
103
6be927a465ed XMLUI refactoring, step 1
Goffi <goffi@goffi.org>
parents: 102
diff changeset
328 elif type == "XMLUI":
33
b9bb5d8e0cc7 In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents: 28
diff changeset
329 self.current_action_ids.remove(id)
103
6be927a465ed XMLUI refactoring, step 1
Goffi <goffi@goffi.org>
parents: 102
diff changeset
330 debug (_("XML user interface received"))
91
39c672544593 Tarot: bidding phase
Goffi <goffi@goffi.org>
parents: 90
diff changeset
331 misc = {}
39c672544593 Tarot: bidding phase
Goffi <goffi@goffi.org>
parents: 90
diff changeset
332 #FIXME FIXME FIXME: must clean all this crap !
39c672544593 Tarot: bidding phase
Goffi <goffi@goffi.org>
parents: 90
diff changeset
333 title = _('Form')
39c672544593 Tarot: bidding phase
Goffi <goffi@goffi.org>
parents: 90
diff changeset
334 if data['type'] == _('registration'):
103
6be927a465ed XMLUI refactoring, step 1
Goffi <goffi@goffi.org>
parents: 102
diff changeset
335 title = _('Registration')
91
39c672544593 Tarot: bidding phase
Goffi <goffi@goffi.org>
parents: 90
diff changeset
336 misc['target'] = data['target']
39c672544593 Tarot: bidding phase
Goffi <goffi@goffi.org>
parents: 90
diff changeset
337 misc['action_back'] = self.bridge.gatewayRegister
103
6be927a465ed XMLUI refactoring, step 1
Goffi <goffi@goffi.org>
parents: 102
diff changeset
338 XMLUI(self, title=title, xml_data = data['xml'], misc = misc)
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
339 elif type == "RESULT":
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
340 self.current_action_ids.remove(id)
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
341 if self.current_action_ids_cb.has_key(id):
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
342 callback = self.current_action_ids_cb[id]
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
343 del self.current_action_ids_cb[id]
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
344 callback(data)
25
53e921c8a357 new plugin: gateways plugin, and first implementation of findGateways
Goffi <goffi@goffi.org>
parents: 23
diff changeset
345 elif type == "DICT_DICT":
28
c2b131e4e262 wix: new gateways manager
Goffi <goffi@goffi.org>
parents: 25
diff changeset
346 self.current_action_ids.remove(id)
c2b131e4e262 wix: new gateways manager
Goffi <goffi@goffi.org>
parents: 25
diff changeset
347 if self.current_action_ids_cb.has_key(id):
c2b131e4e262 wix: new gateways manager
Goffi <goffi@goffi.org>
parents: 25
diff changeset
348 callback = self.current_action_ids_cb[id]
c2b131e4e262 wix: new gateways manager
Goffi <goffi@goffi.org>
parents: 25
diff changeset
349 del self.current_action_ids_cb[id]
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
350 callback(data)
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
351 else:
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
352 error (_("FIXME FIXME FIXME: type [%s] not implemented") % type)
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
353 raise NotImplementedError
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
354
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 18
diff changeset
355
0
goffi@necton2
parents:
diff changeset
356
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
357 def progressCB(self, progress_id, title, message, profile):
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
358 data = self.bridge.getProgress(progress_id, profile)
0
goffi@necton2
parents:
diff changeset
359 if data:
goffi@necton2
parents:
diff changeset
360 if not self.pbar:
goffi@necton2
parents:
diff changeset
361 #first answer, we must construct the bar
180
fdb961f27ae9 Primitivus: file sending and progress management
Goffi <goffi@goffi.org>
parents: 120
diff changeset
362 self.pbar = wx.ProgressDialog(title, message, float(data['size']), None,
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
363 wx.PD_SMOOTH | wx.PD_ELAPSED_TIME | wx.PD_ESTIMATED_TIME | wx.PD_REMAINING_TIME)
180
fdb961f27ae9 Primitivus: file sending and progress management
Goffi <goffi@goffi.org>
parents: 120
diff changeset
364 self.pbar.finish_value = float(data['size'])
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
365
0
goffi@necton2
parents:
diff changeset
366 self.pbar.Update(int(data['position']))
goffi@necton2
parents:
diff changeset
367 elif self.pbar:
goffi@necton2
parents:
diff changeset
368 self.pbar.Update(self.pbar.finish_value)
goffi@necton2
parents:
diff changeset
369 return
goffi@necton2
parents:
diff changeset
370
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
371 wx.CallLater(10, self.progressCB, progress_id, title, message, profile)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
372
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
373 def waitProgress (self, progress_id, title, message, profile):
0
goffi@necton2
parents:
diff changeset
374 self.pbar = None
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 513
diff changeset
375 wx.CallLater(10, self.progressCB, progress_id, title, message, profile)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
376
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
377
0
goffi@necton2
parents:
diff changeset
378
goffi@necton2
parents:
diff changeset
379 ### events ###
goffi@necton2
parents:
diff changeset
380
goffi@necton2
parents:
diff changeset
381 def onContactActivated(self, jid):
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
382 debug (_("onContactActivated: %s"), jid)
688
f7878ad3c846 tools: renamed tools.jid.JID attribute "short" to "bare"
souliane <souliane@mailoo.org>
parents: 679
diff changeset
383 if self.chat_wins[jid.bare].IsShown():
f7878ad3c846 tools: renamed tools.jid.JID attribute "short" to "bare"
souliane <souliane@mailoo.org>
parents: 679
diff changeset
384 self.chat_wins[jid.bare].Hide()
0
goffi@necton2
parents:
diff changeset
385 else:
688
f7878ad3c846 tools: renamed tools.jid.JID attribute "short" to "bare"
souliane <souliane@mailoo.org>
parents: 679
diff changeset
386 self.chat_wins[jid.bare].Show()
0
goffi@necton2
parents:
diff changeset
387
goffi@necton2
parents:
diff changeset
388 def onConnectRequest(self, e):
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
389 self.bridge.connect(self.profile)
0
goffi@necton2
parents:
diff changeset
390
1
a06a151fc31f Disconnect first draft
Goffi <goffi@goffi.org>
parents: 0
diff changeset
391 def onDisconnectRequest(self, e):
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 67
diff changeset
392 self.bridge.disconnect(self.profile)
1
a06a151fc31f Disconnect first draft
Goffi <goffi@goffi.org>
parents: 0
diff changeset
393
0
goffi@necton2
parents:
diff changeset
394 def __updateStatus(self):
737
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
395 show = [x for x in Const.PRESENCE if x[1] == self.statusBox.GetValue()][0][0]
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
396 status = self.statusTxt.GetValue()
378af36155c2 frontends: set and retrieve your own presence and status
souliane <souliane@mailoo.org>
parents: 736
diff changeset
397 self.bridge.setPresence(show=show, statuses={'default': status}, profile_key=self.profile) #FIXME: manage multilingual statuses
0
goffi@necton2
parents:
diff changeset
398
goffi@necton2
parents:
diff changeset
399 def onStatusChange(self, e):
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
400 debug(_("Status change request"))
0
goffi@necton2
parents:
diff changeset
401 self.__updateStatus()
goffi@necton2
parents:
diff changeset
402
goffi@necton2
parents:
diff changeset
403 def onParam(self, e):
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
404 debug(_("Param request"))
796
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
405 def success(params):
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
406 XMLUI(self, xml_data=params, title=_("Configuration"))
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
407
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
408 def failure(error):
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
409 dlg = wx.MessageDialog(self, unicode(error),
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
410 _('Error'),
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
411 wx.OK | wx.ICON_ERROR
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
412 )
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
413 dlg.ShowModal()
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
414 dlg.Destroy()
46aa5ada61bf core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 777
diff changeset
415 self.bridge.getParamsUI(app=Const.APP_NAME, profile_key=self.profile, callback=success, errback=failure)
0
goffi@necton2
parents:
diff changeset
416
191
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
417 def onAbout(self, e):
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
418 about = wx.AboutDialogInfo()
736
6246eb6d64a0 frontends: define the constants with classes and inheritance instance of using __builtin__
souliane <souliane@mailoo.org>
parents: 688
diff changeset
419 about.SetName(Const.APP_NAME)
191
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
420 about.SetVersion (unicode(self.bridge.getVersion()))
811
1fe00f0c9a91 dates update
Goffi <goffi@goffi.org>
parents: 807
diff changeset
421 about.SetCopyright(u"(C) 2009, 2010, 2011, 2012, 2013, 2014 Jérôme Poisson aka Goffi")
191
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
422 about.SetDescription( _(u"%(name)s is a SàT (Salut à Toi) frontend\n"+
736
6246eb6d64a0 frontends: define the constants with classes and inheritance instance of using __builtin__
souliane <souliane@mailoo.org>
parents: 688
diff changeset
423 u"%(name)s is based on WxPython, and is the standard graphic interface of SàT") % {'name': Const.APP_NAME})
191
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
424 about.SetWebSite(("http://www.goffi.org", "Goffi's non-hebdo (french)"))
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
425 about.SetDevelopers([ "Goffi (Jérôme Poisson)"])
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
426 try:
736
6246eb6d64a0 frontends: define the constants with classes and inheritance instance of using __builtin__
souliane <souliane@mailoo.org>
parents: 688
diff changeset
427 with open(Const.LICENCE_PATH, "r") as licence:
191
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
428 about.SetLicence(''.join(licence.readlines()))
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
429 except:
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
430 pass
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
431
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
432 wx.AboutBox(about)
1438a1337732 About added/updated for Wix & Jp
Goffi <goffi@goffi.org>
parents: 185
diff changeset
433
0
goffi@necton2
parents:
diff changeset
434 def onExit(self, e):
goffi@necton2
parents:
diff changeset
435 self.Close()
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
436
0
goffi@necton2
parents:
diff changeset
437 def onAddContact(self, e):
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
438 debug(_("Add contact request"))
0
goffi@necton2
parents:
diff changeset
439 dlg = wx.TextEntryDialog(
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
440 self, _('Please enter new contact JID'),
Goffi <goffi@goffi.org>
parents: 68
diff changeset
441 _('Adding a contact'), _('name@server.tld'))
0
goffi@necton2
parents:
diff changeset
442
goffi@necton2
parents:
diff changeset
443 if dlg.ShowModal() == wx.ID_OK:
goffi@necton2
parents:
diff changeset
444 jid=JID(dlg.GetValue())
goffi@necton2
parents:
diff changeset
445 if jid.is_valid():
688
f7878ad3c846 tools: renamed tools.jid.JID attribute "short" to "bare"
souliane <souliane@mailoo.org>
parents: 679
diff changeset
446 self.bridge.addContact(jid.bare, profile_key=self.profile)
0
goffi@necton2
parents:
diff changeset
447 else:
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
448 error (_("'%s' is an invalid JID !"), jid)
0
goffi@necton2
parents:
diff changeset
449 #TODO: notice the user
goffi@necton2
parents:
diff changeset
450
goffi@necton2
parents:
diff changeset
451 dlg.Destroy()
goffi@necton2
parents:
diff changeset
452
goffi@necton2
parents:
diff changeset
453 def onRemoveContact(self, e):
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
454 debug(_("Remove contact request"))
501
e9634d2e7b38 core, quick_frontend, primitivus, wix: Contacts List refactoring phase 1:
Goffi <goffi@goffi.org>
parents: 491
diff changeset
455 target = self.contact_list.getSelection()
0
goffi@necton2
parents:
diff changeset
456 if not target:
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
457 dlg = wx.MessageDialog(self, _("You haven't selected any contact !"),
Goffi <goffi@goffi.org>
parents: 68
diff changeset
458 _('Error'),
0
goffi@necton2
parents:
diff changeset
459 wx.OK | wx.ICON_ERROR
goffi@necton2
parents:
diff changeset
460 )
goffi@necton2
parents:
diff changeset
461 dlg.ShowModal()
goffi@necton2
parents:
diff changeset
462 dlg.Destroy()
goffi@necton2
parents:
diff changeset
463 return
goffi@necton2
parents:
diff changeset
464
688
f7878ad3c846 tools: renamed tools.jid.JID attribute "short" to "bare"
souliane <souliane@mailoo.org>
parents: 679
diff changeset
465 dlg = wx.MessageDialog(self, _("Are you sure you want to delete %s from your roster list ?") % target.bare,
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
466 _('Contact suppression'),
0
goffi@necton2
parents:
diff changeset
467 wx.YES_NO | wx.ICON_QUESTION
goffi@necton2
parents:
diff changeset
468 )
goffi@necton2
parents:
diff changeset
469
goffi@necton2
parents:
diff changeset
470 if dlg.ShowModal() == wx.ID_YES:
688
f7878ad3c846 tools: renamed tools.jid.JID attribute "short" to "bare"
souliane <souliane@mailoo.org>
parents: 679
diff changeset
471 info(_("Unsubscribing %s presence"), target.bare)
f7878ad3c846 tools: renamed tools.jid.JID attribute "short" to "bare"
souliane <souliane@mailoo.org>
parents: 679
diff changeset
472 self.bridge.delContact(target.bare, profile_key=self.profile)
0
goffi@necton2
parents:
diff changeset
473
goffi@necton2
parents:
diff changeset
474 dlg.Destroy()
goffi@necton2
parents:
diff changeset
475
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
476 def onShowProfile(self, e):
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
477 debug(_("Show contact's profile request"))
501
e9634d2e7b38 core, quick_frontend, primitivus, wix: Contacts List refactoring phase 1:
Goffi <goffi@goffi.org>
parents: 491
diff changeset
478 target = self.contact_list.getSelection()
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
479 if not target:
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
480 dlg = wx.MessageDialog(self, _("You haven't selected any contact !"),
Goffi <goffi@goffi.org>
parents: 68
diff changeset
481 _('Error'),
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
482 wx.OK | wx.ICON_ERROR
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
483 )
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
484 dlg.ShowModal()
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
485 dlg.Destroy()
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
486 return
688
f7878ad3c846 tools: renamed tools.jid.JID attribute "short" to "bare"
souliane <souliane@mailoo.org>
parents: 679
diff changeset
487 _id = self.bridge.getCard(target.bare, profile_key=self.profile)
491
1e4731f1e1d7 wix: renamed id variable to avoid reserved name
Goffi <goffi@goffi.org>
parents: 480
diff changeset
488 self.current_action_ids.add(_id)
1e4731f1e1d7 wix: renamed id variable to avoid reserved name
Goffi <goffi@goffi.org>
parents: 480
diff changeset
489 self.current_action_ids_cb[_id] = self.onProfileReceived
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
490
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
491 def onProfileReceived(self, data):
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
492 """Called when a profile is received"""
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
493 debug (_('Profile received: [%s]') % data)
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
494 profile=Profile(self, data)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
495
72
f271fff3a713 MUC implementation: first draft
Goffi <goffi@goffi.org>
parents: 70
diff changeset
496 def onJoinRoom(self, e):
f271fff3a713 MUC implementation: first draft
Goffi <goffi@goffi.org>
parents: 70
diff changeset
497 warning('FIXME: temporary menu, must be improved')
80
9681f18d06bd wix: basic dialog to join MUC room, jid node is now displayed in conversations instead of full jid
Goffi <goffi@goffi.org>
parents: 75
diff changeset
498 #TODO: a proper MUC room joining dialog with nickname etc
9681f18d06bd wix: basic dialog to join MUC room, jid node is now displayed in conversations instead of full jid
Goffi <goffi@goffi.org>
parents: 75
diff changeset
499 dlg = wx.TextEntryDialog(
9681f18d06bd wix: basic dialog to join MUC room, jid node is now displayed in conversations instead of full jid
Goffi <goffi@goffi.org>
parents: 75
diff changeset
500 self, _("Please enter MUC's JID"),
204
b2e1a13ed596 misc minors fixed before release
Goffi <goffi@goffi.org>
parents: 191
diff changeset
501 #_('Entering a MUC room'), 'test@conference.necton2.int')
b2e1a13ed596 misc minors fixed before release
Goffi <goffi@goffi.org>
parents: 191
diff changeset
502 _('Entering a MUC room'), 'room@muc_service.server.tld')
80
9681f18d06bd wix: basic dialog to join MUC room, jid node is now displayed in conversations instead of full jid
Goffi <goffi@goffi.org>
parents: 75
diff changeset
503 if dlg.ShowModal() == wx.ID_OK:
9681f18d06bd wix: basic dialog to join MUC room, jid node is now displayed in conversations instead of full jid
Goffi <goffi@goffi.org>
parents: 75
diff changeset
504 room_jid=JID(dlg.GetValue())
9681f18d06bd wix: basic dialog to join MUC room, jid node is now displayed in conversations instead of full jid
Goffi <goffi@goffi.org>
parents: 75
diff changeset
505 if room_jid.is_valid():
405
10b4f577d0c0 MUC update to follow wokkel's MUC branch update
Goffi <goffi@goffi.org>
parents: 391
diff changeset
506 self.bridge.joinMUC(room_jid, self.profiles[self.profile]['whoami'].node, {}, self.profile)
80
9681f18d06bd wix: basic dialog to join MUC room, jid node is now displayed in conversations instead of full jid
Goffi <goffi@goffi.org>
parents: 75
diff changeset
507 else:
9681f18d06bd wix: basic dialog to join MUC room, jid node is now displayed in conversations instead of full jid
Goffi <goffi@goffi.org>
parents: 75
diff changeset
508 error (_("'%s' is an invalid JID !"), room_jid)
42
874de3020e1c Initial VCard (XEP-0054) support + misc fixes
Goffi <goffi@goffi.org>
parents: 38
diff changeset
509
0
goffi@necton2
parents:
diff changeset
510 def onClose(self, e):
183
9ee4a1d0d7fb Added auto(dis)connect params + misc
Goffi <goffi@goffi.org>
parents: 182
diff changeset
511 QuickApp.onExit(self)
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
512 info(_("Exiting..."))
183
9ee4a1d0d7fb Added auto(dis)connect params + misc
Goffi <goffi@goffi.org>
parents: 182
diff changeset
513 for win in self.chat_wins:
9ee4a1d0d7fb Added auto(dis)connect params + misc
Goffi <goffi@goffi.org>
parents: 182
diff changeset
514 self.chat_wins[win].Destroy()
628
42ee0b0b0a15 wix: fixed application quitting (fix bug 25)
Goffi <goffi@goffi.org>
parents: 609
diff changeset
515 self.tray_icon.Destroy()
0
goffi@necton2
parents:
diff changeset
516 e.Skip()
11
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
517
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
518 def onTrayClick(self, e):
70
Goffi <goffi@goffi.org>
parents: 68
diff changeset
519 debug(_("Tray Click"))
11
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
520 if self.IsShown():
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
521 self.Hide()
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
522 else:
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
523 self.Show()
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
524 self.Raise()
37153f3a3dc1 wix: Tray Icon
Goffi <goffi@goffi.org>
parents: 1
diff changeset
525 e.Skip()
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
526
653
e2eff3c7ad02 wix: bug fix at startup when the method chatStateReceived doesn't exist
souliane <souliane@mailoo.org>
parents: 641
diff changeset
527 def chatStateReceived(self, from_jid_s, state, profile):
e2eff3c7ad02 wix: bug fix at startup when the method chatStateReceived doesn't exist
souliane <souliane@mailoo.org>
parents: 641
diff changeset
528 """Signal observer to display a contact chat state
e2eff3c7ad02 wix: bug fix at startup when the method chatStateReceived doesn't exist
souliane <souliane@mailoo.org>
parents: 641
diff changeset
529 @param from_jid_s: contact who sent his new state
e2eff3c7ad02 wix: bug fix at startup when the method chatStateReceived doesn't exist
souliane <souliane@mailoo.org>
parents: 641
diff changeset
530 @state: state
e2eff3c7ad02 wix: bug fix at startup when the method chatStateReceived doesn't exist
souliane <souliane@mailoo.org>
parents: 641
diff changeset
531 @profile: current profile
e2eff3c7ad02 wix: bug fix at startup when the method chatStateReceived doesn't exist
souliane <souliane@mailoo.org>
parents: 641
diff changeset
532 """
e2eff3c7ad02 wix: bug fix at startup when the method chatStateReceived doesn't exist
souliane <souliane@mailoo.org>
parents: 641
diff changeset
533 print "TODO: chatStateReceived not implemented yet"
e2eff3c7ad02 wix: bug fix at startup when the method chatStateReceived doesn't exist
souliane <souliane@mailoo.org>
parents: 641
diff changeset
534 pass