[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23612] trunk/blender: Keying Sets UI:

Joshua Leung aligorith at gmail.com
Sat Oct 3 06:21:39 CEST 2009


Revision: 23612
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23612
Author:   aligorith
Date:     2009-10-03 06:21:38 +0200 (Sat, 03 Oct 2009)

Log Message:
-----------
Keying Sets UI:

Added a way to view and edit Keying Sets via the Scene Buttons. These are still some tweaks needed to make this really workable, but should still work well enough for simply viewing and tweaking existing Keying Sets created using other means.

Additional bugfixes:
* Adjusted the size of labels on properties that had a 'label' for their name. Now it uses 1/3 of the total width instead, which looks much better for most cases.
* Added missing entries for adding Force Fields from the Info-header 'Add' menu. At some point we should unify this menu with the popup operator's one, since this is exactly the kind of situation we had hoped in avoid with new UI architectures.
* Moved all the operator defines for keyframing stuff to the 'intern' anim header instead

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/buttons_scene.py
    trunk/blender/release/scripts/ui/space_info.py
    trunk/blender/source/blender/blenkernel/intern/anim_sys.c
    trunk/blender/source/blender/editors/animation/anim_intern.h
    trunk/blender/source/blender/editors/animation/anim_ops.c
    trunk/blender/source/blender/editors/animation/keyingsets.c
    trunk/blender/source/blender/editors/include/ED_keyframing.h
    trunk/blender/source/blender/editors/interface/interface_layout.c
    trunk/blender/source/blender/makesdna/DNA_anim_types.h
    trunk/blender/source/blender/makesrna/intern/rna_animation.c

Modified: trunk/blender/release/scripts/ui/buttons_scene.py
===================================================================
--- trunk/blender/release/scripts/ui/buttons_scene.py	2009-10-02 23:36:02 UTC (rev 23611)
+++ trunk/blender/release/scripts/ui/buttons_scene.py	2009-10-03 04:21:38 UTC (rev 23612)
@@ -1,6 +1,14 @@
 
 import bpy
 
+class SceneButtonsPanel(bpy.types.Panel):
+	__space_type__ = 'PROPERTIES'
+	__region_type__ = 'WINDOW'
+	__context__ = "scene"
+	
+	def poll(self, context):
+		return (context.scene != None)
+
 class RenderButtonsPanel(bpy.types.Panel):
 	__space_type__ = 'PROPERTIES'
 	__region_type__ = 'WINDOW'
@@ -450,6 +458,84 @@
 		row.active = (unit.system != 'NONE')
 		row.itemR(unit, "scale_length", text="Scale")
 		row.itemR(unit, "use_separate")
