Efreet_Desktop: The FDO Desktop Entry

Data Structures

struct  _Efreet_Desktop
 a parsed representation of a .desktop file More...

Defines

#define efreet_desktop_unref(desktop)   efreet_desktop_free((desktop))

Typedefs

typedef struct _Efreet_Desktop Efreet_Desktop
typedef void *(* Efreet_Desktop_Command_Cb )(void *data, Efreet_Desktop *desktop, char *command, int remaining)
typedef int(* Efreet_Desktop_Progress_Cb )(void *data, Efreet_Desktop *desktop, char *uri, long int total, long int current)
typedef void *(* Efreet_Desktop_Type_Free_Cb )(void *data)
typedef void *(* Efreet_Desktop_Type_Parse_Cb )(Efreet_Desktop *desktop, Efreet_Ini *ini)
typedef void(* Efreet_Desktop_Type_Save_Cb )(Efreet_Desktop *desktop, Efreet_Ini *ini)

Functions

EAPI void efreet_desktop_category_add (Efreet_Desktop *desktop, const char *category)
 add a category to a desktop
EAPI unsigned int efreet_desktop_category_count_get (Efreet_Desktop *desktop)
 Retrieves the number of categories the given desktop belongs too.
EAPI int efreet_desktop_category_del (Efreet_Desktop *desktop, const char *category)
 removes a category from a desktop
EAPI void * efreet_desktop_command_get (Efreet_Desktop *desktop, Eina_List *files, Efreet_Desktop_Command_Cb func, void *data)
 Get a command to use to execute a desktop entry.
EAPI Eina_List * efreet_desktop_command_local_get (Efreet_Desktop *desktop, Eina_List *files)
 Get the command to use to execute a desktop entry.
EAPI void * efreet_desktop_command_progress_get (Efreet_Desktop *desktop, Eina_List *files, Efreet_Desktop_Command_Cb cb_command, Efreet_Desktop_Progress_Cb cb_prog, void *data)
 Get a command to use to execute a desktop entry, and receive progress updates for downloading of remote URI's passed in.
EAPI Efreet_Desktopefreet_desktop_empty_new (const char *file)
 Creates a new empty Efreet_Desktop structure or NULL on failure.
EAPI const char * efreet_desktop_environment_get (void)
 sets the global desktop environment name
EAPI void efreet_desktop_environment_set (const char *environment)
 sets the global desktop environment name
EAPI void efreet_desktop_exec (Efreet_Desktop *desktop, Eina_List *files, void *data)
 Parses the desktop exec line and returns an Ecore_Exe.
EAPI void efreet_desktop_free (Efreet_Desktop *desktop)
 Frees the Efreet_Desktop structure and all of it's data.
EAPI Efreet_Desktopefreet_desktop_get (const char *file)
 Gets a reference to an Efreet_Desktop structure representing the contents of file or NULL if file is not a valid .desktop file.
EAPI Efreet_Desktopefreet_desktop_new (const char *file)
 Creates a new Efreet_Desktop structure initialized from the contents of file or NULL on failure.
EAPI int efreet_desktop_ref (Efreet_Desktop *desktop)
 Increases reference count on desktop.
EAPI int efreet_desktop_save (Efreet_Desktop *desktop)
 Saves any changes made to desktop back to the file on the filesystem.
EAPI int efreet_desktop_save_as (Efreet_Desktop *desktop, const char *file)
 Saves desktop to file.
EAPI char * efreet_desktop_string_list_join (Eina_List *list)
 Create a ';' separate list of strings according to the desktop spec.
EAPI Eina_List * efreet_desktop_string_list_parse (const char *string)
 Parse ';' separate list of strings according to the desktop spec.
EAPI int efreet_desktop_type_add (const char *type, Efreet_Desktop_Type_Parse_Cb parse_func, Efreet_Desktop_Type_Save_Cb save_func, Efreet_Desktop_Type_Free_Cb free_func)
 Adds the given type to the list of types in the system.
EAPI int efreet_desktop_type_alias (int from_type, const char *alias)
 Add an alias for an existing desktop type.
