[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25423] trunk/blender: Added search filtering to key map editor - searches in UI names of operators

Matt Ebb matt at mke3.net
Thu Dec 17 02:06:14 CET 2009


Revision: 25423
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25423
Author:   broken
Date:     2009-12-17 02:06:12 +0100 (Thu, 17 Dec 2009)

Log Message:
-----------
Added search filtering to key map editor - searches in UI names of operators

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_userpref.py
    trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
    trunk/blender/source/blender/makesrna/intern/rna_wm.c

Modified: trunk/blender/release/scripts/ui/space_userpref.py
===================================================================
--- trunk/blender/release/scripts/ui/space_userpref.py	2009-12-16 23:30:59 UTC (rev 25422)
+++ trunk/blender/release/scripts/ui/space_userpref.py	2009-12-17 01:06:12 UTC (rev 25423)
@@ -1260,7 +1260,6 @@
         km = kc.find_keymap(idname, space_type = spaceid, region_type = regionid)
         
         if km:
-            km = km.active()
             self.draw_km(kc, km, children, col, level)
 
     def indented_layout(self, layout, level):
@@ -1275,6 +1274,8 @@
         return col
     
     def draw_km(self, kc, km, children, layout, level):
+        km = km.active()
+        
         layout.set_context_pointer("keymap", km)
         
         col = self.indented_layout(layout, level)
@@ -1463,7 +1464,35 @@
         sub.prop(inputs, "ndof_rotate_speed", text="Orbit Speed")
 
         row.separator()
+    
+    def draw_filtered(self, kc, layout):
         
+        for km in kc.keymaps:
+            filtered_items = [kmi for kmi in km.items if kmi.name.lower().find(kc.filter.lower()) != -1]
+            
+            if len(filtered_items) != 0:
+                km = km.active()
+                
+                col = layout.column()
+                col.set_context_pointer("keymap", km)
+                row = col.row()
+                row.label(text=km.name, icon="DOT")
+                
+                row.label()
+                row.label()
+                
+                if km.user_defined:
+                    row.operator("WM_OT_keymap_restore", text="Restore")
+                else:
+                    row.operator("WM_OT_keymap_edit", text="Edit")
+            
+                for kmi in filtered_items:
+                    self.draw_kmi(kc, km, kmi, col, 1)
+    
+    def draw_hierarchy(self, defkc, layout):
+        for entry in KM_HIERARCHY:
+            self.draw_entry(defkc, entry, layout)
+
     def draw(self, context):
         layout = self.layout
 
@@ -1480,17 +1509,23 @@
         # Keymap Settings
         col = split.column()
         # kc = wm.active_keyconfig
-        defkc = wm.default_keyconfig
+        kc = wm.default_keyconfig
         
         sub = col.column()
-        subrow = sub.row()
-        subrow.prop_object(wm, "active_keyconfig", wm, "keyconfigs", text="Configuration:")
-        subrow.label()
         
+        subsplit = sub.split()
+        subcol = subsplit.column()
+        subcol.prop_object(wm, "active_keyconfig", wm, "keyconfigs", text="Configuration:")
+        
+        subcol = subsplit.column()
+        subcol.prop(kc, "filter", icon="VIEWZOOM")
+        
         col.separator()
         
-        for entry in KM_HIERARCHY:
-            self.draw_entry(defkc, entry, col)
+        if kc.filter != "":
+            self.draw_filtered(kc, col)
+        else:
+            self.draw_hierarchy(kc, col)
 
 bpy.types.register(USERPREF_HT_header)
 bpy.types.register(USERPREF_PT_tabs)
@@ -1607,7 +1642,7 @@
 
     def execute(self, context):
         wm = context.manager
-        km = context.keymap # wm.active_keymap
+        km = context.keymap
         km.copy_to_user()
         return ('FINISHED',)
 
@@ -1626,7 +1661,7 @@
             for km in wm.default_keyconfig.keymaps:
                 km.restore_to_default()
         else:
-            km = context.keymap # wm.active_keymap
+            km = context.keymap
             km.restore_to_default()
 
         return ('FINISHED',)
@@ -1639,7 +1674,7 @@
 
     def execute(self, context):
         wm = context.manager
-        km = context.keymap # wm.active_keymap
+        km = context.keymap
         if km.modal:
             km.add_modal_item("", 'A', 'PRESS') # kmi
         else:
@@ -1655,7 +1690,7 @@
     def execute(self, context):
         wm = context.manager
         kmi = context.keyitem
