Efreet_Menu: The FDO Desktop Menu Specification
Efreet

functions and structures More...

## Data Structures

struct | Efreet_Menu
| Efreet_Menu Stores information on a entry in the menu. More...

## Typedefs

typedef enum Efreet_Menu_Entry_Type | Efreet_Menu_Entry_Type
| The type of entry.
typedef struct Efreet_Menu | Efreet_Menu
| Efreet_Menu.
typedef void(* | Efreet_Menu_Cb) (void *data, Efreet_Menu *menu)
| A callback used with efreet_menu_async_get() and efreet_menu_async_parse().

## Enumerations

enum | Efreet_Menu_Entry_Type { EFREET_MENU_ENTRY_MENU , EFREET_MENU_ENTRY_DESKTOP , EFREET_MENU_ENTRY_SEPARATOR , EFREET_MENU_ENTRY_HEADER }
| The type of entry.

## Functions

int | efreet_menu_kde_legacy_init (void)
| Initialize legacy kde support. This function blocks while the kde-config script is run.
Efreet_Menu * | efreet_menu_new (const char *name)
| Creates a new menu.
void | efreet_menu_file_set (const char *file)
| Override which file is used for menu creation.
EFREET_DEPRECATED_API void | efreet_menu_async_get (Efreet_Menu_Cb func, const void *data)
| Creates the Efreet_Menu representation of the default menu or NULL if none found and returns it in the callback.
Efreet_Menu * | efreet_menu_get (void)
| Creates the default menu representation.
EFREET_DEPRECATED_API void | efreet_menu_async_parse (const char *path, Efreet_Menu_Cb func, const void *data)
| Parses the given .menu file and creates the menu representation, and returns it in the callback.
Efreet_Menu * | efreet_menu_parse (const char *path)
| Parses the given .menu file and creates the menu representation.
int | efreet_menu_save (Efreet_Menu *menu, const char *path)
| Saves the menu to file.
void | efreet_menu_free (Efreet_Menu *menu)
| Frees the given structure (if refcount at 1 at the time of this call).
void | efreet_menu_ref (Efreet_Menu *menu)
| Incriments refcount for the menu.
void | efreet_menu_unref (Efreet_Menu *menu)
| Decrements refcount for the menu, and on 0 frees.
int | efreet_menu_desktop_insert (Efreet_Menu *menu, Efreet_Desktop *desktop, int pos)
| Insert a desktop element in a menu structure. Only accepts desktop files in default directories.
int | efreet_menu_desktop_remove (Efreet_Menu *menu, Efreet_Desktop *desktop)
| Remove a desktop element in a menu structure. Only accepts desktop files in default directories.
void | efreet_menu_dump (Efreet_Menu *menu, const char *indent)
| Dumps the contents of the menu to the command line.

## Detailed Description

functions and structures

## Typedef Documentation

## Efreet_Menu_Cb

typedef void(* Efreet_Menu_Cb) (void *data, Efreet_Menu *menu)

A callback used with efreet_menu_async_get() and efreet_menu_async_parse().

Since
  1.8

## Function Documentation

## efreet_menu_kde_legacy_init()

int efreet_menu_kde_legacy_init | ( | void |  | ) |

Initialize legacy kde support. This function blocks while the kde-config script is run.

Returns
  Returns no value

References eina_list_append(), eina_stringshare_add(), eina_stringshare_del(), and ERR.

## efreet_menu_new()

Efreet_Menu * efreet_menu_new | ( | const char * | name | ) |

Creates a new menu.

Parameters

  name | The internal name of the menu

Returns
  Returns the Efreet_Menu on success or NULL on failure

References EINA_SAFETY_ON_NULL_RETURN_VAL, eina_stringshare_add(), and Efreet_Menu::name.

## efreet_menu_file_set()

void efreet_menu_file_set | ( | const char * | file | ) |

Override which file is used for menu creation.

Parameters

  file | The file to use for menu creation

This file is only used if it exists, else the standard files will be used for the menu.

References eina_stringshare_add().

## efreet_menu_async_get()

EFREET_DEPRECATED_API void efreet_menu_async_get | ( | Efreet_Menu_Cb | func,
|  | const void * | data )

Creates the Efreet_Menu representation of the default menu or NULL if none found and returns it in the callback.

Parameters

  func | function to call when menu is created
  data | user data to return in callback

Deprecated

References EINA_UNUSED, and ERR.

## efreet_menu_get()

Efreet_Menu * efreet_menu_get | ( | void |  | ) |

Creates the default menu representation.

Returns
  Returns the Efreet_Menu representation of the default menu or NULL if none found

References ecore_file_exists(), efreet_config_dirs_get(), efreet_config_home_get(), efreet_menu_parse(), and EINA_LIST_FOREACH.

