Mercurial > libervia-backend
annotate src/tools/xml_tools.py @ 1197:69ffe61240eb
wix: Avoid setting a bad icon
From 6fb18309a1d971235c0c3d568704fd91809d2d6e Mon Sep 17 00:00:00 2001
The code tries to load an icon from 'icons/crystal/32/tray_icon.xpm'
(relative to self.media_dir), which is part of sat_media, released
independently by upstream and not yet part of Debian.
It then tries to set this invalid icon. With wxPython 2.8 these
issues get quietly ignored, but wxPython 3.0 reports them. As a
simple workaround I've just added a check that the icon is valid
before setting it, so now you get a messagebox about the icon file
not being found and then the app starts.
Obviously it would be better to package sat_media so that the icon is
available on the system.
author | Olly Betts <olly@survex.com> |
---|---|
date | Tue, 09 Sep 2014 18:51:35 -0400 |
parents | 2f9f735334da |
children | 96fb74a4714d |
rev | line source |
---|---|
33
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
590
diff
changeset
|
4 # SAT: a jabber client |
811 | 5 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Jérôme Poisson (goffi@goffi.org) |
33
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
590
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:
590
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:
590
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:
590
diff
changeset
|
10 # (at your option) any later version. |
33
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
590
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:
590
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:
590
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:
590
diff
changeset
|
15 # GNU Affero General Public License for more details. |
33
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
590
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:
590
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
33
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
771 | 20 from sat.core.i18n import _ |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
21 from sat.core.constants import Const as C |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
981
diff
changeset
|
22 from sat.core.log import getLogger |
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
981
diff
changeset
|
23 log = getLogger(__name__) |
798
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
24 from xml.dom import minidom, NotFoundErr |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
25 from wokkel import data_form |
289
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
26 from twisted.words.xish import domish |
645 | 27 from sat.core import exceptions |
33
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
29 |
102 | 30 """This library help manage XML used in SàT (parameters, registration, etc) """ |
33
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
32 SAT_FORM_PREFIX = "SAT_FORM_" |
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
33 SAT_PARAM_SEPARATOR = "_XMLUI_PARAM_" # used to have unique elements names |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
34 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
35 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
36 # Helper functions |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
37 |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
38 def _dataFormField2XMLUIData(field, read_only=False): |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
39 """ Get data needed to create an XMLUI's Widget from Wokkel's data_form's Field |
863
97ee7594c788
core (xmlui): fixed types with empty value are now correctly managed in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
820
diff
changeset
|
40 field can be modified (if it's fixed and it has no value) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
41 @param field: data_form.Field (it uses field.value, field.fieldType, field.label and field.var) |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
42 @param read_only: if True and it make sens, create a read only input widget |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
43 @return: widget_type, widget_args, widget_kwargs |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
44 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
45 """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
46 widget_args = [field.value] |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
47 widget_kwargs = {} |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
48 if field.fieldType == 'fixed' or field.fieldType is None: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
49 widget_type = 'text' |
863
97ee7594c788
core (xmlui): fixed types with empty value are now correctly managed in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
820
diff
changeset
|
50 if field.value is None: |
97ee7594c788
core (xmlui): fixed types with empty value are now correctly managed in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
820
diff
changeset
|
51 if field.label is None: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
981
diff
changeset
|
52 log.warning(_("Fixed field has neither value nor label, ignoring it")) |
863
97ee7594c788
core (xmlui): fixed types with empty value are now correctly managed in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
820
diff
changeset
|
53 field.value = "" |
97ee7594c788
core (xmlui): fixed types with empty value are now correctly managed in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
820
diff
changeset
|
54 else: |
97ee7594c788
core (xmlui): fixed types with empty value are now correctly managed in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
820
diff
changeset
|
55 field.value = field.label |
97ee7594c788
core (xmlui): fixed types with empty value are now correctly managed in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
820
diff
changeset
|
56 field.label = None |
97ee7594c788
core (xmlui): fixed types with empty value are now correctly managed in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
820
diff
changeset
|
57 widget_args[0] = field.value |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
58 elif field.fieldType == 'text-single': |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
59 widget_type = "string" |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
60 widget_kwargs['read_only'] = read_only |
1070
ad023e60da8c
core (XMLUI): management of text-multi in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
1069
diff
changeset
|
61 elif field.fieldType == 'text-multi': |
1078
bb4517e69957
tools (xmlui): data form 'text-multi' element must be converted to xmlui 'textbox' (not 'text')
souliane <souliane@mailoo.org>
parents:
1070
diff
changeset
|
62 widget_type = "textbox" |
1070
ad023e60da8c
core (XMLUI): management of text-multi in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
1069
diff
changeset
|
63 widget_args[0] = u'\n'.join(field.values) |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
64 widget_kwargs['read_only'] = read_only |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
65 elif field.fieldType == 'text-private': |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
66 widget_type = "password" |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
67 widget_kwargs['read_only'] = read_only |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
68 elif field.fieldType == 'boolean': |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
69 widget_type = "bool" |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
70 if widget_args[0] is None: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
71 widget_args[0] = 'false' |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
72 widget_kwargs['read_only'] = read_only |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
73 elif field.fieldType == 'list-single': |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
74 widget_type = "list" |
810
b11df74e49d2
core (XMLUI): fixed labels management for lists in _dataFormField2XMLUIData
Goffi <goffi@goffi.org>
parents:
805
diff
changeset
|
75 widget_kwargs["options"] = [(option.value, option.label or option.value) for option in field.options] |
1067
f7f15d44fdfa
tools (xml_tools): dataForm2XMLUI handles the default value for "list-single" fields
souliane <souliane@mailoo.org>
parents:
1036
diff
changeset
|
76 widget_kwargs["selected"] = widget_args |
f7f15d44fdfa
tools (xml_tools): dataForm2XMLUI handles the default value for "list-single" fields
souliane <souliane@mailoo.org>
parents:
1036
diff
changeset
|
77 widget_args = [] |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
78 else: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
981
diff
changeset
|
79 log.error(u"FIXME FIXME FIXME: Type [%s] is not managed yet by SàT" % field.fieldType) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
80 widget_type = "string" |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
81 widget_kwargs['read_only'] = read_only |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
82 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
83 if field.var: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
84 widget_kwargs["name"] = field.var |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
85 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
86 return widget_type, widget_args, widget_kwargs |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
87 |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
88 def dataForm2Widgets(form_ui, form, read_only=False): |
1069
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
89 """Complete an existing XMLUI with widget converted frot XEP-0004 data forms |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
90 |
1069
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
91 @param form_ui: XMLUI instance |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
92 @param form: Wokkel's implementation of data form |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
93 @return: completed xml_ui |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
94 """ |
102 | 95 if form.instructions: |
105 | 96 form_ui.addText('\n'.join(form.instructions), 'instructions') |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
97 |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
98 form_ui.changeContainer("pairs") |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
99 |
102 | 100 for field in form.fieldList: |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
101 widget_type, widget_args, widget_kwargs = _dataFormField2XMLUIData(field, read_only) |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
102 label = field.label or field.var |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
103 if label: |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
104 form_ui.addLabel(label) |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
105 else: |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
106 form_ui.addEmpty() |
103 | 107 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
108 form_ui.addWidget(widget_type, *widget_args, **widget_kwargs) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
109 |
761
2f8d72226bc0
core (xml_tools): dataForm*2XML renamed to dataForm*2XMLUI and now return XMLUI instead of raw XML + submit_id is managed, and session_id is returned if present
Goffi <goffi@goffi.org>
parents:
760
diff
changeset
|
110 return form_ui |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
111 |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
112 def dataForm2XMLUI(form, submit_id, session_id=None, read_only=False): |
1069
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
113 """Take a data form (xep-0004, Wokkel's implementation) and convert it to a SàT XML |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
114 |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
115 @param submit_id: callback id to call when submitting form |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
116 @param session_id: id to return with the data |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
117 """ |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
118 form_ui = XMLUI("form", "vertical", submit_id=submit_id, session_id=session_id) |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
119 return dataForm2Widgets(form_ui, form, read_only=read_only) |
1069
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
120 |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
121 def dataFormResult2AdvancedList(xmlui, form_xml): |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
122 """Take a raw data form (not parsed by XEP-0004) and convert it to an advanced list |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
123 raw data form is used because Wokkel doesn't manage result items parsing yet |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
124 @param xmlui: the XMLUI where the AdvancedList will be added |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
125 @param form_xml: domish.Element of the data form |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
126 @return: AdvancedList element |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
127 """ |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
128 headers = {} |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
129 try: |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
130 reported_elt = form_xml.elements('jabber:x:data', 'reported').next() |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
131 except StopIteration: |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
132 raise exceptions.DataError("Couldn't find expected <reported> tag") |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
133 |
660
69a8bfd266a5
core, plugins: fixed bad use of children instead of elements() for domish.Element instances.
Goffi <goffi@goffi.org>
parents:
655
diff
changeset
|
134 for elt in reported_elt.elements(): |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
135 if elt.name != "field": |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
136 raise exceptions.DataError("Unexpected tag") |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
137 name = elt["var"] |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
138 label = elt.attributes.get('label','') |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
139 type_ = elt.attributes.get('type') |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
140 headers[name] = (label, type_) |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
141 |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
142 if not headers: |
684
969562c4761b
core (tools): small fix in using imported methods
souliane <souliane@mailoo.org>
parents:
660
diff
changeset
|
143 raise exceptions.DataError("No reported fields (see XEP-0004 §3.4)") |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
144 |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
145 adv_list = AdvancedListContainer(xmlui, headers=headers, columns=len(headers), parent=xmlui.current_container) |
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
146 xmlui.changeContainer(adv_list) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
147 |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
148 item_elts = form_xml.elements('jabber:x:data', 'item') |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
149 |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
150 for item_elt in item_elts: |
660
69a8bfd266a5
core, plugins: fixed bad use of children instead of elements() for domish.Element instances.
Goffi <goffi@goffi.org>
parents:
655
diff
changeset
|
151 for elt in item_elt.elements(): |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
152 if elt.name != 'field': |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
981
diff
changeset
|
153 log.warning("Unexpected tag (%s)" % elt.name) |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
154 continue |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
155 field = data_form.Field.fromElement(elt) |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
156 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
157 widget_type, widget_args, widget_kwargs = _dataFormField2XMLUIData(field) |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
158 xmlui.addWidget(widget_type, *widget_args, **widget_kwargs) |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
159 |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
160 return xmlui |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
161 |
1069
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
162 def dataFormResult2XMLUI(form_elt, session_id=None): |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
163 """Take a raw data form (not parsed by XEP-0004) and convert it to a SàT XMLUI |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
164 raw data form is used because Wokkel doesn't manage result items parsing yet |
1069
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
165 @param form_elt: domish.Element of the data form |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
166 @return: XMLUI interface |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
167 """ |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
168 |
1069
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
169 xml_ui = XMLUI("window", "vertical", session_id=session_id) |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
170 try: |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
171 dataFormResult2AdvancedList(xml_ui, form_elt) |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
172 except exceptions.DataError: |
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
173 parsed_form = data_form.Form.fromElement(form_elt) |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
174 dataForm2Widgets(xml_ui, parsed_form, read_only=True) |
1069
8e1f30aa3975
core (XMLUI): data form result now manage generic data set
Goffi <goffi@goffi.org>
parents:
1067
diff
changeset
|
175 return xml_ui |
590
56531f9e9ac7
Fix pep8 support in src/tools.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
176 |
981
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
177 def _cleanValue(value): |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
178 """Workaround method to avoid DBus types with D-Bus bridge |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
179 |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
180 @param value: value to clean |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
181 @return: value in a non DBus type (only clean string yet) |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
182 """ |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
183 # XXX: must be removed when DBus types will no cause problems anymore |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
184 # FIXME: should be cleaned inside D-Bus bridge itself |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
185 if isinstance(value, basestring): |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
186 return unicode(value) |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
187 return value |
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
188 |
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:
761
diff
changeset
|
189 def XMLUIResult2DataFormResult(xmlui_data): |
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:
761
diff
changeset
|
190 """ Extract form data from a XMLUI return |
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:
761
diff
changeset
|
191 @xmlui_data: data returned by frontends for XMLUI form |
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:
761
diff
changeset
|
192 @return: dict of data usable by Wokkel's dataform |
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:
761
diff
changeset
|
193 """ |
981
58a57ce5932a
core (XMLUI): _cleanValue method to avoid issues with DBus types (must be deleted in the future)
Goffi <goffi@goffi.org>
parents:
977
diff
changeset
|
194 return {key[len(SAT_FORM_PREFIX):]: _cleanValue(value) for key, value in xmlui_data.iteritems() if key.startswith(SAT_FORM_PREFIX)} |
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:
761
diff
changeset
|
195 |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
196 def formEscape(name): |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
197 """ Return escaped name for forms """ |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
198 return u"%s%s" % (SAT_FORM_PREFIX, name) |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
199 |
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:
761
diff
changeset
|
200 def XMLUIResultToElt(xmlui_data): |
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:
761
diff
changeset
|
201 """ Construct result domish.Element from XMLUI result |
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:
761
diff
changeset
|
202 @xmlui_data: data returned by frontends for XMLUI form |
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:
761
diff
changeset
|
203 """ |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
204 form = data_form.Form('submit') |
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:
761
diff
changeset
|
205 form.makeFields(XMLUIResult2DataFormResult(xmlui_data)) |
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:
761
diff
changeset
|
206 return form.toElement() |
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:
761
diff
changeset
|
207 |
102 | 208 def tupleList2dataForm(values): |
209 """convert a list of tuples (name,value) to a wokkel submit data form""" | |
210 form = data_form.Form('submit') | |
211 for value in values: | |
212 field = data_form.Field(var=value[0], value=value[1]) | |
213 form.addField(field) | |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
35
diff
changeset
|
214 |
102 | 215 return form |
103 | 216 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
217 def paramsXML2XMLUI(xml): |
105 | 218 """Convert the xml for parameter to a SàT XML User Interface""" |
214 | 219 params_doc = minidom.parseString(xml.encode('utf-8')) |
105 | 220 top = params_doc.documentElement |
221 if top.nodeName != 'params': | |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
222 raise exceptions.DataError(_('INTERNAL ERROR: parameters xml not valid')) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
223 |
105 | 224 param_ui = XMLUI("param", "tabs") |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
225 tabs_cont = param_ui.current_container |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
226 |
105 | 227 for category in top.getElementsByTagName("category"): |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
228 category_name = category.getAttribute('name') |
183
9ee4a1d0d7fb
Added auto(dis)connect params + misc
Goffi <goffi@goffi.org>
parents:
160
diff
changeset
|
229 label = category.getAttribute('label') |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
230 if not category_name: |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
231 raise exceptions.DataError(_('INTERNAL ERROR: params categories must have a name')) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
232 tabs_cont.addTab(category_name, label=label, container=PairsContainer) |
105 | 233 for param in category.getElementsByTagName("param"): |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
234 widget_kwargs = {} |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
235 |
796
46aa5ada61bf
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
236 param_name = param.getAttribute('name') |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
237 param_label = param.getAttribute('label') |
865
3ee2ec7ec010
core (xmlui), frontends: handling of "text" type in params xml + bug fixes
Goffi <goffi@goffi.org>
parents:
863
diff
changeset
|
238 type_ = param.getAttribute('type') |
3ee2ec7ec010
core (xmlui), frontends: handling of "text" type in params xml + bug fixes
Goffi <goffi@goffi.org>
parents:
863
diff
changeset
|
239 if not param_name and type_ != 'text': |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
240 raise exceptions.DataError(_('INTERNAL ERROR: params must have a name')) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
241 |
105 | 242 value = param.getAttribute('value') or None |
106 | 243 callback_id = param.getAttribute('callback_id') or None |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
244 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
245 if type_ == 'list': |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
246 options, selected = _getParamListOptions(param) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
247 widget_kwargs['options'] = options |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
248 widget_kwargs['selected'] = selected |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
249 |
865
3ee2ec7ec010
core (xmlui), frontends: handling of "text" type in params xml + bug fixes
Goffi <goffi@goffi.org>
parents:
863
diff
changeset
|
250 if type_ in ("button", "text"): |
106 | 251 param_ui.addEmpty() |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
252 value = param_label |
106 | 253 else: |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
254 param_ui.addLabel(param_label or param_name) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
255 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
256 if value: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
257 widget_kwargs["value"] = value |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
258 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
259 if callback_id: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
260 widget_kwargs['callback_id'] = callback_id |
1036
35048cafb18d
tools (xmlui): to click a button in a "param" form will automatically submit the parameters of the same category
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
261 others = ["%s%s%s" % (category_name, SAT_PARAM_SEPARATOR, other.getAttribute('name')) |
35048cafb18d
tools (xmlui): to click a button in a "param" form will automatically submit the parameters of the same category
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
262 for other in category.getElementsByTagName('param') |
35048cafb18d
tools (xmlui): to click a button in a "param" form will automatically submit the parameters of the same category
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
263 if other.getAttribute('type') != 'button'] |
35048cafb18d
tools (xmlui): to click a button in a "param" form will automatically submit the parameters of the same category
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
264 widget_kwargs['fields_back'] = others |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
265 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
266 widget_kwargs['name'] = "%s%s%s" % (category_name, SAT_PARAM_SEPARATOR, param_name) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
267 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
268 param_ui.addWidget(type_, **widget_kwargs) |
105 | 269 |
270 return param_ui.toXml() | |
271 | |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
272 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
273 def _getParamListOptions(param): |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
274 """Retrieve the options for list element. The <option/> tags |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
275 must be direct children of <param/>.""" |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
276 if len(param.getElementsByTagName("options")) > 0: |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
277 raise exceptions.DataError(_("The 'options' tag is not allowed in parameter of type 'list'!")) |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
278 elems = param.getElementsByTagName("option") |
655
56f8a9c99194
core, primitivus: better support for parameter of type list
souliane <souliane@mailoo.org>
parents:
645
diff
changeset
|
279 if len(elems) == 0: |
56f8a9c99194
core, primitivus: better support for parameter of type list
souliane <souliane@mailoo.org>
parents:
645
diff
changeset
|
280 return [] |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
281 options = [elem.getAttribute("value") for elem in elems] |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
282 selected = [elem.getAttribute("value") for elem in elems if elem.getAttribute("selected") == 'true'] |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
283 return (options, selected) |
655
56f8a9c99194
core, primitivus: better support for parameter of type list
souliane <souliane@mailoo.org>
parents:
645
diff
changeset
|
284 |
56f8a9c99194
core, primitivus: better support for parameter of type list
souliane <souliane@mailoo.org>
parents:
645
diff
changeset
|
285 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
286 ## XMLUI Elements |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
287 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
288 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
289 class Element(object): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
290 """ Base XMLUI element """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
291 type = None |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
292 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
293 def __init__(self, xmlui, parent=None): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
294 """Create a container element |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
295 @param xmlui: XMLUI instance |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
296 @parent: parent element |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
297 """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
298 assert(self.type) is not None |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
299 if not hasattr(self, 'elem'): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
300 self.elem = parent.xmlui.doc.createElement(self.type) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
301 self.xmlui = xmlui |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
302 if parent is not None: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
303 parent.append(self) |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
304 self.parent = parent |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
305 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
306 def append(self, child): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
307 self.elem.appendChild(child.elem) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
308 child.parent = self |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
309 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
310 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
311 class TopElement(Element): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
312 """ Main XML Element """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
313 type = 'top' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
314 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
315 def __init__(self, xmlui): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
316 self.elem = xmlui.doc.documentElement |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
317 super(TopElement, self).__init__(xmlui) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
318 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
319 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
320 class TabElement(Element): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
321 """ Used by TabsContainer to give name and label to tabs """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
322 type = 'tab' |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
323 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
324 def __init__(self, parent, name, label): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
325 if not isinstance(parent, TabsContainer): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
326 raise exceptions.DataError(_("TabElement must be a child of TabsContainer")) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
327 super(TabElement, self).__init__(parent.xmlui, parent) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
328 self.elem.setAttribute('name', name) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
329 self.elem.setAttribute('label', label) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
330 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
331 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
332 class FieldBackElement(Element): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
333 """ Used by ButtonWidget to indicate which field have to be sent back """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
334 type = 'field_back' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
335 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
336 def __init__(self, parent, name): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
337 assert(isinstance(parent, ButtonWidget)) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
338 super(FieldBackElement, self).__init__(parent.xmlui, parent) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
339 self.elem.setAttribute('name', name) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
340 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
341 |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
342 class InternalFieldElement(Element): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
343 """ Used by internal callbacks to indicate which fields are manipulated """ |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
344 type = 'internal_field' |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
345 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
346 def __init__(self, parent, name): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
347 super(InternalFieldElement, self).__init__(parent.xmlui, parent) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
348 self.elem.setAttribute('name', name) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
349 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
350 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
351 class InternalDataElement(Element): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
352 """ Used by internal callbacks to retrieve extra data """ |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
353 type = 'internal_data' |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
354 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
355 def __init__(self, parent, children): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
356 super(InternalDataElement, self).__init__(parent.xmlui, parent) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
357 assert(isinstance(children, list)) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
358 for child in children: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
359 self.elem.childNodes.append(child) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
360 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
361 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
362 class OptionElement(Element): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
363 """" Used by ListWidget to specify options """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
364 type = 'option' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
365 |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
366 def __init__(self, parent, option, selected=False): |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
367 """ |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
368 |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
369 @param parent |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
370 @param option (string, tuple) |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
371 @param selected (boolean) |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
372 """ |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
373 assert(isinstance(parent, ListWidget)) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
374 super(OptionElement, self).__init__(parent.xmlui, parent) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
375 if isinstance(option, basestring): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
376 value, label = option, option |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
377 elif isinstance(option, tuple): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
378 value, label = option |
1067
f7f15d44fdfa
tools (xml_tools): dataForm2XMLUI handles the default value for "list-single" fields
souliane <souliane@mailoo.org>
parents:
1036
diff
changeset
|
379 else: |
f7f15d44fdfa
tools (xml_tools): dataForm2XMLUI handles the default value for "list-single" fields
souliane <souliane@mailoo.org>
parents:
1036
diff
changeset
|
380 raise NotImplementedError |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
381 self.elem.setAttribute('value', value) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
382 self.elem.setAttribute('label', label) |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
383 if selected: |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
384 self.elem.setAttribute('selected', 'true') |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
385 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
386 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
387 class RowElement(Element): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
388 """" Used by AdvancedListContainer """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
389 type = 'row' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
390 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
391 def __init__(self, parent): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
392 assert(isinstance(parent, AdvancedListContainer)) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
393 super(RowElement, self).__init__(parent.xmlui, parent) |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
394 if parent.next_row_idx is not None: |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
395 if parent.auto_index: |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
396 raise exceptions.DataError(_("Can't set row index if auto_index is True")) |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
397 self.elem.setAttribute('index', parent.next_row_idx) |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
398 parent.next_row_idx = None |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
399 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
400 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
401 class HeaderElement(Element): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
402 """" Used by AdvancedListContainer """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
403 type = 'header' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
404 |
876
65bf1bc70f6b
tools, plugin XEP-0077: small fixes
souliane <souliane@mailoo.org>
parents:
865
diff
changeset
|
405 def __init__(self, parent, name=None, label=None, description=None): |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
406 """ |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
407 @param parent: AdvancedListContainer instance |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
408 @param name: name of the container |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
409 @param label: label to be displayed in columns |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
410 @param description: long descriptive text |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
411 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
412 """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
413 assert(isinstance(parent, AdvancedListContainer)) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
414 super(HeaderElement, self).__init__(parent.xmlui, parent) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
415 if name: |
876
65bf1bc70f6b
tools, plugin XEP-0077: small fixes
souliane <souliane@mailoo.org>
parents:
865
diff
changeset
|
416 self.elem.setAttribute('name', name) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
417 if label: |
876
65bf1bc70f6b
tools, plugin XEP-0077: small fixes
souliane <souliane@mailoo.org>
parents:
865
diff
changeset
|
418 self.elem.setAttribute('label', label) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
419 if description: |
876
65bf1bc70f6b
tools, plugin XEP-0077: small fixes
souliane <souliane@mailoo.org>
parents:
865
diff
changeset
|
420 self.elem.setAttribute('description', description) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
421 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
422 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
423 class Container(Element): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
424 """ And Element which contains other ones and has a layout """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
425 type = None |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
426 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
427 def __init__(self, xmlui, parent=None): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
428 """Create a container element |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
429 @param xmlui: XMLUI instance |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
430 @parent: parent element or None |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
431 """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
432 self.elem = xmlui.doc.createElement('container') |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
433 super(Container, self).__init__(xmlui, parent) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
434 self.elem.setAttribute('type', self.type) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
435 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
436 def getParentContainer(self): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
437 """ Return first parent container |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
438 @return: parent container or None |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
439 |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
440 """ |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
441 current = self.parent |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
442 while(not isinstance(current, (Container)) and |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
443 current is not None): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
444 current = current.parent |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
445 return current |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
446 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
447 class VerticalContainer(Container): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
448 type = "vertical" |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
449 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
450 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
451 class HorizontalContainer(Container): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
452 type = "horizontal" |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
453 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
454 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
455 class PairsContainer(Container): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
456 type = "pairs" |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
457 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
458 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
459 class TabsContainer(Container): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
460 type = "tabs" |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
461 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
462 def addTab(self, name, label=None, container=VerticalContainer): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
463 """Add a tab""" |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
464 if not label: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
465 label = name |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
466 tab_elt = TabElement(self, name, label) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
467 new_container = container(self.xmlui, tab_elt) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
468 self.xmlui.changeContainer(new_container) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
469 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
470 def end(self): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
471 """ Called when we have finished tabs |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
472 change current container to first container parent |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
473 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
474 """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
475 parent_container = self.getParentContainer() |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
476 self.xmlui.changeContainer(parent_container) |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
477 |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
478 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
479 class AdvancedListContainer(Container): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
480 type = "advanced_list" |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
481 |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
482 def __init__(self, xmlui, callback_id=None, name=None, headers=None, items=None, columns=None, selectable = 'no', auto_index = False, parent=None): |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
483 """Create an advanced list |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
484 @param headers: optional headers informations |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
485 @param callback_id: id of the method to call when selection is done |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
486 @param items: list of widgets to add (just the first row) |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
487 @param columns: number of columns in this table, or None to autodetect |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
488 @param selectable: one of: |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
489 'no': nothing is done |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
490 'single': one row can be selected |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
491 @param auto_index: if True, indexes will be generated by frontends, starting from 0 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
492 @return: created element |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
493 """ |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
494 assert selectable in ('no', 'single') |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
495 if not items and columns is None: |
876
65bf1bc70f6b
tools, plugin XEP-0077: small fixes
souliane <souliane@mailoo.org>
parents:
865
diff
changeset
|
496 raise exceptions.DataError(_("either items or columns need do be filled")) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
497 if headers is None: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
498 headers = [] |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
499 if items is None: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
500 items = [] |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
501 super(AdvancedListContainer, self).__init__(xmlui, parent) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
502 if columns is None: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
503 columns = len(items[0]) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
504 self._columns = columns |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
505 self._item_idx = 0 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
506 self.current_row = None |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
507 if headers: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
508 if len(headers) != self._columns: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
509 raise exceptions.DataError(_("Headers lenght doesn't correspond to columns")) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
510 self.addHeaders(headers) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
511 if items: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
512 self.addItems(items) |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
513 self.elem.setAttribute('columns', str(self._columns)) |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
514 if callback_id is not None: |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
515 self.elem.setAttribute('callback', callback_id) |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
516 self.elem.setAttribute('selectable', selectable) |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
517 self.auto_index = auto_index |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
518 if auto_index: |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
519 self.elem.setAttribute('auto_index', 'true') |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
520 self.next_row_idx = None |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
521 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
522 def addHeaders(self, headers): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
523 for header in headers: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
524 self.addHeader(header) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
525 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
526 def addHeader(self, header): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
527 pass # TODO |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
528 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
529 def addItems(self, items): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
530 for item in items: |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
531 self.append(item) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
532 |
805
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
533 def setRowIndex(self, idx): |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
534 """ Set index for next row |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
535 index are returned when a row is selected, in data's "index" key |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
536 @param idx: string index to associate to the next row |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
537 |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
538 """ |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
539 self.next_row_idx = idx |
7c05c39156a2
core (XMLUI), frontends: advancedListContainer part 2:
Goffi <goffi@goffi.org>
parents:
804
diff
changeset
|
540 |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
541 def append(self, child): |
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
542 if isinstance(child, RowElement): |
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
543 return super(AdvancedListContainer, self).append(child) |
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
544 if self._item_idx % self._columns == 0: |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
545 self.current_row = RowElement(self) |
803
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
546 self.current_row.append(child) |
f100fd8d279f
core, frontends: implementation of AdvancedListContainer first draft + misc:
Goffi <goffi@goffi.org>
parents:
802
diff
changeset
|
547 self._item_idx += 1 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
548 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
549 def end(self): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
550 """ Called when we have finished list |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
551 change current container to first container parent |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
552 |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
553 """ |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
554 if self._item_idx % self._columns != 0: |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
555 raise exceptions.DataError(_("Incorrect number of items in list")) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
556 parent_container = self.getParentContainer() |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
557 self.xmlui.changeContainer(parent_container) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
558 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
559 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
560 class Widget(Element): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
561 type = None |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
562 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
563 def __init__(self, xmlui, name=None, parent=None): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
564 """Create an element |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
565 @param xmlui: XMLUI instance |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
566 @param name: name of the element or None |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
567 @param parent: parent element or None |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
568 """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
569 self.elem = xmlui.doc.createElement('widget') |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
570 super(Widget, self).__init__(xmlui, parent) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
571 if name: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
572 self.elem.setAttribute('name', name) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
573 self.elem.setAttribute('type', self.type) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
574 |
977
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
575 def setInternalCallback(self, callback, fields, data_elts=None): |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
576 """Set an internal UI callback when the widget value is changed. |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
577 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
578 The internal callbacks are NO callback ids, they are strings from |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
579 a predefined set of actions that are running in the scope of XMLUI. |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
580 |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
581 @param callback (string): a value from: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
582 - 'copy': process the widgets given in 'fields' two by two, by |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
583 copying the values of one widget to the other. Target widgets |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
584 of type List do not accept the empty value. |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
585 - 'move': same than copy but moves the values if the source widget |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
586 is not a List. |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
587 - 'groups_of_contact': process the widgets two by two, assume A is |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
588 is a list of JID and B a list of groups, select in B the groups |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
589 to which the JID selected in A belongs. |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
590 - more operation to be added when necessary... |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
591 @param fields (list): a list of widget names (string) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
592 @param data_elts (list[Element]): extra data elements |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
593 """ |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
594 self.elem.setAttribute('internal_callback', callback) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
595 if fields: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
596 for field in fields: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
597 InternalFieldElement(self, field) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
598 if data_elts: |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
599 InternalDataElement(self, data_elts) |
d2e612a45e76
tools, frontends (xmlui): add Widget.setInternalCallback:
souliane <souliane@mailoo.org>
parents:
975
diff
changeset
|
600 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
601 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
602 class EmptyWidget(Widget): |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
603 """Place holder widget""" |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
604 type = 'empty' |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
605 |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
606 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
607 class TextWidget(Widget): |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
608 """Used for blob of text""" |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
609 type = 'text' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
610 |
865
3ee2ec7ec010
core (xmlui), frontends: handling of "text" type in params xml + bug fixes
Goffi <goffi@goffi.org>
parents:
863
diff
changeset
|
611 def __init__(self, xmlui, value, name=None, parent=None): |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
612 super(TextWidget, self).__init__(xmlui, name, parent) |
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:
1084
diff
changeset
|
613 value_elt = self.xmlui.doc.createElement('value') |
865
3ee2ec7ec010
core (xmlui), frontends: handling of "text" type in params xml + bug fixes
Goffi <goffi@goffi.org>
parents:
863
diff
changeset
|
614 text = self.xmlui.doc.createTextNode(value) |
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:
1084
diff
changeset
|
615 value_elt.appendChild(text) |
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:
1084
diff
changeset
|
616 self.elem.appendChild(value_elt) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
617 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
618 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
619 class LabelWidget(Widget): |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
620 """Used for one line blob of text, |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
621 most of time to display the desciption or name of the next widget |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
622 """ |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
623 type='label' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
624 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
625 def __init__(self, xmlui, label, name=None, parent=None): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
626 super(LabelWidget, self).__init__(xmlui, name, parent) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
627 self.elem.setAttribute('value', label) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
628 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
629 |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
630 class JidWidget(Widget): |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
631 """Used to display a Jabber ID, some specific methods can be added""" |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
632 type='jid' |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
633 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
634 def __init__(self, xmlui, jid, name=None, parent=None): |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
635 super(JidWidget, self).__init__(xmlui, name, parent) |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
636 try: |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
637 self.elem.setAttribute('value', jid.full()) |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
638 except AttributeError: |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
639 self.elem.setAttribute('value', unicode(jid)) |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
640 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
641 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
642 class DividerWidget(Widget): |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
643 type = 'divider' |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
644 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
645 def __init__(self, xmlui, style='line', name=None, parent=None): |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
646 """ Create a divider |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
647 @param xmlui: XMLUI instance |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
648 @param style: one of: |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
649 - line: a simple line |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
650 - dot: a line of dots |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
651 - dash: a line of dashes |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
652 - plain: a full thick line |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
653 - blank: a blank line/space |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
654 @param name: name of the widget |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
655 @param parent: parent container |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
656 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
657 """ |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
658 super(DividerWidget, self).__init__(xmlui, name, parent) |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
659 self.elem.setAttribute('style', style) |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
660 |
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
661 |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
662 ### Inputs ### |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
663 |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
664 |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
665 class InputWidget(Widget): |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
666 """Input widget are widget which can accept user inputs, |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
667 used mainly in forms |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
668 """ |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
669 def __init__(self, xmlui, name=None, parent=None, read_only=False): |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
670 super(InputWidget, self).__init__(xmlui, name, parent) |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
671 if read_only: |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
672 self.elem.setAttribute('read_only', 'true') |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
673 |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
674 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
675 class StringWidget(InputWidget): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
676 type = 'string' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
677 |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
678 def __init__(self, xmlui, value=None, name=None, parent=None, read_only=False): |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
679 super(StringWidget, self).__init__(xmlui, name, parent, read_only=read_only) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
680 if value: |
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:
1084
diff
changeset
|
681 value_elt = self.xmlui.doc.createElement('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:
1084
diff
changeset
|
682 text = self.xmlui.doc.createTextNode(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:
1084
diff
changeset
|
683 value_elt.appendChild(text) |
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:
1084
diff
changeset
|
684 self.elem.appendChild(value_elt) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
685 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
686 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
687 class PasswordWidget(StringWidget): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
688 type = 'password' |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
689 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
690 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
691 class TextBoxWidget(StringWidget): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
692 type = 'textbox' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
693 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
694 |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
695 class JidInputWidget(StringWidget): |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
696 type = 'jid_input' |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
697 |
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
698 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
699 class BoolWidget(InputWidget): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
700 type = 'bool' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
701 |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
702 def __init__(self, xmlui, value='false', name=None, parent=None, read_only=False): |
910
9754c0ebadba
core (XMLUI): BoolWidget now accept real boolean for value
Goffi <goffi@goffi.org>
parents:
905
diff
changeset
|
703 if isinstance(value, bool): |
9754c0ebadba
core (XMLUI): BoolWidget now accept real boolean for value
Goffi <goffi@goffi.org>
parents:
905
diff
changeset
|
704 value = 'true' if value else 'false' |
9754c0ebadba
core (XMLUI): BoolWidget now accept real boolean for value
Goffi <goffi@goffi.org>
parents:
905
diff
changeset
|
705 elif value == '0': |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
706 value='false' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
707 elif value == '1': |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
708 value='true' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
709 if not value in ('true', 'false'): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
710 raise exceptions.DataError(_("Value must be 0, 1, false or true")) |
1084
03dcb6ca7e49
core (XMLUI): created a read_only attribute for InputWidget + new JidInputWidget
Goffi <goffi@goffi.org>
parents:
1078
diff
changeset
|
711 super(BoolWidget, self).__init__(xmlui, name, parent, read_only=read_only) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
712 self.elem.setAttribute('value', value) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
713 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
714 |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
715 class ButtonWidget(Widget): |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
716 type = 'button' |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
717 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
718 def __init__(self, xmlui, callback_id, value=None, fields_back=None, name=None, parent=None): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
719 """Add a button |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
720 @param callback_id: callback which will be called if button is pressed |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
721 @param value: label of the button |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
722 @fields_back: list of names of field to give back when pushing the button |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
723 @param name: name |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
724 @param parent: parent container |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
725 """ |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
726 if fields_back is None: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
727 fields_back = [] |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
728 super(ButtonWidget, self).__init__(xmlui, name, parent) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
729 self.elem.setAttribute('callback', callback_id) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
730 if value: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
731 self.elem.setAttribute('value', value) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
732 for field in fields_back: |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
733 FieldBackElement(self, field) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
734 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
735 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
736 class ListWidget(InputWidget): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
737 type = 'list' |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
738 |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
739 def __init__(self, xmlui, options, selected=None, style=None, name=None, parent=None): |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
740 """ |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
741 |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
742 @param xmlui |
1141
7fcafc3206b1
plugin OTR: authentication management + fixed a bug in setState (due to a wrong docstring in potr.context.getCurrentTrust)
Goffi <goffi@goffi.org>
parents:
1105
diff
changeset
|
743 @param options (list[option]): each option can be given as: |
7fcafc3206b1
plugin OTR: authentication management + fixed a bug in setState (due to a wrong docstring in potr.context.getCurrentTrust)
Goffi <goffi@goffi.org>
parents:
1105
diff
changeset
|
744 - a single string if the label and the value are the same |
7fcafc3206b1
plugin OTR: authentication management + fixed a bug in setState (due to a wrong docstring in potr.context.getCurrentTrust)
Goffi <goffi@goffi.org>
parents:
1105
diff
changeset
|
745 - a tuple with a couple of string (value,label) if the label and the value differ |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
746 @param selected (list[string]): list of the selected values |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
747 @param style (string) |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
748 @param name (string) |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
749 @param parent |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
750 """ |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
751 if style is None: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
752 style = set() |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
753 styles = set(style) |
820
462f2052af26
core(XMLUI): empty options in ListWidget now just show a warning message, no more assert
Goffi <goffi@goffi.org>
parents:
811
diff
changeset
|
754 if not options: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
981
diff
changeset
|
755 log.warning(_('empty "options" list')) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
756 if not styles.issubset(['multi']): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
757 raise exceptions.DataError(_("invalid styles")) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
758 super(ListWidget, self).__init__(xmlui, name, parent) |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
759 self.addOptions(options, selected) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
760 for style in styles: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
761 self.elem.setAttribute(style, 'yes') |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
762 |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
763 def addOptions(self, options, selected=None): |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
764 """Add options to a multi-values element (e.g. list) """ |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
765 if selected: |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
766 if isinstance(selected, basestring): |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
767 selected = [selected] |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
768 else: |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
910
diff
changeset
|
769 selected = [] |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
770 for option in options: |
1067
f7f15d44fdfa
tools (xml_tools): dataForm2XMLUI handles the default value for "list-single" fields
souliane <souliane@mailoo.org>
parents:
1036
diff
changeset
|
771 assert(isinstance(option, basestring) or isinstance(option, tuple)) |
f7f15d44fdfa
tools (xml_tools): dataForm2XMLUI handles the default value for "list-single" fields
souliane <souliane@mailoo.org>
parents:
1036
diff
changeset
|
772 value = option if isinstance(option, basestring) else option[0] |
f7f15d44fdfa
tools (xml_tools): dataForm2XMLUI handles the default value for "list-single" fields
souliane <souliane@mailoo.org>
parents:
1036
diff
changeset
|
773 OptionElement(self, option, value in selected) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
774 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
775 |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
776 ## Dialog Elements ## |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
777 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
778 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
779 class DialogElement(Element): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
780 """Main dialog element """ |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
781 type = 'dialog' |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
782 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
783 def __init__(self, parent, type_, level=None): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
784 if not isinstance(parent, TopElement): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
785 raise exceptions.DataError(_("DialogElement must be a direct child of TopElement")) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
786 super(DialogElement, self).__init__(parent.xmlui, parent) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
787 self.elem.setAttribute(C.XMLUI_DATA_TYPE, type_) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
788 self.elem.setAttribute(C.XMLUI_DATA_LVL, level or C.XMLUI_DATA_LVL_DEFAULT) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
789 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
790 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
791 class MessageElement(Element): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
792 """Element with the instruction message""" |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
793 type = C.XMLUI_DATA_MESS |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
794 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
795 def __init__(self, parent, message): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
796 if not isinstance(parent, DialogElement): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
797 raise exceptions.DataError(_("MessageElement must be a direct child of DialogElement")) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
798 super(MessageElement, self).__init__(parent.xmlui, parent) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
799 message_txt = self.xmlui.doc.createTextNode(message) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
800 self.elem.appendChild(message_txt) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
801 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
802 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
803 class ButtonsElement(Element): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
804 """Buttons element which indicate which set to use""" |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
805 type = 'buttons' |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
806 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
807 def __init__(self, parent, set_): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
808 if not isinstance(parent, DialogElement): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
809 raise exceptions.DataError(_("ButtonsElement must be a direct child of DialogElement")) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
810 super(ButtonsElement, self).__init__(parent.xmlui, parent) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
811 self.elem.setAttribute('set', set_) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
812 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
813 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
814 class FileElement(Element): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
815 """File element used for FileDialog""" |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
816 type = 'file' |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
817 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
818 def __init__(self, parent, type_): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
819 if not isinstance(parent, DialogElement): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
820 raise exceptions.DataError(_("FileElement must be a direct child of DialogElement")) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
821 super(FileElement, self).__init__(parent.xmlui, parent) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
822 self.elem.setAttribute('type', type_) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
823 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
824 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
825 ## XMLUI main class |
630
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
826 |
0b914394e74f
core: added advanced list to XMLUI (need improvment, very basic so far)
Goffi <goffi@goffi.org>
parents:
615
diff
changeset
|
827 |
588
beaf6bec2fcd
Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
828 class XMLUI(object): |
103 | 829 """This class is used to create a user interface (form/window/parameters/etc) using SàT XML""" |
830 | |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
831 def __init__(self, panel_type="window", container="vertical", dialog_opt=None, title=None, submit_id=None, session_id=None): |
103 | 832 """Init SàT XML Panel |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
833 |
103 | 834 @param panel_type: one of |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
835 - C.XMLUI_WINDOW (new window) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
836 - C.XMLUI_POPUP |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
837 - C.XMLUI_FORM (formulaire, depend of the frontend, usually a panel with cancel/submit buttons) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
838 - C.XMLUI_PARAM (parameters, presentation depend of the frontend) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
839 - C.XMLUI_DIALOG (one common dialog, presentation depend of frontend) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
840 @param container: disposition of elements, one of: |
107 | 841 - vertical: elements are disposed up to bottom |
842 - horizontal: elements are disposed left to right | |
843 - pairs: elements come on two aligned columns | |
103 | 844 (usually one for a label, the next for the element) |
107 | 845 - tabs: elemens are in categories with tabs (notebook) |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
846 @param dialog_opt: only used if panel_type == C.XMLUI_DIALOG. Dictionnary (string/string) where key can be: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
847 - C.XMLUI_DATA_TYPE: type of dialog, value can be: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
848 - C.XMLUI_DIALOG_MESSAGE (default): an information/error message. Action of user is necessary to close the dialog. Usually the frontend display a classic popup |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
849 - C.XMLUI_DIALOG_NOTE: like a C.XMLUI_DIALOG_MESSAGE, but action of user is not necessary to close, at frontend choice (it can be closed after a timeout). Usually the frontend display as a timed out notification |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
850 - C.XMLUI_DIALOG_CONFIRM: dialog with 2 choices (usualy "Ok"/"Cancel"). |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
851 returned data can contain: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
852 - "answer": "true" if answer is "ok", "yes" or equivalent, "false" else |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
853 - C.XLMUI_DIALOG_FILE: a file selection dialog |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
854 returned data can contain: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
855 - "cancelled": "true" if dialog has been cancelled, not present or "false" else |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
856 - "path": path of the choosed file/dir |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
857 - C.XMLUI_DATA_MESS: message shown in dialog |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
858 - C.XMLUI_DATA_LVL: one of: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
859 - C.XMLUI_DATA_LVL_INFO (default): normal message |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
860 - C.XMLUI_DATA_LVL_WARNING: attention of user is important |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
861 - C.XMLUI_DATA_LVL_ERROR: something went wrong |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
862 - C.XMLUI_DATA_BTNS_SET: one of: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
863 - C.XMLUI_DATA_BTNS_SET_OKCANCEL (default): classical "OK" and "Cancel" set |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
864 - C.XMLUI_DATA_BTNS_SET_YESNO: a translated "yes" for OK, and "no" for Cancel |
107 | 865 @param title: title or default if None |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
866 @param submit_id: callback id to call for panel_type we can submit (form, param, dialog) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
867 @param session_id: use to keep a session attached to the dialog, must be returned by frontends |
103 | 868 """ |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
869 self._introspect() |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
870 if panel_type not in [C.XMLUI_WINDOW, C.XMLUI_FORM, C.XMLUI_PARAM, C.XMLUI_POPUP, C.XMLUI_DIALOG]: |
760
73a0077f80cc
backend, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
759
diff
changeset
|
871 raise exceptions.DataError(_("Unknown panel type [%s]") % panel_type) |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
872 if panel_type == C.XMLUI_FORM and submit_id is None: |
760
73a0077f80cc
backend, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
759
diff
changeset
|
873 raise exceptions.DataError(_("form XMLUI need a submit_id")) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
874 if not isinstance(container, basestring): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
875 raise exceptions.DataError(_("container argument must be a string")) |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
876 if dialog_opt is not None and panel_type != C.XMLUI_DIALOG: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
877 raise exceptions.DataError(_("dialog_opt can only be used with dialog panels")) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
878 self.type = panel_type |
103 | 879 impl = minidom.getDOMImplementation() |
880 | |
881 self.doc = impl.createDocument(None, "sat_xmlui", None) | |
882 top_element = self.doc.documentElement | |
883 top_element.setAttribute("type", panel_type) | |
107 | 884 if title: |
885 top_element.setAttribute("title", title) | |
798
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
886 self.submit_id = submit_id |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
887 self.session_id = session_id |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
888 if panel_type == C.XMLUI_DIALOG: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
889 if dialog_opt is None: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
890 dialog_opt = {} |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
891 self._createDialog(dialog_opt) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
892 return |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
893 self.main_container = self._createContainer(container, TopElement(self)) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
894 self.current_container = self.main_container |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
895 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
896 def _introspect(self): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
897 """ Introspect module to find Widgets and Containers """ |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
898 self._containers = {} |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
899 self._widgets = {} |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
900 for obj in globals().values(): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
901 try: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
902 if issubclass(obj, Widget): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
903 if obj.__name__ == 'Widget': |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
904 continue |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
905 self._widgets[obj.type] = obj |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
906 elif issubclass(obj, Container): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
907 if obj.__name__ == 'Container': |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
908 continue |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
909 self._containers[obj.type] = obj |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
910 except TypeError: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
911 pass |
103 | 912 |
913 def __del__(self): | |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
914 self.doc.unlink() |
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
915 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
916 def __getattr__(self, name): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
917 if name.startswith("add") and name not in ('addWidget',): # addWidgetName(...) create an instance of WidgetName |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
918 if self.type == C.XMLUI_DIALOG: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
919 raise exceptions.InternalError(_("addXXX can't be used with dialogs")) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
920 class_name = name[3:]+"Widget" |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
921 if class_name in globals(): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
922 cls = globals()[class_name] |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
923 if issubclass(cls, Widget): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
924 def createWidget(*args, **kwargs): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
925 if "parent" not in kwargs: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
926 kwargs["parent"] = self.current_container |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
927 if "name" not in kwargs and issubclass(cls, InputWidget): # name can be given as first argument or in keyword arguments for InputWidgets |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
928 args = list(args) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
929 kwargs["name"] = args.pop(0) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
930 return cls(self, *args, **kwargs) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
931 return createWidget |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
932 return object.__getattribute__(self, name) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
933 |
798
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
934 @property |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
935 def submit_id(self): |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
936 top_element = self.doc.documentElement |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
937 value = top_element.getAttribute("submit") |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
938 return value or None |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
939 |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
940 @submit_id.setter |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
941 def submit_id(self, value): |
760
73a0077f80cc
backend, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
759
diff
changeset
|
942 top_element = self.doc.documentElement |
798
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
943 if value is None: |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
944 try: |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
945 top_element.removeAttribute("submit") |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
946 except NotFoundErr: |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
947 pass |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
948 elif value: # submit_id can be the empty string to bypass form restriction |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
949 top_element.setAttribute("submit", value) |
760
73a0077f80cc
backend, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
759
diff
changeset
|
950 |
798
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
951 @property |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
952 def session_id(self): |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
953 top_element = self.doc.documentElement |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
954 value = top_element.getAttribute("session_id") |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
955 return value or None |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
956 |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
957 @session_id.setter |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
958 def session_id(self, value): |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
959 top_element = self.doc.documentElement |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
960 if value is None: |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
961 try: |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
962 top_element.removeAttribute("session_id") |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
963 except NotFoundErr: |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
964 pass |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
965 elif value: |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
966 top_element.setAttribute("session_id", value) |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
967 else: |
8f5479f8709a
core: XMLUI now use @property for session_id and submit
Goffi <goffi@goffi.org>
parents:
796
diff
changeset
|
968 raise exceptions.DataError("session_id can't be empty") |
760
73a0077f80cc
backend, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
759
diff
changeset
|
969 |
1105
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
970 def _createDialog(self, dialog_opt): |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
971 dialog_type = dialog_opt.setdefault(C.XMLUI_DATA_TYPE, C.XMLUI_DIALOG_MESSAGE) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
972 if dialog_type in [C.XMLUI_DIALOG_CONFIRM, C.XMLUI_DIALOG_FILE] and self.submit_id is None: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
973 raise exceptions.InternalError(_("Submit ID must be filled for this kind of dialog")) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
974 top_element = TopElement(self) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
975 level = dialog_opt.get(C.XMLUI_DATA_LVL) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
976 dialog_elt = DialogElement(top_element, dialog_type, level) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
977 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
978 try: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
979 MessageElement(dialog_elt, dialog_opt[C.XMLUI_DATA_MESS]) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
980 except KeyError: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
981 pass |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
982 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
983 try: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
984 ButtonsElement(dialog_elt, dialog_opt[C.XMLUI_DATA_BTNS_SET]) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
985 except KeyError: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
986 pass |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
987 |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
988 try: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
989 FileElement(dialog_elt, dialog_opt[C.XMLUI_DATA_FILETYPE]) |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
990 except KeyError: |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
991 pass |
018bdd687747
core (XMLUI): Dialogs are now managemed in XMLUI:
Goffi <goffi@goffi.org>
parents:
1086
diff
changeset
|
992 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
993 def _createContainer(self, container, parent=None, **kwargs): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
994 """Create a container element |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
995 @param type: container type (cf init doc) |
103 | 996 @parent: parent element or None |
997 """ | |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
998 if container not in self._containers: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
999 raise exceptions.DataError(_("Unknown container type [%s]") % container) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1000 cls = self._containers[container] |
804
5174657b3378
XMLUI (core, frontends): added JidWidget and DividerWidget + popup type + some bugfixes:
Goffi <goffi@goffi.org>
parents:
803
diff
changeset
|
1001 new_container = cls(self, parent=parent, **kwargs) |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1002 return new_container |
105 | 1003 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1004 def changeContainer(self, container, **kwargs): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1005 """Change the current container |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1006 @param container: either container type (container it then created), |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1007 or an Container instance""" |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1008 if isinstance(container, basestring): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1009 self.current_container = self._createContainer(container, self.current_container.getParentContainer() or self.main_container, **kwargs) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1010 else: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1011 self.current_container = self.main_container if container is None else container |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1012 assert(isinstance(self.current_container, Container)) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1013 return self.current_container |
103 | 1014 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1015 def addWidget(self, type_, *args, **kwargs): |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1016 """Convenience method to add an element""" |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1017 if type_ not in self._widgets: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1018 raise exceptions.DataError(_("Invalid type [%s]") % type_) |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1019 if "parent" not in kwargs: |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1020 kwargs["parent"] = self.current_container |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1021 cls = self._widgets[type_] |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1022 return cls(self, *args, **kwargs) |
104 | 1023 |
103 | 1024 def toXml(self): |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
1025 """return the XML representation of the panel""" |
103 | 1026 return self.doc.toxml() |
289
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1027 |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1028 |
1142
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1029 # Some sugar for XMLUI dialogs |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1030 |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1031 def note(message, title='', level=C.XMLUI_DATA_LVL_INFO): |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1032 """Sugar to easily create a Note Dialog |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1033 |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1034 @param message: body of the note |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1035 @param title: title of the note |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1036 @param level: one of C.XMLUI_DATA_LVL_* |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1037 """ |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1038 note_xmlui = XMLUI(C.XMLUI_DIALOG, dialog_opt = { |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1039 C.XMLUI_DATA_TYPE: C.XMLUI_DIALOG_NOTE, |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1040 C.XMLUI_DATA_MESS: message, |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1041 C.XMLUI_DATA_LVL: level}, |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1042 title=title |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1043 ) |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1044 return note_xmlui |
2f9f735334da
core (XMLUI): sugar method "note" allow to easily create a XMLUI note dialog (more methods for other dialogs should follow)
Goffi <goffi@goffi.org>
parents:
1141
diff
changeset
|
1045 |
802
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1046 # Misc other funtions |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1047 |
9007bb133009
core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents:
800
diff
changeset
|
1048 |
289
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1049 class ElementParser(object): |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1050 """callable class to parse XML string into Element |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1051 Found at http://stackoverflow.com/questions/2093400/how-to-create-twisted-words-xish-domish-element-entirely-from-raw-xml/2095942#2095942 |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1052 (c) Karl Anderson""" |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1053 |
905
cad8e52bb2e6
tools: xml_tools.ElementParser do not replace '\n' and '\t' with ' ' by default
souliane <souliane@mailoo.org>
parents:
876
diff
changeset
|
1054 def __call__(self, string, force_spaces=False): |
cad8e52bb2e6
tools: xml_tools.ElementParser do not replace '\n' and '\t' with ' ' by default
souliane <souliane@mailoo.org>
parents:
876
diff
changeset
|
1055 """ |
cad8e52bb2e6
tools: xml_tools.ElementParser do not replace '\n' and '\t' with ' ' by default
souliane <souliane@mailoo.org>
parents:
876
diff
changeset
|
1056 @param string: the XML string |
cad8e52bb2e6
tools: xml_tools.ElementParser do not replace '\n' and '\t' with ' ' by default
souliane <souliane@mailoo.org>
parents:
876
diff
changeset
|
1057 @param force_spaces: if True, replace occurrences of 'n' and '\t' with ' '. |
cad8e52bb2e6
tools: xml_tools.ElementParser do not replace '\n' and '\t' with ' ' by default
souliane <souliane@mailoo.org>
parents:
876
diff
changeset
|
1058 """ |
289
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1059 self.result = None |
590
56531f9e9ac7
Fix pep8 support in src/tools.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
1060 |
56531f9e9ac7
Fix pep8 support in src/tools.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
1061 def onStart(elem): |
56531f9e9ac7
Fix pep8 support in src/tools.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
1062 self.result = elem |
56531f9e9ac7
Fix pep8 support in src/tools.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
1063 |
289
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1064 def onEnd(): |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1065 pass |
590
56531f9e9ac7
Fix pep8 support in src/tools.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
1066 |
56531f9e9ac7
Fix pep8 support in src/tools.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
1067 def onElement(elem): |
56531f9e9ac7
Fix pep8 support in src/tools.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
1068 self.result.addChild(elem) |
289
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1069 |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1070 parser = domish.elementStream() |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1071 parser.DocumentStartEvent = onStart |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1072 parser.ElementEvent = onElement |
0e54b1b0a8c8
xml_tools: added ElementParser for raw xml -> domish.Element conversion
Goffi <goffi@goffi.org>
parents:
228
diff
changeset
|
1073 parser.DocumentEndEvent = onEnd |
536
a31abb97310d
core, plugins: fixed bad namespace in stanza creation
Goffi <goffi@goffi.org>
parents:
480
diff
changeset
|
1074 tmp = domish.Element((None, "s")) |
905
cad8e52bb2e6
tools: xml_tools.ElementParser do not replace '\n' and '\t' with ' ' by default
souliane <souliane@mailoo.org>
parents:
876
diff
changeset
|
1075 if force_spaces: |
cad8e52bb2e6
tools: xml_tools.ElementParser do not replace '\n' and '\t' with ' ' by default
souliane <souliane@mailoo.org>
parents:
876
diff
changeset
|
1076 string = string.replace('\n', ' ').replace('\t', ' ') |
cad8e52bb2e6
tools: xml_tools.ElementParser do not replace '\n' and '\t' with ' ' by default
souliane <souliane@mailoo.org>
parents:
876
diff
changeset
|
1077 tmp.addRawXml(string) |
304 | 1078 parser.parse(tmp.toXml().encode('utf-8')) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
1079 return self.result.firstChildElement() |