+		
+class SCENE_PT_keying_sets(SceneButtonsPanel):
+	__label__ = "Keying Sets"
+	__default_closed__ = True
+	
+	def draw(self, context):
+		layout = self.layout
+		
+		scene = context.scene
+		
+		row = layout.row()
+		
+		col = row.column()
+		col.template_list(scene, "keying_sets", scene, "active_keying_set_index", rows=2)
+		
+		col = row.column(align=True)
+		col.itemO("anim.keying_set_add", icon='ICON_ZOOMIN', text="")
+		col.itemO("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="")
+		
+		ks = scene.active_keying_set
+		if ks:
+			row = layout.row()
+			
+			col = row.column()
+			col.itemR(ks, "name")
+			col.itemR(ks, "absolute")
+			
+			col = row.column()
+			col.itemL(text="Keyframing Settings:")
+			col.itemR(ks, "insertkey_needed", text="Needed")
+			col.itemR(ks, "insertkey_visual", text="Visual")
+			
+class SCENE_PT_keying_set_paths(SceneButtonsPanel):
+	__label__ = "Active Keying Set"
+	__default_closed__ = True
+	
+	def poll(self, context):
+		return (context.scene != None) and (context.scene.active_keying_set != None)
+	
+	def draw(self, context):
+		layout = self.layout
+		
+		scene = context.scene
+		ks = scene.active_keying_set
+		
+		row = layout.row()
+		
+		col = row.column()
+		col.template_list(ks, "paths", ks, "active_path_index", rows=2)
+		
+		col = row.column(align=True)
+		col.itemO("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="")
+		col.itemO("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="")
+		
+		ksp = ks.active_path
+		if ksp:
+			col = layout.column()
+			col.itemL(text="Target:")
+			col.itemR(ksp, "id")
+			col.itemR(ksp, "rna_path")
+			
+			
+			row = layout.row()
+			
+			col = row.column()
+			col.itemL(text="Array Target:")
+			col.itemR(ksp, "entire_array")
+			if ksp.entire_array == False:
+				col.itemR(ksp, "array_index")
+				
+			col = row.column()
+			col.itemL(text="F-Curve Grouping:")
+			col.itemR(ksp, "grouping")
+			if ksp.grouping == 'NAMED':
+				col.itemR(ksp, "group")
+				
+			
+			
 
 class SCENE_PT_physics(RenderButtonsPanel):
 	__label__ = "Gravity"
@@ -479,4 +565,6 @@
 bpy.types.register(SCENE_PT_post_processing)
 bpy.types.register(SCENE_PT_stamp)
 bpy.types.register(SCENE_PT_unit)
+bpy.types.register(SCENE_PT_keying_sets)
+bpy.types.register(SCENE_PT_keying_set_paths)
 bpy.types.register(SCENE_PT_physics)

Modified: trunk/blender/release/scripts/ui/space_info.py
===================================================================
--- trunk/blender/release/scripts/ui/space_info.py	2009-10-02 23:36:02 UTC (rev 23611)
+++ trunk/blender/release/scripts/ui/space_info.py	2009-10-03 04:21:38 UTC (rev 23612)
@@ -144,6 +144,10 @@
 
 		layout.item_enumO("object.add", "type", 'CAMERA', icon='ICON_OUTLINER_OB_CAMERA')
 		layout.item_menu_enumO("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP')
+		
+		layout.itemS()
+		
+		layout.item_menu_enumO("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY')
 
 class INFO_MT_game(bpy.types.Menu):
 	__space_type__ = 'INFO'

Modified: trunk/blender/source/blender/blenkernel/intern/anim_sys.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/anim_sys.c	2009-10-02 23:36:02 UTC (rev 23611)
+++ trunk/blender/source/blender/blenkernel/intern/anim_sys.c	2009-10-03 04:21:38 UTC (rev 23612)
@@ -211,7 +211,7 @@
 
 	for (strip=strips->first; strip; strip=strip->next) {
 		if (strip->act) make_local_action(strip->act);
-		//if (strip->remap && strip->remap->target) make_local_action(strip->remap->target);
+		if (strip->remap && strip->remap->target) make_local_action(strip->remap->target);
 		
 		make_local_strips(&strip->strips);
 	}

Modified: trunk/blender/source/blender/editors/animation/anim_intern.h
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_intern.h	2009-10-02 23:36:02 UTC (rev 23611)
+++ trunk/blender/source/blender/editors/animation/anim_intern.h	2009-10-03 04:21:38 UTC (rev 23612)
@@ -39,4 +39,44 @@
 /* Main KeyingSet operations API call */
 short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks);
 
+/* Operator Define Prototypes ------------------- */
+
+/* Main Keyframe Management operators: 
+ *	These handle keyframes management from various spaces. They only make use of
+ * 	Keying Sets.
+ */
+void ANIM_OT_insert_keyframe(struct wmOperatorType *ot);
+void ANIM_OT_delete_keyframe(struct wmOperatorType *ot);
+
+/* Main Keyframe Management operators: 
+ *	These handle keyframes management from various spaces. They will handle the menus 
+ * 	required for each space.
+ */
+void ANIM_OT_insert_keyframe_menu(struct wmOperatorType *ot);
+void ANIM_OT_delete_keyframe_v3d(struct wmOperatorType *ot);
+
+/* Keyframe managment operators for UI buttons (RMB menu). */
+void ANIM_OT_insert_keyframe_button(struct wmOperatorType *ot);
+void ANIM_OT_delete_keyframe_button(struct wmOperatorType *ot);
+
+/* .......... */
+
+/* KeyingSet managment operators for UI buttons (RMB menu) */
+void ANIM_OT_add_keyingset_button(struct wmOperatorType *ot);
+void ANIM_OT_remove_keyingset_button(struct wmOperatorType *ot);
+
+/* KeyingSet management operators for RNA collections/UI buttons */
+void ANIM_OT_keying_set_add(struct wmOperatorType *ot);
+void ANIM_OT_keying_set_remove(struct wmOperatorType *ot);
+void ANIM_OT_keying_set_path_add(struct wmOperatorType *ot);
+void ANIM_OT_keying_set_path_remove(struct wmOperatorType *ot);
+
+/* .......... */
+
+/* Driver management operators for UI buttons (RMB menu) */
+void ANIM_OT_add_driver_button(struct wmOperatorType *ot);
+void ANIM_OT_remove_driver_button(struct wmOperatorType *ot);
+void ANIM_OT_copy_driver_button(struct wmOperatorType *ot);
+void ANIM_OT_paste_driver_button(struct wmOperatorType *ot);
+
 #endif // ANIM_INTERN_H

Modified: trunk/blender/source/blender/editors/animation/anim_ops.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_ops.c	2009-10-02 23:36:02 UTC (rev 23611)
+++ trunk/blender/source/blender/editors/animation/anim_ops.c	2009-10-03 04:21:38 UTC (rev 23612)
@@ -31,6 +31,7 @@
 
 #include "MEM_guardedalloc.h"
 
+#include "DNA_anim_types.h"
 #include "DNA_action_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_screen_types.h"
@@ -41,6 +42,7 @@
 
 #include "BKE_context.h"
 #include "BKE_utildefines.h"
+#include "BKE_sound.h"
 
 #include "UI_interface.h"
 #include "UI_view2d.h"
@@ -52,11 +54,11 @@
 #include "WM_types.h"
 
 #include "ED_anim_api.h"
-#include "ED_keyframing.h" // XXX remove?
+#include "ED_keyframing.h"
 #include "ED_markers.h"
 #include "ED_screen.h"
 
-#include "BKE_sound.h"
+#include "anim_intern.h"
 
 /* ********************** frame change operator ***************************/
 
@@ -395,15 +397,21 @@
 	WM_operatortype_append(ANIM_OT_delete_keyframe_v3d);
 	WM_operatortype_append(ANIM_OT_insert_keyframe_button);
 	WM_operatortype_append(ANIM_OT_delete_keyframe_button);
-
 	
+	
 	WM_operatortype_append(ANIM_OT_add_driver_button);
 	WM_operatortype_append(ANIM_OT_remove_driver_button);
 	WM_operatortype_append(ANIM_OT_copy_driver_button);
 	WM_operatortype_append(ANIM_OT_paste_driver_button);
 	
+	
 	WM_operatortype_append(ANIM_OT_add_keyingset_button);
 	WM_operatortype_append(ANIM_OT_remove_keyingset_button);
+	
+	WM_operatortype_append(ANIM_OT_keying_set_add);
+	WM_operatortype_append(ANIM_OT_keying_set_remove);
+	WM_operatortype_append(ANIM_OT_keying_set_path_add);
+	WM_operatortype_append(ANIM_OT_keying_set_path_remove);
 }
 
 void ED_keymap_anim(wmWindowManager *wm)

Modified: trunk/blender/source/blender/editors/animation/keyingsets.c
===================================================================
--- trunk/blender/source/blender/editors/animation/keyingsets.c	2009-10-02 23:36:02 UTC (rev 23611)
+++ trunk/blender/source/blender/editors/animation/keyingsets.c	2009-10-03 04:21:38 UTC (rev 23612)
@@ -78,6 +78,215 @@
 #include "anim_intern.h"
 
 /* ************************************************** */
+/* KEYING SETS - OPERATORS (for use in UI panels) */
+/* These operators are really duplication of existing functionality, but just for completeness,
+ * they're here too, and will give the basic data needed...
+ */
+
+/* poll callback for adding default KeyingSet */
+static int keyingset_poll_default_add (bContext *C)
+{
+	/* as long as there's an active Scene, it's fine */
+	return (CTX_data_scene(C) != NULL);
+}
+
+/* poll callback for editing active KeyingSet */
+static int keyingset_poll_active_edit (bContext *C)
+{
+	Scene *scene= CTX_data_scene(C);
+	
+	if (scene == NULL)
+		return 0;
+	
+	/* there must be an active KeyingSet (and KeyingSets) */
+	return ((scene->active_keyingset > 0) && (scene->keyingsets.first));
+}
+
+/* poll callback for editing active KeyingSet Path */
+static int keyingset_poll_activePath_edit (bContext *C)
+{
+	Scene *scene= CTX_data_scene(C);
+	KeyingSet *ks;
+	
+	if (scene == NULL)
+		return 0;
+	if (scene->active_keyingset <= 0)
+		return 0;
+	else
+		ks= BLI_findlink(&scene->keyingsets, scene->active_keyingset-1);
+	
+	/* there must be an active KeyingSet and an active path */
+	return ((ks) && (ks->paths.first) && (ks->active_path > 0));
+}
+
+ 
+/* Add a Default (Empty) Keying Set ------------------------- */
+
+static int add_default_keyingset_exec (bContext *C, wmOperator *op)
+{
+	Scene *scene= CTX_data_scene(C);
+	short flag=0, keyingflag=0;
+	
+	/* validate flags 
+	 *	- absolute KeyingSets should be created by default
+	 */
+	flag |= KEYINGSET_ABSOLUTE;
+	
+	if (IS_AUTOKEY_FLAG(AUTOMATKEY)) 
+		keyingflag |= INSERTKEY_MATRIX;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list