Remove the binding_map argument from KeyBindingView.__init__.
authorMatthijs Kooijman <matthijs@stdin.nl>
Mon, 17 Aug 2009 18:54:34 +0000 (20:54 +0200)
committerMatthijs Kooijman <matthijs@stdin.nl>
Mon, 17 Aug 2009 19:37:52 +0000 (21:37 +0200)
This prepares for making the constructors involved in the View object
hierarchy all argumentless so they can properly be called in the normal
way.

src/gui/gui.py
src/gui/project_details/project_view.py
src/gui/projects_list/project_list_view.py

index ec0a7cb6f04decbb502b0698fa242bd85ef22d8f..b2656177865ccbbe4945700d11fb06a1463c2d46 100644 (file)
@@ -192,7 +192,20 @@ class WidgetBasedListView(ListView):
 
 class KeyBindingView(object):
     
-    def __init__(self,binding_map):
+    def __init__(self):
+        self.binding_map = {}
+
+    def set_keybindings(self, binding_map):
+        """
+        Set a new map of key bindings. This map maps method names to a
+        tuple of keyname and description.
+
+        The method name refers to a method on the selected item, or the
+        current view.
+
+        Example: { 'search_item' : ('0', 'Search item') }
+
+        """
         self.binding_map = binding_map
 
     def get_menu_entries(self):
@@ -242,8 +255,8 @@ class SearchableListView(WidgetBasedListView):
 
 
 class EditableListView(SearchableListView,KeyBindingView):
-    def __init__(self,title,entry_filters,binding_map):
-        KeyBindingView.__init__(self,binding_map)
+    def __init__(self,title,entry_filters):
+        KeyBindingView.__init__(self)
         super(EditableListView, self).__init__(title,entry_filters)
 
     def key_and_menu_bindings(self,selected_index):
index bc36d77c6b14f83e382f2b0d4702102ed2b7b4a0..6a8f2f701d0d77a5916a4e66977ab3c8ae771b00 100644 (file)
@@ -63,7 +63,8 @@ class ProjectView(EditableListView):
     def __init__(self,project):
         self.project = project
         self.project.observers.append(self)
-        super(ProjectView, self).__init__(self.project.name, [lambda:self.project.actions.with_property(lambda a:a.status==action.active)], ACTION_LIST_KEYS_AND_MENU)
+        super(ProjectView, self).__init__(self.project.name, [lambda:self.project.actions.with_property(lambda a:a.status==action.active)])
+        self.set_keybindings(ACTION_LIST_KEYS_AND_MENU)
 
     def exit(self):
         self.project.observers.remove(self)
index 1288d10c65af61a8347b45ce661237528bcfa1c4..0712a72fe60c1e0853948fd4868fd673f121c10f 100644 (file)
@@ -24,7 +24,8 @@ class ProjectListView(EditableListView):
     def __init__(self,projects):
         self.projects = projects
         self.projects.observers.append(self)
-        super(ProjectListView, self).__init__(u'Projects', [lambda:projects],PROJECT_LIST_KEYS_AND_MENU)
+        super(ProjectListView, self).__init__(u'Projects', [lambda:projects])
+        self.set_keybindings(PROJECT_LIST_KEYS_AND_MENU)
         #appuifw.note(u'Before starting thread')
 #        thread.start_new_thread(projects.process,())
         #appuifw.note(u'After starting thread %s'%repr(projects.observers))