EAPI void * efreet_desktop_type_data_get (Efreet_Desktop *desktop)
 get type specific data for custom desktop types
EAPI Efreet_Desktopefreet_desktop_uncached_new (const char *file)
 Creates a new Efreet_Desktop structure initialized from the contents of file or NULL on failure.
EAPI Eina_Bool efreet_desktop_x_field_del (Efreet_Desktop *desktop, const char *key)
 Delete the key and value for a X- field (Non spec) in the structure.
EAPI const char * efreet_desktop_x_field_get (Efreet_Desktop *desktop, const char *key)
 Get the value for a X- field (Non spec) in the structure.
EAPI Eina_Bool efreet_desktop_x_field_set (Efreet_Desktop *desktop, const char *key, const char *data)
 Set the value for a X- field (Non spec) in the structure.

Variables

EAPI int EFREET_DESKTOP_TYPE_APPLICATION
EAPI int EFREET_DESKTOP_TYPE_DIRECTORY
EAPI int EFREET_DESKTOP_TYPE_LINK
EAPI int EFREET_EVENT_DESKTOP_CACHE_UPDATE

Detailed Description

Specification functions and structures


Define Documentation

#define efreet_desktop_unref (   desktop)    efreet_desktop_free((desktop))

Alias for efreet_desktop_free(desktop)


Typedef Documentation

Efreet_Desktop

typedef void*(* Efreet_Desktop_Command_Cb)(void *data, Efreet_Desktop *desktop, char *command, int remaining)

A callback used with efreet_desktop_command_get()

typedef int(* Efreet_Desktop_Progress_Cb)(void *data, Efreet_Desktop *desktop, char *uri, long int total, long int current)

A callback used to get download progress of remote uris

typedef void*(* Efreet_Desktop_Type_Free_Cb)(void *data)

A callback used to free data for custom types

typedef void*(* Efreet_Desktop_Type_Parse_Cb)(Efreet_Desktop *desktop, Efreet_Ini *ini)

A callback used to parse data for custom types

typedef void(* Efreet_Desktop_Type_Save_Cb)(Efreet_Desktop *desktop, Efreet_Ini *ini)

A callback used to save data for custom types


Function Documentation

EAPI void efreet_desktop_category_add ( Efreet_Desktop desktop,
const char *  category 
)

add a category to a desktop

Parameters:
desktopthe desktop
categorythe category name

References _Efreet_Desktop::categories.

Retrieves the number of categories the given desktop belongs too.

Parameters:
desktopThe desktop to work with
Returns:
Returns the number of categories assigned to this desktop

References _Efreet_Desktop::categories.

EAPI int efreet_desktop_category_del ( Efreet_Desktop desktop,
const char *  category 
)

removes a category from a desktop

Parameters:
desktopthe desktop
categorythe category name
Returns:
1 if the desktop had his category listed, 0 otherwise

References _Efreet_Desktop::categories.

EAPI void* efreet_desktop_command_get ( Efreet_Desktop desktop,
Eina_List *  files,
Efreet_Desktop_Command_Cb  func,
void *  data 
)

Get a command to use to execute a desktop entry.

Parameters:
desktopthe desktop entry
filesan eina list of file names to execute, as either absolute paths, relative paths, or uris
funca callback to call for each prepared command line
datauser data passed to the callback
Returns:
Returns the return value of func on success or NULL on failure

References efreet_desktop_command_progress_get().

Referenced by efreet_desktop_exec().

EAPI Eina_List* efreet_desktop_command_local_get ( Efreet_Desktop desktop,
Eina_List *  files 
)

Get the command to use to execute a desktop entry.

Parameters:
desktopthe desktop entry
filesan eina list of local files, as absolute paths, local paths, or file// uris (or NULL to get exec string with no files appended)
Returns:
Returns an eina list of exec strings The returned list and each of its elements must be freed.

References Efreet_Desktop_Command::desktop, _Efreet_Desktop::exec, Efreet_Desktop_Command::files, Efreet_Desktop_Command::flags, NEW, and Efreet_Desktop_Command_File::pending.

