Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.set_text = self.editInput.set_text
self.set_text(text)
def onchange(self, emitter, new_value):
return self.eventManager.propagate(self.EVENT_ONCHANGE, (new_value,))
@decorate_set_on_listener("onchange", "(self,emitter,new_value)")
def set_on_change_listener(self, callback, *userdata):
"""Register the listener for the onchange event.
Note: the listener prototype have to be in the form on_item_changed(self, widget, value).
"""
self.eventManager.register_listener(self.EVENT_ONCHANGE, callback, *userdata)
class TableItem(Widget, _MixinTextualWidget):
"""item widget for the TableRow."""
@decorate_constructor_parameter_types([str])
def __init__(self, text='', **kwargs):
"""
Args:
text (str):
kwargs: See Widget.__init__()
"""
super(TableItem, self).__init__(**kwargs)
self.type = 'td'
self.set_text(text)
class TableTitle(TableItem, _MixinTextualWidget):
"""title widget for the table."""
except (IndexError, ValueError):
return a > b
log.debug("FileFolderNavigator - populate_folder_items")
# krt sort that works in Raspbian
l = sorted(os.listdir(directory))
# l.sort(key=functools.cmp_to_key(_sort_files))
# used to restore a valid path after a wrong edit in the path editor
self._last_valid_path = directory
# we remove the container avoiding graphic update adding items
# this speeds up the navigation
self.remove_child(self.itemContainer)
# creation of a new instance of a itemContainer
self.itemContainer = Widget(width='100%', height=300)
self.itemContainer.set_layout_orientation(Widget.LAYOUT_VERTICAL)
self.itemContainer.style['overflow-y'] = 'scroll'
self.itemContainer.style['overflow-x'] = 'hidden'
self.itemContainer.style['display'] = 'block'
for i in l:
full_path = os.path.join(directory, i)
is_folder = not os.path.isfile(full_path)
if (not is_folder) and (not self.allow_file_selection):
continue
fi = FileFolderItem(i, is_folder)
fi.style['display'] = 'block'
fi.set_on_click_listener(self.on_folder_item_click) # navigation purpose
fi.set_on_selection_listener(self.on_folder_item_selected) # selection purpose
self.folderItems.append(fi)
def main(self):
verticalContainer = gui.Widget(width=540)
verticalContainer.style['display'] = 'block'
verticalContainer.style['overflow'] = 'hidden'
horizontalContainer = gui.Widget(width='100%', layout_orientation=gui.Widget.LAYOUT_HORIZONTAL, margin='0px')
horizontalContainer.style['display'] = 'block'
horizontalContainer.style['overflow'] = 'auto'
subContainerLeft = gui.Widget(width=320)
subContainerLeft.style['display'] = 'block'
subContainerLeft.style['overflow'] = 'auto'
subContainerLeft.style['text-align'] = 'center'
self.img = gui.Image('/res/logo.png', width=100, height=100, margin='10px')
self.img.set_on_click_listener(self, 'on_img_clicked')
self.table = gui.Table(width=300, height=200, margin='10px')
self.table.from_2d_matrix([['ID', 'First Name', 'Last Name'],
@decorate_set_on_listener("(self, emitter, fileList)")
@decorate_event
def confirm_value(self, widget):
"""event called pressing on OK button.
propagates the string content of the input field
"""
self.hide()
params = (self.fileFolderNavigator.get_selection_list(),)
return params
@decorate_explicit_alias_for_listener_registration
def set_on_confirm_value_listener(self, callback, *userdata):
self.confirm_value.connect(callback, *userdata)
class MenuBar(Widget):
@decorate_constructor_parameter_types([])
def __init__(self, *args, **kwargs):
"""
Args:
kwargs: See Widget.__init__()
"""
super(MenuBar, self).__init__(*args, **kwargs)
self.type = 'nav'
self.set_layout_orientation(Container.LAYOUT_HORIZONTAL)
class Menu(Widget):
"""Menu widget can contain MenuItem."""
@decorate_constructor_parameter_types([])
Args:
callback (function): Callback function pointer.
"""
self.attributes[self.EVENT_ONKEYDOWN] = """
if (event.keyCode == 13) {
var params={};
params['new_value']=document.getElementById('%(id)s').value;
document.getElementById('%(id)s').value = '';
document.getElementById('%(id)s').onchange = '';
sendCallbackParam('%(id)s','%(evt)s',params);
return false;
}""" % {'id': self.identifier, 'evt': self.EVENT_ONENTER}
self.eventManager.register_listener(self.EVENT_ONENTER, callback, *userdata)
class Label(Widget, _MixinTextualWidget):
"""Non editable text label widget. Set its content by means of set_text function, and retrieve its content with the
function get_text.
"""
@decorate_constructor_parameter_types([str])
def __init__(self, text, **kwargs):
"""
Args:
text (str): The string content that have to be displayed in the Label.
kwargs: See Widget.__init__()
"""
super(Label, self).__init__(**kwargs)
self.type = 'p'
self.set_text(text)
class GenericDialog(Widget):
subContainerLeft = gui.Widget(width=320,
style={'display': 'block', 'overflow': 'auto', 'text-align': 'center'})
self.img = gui.Image('/res:logo.png', height=100, margin='10px')
self.img.onclick.connect(self.on_img_clicked)
self.table = gui.Table.new_from_list([('ID', 'First Name', 'Last Name'),
('101', 'Danny', 'Young'),
('102', 'Christine', 'Holand'),
('103', 'Lars', 'Gordon'),
('104', 'Roberto', 'Robitaille'),
('105', 'Maria', 'Papadopoulos')],
width=300, height=200, margin='10px')
self.table.on_table_row_click.connect(self.on_table_row_click)
# the arguments are width - height - layoutOrientationOrizontal
subContainerRight = gui.Widget(
style={'width': '220px', 'display': 'block',
'overflow': 'auto', 'text-align': 'center'})
self.count = 0
self.counter = gui.Label('', width=200, height=30, margin='10px')
self.lbl = gui.Label('This is a LABEL!', width=200,
height=30, margin='10px')
self.bt = gui.Button('Press me!', width=200, height=30, margin='10px')
# setting the listener for the onclick event of the button
self.bt.onclick.connect(self.on_button_pressed)
self.txt = gui.TextInput(width=200, height=30, margin='10px')
self.txt.set_text('This is a TEXTAREA')
self.txt.onchange.connect(self.on_text_area_change)
GenericObject widget - allows to show embedded object like pdf,swf..
"""
@decorate_constructor_parameter_types([str])
def __init__(self, filename, **kwargs):
"""
Args:
filename (str): URL
kwargs: See Widget.__init__()
"""
super(GenericObject, self).__init__(**kwargs)
self.type = 'object'
self.attributes['data'] = filename
class FileFolderNavigator(Widget):
"""FileFolderNavigator widget."""
@decorate_constructor_parameter_types([bool, str, bool, bool])
def __init__(self, multiple_selection, selection_folder, allow_file_selection, allow_folder_selection, **kwargs):
super(FileFolderNavigator, self).__init__(**kwargs)
self.set_layout_orientation(Widget.LAYOUT_VERTICAL)
self.style['width'] = '100%'
self.multiple_selection = multiple_selection
self.allow_file_selection = allow_file_selection
self.allow_folder_selection = allow_folder_selection
self.selectionlist = []
self.controlsContainer = Widget()
self.controlsContainer.set_size('100%', '30px')
self.controlsContainer.style['display'] = 'flex'
self.controlsContainer.set_layout_orientation(Widget.LAYOUT_HORIZONTAL)
self.text +=text+'\n'
self.textb.set_value(self.text)
# ****************************************************
# TabView - a framework for a Tabbed Editor
# ****************************************************
"""
The TabView constucts a container.
The container has a tab bar, tab title and a frame (self.tab_frame).
The tab_frame can contain one of many panels depending on the tab selected
add_tab adds a button to the tab bar, and creates and returns a panel
"""
class TabView(gui.Widget):
def __init__(self, frame_width,frame_height,bar_height,**kwargs):
super(TabView, self).__init__(**kwargs)
self.bar_width=0
self.bar_height=bar_height
self.frame_width=frame_width
self.frame_height=frame_height
self.set_layout_orientation(gui.Widget.LAYOUT_VERTICAL)
#dictionary to lookup panel object given key
self.panel_obj=dict()
self.tab_titles=dict()
#tab bar
kwargs: See Widget.__init__()
"""
super(MenuItem, self).__init__(**kwargs)
self.sub_container = None
self.type = 'li'
self.attributes[self.EVENT_ONCLICK] = ''
self.set_text(text)
def append(self, value, key=''):
if self.sub_container is None:
self.sub_container = Menu()
super(MenuItem, self).append(self.sub_container, key='subcontainer')
self.sub_container.append(value, key=key)
class TreeView(Widget):
"""TreeView widget can contain TreeItem."""
@decorate_constructor_parameter_types([])
def __init__(self, **kwargs):
"""
Args:
kwargs: See Widget.__init__()
"""
super(TreeView, self).__init__(**kwargs)
self.type = 'ul'
class TreeItem(Widget, _MixinTextualWidget):
"""TreeItem widget can contain other TreeItem."""
@decorate_constructor_parameter_types([str])
text (str, unicode): The textual content of the ListItem.
kwargs: See Widget.__init__()
"""
super(ListItem, self).__init__(*args, **kwargs)
self.type = 'li'
self.set_text(text)
def get_value(self):
"""
Returns:
str: The text content of the ListItem
"""
return self.get_text()
class DropDown(Widget):
"""Drop down selection widget. Implements the onchange(value) event. Register a listener for its selection change
by means of the function DropDown.onchange.connect.
"""
@decorate_constructor_parameter_types([])
def __init__(self, *args, **kwargs):
"""
Args:
kwargs: See Widget.__init__()
"""
super(DropDown, self).__init__(*args, **kwargs)
self.type = 'select'
self.attributes[self.EVENT_ONCHANGE] = \
"var params={};params['value']=document.getElementById('%(id)s').value;" \
"sendCallbackParam('%(id)s','%(evt)s',params);" % {'id': self.identifier,
'evt': self.EVENT_ONCHANGE}