Mercurial > libervia-web
annotate src/browser/dialog.py @ 449:981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
- browser_side --> src/browser
- public --> src/browser_side/public
- libervia.py --> src/browser/libervia_main.py
- libervia_server --> src/server
- libervia_server/libervia.sh --> src/libervia.sh
- twisted --> src/twisted
- new module src/common
- split constants.py in 3 files:
- src/common/constants.py
- src/browser/constants.py
- src/server/constants.py
- output --> html (generated by pyjsbuild during the installation)
- new option/parameter "data_dir" (-d) to indicates the directory containing html and server_css
- setup.py installs libervia to the following paths:
- src/common --> <LIB>/libervia/common
- src/server --> <LIB>/libervia/server
- src/twisted --> <LIB>/twisted
- html --> <SHARE>/libervia/html
- server_side --> <SHARE>libervia/server_side
- LIBERVIA_INSTALL environment variable takes 2 new options with prompt confirmation:
- clean: remove previous installation directories
- purge: remove building and previous installation directories
You may need to update your sat.conf and/or launching script to update the following options/parameters:
- ssl_certificate
- data_dir
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 20 May 2014 06:41:16 +0200 |
parents | browser_side/dialog.py@d52f529a6d42 |
children | 1a0cec9b0f1e |
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__) |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
22 from sat_frontends.tools.misc import DEFAULT_MUC |
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
23 |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 from pyjamas.ui.VerticalPanel import VerticalPanel |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
25 from pyjamas.ui.Grid import Grid |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 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
|
27 from pyjamas.ui.PopupPanel import PopupPanel |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 from pyjamas.ui.DialogBox import DialogBox |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 from pyjamas.ui.ListBox import ListBox |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 from pyjamas.ui.Button import Button |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
31 from pyjamas.ui.TextBox import TextBox |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
32 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
|
33 from pyjamas.ui.HTML import HTML |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
34 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
|
35 from pyjamas.ui import HasAlignment |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
36 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
|
37 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
|
38 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
|
39 |
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
288
diff
changeset
|
40 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
|
41 |
211
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
42 |
49920d76aa6a
browser side: added a mechanism to define forbidden patterns during new contact group creation
souliane <souliane@mailoo.org>
parents:
210
diff
changeset
|
43 # 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
|
44 FORBIDDEN_PATTERNS_IN_GROUP = () |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
45 |
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
|
46 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
47 class RoomChooser(Grid): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
48 """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
|
49 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
50 GENERATE_MUC = "<use random name>" |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
51 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
52 def __init__(self, host, default_room=DEFAULT_MUC): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
53 Grid.__init__(self, 2, 2, Width='100%') |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
54 self.host = host |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
55 |
288
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
56 self.new_radio = RadioButton("room", "Discussion room:") |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
57 self.new_radio.setChecked(True) |
288
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
58 self.box = TextBox(Width='95%') |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
59 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
|
60 self.exist_radio = RadioButton("room", "Already joined:") |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
61 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
|
62 |
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
63 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
|
64 self.add(self.box, 0, 1) |
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
65 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
|
66 self.add(self.rooms_list, 1, 1) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
67 |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
68 self.box.addFocusListener(self) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
69 self.rooms_list.addFocusListener(self) |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
70 |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
71 self.exist_radio.setVisible(False) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
72 self.rooms_list.setVisible(False) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
73 self.setRooms() |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
74 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
75 def onFocus(self, sender): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
76 if sender == self.rooms_list: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
77 self.exist_radio.setChecked(True) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
78 elif sender == self.box: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
79 if self.box.getText() == self.GENERATE_MUC: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
80 self.box.setText("") |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
81 self.new_radio.setChecked(True) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
82 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
83 def onLostFocus(self, sender): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
84 if sender == self.box: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
85 if self.box.getText() == "": |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
86 self.box.setText(self.GENERATE_MUC) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
87 |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
88 def setRooms(self): |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
89 for room in self.host.room_list: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
90 self.rooms_list.addItem(room.bare) |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
91 if len(self.host.room_list) > 0: |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
92 self.exist_radio.setVisible(True) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
93 self.rooms_list.setVisible(True) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
94 self.exist_radio.setChecked(True) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
95 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
96 def getRoom(self): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
97 if self.exist_radio.getChecked(): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
98 values = self.rooms_list.getSelectedValues() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
99 return "" if values == [] else values[0] |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
100 value = self.box.getText() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
101 return "" if value == self.GENERATE_MUC else value |
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 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
104 class ContactsChooser(VerticalPanel): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
105 """Select one or several connected contacts""" |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
106 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
107 def __init__(self, host, nb_contact=None, ok_button=None): |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
108 """ |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
109 @param host: SatWebFrontend instance |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
110 @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
|
111 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
|
112 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
|
113 """ |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
114 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
|
115 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
|
116 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
|
117 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
|
118 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
|
119 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
|
120 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
|
121 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
|
122 if nb_contact is None: |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
399
diff
changeset
|
123 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
|
124 else: |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
399
diff
changeset
|
125 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
|
126 self.nb_contact = nb_contact |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
127 self.ok_button = ok_button |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
128 VerticalPanel.__init__(self, Width='100%') |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
129 self.contacts_list = ListBox() |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
130 self.contacts_list.setMultipleSelect(True) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
131 self.contacts_list.setWidth("95%") |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
132 self.contacts_list.addStyleName('contactsChooser') |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
133 self.contacts_list.addChangeListener(self.onChange) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
134 self.add(self.contacts_list) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
135 self.setContacts() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
136 self.onChange() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
137 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
138 def onChange(self, sender=None): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
139 if self.ok_button is None: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
140 return |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
141 if self.nb_contact: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
142 selected = len(self.contacts_list.getSelectedValues(True)) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
143 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
|
144 self.ok_button.setEnabled(True) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
145 else: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
146 self.ok_button.setEnabled(False) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
147 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
148 def setContacts(self, selected=[]): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
149 """Fill the list with the connected contacts |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
150 @param select: list of the contacts to select by default |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
151 """ |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
152 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
|
153 contacts = self.host.contact_panel.getConnected(filter_muc=True) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
154 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
|
155 self.contacts_list.addItem("") |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
156 for contact in contacts: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
157 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
|
158 self.contacts_list.addItem(contact) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
159 self.contacts_list.setItemTextSelection(selected) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
160 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
161 def getContacts(self): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
162 return self.contacts_list.getSelectedValues(True) |
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 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
165 class RoomAndContactsChooser(DialogBox): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
166 """Select a room and some users to invite in""" |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
167 |
288
7316a5696366
browser_side: renamed item and labels for discussion groups
souliane <souliane@mailoo.org>
parents:
276
diff
changeset
|
168 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
|
169 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
|
170 DialogBox.__init__(self, centered=True) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
171 self.host = host |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
172 self.callback = callback |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
173 self.title_room = title_room |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
174 self.title_invite = title_invite |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
175 |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
176 button_panel = HorizontalPanel() |
238
dec76d4536ad
browser_side: set CSS margin: auto for all button panels
souliane <souliane@mailoo.org>
parents:
231
diff
changeset
|
177 button_panel.addStyleName("marginAuto") |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
178 ok_button = Button("OK", self.onOK) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
179 button_panel.add(ok_button) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
180 button_panel.add(Button("Cancel", self.onCancel)) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
181 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
182 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
|
183 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
|
184 |
323
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
288
diff
changeset
|
185 self.stack_panel = ToggleStackPanel(Width="100%") |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
186 self.stack_panel.add(self.room_panel, visible=visible[0]) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
187 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
|
188 self.stack_panel.addStackChangeListener(self) |
399
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
189 self.onStackChanged(self.stack_panel, 0, visible[0]) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
190 self.onStackChanged(self.stack_panel, 1, visible[1]) |
6e38d317bc16
browser_side: RoomChooser small improvements:
souliane <souliane@mailoo.org>
parents:
357
diff
changeset
|
191 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
192 main_panel = VerticalPanel() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
193 main_panel.setStyleName("room-contact-chooser") |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
194 main_panel.add(self.stack_panel) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
195 main_panel.add(button_panel) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
196 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
197 self.setWidget(main_panel) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
198 self.setHTML(title) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
199 self.show() |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
200 |
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
|
201 # 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
|
202 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
|
203 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
204 def getRoom(self, asSuffix=False): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
205 room = self.room_panel.getRoom() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
206 if asSuffix: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
207 return room if room == "" else ": %s" % room |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
208 else: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
209 return room |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
210 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
211 def getContacts(self, asSuffix=False): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
212 contacts = self.contact_panel.getContacts() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
213 if asSuffix: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
214 return "" if contacts == [] else ": %s" % ", ".join(contacts) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
215 else: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
216 return contacts |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
217 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
218 def onStackChanged(self, sender, index, visible=None): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
219 if visible is None: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
220 visible = sender.getWidget(index).getVisible() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
221 if index == 0: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
222 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
|
223 elif index == 1: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
224 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
|
225 |
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 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
|
227 """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
|
228 self.contact_panel.setContacts(self.getContacts()) |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
229 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
230 def onOK(self, sender): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
231 room_jid = self.getRoom() |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
232 if room_jid != "" and "@" not in room_jid: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
233 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
|
234 return |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
235 self.hide() |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
262
diff
changeset
|
236 self.callback(room_jid, self.getContacts()) |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
237 |
62 | 238 def onCancel(self, sender): |
26
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
239 self.hide() |
824516b247e6
browser side: added ContactsChooser dialog
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
240 |
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
|
241 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
|
242 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
|
243 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
|
244 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
245 |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
246 class GenericConfirmDialog(DialogBox): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
247 |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
248 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
|
249 """ |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
250 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
|
251 @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
|
252 @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
|
253 @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
|
254 @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
|
255 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
|
256 """ |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
257 self.callback = callback |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
258 DialogBox.__init__(self, centered=True, **kwargs) |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
259 |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
260 content = VerticalPanel() |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
261 content.setWidth('100%') |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
262 for wid in widgets: |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
263 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
|
264 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
|
265 wid.setWidth('100%') |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
266 button_panel = HorizontalPanel() |
224
f3a5a094c8d6
browser_side: center the buttons of GenericConfirmDialog
souliane <souliane@mailoo.org>
parents:
221
diff
changeset
|
267 button_panel.addStyleName("marginAuto") |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
268 self.confirm_button = Button("OK", self.onConfirm) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
269 button_panel.add(self.confirm_button) |
357
2b5503392fbd
browser_side: small fixes for RichTextEditor
souliane <souliane@mailoo.org>
parents:
354
diff
changeset
|
270 self.cancel_button = Button("Cancel", self.onCancel) |
2b5503392fbd
browser_side: small fixes for RichTextEditor
souliane <souliane@mailoo.org>
parents:
354
diff
changeset
|
271 button_panel.add(self.cancel_button) |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
272 content.add(button_panel) |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
273 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
|
274 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
|
275 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
|
276 |
62 | 277 def onConfirm(self, sender): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
278 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
|
279 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
|
280 |
62 | 281 def onCancel(self, sender): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
282 self.hide() |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
283 self.callback(False) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
32
diff
changeset
|
284 |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
285 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
|
286 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
|
287 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
|
288 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
|
289 |
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
|
290 |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
291 class ConfirmDialog(GenericConfirmDialog): |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
292 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
293 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
|
294 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
|
295 |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
296 |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
297 class GenericDialog(DialogBox): |
48
153de5d461a4
added Social Contract \o. (in French only so far)
Goffi <goffi@goffi.org>
parents:
43
diff
changeset
|
298 """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
|
299 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
300 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
|
301 """Simple notice dialog box |
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
302 @param title: HTML put in the header |
145
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
303 @param main_widget: widget put in the body |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
304 @param callback: method to call on closing |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
305 @param options: one or more of the following options: |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
306 - 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
|
307 DialogBox.__init__(self, centered=True, **kwargs) |
42 | 308 self.callback = callback |
145
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
309 if not options: |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
310 options = [] |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
311 _body = VerticalPanel() |
48
153de5d461a4
added Social Contract \o. (in French only so far)
Goffi <goffi@goffi.org>
parents:
43
diff
changeset
|
312 _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
|
313 _body.setSpacing(4) |
145
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
314 _body.add(main_widget) |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
315 _body.setCellWidth(main_widget, '100%') |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
316 _body.setCellHeight(main_widget, '100%') |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
317 if not 'NO_CLOSE' in options: |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
318 _close_button = Button("Close", self.onClose) |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
319 _body.add(_close_button) |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
320 _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
|
321 self.setHTML(title) |
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
322 self.setWidget(_body) |
145
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
323 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
|
324 |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
325 def close(self): |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
326 """Same effect as clicking the close button""" |
c0035e5e2d08
browser side: misc dialog improvment:
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
327 self.onClose(None) |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
328 |
62 | 329 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
|
330 self.hide() |
42 | 331 if self.callback: |
332 self.callback() | |
43
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
333 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
334 |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
335 class InfoDialog(GenericDialog): |
48
153de5d461a4
added Social Contract \o. (in French only so far)
Goffi <goffi@goffi.org>
parents:
43
diff
changeset
|
336 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
337 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
|
338 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
|
339 |
48
153de5d461a4
added Social Contract \o. (in French only so far)
Goffi <goffi@goffi.org>
parents:
43
diff
changeset
|
340 |
354
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
341 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
|
342 |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
343 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
|
344 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
|
345 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
|
346 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
|
347 |
c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
348 |
43
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
349 class PopupPanelWrapper(PopupPanel): |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
350 """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
|
351 |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
352 def onEventPreview(self, event): |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
353 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
|
354 #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
|
355 event.preventDefault() |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
42
diff
changeset
|
356 return PopupPanel.onEventPreview(self, event) |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
357 |
231
fab7aa366576
browser_side: dialogs take **kwargs arguments + unibox helper method
souliane <souliane@mailoo.org>
parents:
227
diff
changeset
|
358 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
359 class ExtTextBox(TextBox): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
360 """Extended TextBox""" |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
361 |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
362 def __init__(self, *args, **kwargs): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
363 if 'enter_cb' in kwargs: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
364 self.enter_cb = kwargs['enter_cb'] |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
365 del kwargs['enter_cb'] |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
366 TextBox.__init__(self, *args, **kwargs) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
367 self.addKeyboardListener(self) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
368 |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
369 def onKeyUp(self, sender, keycode, modifiers): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
370 pass |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
371 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
372 def onKeyDown(self, sender, keycode, modifiers): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
373 pass |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
374 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
375 def onKeyPress(self, sender, keycode, modifiers): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
376 if self.enter_cb and keycode == KEY_ENTER: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
377 self.enter_cb(self) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
378 |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
379 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
380 class GroupSelector(DialogBox): |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
381 |
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
|
382 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
|
383 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
|
384 DialogBox.__init__(self, centered=True) |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
385 main_panel = VerticalPanel() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
386 self.ok_cb = ok_cb |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
387 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
|
388 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
389 for wid in top_widgets: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
390 main_panel.add(wid) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
212
diff
changeset
|
391 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
392 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
|
393 self.list_box = ListBox() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
394 self.list_box.setMultipleSelect(True) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
395 self.list_box.setVisibleItemCount(5) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
396 self.setAvailableGroups(initial_groups) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
397 self.setGroupsSelected(selected_groups) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
398 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
|
399 |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
400 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
|
401 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
|
402 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
|
403 |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
404 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
|
405 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
406 button_panel = HorizontalPanel() |
238
dec76d4536ad
browser_side: set CSS margin: auto for all button panels
souliane <souliane@mailoo.org>
parents:
231
diff
changeset
|
407 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
|
408 button_panel.add(Button(ok_title, self.onOK)) |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
409 button_panel.add(Button("Cancel", self.onCancel)) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
410 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
|
411 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
412 self.setWidget(main_panel) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
413 |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
52
diff
changeset
|
414 def getSelectedGroups(self): |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
52
diff
changeset
|
415 """Return a list of selected groups""" |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
52
diff
changeset
|
416 return self.list_box.getSelectedValues() |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
52
diff
changeset
|
417 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
418 def setAvailableGroups(self, groups): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
419 _groups = list(set(groups)) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
420 _groups.sort() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
421 self.list_box.clear() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
422 for group in _groups: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
423 self.list_box.addItem(group) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
424 |
57
e552a67b933d
Contact update + add dedication in About dialog
Goffi <goffi@goffi.org>
parents:
55
diff
changeset
|
425 def setGroupsSelected(self, selected_groups): |
209
4564c7bc06a7
browser side: fixed setGroupsSelected in GroupSelector
Goffi <goffi@goffi.org>
parents:
208
diff
changeset
|
426 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
|
427 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
428 def onOK(self, sender): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
429 self.hide() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
430 if self.ok_cb: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
431 self.ok_cb(self) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
432 |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
433 def onCancel(self, sender): |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
434 self.hide() |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
435 if self.cancel_cb: |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
436 self.cancel_cb(self) |
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
437 |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
438 |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
439 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
|
440 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
|
441 """ |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
442 @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
|
443 """ |
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
444 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
|
445 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
|
446 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
|
447 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
|
448 self.add(self.textbox) |
30c01671e338
browser_side: small changes for contact list and "add group" panel:
souliane <souliane@mailoo.org>
parents:
255
diff
changeset
|
449 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
|
450 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
|
451 |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
452 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
|
453 text = sender.getText() |
255
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
253
diff
changeset
|
454 if text == "": |
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
253
diff
changeset
|
455 return |
253
19153af4f327
browser_side: isolate the "add contact group" panel in a re-usable class:
souliane <souliane@mailoo.org>
parents:
240
diff
changeset
|
456 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
|
457 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
|
458 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
|
459 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
|
460 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
|
461 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
|
462 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
|
463 return |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
464 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
|
465 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
|
466 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
|
467 self.cb(text) |
52
4419ef07bb2b
browser side: adding contact, first draft
Goffi <goffi@goffi.org>
parents:
49
diff
changeset
|
468 |
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
|
469 |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
470 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
|
471 |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
472 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
|
473 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
|
474 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
|
475 |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
476 |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
477 class IntSetter(HorizontalPanel): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
478 """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
|
479 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
480 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
|
481 """initialize the intSetter |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
482 @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
|
483 @param value: initial value |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
484 @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
|
485 HorizontalPanel.__init__(self) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
486 self.value = value |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
487 self.value_max = value_max |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
488 _label = Label(label) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
489 self.add(_label) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
490 self.setCellWidth(_label, "100%") |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
491 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
|
492 self.box = WheelTextBox() |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
493 self.box.setVisibleLength(visible_len) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
494 self.box.setText(str(value)) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
495 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
|
496 self.box.addMouseWheelListener(self) |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
497 plus_button = Button("+", self.onPlus) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
498 self.add(minus_button) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
499 self.add(self.box) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
500 self.add(plus_button) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
501 self.valueChangedListener = [] |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
502 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
503 def addValueChangeListener(self, listener): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
504 self.valueChangedListener.append(listener) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
505 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
506 def removeValueChangeListener(self, listener): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
507 if listener in self.valueChangedListener: |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
508 self.valueChangedListener.remove(listener) |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
509 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
510 def _callListeners(self): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
511 for listener in self.valueChangedListener: |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
512 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
|
513 |
dd54bc13ac81
browser side: widgets' width and height can now be fixed + tarot game position fix
Goffi <goffi@goffi.org>
parents:
90
diff
changeset
|
514 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
|
515 """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
|
516 self.value = value |
94
8f9d30672225
browser side: widgets' setting reset button update fix
Goffi <goffi@goffi.org>
parents:
93
diff
changeset
|
517 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
|
518 self._callListeners() |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
519 |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
520 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
|
521 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
|
522 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
|
523 self._callListeners() |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
524 |
95
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
525 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
|
526 self.value += step |
90
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
527 if self.value_max: |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
528 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
|
529 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
|
530 self._callListeners() |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
531 |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
532 def onInput(self, sender): |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
533 """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
|
534 try: |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
535 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
|
536 except ValueError: |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
537 pass |
9729ed7171a6
browser side: Widgets' setting (col & row span can be changed
Goffi <goffi@goffi.org>
parents:
66
diff
changeset
|
538 if self.value_max: |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
539 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
|
540 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
|
541 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
|
542 |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
543 def onMouseWheel(self, sender, velocity): |
212
a05e16f4a343
browser side: bug fix (missing "self." before value_max)
souliane <souliane@mailoo.org>
parents:
211
diff
changeset
|
544 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
|
545 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
|
546 else: |
1c75fd97baf9
browser side: widgets' setting: mouse wheel can now be used to change values
Goffi <goffi@goffi.org>
parents:
94
diff
changeset
|
547 self.onPlus(sender, 10) |