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):