Mercurial > libervia-backend
annotate sat_frontends/tools/xmlui.py @ 3330:7b47f48d31f3
plugin XEP-0264: fix orientation of thumbnails:
Rotation of thumbnailis is now modified according to EXIF orientation data. Original image
is not modified as user may want to keep it, and orientation transformation can modify
encoding parameters.
Update `pillow` minimum version to the first one with `exif_transpose` implementation.
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 13 Aug 2020 23:46:18 +0200 |
parents | 559a625a236b |
children | 1f1741dc3cc4 |
rev | line source |
---|---|
3137 | 1 #!/usr/bin/env python3 |
2 | |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
4 # SàT frontend tools |
3136 | 5 # Copyright (C) 2009-2020 Jérôme Poisson (goffi@goffi.org) |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
10 # (at your option) any later version. |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
15 # GNU Affero General Public License for more details. |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
771 | 20 from sat.core.i18n import _ |
1087
b3b7a2863060
frontends (XMLUI): use of logging system instead of print
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
21 from sat.core.log import getLogger |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
22 |
1087
b3b7a2863060
frontends (XMLUI): use of logging system instead of print
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
23 log = getLogger(__name__) |
1327
89dc29afe01c
frontends: merge sat_frontends.constants to sat_frontends.quick_frontend.constants
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
24 from sat_frontends.quick_frontend.constants import Const as C |
2540
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
25 from sat.core import exceptions |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 |
762
aed7d99276b8
core (xml_tools), frontends: added a prefix to XMLUI form names in result data, to avoid name conflicts (e.g.: if a form has name "submit", and this name is also used internally by SàT)
Goffi <goffi@goffi.org>
parents:
760
diff
changeset
|
27 |
2669
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
28 _class_map = {} |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
29 CLASS_PANEL = "panel" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
30 CLASS_DIALOG = "dialog" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
31 CURRENT_LABEL = "current_label" |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
32 HIDDEN = "hidden" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
33 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
34 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
35 class InvalidXMLUI(Exception): |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
36 pass |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
37 |
762
aed7d99276b8
core (xml_tools), frontends: added a prefix to XMLUI form names in result data, to avoid name conflicts (e.g.: if a form has name "submit", and this name is also used internally by SàT)
Goffi <goffi@goffi.org>
parents:
760
diff
changeset
|
38 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
39 class ClassNotRegistedError(Exception): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
40 pass |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
41 |
1740
681fe91abcc0
memory (params): parameter jids_list values are specified with <jid>...</jid>
souliane <souliane@mailoo.org>
parents:
1610
diff
changeset
|
42 |
681fe91abcc0
memory (params): parameter jids_list values are specified with <jid>...</jid>
souliane <souliane@mailoo.org>
parents:
1610
diff
changeset
|
43 # FIXME: this method is duplicated in frontends.tools.xmlui.getText |
632
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
44 def getText(node): |
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
45 """Get child text nodes |
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
46 @param node: dom Node |
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
47 @return: joined unicode text of all nodes |
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
48 |
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
49 """ |
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
50 data = [] |
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
51 for child in node.childNodes: |
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
52 if child.nodeType == child.TEXT_NODE: |
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
53 data.append(child.wholeText) |
3028 | 54 return "".join(data) |
632
06f44f797a1b
primitivus: really basic implementation of advanced list.
Goffi <goffi@goffi.org>
parents:
610
diff
changeset
|
55 |
641
49587e170f53
core: added the security_limit to setParam
souliane <souliane@mailoo.org>
parents:
632
diff
changeset
|
56 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
57 class Widget(object): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
58 """base Widget""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
59 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
60 pass |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
61 |
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
62 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
63 class EmptyWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
64 """Just a placeholder widget""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
65 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
66 pass |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
67 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
68 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
69 class TextWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
70 """Non interactive text""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
71 |
152
b1f1955d96b3
Primitivus: XMLUI: tabs layout management + CustomButton now used instead of urwid's buttons
Goffi <goffi@goffi.org>
parents:
149
diff
changeset
|
72 pass |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
73 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
74 |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
75 class LabelWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
76 """Non interactive text""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
77 |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
78 pass |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
79 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
80 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
81 class JidWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
82 """Jabber ID""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
83 |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
84 pass |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
85 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
86 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
87 class DividerWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
88 """Separator""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
89 |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
90 pass |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
91 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
92 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
93 class StringWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
94 """Input widget wich require a string |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
95 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
96 often called Edit in toolkits |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
97 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
98 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
99 pass |
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
100 |
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
101 |
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
102 class JidInputWidget(Widget): |
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
103 """Input widget wich require a string |
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
104 |
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
105 often called Edit in toolkits |
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
106 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
107 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
108 pass |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
109 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
110 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
111 class PasswordWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
112 """Input widget with require a masked string""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
113 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
114 pass |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
115 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
116 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
117 class TextBoxWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
118 """Input widget with require a long, possibly multilines string |
2783
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
119 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
120 often called TextArea in toolkits |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
121 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
122 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
123 pass |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
124 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
125 |
2783
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
126 class XHTMLBoxWidget(Widget): |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
127 """Input widget specialised in XHTML editing, |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
128 |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
129 a WYSIWYG or specialised editor is expected |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
130 """ |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
131 |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
132 pass |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
133 |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
134 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
135 class BoolWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
136 """Input widget with require a boolean value |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
137 often called CheckBox in toolkits |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
138 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
139 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
140 pass |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
141 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
142 |
1220
f91e7028e2c3
memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents:
1109
diff
changeset
|
143 class IntWidget(Widget): |
f91e7028e2c3
memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents:
1109
diff
changeset
|
144 """Input widget with require an integer""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
145 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
146 pass |
1220
f91e7028e2c3
memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents:
1109
diff
changeset
|
147 |
f91e7028e2c3
memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents:
1109
diff
changeset
|
148 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
149 class ButtonWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
150 """A clickable widget""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
151 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
152 pass |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
153 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
154 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
155 class ListWidget(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
156 """A widget able to show/choose one or several strings in a list""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
157 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
158 pass |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
159 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
160 |
1478
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
161 class JidsListWidget(Widget): |
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
162 """A widget able to show/choose one or several strings in a list""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
163 |
1478
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
164 pass |
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
165 |
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
166 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
167 class Container(Widget): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
168 """Widget which can contain other ones with a specific layout""" |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
169 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
170 @classmethod |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
171 def _xmluiAdapt(cls, instance): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
172 """Make cls as instance.__class__ |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
173 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
174 cls must inherit from original instance class |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
175 Usefull when you get a class from UI toolkit |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
176 """ |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
177 assert instance.__class__ in cls.__bases__ |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
178 instance.__class__ = type(cls.__name__, cls.__bases__, dict(cls.__dict__)) |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
179 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
180 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
181 class PairsContainer(Container): |
2361
5defafc8ede6
core, frontends (xmlui): new LabelContainer:
Goffi <goffi@goffi.org>
parents:
2093
diff
changeset
|
182 """Widgets are disposed in rows of two (usually label/input)""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
183 |
2361
5defafc8ede6
core, frontends (xmlui): new LabelContainer:
Goffi <goffi@goffi.org>
parents:
2093
diff
changeset
|
184 pass |
5defafc8ede6
core, frontends (xmlui): new LabelContainer:
Goffi <goffi@goffi.org>
parents:
2093
diff
changeset
|
185 |
5defafc8ede6
core, frontends (xmlui): new LabelContainer:
Goffi <goffi@goffi.org>
parents:
2093
diff
changeset
|
186 |
5defafc8ede6
core, frontends (xmlui): new LabelContainer:
Goffi <goffi@goffi.org>
parents:
2093
diff
changeset
|
187 class LabelContainer(Container): |
5defafc8ede6
core, frontends (xmlui): new LabelContainer:
Goffi <goffi@goffi.org>
parents:
2093
diff
changeset
|
188 """Widgets are associated with label or empty widget""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
189 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
190 pass |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
191 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
192 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
193 class TabsContainer(Container): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
194 """A container which several other containers in tabs |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
195 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
196 Often called Notebook in toolkits |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
197 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
198 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
199 pass |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
200 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
201 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
202 class VerticalContainer(Container): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
203 """Widgets are disposed vertically""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
204 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
205 pass |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
206 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
207 |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
208 class AdvancedListContainer(Container): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
209 """Widgets are disposed in rows with advaned features""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
210 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
211 pass |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
212 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
213 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
214 class Dialog(object): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
215 """base dialog""" |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
216 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
217 def __init__(self, _xmlui_parent): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
218 self._xmlui_parent = _xmlui_parent |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
219 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
220 def _xmluiValidated(self, data=None): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
221 if data is None: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
222 data = {} |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
223 self._xmluiSetData(C.XMLUI_STATUS_VALIDATED, data) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
224 self._xmluiSubmit(data) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
225 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
226 def _xmluiCancelled(self): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
227 data = {C.XMLUI_DATA_CANCELLED: C.BOOL_TRUE} |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
228 self._xmluiSetData(C.XMLUI_STATUS_CANCELLED, data) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
229 self._xmluiSubmit(data) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
230 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
231 def _xmluiSubmit(self, data): |
1109
0a448c947038
frontends: dialog don't crash anymore is no submit_id is given (submit does nothing in this case)
Goffi <goffi@goffi.org>
parents:
1106
diff
changeset
|
232 if self._xmlui_parent.submit_id is None: |
0a448c947038
frontends: dialog don't crash anymore is no submit_id is given (submit does nothing in this case)
Goffi <goffi@goffi.org>
parents:
1106
diff
changeset
|
233 log.debug(_("Nothing to submit")) |
0a448c947038
frontends: dialog don't crash anymore is no submit_id is given (submit does nothing in this case)
Goffi <goffi@goffi.org>
parents:
1106
diff
changeset
|
234 else: |
0a448c947038
frontends: dialog don't crash anymore is no submit_id is given (submit does nothing in this case)
Goffi <goffi@goffi.org>
parents:
1106
diff
changeset
|
235 self._xmlui_parent.submit(data) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
236 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
237 def _xmluiSetData(self, status, data): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
238 pass |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
239 |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
240 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
241 class MessageDialog(Dialog): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
242 """Dialog with a OK/Cancel type configuration""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
243 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
244 pass |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
245 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
246 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
247 class NoteDialog(Dialog): |
2036
db3bbbd745e4
frontends (xmlui): added a user_action attribute:
Goffi <goffi@goffi.org>
parents:
1985
diff
changeset
|
248 """Short message which doesn't need user confirmation to disappear""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
249 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
250 pass |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
251 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
252 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
253 class ConfirmDialog(Dialog): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
254 """Dialog with a OK/Cancel type configuration""" |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
255 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
256 def _xmluiSetData(self, status, data): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
257 if status == C.XMLUI_STATUS_VALIDATED: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
258 data[C.XMLUI_DATA_ANSWER] = C.BOOL_TRUE |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
259 elif status == C.XMLUI_STATUS_CANCELLED: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
260 data[C.XMLUI_DATA_ANSWER] = C.BOOL_FALSE |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
261 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
262 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
263 class FileDialog(Dialog): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
264 """Dialog with a OK/Cancel type configuration""" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
265 |
1473
675e0e9f1653
core , privmitivus (xmlui): add jidInput handling, with a simple String for now
Goffi <goffi@goffi.org>
parents:
1396
diff
changeset
|
266 pass |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
267 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
268 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
269 class XMLUIBase(object): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
270 """Base class to construct SàT XML User Interface |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
271 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
272 This class must not be instancied directly |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
273 """ |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
274 |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
275 def __init__(self, host, parsed_dom, title=None, flags=None, callback=None, |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
276 profile=C.PROF_KEY_NONE): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
277 """Initialise the XMLUI instance |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
278 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
279 @param host: %(doc_host)s |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
280 @param parsed_dom: main parsed dom |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
281 @param title: force the title, or use XMLUI one if None |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
282 @param flags: list of string which can be: |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
283 - NO_CANCEL: the UI can't be cancelled |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
284 - FROM_BACKEND: the UI come from backend (i.e. it's not the direct result of |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
285 user operation) |
1489
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
286 @param callback(callable, None): if not None, will be used with launchAction: |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
287 - if None is used, default behaviour will be used (closing the dialog and |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
288 calling host.actionManager) |
1489
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
289 - if a callback is provided, it will be used instead, so you'll have to manage |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
290 dialog closing or new xmlui to display, or other action (you can call |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
291 host.actionManager) |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
292 The callback will have data, callback_id and profile as arguments |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
293 """ |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
294 self.host = host |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
295 top = parsed_dom.documentElement |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
296 self.session_id = top.getAttribute("session_id") or None |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
297 self.submit_id = top.getAttribute("submit") or None |
3028 | 298 self.xmlui_title = title or top.getAttribute("title") or "" |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
299 self.hidden = {} |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
300 if flags is None: |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
301 flags = [] |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
302 self.flags = flags |
1489
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
303 self.callback = callback or self._defaultCb |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1220
diff
changeset
|
304 self.profile = profile |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
305 |
2036
db3bbbd745e4
frontends (xmlui): added a user_action attribute:
Goffi <goffi@goffi.org>
parents:
1985
diff
changeset
|
306 @property |
db3bbbd745e4
frontends (xmlui): added a user_action attribute:
Goffi <goffi@goffi.org>
parents:
1985
diff
changeset
|
307 def user_action(self): |
db3bbbd745e4
frontends (xmlui): added a user_action attribute:
Goffi <goffi@goffi.org>
parents:
1985
diff
changeset
|
308 return "FROM_BACKEND" not in self.flags |
db3bbbd745e4
frontends (xmlui): added a user_action attribute:
Goffi <goffi@goffi.org>
parents:
1985
diff
changeset
|
309 |
1489
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
310 def _defaultCb(self, data, cb_id, profile): |
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
311 # TODO: when XMLUI updates will be managed, the _xmluiClose |
2597
9446f1ea9eac
core: discoFindByFeatures now return only available resources
Goffi <goffi@goffi.org>
parents:
2575
diff
changeset
|
312 # must be called only if there is no update |
1489
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
313 self._xmluiClose() |
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
314 self.host.actionManager(data, profile=profile) |
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
315 |
1085
7a39ae3950f7
frontends (XMLUI): implementation of read_only attributes for widgets String, TextBox, Password and Bool
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
316 def _isAttrSet(self, name, node): |
2540
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
317 """Return widget boolean attribute status |
1085
7a39ae3950f7
frontends (XMLUI): implementation of read_only attributes for widgets String, TextBox, Password and Bool
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
318 |
7a39ae3950f7
frontends (XMLUI): implementation of read_only attributes for widgets String, TextBox, Password and Bool
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
319 @param name: name of the attribute (e.g. "read_only") |
7a39ae3950f7
frontends (XMLUI): implementation of read_only attributes for widgets String, TextBox, Password and Bool
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
320 @param node: Node instance |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
321 @return (bool): True if widget's attribute is set (C.BOOL_TRUE) |
1085
7a39ae3950f7
frontends (XMLUI): implementation of read_only attributes for widgets String, TextBox, Password and Bool
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
322 """ |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
323 read_only = node.getAttribute(name) or C.BOOL_FALSE |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
324 return read_only.lower().strip() == C.BOOL_TRUE |
1085
7a39ae3950f7
frontends (XMLUI): implementation of read_only attributes for widgets String, TextBox, Password and Bool
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
325 |
1086
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
326 def _getChildNode(self, node, name): |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
327 """Return the first child node with the given name |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
328 |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
329 @param node: Node instance |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
330 @param name: name of the wanted node |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
331 |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
332 @return: The found element or None |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
333 """ |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
334 for child in node.childNodes: |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
335 if child.nodeName == name: |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
336 return child |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
337 return None |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
338 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
339 def submit(self, data): |
1608
05274b27e90e
frontends (xmlui): fixed widget closing on submit
Goffi <goffi@goffi.org>
parents:
1579
diff
changeset
|
340 self._xmluiClose() |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
341 if self.submit_id is None: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
342 raise ValueError("Can't submit is self.submit_id is not set") |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
343 if "session_id" in data: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
344 raise ValueError( |
3028 | 345 "session_id must no be used in data, it is automaticaly filled with " |
346 "self.session_id if present" | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
347 ) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
348 if self.session_id is not None: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
349 data["session_id"] = self.session_id |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
350 self._xmluiLaunchAction(self.submit_id, data) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
351 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
352 def _xmluiLaunchAction(self, action_id, data): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
353 self.host.launchAction( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
354 action_id, data, callback=self.callback, profile=self.profile |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
355 ) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
356 |
1489
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
357 def _xmluiClose(self): |
1579
d5e332055d9f
quick_frontend, primitivus (xmlui): removed _xmluiClose from workflow were submit is triggered, as submit launch the callback which close the dialog itself + fixed dialogs _xmluiClose
Goffi <goffi@goffi.org>
parents:
1501
diff
changeset
|
358 """Close the window/popup/... where the constructor XMLUI is |
1489
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
359 |
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
360 this method must be overrided |
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
361 """ |
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
362 raise NotImplementedError |
039d96e131be
frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
Goffi <goffi@goffi.org>
parents:
1486
diff
changeset
|
363 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
364 |
2376
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
365 class ValueGetter(object): |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
366 """dict like object which return values of widgets""" |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
367 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
368 def __init__(self, widgets, attr="value"): |
2376
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
369 self.attr = attr |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
370 self.widgets = widgets |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
371 |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
372 def __getitem__(self, name): |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
373 return getattr(self.widgets[name], self.attr) |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
374 |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
375 def __getattr__(self, name): |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
376 return self.__getitem__(name) |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
377 |
2387
a59f2abd970e
frontends (xmlui): added ValueGetter.keys
Goffi <goffi@goffi.org>
parents:
2377
diff
changeset
|
378 def keys(self): |
3028 | 379 return list(self.widgets.keys()) |
2387
a59f2abd970e
frontends (xmlui): added ValueGetter.keys
Goffi <goffi@goffi.org>
parents:
2377
diff
changeset
|
380 |
2376
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
381 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
382 class XMLUIPanel(XMLUIBase): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
383 """XMLUI Panel |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
384 |
2540
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
385 New frontends can inherit this class to easily implement XMLUI |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
386 @property widget_factory: factory to create frontend-specific widgets |
1610
1378ec04380f
primitivus (xmlui): fixed closing on popup panel "OK" button press
Goffi <goffi@goffi.org>
parents:
1608
diff
changeset
|
387 @property dialog_factory: factory to create frontend-specific dialogs |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
388 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
389 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
390 widget_factory = None |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
391 |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
392 def __init__(self, host, parsed_dom, title=None, flags=None, callback=None, |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
393 ignore=None, whitelist=None, profile=C.PROF_KEY_NONE): |
2376
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
394 """ |
2540
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
395 |
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
396 @param title(unicode, None): title of the |
2376
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
397 @property widgets(dict): widget name => widget map |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
398 @property widget_value(ValueGetter): retrieve widget value from it's name |
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
399 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
400 super(XMLUIPanel, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
401 host, parsed_dom, title=title, flags=flags, callback=callback, profile=profile |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
402 ) |
2366
c7a7e650ac2f
frontends (xmlui): a dict of named widgets is kept, so they can be easily be retrieved
Goffi <goffi@goffi.org>
parents:
2361
diff
changeset
|
403 self.ctrl_list = {} # input widget, used mainly for forms |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
404 self.widgets = {} # allow to access any named widgets |
2376
825608d4eaf8
frontends (xmlui): new widget_value dict to get first value of widget by name
Goffi <goffi@goffi.org>
parents:
2366
diff
changeset
|
405 self.widget_value = ValueGetter(self.widgets) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
406 self._main_cont = None |
2419
c38c54c47e16
frontends (xmlui): added an attribute to ignore some widgets (and their label) in create
Goffi <goffi@goffi.org>
parents:
2418
diff
changeset
|
407 if ignore is None: |
c38c54c47e16
frontends (xmlui): added an attribute to ignore some widgets (and their label) in create
Goffi <goffi@goffi.org>
parents:
2418
diff
changeset
|
408 ignore = [] |
c38c54c47e16
frontends (xmlui): added an attribute to ignore some widgets (and their label) in create
Goffi <goffi@goffi.org>
parents:
2418
diff
changeset
|
409 self._ignore = ignore |
2540
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
410 if whitelist is not None: |
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
411 if ignore: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
412 raise exceptions.InternalError( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
413 "ignore and whitelist must not be used at the same time" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
414 ) |
2540
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
415 self._whitelist = whitelist |
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
416 else: |
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
417 self._whitelist = None |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
418 self.constructUI(parsed_dom) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
419 |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
420 @staticmethod |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
421 def escape(name): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
422 """Return escaped name for forms""" |
3028 | 423 return "%s%s" % (C.SAT_FORM_PREFIX, name) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
424 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
425 @property |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
426 def main_cont(self): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
427 return self._main_cont |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
428 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
429 @main_cont.setter |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
430 def main_cont(self, value): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
431 if self._main_cont is not None: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
432 raise ValueError(_("XMLUI can have only one main container")) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
433 self._main_cont = value |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
434 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
435 def _parseChilds(self, _xmlui_parent, current_node, wanted=("container",), data=None): |
1290
faa1129559b8
core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents:
1265
diff
changeset
|
436 """Recursively parse childNodes of an element |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
437 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
438 @param _xmlui_parent: widget container with '_xmluiAppend' method |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
439 @param current_node: element from which childs will be parsed |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
440 @param wanted: list of tag names that can be present in the childs to be SàT XMLUI |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
441 compliant |
2377
e50aee5caf33
frontends (xmlui): new _xmlui_for_name attribute:
Goffi <goffi@goffi.org>
parents:
2376
diff
changeset
|
442 @param data(None, dict): additionnal data which are needed in some cases |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
443 """ |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
444 for node in current_node.childNodes: |
2424
467ddb437a71
frontends (xmlui): fixed crash on advanced_list use:
Goffi <goffi@goffi.org>
parents:
2419
diff
changeset
|
445 if data is None: |
467ddb437a71
frontends (xmlui): fixed crash on advanced_list use:
Goffi <goffi@goffi.org>
parents:
2419
diff
changeset
|
446 data = {} |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
447 if wanted and not node.nodeName in wanted: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
448 raise InvalidXMLUI("Unexpected node: [%s]" % node.nodeName) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
449 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
450 if node.nodeName == "container": |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
451 type_ = node.getAttribute("type") |
2737
5c2ed8a5ae22
frontends (XMLUI): TabsContainer can now be the main container (Primitivus keep the old behaviour and always use VerticalContainer as main container)
Goffi <goffi@goffi.org>
parents:
2669
diff
changeset
|
452 if _xmlui_parent is self and type_ not in ("vertical", "tabs"): |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
453 # main container is not a VerticalContainer and we want one, |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
454 # so we create one to wrap it |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
455 _xmlui_parent = self.widget_factory.createVerticalContainer(self) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
456 self.main_cont = _xmlui_parent |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
457 if type_ == "tabs": |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
458 cont = self.widget_factory.createTabsContainer(_xmlui_parent) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
459 self._parseChilds(_xmlui_parent, node, ("tab",), {"tabs_cont": cont}) |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
460 elif type_ == "vertical": |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
461 cont = self.widget_factory.createVerticalContainer(_xmlui_parent) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
462 self._parseChilds(cont, node, ("widget", "container")) |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
463 elif type_ == "pairs": |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
464 cont = self.widget_factory.createPairsContainer(_xmlui_parent) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
465 self._parseChilds(cont, node, ("widget", "container")) |
2361
5defafc8ede6
core, frontends (xmlui): new LabelContainer:
Goffi <goffi@goffi.org>
parents:
2093
diff
changeset
|
466 elif type_ == "label": |
5defafc8ede6
core, frontends (xmlui): new LabelContainer:
Goffi <goffi@goffi.org>
parents:
2093
diff
changeset
|
467 cont = self.widget_factory.createLabelContainer(_xmlui_parent) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
468 self._parseChilds( |
2995
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
469 # FIXME: the "None" value for CURRENT_LABEL doesn't seem |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
470 # used or even useful, it should probably be removed |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
471 # and all "is not None" tests for it should be removed too |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
472 # to be checked for 0.8 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
473 cont, node, ("widget", "container"), {CURRENT_LABEL: None} |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
474 ) |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
475 elif type_ == "advanced_list": |
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
476 try: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
477 columns = int(node.getAttribute("columns")) |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
478 except (TypeError, ValueError): |
2540
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
479 raise exceptions.DataError("Invalid columns") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
480 selectable = node.getAttribute("selectable") or "no" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
481 auto_index = node.getAttribute("auto_index") == C.BOOL_TRUE |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
482 data = {"index": 0} if auto_index else None |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
483 cont = self.widget_factory.createAdvancedListContainer( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
484 _xmlui_parent, columns, selectable |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
485 ) |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
486 callback_id = node.getAttribute("callback") or None |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
487 if callback_id is not None: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
488 if selectable == "no": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
489 raise ValueError( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
490 "can't have selectable=='no' and callback_id at the same time" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
491 ) |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
492 cont._xmlui_callback_id = callback_id |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
493 cont._xmluiOnSelect(self.onAdvListSelect) |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
494 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
495 self._parseChilds(cont, node, ("row",), data) |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
496 else: |
1087
b3b7a2863060
frontends (XMLUI): use of logging system instead of print
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
497 log.warning(_("Unknown container [%s], using default one") % type_) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
498 cont = self.widget_factory.createVerticalContainer(_xmlui_parent) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
499 self._parseChilds(cont, node, ("widget", "container")) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
500 try: |
2093
cbf3af02e941
frontends(xmlui): better handling of missing _xmluiAppend
Goffi <goffi@goffi.org>
parents:
2036
diff
changeset
|
501 xmluiAppend = _xmlui_parent._xmluiAppend |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
502 except ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
503 AttributeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
504 TypeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
505 ): # XXX: TypeError is here because pyjamas raise a TypeError instead of an AttributeError |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
506 if _xmlui_parent is self: |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
507 self.main_cont = cont |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
508 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
509 raise Exception( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
510 _("Internal Error, container has not _xmluiAppend method") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
511 ) |
2093
cbf3af02e941
frontends(xmlui): better handling of missing _xmluiAppend
Goffi <goffi@goffi.org>
parents:
2036
diff
changeset
|
512 else: |
cbf3af02e941
frontends(xmlui): better handling of missing _xmluiAppend
Goffi <goffi@goffi.org>
parents:
2036
diff
changeset
|
513 xmluiAppend(cont) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
514 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
515 elif node.nodeName == "tab": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
516 name = node.getAttribute("name") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
517 label = node.getAttribute("label") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
518 selected = C.bool(node.getAttribute("selected") or C.BOOL_FALSE) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
519 if not name or not "tabs_cont" in data: |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
520 raise InvalidXMLUI |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
521 if self.type == "param": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
522 self._current_category = ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
523 name |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
524 ) # XXX: awful hack because params need category and we don't keep parent |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
525 tab_cont = data["tabs_cont"] |
1486
a77217511afd
tools, frontends (xmlui): allow to select a tab when adding it
souliane <souliane@mailoo.org>
parents:
1478
diff
changeset
|
526 new_tab = tab_cont._xmluiAddTab(label or name, selected) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
527 self._parseChilds(new_tab, node, ("widget", "container")) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
528 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
529 elif node.nodeName == "row": |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
530 try: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
531 index = str(data["index"]) |
2377
e50aee5caf33
frontends (xmlui): new _xmlui_for_name attribute:
Goffi <goffi@goffi.org>
parents:
2376
diff
changeset
|
532 except KeyError: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
533 index = node.getAttribute("index") or None |
2377
e50aee5caf33
frontends (xmlui): new _xmlui_for_name attribute:
Goffi <goffi@goffi.org>
parents:
2376
diff
changeset
|
534 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
535 data["index"] += 1 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
536 _xmlui_parent._xmluiAddRow(index) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
537 self._parseChilds(_xmlui_parent, node, ("widget", "container")) |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
538 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
539 elif node.nodeName == "widget": |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
540 name = node.getAttribute("name") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
541 if name and ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
542 name in self._ignore |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
543 or self._whitelist is not None |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
544 and name not in self._whitelist |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
545 ): |
2419
c38c54c47e16
frontends (xmlui): added an attribute to ignore some widgets (and their label) in create
Goffi <goffi@goffi.org>
parents:
2418
diff
changeset
|
546 # current widget is ignored, but there may be already a label |
c38c54c47e16
frontends (xmlui): added an attribute to ignore some widgets (and their label) in create
Goffi <goffi@goffi.org>
parents:
2418
diff
changeset
|
547 if CURRENT_LABEL in data: |
2995
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
548 curr_label = data.pop(CURRENT_LABEL) |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
549 if curr_label is not None: |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
550 # if so, we remove it from parent |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
551 _xmlui_parent._xmluiRemove(curr_label) |
2419
c38c54c47e16
frontends (xmlui): added an attribute to ignore some widgets (and their label) in create
Goffi <goffi@goffi.org>
parents:
2418
diff
changeset
|
552 continue |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
553 type_ = node.getAttribute("type") |
1086
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
554 value_elt = self._getChildNode(node, "value") |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
555 if value_elt is not None: |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
556 value = getText(value_elt) |
2cb30f46e560
core/frontends (XMLUI): value can now be inserted as a <value/> element, if not present value attribute is tested, else empty string is used.
Goffi <goffi@goffi.org>
parents:
1085
diff
changeset
|
557 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
558 value = ( |
3028 | 559 node.getAttribute("value") if node.hasAttribute("value") else "" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
560 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
561 if type_ == "empty": |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
562 ctrl = self.widget_factory.createEmptyWidget(_xmlui_parent) |
2418
69f979adb1d7
frotends(xmlui): fixed _xmlui_for_name attribute for labels
Goffi <goffi@goffi.org>
parents:
2414
diff
changeset
|
563 if CURRENT_LABEL in data: |
69f979adb1d7
frotends(xmlui): fixed _xmlui_for_name attribute for labels
Goffi <goffi@goffi.org>
parents:
2414
diff
changeset
|
564 data[CURRENT_LABEL] = None |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
565 elif type_ == "text": |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
566 ctrl = self.widget_factory.createTextWidget(_xmlui_parent, value) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
567 elif type_ == "label": |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
568 ctrl = self.widget_factory.createLabelWidget(_xmlui_parent, value) |
2418
69f979adb1d7
frotends(xmlui): fixed _xmlui_for_name attribute for labels
Goffi <goffi@goffi.org>
parents:
2414
diff
changeset
|
569 data[CURRENT_LABEL] = ctrl |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
570 elif type_ == "hidden": |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
571 if name in self.hidden: |
3028 | 572 raise exceptions.ConflictError("Conflict on hidden value with " |
573 "name {name}".format(name=name)) | |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
574 self.hidden[name] = value |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
575 continue |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
576 elif type_ == "jid": |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
577 ctrl = self.widget_factory.createJidWidget(_xmlui_parent, value) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
578 elif type_ == "divider": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
579 style = node.getAttribute("style") or "line" |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
580 ctrl = self.widget_factory.createDividerWidget(_xmlui_parent, style) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
581 elif type_ == "string": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
582 ctrl = self.widget_factory.createStringWidget( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
583 _xmlui_parent, value, self._isAttrSet("read_only", node) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
584 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
585 self.ctrl_list[name] = {"type": type_, "control": ctrl} |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
586 elif type_ == "jid_input": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
587 ctrl = self.widget_factory.createJidInputWidget( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
588 _xmlui_parent, value, self._isAttrSet("read_only", node) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
589 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
590 self.ctrl_list[name] = {"type": type_, "control": ctrl} |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
591 elif type_ == "password": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
592 ctrl = self.widget_factory.createPasswordWidget( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
593 _xmlui_parent, value, self._isAttrSet("read_only", node) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
594 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
595 self.ctrl_list[name] = {"type": type_, "control": ctrl} |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
596 elif type_ == "textbox": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
597 ctrl = self.widget_factory.createTextBoxWidget( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
598 _xmlui_parent, value, self._isAttrSet("read_only", node) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
599 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
600 self.ctrl_list[name] = {"type": type_, "control": ctrl} |
2783
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
601 elif type_ == "xhtmlbox": |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
602 ctrl = self.widget_factory.createXHTMLBoxWidget( |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
603 _xmlui_parent, value, self._isAttrSet("read_only", node) |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
604 ) |
442ab697f831
frontends, jp, templates: added XHTMLBox widget:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
605 self.ctrl_list[name] = {"type": type_, "control": ctrl} |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
606 elif type_ == "bool": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
607 ctrl = self.widget_factory.createBoolWidget( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
608 _xmlui_parent, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
609 value == C.BOOL_TRUE, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
610 self._isAttrSet("read_only", node), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
611 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
612 self.ctrl_list[name] = {"type": type_, "control": ctrl} |
1220
f91e7028e2c3
memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents:
1109
diff
changeset
|
613 elif type_ == "int": |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
614 ctrl = self.widget_factory.createIntWidget( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
615 _xmlui_parent, value, self._isAttrSet("read_only", node) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
616 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
617 self.ctrl_list[name] = {"type": type_, "control": ctrl} |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
865
diff
changeset
|
618 elif type_ == "list": |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
619 style = [] if node.getAttribute("multi") == "yes" else ["single"] |
3028 | 620 for attr in ("noselect", "extensible", "reducible", "inline"): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
621 if node.getAttribute(attr) == "yes": |
2397
7fff98d64ab5
core (XMLUI), template(XMLUI): added flags to ListWidget:
Goffi <goffi@goffi.org>
parents:
2387
diff
changeset
|
622 style.append(attr) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
623 _options = [ |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
624 (option.getAttribute("value"), option.getAttribute("label")) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
625 for option in node.getElementsByTagName("option") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
626 ] |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
627 _selected = [ |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
628 option.getAttribute("value") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
629 for option in node.getElementsByTagName("option") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
630 if option.getAttribute("selected") == C.BOOL_TRUE |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
631 ] |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
632 ctrl = self.widget_factory.createListWidget( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
633 _xmlui_parent, _options, _selected, style |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
634 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
635 self.ctrl_list[name] = {"type": type_, "control": ctrl} |
1478
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
636 elif type_ == "jids_list": |
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
637 style = [] |
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
638 jids = [getText(jid_) for jid_ in node.getElementsByTagName("jid")] |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
639 ctrl = self.widget_factory.createJidsListWidget( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
640 _xmlui_parent, jids, style |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
641 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
642 self.ctrl_list[name] = {"type": type_, "control": ctrl} |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
643 elif type_ == "button": |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
644 callback_id = node.getAttribute("callback") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
645 ctrl = self.widget_factory.createButtonWidget( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
646 _xmlui_parent, value, self.onButtonPress |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
647 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
648 ctrl._xmlui_param_id = ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
649 callback_id, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
650 [ |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
651 field.getAttribute("name") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
652 for field in node.getElementsByTagName("field_back") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
653 ], |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
654 ) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
655 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
656 log.error( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
657 _("FIXME FIXME FIXME: widget type [%s] is not implemented") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
658 % type_ |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
659 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
660 raise NotImplementedError( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
661 _("FIXME FIXME FIXME: type [%s] is not implemented") % type_ |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
662 ) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
663 |
2366
c7a7e650ac2f
frontends (xmlui): a dict of named widgets is kept, so they can be easily be retrieved
Goffi <goffi@goffi.org>
parents:
2361
diff
changeset
|
664 if name: |
c7a7e650ac2f
frontends (xmlui): a dict of named widgets is kept, so they can be easily be retrieved
Goffi <goffi@goffi.org>
parents:
2361
diff
changeset
|
665 self.widgets[name] = ctrl |
c7a7e650ac2f
frontends (xmlui): a dict of named widgets is kept, so they can be easily be retrieved
Goffi <goffi@goffi.org>
parents:
2361
diff
changeset
|
666 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
667 if self.type == "param" and type_ not in ("text", "button"): |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
668 try: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
669 ctrl._xmluiOnChange(self.onParamChange) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
670 ctrl._param_category = self._current_category |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
671 except ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
672 AttributeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
673 TypeError, |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
674 ): # XXX: TypeError is here because pyjamas raise a TypeError instead |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
675 # of an AttributeError |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
676 if not isinstance( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
677 ctrl, (EmptyWidget, TextWidget, LabelWidget, JidWidget) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
678 ): |
1087
b3b7a2863060
frontends (XMLUI): use of logging system instead of print
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
679 log.warning(_("No change listener on [%s]") % ctrl) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
680 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
681 elif type_ != "text": |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
682 callback = node.getAttribute("internal_callback") or None |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
683 if callback: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
684 fields = [ |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
685 field.getAttribute("name") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
686 for field in node.getElementsByTagName("internal_field") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
687 ] |
2377
e50aee5caf33
frontends (xmlui): new _xmlui_for_name attribute:
Goffi <goffi@goffi.org>
parents:
2376
diff
changeset
|
688 cb_data = self.getInternalCallbackData(callback, node) |
e50aee5caf33
frontends (xmlui): new _xmlui_for_name attribute:
Goffi <goffi@goffi.org>
parents:
2376
diff
changeset
|
689 ctrl._xmlui_param_internal = (callback, fields, cb_data) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
690 if type_ == "button": |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
691 ctrl._xmluiOnClick(self.onChangeInternal) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
692 else: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
693 ctrl._xmluiOnChange(self.onChangeInternal) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
694 |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
695 ctrl._xmlui_name = name |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
696 _xmlui_parent._xmluiAppend(ctrl) |
2418
69f979adb1d7
frotends(xmlui): fixed _xmlui_for_name attribute for labels
Goffi <goffi@goffi.org>
parents:
2414
diff
changeset
|
697 if CURRENT_LABEL in data and not isinstance(ctrl, LabelWidget): |
2995
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
698 curr_label = data.pop(CURRENT_LABEL) |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
699 if curr_label is not None: |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
700 # this key is set in LabelContainer, when present |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
701 # we can associate the label with the widget it is labelling |
5ecce65631a2
frontends (xmlui): fixed crash when CURRENT_LABEL is None:
Goffi <goffi@goffi.org>
parents:
2879
diff
changeset
|
702 curr_label._xmlui_for_name = name |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
703 |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
704 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
705 raise NotImplementedError(_("Unknown tag [%s]") % node.nodeName) |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
706 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
707 def constructUI(self, parsed_dom, post_treat=None): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
708 """Actually construct the UI |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
709 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
710 @param parsed_dom: main parsed dom |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
711 @param post_treat: frontend specific treatments to do once the UI is constructed |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
712 @return: constructed widget |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
713 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
714 top = parsed_dom.documentElement |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
715 self.type = top.getAttribute("type") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
716 if top.nodeName != "sat_xmlui" or not self.type in [ |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
717 "form", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
718 "param", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
719 "window", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
720 "popup", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
721 ]: |
152
b1f1955d96b3
Primitivus: XMLUI: tabs layout management + CustomButton now used instead of urwid's buttons
Goffi <goffi@goffi.org>
parents:
149
diff
changeset
|
722 raise InvalidXMLUI |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
723 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
724 if self.type == "param": |
166
b318d2b58887
Primitivus: parameters management via XMLUI
Goffi <goffi@goffi.org>
parents:
162
diff
changeset
|
725 self.param_changed = set() |
b318d2b58887
Primitivus: parameters management via XMLUI
Goffi <goffi@goffi.org>
parents:
162
diff
changeset
|
726 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
727 self._parseChilds(self, parsed_dom.documentElement) |
152
b1f1955d96b3
Primitivus: XMLUI: tabs layout management + CustomButton now used instead of urwid's buttons
Goffi <goffi@goffi.org>
parents:
149
diff
changeset
|
728 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
729 if post_treat is not None: |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
730 post_treat() |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
731 |
808
d035c662b357
frontends: some modifications to ease the the use of the new sat_frontends.tools.xmlui.XMLUI class in Libervia
Goffi <goffi@goffi.org>
parents:
805
diff
changeset
|
732 def _xmluiSetParam(self, name, value, category): |
1346
35f99c90b736
frontends (XMLUI): fixes wrong argument name
souliane <souliane@mailoo.org>
parents:
1327
diff
changeset
|
733 self.host.bridge.setParam(name, value, category, profile_key=self.profile) |
808
d035c662b357
frontends: some modifications to ease the the use of the new sat_frontends.tools.xmlui.XMLUI class in Libervia
Goffi <goffi@goffi.org>
parents:
805
diff
changeset
|
734 |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
735 ##EVENTS## |
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
736 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
737 def onParamChange(self, ctrl): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
738 """Called when type is param and a widget to save is modified |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
739 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
740 @param ctrl: widget modified |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
741 """ |
1478
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
742 assert self.type == "param" |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
743 self.param_changed.add(ctrl) |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
744 |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
745 def onAdvListSelect(self, ctrl): |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
746 data = {} |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
747 widgets = ctrl._xmluiGetSelectedWidgets() |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
748 for wid in widgets: |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
749 try: |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
750 name = self.escape(wid._xmlui_name) |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
751 value = wid._xmluiGetValue() |
864
241f6baa6687
frontends: fix typos, do not use logging in the xmlui tools:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
752 data[name] = value |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
753 except ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
754 AttributeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
755 TypeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
756 ): # XXX: TypeError is here because pyjamas raise a TypeError instead of an AttributeError |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
757 pass |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
758 idx = ctrl._xmluiGetSelectedIndex() |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
759 if idx is not None: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
760 data["index"] = idx |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
761 callback_id = ctrl._xmlui_callback_id |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
762 if callback_id is None: |
1087
b3b7a2863060
frontends (XMLUI): use of logging system instead of print
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
763 log.info(_("No callback_id found")) |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
764 return |
808
d035c662b357
frontends: some modifications to ease the the use of the new sat_frontends.tools.xmlui.XMLUI class in Libervia
Goffi <goffi@goffi.org>
parents:
805
diff
changeset
|
765 self._xmluiLaunchAction(callback_id, data) |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
766 |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
767 def onButtonPress(self, button): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
768 """Called when an XMLUI button is clicked |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
769 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
770 Launch the action associated to the button |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
771 @param button: the button clicked |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
772 """ |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
773 callback_id, fields = button._xmlui_param_id |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
774 if not callback_id: # the button is probably bound to an internal action |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
775 return |
759
93bd868b8fb6
backend, frontends: callbacks refactoring:
Goffi <goffi@goffi.org>
parents:
687
diff
changeset
|
776 data = {} |
157
13888bdb72b6
primitivus: button are now working with XMLUI
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
777 for field in fields: |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
778 escaped = self.escape(field) |
157
13888bdb72b6
primitivus: button are now working with XMLUI
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
779 ctrl = self.ctrl_list[field] |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
780 if isinstance(ctrl["control"], ListWidget): |
3028 | 781 data[escaped] = "\t".join(ctrl["control"]._xmluiGetSelectedValues()) |
157
13888bdb72b6
primitivus: button are now working with XMLUI
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
782 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
783 data[escaped] = ctrl["control"]._xmluiGetValue() |
808
d035c662b357
frontends: some modifications to ease the the use of the new sat_frontends.tools.xmlui.XMLUI class in Libervia
Goffi <goffi@goffi.org>
parents:
805
diff
changeset
|
784 self._xmluiLaunchAction(callback_id, data) |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
785 |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
786 def onChangeInternal(self, ctrl): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
787 """Called when a widget that has been bound to an internal callback is changed. |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
788 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
789 This is used to perform some UI actions without communicating with the backend. |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
790 See sat.tools.xml_tools.Widget.setInternalCallback for more details. |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
791 @param ctrl: widget modified |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
792 """ |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
793 action, fields, data = ctrl._xmlui_param_internal |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
794 if action not in ("copy", "move", "groups_of_contact"): |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
795 raise NotImplementedError( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
796 _("FIXME: XMLUI internal action [%s] is not implemented") % action |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
797 ) |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
798 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
799 def copy_move(source, target): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
800 """Depending of 'action' value, copy or move from source to target.""" |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
801 if isinstance(target, ListWidget): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
802 if isinstance(source, ListWidget): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
803 values = source._xmluiGetSelectedValues() |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
804 else: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
805 values = [source._xmluiGetValue()] |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
806 if action == "move": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
807 source._xmluiSetValue("") |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
808 values = [value for value in values if value] |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
809 if values: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
810 target._xmluiAddValues(values, select=True) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
811 else: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
812 if isinstance(source, ListWidget): |
3028 | 813 value = ", ".join(source._xmluiGetSelectedValues()) |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
814 else: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
815 value = source._xmluiGetValue() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
816 if action == "move": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
817 source._xmluiSetValue("") |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
818 target._xmluiSetValue(value) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
819 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
820 def groups_of_contact(source, target): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
821 """Select in target the groups of the contact which is selected in source.""" |
1478
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
822 assert isinstance(source, ListWidget) |
90130847a0a8
frontends, primitivus: JidsList XMLUI widget management /!\ urwid SàText must be updated
Goffi <goffi@goffi.org>
parents:
1473
diff
changeset
|
823 assert isinstance(target, ListWidget) |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
824 try: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
825 contact_jid_s = source._xmluiGetSelectedValues()[0] |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
826 except IndexError: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
827 return |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
828 target._xmluiSelectValues(data[contact_jid_s]) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
829 pass |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
830 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
831 source = None |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
832 for field in fields: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
833 widget = self.ctrl_list[field]["control"] |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
834 if not source: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
835 source = widget |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
836 continue |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
837 if action in ("copy", "move"): |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
838 copy_move(source, widget) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
839 elif action == "groups_of_contact": |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
840 groups_of_contact(source, widget) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
841 source = None |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
842 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
843 def getInternalCallbackData(self, action, node): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
844 """Retrieve from node the data needed to perform given action. |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
845 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
846 @param action (string): a value from the one that can be passed to the |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
847 'callback' parameter of sat.tools.xml_tools.Widget.setInternalCallback |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
848 @param node (DOM Element): the node of the widget that triggers the callback |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
849 """ |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
850 # TODO: it would be better to not have a specific way to retrieve |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
851 # data for each action, but instead to have a generic method to |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
852 # extract any kind of data structure from the 'internal_data' element. |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
853 |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
854 try: # data is stored in the first 'internal_data' element of the node |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
855 data_elts = node.getElementsByTagName("internal_data")[0].childNodes |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
856 except IndexError: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
857 return None |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
858 data = {} |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
859 if ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
860 action == "groups_of_contact" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
861 ): # return a dict(key: string, value: list[string]) |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
862 for elt in data_elts: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
863 jid_s = elt.getAttribute("name") |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
864 data[jid_s] = [] |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
865 for value_elt in elt.childNodes: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
866 data[jid_s].append(value_elt.getAttribute("name")) |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
867 return data |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
868 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
869 def onFormSubmitted(self, ignore=None): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
870 """An XMLUI form has been submited |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
871 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
872 call the submit action associated with this form |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
873 """ |
760
73a0077f80cc
backend, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
759
diff
changeset
|
874 selected_values = [] |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
875 for ctrl_name in self.ctrl_list: |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
876 escaped = self.escape(ctrl_name) |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
877 ctrl = self.ctrl_list[ctrl_name] |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
878 if isinstance(ctrl["control"], ListWidget): |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
879 selected_values.append( |
3028 | 880 (escaped, "\t".join(ctrl["control"]._xmluiGetSelectedValues())) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
881 ) |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
882 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
883 selected_values.append((escaped, ctrl["control"]._xmluiGetValue())) |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
884 data = dict(selected_values) |
3028 | 885 for key, value in self.hidden.items(): |
2668
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
886 data[self.escape(key)] = value |
c274201cea94
core, frontends (xmlui): added "hidden" widget, to specify a value to be returned unmodified
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
887 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
888 if self.submit_id is not None: |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
889 self.submit(data) |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
890 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
891 log.warning( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
892 _("The form data is not sent back, the type is not managed properly") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
893 ) |
1579
d5e332055d9f
quick_frontend, primitivus (xmlui): removed _xmluiClose from workflow were submit is triggered, as submit launch the callback which close the dialog itself + fixed dialogs _xmluiClose
Goffi <goffi@goffi.org>
parents:
1501
diff
changeset
|
894 self._xmluiClose() |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
895 |
2879 | 896 def onFormCancelled(self, *__): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
897 """Called when a form is cancelled""" |
1087
b3b7a2863060
frontends (XMLUI): use of logging system instead of print
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
898 log.debug(_("Cancelling form")) |
1985
9ad1a06ed0f8
frontends (xmlui): cancelling form now trigger submit with {"cancelled": "true"} instead of being silently ignored
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
899 if self.submit_id is not None: |
9ad1a06ed0f8
frontends (xmlui): cancelling form now trigger submit with {"cancelled": "true"} instead of being silently ignored
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
900 data = {C.XMLUI_DATA_CANCELLED: C.BOOL_TRUE} |
9ad1a06ed0f8
frontends (xmlui): cancelling form now trigger submit with {"cancelled": "true"} instead of being silently ignored
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
901 self.submit(data) |
9ad1a06ed0f8
frontends (xmlui): cancelling form now trigger submit with {"cancelled": "true"} instead of being silently ignored
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
902 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
903 log.warning( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
904 _("The form data is not sent back, the type is not managed properly") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
905 ) |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
906 self._xmluiClose() |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
907 |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
908 def onSaveParams(self, ignore=None): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
909 """Params are saved, we send them to backend |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
910 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
911 self.type must be param |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
912 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
913 assert self.type == "param" |
166
b318d2b58887
Primitivus: parameters management via XMLUI
Goffi <goffi@goffi.org>
parents:
162
diff
changeset
|
914 for ctrl in self.param_changed: |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
915 if isinstance(ctrl, ListWidget): |
3028 | 916 value = "\t".join(ctrl._xmluiGetSelectedValues()) |
183
9ee4a1d0d7fb
Added auto(dis)connect params + misc
Goffi <goffi@goffi.org>
parents:
170
diff
changeset
|
917 else: |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
918 value = ctrl._xmluiGetValue() |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
919 param_name = ctrl._xmlui_name.split(C.SAT_PARAM_SEPARATOR)[1] |
808
d035c662b357
frontends: some modifications to ease the the use of the new sat_frontends.tools.xmlui.XMLUI class in Libervia
Goffi <goffi@goffi.org>
parents:
805
diff
changeset
|
920 self._xmluiSetParam(param_name, value, ctrl._param_category) |
d035c662b357
frontends: some modifications to ease the the use of the new sat_frontends.tools.xmlui.XMLUI class in Libervia
Goffi <goffi@goffi.org>
parents:
805
diff
changeset
|
921 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
922 self._xmluiClose() |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
923 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
924 def show(self, *args, **kwargs): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
925 pass |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
926 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
927 |
3040 | 928 class AIOXMLUIPanel(XMLUIPanel): |
929 """Asyncio compatible version of XMLUIPanel""" | |
930 | |
931 async def onFormSubmitted(self, ignore=None): | |
932 """An XMLUI form has been submited | |
933 | |
934 call the submit action associated with this form | |
935 """ | |
936 selected_values = [] | |
937 for ctrl_name in self.ctrl_list: | |
938 escaped = self.escape(ctrl_name) | |
939 ctrl = self.ctrl_list[ctrl_name] | |
940 if isinstance(ctrl["control"], ListWidget): | |
941 selected_values.append( | |
942 (escaped, "\t".join(ctrl["control"]._xmluiGetSelectedValues())) | |
943 ) | |
944 else: | |
945 selected_values.append((escaped, ctrl["control"]._xmluiGetValue())) | |
946 data = dict(selected_values) | |
947 for key, value in self.hidden.items(): | |
948 data[self.escape(key)] = value | |
949 | |
950 if self.submit_id is not None: | |
951 await self.submit(data) | |
952 else: | |
953 log.warning( | |
954 _("The form data is not sent back, the type is not managed properly") | |
955 ) | |
956 self._xmluiClose() | |
957 | |
958 async def onFormCancelled(self, *__): | |
959 """Called when a form is cancelled""" | |
960 log.debug(_("Cancelling form")) | |
961 if self.submit_id is not None: | |
962 data = {C.XMLUI_DATA_CANCELLED: C.BOOL_TRUE} | |
963 await self.submit(data) | |
964 else: | |
965 log.warning( | |
966 _("The form data is not sent back, the type is not managed properly") | |
967 ) | |
968 self._xmluiClose() | |
969 | |
970 async def submit(self, data): | |
971 self._xmluiClose() | |
972 if self.submit_id is None: | |
973 raise ValueError("Can't submit is self.submit_id is not set") | |
974 if "session_id" in data: | |
975 raise ValueError( | |
976 "session_id must no be used in data, it is automaticaly filled with " | |
977 "self.session_id if present" | |
978 ) | |
979 if self.session_id is not None: | |
980 data["session_id"] = self.session_id | |
981 await self._xmluiLaunchAction(self.submit_id, data) | |
982 | |
983 async def _xmluiLaunchAction(self, action_id, data): | |
984 await self.host.launchAction( | |
985 action_id, data, callback=self.callback, profile=self.profile | |
986 ) | |
987 | |
988 | |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
989 class XMLUIDialog(XMLUIBase): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
990 dialog_factory = None |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
991 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
992 def __init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
993 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
994 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
995 parsed_dom, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
996 title=None, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
997 flags=None, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
998 callback=None, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
999 ignore=None, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1000 whitelist=None, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1001 profile=C.PROF_KEY_NONE, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1002 ): |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1003 super(XMLUIDialog, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1004 host, parsed_dom, title=title, flags=flags, callback=callback, profile=profile |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1005 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1006 top = parsed_dom.documentElement |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1007 dlg_elt = self._getChildNode(top, "dialog") |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1008 if dlg_elt is None: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1009 raise ValueError("Invalid XMLUI: no Dialog element found !") |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1010 dlg_type = dlg_elt.getAttribute("type") or C.XMLUI_DIALOG_MESSAGE |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1011 try: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1012 mess_elt = self._getChildNode(dlg_elt, C.XMLUI_DATA_MESS) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1013 message = getText(mess_elt) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1014 except ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1015 TypeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1016 AttributeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1017 ): # XXX: TypeError is here because pyjamas raise a TypeError instead of an AttributeError |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1018 message = "" |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1019 level = dlg_elt.getAttribute(C.XMLUI_DATA_LVL) or C.XMLUI_DATA_LVL_INFO |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1020 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1021 if dlg_type == C.XMLUI_DIALOG_MESSAGE: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1022 self.dlg = self.dialog_factory.createMessageDialog( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1023 self, self.xmlui_title, message, level |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1024 ) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1025 elif dlg_type == C.XMLUI_DIALOG_NOTE: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1026 self.dlg = self.dialog_factory.createNoteDialog( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1027 self, self.xmlui_title, message, level |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1028 ) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1029 elif dlg_type == C.XMLUI_DIALOG_CONFIRM: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1030 try: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1031 buttons_elt = self._getChildNode(dlg_elt, "buttons") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1032 buttons_set = ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1033 buttons_elt.getAttribute("set") or C.XMLUI_DATA_BTNS_SET_DEFAULT |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1034 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1035 except ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1036 TypeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1037 AttributeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1038 ): # XXX: TypeError is here because pyjamas raise a TypeError instead of an AttributeError |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1039 buttons_set = C.XMLUI_DATA_BTNS_SET_DEFAULT |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1040 self.dlg = self.dialog_factory.createConfirmDialog( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1041 self, self.xmlui_title, message, level, buttons_set |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1042 ) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1043 elif dlg_type == C.XMLUI_DIALOG_FILE: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1044 try: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1045 file_elt = self._getChildNode(dlg_elt, "file") |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1046 filetype = file_elt.getAttribute("type") or C.XMLUI_DATA_FILETYPE_DEFAULT |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1047 except ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1048 TypeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1049 AttributeError, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1050 ): # XXX: TypeError is here because pyjamas raise a TypeError instead of an AttributeError |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1051 filetype = C.XMLUI_DATA_FILETYPE_DEFAULT |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1052 self.dlg = self.dialog_factory.createFileDialog( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1053 self, self.xmlui_title, message, level, filetype |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1054 ) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1055 else: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1056 raise ValueError("Unknown dialog type [%s]" % dlg_type) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1057 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1058 def show(self): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1059 self.dlg._xmluiShow() |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1060 |
1579
d5e332055d9f
quick_frontend, primitivus (xmlui): removed _xmluiClose from workflow were submit is triggered, as submit launch the callback which close the dialog itself + fixed dialogs _xmluiClose
Goffi <goffi@goffi.org>
parents:
1501
diff
changeset
|
1061 def _xmluiClose(self): |
d5e332055d9f
quick_frontend, primitivus (xmlui): removed _xmluiClose from workflow were submit is triggered, as submit launch the callback which close the dialog itself + fixed dialogs _xmluiClose
Goffi <goffi@goffi.org>
parents:
1501
diff
changeset
|
1062 self.dlg._xmluiClose() |
d5e332055d9f
quick_frontend, primitivus (xmlui): removed _xmluiClose from workflow were submit is triggered, as submit launch the callback which close the dialog itself + fixed dialogs _xmluiClose
Goffi <goffi@goffi.org>
parents:
1501
diff
changeset
|
1063 |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1064 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1065 def registerClass(type_, class_): |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1066 """Register the class to use with the factory |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1067 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1068 @param type_: one of: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1069 CLASS_PANEL: classical XMLUI interface |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1070 CLASS_DIALOG: XMLUI dialog |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1071 @param class_: the class to use to instanciate given type |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1072 """ |
2669
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1073 # TODO: remove this method, as there are seme use cases where different XMLUI |
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1074 # classes can be used in the same frontend, so a global value is not good |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1075 assert type_ in (CLASS_PANEL, CLASS_DIALOG) |
3028 | 1076 log.warning("registerClass for XMLUI is deprecated, please use partial with " |
1077 "xmlui.create and class_map instead") | |
2669
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1078 if type_ in _class_map: |
3028 | 1079 log.debug(_("XMLUI class already registered for {type_}, ignoring").format( |
2669
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1080 type_=type_)) |
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1081 return |
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1082 |
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1083 _class_map[type_] = class_ |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1084 |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1085 |
2669
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1086 def create(host, xml_data, title=None, flags=None, dom_parse=None, dom_free=None, |
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1087 callback=None, ignore=None, whitelist=None, class_map=None, |
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1088 profile=C.PROF_KEY_NONE): |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1089 """ |
1290
faa1129559b8
core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents:
1265
diff
changeset
|
1090 @param dom_parse: methode equivalent to minidom.parseString (but which must manage unicode), or None to use default one |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1091 @param dom_free: method used to free the parsed DOM |
2419
c38c54c47e16
frontends (xmlui): added an attribute to ignore some widgets (and their label) in create
Goffi <goffi@goffi.org>
parents:
2418
diff
changeset
|
1092 @param ignore(list[unicode], None): name of widgets to ignore |
c38c54c47e16
frontends (xmlui): added an attribute to ignore some widgets (and their label) in create
Goffi <goffi@goffi.org>
parents:
2418
diff
changeset
|
1093 widgets with name in this list and their label will be ignored |
2540
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
1094 @param whitelist(list[unicode], None): name of widgets to keep |
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
1095 when not None, only widgets in this list and their label will be kept |
3e03de7691ce
frontends (xmlui): added whitelist argument:
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
1096 mutually exclusive with ignore |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1097 """ |
2669
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1098 if class_map is None: |
bdb8276fd2da
frontends (xmlui): class_map is now an arg of create function:
Goffi <goffi@goffi.org>
parents:
2668
diff
changeset
|
1099 class_map = _class_map |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1100 if dom_parse is None: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1101 from xml.dom import minidom |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1102 |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1103 dom_parse = lambda xml_data: minidom.parseString(xml_data.encode("utf-8")) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1104 dom_free = lambda parsed_dom: parsed_dom.unlink() |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1105 else: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1106 dom_parse = dom_parse |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1107 dom_free = dom_free or (lambda parsed_dom: None) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1108 parsed_dom = dom_parse(xml_data) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1109 top = parsed_dom.documentElement |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1110 ui_type = top.getAttribute("type") |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1111 try: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1112 if ui_type != C.XMLUI_DIALOG: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1113 cls = class_map[CLASS_PANEL] |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1114 else: |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1115 cls = class_map[CLASS_DIALOG] |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1116 except KeyError: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1117 raise ClassNotRegistedError( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1118 _("You must register classes with registerClass before creating a XMLUI") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1119 ) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1120 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1121 xmlui = cls( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1122 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1123 parsed_dom, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1124 title=title, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1125 flags=flags, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1126 callback=callback, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1127 ignore=ignore, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1128 whitelist=whitelist, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1129 profile=profile, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2597
diff
changeset
|
1130 ) |
1106
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1131 dom_free(parsed_dom) |
e2e1e27a3680
frontends: XMLUI refactoring + dialogs:
Goffi <goffi@goffi.org>
parents:
1087
diff
changeset
|
1132 return xmlui |