[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24036] trunk/blender: added new context operator WM_OT_context_cycle_int, use for switching between active shape keys

Campbell Barton ideasman42 at gmail.com
Wed Oct 21 12:11:03 CEST 2009


Revision: 24036
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24036
Author:   campbellbarton
Date:     2009-10-21 12:11:03 +0200 (Wed, 21 Oct 2009)

Log Message:
-----------
added new context operator WM_OT_context_cycle_int, use for switching between active shape keys

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/bpy_ops.py
    trunk/blender/source/blender/editors/object/object_ops.c

Modified: trunk/blender/release/scripts/modules/bpy_ops.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_ops.py	2009-10-21 09:17:46 UTC (rev 24035)
+++ trunk/blender/release/scripts/modules/bpy_ops.py	2009-10-21 10:11:03 UTC (rev 24036)
@@ -154,6 +154,7 @@
 		return ('FINISHED',)
 
 rna_path_prop = bpy.props.StringProperty(attr="path", name="Context Attributes", description="rna context string", maxlen= 1024, default= "")
+rna_reverse_prop = bpy.props.BoolProperty(attr="reverse", name="Reverse", description="Cycle backwards", default= False)
 
 def execute_context_assign(self, context):
 	exec("context.%s=self.value" % self.path)
@@ -216,11 +217,30 @@
 		exec("context.%s = ['%s', '%s'][context.%s!='%s']" % (self.path, self.value_1, self.value_2, self.path, self.value_2)) # security nuts will complain.
 		return ('FINISHED',)
 
+class WM_OT_context_cycle_int(bpy.types.Operator):
+	'''Set a context value. Useful for cycling active material, vertex keys, groups' etc.'''
+	__idname__ = "wm.context_cycle_int"
+	__label__ = "Context Int Cycle"
+	__props__ = [rna_path_prop, rna_reverse_prop]
+	def execute(self, context):
+		self.value = eval("context.%s" % self.path)
+		if self.reverse:	self.value -= 1
+		else:		self.value += 1
+		execute_context_assign(self, context)
+		
+		if self.value != eval("context.%s" % self.path):
+			# relies on rna clamping int's out of the range
+			if self.reverse:	self.value =  (1<<32)
+			else:		self.value = -(1<<32)
+			execute_context_assign(self, context)
+			
+		return ('FINISHED',)
+
 class WM_OT_context_cycle_enum(bpy.types.Operator):
 	'''Toggle a context value.'''
 	__idname__ = "wm.context_cycle_enum"
 	__label__ = "Context Enum Cycle"
-	__props__ = [rna_path_prop, bpy.props.BoolProperty(attr="reverse", name="Reverse", description="Cycle backwards", default= False)]
+	__props__ = [rna_path_prop, rna_reverse_prop]
 	def execute(self, context):
 		orig_value = eval("context.%s" % self.path) # security nuts will complain.
 		
@@ -251,6 +271,7 @@
 		exec("context.%s=advance_enum" % self.path)
 		return ('FINISHED',)
 
+
 bpy.ops.add(MESH_OT_delete_edgeloop)
 
 bpy.ops.add(WM_OT_context_set_boolean)
@@ -261,4 +282,5 @@
 bpy.ops.add(WM_OT_context_toggle)
 bpy.ops.add(WM_OT_context_toggle_enum)
 bpy.ops.add(WM_OT_context_cycle_enum)
+bpy.ops.add(WM_OT_context_cycle_int)
 

Modified: trunk/blender/source/blender/editors/object/object_ops.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_ops.c	2009-10-21 09:17:46 UTC (rev 24035)
+++ trunk/blender/source/blender/editors/object/object_ops.c	2009-10-21 10:11:03 UTC (rev 24036)
@@ -291,6 +291,15 @@
 	WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
 	WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0);
 
+	/* if 2.4x keys use these can be replaced, could also use page up/down keys to switch vgroups */
+	kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PAGEUPKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "path", "object.active_shape_key_index");
+	RNA_boolean_set(kmi->ptr, "reverse", TRUE);
+
+	kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PAGEDOWNKEY, KM_PRESS, 0, 0);
+	RNA_string_set(kmi->ptr, "path", "object.active_shape_key_index");
+
+
 	/* Lattice */
 	keymap= WM_keymap_find(keyconf, "Lattice", 0, 0);
 	keymap->poll= ED_operator_editlattice;





More information about the Bf-blender-cvs mailing list