[gtk+/wip/baedert/gtkimageview: 2041/2075] demo: Separate code and declarations



commit 6b3536cbb428d52ef9d4709566d8d4a05a6af660
Author: Timm Bäder <mail baedert org>
Date:   Fri Jan 22 17:39:27 2016 +0100

    demo: Separate code and declarations

 demos/gtk-demo/image_view.c  |   46 +++++++++++++++++++++++++++++++++-------
 demos/gtk-demo/image_view.ui |   47 ++++++++++++++++++++++++++++++-----------
 2 files changed, 72 insertions(+), 21 deletions(-)
---
diff --git a/demos/gtk-demo/image_view.c b/demos/gtk-demo/image_view.c
index 425c307..5ee4205 100644
--- a/demos/gtk-demo/image_view.c
+++ b/demos/gtk-demo/image_view.c
@@ -5,6 +5,14 @@
 GtkWidget *image_view;
 GtkWidget *uri_entry;
 
+
+void
+reset_view_button_clicked_cb ()
+{
+  gtk_image_view_set_scale (GTK_IMAGE_VIEW (image_view), 1.0);
+  gtk_image_view_set_angle (GTK_IMAGE_VIEW (image_view), 0.0);
+}
+
 void
 generic_cb ()
 {
@@ -23,6 +31,27 @@ file_set_cb (GtkFileChooserButton *widget,
                                        NULL,
                                        generic_cb,
                                        NULL);
+
+  g_free (filename);
+}
+
+static void
+image_loaded_cb (GObject      *source_object,
+                 GAsyncResult *result,
+                 gpointer      user_data)
+{
+  GtkImageView *image_view = GTK_IMAGE_VIEW (source_object);
+  GError *error = NULL;
+
+  gtk_image_view_load_from_file_finish (image_view,
+                                        result,
+                                        &error);
+
+  if (error)
+    {
+      g_message ("Error: %s", error->message);
+      return;
+    }
 }
 
 void
@@ -34,7 +63,7 @@ load_button_cb ()
                                        file,
                                        1,
                                        NULL,
-                                       generic_cb,
+                                       image_loaded_cb,
                                        NULL);
 }
 
@@ -95,11 +124,12 @@ scrolled_check_button_active_cb (GObject *source)
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroller),
                                       GTK_POLICY_ALWAYS,
                                       GTK_POLICY_ALWAYS);
-      gtk_scrolled_window_set_overlay_scrolling (GTK_SCROLLED_WINDOW (scroller), FALSE);
-      gtk_widget_show (scroller);
+      g_object_ref (image_view);
       gtk_container_remove (GTK_CONTAINER (parent), image_view);
       gtk_container_add (GTK_CONTAINER (scroller), image_view);
       gtk_container_add (GTK_CONTAINER (parent), scroller);
+      gtk_widget_show (scroller);
+      g_object_unref (image_view);
     }
 }
 
@@ -127,11 +157,11 @@ load_pixbuf_button_clicked_cb ()
   GdkPixbuf *pixbuf;
 
   /* I really hope you have this. */
-  pixbuf = gdk_pixbuf_new_from_file ("/home/baedert/imageview2.png",
+  pixbuf = gdk_pixbuf_new_from_file ("/usr/share/backgrounds/gnome/Fabric.jpg",
                                      NULL);
 
   g_assert (pixbuf != NULL);
-  gtk_image_view_set_pixbuf (GTK_IMAGE_VIEW (image_view), pixbuf, 2);
+  gtk_image_view_set_pixbuf (GTK_IMAGE_VIEW (image_view), pixbuf, 0);
 
   g_object_unref (G_OBJECT (pixbuf));
 }
