diff frontends/src/primitivus/xmlui.py @ 969:5c7707c958d8

tools, frontends (xmlui): add setter methods for widgets + new widget InternalButton to process UI operations
author souliane <souliane@mailoo.org>
date Tue, 01 Apr 2014 21:30:21 +0200
parents 75f3b3b430ff
children b37b1d183ac3
line wrap: on
line diff
--- a/frontends/src/primitivus/xmlui.py	Tue Apr 01 21:21:13 2014 +0200
+++ b/frontends/src/primitivus/xmlui.py	Tue Apr 01 21:30:21 2014 +0200
@@ -19,6 +19,7 @@
 
 from sat.core.i18n import _
 import urwid
+import copy
 from urwid_satext import sat_widgets
 from logging import debug, info, warning, error
 from xml.dom import minidom
@@ -78,11 +79,15 @@
 
         urwid.Divider.__init__(self, div_char)
 
+
 class PrimitivusStringWidget(xmlui.StringWidget, sat_widgets.AdvancedEdit, PrimitivusEvents):
 
     def __init__(self, parent, value):
         sat_widgets.AdvancedEdit.__init__(self, edit_text=value)
 
+    def _xmluiSetValue(self, value):
+        self.set_edit_text(value)
+
     def _xmluiGetValue(self):
         return self.get_edit_text()
 
@@ -92,6 +97,9 @@
     def __init__(self, parent, value):
         sat_widgets.Password.__init__(self, edit_text=value)
 
+    def _xmluiSetValue(self, value):
+        self.set_edit_text(value)
+
     def _xmluiGetValue(self):
         return self.get_edit_text()
 
@@ -101,6 +109,9 @@
     def __init__(self, parent, value):
         sat_widgets.AdvancedEdit.__init__(self, edit_text=value, multiline=True)
 
+    def _xmluiSetValue(self, value):
+        self.set_edit_text(value)
+
     def _xmluiGetValue(self):
         return self.get_edit_text()
 
@@ -110,6 +121,9 @@
     def __init__(self, parent, state):
         urwid.CheckBox.__init__(self, '', state=state)
 
+    def _xmluiSetValue(self, value):
+        self.set_state(value == "true")
+
     def _xmluiGetValue(self):
         return "true" if self.get_state() else "false"
 
@@ -135,6 +149,21 @@
     def _xmluiGetSelectedValues(self):
         return [option.value for option in self.getSelectedValues()]
 
+    def _xmluiAddValues(self, values, select=True):
+        current_values = self.getAllValues()
+        new_values = copy.deepcopy(current_values)
+        for value in values:
+            if value not in current_values:
+                new_values.append(value)
+        if select:
+            selected = self._xmluiGetSelectedValues()
+        self.changeValues(new_values)
+        if select:
+            for value in values:
+                if value not in selected:
+                    selected.append(value)
+            self._xmluiSelectValues(selected)
+
 
 class PrimitivusAdvancedListContainer(xmlui.AdvancedListContainer, sat_widgets.TableContainer, PrimitivusEvents):