Mercurial > libervia-desktop-kivy
annotate cagou/core/common.py @ 134:1cca97e27a69
core (common): new Symbol widget:
it uses font icon to display a symbol by name (should move to direct svg rendering once it's stable in Kivy).
bg_color property allows to change background color.
margin property allows to display a margin around the symbol
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 06 Apr 2018 16:13:08 +0200 |
parents | cd99f70ea592 |
children | 091e288838e1 |
rev | line source |
---|---|
26
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 #!/usr//bin/env python2 |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 # Cagou: desktop/mobile frontend for Salut à Toi XMPP client |
126 | 5 # Copyright (C) 2016-2018 Jérôme Poisson (goffi@goffi.org) |
26
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 # (at your option) any later version. |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 # GNU Affero General Public License for more details. |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
20 """common widgets, which can be reused everywhere""" |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
21 |
134 | 22 from sat.core.i18n import _ |
26
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 from kivy.uix.image import Image |
134 | 24 from kivy.uix.label import Label |
26
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 from kivy.uix.behaviors import ButtonBehavior |
107 | 26 from kivy.uix.boxlayout import BoxLayout |
134 | 27 from kivy import properties |
107 | 28 from cagou import G |
134 | 29 import json |
30 from sat.core import log as logging | |
31 | |
32 log = logging.getLogger(__name__) | |
33 | |
34 UNKNOWN_SYMBOL = u'Unknown symbol name' | |
26
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
35 |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
36 |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
37 class IconButton(ButtonBehavior, Image): |
3efca1b10b2f
common: first draft of a module were common widgets will be put
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
38 pass |
107 | 39 |
40 | |
41 class JidWidget(ButtonBehavior, BoxLayout): | |
42 | |
43 def __init__(self, jid, profile, **kwargs): | |
44 self.jid = jid | |
45 self.profile = profile | |
46 self.nick = kwargs.get('nick') | |
47 super(JidWidget, self).__init__(**kwargs) | |
48 | |
49 def getImage(self, wid): | |
50 host = G.host | |
51 if host.contact_lists[self.profile].isRoom(self.jid.bare): | |
52 wid.opacity = 0 | |
53 return "" | |
54 else: | |
55 return host.getAvatar(self.jid, profile=self.profile) or host.getDefaultAvatar(self.jid) | |
134 | 56 |
57 | |
58 class Symbol(Label): | |
59 symbol_map = None | |
60 symbol = properties.StringProperty() | |
61 margin = properties.NumericProperty(0) | |
62 | |
63 def __init__(self, **kwargs): | |
64 if self.symbol_map is None: | |
65 with open(G.host.app.expand('{media}/fonts/fontello/config.json')) as f: | |
66 fontello_conf = json.load(f) | |
67 Symbol.symbol_map = {g['css']:g['code'] for g in fontello_conf['glyphs']} | |
68 | |
69 super(Symbol, self).__init__(**kwargs) | |
70 | |
71 def on_symbol(self, instance, symbol): | |
72 try: | |
73 code = self.symbol_map[symbol] | |
74 except KeyError: | |
75 log.warning(_(u"Invalid symbol {symbol}").format(symbol=symbol)) | |
76 else: | |
77 self.text = unichr(code) |