clean up the create_ui function a bit

This commit is contained in:
Brandon Lewis 2010-07-21 15:43:28 +02:00 committed by Edward Hervey
parent 64d09470d0
commit b5affabc0c
2 changed files with 27 additions and 17 deletions

View file

@ -281,48 +281,55 @@ layer_object_removed_cb (GESTimelineLayer * layer, GESTimelineObject * object,
/* Layout *******************************************************************/ /* Layout *******************************************************************/
#define GET_WIDGET(dest,name,type) {\
if (!(dest =\
type(gtk_builder_get_object(builder, name))))\
goto fail;\
}
gboolean gboolean
create_ui (App * app) create_ui (App * app)
{ {
GtkBuilder *builder; GtkBuilder *builder;
GtkTreeView *timeline; GtkTreeView *timeline;
/* construct widget tree */
builder = gtk_builder_new (); builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "ges-ui.glade", NULL); gtk_builder_add_from_file (builder, "ges-ui.glade", NULL);
gtk_builder_connect_signals (builder, app);
timeline = /* get a bunch of widgets from the XML tree */
GTK_TREE_VIEW (gtk_builder_get_object (builder, "timeline_treeview"));
app->main_window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
app->model =
gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_OBJECT);
app->properties = GTK_WIDGET (gtk_builder_get_object (builder, "properties"));
if (!(app->main_window && app->model && timeline && app->properties)) { GET_WIDGET (timeline, "timeline_treeview", GTK_TREE_VIEW);
g_print ("Could not retrieve all widgets from the XML"); GET_WIDGET (app->properties, "properties", GTK_WIDGET);
goto fail; GET_WIDGET (app->main_window, "window", GTK_WIDGET);
}
app->selection = gtk_tree_view_get_selection (timeline); /* we care when the tree selection changes */
if (!app->selection) if (!(app->selection = gtk_tree_view_get_selection (timeline)))
goto fail; goto fail;
g_signal_connect (app->selection, "changed", g_signal_connect (app->selection, "changed",
G_CALLBACK (app_selection_changed_cb), app); G_CALLBACK (app_selection_changed_cb), app);
/* create the model for the treeview */
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)); gtk_tree_view_set_model (timeline, GTK_TREE_MODEL (app->model));
gtk_builder_connect_signals (builder, app); /* register callbacks on GES objects */
g_object_unref (G_OBJECT (builder));
gtk_widget_show (app->main_window);
g_signal_connect (app->layer, "object-added", g_signal_connect (app->layer, "object-added",
G_CALLBACK (layer_object_added_cb), app); G_CALLBACK (layer_object_added_cb), app);
g_signal_connect (app->layer, "object-removed", g_signal_connect (app->layer, "object-removed",
G_CALLBACK (layer_object_removed_cb), app); G_CALLBACK (layer_object_removed_cb), app);
/* success */
g_object_unref (G_OBJECT (builder));
return TRUE; return TRUE;
fail: fail:
@ -330,6 +337,8 @@ fail:
return FALSE; return FALSE;
} }
#undef GET_WIDGET
/* main *********************************************************************/ /* main *********************************************************************/
int int

View file

@ -3,6 +3,7 @@
<requires lib="gtk+" version="2.16"/> <requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy project-wide --> <!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="window"> <object class="GtkWindow" id="window">
<property name="visible">True</property>
<property name="default_width">540</property> <property name="default_width">540</property>
<property name="default_height">450</property> <property name="default_height">450</property>
<signal name="destroy" handler="window_destroy_cb"/> <signal name="destroy" handler="window_destroy_cb"/>