python: Bind the new Timeline editing mode API

This commit is contained in:
Thibault Saunier 2012-02-10 16:58:14 -03:00
parent cb29c31337
commit a03da389f7
3 changed files with 161 additions and 0 deletions

View file

@ -396,3 +396,27 @@
'("smart-render" "TIMELINE_MODE_SMART_RENDER") '("smart-render" "TIMELINE_MODE_SMART_RENDER")
) )
) )
(define-enum Edge
(in-module "GES")
(c-name "GESEdge")
(gtype-id "GES_TYPE_EDGE")
(values
'("edge_start" "GES_EDGE_START")
'("edge_end" "GES_EDGE_END")
'("edge_none" "GES_EDGE_NONE")
)
)
(define-enum EditMode
(in-module "GES")
(c-name "GESEditMode")
(gtype-id "GES_TYPE_EDIT_MODE")
(values
'("edit_normal" "GES_EDIT_MODE_NORMAL")
'("edit_ripple" "GES_EDIT_MODE_RIPPLE")
'("edit_roll" "GES_EDIT_MODE_ROLL")
'("edit_trim" "GES_EDIT_MODE_TRIM")
'("edit_slide" "GES_EDIT_MODE_SLIDE")
)
)

View file

@ -351,6 +351,30 @@
) )
) )
(define-enum Edge
(in-module "GES")
(c-name "GESEdge")
(gtype-id "GES_TYPE_EDGE")
(values
'("edge_start" "GES_EDGE_START")
'("edge_end" "GES_EDGE_END")
'("edge_none" "GES_EDGE_NONE")
)
)
(define-enum EditMode
(in-module "GES")
(c-name "GESEditMode")
(gtype-id "GES_TYPE_EDIT_MODE")
(values
'("edit_normal" "GES_EDIT_MODE_NORMAL")
'("edit_ripple" "GES_EDIT_MODE_RIPPLE")
'("edit_roll" "GES_EDIT_MODE_ROLL")
'("edit_trim" "GES_EDIT_MODE_TRIM")
'("edit_slide" "GES_EDIT_MODE_SLIDE")
)
)
(define-enum TextHAlign (define-enum TextHAlign
(in-module "GES") (in-module "GES")
(c-name "GESTextHAlign") (c-name "GESTextHAlign")
@ -1157,6 +1181,20 @@
) )
) )
(define-method edit
(of-object "GESTimelineObject")
(c-name "ges_timeline_object_edit")
(return-type "gboolean")
(parameters
'("GList*" "layers")
'("guint" "move_layer")
'("GESEditMode" "mode")
'("GESEdge" "edge")
'("guint64" "position")
'("guint64" "snap_distance")
)
)
(define-method get_supported_formats (define-method get_supported_formats
(of-object "GESTimelineObject") (of-object "GESTimelineObject")
(c-name "ges_timeline_object_get_supported_formats") (c-name "ges_timeline_object_get_supported_formats")
@ -2021,6 +2059,18 @@
(varargs #t) (varargs #t)
) )
(define-method edit
(of-object "GESTrackObject")
(c-name "ges_track_object_edit")
(return-type "gboolean")
(parameters
'("GList*" "layers")
'("GESEditMode" "mode")
'("GESEdge" "edge")
'("guint64" "position")
'("guint64" "snap_distance")
)
)
;; From ges-track-operation.h ;; From ges-track-operation.h

View file

@ -488,6 +488,93 @@ _wrap_ges_version (PyObject *self)
} }
%%
override ges_track_object_edit kwargs
static PyObject *
_wrap_ges_track_object_edit (PyGObject *self, PyObject *args, PyObject *kwargs)
{
GList *layers = NULL;
GESEditMode mode;
GESEdge edge;
guint64 position;
guint i;
gboolean ret;
PyObject *py_position = NULL;
PyObject *list = NULL, *pymode = NULL, *pyedge = NULL;
PyGObject *tmpobj = NULL;
Py_ssize_t list_size;
GESTrackObject *tckobj = GES_TRACK_OBJECT (self->obj);
if (!PyArg_ParseTuple(args, "OOOl:GESTrackObject.edit",
&list, &pymode, &pyedge, &py_position))
return NULL;
position = PyLong_AsUnsignedLongLong(py_position);
list_size = PyList_GET_SIZE(list);
for (i = 0; i < list_size; i++) {
tmpobj = (PyGObject*)PyList_GetItem(list, i);
layers = g_list_prepend (layers, GES_TIMELINE_LAYER (tmpobj->obj));
}
if (pyg_enum_get_value(GES_TYPE_EDIT_MODE, pymode, (gpointer)&mode))
return FALSE;
if (pyg_enum_get_value(GES_TYPE_EDGE, pyedge, (gpointer)&edge))
return FALSE;
ret = ges_track_object_edit (tckobj, layers, mode, edge, position);
return PyBool_FromLong(ret);
}
%%
override ges_timeline_object_edit kwargs
static PyObject *
_wrap_ges_timeline_object_edit (PyGObject *self, PyObject *args, PyObject *kwargs)
{
GList *layers = NULL;
GESEditMode mode;
GESEdge edge;
gint64 position;
guint move_layer, i;
gboolean ret;
PyObject *py_position = NULL;
PyObject *list = NULL, *pymode = NULL, *pyedge = NULL;
PyGObject *tmpobj = NULL;
Py_ssize_t list_size;
GESTimelineObject *tlobj = GES_TIMELINE_OBJECT (self->obj);
if (!PyArg_ParseTuple(args, "OiOOO:GESTimelineObject.edit",
&list, &move_layer, &pymode, &pyedge, &py_position))
return NULL;
position = PyLong_AsUnsignedLongLong(py_position);
list_size = PyList_GET_SIZE(list);
for (i = 0; i < list_size; i++) {
tmpobj = (PyGObject*)PyList_GetItem(list, i);
layers = g_list_prepend (layers, GES_TIMELINE_LAYER (tmpobj->obj));
}
if (pyg_enum_get_value(GES_TYPE_EDIT_MODE, pymode, (gpointer)&mode))
return FALSE;
if (pyg_enum_get_value(GES_TYPE_EDGE, pyedge, (gpointer)&edge))
return FALSE;
ret = ges_timeline_object_edit (tlobj, layers, move_layer, mode, edge, position);
return PyBool_FromLong(ret);
}
%% %%
ignore-glob ignore-glob