New operator for action and graph editor that centers around current
scene frame, bound to numberpad zero.
This commit is contained in:
@@ -203,6 +203,7 @@ class DOPESHEET_MT_view(Menu):
|
|||||||
layout.separator()
|
layout.separator()
|
||||||
layout.operator("action.view_all")
|
layout.operator("action.view_all")
|
||||||
layout.operator("action.view_selected")
|
layout.operator("action.view_selected")
|
||||||
|
layout.operator("action.view_frame")
|
||||||
|
|
||||||
layout.separator()
|
layout.separator()
|
||||||
layout.operator("screen.area_dupli")
|
layout.operator("screen.area_dupli")
|
||||||
|
@@ -125,6 +125,7 @@ class GRAPH_MT_view(Menu):
|
|||||||
layout.separator()
|
layout.separator()
|
||||||
layout.operator("graph.view_all")
|
layout.operator("graph.view_all")
|
||||||
layout.operator("graph.view_selected")
|
layout.operator("graph.view_selected")
|
||||||
|
layout.operator("graph.view_frame")
|
||||||
|
|
||||||
layout.separator()
|
layout.separator()
|
||||||
layout.operator("screen.area_dupli")
|
layout.operator("screen.area_dupli")
|
||||||
|
@@ -233,7 +233,7 @@ void ED_keymap_view2d(struct wmKeyConfig *keyconf);
|
|||||||
|
|
||||||
void UI_view2d_smooth_view(struct bContext *C, struct ARegion *ar,
|
void UI_view2d_smooth_view(struct bContext *C, struct ARegion *ar,
|
||||||
const struct rctf *cur, const int smooth_viewtx);
|
const struct rctf *cur, const int smooth_viewtx);
|
||||||
|
void UI_view2d_center_frame(struct bContext *C, int smooth_viewtx);
|
||||||
#define UI_MARKER_MARGIN_Y (42 * UI_DPI_FAC)
|
#define UI_MARKER_MARGIN_Y (42 * UI_DPI_FAC)
|
||||||
|
|
||||||
#endif /* __UI_VIEW2D_H__ */
|
#endif /* __UI_VIEW2D_H__ */
|
||||||
|
@@ -1462,6 +1462,21 @@ void UI_view2d_smooth_view(bContext *C, ARegion *ar,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UI_view2d_center_frame(struct bContext *C, int smooth_viewtx)
|
||||||
|
{
|
||||||
|
ARegion *ar = CTX_wm_region(C);
|
||||||
|
Scene *scene = CTX_data_scene(C);
|
||||||
|
float w = BLI_rctf_size_x(&ar->v2d.cur);
|
||||||
|
rctf newrct;
|
||||||
|
|
||||||
|
newrct.xmax = scene->r.cfra + (w / 2);
|
||||||
|
newrct.xmin = scene->r.cfra - (w / 2);
|
||||||
|
newrct.ymax = ar->v2d.cur.ymax;
|
||||||
|
newrct.ymin = ar->v2d.cur.ymin;
|
||||||
|
|
||||||
|
UI_view2d_smooth_view(C, ar, &newrct, smooth_viewtx);
|
||||||
|
}
|
||||||
|
|
||||||
/* only meant for timer usage */
|
/* only meant for timer usage */
|
||||||
static int view2d_smoothview_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
|
static int view2d_smoothview_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
|
||||||
{
|
{
|
||||||
|
@@ -426,6 +426,14 @@ static int actkeys_viewsel_exec(bContext *C, wmOperator *UNUSED(op))
|
|||||||
return actkeys_viewall(C, true);
|
return actkeys_viewall(C, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int actkeys_view_frame_exec(bContext *C, wmOperator *op)
|
||||||
|
{
|
||||||
|
const int smooth_viewtx = WM_operator_smooth_viewtx_get(op);
|
||||||
|
UI_view2d_center_frame(C, smooth_viewtx);
|
||||||
|
|
||||||
|
return OPERATOR_FINISHED;
|
||||||
|
}
|
||||||
|
|
||||||
void ACTION_OT_view_all(wmOperatorType *ot)
|
void ACTION_OT_view_all(wmOperatorType *ot)
|
||||||
{
|
{
|
||||||
/* identifiers */
|
/* identifiers */
|
||||||
@@ -456,6 +464,21 @@ void ACTION_OT_view_selected(wmOperatorType *ot)
|
|||||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ACTION_OT_view_frame(wmOperatorType *ot)
|
||||||
|
{
|
||||||
|
/* identifiers */
|
||||||
|
ot->name = "View Frame";
|
||||||
|
ot->idname = "ACTION_OT_view_frame";
|
||||||
|
ot->description = "Reset viewable area to show range around current frame";
|
||||||
|
|
||||||
|
/* api callbacks */
|
||||||
|
ot->exec = actkeys_view_frame_exec;
|
||||||
|
ot->poll = ED_operator_action_active; /* XXX: unchecked poll to get fsamples working too, but makes modifier damage trickier... */
|
||||||
|
|
||||||
|
/* flags */
|
||||||
|
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||||
|
}
|
||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* GENERAL STUFF */
|
/* GENERAL STUFF */
|
||||||
|
|
||||||
|
@@ -77,6 +77,7 @@ enum eActKeys_ColumnSelect_Mode {
|
|||||||
void ACTION_OT_previewrange_set(struct wmOperatorType *ot);
|
void ACTION_OT_previewrange_set(struct wmOperatorType *ot);
|
||||||
void ACTION_OT_view_all(struct wmOperatorType *ot);
|
void ACTION_OT_view_all(struct wmOperatorType *ot);
|
||||||
void ACTION_OT_view_selected(struct wmOperatorType *ot);
|
void ACTION_OT_view_selected(struct wmOperatorType *ot);
|
||||||
|
void ACTION_OT_view_frame(struct wmOperatorType *ot);
|
||||||
|
|
||||||
void ACTION_OT_copy(struct wmOperatorType *ot);
|
void ACTION_OT_copy(struct wmOperatorType *ot);
|
||||||
void ACTION_OT_paste(struct wmOperatorType *ot);
|
void ACTION_OT_paste(struct wmOperatorType *ot);
|
||||||
|
@@ -91,6 +91,7 @@ void action_operatortypes(void)
|
|||||||
WM_operatortype_append(ACTION_OT_previewrange_set);
|
WM_operatortype_append(ACTION_OT_previewrange_set);
|
||||||
WM_operatortype_append(ACTION_OT_view_all);
|
WM_operatortype_append(ACTION_OT_view_all);
|
||||||
WM_operatortype_append(ACTION_OT_view_selected);
|
WM_operatortype_append(ACTION_OT_view_selected);
|
||||||
|
WM_operatortype_append(ACTION_OT_view_frame);
|
||||||
|
|
||||||
WM_operatortype_append(ACTION_OT_markers_make_local);
|
WM_operatortype_append(ACTION_OT_markers_make_local);
|
||||||
}
|
}
|
||||||
@@ -228,6 +229,8 @@ static void action_keymap_keyframes(wmKeyConfig *keyconf, wmKeyMap *keymap)
|
|||||||
WM_keymap_add_item(keymap, "ACTION_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
|
WM_keymap_add_item(keymap, "ACTION_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
|
||||||
WM_keymap_add_item(keymap, "ACTION_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0);
|
WM_keymap_add_item(keymap, "ACTION_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0);
|
||||||
WM_keymap_add_item(keymap, "ACTION_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0);
|
WM_keymap_add_item(keymap, "ACTION_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0);
|
||||||
|
WM_keymap_add_item(keymap, "ACTION_OT_view_frame", PAD0, KM_PRESS, 0, 0);
|
||||||
|
|
||||||
|
|
||||||
/* animation module */
|
/* animation module */
|
||||||
/* channels list
|
/* channels list
|
||||||
|
@@ -256,6 +256,14 @@ static int graphkeys_view_selected_exec(bContext *C, wmOperator *op)
|
|||||||
return graphkeys_viewall(C, true, include_handles, smooth_viewtx);
|
return graphkeys_viewall(C, true, include_handles, smooth_viewtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int graphkeys_view_frame_exec(bContext *C, wmOperator *op)
|
||||||
|
{
|
||||||
|
const int smooth_viewtx = WM_operator_smooth_viewtx_get(op);
|
||||||
|
UI_view2d_center_frame(C, smooth_viewtx);
|
||||||
|
return OPERATOR_FINISHED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void GRAPH_OT_view_all(wmOperatorType *ot)
|
void GRAPH_OT_view_all(wmOperatorType *ot)
|
||||||
{
|
{
|
||||||
/* identifiers */
|
/* identifiers */
|
||||||
@@ -294,6 +302,21 @@ void GRAPH_OT_view_selected(wmOperatorType *ot)
|
|||||||
"Include handles of keyframes when calculating extents");
|
"Include handles of keyframes when calculating extents");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GRAPH_OT_view_frame(wmOperatorType *ot)
|
||||||
|
{
|
||||||
|
/* identifiers */
|
||||||
|
ot->name = "View Frame";
|
||||||
|
ot->idname = "GRAPH_OT_view_frame";
|
||||||
|
ot->description = "Reset viewable area to show range around current frame";
|
||||||
|
|
||||||
|
/* api callbacks */
|
||||||
|
ot->exec = graphkeys_view_frame_exec;
|
||||||
|
ot->poll = ED_operator_graphedit_active; /* XXX: unchecked poll to get fsamples working too, but makes modifier damage trickier... */
|
||||||
|
|
||||||
|
/* flags */
|
||||||
|
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||||
|
}
|
||||||
|
|
||||||
/* ******************** Create Ghost-Curves Operator *********************** */
|
/* ******************** Create Ghost-Curves Operator *********************** */
|
||||||
/* This operator samples the data of the selected F-Curves to F-Points, storing them
|
/* This operator samples the data of the selected F-Curves to F-Points, storing them
|
||||||
* as 'ghost curves' in the active Graph Editor
|
* as 'ghost curves' in the active Graph Editor
|
||||||
|
@@ -91,6 +91,7 @@ void get_graph_keyframe_extents(struct bAnimContext *ac, float *xmin, float *xma
|
|||||||
void GRAPH_OT_previewrange_set(struct wmOperatorType *ot);
|
void GRAPH_OT_previewrange_set(struct wmOperatorType *ot);
|
||||||
void GRAPH_OT_view_all(struct wmOperatorType *ot);
|
void GRAPH_OT_view_all(struct wmOperatorType *ot);
|
||||||
void GRAPH_OT_view_selected(struct wmOperatorType *ot);
|
void GRAPH_OT_view_selected(struct wmOperatorType *ot);
|
||||||
|
void GRAPH_OT_view_frame(struct wmOperatorType *ot);
|
||||||
|
|
||||||
void GRAPH_OT_click_insert(struct wmOperatorType *ot);
|
void GRAPH_OT_click_insert(struct wmOperatorType *ot);
|
||||||
void GRAPH_OT_keyframe_insert(struct wmOperatorType *ot);
|
void GRAPH_OT_keyframe_insert(struct wmOperatorType *ot);
|
||||||
|
@@ -380,6 +380,7 @@ void graphedit_operatortypes(void)
|
|||||||
WM_operatortype_append(GRAPH_OT_view_all);
|
WM_operatortype_append(GRAPH_OT_view_all);
|
||||||
WM_operatortype_append(GRAPH_OT_view_selected);
|
WM_operatortype_append(GRAPH_OT_view_selected);
|
||||||
WM_operatortype_append(GRAPH_OT_properties);
|
WM_operatortype_append(GRAPH_OT_properties);
|
||||||
|
WM_operatortype_append(GRAPH_OT_view_frame);
|
||||||
|
|
||||||
WM_operatortype_append(GRAPH_OT_ghost_curves_create);
|
WM_operatortype_append(GRAPH_OT_ghost_curves_create);
|
||||||
WM_operatortype_append(GRAPH_OT_ghost_curves_clear);
|
WM_operatortype_append(GRAPH_OT_ghost_curves_clear);
|
||||||
@@ -594,6 +595,7 @@ static void graphedit_keymap_keyframes(wmKeyConfig *keyconf, wmKeyMap *keymap)
|
|||||||
WM_keymap_add_item(keymap, "GRAPH_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
|
WM_keymap_add_item(keymap, "GRAPH_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
|
||||||
WM_keymap_add_item(keymap, "GRAPH_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0);
|
WM_keymap_add_item(keymap, "GRAPH_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0);
|
||||||
WM_keymap_add_item(keymap, "GRAPH_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0);
|
WM_keymap_add_item(keymap, "GRAPH_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0);
|
||||||
|
WM_keymap_add_item(keymap, "GRAPH_OT_view_frame", PAD0, KM_PRESS, 0, 0);
|
||||||
|
|
||||||
/* F-Modifiers */
|
/* F-Modifiers */
|
||||||
kmi = WM_keymap_add_item(keymap, "GRAPH_OT_fmodifier_add", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0);
|
kmi = WM_keymap_add_item(keymap, "GRAPH_OT_fmodifier_add", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0);
|
||||||
|
Reference in New Issue
Block a user