-        km = context.keymap # wm.active_keymap
+        km = context.keymap
         km.remove_item(kmi)
         return ('FINISHED',)
 

Modified: trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-12-16 23:30:59 UTC (rev 25422)
+++ trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-12-17 01:06:12 UTC (rev 25423)
@@ -123,7 +123,6 @@
 	
 	ListBase keyconfigs;				/* known key configurations */
 	struct wmKeyConfig *defaultconf;	/* default configuration, not saved */
-	int defaultactmap, pad2;			/* active keymap from default for editing */
 
 	ListBase timers;					/* active timers */
 	struct wmTimer *autosavetimer;		/* timer for auto save */
@@ -301,6 +300,8 @@
 	char idname[64];		/* unique name */
 	char basename[64];		/* idname of configuration this is derives from, "" if none */
 
+	char filter[64];		/* search term for filtering in the UI */
+	
 	ListBase keymaps;
 	int actkeymap, flag;
 } wmKeyConfig;

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm.c	2009-12-16 23:30:59 UTC (rev 25422)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm.c	2009-12-17 01:06:12 UTC (rev 25423)
@@ -535,36 +535,6 @@
 		BLI_strncpy(U.keyconfigstr, kc->idname, sizeof(U.keyconfigstr));
 }
 
-static PointerRNA rna_WindowManager_active_keymap_get(PointerRNA *ptr)
-{
-	wmWindowManager *wm= ptr->data;
-	wmKeyMap *km= NULL;
-	
-	if(wm->defaultconf) {
-		km= BLI_findlink(&wm->defaultconf->keymaps, wm->defaultactmap);
-		
-		if(!km)
-			km= wm->defaultconf->keymaps.first;
-	}
-
-	return rna_pointer_inherit_refine(ptr, &RNA_KeyMap, WM_keymap_active(wm, km));
-}
-
-static void rna_WindowManager_active_keymap_set(PointerRNA *ptr, PointerRNA value)
-{
-	wmWindowManager *wm= ptr->data;
-	wmKeyMap *km= value.data;
-	int index;
-	
-	if(wm->defaultconf && km) {
-		km= WM_keymap_find(wm->defaultconf, km->idname, km->spaceid, km->regionid);
-		index= BLI_findindex(&wm->defaultconf->keymaps, km);
-
-		if(index != -1) wm->defaultactmap= index;
-		else wm->defaultactmap= 0;
-	}
-}
-
 static void rna_wmKeyMapItem_idname_get(PointerRNA *ptr, char *value)
 {
 	wmKeyMapItem *kmi= ptr->data;
@@ -848,12 +818,6 @@
 	RNA_def_property_struct_type(prop, "KeyConfig");
 	RNA_def_property_ui_text(prop, "Default Key Configuration", "");
 
-	prop= RNA_def_property(srna, "active_keymap", PROP_POINTER, PROP_NEVER_NULL);
-	RNA_def_property_struct_type(prop, "KeyMap");
-	RNA_def_property_flag(prop, PROP_EDITABLE);
-	RNA_def_property_pointer_funcs(prop, "rna_WindowManager_active_keymap_get", "rna_WindowManager_active_keymap_set", 0);
-	RNA_def_property_ui_text(prop, "Active Key Map", "");
-
 	RNA_api_wm(srna);
 }
 
@@ -881,6 +845,10 @@
 	RNA_def_property_string_sdna(prop, NULL, "idname");
 	RNA_def_property_ui_text(prop, "Name", "Name of the key configuration.");
 	RNA_def_struct_name_property(srna, prop);
+	
+	prop= RNA_def_property(srna, "filter", PROP_STRING, PROP_NONE);
+	RNA_def_property_string_sdna(prop, NULL, "filter");
+	RNA_def_property_ui_text(prop, "Filter", "Search term for filtering in the UI.");
 
 	prop= RNA_def_property(srna, "keymaps", PROP_COLLECTION, PROP_NONE);
 	RNA_def_property_struct_type(prop, "KeyMap");
@@ -1011,7 +979,7 @@
 
 	prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_EXPANDED);
-	RNA_def_property_ui_text(prop, "Expanded", "Expanded in the user interface.");
+	RNA_def_property_ui_text(prop, "Expanded", "Show key map event and property details in the user interface.");
 	RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
 
 	prop= RNA_def_property(srna, "propvalue", PROP_ENUM, PROP_NONE);





More information about the Bf-blender-cvs mailing list