summaryrefslogtreecommitdiffstats
path: root/libnautilus-extension/nautilus-menu.h
diff options
context:
space:
mode:
Diffstat (limited to 'libnautilus-extension/nautilus-menu.h')
-rw-r--r--libnautilus-extension/nautilus-menu.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/libnautilus-extension/nautilus-menu.h b/libnautilus-extension/nautilus-menu.h
new file mode 100644
index 0000000..d699e1c
--- /dev/null
+++ b/libnautilus-extension/nautilus-menu.h
@@ -0,0 +1,145 @@
+/*
+ * nautilus-menu.h - Menus exported by NautilusMenuProvider objects.
+ *
+ * Copyright (C) 2005 Raffaele Sandrini
+ * Copyright (C) 2003 Novell, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Dave Camp <dave@ximian.com>
+ * Raffaele Sandrini <rasa@gmx.ch>
+ *
+ */
+
+#pragma once
+
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
+#include <glib-object.h>
+/* This should be removed at some point. */
+#include "nautilus-extension-types.h"
+
+G_BEGIN_DECLS
+
+#define NAUTILUS_TYPE_MENU (nautilus_menu_get_type ())
+#define NAUTILUS_TYPE_MENU_ITEM (nautilus_menu_item_get_type ())
+
+G_DECLARE_FINAL_TYPE (NautilusMenu, nautilus_menu,
+ NAUTILUS, MENU,
+ GObject)
+G_DECLARE_DERIVABLE_TYPE (NautilusMenuItem, nautilus_menu_item,
+ NAUTILUS, MENU_ITEM,
+ GObject)
+
+/**
+ * SECTION:nautilus-menu
+ * @title: NautilusMenu
+ * @short_description: Menu descriptor object
+ *
+ * #NautilusMenu is an object that describes a submenu in a file manager
+ * menu. Extensions can provide #NautilusMenu objects by attaching them to
+ * #NautilusMenuItem objects, using nautilus_menu_item_set_submenu().
+ *
+ * ## Menu Items
+ *
+ * #NautilusMenuItem is an object that describes an item in a file manager
+ * menu. Extensions can provide #NautilusMenuItem objects by registering a
+ * #NautilusMenuProvider and returning them from
+ * nautilus_menu_provider_get_file_items(), or
+ * nautilus_menu_provider_get_background_items(), which will be called by the
+ * main application when creating menus.
+ */
+
+struct _NautilusMenuItemClass
+{
+ GObjectClass parent;
+
+ void (*activate) (NautilusMenuItem *item);
+};
+
+/**
+ * nautilus_menu_new:
+ *
+ * Returns: a new #NautilusMenu.
+ */
+NautilusMenu *nautilus_menu_new (void);
+
+/**
+ * nautilus_menu_append_item:
+ * @menu: a #NautilusMenu
+ * @item: (transfer full): a #NautilusMenuItem to append
+ */
+void nautilus_menu_append_item (NautilusMenu *menu,
+ NautilusMenuItem *item);
+/**
+ * nautilus_menu_get_items:
+ * @menu: a #NautilusMenu
+ *
+ * Returns: (element-type NautilusMenuItem) (transfer full): the provided #NautilusMenuItem list
+ */
+GList *nautilus_menu_get_items (NautilusMenu *menu);
+/**
+ * nautilus_menu_item_list_free:
+ * @item_list: (element-type NautilusMenuItem): a list of #NautilusMenuItem
+ *
+ */
+void nautilus_menu_item_list_free (GList *item_list);
+
+/**
+ * nautilus_menu_item_new:
+ * @name: the identifier for the menu item
+ * @label: the user-visible label of the menu item
+ * @tip: the tooltip of the menu item
+ * @icon: the name of the icon to display in the menu item
+ *
+ * Creates a new menu item that can be added to the toolbar or to a contextual menu.
+ *
+ * Returns: (transfer full): a new #NautilusMenuItem
+ */
+NautilusMenuItem *nautilus_menu_item_new (const char *name,
+ const char *label,
+ const char *tip,
+ const char *icon);
+
+/**
+ * nautilus_menu_item_activate:
+ * @item: pointer to a #NautilusMenuItem
+ *
+ * Emits #NautilusMenuItem::activate.
+ */
+void nautilus_menu_item_activate (NautilusMenuItem *item);
+/**
+ * nautilus_menu_item_set_submenu:
+ * @item: pointer to a #NautilusMenuItem
+ * @menu: (transfer full): pointer to a #NautilusMenu to attach to the button
+ *
+ * Attaches a menu to the given #NautilusMenuItem.
+ */
+void nautilus_menu_item_set_submenu (NautilusMenuItem *item,
+ NautilusMenu *menu);
+
+/* NautilusMenuItem has the following properties:
+ * name (string) - the identifier for the menu item
+ * label (string) - the user-visible label of the menu item
+ * tip (string) - the tooltip of the menu item
+ * icon (string) - the name of the icon to display in the menu item
+ * sensitive (boolean) - whether the menu item is sensitive or not
+ * priority (boolean) - used for toolbar items, whether to show priority
+ * text.
+ * menu (NautilusMenu) - The menu belonging to this item. May be null.
+ */
+
+G_END_DECLS