Mercurial > libervia-web
annotate browser_side/dialog.py @ 446:c406e46fe9c0
server_side: update the connection mechanism to handle profile passwords
author | souliane <souliane@mailoo.org> |
---|---|
date | Wed, 07 May 2014 19:46:58 +0200 |
parents | d52f529a6d42 |
children |
rev | line source |
---|---|
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
4 # Libervia: a Salut à Toi frontend |
340 | 5 # Copyright (C) 2011, 2012, 2013, 2014 Jérôme Poisson <goffi@goffi.org> |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
10 # (at your option) any later version. |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
15 # GNU Affero General Public License for more details. |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
399
diff
changeset
|
20 from sat.core.log import getLogger |
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
399
diff
changeset
|
21 log = getLogger(__name__) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 from pyjamas.ui.VerticalPanel import VerticalPanel |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
23 from pyjamas.ui.Grid import Grid |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 from pyjamas.ui.HorizontalPanel import HorizontalPanel |
43
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
25 from pyjamas.ui.PopupPanel import PopupPanel |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 from pyjamas.ui.DialogBox import DialogBox |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
27 from pyjamas.ui.ListBox import ListBox |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 from pyjamas.ui.Button import Button |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
29 from pyjamas.ui.TextBox import TextBox |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
30 from pyjamas.ui.Label import Label |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
31 from pyjamas.ui.HTML import HTML |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
32 from pyjamas.ui.RadioButton import RadioButton |
48
153de5d461a4
added Social Contract \o. (in French only so far)
Goffi <goffi@goffi.org>
parents:
43
diff
changeset
|
33 from pyjamas.ui import HasAlignment |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
34 from pyjamas.ui.KeyboardListener import KEY_ESCAPE, KEY_ENTER |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
35 from pyjamas.ui.MouseListener import MouseWheelHandler |
211
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
36 from pyjamas import Window |
323
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
288
diff
changeset
|
37 |
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
288
diff
changeset
|
38 from base_panels import ToggleStackPanel |
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
288
diff
changeset
|
39 |
276
aebb96bfa8d1
frontends tools: moved src/tools/frontends to frontends/src/tools
souliane <souliane@mailoo.org>
parents:
272
diff
changeset
|
40 from sat_frontends.tools.misc import DEFAULT_MUC |
211
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
41 |
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
42 # List here the patterns that are not allowed in contact group names |
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
43 FORBIDDEN_PATTERNS_IN_GROUP = () |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 |
240
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
45 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
46 class RoomChooser(Grid): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
47 """Select a room from the rooms you already joined, or create a new one""" |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
48 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
49 GENERATE_MUC = "<use random name>" |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
50 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
51 def __init__(self, host, default_room=DEFAULT_MUC): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
52 Grid.__init__(self, 2, 2, Width='100%') |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
53 self.host = host |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
54 |
288
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
55 self.new_radio = RadioButton("room", "Discussion room:") |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
56 self.new_radio.setChecked(True) |
288
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
57 self.box = TextBox(Width='95%') |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
58 self.box.setText(self.GENERATE_MUC if default_room == "" else default_room) |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
59 self.exist_radio = RadioButton("room", "Already joined:") |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
60 self.rooms_list = ListBox(Width='95%') |
288
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
61 |
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
62 self.add(self.new_radio, 0, 0) |
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
63 self.add(self.box, 0, 1) |
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
64 self.add(self.exist_radio, 1, 0) |
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
65 self.add(self.rooms_list, 1, 1) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
66 |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
67 self.box.addFocusListener(self) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
68 self.rooms_list.addFocusListener(self) |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
69 |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
70 self.exist_radio.setVisible(False) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
71 self.rooms_list.setVisible(False) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
72 self.setRooms() |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
73 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
74 def onFocus(self, sender): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
75 if sender == self.rooms_list: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
76 self.exist_radio.setChecked(True) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
77 elif sender == self.box: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
78 if self.box.getText() == self.GENERATE_MUC: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
79 self.box.setText("") |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
80 self.new_radio.setChecked(True) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
81 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
82 def onLostFocus(self, sender): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
83 if sender == self.box: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
84 if self.box.getText() == "": |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
85 self.box.setText(self.GENERATE_MUC) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
86 |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
87 def setRooms(self): |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
88 for room in self.host.room_list: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
89 self.rooms_list.addItem(room.bare) |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
90 if len(self.host.room_list) > 0: |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
91 self.exist_radio.setVisible(True) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
92 self.rooms_list.setVisible(True) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
93 self.exist_radio.setChecked(True) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
94 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
95 def getRoom(self): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
96 if self.exist_radio.getChecked(): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
97 values = self.rooms_list.getSelectedValues() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
98 return "" if values == [] else values[0] |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
99 value = self.box.getText() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
100 return "" if value == self.GENERATE_MUC else value |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
101 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
102 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
103 class ContactsChooser(VerticalPanel): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
104 """Select one or several connected contacts""" |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
105 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
106 def __init__(self, host, nb_contact=None, ok_button=None): |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
107 """ |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
108 @param host: SatWebFrontend instance |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
109 @param nb_contact: number of contacts that have to be selected, None for no limit |
240
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
110 If a tuple is given instead of an integer, nb_contact[0] is the minimal and |
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
111 nb_contact[1] is the maximal number of contacts to be chosen. |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
112 """ |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
113 self.host = host |
240
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
114 if isinstance(nb_contact, tuple): |
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
115 if len(nb_contact) == 0: |
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
116 nb_contact = None |
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
117 elif len(nb_contact) == 1: |
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
118 nb_contact = (nb_contact[0], nb_contact[0]) |
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
119 elif nb_contact is not None: |
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
120 nb_contact = (nb_contact, nb_contact) |
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
121 if nb_contact is None: |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
399
diff
changeset
|
122 log.warning("Need to select as many contacts as you want") |
240
a565ce2facc0
browser_side: modified class ContactChooser to allow setting a min and max number of contacts to be chosen
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
123 else: |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
399
diff
changeset
|
124 log.warning("Need to select between %d and %d contacts" % nb_contact) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
125 self.nb_contact = nb_contact |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
126 self.ok_button = ok_button |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
127 VerticalPanel.__init__(self, Width='100%') |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
128 self.contacts_list = ListBox() |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
129 self.contacts_list.setMultipleSelect(True) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
130 self.contacts_list.setWidth("95%") |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
131 self.contacts_list.addStyleName('contactsChooser') |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
132 self.contacts_list.addChangeListener(self.onChange) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
133 self.add(self.contacts_list) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
134 self.setContacts() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
135 self.onChange() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
136 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
137 def onChange(self, sender=None): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
138 if self.ok_button is None: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
139 return |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
140 if self.nb_contact: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
141 selected = len(self.contacts_list.getSelectedValues(True)) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
142 if selected >= self.nb_contact[0] and selected <= self.nb_contact[1]: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
143 self.ok_button.setEnabled(True) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
144 else: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
145 self.ok_button.setEnabled(False) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
146 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
147 def setContacts(self, selected=[]): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
148 """Fill the list with the connected contacts |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
149 @param select: list of the contacts to select by default |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
150 """ |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
151 self.contacts_list.clear() |
272
0cb9869b42b6
browser_side: bug fix for RoomAndContactsChooser (do not display the MUCs in the list)
souliane <souliane@mailoo.org>
parents:
271
diff
changeset
|
152 contacts = self.host.contact_panel.getConnected(filter_muc=True) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
153 self.contacts_list.setVisibleItemCount(10 if len(contacts) > 5 else 5) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
154 self.contacts_list.addItem("") |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
155 for contact in contacts: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
156 if contact not in [room.bare for room in self.host.room_list]: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
157 self.contacts_list.addItem(contact) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
158 self.contacts_list.setItemTextSelection(selected) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
159 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
160 def getContacts(self): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
161 return self.contacts_list.getSelectedValues(True) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
162 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
163 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
164 class RoomAndContactsChooser(DialogBox): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
165 """Select a room and some users to invite in""" |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
166 |
288
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
167 def __init__(self, host, callback, nb_contact=None, ok_button="OK", title="Discussion groups", |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
168 title_room="Join room", title_invite="Invite contacts", visible=(True, True)): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
169 DialogBox.__init__(self, centered=True) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
170 self.host = host |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
171 self.callback = callback |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
172 self.title_room = title_room |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
173 self.title_invite = title_invite |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
174 |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
175 button_panel = HorizontalPanel() |
238
dec76d4536ad
browser_side: set CSS margin: auto for all button panels
souliane <souliane@mailoo.org>
parents:
231
diff
changeset
|
176 button_panel.addStyleName("marginAuto") |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
177 ok_button = Button("OK", self.onOK) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
178 button_panel.add(ok_button) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
179 button_panel.add(Button("Cancel", self.onCancel)) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
180 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
181 self.room_panel = RoomChooser(host, "" if visible == (False, True) else DEFAULT_MUC) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
182 self.contact_panel = ContactsChooser(host, nb_contact, ok_button) |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
209
diff
changeset
|
183 |
323
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
288
diff
changeset
|
184 self.stack_panel = ToggleStackPanel(Width="100%") |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
185 self.stack_panel.add(self.room_panel, visible=visible[0]) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
186 self.stack_panel.add(self.contact_panel, visible=visible[1]) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
187 self.stack_panel.addStackChangeListener(self) |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
188 self.onStackChanged(self.stack_panel, 0, visible[0]) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
189 self.onStackChanged(self.stack_panel, 1, visible[1]) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
190 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
191 main_panel = VerticalPanel() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
192 main_panel.setStyleName("room-contact-chooser") |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
193 main_panel.add(self.stack_panel) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
194 main_panel.add(button_panel) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
195 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
196 self.setWidget(main_panel) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
197 self.setHTML(title) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
198 self.show() |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
199 |
271
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
200 # needed to update the contacts list when someone logged in/out |
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
201 self.host.room_contacts_chooser = self |
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
202 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
203 def getRoom(self, asSuffix=False): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
204 room = self.room_panel.getRoom() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
205 if asSuffix: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
206 return room if room == "" else ": %s" % room |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
207 else: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
208 return room |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
209 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
210 def getContacts(self, asSuffix=False): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
211 contacts = self.contact_panel.getContacts() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
212 if asSuffix: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
213 return "" if contacts == [] else ": %s" % ", ".join(contacts) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
214 else: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
215 return contacts |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
216 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
217 def onStackChanged(self, sender, index, visible=None): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
218 if visible is None: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
219 visible = sender.getWidget(index).getVisible() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
220 if index == 0: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
221 sender.setStackText(0, self.title_room + ("" if visible else self.getRoom(True))) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
222 elif index == 1: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
223 sender.setStackText(1, self.title_invite + ("" if visible else self.getContacts(True))) |
271
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
224 |
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
225 def resetContacts(self): |
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
226 """Called when someone log in/out to update the list""" |
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
227 self.contact_panel.setContacts(self.getContacts()) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
228 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
229 def onOK(self, sender): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
230 room_jid = self.getRoom() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
231 if room_jid != "" and "@" not in room_jid: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
232 Window.alert('You must enter a room jid in the form room@chat.%s' % self.host._defaultDomain) |
272
0cb9869b42b6
browser_side: bug fix for RoomAndContactsChooser (do not display the MUCs in the list)
souliane <souliane@mailoo.org>
parents:
271
diff
changeset
|
233 return |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
234 self.hide() |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
235 self.callback(room_jid, self.getContacts()) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
236 |
62 | 237 def onCancel(self, sender): |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
238 self.hide() |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
239 |
271
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
240 def hide(self): |
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
241 self.host.room_contacts_chooser = None |
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
242 DialogBox.hide(self, autoClosed=True) |
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
243 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
244 |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
245 class GenericConfirmDialog(DialogBox): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
246 |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
247 def __init__(self, widgets, callback, title='Confirmation', prompt=None, **kwargs): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
248 """ |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
249 Dialog to confirm an action |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
250 @param widgets: widgets to attach |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
251 @param callback: method to call when a button is clicked |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
252 @param title: title of the dialog |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
253 @param prompt: textbox from which to retrieve the string value to be passed to the callback when |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
254 OK button is pressed. If None, OK button will return "True". Cancel button always returns "False". |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
255 """ |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
256 self.callback = callback |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
257 DialogBox.__init__(self, centered=True, **kwargs) |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
258 |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
259 content = VerticalPanel() |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
260 content.setWidth('100%') |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
261 for wid in widgets: |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
262 content.add(wid) |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
263 if wid == prompt: |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
264 wid.setWidth('100%') |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
265 button_panel = HorizontalPanel() |
224
f3a5a094c8d6
browser_side: center the buttons of GenericConfirmDialog
souliane <souliane@mailoo.org>
parents:
221
diff
changeset
|
266 button_panel.addStyleName("marginAuto") |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
267 self.confirm_button = Button("OK", self.onConfirm) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
268 button_panel.add(self.confirm_button) |
357
2b5503392fbd
browser_side: small fixes for RichTextEditor
souliane <souliane@mailoo.org>
parents:
354
diff
changeset
|
269 self.cancel_button = Button("Cancel", self.onCancel) |
2b5503392fbd
browser_side: small fixes for RichTextEditor
souliane <souliane@mailoo.org>
parents:
354
diff
changeset
|
270 button_panel.add(self.cancel_button) |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
271 content.add(button_panel) |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
272 self.setHTML(title) |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
209
diff
changeset
|
273 self.setWidget(content) |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
274 self.prompt = prompt |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
209
diff
changeset
|
275 |
62 | 276 def onConfirm(self, sender): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
277 self.hide() |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
278 self.callback(self.prompt.getText() if self.prompt else True) |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
279 |
62 | 280 def onCancel(self, sender): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
281 self.hide() |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
282 self.callback(False) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
283 |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
284 def show(self): |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
285 DialogBox.show(self) |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
286 if self.prompt: |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
287 self.prompt.setFocus(True) |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
288 |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
209
diff
changeset
|
289 |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
290 class ConfirmDialog(GenericConfirmDialog): |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
291 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
292 def __init__(self, callback, text='Are you sure ?', title='Confirmation', **kwargs): |
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
293 GenericConfirmDialog.__init__(self, [HTML(text)], callback, title, **kwargs) |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
209
diff
changeset
|
294 |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
295 |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
296 class GenericDialog(DialogBox): |
48
153de5d461a4
added Social Contract \o. (in French only so far)
Goffi <goffi@goffi.org>
parents:
43
diff
changeset
|
297 """Dialog which just show a widget and a close button""" |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
298 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
299 def __init__(self, title, main_widget, callback=None, options=None, **kwargs): |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
300 """Simple notice dialog box |
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
301 @param title: HTML put in the header |
145
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
302 @param main_widget: widget put in the body |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
303 @param callback: method to call on closing |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
304 @param options: one or more of the following options: |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
305 - NO_CLOSE: don't add a close button""" |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
306 DialogBox.__init__(self, centered=True, **kwargs) |
42 | 307 self.callback = callback |
145
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
308 if not options: |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
309 options = [] |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
310 _body = VerticalPanel() |
48
153de5d461a4
added Social Contract \o. (in French only so far)
Goffi <goffi@goffi.org>
parents:
43
diff
changeset
|
311 _body.setSize('100%','100%') |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
312 _body.setSpacing(4) |
145
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
313 _body.add(main_widget) |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
314 _body.setCellWidth(main_widget, '100%') |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
315 _body.setCellHeight(main_widget, '100%') |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
316 if not 'NO_CLOSE' in options: |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
317 _close_button = Button("Close", self.onClose) |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
318 _body.add(_close_button) |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
319 _body.setCellHorizontalAlignment(_close_button, HasAlignment.ALIGN_CENTER) |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
320 self.setHTML(title) |
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
321 self.setWidget(_body) |
145
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
322 self.panel.setSize('100%', '100%') #Need this hack to have correct size in Gecko & Webkit |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
323 |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
324 def close(self): |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
325 """Same effect as clicking the close button""" |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
326 self.onClose(None) |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
327 |
62 | 328 def onClose(self, sender): |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
329 self.hide() |
42 | 330 if self.callback: |
331 self.callback() | |
43
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
332 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
333 |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
334 class InfoDialog(GenericDialog): |
48
153de5d461a4
added Social Contract \o. (in French only so far)
Goffi <goffi@goffi.org>
parents:
43
diff
changeset
|
335 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
336 def __init__(self, title, body, callback=None, options=None, **kwargs): |
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
337 GenericDialog.__init__(self, title, HTML(body), callback, options, **kwargs) |
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
338 |
48
153de5d461a4
added Social Contract \o. (in French only so far)
Goffi <goffi@goffi.org>
parents:
43
diff
changeset
|
339 |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
340 class PromptDialog(GenericConfirmDialog): |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
341 |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
342 def __init__(self, callback, text='', title='User input', **kwargs): |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
343 prompt = TextBox() |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
344 prompt.setText(text) |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
345 GenericConfirmDialog.__init__(self, [prompt], callback, title, prompt, **kwargs) |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
346 |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
347 |
43
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
348 class PopupPanelWrapper(PopupPanel): |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
349 """This wrapper catch Escape event to avoid request cancellation by Firefox""" |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
350 |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
351 def onEventPreview(self, event): |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
352 if event.type in ["keydown", "keypress", "keyup"] and event.keyCode == KEY_ESCAPE: |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
353 #needed to prevent request cancellation in Firefox |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
354 event.preventDefault() |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
355 return PopupPanel.onEventPreview(self, event) |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
356 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
357 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
358 class ExtTextBox(TextBox): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
359 """Extended TextBox""" |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
360 |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
361 def __init__(self, *args, **kwargs): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
362 if 'enter_cb' in kwargs: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
363 self.enter_cb = kwargs['enter_cb'] |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
364 del kwargs['enter_cb'] |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
365 TextBox.__init__(self, *args, **kwargs) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
366 self.addKeyboardListener(self) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
367 |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
368 def onKeyUp(self, sender, keycode, modifiers): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
369 pass |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
370 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
371 def onKeyDown(self, sender, keycode, modifiers): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
372 pass |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
373 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
374 def onKeyPress(self, sender, keycode, modifiers): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
375 if self.enter_cb and keycode == KEY_ENTER: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
376 self.enter_cb(self) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
377 |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
378 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
379 class GroupSelector(DialogBox): |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
380 |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
209
diff
changeset
|
381 def __init__(self, top_widgets, initial_groups, selected_groups, |
227
67e24c342e7f
browser_side: bug fix for changeset 3092f6b1710c
souliane <souliane@mailoo.org>
parents:
224
diff
changeset
|
382 ok_title="OK", ok_cb=None, cancel_cb=None): |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
383 DialogBox.__init__(self, centered=True) |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
384 main_panel = VerticalPanel() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
385 self.ok_cb = ok_cb |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
386 self.cancel_cb = cancel_cb |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
387 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
388 for wid in top_widgets: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
389 main_panel.add(wid) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
390 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
391 main_panel.add(Label('Select in which groups your contact is:')) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
392 self.list_box = ListBox() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
393 self.list_box.setMultipleSelect(True) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
394 self.list_box.setVisibleItemCount(5) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
395 self.setAvailableGroups(initial_groups) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
396 self.setGroupsSelected(selected_groups) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
397 main_panel.add(self.list_box) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
398 |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
399 def cb(text): |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
400 self.list_box.addItem(text) |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
401 self.list_box.setItemSelected(self.list_box.getItemCount() - 1, "selected") |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
402 |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
403 main_panel.add(AddGroupPanel(initial_groups, cb)) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
404 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
405 button_panel = HorizontalPanel() |
238
dec76d4536ad
browser_side: set CSS margin: auto for all button panels
souliane <souliane@mailoo.org>
parents:
231
diff
changeset
|
406 button_panel.addStyleName("marginAuto") |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
209
diff
changeset
|
407 button_panel.add(Button(ok_title, self.onOK)) |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
408 button_panel.add(Button("Cancel", self.onCancel)) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
409 main_panel.add(button_panel) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
410 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
411 self.setWidget(main_panel) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
412 |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
52
diff
changeset
|
413 def getSelectedGroups(self): |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
52
diff
changeset
|
414 """Return a list of selected groups""" |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
52
diff
changeset
|
415 return self.list_box.getSelectedValues() |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
52
diff
changeset
|
416 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
417 def setAvailableGroups(self, groups): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
418 _groups = list(set(groups)) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
419 _groups.sort() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
420 self.list_box.clear() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
421 for group in _groups: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
422 self.list_box.addItem(group) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
423 |
57
e552a67b933d
Contact update + add dedication in About dialog
Goffi <goffi@goffi.org>
parents:
55
diff
changeset
|
424 def setGroupsSelected(self, selected_groups): |
209
4564c7bc06a7
browser side: fixed setGroupsSelected in GroupSelector
Goffi <goffi@goffi.org>
parents:
208
diff
changeset
|
425 self.list_box.setItemTextSelection(selected_groups) |
211
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
426 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
427 def onOK(self, sender): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
428 self.hide() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
429 if self.ok_cb: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
430 self.ok_cb(self) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
431 |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
432 def onCancel(self, sender): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
433 self.hide() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
434 if self.cancel_cb: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
435 self.cancel_cb(self) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
436 |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
437 |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
438 class AddGroupPanel(HorizontalPanel): |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
439 def __init__(self, groups, cb=None): |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
440 """ |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
441 @param groups: list of the already existing groups |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
442 """ |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
443 HorizontalPanel.__init__(self) |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
444 self.groups = groups |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
445 self.add(Label('Add group:')) |
262
30c01671e338
browser_side: small changes for contact list and "add group" panel:
souliane <souliane@mailoo.org>
parents:
255
diff
changeset
|
446 self.textbox = ExtTextBox(enter_cb=self.onGroupInput) |
30c01671e338
browser_side: small changes for contact list and "add group" panel:
souliane <souliane@mailoo.org>
parents:
255
diff
changeset
|
447 self.add(self.textbox) |
30c01671e338
browser_side: small changes for contact list and "add group" panel:
souliane <souliane@mailoo.org>
parents:
255
diff
changeset
|
448 self.add(Button("add", lambda sender: self.onGroupInput(self.textbox))) |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
449 self.cb = cb |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
450 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
451 def onGroupInput(self, sender): |
211
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
452 text = sender.getText() |
255
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
253
diff
changeset
|
453 if text == "": |
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
253
diff
changeset
|
454 return |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
455 for group in self.groups: |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
456 if text == group: |
221
f3898fbb00c3
browser_side: check for duplicate name before adding a new contact group
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
457 Window.alert("The group '%s' already exists." % text) |
f3898fbb00c3
browser_side: check for duplicate name before adding a new contact group
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
458 return |
211
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
459 for pattern in FORBIDDEN_PATTERNS_IN_GROUP: |
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
460 if pattern in text: |
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
461 Window.alert("The pattern '%s' is not allowed in group names." % pattern) |
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
462 return |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
463 sender.setText('') |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
464 self.groups.append(text) |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
465 if self.cb is not None: |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
466 self.cb(text) |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
467 |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
209
diff
changeset
|
468 |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
469 class WheelTextBox(TextBox, MouseWheelHandler): |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
470 |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
471 def __init__(self, *args, **kwargs): |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
472 TextBox.__init__(self, *args, **kwargs) |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
473 MouseWheelHandler.__init__(self) |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
474 |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
475 |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
476 class IntSetter(HorizontalPanel): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
477 """This class show a bar with button to set an int value""" |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
478 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
479 def __init__(self, label, value=0, value_max=None, visible_len=3): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
480 """initialize the intSetter |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
481 @param label: text shown in front of the setter |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
482 @param value: initial value |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
483 @param value_max: limit value, None or 0 for unlimited""" |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
484 HorizontalPanel.__init__(self) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
485 self.value = value |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
486 self.value_max = value_max |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
487 _label = Label(label) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
488 self.add(_label) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
489 self.setCellWidth(_label, "100%") |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
490 minus_button = Button("-", self.onMinus) |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
491 self.box = WheelTextBox() |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
492 self.box.setVisibleLength(visible_len) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
493 self.box.setText(str(value)) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
494 self.box.addInputListener(self) |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
495 self.box.addMouseWheelListener(self) |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
496 plus_button = Button("+", self.onPlus) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
497 self.add(minus_button) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
498 self.add(self.box) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
499 self.add(plus_button) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
500 self.valueChangedListener = [] |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
501 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
502 def addValueChangeListener(self, listener): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
503 self.valueChangedListener.append(listener) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
504 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
505 def removeValueChangeListener(self, listener): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
506 if listener in self.valueChangedListener: |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
507 self.valueChangedListener.remove(listener) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
508 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
509 def _callListeners(self): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
510 for listener in self.valueChangedListener: |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
511 listener(self.value) |
92
dd54bc13ac81
browser side: widgets' width and height can now be fixed + tarot game position fix
Goffi <goffi@goffi.org>
parents:
90
diff
changeset
|
512 |
dd54bc13ac81
browser side: widgets' width and height can now be fixed + tarot game position fix
Goffi <goffi@goffi.org>
parents:
90
diff
changeset
|
513 def setValue(self, value): |
dd54bc13ac81
browser side: widgets' width and height can now be fixed + tarot game position fix
Goffi <goffi@goffi.org>
parents:
90
diff
changeset
|
514 """Change the value and fire valueChange listeners""" |
dd54bc13ac81
browser side: widgets' width and height can now be fixed + tarot game position fix
Goffi <goffi@goffi.org>
parents:
90
diff
changeset
|
515 self.value = value |
94
8f9d30672225
browser side: widgets' setting reset button update fix
Goffi <goffi@goffi.org>
parents:
93
diff
changeset
|
516 self.box.setText(str(value)) |
92
dd54bc13ac81
browser side: widgets' width and height can now be fixed + tarot game position fix
Goffi <goffi@goffi.org>
parents:
90
diff
changeset
|
517 self._callListeners() |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
518 |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
519 def onMinus(self, sender, step=1): |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
520 self.value = max(0, self.value - step) |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
521 self.box.setText(str(self.value)) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
522 self._callListeners() |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
523 |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
524 def onPlus(self, sender, step=1): |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
525 self.value += step |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
526 if self.value_max: |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
527 self.value = min(self.value, self.value_max) |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
528 self.box.setText(str(self.value)) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
529 self._callListeners() |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
530 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
531 def onInput(self, sender): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
532 """Accept only valid integer && normalize print (no leading 0)""" |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
533 try: |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
534 self.value = int(self.box.getText()) if self.box.getText() else 0 |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
535 except ValueError: |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
536 pass |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
537 if self.value_max: |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
538 self.value = min(self.value, self.value_max) |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
539 self.box.setText(str(self.value)) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
540 self._callListeners() |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
541 |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
542 def onMouseWheel(self, sender, velocity): |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
543 if velocity > 0: |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
544 self.onMinus(sender, 10) |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
545 else: |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
546 self.onPlus(sender, 10) |