[Goodies-commits] r3385 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Mon Oct 15 23:11:49 CEST 2007


Author: stephan
Date: 2007-10-15 21:11:49 +0000 (Mon, 15 Oct 2007)
New Revision: 3385

Modified:
   ristretto/trunk/src/main_window.c
Log:
Add open with to picture viewer menu


Modified: ristretto/trunk/src/main_window.c
===================================================================
--- ristretto/trunk/src/main_window.c	2007-10-15 20:35:56 UTC (rev 3384)
+++ ristretto/trunk/src/main_window.c	2007-10-15 21:11:49 UTC (rev 3385)
@@ -117,6 +117,12 @@
             GtkWidget *menu_item_open_file;
             GtkWidget *menu_item_close;
             GtkWidget *menu_item_separator_1;
+            GtkWidget *menu_item_open_with;
+            struct {
+                GtkWidget *menu;
+                GtkWidget *menu_item_empty;
+            } open_with;
+            GtkWidget *menu_item_separator_2;
             GtkWidget *menu_item_zoom_in;
             GtkWidget *menu_item_zoom_out;
             GtkWidget *menu_item_zoom_fit;
@@ -466,15 +472,35 @@
 
     window->priv->menus._picture_viewer.menu_item_separator_1 = gtk_separator_menu_item_new();
 
+    window->priv->menus._picture_viewer.menu_item_open_with = gtk_menu_item_new_with_mnemonic(_("Open with..."));
+
+    window->priv->menus._picture_viewer.menu_item_separator_2 = gtk_separator_menu_item_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);
 
+    window->priv->menus._picture_viewer.open_with.menu = gtk_menu_new();
+    window->priv->menus._picture_viewer.open_with.menu_item_empty = gtk_menu_item_new_with_label(_("No applications available"));
+
+    gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.open_with.menu),
+                                         window->priv->menus._picture_viewer.open_with.menu_item_empty);
+    gtk_widget_set_sensitive(window->priv->menus._picture_viewer.open_with.menu_item_empty, FALSE);
+    gtk_widget_ref(window->priv->menus._picture_viewer.open_with.menu_item_empty);
+
+    gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus._picture_viewer.menu_item_open_with),
+                              window->priv->menus._picture_viewer.open_with.menu);
+
     gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.menu), window->priv->menus._picture_viewer.menu_item_open_file);
     gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.menu), window->priv->menus._picture_viewer.menu_item_close);
     gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.menu), window->priv->menus._picture_viewer.menu_item_separator_1);
 
+    gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.menu), window->priv->menus._picture_viewer.menu_item_open_with);
+
+    gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.menu), window->priv->menus._picture_viewer.menu_item_separator_2);
+
     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);
@@ -1192,10 +1218,18 @@
         /* Update 'open with...' submenu */
         if(gtk_widget_get_parent(window->priv->menus.edit.open_with.menu_item_empty))
         {
-            gtk_container_remove(GTK_CONTAINER(window->priv->menus.edit.open_with.menu), window->priv->menus.edit.open_with.menu_item_empty);
+            gtk_container_remove(GTK_CONTAINER(window->priv->menus.edit.open_with.menu),
+                                 window->priv->menus.edit.open_with.menu_item_empty);
         }
+        if(gtk_widget_get_parent(window->priv->menus._picture_viewer.open_with.menu_item_empty))
+        {
+            gtk_container_remove(GTK_CONTAINER(window->priv->menus._picture_viewer.open_with.menu),
+                                 window->priv->menus._picture_viewer.open_with.menu_item_empty);
+        }
 
         gtk_container_foreach(GTK_CONTAINER(window->priv->menus.edit.open_with.menu), (GtkCallback)gtk_widget_destroy, NULL);
+        gtk_container_foreach(GTK_CONTAINER(window->priv->menus._picture_viewer.open_with.menu), (GtkCallback)gtk_widget_destroy, NULL);
+
         if (info)
         {
             window->priv->menu_apps_list = thunar_vfs_mime_database_get_applications(window->priv->mime_dbase, info->mime_info);
@@ -1204,6 +1238,10 @@
             {
                 gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.edit.open_with.menu), window->priv->menus.edit.open_with.menu_item_empty);
                 gtk_widget_show(window->priv->menus.edit.open_with.menu_item_empty);
+
+                gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.open_with.menu),
+                                      window->priv->menus._picture_viewer.open_with.menu_item_empty);
+                gtk_widget_show(window->priv->menus._picture_viewer.open_with.menu_item_empty);
             }
             while (iter != NULL)
             {
@@ -1214,6 +1252,15 @@
                 g_object_set_data(iter->data, "entry", entry);
                 g_signal_connect(menu_item, "activate", G_CALLBACK(cb_rstto_main_window_spawn_app), iter->data);
                 gtk_widget_show(menu_item);
+
+                menu_item = gtk_image_menu_item_new_with_label(thunar_vfs_mime_application_get_name(iter->data));
+                image = gtk_image_new_from_icon_name(thunar_vfs_mime_handler_lookup_icon_name(iter->data, window->priv->icon_theme), GTK_ICON_SIZE_MENU);
+                gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image);
+                gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.open_with.menu), menu_item);
+                g_object_set_data(iter->data, "entry", entry);
+                g_signal_connect(menu_item, "activate", G_CALLBACK(cb_rstto_main_window_spawn_app), iter->data);
+                gtk_widget_show(menu_item);
+
                 iter = g_list_next(iter);
             }
         }        
@@ -1221,6 +1268,10 @@
         {
             gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.edit.open_with.menu), window->priv->menus.edit.open_with.menu_item_empty);
             gtk_widget_show(window->priv->menus.edit.open_with.menu_item_empty);
+
+            gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.open_with.menu),
+                                  window->priv->menus._picture_viewer.open_with.menu_item_empty);
+            gtk_widget_show(window->priv->menus._picture_viewer.open_with.menu_item_empty);
         }
     }
     else
@@ -1250,11 +1301,19 @@
         }
 
         gtk_container_foreach(GTK_CONTAINER(window->priv->menus.edit.open_with.menu), (GtkCallback)gtk_widget_destroy, NULL);
+        gtk_container_foreach(GTK_CONTAINER(window->priv->menus._picture_viewer.open_with.menu), (GtkCallback)gtk_widget_destroy, NULL);
         if(!gtk_widget_get_parent(window->priv->menus.edit.open_with.menu_item_empty))
         {
             gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.edit.open_with.menu), window->priv->menus.edit.open_with.menu_item_empty);
             gtk_widget_show(window->priv->menus.edit.open_with.menu_item_empty);
         }
+
+        if(!gtk_widget_get_parent(window->priv->menus._picture_viewer.open_with.menu_item_empty))
+        {
+            gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus._picture_viewer.open_with.menu),
+                                  window->priv->menus._picture_viewer.open_with.menu_item_empty);
+            gtk_widget_show(window->priv->menus._picture_viewer.open_with.menu_item_empty);
+        }
     }
 
 }




More information about the Goodies-commits mailing list