[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32979] trunk/blender: Fix #24632: Sculpt Mode Context Set hotkeys (1..0, Shift+1..0) don't work

Sergey Sharybin g.ulairi at gmail.com
Wed Nov 10 09:11:59 CET 2010


Revision: 32979
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32979
Author:   nazgul
Date:     2010-11-10 09:11:58 +0100 (Wed, 10 Nov 2010)

Log Message:
-----------
Fix #24632: Sculpt Mode Context Set hotkeys (1..0, Shift+1..0) don't work

- Totally get rid of old active_brush_index stuff
- Use operator to set n-th brush as active in specified paint mode
  thans to Cambo for it's optimization :)

Modified Paths:
--------------
    trunk/blender/release/scripts/op/wm.py
    trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c

Modified: trunk/blender/release/scripts/op/wm.py
===================================================================
--- trunk/blender/release/scripts/op/wm.py	2010-11-10 08:10:42 UTC (rev 32978)
+++ trunk/blender/release/scripts/op/wm.py	2010-11-10 08:11:58 UTC (rev 32979)
@@ -74,6 +74,33 @@
     return {'FINISHED'}
 
 
+class BRUSH_OT_set_active_number(bpy.types.Operator):
+    '''Set active sculpt/paint brush from it's number'''
+    bl_idname = "brush.set_active_number"
+    bl_label = "Set Brush Number"
+
+    mode = StringProperty(name="mode",
+            description="Paint mode to set brush for", maxlen=1024)
+    number = IntProperty(name="number",
+            description="Brush number")
+
+    _attr_dict = {"sculpt"      : "use_paint_sculpt",
+                  "vertex_paint": "use_paint_vertex",
+                  "weight_paint": "use_paint_weight",
+                  "image_paint" : "use_paint_texture"}
+
+    def execute(self, context):
+        attr = self._attr_dict.get(self.mode)
+        if attr is None:
+            return {'CANCELLED'}
+
+        for i, brush in enumerate((cur for cur in bpy.data.brushes if getattr(cur, attr))):
+            if i == self.number:
+                getattr(context.tool_settings, self.mode).brush = brush
+                return {'FINISHED'}
+
+        return {'CANCELLED'}
+
 class WM_OT_context_set_boolean(bpy.types.Operator):
     '''Set a context value.'''
     bl_idname = "wm.context_set_boolean"

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c	2010-11-10 08:10:42 UTC (rev 32978)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c	2010-11-10 08:11:58 UTC (rev 32979)
@@ -224,70 +224,70 @@
 }
 
 
-static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path)
+static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *mode)
 {
 	wmKeyMapItem *kmi;
 
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ONEKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 0);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", TWOKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 1);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", THREEKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 2);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FOURKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 3);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FIVEKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 4);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SIXKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 5);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SEVENKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 6);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", EIGHTKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 7);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", NINEKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 8);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ZEROKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 9);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ONEKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 10);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", TWOKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 11);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", THREEKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 12);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FOURKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 13);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FIVEKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 14);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SIXKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 15);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SEVENKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 16);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", EIGHTKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 17);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", NINEKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 18);
-	kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ZEROKEY, KM_PRESS, KM_SHIFT, 0);
-	RNA_string_set(kmi->ptr, "data_path", path);
-	RNA_int_set(kmi->ptr, "value", 19);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", ONEKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 0);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", TWOKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 1);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", THREEKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 2);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", FOURKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 3);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", FIVEKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 4);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", SIXKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 5);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", SEVENKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 6);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", EIGHTKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 7);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", NINEKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 8);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", ZEROKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 9);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", ONEKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 10);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", TWOKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 11);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", THREEKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 12);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", FOURKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 13);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", FIVEKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 14);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", SIXKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 15);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", SEVENKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 16);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", EIGHTKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 17);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", NINEKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 18);
+	kmi= WM_keymap_add_item(keymap, "BRUSH_OT_set_active_number", ZEROKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_string_set(kmi->ptr, "mode", mode);
+	RNA_int_set(kmi->ptr, "number", 19);
 }
 
 static void ed_keymap_paint_brush_size(wmKeyMap *keymap, const char *UNUSED(path))
@@ -333,7 +333,7 @@
 	RNA_int_set(kmi->ptr, "level", -1);
 	RNA_boolean_set(kmi->ptr, "relative", 1);
 
-	ed_keymap_paint_brush_switch(keymap, "tool_settings.sculpt.active_brush_index");
+	ed_keymap_paint_brush_switch(keymap, "sculpt");
 	ed_keymap_paint_brush_size(keymap, "tool_settings.sculpt.brush.size");
 
 	/* */
@@ -349,43 +349,6 @@
 	kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", AKEY, KM_PRESS, KM_SHIFT, 0);
 	RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_airbrush");
 
-	/* brush switching */
-	kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_id", DKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush");
-	RNA_string_set(kmi->ptr, "value", "SculptDraw");
-	
-	kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_id", SKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush");
-	RNA_string_set(kmi->ptr, "value", "Smooth");
-	
-	kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_id", PKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush");
-	RNA_string_set(kmi->ptr, "value", "Pinch/Magnify");
-	
-	kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_id", GKEY, KM_PRESS, 0, 0);
-	RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush");
-	RNA_string_set(kmi->ptr, "value", "Grab");
-	

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list