make all *View classes call their parent constructors.
[matthijs/upstream/mobilegtd.git] / src / gui / gui.py
index 1dc34b291ea2d2875aa3405657900e978701188a..e4b3db05d88086b6aea5f619f31c76aa2384ba34 100644 (file)
@@ -105,6 +105,7 @@ def restore_gui(object):
 class ListView(object):
     def __init__(self):
         self.view = appuifw.Listbox(self.items(),self.change_entry)
+        super(ListView, self).__init__()
 
     def set_title(self, title):
         self.title = title
@@ -196,6 +197,7 @@ class KeyBindingView(object):
     
     def __init__(self):
         self.binding_map = {}
+        super(KeyBindingView,self).__init__()
 
     def set_keybindings(self, binding_map):
         """
@@ -236,13 +238,26 @@ class KeyBindingView(object):
             self.view.bind(key,no_action)
 
 class SearchableListView(WidgetBasedListView):
-    def __init__(self,entry_filters):
-        self.current_entry_filter_index = 0
-        self.entry_filters = entry_filters
-        self.filtered_list = self.entry_filters[0]
+    def __init__(self):
+        self.current_entry_filter_index = -1
+        self.entry_filters = []
+        self.filtered_list = lambda:[]
         self.lock = None
         super(SearchableListView,self).__init__()
 
+    def set_filters(self, entry_filters):
+        """
+        Set the filters that could be applied to this list. Each filter
+        can be applied in turn by calling switch_entry_filter (for
+        example from a key binding).
+
+        The entry_filters argument should be a list of filters. The
+        active filter is stored into self.filtered_list and should be
+        processed by generate_widgets in the subclass.
+        """
+        self.current_entry_filter_index = 0
+        self.entry_filters = entry_filters
+        self.filtered_list = self.entry_filters[0]
 
     def search_item(self):
         selected_item = appuifw.selection_list(self.all_widget_texts(),search_field=1)
@@ -250,6 +265,7 @@ class SearchableListView(WidgetBasedListView):
             selected_item = self.selected_index()
         self.view.set_list(self.items(),selected_item)
         self.set_bindings_for_selection(selected_item)
+
     def switch_entry_filter(self):
         self.current_entry_filter_index += 1
         self.filtered_list = self.entry_filters[self.current_entry_filter_index % len(self.entry_filters)]
@@ -257,9 +273,8 @@ class SearchableListView(WidgetBasedListView):
 
 
 class EditableListView(SearchableListView,KeyBindingView):
-    def __init__(self,entry_filters):
-        KeyBindingView.__init__(self)
-        super(EditableListView, self).__init__(entry_filters)
+    def __init__(self):
+        super(EditableListView, self).__init__()
 
     def key_and_menu_bindings(self,selected_index):
         key_and_menu_bindings=[]