/*
* 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 .
*
* Author: Dave Camp
* Raffaele Sandrini
*
*/
#pragma once
#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
#warning "Only should be included directly."
#endif
#include
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: (nullable) (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: (nullable): the tooltip of the menu item
* @icon: (nullable): 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