python: Bind the new Timeline editing mode API
authorThibault Saunier <thibault.saunier@collabora.com>
Fri, 10 Feb 2012 19:58:14 +0000 (16:58 -0300)
committerThibault Saunier <thibault.saunier@collabora.com>
Tue, 24 Apr 2012 02:03:11 +0000 (22:03 -0400)
bindings/python/ges-types.defs
bindings/python/ges.defs
bindings/python/ges.override

index 632fe37..8ab2a48 100644 (file)
     '("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")
+  )
+)
index 77e911a..a4fd6fd 100644 (file)
   )
 )
 
+(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
   (in-module "GES")
   (c-name "GESTextHAlign")
   )
 )
 
+(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
   (of-object "GESTimelineObject")
   (c-name "ges_timeline_object_get_supported_formats")
   (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
index b9d97dc..18e873a 100644 (file)
@@ -489,6 +489,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
 
   *_get_type