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:
desktop the desktop
category the category name

References _Efreet_Desktop::categories.

EAPI unsigned int efreet_desktop_category_count_get ( Efreet_Desktop desktop  ) 

Retrieves the number of categories the given desktop belongs too.

Parameters:
desktop The 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:
desktop the desktop
category the 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:
desktop the desktop entry
files an eina list of file names to execute, as either absolute paths, relative paths, or uris
func a callback to call for each prepared command line
data user 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:
desktop the desktop entry
files an 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:
desktop the desktop entry
files an eina list of file names to execute, as either absolute paths, relative paths, or uris
cb_command a callback to call for each prepared command line
cb_progress a callback to get progress for the downloads
data user 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:
file The 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:
environment the 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:
desktop The desktop file to work with
files The files to be substituted into the exec line
data The 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:
file The 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:
file The 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().

EAPI int efreet_desktop_ref ( Efreet_Desktop desktop  ) 

Increases reference count on desktop.

Parameters:
desktop The 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 ( Efreet_Desktop desktop  ) 
EAPI int efreet_desktop_save_as ( Efreet_Desktop desktop,
const char *  file 
)

Saves desktop to file.

Parameters:
desktop The desktop file to save
file The 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:
list Eina_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:
string the 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:
type The type to add to the list of matching types
parse_func a function to parse out custom fields
save_func a function to save data returned from parse_func
free_func a 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_type the type to alias (e.g. EFREE_DESKTOP_TYPE_APPLICATION)
alias the 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.

EAPI void* efreet_desktop_type_data_get ( Efreet_Desktop desktop  ) 

get type specific data for custom desktop types

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

References _Efreet_Desktop::type_data.

EAPI Efreet_Desktop* efreet_desktop_uncached_new ( const char *  file  ) 

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

Parameters:
file The 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:
desktop the desktop
key the 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:
desktop the desktop
key the 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:
desktop the desktop
key the key name to set
data the 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().