## efreet_menu_async_parse()

EFREET_DEPRECATED_API void efreet_menu_async_parse | ( | const char * | path,
|  | Efreet_Menu_Cb | func,
|  | const void * | data )

Parses the given .menu file and creates the menu representation, and returns it in the callback.

Parameters

  path | The path of the menu to load
  func | function to call when menu is created
  data | user data to return in callback

Deprecated

References EINA_UNUSED, and ERR.

## efreet_menu_parse()

Efreet_Menu * efreet_menu_parse | ( | const char * | path | ) |

Parses the given .menu file and creates the menu representation.

Parameters

  path | The path of the menu to load

Returns
  Returns the Efreet_Menu representation on success or NULL on failure

References eina_hash_string_superfast_new(), EINA_SAFETY_ON_NULL_RETURN_VAL, Efreet_Xml::tag, and WRN.

Referenced by efreet_menu_get().

## efreet_menu_save()

int efreet_menu_save | ( | Efreet_Menu * | menu,
|  | const char * | path )

Saves the menu to file.

Parameters

  menu | The menu to work with
  path | The path where the menu should be saved

Returns
  Returns 1 on success, 0 on failure

References EINA_SAFETY_ON_NULL_RETURN_VAL.

## efreet_menu_free()

void efreet_menu_free | ( | Efreet_Menu * | menu | ) |

Frees the given structure (if refcount at 1 at the time of this call).

Parameters

  menu | The Efreet_Menu to free

Returns
  Returns no value

References Efreet_Menu::desktop, efreet_desktop_free(), efreet_menu_free(), EINA_LIST_FREE, Efreet_Menu::entries, Efreet_Menu::icon, Efreet_Menu::id, Efreet_Menu::name, and Efreet_Menu::references.

Referenced by efreet_menu_desktop_remove(), efreet_menu_free(), and efreet_menu_unref().

## efreet_menu_ref()

void efreet_menu_ref | ( | Efreet_Menu * | menu | ) |

Incriments refcount for the menu.

Parameters

  menu | The Efreet_Menu to reference

Returns
  Returns no value

Since
  1.11

References efreet_menu_ref(), EINA_LIST_FOREACH, Efreet_Menu::entries, and Efreet_Menu::references.

Referenced by efreet_menu_ref().

## efreet_menu_unref()

void efreet_menu_unref | ( | Efreet_Menu * | menu | ) |

Decrements refcount for the menu, and on 0 frees.

Parameters

  menu | The Efreet_Menu to unreference

Returns
  Returns no value

Since
  1.11

References efreet_menu_free().

## efreet_menu_desktop_insert()

int efreet_menu_desktop_insert | ( | Efreet_Menu * | menu,
|  | Efreet_Desktop * | desktop,
|  | int | pos )

Insert a desktop element in a menu structure. Only accepts desktop files in default directories.

Parameters

  menu | The menu to work with
  desktop | The desktop to insert
  pos | The position to place the new desktop

Returns
  Returns 1 on success, 0 on failure

References Efreet_Menu::desktop, efreet_desktop_ref(), efreet_util_path_to_file_id(), eina_list_append(), eina_list_append_relative(), eina_list_nth(), EINA_SAFETY_ON_NULL_RETURN_VAL, eina_stringshare_add(), Efreet_Menu::entries, _Efreet_Desktop::icon, Efreet_Menu::icon, Efreet_Menu::id, _Efreet_Desktop::name, Efreet_Menu::name, and _Efreet_Desktop::orig_path.

## efreet_menu_desktop_remove()

int efreet_menu_desktop_remove | ( | Efreet_Menu * | menu,
|  | Efreet_Desktop * | desktop )

Remove a desktop element in a menu structure. Only accepts desktop files in default directories.

Parameters

  menu | The menu to work with
  desktop | The desktop to remove

Returns
  Returns 1 on success, 0 on failure

References efreet_menu_free(), EINA_COMPARE_CB, eina_list_remove(), eina_list_search_unsorted(), EINA_SAFETY_ON_NULL_RETURN_VAL, and Efreet_Menu::entries.

## efreet_menu_dump()

void efreet_menu_dump | ( | Efreet_Menu * | menu,
|  | const char * | indent )

Dumps the contents of the menu to the command line.

Parameters

  menu | The menu to work with
  menu | The menu to work with
  indent | The indent level to print the menu at

Returns
  Returns no value

References alloca(), efreet_menu_dump(), EINA_LIST_FOREACH, EINA_SAFETY_ON_NULL_RETURN, Efreet_Menu::entries, Efreet_Menu::icon, INF, and Efreet_Menu::name.

Referenced by efreet_menu_dump().