[Xfce4-commits] <ristretto:ristretto-0.0> Add initial code to implement the open-with menu
Stephan Arts
noreply at xfce.org
Sun Oct 23 19:21:29 CEST 2011
Updating branch refs/heads/ristretto-0.0
to 3e7c0bb6540eaef683a6aff3306ed53d1ff5c2e9 (commit)
from a4f7e2f0e83118bfd8cb5ff2cee068c60f19efe3 (commit)
commit 3e7c0bb6540eaef683a6aff3306ed53d1ff5c2e9
Author: Stephan Arts <stephan at xfce.org>
Date: Wed Sep 23 00:15:52 2009 +0200
Add initial code to implement the open-with menu
ChangeLog | 5 +++++
src/main_window.c | 38 +++++++++++++++++++++++++++++++++++++-
2 files changed, 42 insertions(+), 1 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 6b8721e..77d4312 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2009-09-22 Stephan Arts <stephan at xfce.org>
+ * src/main_window.c: Add initial code for implementation of the
+ 'open-with' menu
+
+2009-09-22 Stephan Arts <stephan at xfce.org>
+
* src/main_window.c,
src/picture_viewer.c: Do not change zoom-mode when switching to
fullscreen, recalculate scale when fitting image to window (zoom-fit)
diff --git a/src/main_window.c b/src/main_window.c
index d95959c..2904117 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -701,9 +701,16 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
{
gchar *path, *basename, *title, *status;
GFile *file = NULL;
+ GFileInfo *file_info = NULL;
RsttoImage *cur_image;
gint position, count, width, height;
RsttoImageList *image_list = window->priv->props.image_list;
+ GList *app_list, *iter;
+ const gchar *content_type;
+ GtkWidget *open_with_menu = gtk_menu_new();
+ GtkWidget *open_with_window_menu = gtk_menu_new();
+ gtk_menu_item_set_submenu (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/open-with-menu"), open_with_menu);
+ gtk_menu_item_set_submenu (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/edit-menu/open-with-menu"), open_with_window_menu);
if (window->priv->props.image_list)
{
@@ -712,12 +719,29 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
cur_image = rstto_image_list_iter_get_image (window->priv->iter);
if (cur_image)
{
+ file = rstto_image_get_file (cur_image);
+ file_info = g_file_query_info (file, "standard::content-type", 0, NULL, NULL);
+ content_type = g_file_info_get_content_type (file_info);
+ app_list = g_app_info_get_all_for_type (content_type);
+
+ for (iter = app_list; iter; iter = g_list_next (iter))
+ {
+ GtkWidget *menu_item = gtk_image_menu_item_new_with_label (g_app_info_get_name (iter->data));
+ gtk_menu_shell_append (GTK_MENU_SHELL (open_with_menu), menu_item);
+ gtk_widget_set_sensitive (menu_item, FALSE);
+
+ menu_item = gtk_image_menu_item_new_with_label (g_app_info_get_name (iter->data));
+ gtk_menu_shell_append (GTK_MENU_SHELL (open_with_window_menu), menu_item);
+ gtk_widget_set_sensitive (menu_item, FALSE);
+ }
+
+ gtk_widget_show_all (open_with_menu);
+ gtk_widget_show_all (open_with_window_menu);
g_signal_connect (G_OBJECT (cur_image), "updated", G_CALLBACK (cb_rstto_main_window_image_updated), window);
width = rstto_image_get_width(cur_image);
height = rstto_image_get_height(cur_image);
- file = rstto_image_get_file (cur_image);
path = g_file_get_path (file);
basename = g_path_get_basename (path);
@@ -737,6 +761,18 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
}
else
{
+ GtkWidget *menu_item = gtk_image_menu_item_new_with_label (_("Empty"));
+ gtk_menu_shell_append (GTK_MENU_SHELL (open_with_menu), menu_item);
+ gtk_widget_set_sensitive (menu_item, FALSE);
+
+
+ menu_item = gtk_image_menu_item_new_with_label (_("Empty"));
+ gtk_menu_shell_append (GTK_MENU_SHELL (open_with_window_menu), menu_item);
+ gtk_widget_set_sensitive (menu_item, FALSE);
+
+ gtk_widget_show_all (open_with_menu);
+ gtk_widget_show_all (open_with_window_menu);
+
title = g_strdup (RISTRETTO_APP_TITLE);
status = g_strdup (_("Press open to select an image"));
}
More information about the Xfce4-commits
mailing list