Efreet_Desktop: The FDO Desktop Entry

Specification functions and structures. More...

Data Structures

struct  _Efreet_Desktop
 Efreet_Desktop. More...

Defines

#define efreet_desktop_unref(desktop)   efreet_desktop_free((desktop))
 Alias for efreet_desktop_free(desktop)

Typedefs

typedef struct _Efreet_Desktop Efreet_Desktop
 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_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.
typedef void *(* Efreet_Desktop_Type_Free_Cb )(void *data)
 A callback used to free data for custom types.

Functions

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.
int efreet_desktop_ref (Efreet_Desktop *desktop)
 Increases reference count on desktop.
Efreet_Desktopefreet_desktop_empty_new (const char *file)
 Creates a new empty Efreet_Desktop structure or NULL on failure.
Efreet_Desktopefreet_desktop_new (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.
Efreet_Desktopefreet_desktop_uncached_new (const char *file)
 Creates a new Efreet_Desktop structure initialized from the contents of file or NULL on failure.
void efreet_desktop_free (Efreet_Desktop *desktop)
 Frees the Efreet_Desktop structure and all of it's data.
int efreet_desktop_save (Efreet_Desktop *desktop)
 Saves any changes made to desktop back to the file on the filesystem.
int efreet_desktop_save_as (Efreet_Desktop *desktop, const char *file)
 Saves desktop to file.
void efreet_desktop_exec (Efreet_Desktop *desktop, Eina_List *files, void *data)
 Parses the desktop exec line and returns an Ecore_Exe.
void efreet_desktop_environment_set (const char *environment)
 sets the global desktop environment name
const char * efreet_desktop_environment_get (void)
 sets the global desktop environment name
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.
void * efreet_desktop_command_get (Efreet_Desktop *desktop, Eina_List *files, Efreet_Desktop_Command_Cb func, void *data)
Eina_List * efreet_desktop_command_local_get (Efreet_Desktop *desktop, Eina_List *files)
 Get the command to use to execute a desktop entry.
unsigned int efreet_desktop_category_count_get (Efreet_Desktop *desktop)
 Retrieves the number of categories the given desktop belongs too.
void efreet_desktop_category_add (Efreet_Desktop *desktop, const char *category)
 add a category to a desktop
int efreet_desktop_category_del (Efreet_Desktop *desktop, const char *category)
 removes a category from a desktop
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.
int efreet_desktop_type_alias (int from_type, const char *alias)
 Add an alias for an existing desktop type.
void * efreet_desktop_type_data_get (Efreet_Desktop *desktop)
 get type specific data for custom desktop types
Eina_List * efreet_desktop_string_list_parse (const char *string)
 Parse ';' separate list of strings according to the desktop spec.
char * efreet_desktop_string_list_join (Eina_List *list)
 Create a ';' separate list of strings according to the desktop spec.
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.
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.
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.

Variables

int EFREET_DESKTOP_TYPE_APPLICATION
 Get a command to use to execute a desktop entry.
int EFREET_DESKTOP_TYPE_LINK
int EFREET_DESKTOP_TYPE_DIRECTORY
int EFREET_EVENT_DESKTOP_CACHE_UPDATE
 Event id for cache update.
int EFREET_EVENT_DESKTOP_CACHE_BUILD
 Event id for cache build complete.

Detailed Description

Specification functions and structures.


Function Documentation

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 By using efreet_desktop_get the Efreet_Desktop will be saved in an internal cache for quicker loading.

Users of this command should listen to EFREET_EVENT_DESKTOP_CACHE_UPDATE event, if the application is to keep the reference. When the event fires the Efreet_Desktop struct should be invalidated and reloaded from a new cache file.

References _Efreet_Desktop::eet, efreet_desktop_new(), EFREET_DESKTOP_TYPE_APPLICATION, and _Efreet_Desktop::type.

Referenced by efreet_util_desktop_exec_find(), efreet_util_desktop_exec_glob_list(), and efreet_util_desktop_file_id_find().

int efreet_desktop_ref ( Efreet_Desktop desktop)

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().

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.

Efreet_Desktop* efreet_desktop_new ( 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 Users of this command should listen to EFREET_EVENT_DESKTOP_CACHE_UPDATE event, if the application is to keep the reference. When the event fires the Efreet_Desktop struct should be invalidated and reloaded from a new cache file.

References efreet_desktop_free(), efreet_desktop_uncached_new(), and _Efreet_Desktop::ref.

Referenced by efreet_desktop_get().

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.

Data in the structure is allocated with strdup, so use free and strdup to change values.

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

Referenced by efreet_desktop_new().

int efreet_desktop_save ( Efreet_Desktop desktop)

Saves any changes made to desktop back to the file on the filesystem.

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

References efreet_desktop_string_list_join(), FREE, _Efreet_Desktop::not_show_in, _Efreet_Desktop::only_show_in, _Efreet_Desktop::orig_path, and _Efreet_Desktop::type.

Referenced by efreet_desktop_save_as().

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 Please use efreet_desktop_uncached_new() on an existing file before using efreet_desktop_save_as()

References _Efreet_Desktop::eet, efreet_desktop_save(), IF_FREE, and _Efreet_Desktop::orig_path.

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
void efreet_desktop_environment_set ( const char *  environment)

sets the global desktop environment name

Parameters:
environmentthe environment name
const char* efreet_desktop_environment_get ( void  )

sets the global desktop environment name

Returns:
environment the environment name
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.

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_proga 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::exec, and NEW.

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::exec, and NEW.

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.

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.

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.

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 NEW.

Referenced by efreet_desktop_type_alias().

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().

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.

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
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().

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.

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.

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.


Variable Documentation

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

Referenced by efreet_desktop_get().

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.

Event id for cache build complete.

Since:
1.1.0