gtk-demo: Add a video example (with controls) to the images demo
authorBenjamin Otte <otte@redhat.com>
Sat, 17 Feb 2018 23:33:17 +0000 (00:33 +0100)
committerBenjamin Otte <otte@redhat.com>
Sun, 18 Mar 2018 20:01:23 +0000 (21:01 +0100)
demos/gtk-demo/demo.gresource.xml
demos/gtk-demo/gtk-logo.webm [new file with mode: 0644]
demos/gtk-demo/images.c

index d28d7e4c65810a2d1d66a5194dd91ee392be0551..f1b34d3641064ff13f2da415aee0e9e672b410bf 100644 (file)
   <gresource prefix="/images">
     <file>alphatest.png</file>
     <file>floppybuddy.gif</file>
+    <file>gtk-logo.webm</file>
   </gresource>
   <gresource prefix="/pixbufs">
     <file>apple-red.png</file>
diff --git a/demos/gtk-demo/gtk-logo.webm b/demos/gtk-demo/gtk-logo.webm
new file mode 100644 (file)
index 0000000..7baa058
Binary files /dev/null and b/demos/gtk-demo/gtk-logo.webm differ
index c3f0f675f6b099c9ec203a10dd9dec8773b6e894..46e4390e5b86acb49d8f167d4b0a7d7318e21e2d 100644 (file)
@@ -317,12 +317,15 @@ toggle_sensitivity_callback (GtkWidget *togglebutton,
 GtkWidget *
 do_images (GtkWidget *do_widget)
 {
+  GtkWidget *video;
   GtkWidget *frame;
   GtkWidget *vbox;
+  GtkWidget *hbox;
+  GtkWidget *base_vbox;
   GtkWidget *image;
   GtkWidget *label;
   GtkWidget *button;
-  GIcon     *gicon;
+  GIcon *gicon;
 
   if (!window)
     {
@@ -336,9 +339,15 @@ do_images (GtkWidget *do_widget)
       g_signal_connect (window, "destroy",
                         G_CALLBACK (cleanup_callback), NULL);
 
+      base_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
+      g_object_set (base_vbox, "margin", 16, NULL);
+      gtk_container_add (GTK_CONTAINER (window), base_vbox);
+
+      hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 16);
+      gtk_container_add (GTK_CONTAINER (base_vbox), hbox);
+
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
-      g_object_set (vbox, "margin", 16, NULL);
-      gtk_container_add (GTK_CONTAINER (window), vbox);
+      gtk_container_add (GTK_CONTAINER (hbox), vbox);
 
       label = gtk_label_new (NULL);
       gtk_label_set_markup (GTK_LABEL (label),
@@ -395,6 +404,8 @@ do_images (GtkWidget *do_widget)
 
 
       /* Progressive */
+      vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
+      gtk_container_add (GTK_CONTAINER (hbox), vbox);
 
       label = gtk_label_new (NULL);
       gtk_label_set_markup (GTK_LABEL (label),
@@ -415,13 +426,32 @@ do_images (GtkWidget *do_widget)
 
       start_progressive_loading (image);
 
+      /* Video */
+      vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
+      gtk_container_add (GTK_CONTAINER (hbox), vbox);
+
+      label = gtk_label_new (NULL);
+      gtk_label_set_markup (GTK_LABEL (label),
+                            "<u>Displaying video</u>");
+      gtk_box_pack_start (GTK_BOX (vbox), label);
+
+      frame = gtk_frame_new (NULL);
+      gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
+      gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
+      gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
+      gtk_box_pack_start (GTK_BOX (vbox), frame);
+
+      video = gtk_video_new_for_resource ("/images/gtk-logo.webm");
+      gtk_media_stream_set_loop (gtk_video_get_media_stream (GTK_VIDEO (video)), TRUE);
+      gtk_container_add (GTK_CONTAINER (frame), video);
+
       /* Sensitivity control */
       button = gtk_toggle_button_new_with_mnemonic ("_Insensitive");
-      gtk_box_pack_start (GTK_BOX (vbox), button);
+      gtk_box_pack_start (GTK_BOX (base_vbox), button);
 
       g_signal_connect (button, "toggled",
                         G_CALLBACK (toggle_sensitivity_callback),
-                        vbox);
+                        base_vbox);
     }
 
   if (!gtk_widget_get_visible (window))