diff options
-rw-r--r-- | source/blender/editors/animation/anim_filter.c | 25 | ||||
-rw-r--r-- | source/blender/editors/armature/poselib.c | 102 | ||||
-rw-r--r-- | source/blender/editors/armature/poseobject.c | 47 | ||||
-rw-r--r-- | source/blender/editors/object/object_select.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_text/text_ops.c | 7 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_object.c | 2 |
6 files changed, 86 insertions, 99 deletions
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index 6b953d2460d..fef910a85a3 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -750,19 +750,14 @@ static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction /* loop over groups */ // TODO: in future, should we expect to need nested groups? for (agrp= act->groups.first; agrp; agrp= agrp->next) { - ListBase tmp_channels = {NULL, NULL}; - short grp_channel=0; - int tmp_items = 0; - - /* add this group as a channel first */ if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) { /* check if filtering by selection */ if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) { ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id); if (ale) { - BLI_addtail(&tmp_channels, ale); - grp_channel=1; + BLI_addtail(anim_data, ale); + items++; } } } @@ -792,25 +787,13 @@ static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction if ( !(filter_mode & ANIMFILTER_CURVEVISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) ) { if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) { - // XXX the 'owner' info here needs review... - tmp_items += animdata_filter_fcurves(&tmp_channels, ads, agrp->channels.first, agrp, owner, ownertype, filter_mode, owner_id); + items += animdata_filter_fcurves(anim_data, ads, agrp->channels.first, agrp, owner, ownertype, filter_mode, owner_id); } } } } - /* check group had any F-Curves visible */ - // TODO: this needs more work to truly work so that closed group with no visible channels, and visible group with visible channels are differentiated between - if (/*tmp_items*/1) { - /* add the temp channels to the list of filtered channels */ - addlisttolist(anim_data, &tmp_channels); - - /* increase the counts as appropriate */ - items += tmp_items + grp_channel; - } - else { - BLI_freelistN(&tmp_channels); - } + // TODO: but we still need to deal with the case when the group may be closed, but it has no visible curves too } /* loop over un-grouped F-Curves (only if we're not only considering those channels in the animive group) */ diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index d34da201ef5..b06c7286859 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -285,6 +285,9 @@ static void poselib_add_menu_invoke__replacemenu (bContext *C, uiLayout *layout, bAction *act= ob->poselib; TimeMarker *marker; + /* set the operator execution context correctly */ + uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT); + /* add each marker to this menu */ for (marker= act->markers.first; marker; marker= marker->next) uiItemIntO(layout, marker->name, ICON_ARMATURE_DATA, "POSELIB_OT_pose_add", "frame", marker->frame); @@ -398,7 +401,6 @@ static int poselib_add_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } - void POSELIB_OT_pose_add (wmOperatorType *ot) { /* identifiers */ @@ -421,35 +423,35 @@ void POSELIB_OT_pose_add (wmOperatorType *ot) /* ----- */ -static int poselib_stored_pose_menu_invoke (bContext *C, wmOperator *op, wmEvent *evt) +static EnumPropertyItem *poselib_stored_pose_itemf(bContext *C, PointerRNA *ptr, int *free) { Object *ob= CTX_data_active_object(C); bAction *act= (ob) ? ob->poselib : NULL; TimeMarker *marker; - uiPopupMenu *pup; - uiLayout *layout; - int i; - - /* sanity check */ - if (ELEM(NULL, ob, act)) - return OPERATOR_CANCELLED; - - /* start building */ - pup= uiPupMenuBegin(C, op->type->name, 0); - layout= uiPupMenuLayout(pup); - uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT); - - /* add each marker to this menu */ - for (marker=act->markers.first, i=0; marker; marker= marker->next, i++) - uiItemIntO(layout, marker->name, ICON_ARMATURE_DATA, op->idname, "index", i); - - uiPupMenuEnd(C, pup); - - /* this operator is only for a menu, not used further */ - return OPERATOR_CANCELLED; -} + EnumPropertyItem *item= NULL, item_tmp; + int totitem= 0; + int i= 0; + + if (C == NULL) + return NULL; + + memset(&item_tmp, 0, sizeof(item_tmp)); + /* add each marker to the list */ + for (marker=act->markers.first, i=0; marker; marker= marker->next, i++) { + item_tmp.identifier= item_tmp.name= marker->name; + item_tmp.icon= ICON_ARMATURE_DATA; + item_tmp.value= i; + RNA_enum_item_add(&item, &totitem, &item_tmp); + } + if (i > 0) { + *free= 1; + return item; + } + else + return NULL; +} static int poselib_remove_exec (bContext *C, wmOperator *op) { @@ -465,7 +467,7 @@ static int poselib_remove_exec (bContext *C, wmOperator *op) } /* get index (and pointer) of pose to remove */ - marker= BLI_findlink(&act->markers, RNA_int_get(op->ptr, "index")); + marker= BLI_findlink(&act->markers, RNA_int_get(op->ptr, "pose")); if (marker == NULL) { BKE_report(op->reports, RPT_ERROR, "Invalid index for Pose"); return OPERATOR_CANCELLED; @@ -499,13 +501,18 @@ static int poselib_remove_exec (bContext *C, wmOperator *op) void POSELIB_OT_pose_remove (wmOperatorType *ot) { + PropertyRNA *prop; + static EnumPropertyItem prop_poses_dummy_types[] = { + {0, NULL, 0, NULL, NULL} + }; + /* identifiers */ ot->name= "PoseLib Remove Pose"; ot->idname= "POSELIB_OT_pose_remove"; ot->description= "Remove nth pose from the active Pose Library"; /* api callbacks */ - ot->invoke= poselib_stored_pose_menu_invoke; + ot->invoke= WM_menu_invoke; ot->exec= poselib_remove_exec; ot->poll= ED_operator_posemode; @@ -513,10 +520,37 @@ void POSELIB_OT_pose_remove (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "The index of the pose to remove", 0, INT_MAX); + prop= RNA_def_enum(ot->srna, "pose", prop_poses_dummy_types, 0, "Pose", "The pose to remove"); + RNA_def_enum_funcs(prop, poselib_stored_pose_itemf); } - +static int poselib_rename_invoke (bContext *C, wmOperator *op, wmEvent *evt) +{ + Object *ob= CTX_data_active_object(C); + bAction *act= (ob) ? ob->poselib : NULL; + TimeMarker *marker; + + /* check if valid poselib */ + if (act == NULL) { + BKE_report(op->reports, RPT_ERROR, "Object doesn't have PoseLib data"); + return OPERATOR_CANCELLED; + } + + /* get index (and pointer) of pose to remove */ + marker= BLI_findlink(&act->markers, act->active_marker-1); + if (marker == NULL) { + BKE_report(op->reports, RPT_ERROR, "Invalid index for Pose"); + return OPERATOR_CANCELLED; + } + else { + /* use the existing name of the marker as the name, and use the active marker as the one to rename */ + RNA_enum_set(op->ptr, "pose", act->active_marker-1); + RNA_string_set(op->ptr, "name", marker->name); + } + + /* part to sync with other similar operators... */ + return WM_operator_props_popup(C, op, evt); +} static int poselib_rename_exec (bContext *C, wmOperator *op) { @@ -532,7 +566,7 @@ static int poselib_rename_exec (bContext *C, wmOperator *op) } /* get index (and pointer) of pose to remove */ - marker= BLI_findlink(&act->markers, RNA_int_get(op->ptr, "index")); + marker= BLI_findlink(&act->markers, RNA_int_get(op->ptr, "pose")); if (marker == NULL) { BKE_report(op->reports, RPT_ERROR, "Invalid index for Pose"); return OPERATOR_CANCELLED; @@ -551,13 +585,18 @@ static int poselib_rename_exec (bContext *C, wmOperator *op) void POSELIB_OT_pose_rename (wmOperatorType *ot) { + PropertyRNA *prop; + static EnumPropertyItem prop_poses_dummy_types[] = { + {0, NULL, 0, NULL, NULL} + }; + /* identifiers */ ot->name= "PoseLib Rename Pose"; ot->idname= "POSELIB_OT_pose_rename"; ot->description= "Rename nth pose from the active Pose Library"; /* api callbacks */ - ot->invoke= poselib_stored_pose_menu_invoke; + ot->invoke= poselib_rename_invoke; ot->exec= poselib_rename_exec; ot->poll= ED_operator_posemode; @@ -565,7 +604,8 @@ void POSELIB_OT_pose_rename (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "The index of the pose to remove", 0, INT_MAX); + prop= RNA_def_enum(ot->srna, "pose", prop_poses_dummy_types, 0, "Pose", "The pose to rename"); + RNA_def_enum_funcs(prop, poselib_stored_pose_itemf); RNA_def_string(ot->srna, "name", "RenamedPose", 64, "New Pose Name", "New name for pose"); } diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 1531d922e04..57fe083b319 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -1728,31 +1728,6 @@ void pose_activate_flipped_bone(Scene *scene) /* ********************************************** */ /* Present a popup to get the layers that should be used */ -// TODO: move to wm? -static uiBlock *wm_layers_select_create_menu(bContext *C, ARegion *ar, void *arg_op) -{ - wmOperator *op= arg_op; - uiBlock *block; - uiLayout *layout; - uiStyle *style= U.uistyles.first; - - block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); - uiBlockClearFlag(block, UI_BLOCK_LOOP); - uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN); - - layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 150, 20, style); - uiItemL(layout, op->type->name, 0); - uiTemplateLayers(layout, op->ptr, "layers"); /* must have a property named layers setup */ - - uiPopupBoundsBlock(block, 4.0f, 0, 0); - uiEndBlock(C, block); - - return block; -} - -/* ------------------- */ - -/* Present a popup to get the layers that should be used */ static int pose_armature_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt) { Object *ob= CTX_data_active_object(C); @@ -1769,10 +1744,8 @@ static int pose_armature_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev RNA_boolean_get_array(&ptr, "layer", layers); RNA_boolean_set_array(op->ptr, "layers", layers); - /* part to sync with other similar operators... */ - /* pass on operator, so return modal */ - uiPupBlockOperator(C, wm_layers_select_create_menu, op, WM_OP_EXEC_DEFAULT); - return OPERATOR_RUNNING_MODAL|OPERATOR_PASS_THROUGH; + /* part to sync with other similar operators... */ + return WM_operator_props_popup(C, op, evt); } /* Set the visible layers for the active armature (edit and pose modes) */ @@ -1813,7 +1786,7 @@ void POSE_OT_armature_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_array(ot->srna, "layers", 16, NULL, "Layers", "Armature layers to make visible."); + RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible"); } void ARMATURE_OT_armature_layers (wmOperatorType *ot) @@ -1832,7 +1805,7 @@ void ARMATURE_OT_armature_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_array(ot->srna, "layers", 16, NULL, "Layers", "Armature layers to make visible."); + RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible"); } /* ------------------- */ @@ -1861,9 +1834,7 @@ static int pose_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt) RNA_boolean_set_array(op->ptr, "layers", layers); /* part to sync with other similar operators... */ - /* pass on operator, so return modal */ - uiPupBlockOperator(C, wm_layers_select_create_menu, op, WM_OP_EXEC_DEFAULT); - return OPERATOR_RUNNING_MODAL|OPERATOR_PASS_THROUGH; + return WM_operator_props_popup(C, op, evt); } /* Set the visible layers for the active armature (edit and pose modes) */ @@ -1908,7 +1879,7 @@ void POSE_OT_bone_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_array(ot->srna, "layers", 16, NULL, "Layers", "Armature layers that bone belongs to."); + RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to"); } /* ------------------- */ @@ -1937,9 +1908,7 @@ static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev RNA_boolean_set_array(op->ptr, "layers", layers); /* part to sync with other similar operators... */ - /* pass on operator, so return modal */ - uiPupBlockOperator(C, wm_layers_select_create_menu, op, WM_OP_EXEC_DEFAULT); - return OPERATOR_RUNNING_MODAL|OPERATOR_PASS_THROUGH; + return WM_operator_props_popup(C, op, evt); } /* Set the visible layers for the active armature (edit and pose modes) */ @@ -1984,7 +1953,7 @@ void ARMATURE_OT_bone_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_array(ot->srna, "layers", 16, NULL, "Layers", "Armature layers that bone belongs to."); + RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to"); } /* ********************************************** */ diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index 4fa0e04728f..27713cc2fa9 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -171,7 +171,7 @@ void OBJECT_OT_select_by_type(wmOperatorType *ot) /*********************** Selection by Links *********************/ static EnumPropertyItem prop_select_linked_types[] = { - {1, "IPO", 0, "Object IPO", ""}, // XXX depreceated animation system stuff... + //{1, "IPO", 0, "Object IPO", ""}, // XXX depreceated animation system stuff... {2, "OBDATA", 0, "Ob Data", ""}, {3, "MATERIAL", 0, "Material", ""}, {4, "TEXTURE", 0, "Texture", ""}, diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 44f7a097a18..a7b40deda22 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -1628,10 +1628,6 @@ static int jump_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -// XXX invoke -// short tmp= txt_get_span(text->lines.first, text->curl)+1; -// button(&tmp, 1, nlines, "Jump to line:")) - void TEXT_OT_jump(wmOperatorType *ot) { /* identifiers */ @@ -1640,6 +1636,7 @@ void TEXT_OT_jump(wmOperatorType *ot) ot->description= "Jump cursor to line."; /* api callbacks */ + ot->invoke= WM_operator_props_popup; ot->exec= jump_exec; ot->poll= text_edit_poll; @@ -1647,7 +1644,7 @@ void TEXT_OT_jump(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER; /* properties */ - RNA_def_int(ot->srna, "line", 1, INT_MAX, 1, "Line", "Line number to jump to.", 1, 10000); + RNA_def_int(ot->srna, "line", 1, 1, INT_MAX, "Line", "Line number to jump to.", 1, 10000); } /******************* delete operator **********************/ diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index b91e5952c8f..6f2d455f660 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1192,7 +1192,6 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_select_update"); /* parent and track */ - prop= RNA_def_property(srna, "parent", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_funcs(prop, NULL, "rna_Object_parent_set", NULL); RNA_def_property_flag(prop, PROP_EDITABLE); @@ -1238,7 +1237,6 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); /* proxy */ - prop= RNA_def_property(srna, "proxy", PROP_POINTER, PROP_NONE); RNA_def_property_ui_text(prop, "Proxy", "Library object this proxy object controls."); |