Source code for pyforms_web.controls.control_list

from pyforms_web.controls.control_base import ControlBase
import simplejson

[docs]class ControlList(ControlBase): def __init__(self, *args, **kwargs): """ :param str label: Control label. :param str default: Set the value. Default = None. :param bool visible: Set the control visible or hidden. Default = True. :param bool error: Mark the control as having and error. Default = False. :param str css: Extra css classes to add to the control. :param str field_css: Extra css classes to add to the field dive that encapsulates the control. :param str style: Extra style to add to the control. :param str field_style: Extra style to add to the field div that encapsulates the control. :param bool enabled: Set the control enabled or disabled. Default = True. :param bool readonly: Set the control as read only. Default = True. :param list(str) horizontal_headers: List of headers. :param bool select_entire_row: Flag to select the entire row or individual cells. Default = False. :param int selected_row_index: Default selected row. Default = -1. :param list(str) columns_size: List of css with the size value of each column. Default = None. :param list(str) columns_align: List of css alignment values for each column. Default = []. :param function row_double_click_event: Reference to a function called when the row is double clicked. :param function item_selection_changed_event: Reference to a function called when the selection of an item change. """ self._titles = kwargs.get('horizontal_headers',[]) self._select_entire_row = kwargs.get('select_entire_row',True) self._read_only = kwargs.get('readonly',True) self._selected_index = kwargs.get('selected_row_index',-1) self._columns_size = kwargs.get('columns_size', None) self._columns_align = kwargs.get('columns_align', []) if 'row_double_click_event' in kwargs: self.row_double_click_event = kwargs['row_double_click_event'] if 'item_selection_changed_event' in kwargs: self.item_selection_changed_event = kwargs['item_selection_changed_event'] super(ControlList, self).__init__(*args, **kwargs) def init_form(self): return "new ControlList('{0}', {1})".format( self._name, simplejson.dumps(self.serialize()) )
[docs] def item_selection_changed_event(self): pass
[docs] def row_double_click_event(self): pass
@property def horizontal_headers(self): return self._titles @horizontal_headers.setter def horizontal_headers(self, value): self.mark_to_update_client() self._titles = value @property def rows_count(self): if not isinstance(self._value, list): return 0 return len(self._value) @property def select_entire_row(self): return self._select_entire_row @select_entire_row.setter def select_entire_row(self, value): self.mark_to_update_client() self._select_entire_row = value @property def readonly(self): return self._read_only @readonly.setter def readonly(self, value): self.mark_to_update_client() self._read_only = value @property def columns_size(self): return self._columns_size @columns_size.setter def columns_size(self, value): self.mark_to_update_client() self._columns_size = value @property def columns_align(self): return self._columns_align @columns_align.setter def columns_align(self, value): self.mark_to_update_client() self._columns_align = value @property def selected_row_index(self): return self._selected_index @selected_row_index.setter def selected_row_index(self, value): self.mark_to_update_client() self._selected_index = value @property def value(self): return ControlBase.value.fget(self) @value.setter def value(self, value): self._selected_index = -1 ControlBase.value.fset(self, value) def serialize(self): data = ControlBase.serialize(self) data.update({ 'columns_align': self.columns_align, 'columns_size': self.columns_size, 'horizontal_headers': self.horizontal_headers, 'read_only': 1 if self._read_only else 0, 'selected_index': self._selected_index, 'select_entire_row': 1 if self._select_entire_row else 0, }) return data def deserialize(self, properties): self._selected_index = properties['selected_index']