From: Emmanuele Bassi Date: Mon, 22 Jun 2009 14:43:03 +0000 (+0100) Subject: Update the Viewport example X-Git-Url: http://vcs.maemo.org/git/?p=clutter-gtk;a=commitdiff_plain;h=b8cfcc7d9959c770a6d48adbd39d7b9e70f7a56e Update the Viewport example The GtkClutterViewport example shows how to use the newly added support for the Zoomable interface inside the Viewport actor. It's a pretty trivial implementation, but it should be enough to show how it's done. --- diff --git a/examples/gtk-clutter-viewport.c b/examples/gtk-clutter-viewport.c index 3c67178..09b8912 100644 --- a/examples/gtk-clutter-viewport.c +++ b/examples/gtk-clutter-viewport.c @@ -10,20 +10,31 @@ on_load_finished (ClutterTexture *texture, const GError *error, gpointer user_data) { + if (error) + g_warning ("Unable to load texture: %s", error->message); + if (timer) g_print ("%s: load time: %.3f secs\n", G_STRLOC, g_timer_elapsed (timer, NULL)); } +static void +on_size_change (ClutterTexture *texture, + gint width, + gint height) +{ + g_print ("%s: tex.size = %d, %d\n", G_STRLOC, width, height); +} + int main (int argc, char *argv[]) { ClutterActor *stage, *viewport, *tex; ClutterColor stage_color = { 0x61, 0x64, 0x8c, 0xff }; - GtkWidget *window, *embed; - GtkWidget *table, *scrollbar; - GtkAdjustment *h_adjustment, *v_adjustment; + GtkWidget *window, *embed; + GtkWidget *table, *scrollbar, *slider; + GtkAdjustment *h_adjustment, *v_adjustment, *z_adjustment; g_thread_init (NULL); gdk_threads_init (); @@ -35,7 +46,7 @@ main (int argc, char *argv[]) window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - table = gtk_table_new (2, 2, FALSE); + table = gtk_table_new (3, 2, FALSE); gtk_container_add (GTK_CONTAINER (window), table); gtk_widget_show (table); @@ -65,7 +76,10 @@ main (int argc, char *argv[]) GError *error = NULL; tex = clutter_texture_new (); - g_object_set (G_OBJECT (tex), "load-async", TRUE, NULL); + clutter_texture_set_load_async (CLUTTER_TEXTURE (tex), TRUE); + g_signal_connect (tex, + "size-change", G_CALLBACK (on_size_change), + NULL); g_signal_connect (tex, "load-finished", G_CALLBACK (on_load_finished), NULL); @@ -111,6 +125,17 @@ main (int argc, char *argv[]) 0, 0); gtk_widget_show (scrollbar); + z_adjustment = + gtk_clutter_zoomable_get_adjustment (GTK_CLUTTER_ZOOMABLE (viewport)); + + slider = gtk_hscale_new (z_adjustment); + gtk_table_attach (GTK_TABLE (table), slider, + 0, 1, + 2, 3, + GTK_EXPAND | GTK_FILL, 0, + 0, 0); + gtk_widget_show (slider); + gtk_widget_show (window); gtk_main();