[Goodies-commits] r3382 - in ristretto/trunk: . src

Stephan Arts stephan at xfce.org
Mon Oct 15 22:26:27 CEST 2007


Author: stephan
Date: 2007-10-15 20:26:27 +0000 (Mon, 15 Oct 2007)
New Revision: 3382

Modified:
   ristretto/trunk/ChangeLog
   ristretto/trunk/src/main_window.c
   ristretto/trunk/src/picture_viewer.c
   ristretto/trunk/src/picture_viewer.h
Log:
Add popup menu to picture viewer



Modified: ristretto/trunk/ChangeLog
===================================================================
--- ristretto/trunk/ChangeLog	2007-10-15 18:30:15 UTC (rev 3381)
+++ ristretto/trunk/ChangeLog	2007-10-15 20:26:27 UTC (rev 3382)
@@ -1,3 +1,6 @@
+	* src/picture_viewer.c:
+	  - Fix EXIF orientation (was broken with previous release)
+
 2007-10-14: Release 0.0.8
 	* src/navigation.c
 	  src/picture_viewer.c

Modified: ristretto/trunk/src/main_window.c
===================================================================
--- ristretto/trunk/src/main_window.c	2007-10-15 18:30:15 UTC (rev 3381)
+++ ristretto/trunk/src/main_window.c	2007-10-15 20:26:27 UTC (rev 3382)
@@ -111,6 +111,14 @@
             GtkWidget *menu;
             GtkWidget *menu_item_about;
         } help;
+
+        struct {
+            GtkWidget *menu;
+            GtkWidget *menu_item_zoom_in;
+            GtkWidget *menu_item_zoom_out;
+            GtkWidget *menu_item_zoom_fit;
+            GtkWidget *menu_item_zoom_100;
+        } _picture_viewer;
     } menus;
 
     struct {
@@ -448,6 +456,21 @@
 
     gtk_box_pack_end(GTK_BOX(window->priv->containers.main_vbox), window->priv->statusbar, FALSE, FALSE, 0);
 
+/* Create picture viewer menu */
+    window->priv->menus._picture_viewer.menu = gtk_menu_new();
+    window->priv->menus._picture_viewer.menu_item_zoom_in = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_IN, NULL);
+    window->priv->menus._picture_viewer.menu_item_zoom_out = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_OUT, NULL);
+    window->priv->menus._picture_viewer.menu_item_zoom_fit = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_FIT, NULL);
+    window->priv->menus._picture_viewer.menu_item_zoom_100 = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_100, NULL);
+
+    gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.menu), window->priv->menus._picture_viewer.menu_item_zoom_in);
+    gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.menu), window->priv->menus._picture_viewer.menu_item_zoom_out);
+    gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.menu), window->priv->menus._picture_viewer.menu_item_zoom_fit);
+    gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.menu), window->priv->menus._picture_viewer.menu_item_zoom_100);
+
+    rstto_picture_viewer_set_menu(RSTTO_PICTURE_VIEWER(window->priv->picture_viewer),
+                                  GTK_MENU(window->priv->menus._picture_viewer.menu));
+
 /* Connect signals */
     
     /* Thumbnail-viewer */
@@ -547,6 +570,19 @@
             "clicked",
             G_CALLBACK(cb_rstto_main_window_zoom_fit), window);
 
+    /* Picture viewer menu */
+    g_signal_connect(window->priv->menus._picture_viewer.menu_item_zoom_in,
+            "activate",
+            G_CALLBACK(cb_rstto_main_window_zoom_in), window);
+    g_signal_connect(window->priv->menus._picture_viewer.menu_item_zoom_out,
+            "activate",
+            G_CALLBACK(cb_rstto_main_window_zoom_out), window);
+    g_signal_connect(window->priv->menus._picture_viewer.menu_item_zoom_100,
+            "activate",
+            G_CALLBACK(cb_rstto_main_window_zoom_100), window);
+    g_signal_connect(window->priv->menus._picture_viewer.menu_item_zoom_fit,
+            "activate",
+            G_CALLBACK(cb_rstto_main_window_zoom_fit), window);
     /* Misc */
     g_signal_connect(G_OBJECT(window->priv->navigator),
             "iter-changed",

Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-10-15 18:30:15 UTC (rev 3381)
+++ ristretto/trunk/src/picture_viewer.c	2007-10-15 20:26:27 UTC (rev 3382)
@@ -43,6 +43,7 @@
         gdouble x;
         gdouble y;
     } motion;
+    GtkMenu          *menu;
 };
 
 static void
@@ -83,6 +84,8 @@
 cb_rstto_picture_viewer_button_press_event (RsttoPictureViewer *viewer, GdkEventButton *event);
 static void
 cb_rstto_picture_viewer_button_release_event (RsttoPictureViewer *viewer, GdkEventButton *event);
+static void
+cb_rstto_picture_viewer_popup_menu (RsttoPictureViewer *viewer, gboolean user_data);
 
 static gboolean
 cb_rstto_picture_viewer_update_image(RsttoPictureViewer *viewer);
@@ -148,6 +151,7 @@
     g_signal_connect(G_OBJECT(viewer), "button_press_event", G_CALLBACK(cb_rstto_picture_viewer_button_press_event), NULL);
     g_signal_connect(G_OBJECT(viewer), "button_release_event", G_CALLBACK(cb_rstto_picture_viewer_button_release_event), NULL);
     g_signal_connect(G_OBJECT(viewer), "motion_notify_event", G_CALLBACK(cb_rstto_picture_viewer_motion_notify_event), NULL);
+    g_signal_connect(G_OBJECT(viewer), "popup-menu", G_CALLBACK(cb_rstto_picture_viewer_popup_menu), NULL);
 }
 
 static void
@@ -1012,7 +1016,17 @@
     }
     if(event->button == 3)
     {
-
+        if (viewer->priv->menu)
+        {
+            gtk_widget_show_all(GTK_WIDGET(viewer->priv->menu));
+            gtk_menu_popup(viewer->priv->menu,
+                           NULL,
+                           NULL,
+                           NULL,
+                           NULL,
+                           3,
+                           event->time);
+        }
     }
 }
 
@@ -1053,3 +1067,36 @@
     }
 
 }
+
+static void
+cb_rstto_picture_viewer_popup_menu (RsttoPictureViewer *viewer, gboolean user_data)
+{
+    if (viewer->priv->menu)
+    {
+        gtk_widget_show_all(GTK_WIDGET(viewer->priv->menu));
+        gtk_menu_popup(viewer->priv->menu,
+                       NULL,
+                       NULL,
+                       NULL,
+                       NULL,
+                       0,
+                       gtk_get_current_event_time());
+    }
+}
+
+void
+rstto_picture_viewer_set_menu (RsttoPictureViewer *viewer, GtkMenu *menu)
+{
+    if (viewer->priv->menu)
+    {
+        gtk_menu_detach(viewer->priv->menu);
+        gtk_widget_destroy(GTK_WIDGET(viewer->priv->menu));
+    }
+
+    viewer->priv->menu = menu;
+
+    if (viewer->priv->menu)
+    {
+        gtk_menu_attach_to_widget(viewer->priv->menu, GTK_WIDGET(viewer), NULL);
+    }
+}

Modified: ristretto/trunk/src/picture_viewer.h
===================================================================
--- ristretto/trunk/src/picture_viewer.h	2007-10-15 18:30:15 UTC (rev 3381)
+++ ristretto/trunk/src/picture_viewer.h	2007-10-15 20:26:27 UTC (rev 3382)
@@ -71,6 +71,8 @@
 gdouble    rstto_picture_viewer_fit_scale(RsttoPictureViewer *viewer);
 void       rstto_picture_viewer_set_timeout(RsttoPictureViewer *viewer, gboolean timeout);
 
+void       rstto_picture_viewer_set_menu (RsttoPictureViewer *viewer, GtkMenu *menu);
+
 G_END_DECLS
 
 #endif /* __RISTRETTO_PICTURE_VIEWER_H__ */




More information about the Goodies-commits mailing list