EAPI void* efreet_desktop_command_progress_get ( Efreet_Desktop desktop,
Eina_List *  files,
Efreet_Desktop_Command_Cb  cb_command,
Efreet_Desktop_Progress_Cb  cb_progress,
void *  data 
)

Get a command to use to execute a desktop entry, and receive progress updates for downloading of remote URI's passed in.

Parameters:
desktopthe desktop entry
filesan eina list of file names to execute, as either absolute paths, relative paths, or uris
cb_commanda callback to call for each prepared command line
cb_progressa callback to get progress for the downloads
datauser data passed to the callback
Returns:
Returns 1 on success or 0 on failure

References Efreet_Desktop_Command::cb_command, Efreet_Desktop_Command::cb_progress, Efreet_Desktop_Command::data, Efreet_Desktop_Command::desktop, _Efreet_Desktop::exec, Efreet_Desktop_Command::files, Efreet_Desktop_Command::flags, NEW, Efreet_Desktop_Command::num_pending, and Efreet_Desktop_Command_File::pending.

Referenced by efreet_desktop_command_get().

EAPI Efreet_Desktop* efreet_desktop_empty_new ( const char *  file)

Creates a new empty Efreet_Desktop structure or NULL on failure.

Parameters:
fileThe file to create the Efreet_Desktop from
Returns:
Returns a new empty_Efreet_Desktop on success, NULL on failure

References _Efreet_Desktop::load_time, NEW, _Efreet_Desktop::orig_path, and _Efreet_Desktop::ref.

EAPI const char* efreet_desktop_environment_get ( void  )

sets the global desktop environment name

Returns:
environment the environment name
EAPI void efreet_desktop_environment_set ( const char *  environment)

sets the global desktop environment name

Parameters:
environmentthe environment name
EAPI void efreet_desktop_exec ( Efreet_Desktop desktop,
Eina_List *  files,
void *  data 
)

Parses the desktop exec line and returns an Ecore_Exe.

Parameters:
desktopThe desktop file to work with
filesThe files to be substituted into the exec line
dataThe data pointer to pass
Returns:
Returns the Ecore_Exce for desktop

References efreet_desktop_command_get().

EAPI Efreet_Desktop* efreet_desktop_get ( const char *  file)

Gets a reference to an Efreet_Desktop structure representing the contents of file or NULL if file is not a valid .desktop file.

Parameters:
fileThe file to get the Efreet_Desktop from
Returns:
Returns a reference to a cached Efreet_Desktop on success, NULL on failure. This reference should not be freed. By using efreet_desktop_get the Efreet_Desktop will be saved in an internal cache, and changes will be signalled by events.

Efreet will also try to save all files fetched by efreet_desktop_get in a cache to speed up further requests.

References _Efreet_Desktop::cached, _Efreet_Desktop::eet, efreet_cache_desktop_update(), efreet_desktop_cache, efreet_desktop_new(), _Efreet_Desktop::orig_path, and _Efreet_Desktop::ref.

Referenced by efreet_util_desktop_exec_find(), and efreet_util_desktop_exec_glob_list().

EAPI Efreet_Desktop* efreet_desktop_new ( const char *  file)

Creates a new Efreet_Desktop structure initialized from the contents of file or NULL on failure.

Parameters:
fileThe file to create the Efreet_Desktop from
Returns:
Returns a new Efreet_Desktop on success, NULL on failure By using efreet_desktop_new the caller will get a unique copy of a Efreet_Desktop. The Efreet_Desktop should immidiatly after use be free'd, as there is no guarantee how long the pointers will be valid.

References efreet_cache_desktop_find(), efreet_desktop_free(), efreet_desktop_uncached_new(), _Efreet_Desktop::load_time, and _Efreet_Desktop::orig_path.

Referenced by efreet_desktop_get().

Increases reference count on desktop.

Parameters:
desktopThe Efreet_Desktop to ref
Returns:
Returns the new reference count

References _Efreet_Desktop::ref.

Referenced by efreet_menu_desktop_insert().

EAPI int efreet_desktop_save_as ( Efreet_Desktop desktop,
const char *  file 
)

