Mercurial > libervia-web
annotate browser/sat_browser/list_manager.py @ 1203:251eba911d4d
server (websockets): fixed websocket handling on HTTPS connections:
Original request used to retrieve a page was stored on dynamic pages, but after the end of
it, the channel was deleted, resulting in a isSecure() always returning False, and
troubles in chain leading to the the use of the wrong session object. This patch fixes
this by reworking the way original request is used, and creating a new wrapping class
allowing to keep an API similar to iweb.IRequest, with data coming from both the original
request and the websocket request.
fix 327
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 14 Jul 2019 14:45:51 +0200 |
parents | 28e3eb3bb217 |
children |
rev | line source |
---|---|
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.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 |
818 | 5 # Copyright (C) 2013-2016 Adrien Cossa <souliane@mailoo.org> |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.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. |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.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. |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.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/>. |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
19 |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
422
diff
changeset
|
20 from sat.core.log import getLogger |
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
422
diff
changeset
|
21 log = getLogger(__name__) |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
22 from sat.core.i18n import _ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
23 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
24 from pyjamas.ui.ClickListener import ClickHandler |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
25 from pyjamas.ui.FocusListener import FocusHandler |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
26 from pyjamas.ui.ChangeListener import ChangeHandler |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
27 from pyjamas.ui.DragHandler import DragHandler |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
28 from pyjamas.ui.KeyboardListener import KeyboardHandler, KEY_ENTER |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
29 from pyjamas.ui.DragWidget import DragWidget |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
30 from pyjamas.ui.ListBox import ListBox |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
31 from pyjamas.ui.Button import Button |
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
32 from pyjamas.ui.FlowPanel import FlowPanel |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
33 from pyjamas.ui.HorizontalPanel import HorizontalPanel |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
34 from pyjamas.ui.FlexTable import FlexTable |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
35 from pyjamas.ui.AutoComplete import AutoCompleteTextBox |
323
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
279
diff
changeset
|
36 |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
604
diff
changeset
|
37 import base_panel |
467 | 38 import base_widget |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
604
diff
changeset
|
39 import libervia_widget |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
40 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
41 from sat_frontends.quick_frontend import quick_list_manager |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
42 |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
43 |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
44 unicode = str # FIXME: pyjamas workaround |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
45 |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
46 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
47 class ListItem(HorizontalPanel): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
48 """This class implements a list item with auto-completion and a delete button.""" |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
49 |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
50 STYLE = {"listItem": "listItem", |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
51 "listItem-box": "listItem-box", |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
52 "listItem-box-invalid": "listItem-box-invalid", |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
53 "listItem-button": "listItem-button", |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
54 } |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
55 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
56 VALID = 1 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
57 INVALID = 2 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
58 DUPLICATE = 3 |
241
86055ccf69c3
browser_side: added class PopupMenuPanel to manage more complex context menu
souliane <souliane@mailoo.org>
parents:
232
diff
changeset
|
59 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
60 def __init__(self, listener=None, taglist=None, validate=None): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
61 """ |
254
28d3315a8003
browser_side: isolate the basic stuff of RecipientManager in a new class ListManager:
souliane <souliane@mailoo.org>
parents:
241
diff
changeset
|
62 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
63 @param listener (ListItemHandler): handler for the UI events |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
64 @param taglist (quick_list_manager.QuickTagList): list manager |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
65 @param validate (callable): method returning a bool to validate the entry |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
66 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
67 HorizontalPanel.__init__(self) |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
68 self.addStyleName(self.STYLE["listItem"]) |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
69 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
70 self.box = AutoCompleteTextBox(StyleName=self.STYLE["listItem-box"]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
71 self.remove_btn = Button('<span>x</span>', Visible=False) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
72 self.remove_btn.setStyleName(self.STYLE["listItem-button"]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
73 self.add(self.box) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
74 self.add(self.remove_btn) |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
75 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
76 if listener: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
77 self.box.addFocusListener(listener) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
78 self.box.addChangeListener(listener) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
79 self.box.addKeyboardListener(listener) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
80 self.box.choices.addClickListener(listener) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
81 self.remove_btn.addClickListener(listener) |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
82 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
83 self.taglist = taglist |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
84 self.validate = validate |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
85 self.last_checked_value = "" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
86 self.last_validity = self.VALID |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
87 |
254
28d3315a8003
browser_side: isolate the basic stuff of RecipientManager in a new class ListManager:
souliane <souliane@mailoo.org>
parents:
241
diff
changeset
|
88 @property |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
89 def text(self): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
90 return self.box.getText() |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
91 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
92 def setText(self, text): |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
93 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
94 Set the text and refresh the Widget. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
95 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
96 @param text (unicode): text to set |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
97 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
98 self.box.setText(text) |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
99 self.refresh() |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
100 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
101 def refresh(self): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
102 if self.last_checked_value == self.text: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
103 return |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
104 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
105 if self.taglist and self.last_checked_value: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
106 self.taglist.untag([self.last_checked_value]) |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
107 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
108 if self.validate: # if None, the state is always valid |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
109 self.last_validity = self.validate(self.text) |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
110 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
111 if self.last_validity == self.VALID: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
112 self.box.removeStyleName(self.STYLE["listItem-box-invalid"]) |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
113 self.box.setVisibleLength(max(len(self.text), 10)) |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
114 elif self.last_validity == self.INVALID: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
115 self.box.addStyleName(self.STYLE["listItem-box-invalid"]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
116 elif self.last_validity == self.DUPLICATE: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
117 self.remove_btn.click() # this may do more stuff then self.remove() |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
118 return |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
119 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
120 if self.taglist and self.text: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
121 self.taglist.tag([self.text]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
122 self.last_checked_value = self.text |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
123 self.box.setSelectionRange(len(self.text), 0) |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
124 self.remove_btn.setVisible(len(self.text) > 0) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
125 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
126 def setFocus(self, focused): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
127 self.box.setFocus(focused) |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
128 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
129 def remove(self): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
130 """Remove the list item from its parent.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
131 self.removeFromParent() |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
132 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
133 if self.taglist and self.text: # this must be done after the widget has been removed |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
134 self.taglist.untag([self.text]) |
254
28d3315a8003
browser_side: isolate the basic stuff of RecipientManager in a new class ListManager:
souliane <souliane@mailoo.org>
parents:
241
diff
changeset
|
135 |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
136 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
137 class DraggableListItem(ListItem, DragWidget): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
138 """This class is like ListItem, but in addition it can be dragged.""" |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
139 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
140 def __init__(self, listener=None, taglist=None, validate=None): |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
141 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
142 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
143 @param listener (ListItemHandler): handler for the UI events |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
144 @param taglist (quick_list_manager.QuickTagList): list manager |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
145 @param validate (callable): method returning a bool to validate the entry |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
146 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
147 ListItem.__init__(self, listener, taglist, validate) |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
148 DragWidget.__init__(self) |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
149 self.addDragListener(listener) |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
150 |
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
151 |
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
152 def onDragStart(self, event): |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
153 """The user starts dragging the item.""" |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
154 dt = event.dataTransfer |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
155 dt.setData('text/plain', "%s\n%s" % (self.text, "CONTACT_TEXTBOX")) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
156 dt.setDragImage(self.box.getElement(), 15, 15) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
157 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
158 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
159 class ListItemHandler(ClickHandler, FocusHandler, KeyboardHandler, ChangeHandler): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
160 """Implements basic handlers for the ListItem events.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
161 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
162 last_item = None # the last item is an empty text box for user input |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
163 |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
164 def __init__(self, taglist): |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
165 """ |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
166 |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
167 @param taglist (quick_list_manager.QuickTagList): list manager |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
168 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
169 ClickHandler.__init__(self) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
170 FocusHandler.__init__(self) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
171 ChangeHandler.__init__(self) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
172 KeyboardHandler.__init__(self) |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
173 self.taglist = taglist |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
174 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
175 def addItem(self, item): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
176 raise NotImplementedError |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
177 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
178 def removeItem(self, item): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
179 raise NotImplementedError |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
180 |
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
181 def onClick(self, sender): |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
182 """The remove button or a suggested completion item has been clicked.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
183 #log.debug("onClick sender type: %s" % type(sender)) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
184 if isinstance(sender, Button): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
185 item = sender.getParent() |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
186 self.removeItem(item) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
187 elif isinstance(sender, ListBox): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
188 # this is called after onChange when you click a suggested item, and now we get the final value |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
189 textbox = sender._clickListeners[0] |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
190 self.checkValue(textbox) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
191 else: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
192 raise AssertionError |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
193 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
194 def onFocus(self, sender): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
195 """The text box has the focus.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
196 #log.debug("onFocus sender type: %s" % type(sender)) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
197 assert isinstance(sender, AutoCompleteTextBox) |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
198 sender.setCompletionItems(self.taglist.untagged) |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
199 |
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
200 def onKeyUp(self, sender, keycode, modifiers): |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
201 """The text box is being modified - or ENTER key has been pressed.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
202 # this is called after onChange when you press ENTER, and now we get the final value |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
203 #log.debug("onKeyUp sender type: %s" % type(sender)) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
204 assert isinstance(sender, AutoCompleteTextBox) |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
205 if keycode == KEY_ENTER: |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
206 self.checkValue(sender) |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
207 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
208 def onChange(self, sender): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
209 """The text box has been changed by the user.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
210 # this is called before the completion when you press ENTER or click a suggest item |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
211 #log.debug("onChange sender type: %s" % type(sender)) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
212 assert isinstance(sender, AutoCompleteTextBox) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
213 self.checkValue(sender) |
263
d3c734669577
browser_side: improvements for lists and contact groups manager:
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
214 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
215 def checkValue(self, textbox): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
216 """Internal handler to call when a new value is submitted by the user.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
217 item = textbox.getParent() |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
218 if item.text == item.last_checked_value: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
219 # this method has already been called (by self.onChange) and there's nothing new |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
220 return |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
221 item.refresh() |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
222 if item == self.last_item and item.last_validity == ListItem.VALID and item.text: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
223 self.addItem() |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
224 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
225 class DraggableListItemHandler(ListItemHandler, DragHandler): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
226 """Implements basic handlers for the DraggableListItem events.""" |
263
d3c734669577
browser_side: improvements for lists and contact groups manager:
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
227 |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
228 def __init__(self, manager): |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
229 """ |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
230 |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
231 @param manager (ListManager): list manager |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
232 """ |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
233 ListItemHandler.__init__(self, manager) |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
234 DragHandler.__init__(self) |
263
d3c734669577
browser_side: improvements for lists and contact groups manager:
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
235 |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
236 @property |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
237 def manager(self): |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
238 return self.taglist |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
239 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
240 def onDragStart(self, event): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
241 """The user starts dragging the item.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
242 self.manager.drop_target = None |
263
d3c734669577
browser_side: improvements for lists and contact groups manager:
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
243 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
244 def onDragEnd(self, event): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
245 """The user dropped the list item.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
246 text, dummy = libervia_widget.eventGetData(event) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
247 target = self.manager.drop_target # self or another ListPanel |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
248 if text == "" or target is None: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
249 return |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
250 if target != self: # move the item from self to target |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
251 target.addItem(text) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
252 self.removeItem(self.getItem(text)) |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
253 |
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
254 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
255 class ListPanel(FlowPanel, DraggableListItemHandler, libervia_widget.DropCell): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
256 """Implements a list of items.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
257 # XXX: beware that pyjamas.ui.FlowPanel is not fully implemented: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
258 # - it can not be used with pyjamas.ui.Label |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
259 # - FlowPanel.insert doesn't work |
263
d3c734669577
browser_side: improvements for lists and contact groups manager:
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
260 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
261 STYLE = {"listPanel": "listPanel"} |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
262 ACCEPT_NEW_ENTRY = False |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
263 |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
264 def __init__(self, manager, items=None): |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
265 """Initialization with a button for the list name (key) and a DraggableListItem. |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
266 |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
267 @param manager (ListManager): list manager |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
268 @param items (list): items to be set |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
269 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
270 FlowPanel.__init__(self) |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
271 DraggableListItemHandler.__init__(self, manager) |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
272 libervia_widget.DropCell.__init__(self, None) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
273 self.addStyleName(self.STYLE["listPanel"]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
274 self.manager = manager |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
275 self.resetItems(items) |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
276 |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
277 # FIXME: dirty magic strings '@' and '@@' |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
278 self.drop_keys = {"GROUP": lambda host, item_s: self.addItem("@%s" % item_s), |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
279 "CONTACT": lambda host, item_s: self.addItem(item_s), |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
280 "CONTACT_TITLE": lambda host, item_s: self.addItem('@@'), |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
281 "CONTACT_TEXTBOX": lambda host, item_s: setattr(self.manager, "drop_target", self), |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
282 } |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
283 |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
284 def onDrop(self, event): |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
285 """Something has been dropped in this ListPanel""" |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
286 try: |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
604
diff
changeset
|
287 libervia_widget.DropCell.onDrop(self, event) |
604
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
288 except base_widget.NoLiberviaWidgetException: |
c22b47d63fe2
browser_side: fixed DragAutoCompleteTextBox for the list manager
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
289 pass |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
290 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
291 def getItem(self, text): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
292 """Get an item from its text. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
293 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
294 @param text(unicode): item text |
263
d3c734669577
browser_side: improvements for lists and contact groups manager:
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
295 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
296 for child in self.getChildren(): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
297 if child.text == text: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
298 return child |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
299 return None |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
300 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
301 def getItems(self): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
302 """Get the non empty items. |
263
d3c734669577
browser_side: improvements for lists and contact groups manager:
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
303 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
304 @return list(unicode) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
305 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
306 return [widget.text for widget in self.getChildren() if isinstance(widget, ListItem) and widget.text] |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
307 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
308 def validateItem(self, text): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
309 """Return validation code after the item has been changed. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
310 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
311 @param text (unicode): item text to check |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
312 @return: int value defined by one of these constants: |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
313 - VALID if the item is valid |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
314 - INVALID if the item is not valid but can be displayed |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
315 - DUPLICATE if the item is a duplicate |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
316 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
317 def count(list_, item): # XXX: list.count in not implemented by pyjamas |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
318 return len([elt for elt in list_ if elt == item]) |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
319 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
320 if count(self.getItems(), text) > 1: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
321 return ListItem.DUPLICATE # item already exists in this list so we suggest its deletion |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
322 if self.ACCEPT_NEW_ENTRY: |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
323 return ListItem.VALID |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
324 return ListItem.VALID if text in self.manager.items or not text else ListItem.INVALID |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
325 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
326 def addItem(self, text=""): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
327 """Add an item. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
328 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
329 @param text (unicode): text to be set. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
330 @return: True if the item has been really added or merged. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
331 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
332 if text in self.getItems(): # avoid duplicate in the same list |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
333 return |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
334 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
335 item = DraggableListItem(self, self.manager, self.validateItem) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
336 self.add(item) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
337 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
338 if self.last_item: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
339 if self.last_item.last_validity == ListItem.INVALID: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
340 # switch the two values so that the invalid one stays in last position |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
341 item.setText(self.last_item.text) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
342 self.last_item.setText(text) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
343 elif not self.last_item.text: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
344 # copy the new value to previous empty item |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
345 self.last_item.setText(text) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
346 else: # first item of the list, or previous last item has been deleted |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
347 item.setText(text) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
348 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
349 self.last_item = item |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
350 self.last_item.setFocus(True) |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
351 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
352 def removeItem(self, item): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
353 """Remove an item. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
354 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
355 @param item(DraggableListItem): item to remove |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
356 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
357 if item == self.last_item: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
358 self.addItem("") |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
359 item.remove() # this also updates the taglist |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
360 |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
361 def resetItems(self, items): |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
362 """Reset the items. |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
363 |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
364 @param items (list): items to be set |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
365 """ |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
366 for child in self.getChildren(): |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
367 child.remove() |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
368 |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
369 self.addItem() |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
370 if not items: |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
371 return |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
372 |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
373 items.sort() |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
374 for item in items: |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
375 self.addItem(unicode(item)) |
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
376 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
377 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
378 class ListManager(FlexTable, quick_list_manager.QuickTagList): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
379 """Implements a table to manage one or several lists of items.""" |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
380 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
381 STYLE = {"listManager-button": "group", |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
382 "listManager-button-cell": "listManager-button-cell", |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
383 } |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
384 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
385 def __init__(self, data=None, items=None): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
386 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
387 @param data (dict{unicode: list}): dict binding keys to tagged items. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
388 @param items (list): full list of items (tagged and untagged) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
389 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
390 FlexTable.__init__(self, Width="100%") |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
391 quick_list_manager.QuickTagList.__init__(self, [unicode(item) for item in items]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
392 self.lists = {} |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
393 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
394 if data: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
395 for key, items in data.iteritems(): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
396 self.addList(key, [unicode(item) for item in items]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
397 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
398 def addList(self, key, items=None): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
399 """Add a Button and ListPanel for a new list. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
400 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
401 @param key (unicode): list name |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
402 @param items (list): items to append to the new list |
263
d3c734669577
browser_side: improvements for lists and contact groups manager:
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
403 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
404 if key in self.lists: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
405 return |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
406 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
407 if items is None: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
408 items = [] |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
409 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
410 self.lists[key] = {"button": Button(key, Title=key, StyleName=self.STYLE["listManager-button"]), |
739
4545d48dee60
browser_side: improve ListPanel and TitlePanel
souliane <souliane@mailoo.org>
parents:
736
diff
changeset
|
411 "panel": ListPanel(self, items)} |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
412 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
413 y, x = len(self.lists), 0 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
414 self.insertRow(y) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
415 self.setWidget(y, x, self.lists[key]["button"]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
416 self.setWidget(y, x + 1, self.lists[key]["panel"]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
417 self.getCellFormatter().setStyleName(y, x, self.STYLE["listManager-button-cell"]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
418 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
419 try: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
420 self.popup_menu.registerClickSender(self.lists[key]["button"]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
421 except (AttributeError, TypeError): # self.registerPopupMenuPanel hasn't been called yet |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
422 pass |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
423 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
424 def removeList(self, key): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
425 """Remove a ListPanel from this manager. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
426 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
427 @param key (unicode): list name |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
428 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
429 items = self.lists[key]["panel"].getItems() |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
430 (y, x) = self.getIndex(self.lists[key]["button"]) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
431 self.removeRow(y) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
432 del self.lists[key] |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
433 self.untag(items) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
434 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
435 def untag(self, items): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
436 """Untag some items. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
437 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
438 Check first if the items are not used in any panel. |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
439 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
440 @param items (list): items to be removed |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
441 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
442 items_assigned = set() |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
443 for values in self.getItemsByKey().itervalues(): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
444 items_assigned.update(values) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
445 quick_list_manager.QuickTagList.untag(self, [item for item in items if item not in items_assigned]) |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
446 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
447 def getItemsByKey(self): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
448 """Get the items grouped by list name. |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
449 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
450 @return dict{unicode: list} |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
451 """ |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
452 return {key: self.lists[key]["panel"].getItems() for key in self.lists} |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
453 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
454 def getKeysByItem(self): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
455 """Get the keys groups by item. |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
456 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
457 @return dict{object: set(unicode)} |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
458 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
459 result = {} |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
460 for key in self.lists: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
461 for item in self.lists[key]["panel"].getItems(): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
462 result.setdefault(item, set()).add(key) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
463 return result |
232
0ed09cc0566f
browser_side: added UIs for rich text editor and addressing to multiple recipients
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
464 |
736
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
465 def registerPopupMenuPanel(self, entries, callback): |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
466 """Register a popup menu panel for the list names' buttons. |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
467 |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
468 @param entries (dict{unicode: dict{unicode: unicode}}): menu entries |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
469 @param callback (callable): common callback for all menu items, arguments are: |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
470 - button widget |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
471 - list name (item key) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
472 """ |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
473 self.popup_menu = base_panel.PopupMenuPanel(entries, callback=callback) |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
474 for key in self.lists: # register click sender for already existing lists |
fe3c2357a8c9
fixes/improve ListManager and contact group manager + better PEP-8 compliance
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
475 self.popup_menu.registerClickSender(self.lists[key]["button"]) |
740
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
476 |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
477 |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
478 class TagsPanel(base_panel.ToggleStackPanel): |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
479 """A toggle panel to set the tags""" |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
480 |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
481 TAGS = _("Tags") |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
482 |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
483 STYLE = {"main": "tagsPanel-main", |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
484 "tags": "tagsPanel-tags"} |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
485 |
741
c3cb68227cca
browser_side: read and write tags from microblog data:
souliane <souliane@mailoo.org>
parents:
740
diff
changeset
|
486 def __init__(self, suggested_tags, tags=None): |
740
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
487 """ |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
488 |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
489 @param suggested_tags (list[unicode]): list of all suggested tags |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
490 @param tags (list[unicode]): already assigned tags |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
491 """ |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
492 base_panel.ToggleStackPanel.__init__(self, Width="100%") |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
493 self.addStyleName(self.STYLE["main"]) |
741
c3cb68227cca
browser_side: read and write tags from microblog data:
souliane <souliane@mailoo.org>
parents:
740
diff
changeset
|
494 |
c3cb68227cca
browser_side: read and write tags from microblog data:
souliane <souliane@mailoo.org>
parents:
740
diff
changeset
|
495 if tags is None: |
c3cb68227cca
browser_side: read and write tags from microblog data:
souliane <souliane@mailoo.org>
parents:
740
diff
changeset
|
496 tags = [] |
c3cb68227cca
browser_side: read and write tags from microblog data:
souliane <souliane@mailoo.org>
parents:
740
diff
changeset
|
497 |
740
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
498 self.tags = ListPanel(quick_list_manager.QuickTagList(suggested_tags), tags) |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
499 self.tags.addStyleName(self.STYLE["tags"]) |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
500 self.tags.ACCEPT_NEW_ENTRY = True |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
501 self.add(self.tags, self.TAGS) |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
502 self.addStackChangeListener(self) |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
503 |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
504 def onStackChanged(self, sender, index, visible=None): |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
505 if visible is None: |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
506 visible = sender.getWidget(index).getVisible() |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
507 text = ", ".join(self.getTags()) |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
508 suffix = "" if (visible or not text) else (": %s" % text) |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
509 sender.setStackText(index, self.TAGS + suffix) |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
510 |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
511 def getTags(self): |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
512 return self.tags.getItems() |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
513 |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
514 def setTags(self, items): |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
515 self.tags.resetItems(items) |
b6510fd9ae15
browser_side: implements tags UI
souliane <souliane@mailoo.org>
parents:
739
diff
changeset
|
516 |