Define (a dummy) get_menu_entries in View.
[matthijs/upstream/mobilegtd.git] / src / gui / gui.py
index a8f217164e1d3b399dc6e63a683be89e814d2e0e..33f8973fa8ddaafaa9b6f1cac3d8161d901018b3 100644 (file)
@@ -146,13 +146,26 @@ class View(object):
         """
         super(View, self).refresh()
 
+    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):
-        pass
+    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).entry_selected()
     
     def update(self,subject=None):
         #logger.log(u'Updated %s'%repr(self))
@@ -184,7 +197,6 @@ class ListView(View):
     def selected_index(self):
         return self.view.current()
 
-
 class WidgetBasedListView(ListView):
     def __init__(self):
         self.widgets = self.generate_widgets()
@@ -214,7 +226,7 @@ class WidgetBasedListView(ListView):
         return self.widgets[self.selected_index()]
         
 
-class KeyBindingView(object):
+class KeyBindingView(View):
     
     def __init__(self):
         self.binding_map = {}
@@ -244,7 +256,8 @@ class KeyBindingView(object):
                     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()
         
@@ -306,7 +319,7 @@ class EditableListView(SearchableListView,KeyBindingView):
             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):