Mercurial > libervia-desktop-kivy
annotate cagou/core/cagou_widget.py @ 488:beedff600d2b
blog: blog widget implementation:
this patch implements a basic blog widget. The search bare can be used to change node
(only node for now, will be improved to do search and all).
Publication on current node can be done by pressing the pencil icon. A checkbox can be
activated to use end-to-end encryption.
No pagination or comments are supported for now.
Due to lack of HTML rendering in Kivy, only simple formatting is supported.
If item is end-2-end encrypted, a green closed locker is shown next to publication date.
rel 380
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 15 Oct 2022 20:20:10 +0200 |
parents | 3c9ba4a694ef |
children | 203755bbe0fe |
rev | line source |
---|---|
379 | 1 #!/usr/bin/env python3 |
2 | |
10 | 3 |
4 # Cagou: desktop/mobile frontend for Salut à Toi XMPP client | |
461 | 5 # Copyright (C) 2016-2021 Jérôme Poisson (goffi@goffi.org) |
10 | 6 |
7 # This program is free software: you can redistribute it and/or modify | |
8 # it under the terms of the GNU Affero General Public License as published by | |
9 # the Free Software Foundation, either version 3 of the License, or | |
10 # (at your option) any later version. | |
11 | |
12 # This program is distributed in the hope that it will be useful, | |
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 # GNU Affero General Public License for more details. | |
16 | |
17 # You should have received a copy of the GNU Affero General Public License | |
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 | |
20 | |
405
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
21 from functools import total_ordering |
10 | 22 from sat.core import log as logging |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
23 from sat.core import exceptions |
25
d09bd16dbbe2
code (cagou widget), selector: icons handling + use of new muchoslava icon set
Goffi <goffi@goffi.org>
parents:
20
diff
changeset
|
24 from kivy.uix.behaviors import ButtonBehavior |
10 | 25 from kivy.uix.boxlayout import BoxLayout |
26 from kivy.uix.dropdown import DropDown | |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
27 from kivy.uix.screenmanager import Screen |
387
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
28 from kivy.uix.textinput import TextInput |
20
29b507826eed
header's input field is now accessible with self.header_input and call onHeaderInput() on text entered
Goffi <goffi@goffi.org>
parents:
16
diff
changeset
|
29 from kivy import properties |
16
ba14b596b90e
host can now be get as a global value:
Goffi <goffi@goffi.org>
parents:
15
diff
changeset
|
30 from cagou import G |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
31 from .common import ActionIcon |
376 | 32 from . import menu |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
33 |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
34 |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
35 log = logging.getLogger(__name__) |
10 | 36 |
37 | |
376 | 38 class HeaderChoice(ButtonBehavior, BoxLayout): |
39 pass | |
40 | |
41 | |
42 class HeaderChoiceWidget(HeaderChoice): | |
43 cagou_widget = properties.ObjectProperty() | |
44 plugin_info = properties.ObjectProperty() | |
164
60b2b2bad747
core (widget selector): adjusted selector size to content, and added some spacing
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
45 |
376 | 46 def __init__(self, **kwargs): |
47 super().__init__(**kwargs) | |
48 self.bind(on_release=lambda btn: self.cagou_widget.switchWidget( | |
49 self.plugin_info)) | |
50 | |
51 | |
52 class HeaderChoiceExtraMenu(HeaderChoice): | |
53 pass | |
25
d09bd16dbbe2
code (cagou widget), selector: icons handling + use of new muchoslava icon set
Goffi <goffi@goffi.org>
parents:
20
diff
changeset
|
54 |
d09bd16dbbe2
code (cagou widget), selector: icons handling + use of new muchoslava icon set
Goffi <goffi@goffi.org>
parents:
20
diff
changeset
|
55 |
179
7177fe2d9725
common: new ActionIcon widget which display symbol or image icon according to what is specified in plugin_info
Goffi <goffi@goffi.org>
parents:
164
diff
changeset
|
56 class HeaderWidgetCurrent(ButtonBehavior, ActionIcon): |
14 | 57 pass |
58 | |
59 | |
10 | 60 class HeaderWidgetSelector(DropDown): |
14 | 61 |
62 def __init__(self, cagou_widget): | |
63 super(HeaderWidgetSelector, self).__init__() | |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
64 plg_info_cls = cagou_widget.plugin_info_class or cagou_widget.__class__ |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
65 for plugin_info in G.host.getPluggedWidgets(except_cls=plg_info_cls): |
376 | 66 choice = HeaderChoiceWidget( |
67 cagou_widget=cagou_widget, | |
68 plugin_info=plugin_info, | |
69 ) | |
25
d09bd16dbbe2
code (cagou widget), selector: icons handling + use of new muchoslava icon set
Goffi <goffi@goffi.org>
parents:
20
diff
changeset
|
70 self.add_widget(choice) |
376 | 71 main_menu = HeaderChoiceExtraMenu(on_press=self.on_extra_menu) |
72 self.add_widget(main_menu) | |
10 | 73 |
164
60b2b2bad747
core (widget selector): adjusted selector size to content, and added some spacing
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
74 def add_widget(self, *args): |
60b2b2bad747
core (widget selector): adjusted selector size to content, and added some spacing
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
75 widget = args[0] |
60b2b2bad747
core (widget selector): adjusted selector size to content, and added some spacing
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
76 widget.bind(minimum_width=self.set_width) |
60b2b2bad747
core (widget selector): adjusted selector size to content, and added some spacing
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
77 return super(HeaderWidgetSelector, self).add_widget(*args) |
60b2b2bad747
core (widget selector): adjusted selector size to content, and added some spacing
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
78 |
60b2b2bad747
core (widget selector): adjusted selector size to content, and added some spacing
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
79 def set_width(self, choice, minimum_width): |
60b2b2bad747
core (widget selector): adjusted selector size to content, and added some spacing
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
80 self.width = max([c.minimum_width for c in self.container.children]) |
60b2b2bad747
core (widget selector): adjusted selector size to content, and added some spacing
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
81 |
376 | 82 def on_extra_menu(self, *args): |
83 self.dismiss() | |
84 menu.ExtraSideMenu().show() | |
85 | |
10 | 86 |
405
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
87 @total_ordering |
10 | 88 class CagouWidget(BoxLayout): |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
89 main_container = properties.ObjectProperty(None) |
20
29b507826eed
header's input field is now accessible with self.header_input and call onHeaderInput() on text entered
Goffi <goffi@goffi.org>
parents:
16
diff
changeset
|
90 header_input = properties.ObjectProperty(None) |
115
e0c41f209c28
CagouWidget: instances can now add their own extra widgets in header with headerInputAddExtra
Goffi <goffi@goffi.org>
parents:
108
diff
changeset
|
91 header_box = properties.ObjectProperty(None) |
387
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
92 use_header_input = False |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
93 # set to True if you want to be able to switch between visible widgets of this |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
94 # class using a carousel |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
95 collection_carousel = False |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
96 # set to True if you a global ScreenManager global to all widgets of this class. |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
97 # The screen manager is created in WHWrapper |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
98 global_screen_manager = False |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
99 # override this if a specific class (i.e. not self.__class__) must be used for |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
100 # plugin info. Useful when a CagouWidget is used with global_screen_manager. |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
101 plugin_info_class = None |
10 | 102 |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
103 def __init__(self, **kwargs): |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
104 plg_info_cls = self.plugin_info_class or self.__class__ |
25
d09bd16dbbe2
code (cagou widget), selector: icons handling + use of new muchoslava icon set
Goffi <goffi@goffi.org>
parents:
20
diff
changeset
|
105 for p in G.host.getPluggedWidgets(): |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
106 if p['main'] == plg_info_cls: |
25
d09bd16dbbe2
code (cagou widget), selector: icons handling + use of new muchoslava icon set
Goffi <goffi@goffi.org>
parents:
20
diff
changeset
|
107 self.plugin_info = p |
d09bd16dbbe2
code (cagou widget), selector: icons handling + use of new muchoslava icon set
Goffi <goffi@goffi.org>
parents:
20
diff
changeset
|
108 break |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
109 super().__init__(**kwargs) |
14 | 110 self.selector = HeaderWidgetSelector(self) |
387
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
111 if self.use_header_input: |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
112 self.header_input = TextInput( |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
113 background_normal=G.host.app.expand( |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
114 '{media}/misc/borders/border_hollow_light.png'), |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
115 multiline=False, |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
116 ) |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
117 self.header_input.bind( |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
118 on_text_validate=lambda *args: self.onHeaderInput(), |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
119 text=self.onHeaderInputComplete, |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
120 ) |
d61bbbac4160
cagou widget: don't add header_input systematically anymore:
Goffi <goffi@goffi.org>
parents:
379
diff
changeset
|
121 self.header_box.add_widget(self.header_input) |
14 | 122 |
405
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
123 def __lt__(self, other): |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
124 # XXX: sorting is notably used when collection_carousel is set |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
125 try: |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
126 target = str(self.target) |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
127 except AttributeError: |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
128 target = str(list(self.targets)[0]) |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
129 other_target = str(list(other.targets)[0]) |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
130 else: |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
131 other_target = str(other.target) |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
132 return target < other_target |
84ff5c917064
widgets: implemented ordering in ContactItem and CagouWidget:
Goffi <goffi@goffi.org>
parents:
387
diff
changeset
|
133 |
353
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
134 @property |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
135 def screen_manager(self): |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
136 if ((not self.global_screen_manager |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
137 and not (self.plugin_info_class is not None |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
138 and self.plugin_info_class.global_screen_manager))): |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
139 raise exceptions.InternalError( |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
140 "screen_manager property can't be used if global_screen_manager is not " |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
141 "set") |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
142 screen = self.getAncestor(Screen) |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
143 if screen is None: |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
144 raise exceptions.NotFound("Can't find parent Screen") |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
145 if screen.manager is None: |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
146 raise exceptions.NotFound("Can't find parent ScreenManager") |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
147 return screen.manager |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
148 |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
149 @property |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
150 def whwrapper(self): |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
151 """Retrieve parent widget handler""" |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
152 return G.host.getParentWHWrapper(self) |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
153 |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
154 def screenManagerInit(self, screen_manager): |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
155 """Override this method to do init when ScreenManager is instantiated |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
156 |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
157 This is only called once even if collection_carousel is used. |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
158 """ |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
159 if not self.global_screen_manager: |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
160 raise exceptions.InternalError("screenManagerInit should not be called") |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
161 |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
162 def getAncestor(self, cls): |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
163 """Helper method to use host.getAncestorWidget with self""" |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
164 return G.host.getAncestorWidget(self, cls) |
19422bbd9c8e
core (widgets handler): refactoring:
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
165 |
14 | 166 def switchWidget(self, plugin_info): |
167 self.selector.dismiss() | |
168 factory = plugin_info["factory"] | |
20
29b507826eed
header's input field is now accessible with self.header_input and call onHeaderInput() on text entered
Goffi <goffi@goffi.org>
parents:
16
diff
changeset
|
169 new_widget = factory(plugin_info, None, iter(G.host.profiles)) |
16
ba14b596b90e
host can now be get as a global value:
Goffi <goffi@goffi.org>
parents:
15
diff
changeset
|
170 G.host.switchWidget(self, new_widget) |
20
29b507826eed
header's input field is now accessible with self.header_input and call onHeaderInput() on text entered
Goffi <goffi@goffi.org>
parents:
16
diff
changeset
|
171 |
357
4d3a0c4f2430
core: better back key (ESC) management:
Goffi <goffi@goffi.org>
parents:
353
diff
changeset
|
172 def key_input(self, window, key, scancode, codepoint, modifier): |
4d3a0c4f2430
core: better back key (ESC) management:
Goffi <goffi@goffi.org>
parents:
353
diff
changeset
|
173 if key == 27: |
4d3a0c4f2430
core: better back key (ESC) management:
Goffi <goffi@goffi.org>
parents:
353
diff
changeset
|
174 # we go back to root screen |
4d3a0c4f2430
core: better back key (ESC) management:
Goffi <goffi@goffi.org>
parents:
353
diff
changeset
|
175 G.host.switchWidget(self) |
4d3a0c4f2430
core: better back key (ESC) management:
Goffi <goffi@goffi.org>
parents:
353
diff
changeset
|
176 return True |
4d3a0c4f2430
core: better back key (ESC) management:
Goffi <goffi@goffi.org>
parents:
353
diff
changeset
|
177 |
20
29b507826eed
header's input field is now accessible with self.header_input and call onHeaderInput() on text entered
Goffi <goffi@goffi.org>
parents:
16
diff
changeset
|
178 def onHeaderInput(self): |
312 | 179 log.info("header input text entered") |
51 | 180 |
108
953ddf817b8a
cagou widget: added onHeaderInputComplete method which is called when text is changed, and should be used for completion
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
181 def onHeaderInputComplete(self, wid, text): |
953ddf817b8a
cagou widget: added onHeaderInputComplete method which is called when text is changed, and should be used for completion
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
182 return |
953ddf817b8a
cagou widget: added onHeaderInputComplete method which is called when text is changed, and should be used for completion
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
183 |
51 | 184 def on_touch_down(self, touch): |
185 if self.collide_point(*touch.pos): | |
186 G.host.selected_widget = self | |
158
976f22cb3ecc
core (cagou widget): return parent value in on_touch_down
Goffi <goffi@goffi.org>
parents:
126
diff
changeset
|
187 return super(CagouWidget, self).on_touch_down(touch) |
115
e0c41f209c28
CagouWidget: instances can now add their own extra widgets in header with headerInputAddExtra
Goffi <goffi@goffi.org>
parents:
108
diff
changeset
|
188 |
e0c41f209c28
CagouWidget: instances can now add their own extra widgets in header with headerInputAddExtra
Goffi <goffi@goffi.org>
parents:
108
diff
changeset
|
189 def headerInputAddExtra(self, widget): |
e0c41f209c28
CagouWidget: instances can now add their own extra widgets in header with headerInputAddExtra
Goffi <goffi@goffi.org>
parents:
108
diff
changeset
|
190 """add a widget on the right of header input""" |
e0c41f209c28
CagouWidget: instances can now add their own extra widgets in header with headerInputAddExtra
Goffi <goffi@goffi.org>
parents:
108
diff
changeset
|
191 self.header_box.add_widget(widget) |
264
3e11b5d923e2
core: call new methods onVisible and onNotVisible when a widget is displayed or hidden + fixed a deletion bug on _removeVisibleWidget
Goffi <goffi@goffi.org>
parents:
222
diff
changeset
|
192 |
3e11b5d923e2
core: call new methods onVisible and onNotVisible when a widget is displayed or hidden + fixed a deletion bug on _removeVisibleWidget
Goffi <goffi@goffi.org>
parents:
222
diff
changeset
|
193 def onVisible(self): |
3e11b5d923e2
core: call new methods onVisible and onNotVisible when a widget is displayed or hidden + fixed a deletion bug on _removeVisibleWidget
Goffi <goffi@goffi.org>
parents:
222
diff
changeset
|
194 pass |
3e11b5d923e2
core: call new methods onVisible and onNotVisible when a widget is displayed or hidden + fixed a deletion bug on _removeVisibleWidget
Goffi <goffi@goffi.org>
parents:
222
diff
changeset
|
195 # log.debug(u"{self} is visible".format(self=self)) |
3e11b5d923e2
core: call new methods onVisible and onNotVisible when a widget is displayed or hidden + fixed a deletion bug on _removeVisibleWidget
Goffi <goffi@goffi.org>
parents:
222
diff
changeset
|
196 |
3e11b5d923e2
core: call new methods onVisible and onNotVisible when a widget is displayed or hidden + fixed a deletion bug on _removeVisibleWidget
Goffi <goffi@goffi.org>
parents:
222
diff
changeset
|
197 def onNotVisible(self): |
3e11b5d923e2
core: call new methods onVisible and onNotVisible when a widget is displayed or hidden + fixed a deletion bug on _removeVisibleWidget
Goffi <goffi@goffi.org>
parents:
222
diff
changeset
|
198 pass |
3e11b5d923e2
core: call new methods onVisible and onNotVisible when a widget is displayed or hidden + fixed a deletion bug on _removeVisibleWidget
Goffi <goffi@goffi.org>
parents:
222
diff
changeset
|
199 # log.debug(u"{self} is not visible anymore".format(self=self)) |