[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48828] trunk/blender: Operator to move mask layers up and down in the list
Sergey Sharybin
sergey.vfx at gmail.com
Wed Jul 11 12:37:39 CEST 2012
Revision: 48828
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48828
Author: nazgul
Date: 2012-07-11 10:37:38 +0000 (Wed, 11 Jul 2012)
Log Message:
-----------
Operator to move mask layers up and down in the list
Modified Paths:
--------------
trunk/blender/release/scripts/startup/bl_ui/space_clip.py
trunk/blender/source/blender/editors/mask/mask_edit.c
trunk/blender/source/blender/editors/mask/mask_intern.h
trunk/blender/source/blender/editors/mask/mask_ops.c
Modified: trunk/blender/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_clip.py 2012-07-11 08:31:54 UTC (rev 48827)
+++ trunk/blender/release/scripts/startup/bl_ui/space_clip.py 2012-07-11 10:37:38 UTC (rev 48828)
@@ -677,26 +677,36 @@
sc = context.space_data
mask = sc.mask
+ active_layer = mask.layers.active
+ rows = 5 if active_layer else 2
+
row = layout.row()
row.template_list(mask, "layers",
- mask, "active_layer_index", rows=3)
+ mask, "active_layer_index", rows=rows)
sub = row.column(align=True)
sub.operator("mask.layer_new", icon='ZOOMIN', text="")
sub.operator("mask.layer_remove", icon='ZOOMOUT', text="")
- active = mask.layers.active
- if active:
- layout.prop(active, "name")
+ if active_layer:
+ sub.separator()
+ props = sub.operator("mask.layer_move", icon='TRIA_UP', text="")
+ props.direction = 'UP'
+
+ props = sub.operator("mask.layer_move", icon='TRIA_DOWN', text="")
+ props.direction = 'DOWN'
+
+ layout.prop(active_layer, "name")
+
# blending
row = layout.row(align=True)
- row.prop(active, "alpha")
- row.prop(active, "invert", text="", icon='IMAGE_ALPHA')
+ row.prop(active_layer, "alpha")
+ row.prop(active_layer, "invert", text="", icon='IMAGE_ALPHA')
- layout.prop(active, "blend")
+ layout.prop(active_layer, "blend")
class CLIP_PT_active_mask_spline(Panel):
Modified: trunk/blender/source/blender/editors/mask/mask_edit.c
===================================================================
--- trunk/blender/source/blender/editors/mask/mask_edit.c 2012-07-11 08:31:54 UTC (rev 48827)
+++ trunk/blender/source/blender/editors/mask/mask_edit.c 2012-07-11 10:37:38 UTC (rev 48828)
@@ -238,6 +238,9 @@
WM_operatortype_append(MASK_OT_shape_key_clear);
WM_operatortype_append(MASK_OT_shape_key_feather_reset);
WM_operatortype_append(MASK_OT_shape_key_rekey);
+
+ /* layers */
+ WM_operatortype_append(MASK_OT_layer_move);
}
void ED_keymap_mask(wmKeyConfig *keyconf)
Modified: trunk/blender/source/blender/editors/mask/mask_intern.h
===================================================================
--- trunk/blender/source/blender/editors/mask/mask_intern.h 2012-07-11 08:31:54 UTC (rev 48827)
+++ trunk/blender/source/blender/editors/mask/mask_intern.h 2012-07-11 10:37:38 UTC (rev 48828)
@@ -70,6 +70,8 @@
struct MaskLayer **masklay_r, struct MaskSpline **spline_r, int *is_handle_r,
float *score);
+void MASK_OT_layer_move(struct wmOperatorType *ot);
+
/* mask_relationships.c */
void MASK_OT_parent_set(struct wmOperatorType *ot);
void MASK_OT_parent_clear(struct wmOperatorType *ot);
Modified: trunk/blender/source/blender/editors/mask/mask_ops.c
===================================================================
--- trunk/blender/source/blender/editors/mask/mask_ops.c 2012-07-11 08:31:54 UTC (rev 48827)
+++ trunk/blender/source/blender/editors/mask/mask_ops.c 2012-07-11 10:37:38 UTC (rev 48828)
@@ -1341,3 +1341,74 @@
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}
+
+/******************** move mask layer operator *********************/
+
+static int mask_layer_move_poll(bContext *C)
+{
+ if (ED_maskedit_mask_poll(C)) {
+ Mask *mask = CTX_data_edit_mask(C);
+
+ return mask->masklay_tot > 0;
+ }
+
+ return FALSE;
+}
+
+static int mask_layer_move_exec(bContext *C, wmOperator *op)
+{
+ Mask *mask = CTX_data_edit_mask(C);
+ MaskLayer *mask_layer = BLI_findlink(&mask->masklayers, mask->masklay_act);
+ MaskLayer *mask_layer_other;
+ int direction = RNA_enum_get(op->ptr, "direction");
+
+ if (!mask_layer)
+ return OPERATOR_CANCELLED;
+
+ if (direction == -1) {
+ mask_layer_other = mask_layer->prev;
+
+ if (!mask_layer_other)
+ return OPERATOR_CANCELLED;
+
+ BLI_remlink(&mask->masklayers, mask_layer);
+ BLI_insertlinkbefore(&mask->masklayers, mask_layer_other, mask_layer);
+ mask->masklay_act--;
+ }
+ else if (direction == 1) {
+ mask_layer_other = mask_layer->next;
+
+ if (!mask_layer_other)
+ return OPERATOR_CANCELLED;
+
+ BLI_remlink(&mask->masklayers, mask_layer);
+ BLI_insertlinkafter(&mask->masklayers, mask_layer_other, mask_layer);
+ mask->masklay_act++;
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+void MASK_OT_layer_move(wmOperatorType *ot)
+{
+ static EnumPropertyItem direction_items[] = {
+ {-1, "UP", 0, "Up", ""},
+ {1, "DOWN", 0, "Down", ""},
+ {0, NULL, 0, NULL, NULL}
+ };
+
+ /* identifiers */
+ ot->name = "Move Layer";
+ ot->description = "Move the active layer up/down in the list";
+ ot->idname = "MASK_OT_layer_move";
+
+ /* api callbacks */
+ ot->exec = mask_layer_move_exec;
+ ot->poll = mask_layer_move_poll;
+
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+
+ /* properties */
+ RNA_def_enum(ot->srna, "direction", direction_items, 0, "Direction", "Direction to move the active layer");
+}
More information about the Bf-blender-cvs
mailing list