make all *View classes call their parent constructors.
[matthijs/upstream/mobilegtd.git] / src / gui / gui.py
index b2656177865ccbbe4945700d11fb06a1463c2d46..e4b3db05d88086b6aea5f619f31c76aa2384ba34 100644 (file)
@@ -103,9 +103,12 @@ def restore_gui(object):
 
 
 class ListView(object):
-    def __init__(self,title):
-        self.title = title
+    def __init__(self):
         self.view = appuifw.Listbox(self.items(),self.change_entry)
+        super(ListView, self).__init__()
+
+    def set_title(self, title):
+        self.title = title
     
     def change_entry(self):
         pass
@@ -161,9 +164,9 @@ class ListView(object):
 
 
 class WidgetBasedListView(ListView):
-    def __init__(self,title):
+    def __init__(self):
         self.widgets = self.generate_widgets()
-        super(WidgetBasedListView,self).__init__(title)
+        super(WidgetBasedListView,self).__init__()
         self.exit_flag = False
 
     def run(self):
@@ -194,6 +197,7 @@ class KeyBindingView(object):
     
     def __init__(self):
         self.binding_map = {}
+        super(KeyBindingView,self).__init__()
 
     def set_keybindings(self, binding_map):
         """
@@ -234,13 +238,26 @@ class KeyBindingView(object):
             self.view.bind(key,no_action)
 
 class SearchableListView(WidgetBasedListView):
-    def __init__(self,title,entry_filters):
+    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]
-        self.lock = None
-        super(SearchableListView,self).__init__(title)
-
 
     def search_item(self):
         selected_item = appuifw.selection_list(self.all_widget_texts(),search_field=1)
@@ -248,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)]
@@ -255,9 +273,8 @@ class SearchableListView(WidgetBasedListView):
 
 
 class EditableListView(SearchableListView,KeyBindingView):
-    def __init__(self,title,entry_filters):
-        KeyBindingView.__init__(self)
-        super(EditableListView, self).__init__(title,entry_filters)
+    def __init__(self):
+        super(EditableListView, self).__init__()
 
     def key_and_menu_bindings(self,selected_index):
         key_and_menu_bindings=[]