Saves desktop to file.

Parameters:
desktopThe desktop file to save
fileThe filename to save as
Returns:
Returns 1 on success or 0 on failure

References _Efreet_Desktop::cached, efreet_desktop_cache, efreet_desktop_save(), FREE, and _Efreet_Desktop::orig_path.

EAPI char* efreet_desktop_string_list_join ( Eina_List *  list)

Create a ';' separate list of strings according to the desktop spec.

Parameters:
listEina_List with strings
Returns:
a raw string list

Referenced by efreet_desktop_save().

EAPI Eina_List* efreet_desktop_string_list_parse ( const char *  string)

Parse ';' separate list of strings according to the desktop spec.

Parameters:
stringthe raw string list
Returns:
an Eina_List of ecore string's

References alloca(), and WRN.

EAPI int efreet_desktop_type_add ( const char *  type,
Efreet_Desktop_Type_Parse_Cb  parse_func,
Efreet_Desktop_Type_Save_Cb  save_func,
Efreet_Desktop_Type_Free_Cb  free_func 
)

Adds the given type to the list of types in the system.

Parameters:
typeThe type to add to the list of matching types
parse_funca function to parse out custom fields
save_funca function to save data returned from parse_func
free_funca function to free data returned from parse_func
Returns:
Returns the id of the new type

References Efreet_Desktop_Type_Info::free_func, Efreet_Desktop_Type_Info::id, NEW, Efreet_Desktop_Type_Info::parse_func, Efreet_Desktop_Type_Info::save_func, and Efreet_Desktop_Type_Info::type.

Referenced by efreet_desktop_init(), and efreet_desktop_type_alias().

EAPI int efreet_desktop_type_alias ( int  from_type,
const char *  alias 
)

Add an alias for an existing desktop type.

Parameters:
from_typethe type to alias (e.g. EFREE_DESKTOP_TYPE_APPLICATION)
aliasthe alias
Returns:
the new type id, or -1 if from_type was not valid

This allows applications to add non-standard types that behave exactly as standard types.

References efreet_desktop_type_add(), Efreet_Desktop_Type_Info::free_func, Efreet_Desktop_Type_Info::parse_func, and Efreet_Desktop_Type_Info::save_func.

get type specific data for custom desktop types

Parameters:
desktopthe desktop
Returns:
type specific data, or NULL if there is none

References _Efreet_Desktop::type_data.

Creates a new Efreet_Desktop structure initialized from the contents of file or NULL on failure.

Parameters:
fileThe file to create the Efreet_Desktop from
Returns:
Returns a new Efreet_Desktop on success, NULL on failure By using efreet_desktop_uncached_new the Efreet_Desktop structure will be read from disk, and not from any cache.

References efreet_desktop_free(), NEW, _Efreet_Desktop::orig_path, and _Efreet_Desktop::ref.

Referenced by efreet_desktop_new().

EAPI Eina_Bool efreet_desktop_x_field_del ( Efreet_Desktop desktop,
const char *  key 
)

Delete the key and value for a X- field (Non spec) in the structure.

Parameters:
desktopthe desktop
keythe key
Returns:
EINA_TRUE if the key existed

References _Efreet_Desktop::x.

EAPI const char* efreet_desktop_x_field_get ( Efreet_Desktop desktop,
const char *  key 
)

Get the value for a X- field (Non spec) in the structure.

Parameters:
desktopthe desktop
keythe key
Returns:
The value referenced by the key, or NULL if the key does not exist

References _Efreet_Desktop::x.

EAPI Eina_Bool efreet_desktop_x_field_set ( Efreet_Desktop desktop,
const char *  key,
const char *  data 
)

Set the value for a X- field (Non spec) in the structure.

Parameters:
desktopthe desktop
keythe key name to set
datathe value to set
Returns:
EINA_TRUE on success

The key has to start with "X-"

References _Efreet_Desktop::x.


Variable Documentation

Event id for cache update. All users of efreet_desktop_get must listen to this event and refetch. The old eet cache will be closed and mem will be invalidated.

Referenced by efreet_cache_init().