fill backround type table from enum values
authorBrandon Lewis <brandon@collabora.co.uk>
Mon, 2 Aug 2010 15:26:24 +0000 (17:26 +0200)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Thu, 2 Sep 2010 16:04:27 +0000 (18:04 +0200)
tests/examples/ges-ui.c

index f3af9bd..9a5d2e7 100644 (file)
@@ -811,6 +811,37 @@ disconnect_from_object (GESTimelineObject * object, App * app)
   }
 }
 
+static GtkListStore *
+get_video_patterns (void)
+{
+  GEnumClass *enum_class;
+  GESTimelineTestSource *tr;
+  GESTimelineTestSourceClass *klass;
+  GParamSpec *pspec;
+  GEnumValue *v;
+  GtkListStore *m;
+  GtkTreeIter i;
+
+  m = gtk_list_store_new (1, G_TYPE_STRING);
+
+  tr = ges_timeline_test_source_new ();
+  klass = GES_TIMELINE_TEST_SOURCE_GET_CLASS (tr);
+
+  pspec = g_object_class_find_property (G_OBJECT_CLASS (klass), "vpattern");
+
+  enum_class = G_ENUM_CLASS (g_type_class_ref (pspec->value_type));
+
+  for (v = enum_class->values; v->value_nick != NULL; v++) {
+    gtk_list_store_append (m, &i);
+    gtk_list_store_set (m, &i, 0, v->value_name, -1);
+  }
+
+  g_type_class_unref (enum_class);
+  g_object_unref (tr);
+
+  return m;
+}
+
 gboolean
 create_ui (App * app)
 {
@@ -818,6 +849,8 @@ create_ui (App * app)
   GtkTreeView *timeline;
   GtkTreeViewColumn *duration_col;
   GtkCellRenderer *duration_renderer;
+  GtkCellRenderer *background_type_renderer;
+  GtkListStore *backgrounds;
   GstBus *bus;
 
   /* construct widget tree */
@@ -869,6 +902,7 @@ create_ui (App * app)
   if (!(app->model =
           gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_OBJECT)))
     goto fail;
+
   gtk_tree_view_set_model (timeline, GTK_TREE_MODEL (app->model));
 
   /* register custom cell data function */
@@ -876,6 +910,23 @@ create_ui (App * app)
   gtk_tree_view_column_set_cell_data_func (duration_col, duration_renderer,
       duration_cell_func, NULL, NULL);
 
+  /* initialize combo boxes */
+
+  if (!(backgrounds = get_video_patterns ()))
+    goto fail;
+
+  if (!(background_type_renderer = gtk_cell_renderer_text_new ()))
+    goto fail;
+
+  gtk_combo_box_set_model (app->background_type, (GtkTreeModel *)
+      backgrounds);
+
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (app->background_type),
+      background_type_renderer, FALSE);
+
+  gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (app->background_type),
+      background_type_renderer, "text", 0);
+
   /* register callbacks on GES objects */
 
   g_signal_connect (app->layer, "object-added",