def exit(self):
self.exit_flag = True
self.lock.signal()
- super(View, self).exit()
def refresh(self):
"""
Update the gui after a change in model or some user interaction.
Should be filled by subclasses.
"""
- super(View, self).refresh()
+ appuifw.app.menu=self.get_menu_entries()
+
+ def get_menu_entries(self):
+ """ Returns a list of menu entries to display. Will be
+ automatically updated on each refresh.
+
+ Each menu entry is a tuple of a title for the entry and a
+ function to call when the entry is selected.
+ """
+ return []
class ListView(View):
def __init__(self):
super(ListView, self).__init__()
- self.set_view(appuifw.Listbox(self.items(),self.change_entry))
+ self.set_view(appuifw.Listbox(self.items(),self.entry_selected))
- def change_entry(self):
+ def entry_selected(self):
"""
This function is called when the user selects an an entry (e.g.,
navigates to it and push the ok button).
"""
- super(ListView).change_entry()
+ pass
def update(self,subject=None):
#logger.log(u'Updated %s'%repr(self))
index = 0
self.set_bindings_for_selection(index)
- def refresh(self):
- appuifw.app.menu=self.get_menu_entries()
-
def set_index(self,index):
if index > len(self.widgets):
index = len(self.widgets)
def selected_index(self):
return self.view.current()
-
class WidgetBasedListView(ListView):
def __init__(self):
self.widgets = self.generate_widgets()
return self.widgets[self.selected_index()]
-class KeyBindingView(object):
+class KeyBindingView(View):
def __init__(self):
self.binding_map = {}
description=' '+description
menu_entries.append((description,function))
menu_entries.append((u'Exit', self.exit))
- return menu_entries
+ return menu_entries + super(KeyBindingView, self).get_menu_entries()
+
def set_bindings_for_selection(self,selected_index):
self.remove_all_key_bindings()
key_and_menu_bindings.append((get_key(key),key,description,execute_and_update_function))
return key_and_menu_bindings
- def change_entry(self):
+ def entry_selected(self):
self.current_widget().change()
self.refresh()
def execute_and_update(self,function):