Mercurial > libervia-web
comparison browser_side/xmlui.py @ 429:9283f9e5e5dd
browser_side (xmlui): added setter methods + manage multi-selection for list widgets
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 01 Apr 2014 11:00:28 +0200 |
parents | 0c4547587637 |
children | a927a98b398d |
comparison
equal
deleted
inserted
replaced
428:0c4547587637 | 429:9283f9e5e5dd |
---|---|
81 | 81 |
82 def __init__(self, parent, value): | 82 def __init__(self, parent, value): |
83 TextBox.__init__(self) | 83 TextBox.__init__(self) |
84 self.setText(value) | 84 self.setText(value) |
85 | 85 |
86 def _xmluiSetValue(self, value): | |
87 self.setText(value) | |
88 | |
86 def _xmluiGetValue(self): | 89 def _xmluiGetValue(self): |
87 return self.getText() | 90 return self.getText() |
88 | 91 |
89 def _xmluiOnChange(self, callback): | 92 def _xmluiOnChange(self, callback): |
90 self.addChangeListener(callback) | 93 self.addChangeListener(callback) |
94 | 97 |
95 def __init__(self, parent, value): | 98 def __init__(self, parent, value): |
96 PasswordTextBox.__init__(self) | 99 PasswordTextBox.__init__(self) |
97 self.setText(value) | 100 self.setText(value) |
98 | 101 |
102 def _xmluiSetValue(self, value): | |
103 self.setText(value) | |
104 | |
99 def _xmluiGetValue(self): | 105 def _xmluiGetValue(self): |
100 return self.getText() | 106 return self.getText() |
101 | 107 |
102 def _xmluiOnChange(self, callback): | 108 def _xmluiOnChange(self, callback): |
103 self.addChangeListener(callback) | 109 self.addChangeListener(callback) |
105 | 111 |
106 class TextBoxWidget(xmlui.TextBoxWidget, TextArea): | 112 class TextBoxWidget(xmlui.TextBoxWidget, TextArea): |
107 | 113 |
108 def __init__(self, parent, value): | 114 def __init__(self, parent, value): |
109 TextArea.__init__(self) | 115 TextArea.__init__(self) |
116 self.setText(value) | |
117 | |
118 def _xmluiSetValue(self, value): | |
110 self.setText(value) | 119 self.setText(value) |
111 | 120 |
112 def _xmluiGetValue(self): | 121 def _xmluiGetValue(self): |
113 return self.getText() | 122 return self.getText() |
114 | 123 |
120 | 129 |
121 def __init__(self, parent, state): | 130 def __init__(self, parent, state): |
122 CheckBox.__init__(self) | 131 CheckBox.__init__(self) |
123 self.setChecked(state) | 132 self.setChecked(state) |
124 | 133 |
134 def _xmluiSetValue(self, value): | |
135 self.setChecked(value == "true") | |
136 | |
125 def _xmluiGetValue(self): | 137 def _xmluiGetValue(self): |
126 return "true" if self.isChecked() else "false" | 138 return "true" if self.isChecked() else "false" |
127 | 139 |
128 def _xmluiOnChange(self, callback): | 140 def _xmluiOnChange(self, callback): |
129 self.addClickListener(callback) | 141 self.addClickListener(callback) |
130 | 142 |
131 | 143 |
132 class ButtonWidget(xmlui.ButtonWidget, Button): | 144 class ButtonWidget(xmlui.ButtonWidget, Button): |
133 | 145 |
134 def __init__(self, parent, value, click_callback): | 146 def __init__(self, parent, value, click_callback): |
135 Button.__init__(self, value) | 147 Button.__init__(self, value, click_callback) |
136 | 148 |
137 def _xmluiOnClick(self, callback): | 149 def _xmluiOnClick(self, callback): |
138 self.addClickListener(callback) | 150 self.addClickListener(callback) |
139 | 151 |
140 | 152 |
141 class ListWidget(xmlui.ListWidget, ListBox): | 153 class ListWidget(xmlui.ListWidget, ListBox): |
142 | 154 |
143 def __init__(self, parent, options, flags): | 155 def __init__(self, parent, options, selected, flags): |
144 ListBox.__init__(self) | 156 ListBox.__init__(self) |
145 self.setMultipleSelect('single' not in flags) | 157 self.setMultipleSelect('single' not in flags) |
146 for option in options: | 158 for option in options: |
147 self.addItem(option[1]) | 159 self.addItem(option[1]) |
148 self._xmlui_attr_map = {label: value for value, label in options} | 160 self._xmlui_attr_map = {label: value for value, label in options} |
161 self._xmluiSelectValues(selected) | |
149 | 162 |
150 def _xmluiSelectValue(self, value): | 163 def _xmluiSelectValue(self, value): |
164 """Select a value checking its item""" | |
151 try: | 165 try: |
152 label = [label for label, _value in self._xmlui_attr_map.items() if _value == value][0] | 166 label = [label for label, _value in self._xmlui_attr_map.items() if _value == value][0] |
153 except IndexError: | 167 except IndexError: |
154 print(_("WARNING: Can't find value [%s] to select" % value)) | 168 print(_("WARNING: Can't find value [%s] to select" % value)) |
155 return | 169 return |
156 self.selectItem(label) | 170 self.selectItem(label) |
157 | 171 |
172 def _xmluiSelectValues(self, values): | |
173 """Select multiple values, ignore the items""" | |
174 self.setValueSelection(values) | |
175 | |
158 def _xmluiGetSelectedValues(self): | 176 def _xmluiGetSelectedValues(self): |
159 ret = [] | 177 ret = [] |
160 for label in self.getSelectedItemText(): | 178 for label in self.getSelectedItemText(): |
161 ret.append(self._xmlui_attr_map[label]) | 179 ret.append(self._xmlui_attr_map[label]) |
162 return ret | 180 return ret |
163 | 181 |
164 def _xmluiOnChange(self, callback): | 182 def _xmluiOnChange(self, callback): |
165 self.addChangeListener(callback) | 183 self.addChangeListener(callback) |
184 | |
185 def _xmluiAddValues(self, values, select=True): | |
186 selected = self._xmluiGetSelectedValues() | |
187 for value in values: | |
188 self.addItem(value) | |
189 self._xmlui_attr_map[value] = value | |
190 if value not in selected: | |
191 selected.append(value) | |
192 self._xmluiSelectValues(selected) | |
166 | 193 |
167 | 194 |
168 class LiberviaContainer(object): | 195 class LiberviaContainer(object): |
169 | 196 |
170 def _xmluiAppend(self, widget): | 197 def _xmluiAppend(self, widget): |