VSE: Add options to select neighboring handles
Options added to `sequencer.select_handles()` operator. Reviewed By: ISS Differential Revision: https://developer.blender.org/D7707
This commit is contained in:
parent
864c806863
commit
5a69f70751
|
@ -453,6 +453,11 @@ class SEQUENCER_MT_select_handle(Menu):
|
|||
layout.operator("sequencer.select_handles", text="Left").side = 'LEFT'
|
||||
layout.operator("sequencer.select_handles", text="Right").side = 'RIGHT'
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("sequencer.select_handles", text="Both Neighbors").side = 'BOTH_NEIGHBORS'
|
||||
layout.operator("sequencer.select_handles", text="Left Neighbor").side = 'LEFT_NEIGHBOR'
|
||||
layout.operator("sequencer.select_handles", text="Right Neighbor").side = 'RIGHT_NEIGHBOR'
|
||||
|
||||
class SEQUENCER_MT_select_channel(Menu):
|
||||
bl_label = "Select Channel"
|
||||
|
|
|
@ -902,6 +902,25 @@ void SEQUENCER_OT_select_linked(wmOperatorType *ot)
|
|||
/** \name Select Handles Operator
|
||||
* \{ */
|
||||
|
||||
enum {
|
||||
SEQ_SELECT_HANDLES_SIDE_LEFT,
|
||||
SEQ_SELECT_HANDLES_SIDE_RIGHT,
|
||||
SEQ_SELECT_HANDLES_SIDE_BOTH,
|
||||
SEQ_SELECT_HANDLES_SIDE_LEFT_NEIGHBOR,
|
||||
SEQ_SELECT_HANDLES_SIDE_RIGHT_NEIGHBOR,
|
||||
SEQ_SELECT_HANDLES_SIDE_BOTH_NEIGHBORS,
|
||||
};
|
||||
|
||||
static const EnumPropertyItem prop_select_handles_side_types[] = {
|
||||
{SEQ_SELECT_HANDLES_SIDE_LEFT, "LEFT", 0, "Left", ""},
|
||||
{SEQ_SELECT_HANDLES_SIDE_RIGHT, "RIGHT", 0, "Right", ""},
|
||||
{SEQ_SELECT_HANDLES_SIDE_BOTH, "BOTH", 0, "Both", ""},
|
||||
{SEQ_SELECT_HANDLES_SIDE_LEFT_NEIGHBOR, "LEFT_NEIGHBOR", 0, "Left Neighbor", ""},
|
||||
{SEQ_SELECT_HANDLES_SIDE_RIGHT_NEIGHBOR, "RIGHT_NEIGHBOR", 0, "Right Neighbor", ""},
|
||||
{SEQ_SELECT_HANDLES_SIDE_BOTH_NEIGHBORS, "BOTH_NEIGHBORS", 0, "Both Neighbors", ""},
|
||||
{0, NULL, 0, NULL, NULL},
|
||||
};
|
||||
|
||||
static int sequencer_select_handles_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
@ -911,18 +930,56 @@ static int sequencer_select_handles_exec(bContext *C, wmOperator *op)
|
|||
|
||||
for (seq = ed->seqbasep->first; seq; seq = seq->next) {
|
||||
if (seq->flag & SELECT) {
|
||||
Sequence *l_neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_LEFT, -1);
|
||||
Sequence *r_neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_RIGHT, -1);
|
||||
|
||||
switch (sel_side) {
|
||||
case SEQ_SIDE_LEFT:
|
||||
case SEQ_SELECT_HANDLES_SIDE_LEFT:
|
||||
seq->flag &= ~SEQ_RIGHTSEL;
|
||||
seq->flag |= SEQ_LEFTSEL;
|
||||
break;
|
||||
case SEQ_SIDE_RIGHT:
|
||||
case SEQ_SELECT_HANDLES_SIDE_RIGHT:
|
||||
seq->flag &= ~SEQ_LEFTSEL;
|
||||
seq->flag |= SEQ_RIGHTSEL;
|
||||
break;
|
||||
case SEQ_SIDE_BOTH:
|
||||
case SEQ_SELECT_HANDLES_SIDE_BOTH:
|
||||
seq->flag |= SEQ_LEFTSEL | SEQ_RIGHTSEL;
|
||||
break;
|
||||
case SEQ_SELECT_HANDLES_SIDE_LEFT_NEIGHBOR:
|
||||
if (l_neighbor) {
|
||||
if (!(l_neighbor->flag & SELECT)) {
|
||||
l_neighbor->flag |= SEQ_RIGHTSEL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SEQ_SELECT_HANDLES_SIDE_RIGHT_NEIGHBOR:
|
||||
if (r_neighbor) {
|
||||
if (!(r_neighbor->flag & SELECT)) {
|
||||
r_neighbor->flag |= SEQ_LEFTSEL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SEQ_SELECT_HANDLES_SIDE_BOTH_NEIGHBORS:
|
||||
if (l_neighbor) {
|
||||
if (!(l_neighbor->flag & SELECT)) {
|
||||
l_neighbor->flag |= SEQ_RIGHTSEL;
|
||||
}
|
||||
}
|
||||
if (r_neighbor) {
|
||||
if (!(r_neighbor->flag & SELECT)) {
|
||||
r_neighbor->flag |= SEQ_LEFTSEL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Select strips */
|
||||
for (seq = ed->seqbasep->first; seq; seq = seq->next) {
|
||||
if ((seq->flag & SEQ_LEFTSEL) || (seq->flag & SEQ_RIGHTSEL)) {
|
||||
if (!(seq->flag & SELECT)) {
|
||||
seq->flag |= SELECT;
|
||||
recurs_sel_seq(seq);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -951,8 +1008,8 @@ void SEQUENCER_OT_select_handles(wmOperatorType *ot)
|
|||
/* Properties. */
|
||||
RNA_def_enum(ot->srna,
|
||||
"side",
|
||||
prop_side_types,
|
||||
SEQ_SIDE_BOTH,
|
||||
prop_select_handles_side_types,
|
||||
SEQ_SELECT_HANDLES_SIDE_BOTH,
|
||||
"Side",
|
||||
"The side of the handle that is selected");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue