[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