@@ -209,8 +239,6 @@ do_image_view (GtkWidget *do_widget)
 {
   GtkWidget *window   = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   GtkBuilder *builder = gtk_builder_new_from_resource ("/imageview/image_view.ui");
-         image_view   = GTK_WIDGET (gtk_builder_get_object (builder, "image_view"));
-          uri_entry   = GTK_WIDGET (gtk_builder_get_object (builder, "uri_entry"));
   GtkWidget *box      = GTK_WIDGET (gtk_builder_get_object (builder, "box"));
   GtkWidget *snap_angle_button = GTK_WIDGET (gtk_builder_get_object (builder, "snap_angle_check_button"));
   GtkWidget *fit_allocation_button = GTK_WIDGET (gtk_builder_get_object (builder, 
"fit_allocation_check_button"));
@@ -219,13 +247,15 @@ do_image_view (GtkWidget *do_widget)
 
   GtkAdjustment *scale_adjustment = GTK_ADJUSTMENT (gtk_builder_get_object (builder, "scale_adjustment"));
   GtkAdjustment *angle_adjustment = GTK_ADJUSTMENT (gtk_builder_get_object (builder, "angle_adjustment"));
+         image_view   = GTK_WIDGET (gtk_builder_get_object (builder, "image_view"));
+          uri_entry   = GTK_WIDGET (gtk_builder_get_object (builder, "uri_entry"));
 
 
   /*gtk_window_set_title (GTK_WINDOW (window), "blue: current, green: anchor");*/
 
   g_object_bind_property (scale_adjustment, "value", image_view, "scale",
                           G_BINDING_BIDIRECTIONAL);
-  g_object_bind_property (image_view, "angle", angle_adjustment, "value",
+  g_object_bind_property (angle_adjustment, "value", image_view, "angle",
                           G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
   g_object_bind_property (image_view, "snap-angle", snap_angle_button, "active",
                           G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
diff --git a/demos/gtk-demo/image_view.ui b/demos/gtk-demo/image_view.ui
index 4438917..1ea05f1 100644
--- a/demos/gtk-demo/image_view.ui
+++ b/demos/gtk-demo/image_view.ui
@@ -2,13 +2,14 @@
 <interface>
   <object class="GtkAdjustment" id="scale_adjustment">
     <property name="upper">5</property>
+    <property name="lower">0.05</property>
     <property name="value">1.0</property>
-    <property name="step_increment">0.001</property>
+    <property name="step_increment">0.01</property>
   </object>
 
   <object class="GtkAdjustment" id="angle_adjustment">
     <property name="upper">360</property>
-    <property name="value">3</property>
+    <property name="value">0</property>
     <property name="step_increment">0.1</property>
     <!--<property name="step_increment">1</property>-->
     <!--<property name="step_increment">45</property>-->
@@ -142,6 +143,7 @@
           <object class="GtkCheckButton" id="scrolled_check_button">
             <property name="visible">true</property>
             <property name="label">In ScrolledWindow</property>
+            <property name="active">true</property>
             <signal name="toggled" handler="scrolled_check_button_active_cb" />
           </object>
           <packing>
@@ -205,11 +207,11 @@
           </packing>
         </child>
 
+
         <child>
-          <object class="GtkSpinButton" id="angle_spin_button">
+          <object class="GtkScale" id="angle_spin_button">
             <property name="visible">true</property>
             <property name="digits">2</property>
-            <property name="numeric">true</property>
             <property name="adjustment">angle_adjustment</property>
           </object>
           <packing>
@@ -219,7 +221,6 @@
           </packing>
         </child>
 
-
         <child>
           <object class="GtkLabel">
             <property name="visible">true</property>
@@ -235,10 +236,9 @@
         </child>
 
         <child>
-          <object class="GtkSpinButton" id="scale_spin_button">
+          <object class="GtkScale" id="scale_spin_button">
             <property name="visible">true</property>
             <property name="digits">2</property>
-            <property name="numeric">true</property>
             <property name="adjustment">scale_adjustment</property>
           </object>
           <packing>
@@ -292,20 +292,41 @@
           </packing>
         </child>
 
+
+        <child>
+          <object class="GtkButton" id="reset_button">
+            <property name="visible">true</property>
+            <property name="label" translatable="true">Reset View</property>
+            <property name="valign">end</property>
+            <property name="vexpand">true</property>
+            <signal name="clicked" handler="reset_view_button_clicked_cb" />
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">16</property>
+            <property name="width">2</property>
+          </packing>
+        </child>
+
+
       </object>
 
     </child>
 
     <child>
-      <object class="GtkImageView" id="image_view">
+      <object class="GtkScrolledWindow">
         <property name="visible">true</property>
-        <property name="hexpand">true</property>
-        <property name="vexpand">true</property>
-        <property name="width_request">400</property>
-        <property name="height_request">400</property>
+        <child>
+          <object class="GtkImageView" id="image_view">
+            <property name="visible">true</property>
+            <property name="hexpand">true</property>
+            <property name="vexpand">true</property>
+            <property name="width_request">400</property>
+            <property name="height_request">400</property>
+          </object>
+        </child>
       </object>
     </child>
-
   </object>
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]