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. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs