diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | docs/nautilus-context-menus.txt | 7 | ||||
-rw-r--r-- | src/file-manager/fm-directory-view.c | 36 |
3 files changed, 47 insertions, 2 deletions
@@ -1,5 +1,11 @@ 2003-06-08 Dave Camp <dave@ximian.com> + * src/file-manager/fm-directory-view.c: + (add_bonobo_menu_ui_and_verbs): Allow the context menu to supply + an icon. + +2003-06-08 Dave Camp <dave@ximian.com> + * src/file-manager/fm-properties-window.c: (create_basic_page): (get_pixbuf_for_properties_window), diff --git a/docs/nautilus-context-menus.txt b/docs/nautilus-context-menus.txt index 91329e4e8..01b694f0f 100644 --- a/docs/nautilus-context-menus.txt +++ b/docs/nautilus-context-menus.txt @@ -27,6 +27,13 @@ Ok, this is how it works: <oaf_attribute name="nautilusverb:DoExtract" type="string" _value="Extract To..."/> + To specify an icon to display next to the context menu, you can + specify a nautilusverbicon property: + + <oaf_attribute name="nautilusverbicon:DoExtract" type="string" _value="icon-name"/> + + The icon will be taken from the current icon theme. + If the component has "nauitlus:can_handle_multiple_files" set to false, the item will still be displayed when multiple files are selected, but it will be insensitive. When the user clicks the menu item, nautilus diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c index 144d7394c..6591dbe95 100644 --- a/src/file-manager/fm-directory-view.c +++ b/src/file-manager/fm-directory-view.c @@ -3698,8 +3698,40 @@ add_bonobo_menu_ui_and_verbs (FMDirectoryView *view, GList *files, /* build the UI */ for (l = verb_names; l; l = l->next) { char *verb = l->data; - - g_string_append_printf (ui_xml, "<menuitem name=\"%s\" verb=\"%s\"/>", verb, verb); + char *icon_attribute_name; + const char *icon_name; + char *pixbuf_data; + GdkPixbuf *pixbuf; + + g_string_append_printf (ui_xml, + "<menuitem name=\"%s\" verb=\"%s\"", + verb, verb); + + icon_attribute_name = g_strdup_printf ("nautilusverbicon:%s", + verb); + icon_name = bonobo_server_info_prop_lookup (info, + icon_attribute_name, + langs_cpy); + g_free (icon_attribute_name); + if (!icon_name) { + icon_name = bonobo_server_info_prop_lookup (info, "nautilus:icon", + langs_cpy); + } + + if (icon_name) { + pixbuf = nautilus_icon_factory_get_pixbuf_from_name + (icon_name, + NULL, + NAUTILUS_ICON_SIZE_FOR_MENUS, + NULL); + if (pixbuf) { + pixbuf_data = bonobo_ui_util_pixbuf_to_xml (pixbuf); + g_string_append_printf (ui_xml, " pixtype=\"pixbuf\" pixname=\"%s\"", pixbuf_data); + g_free (pixbuf_data); + g_object_unref (pixbuf); + } + } + g_string_append (ui_xml, "/>"); } ui_xml = g_string_append (ui_xml, "</placeholder></popup></popups></Root>"); |