1 /* vim: set sw=4 ts=4 sts=4 et: */
2 #ifndef EFREET_PRIVATE_H
3 #define EFREET_PRIVATE_H
6 * @file efreet_private.h
7 * @brief Contains methods and defines that are private to the Efreet
9 * @addtogroup Efreet_Private Efreet_Private: Private methods and defines
22 #include <sys/types.h>
34 #include <Ecore_File.h>
35 #include <Ecore_Str.h>
37 #include "efreet_xml.h"
38 #include "efreet_ini.h"
42 * Allocate and zero out c structures of type x
44 #define NEW(x, c) calloc(c, sizeof(x))
48 * Free x and set to NULL
50 #define FREE(x) do { free(x); x = NULL; } while (0)
54 * If x is set, free x and set to NULL
56 #define IF_FREE(x) do { if (x) FREE(x); } while (0)
60 * If x is set, eina_stringshare_del x and set to NULL
62 #define IF_RELEASE(x) do { \
64 const char *__tmp; __tmp = (x); (x) = NULL; eina_stringshare_del(__tmp); \
70 * @def IF_FREE_LIST(x)
71 * If x is a valid pointer destroy x and set to NULL
73 #define IF_FREE_LIST(list, free_cb) do { \
76 free_cb(eina_list_data_get(list)); \
77 list = eina_list_remove_list(list, list); \
82 * @def IF_FREE_DLIST(x)
83 * If x is a valid pointer destroy x and set to NULL
85 #define IF_FREE_DLIST(x) do { \
87 Ecore_DList *__tmp; __tmp = (x); (x) = NULL; ecore_dlist_destroy(__tmp); \
93 * @def IF_FREE_HASH(x)
94 * If x is a valid pointer destroy x and set to NULL
96 #define IF_FREE_HASH(x) do { \
98 Eina_Hash *__tmp; __tmp = (x); (x) = NULL; eina_hash_free(__tmp); \
106 * Convenience define to set the maximim path length
108 #define PATH_MAX 4096
113 * The different types of commands in an Exec entry
115 enum Efreet_Desktop_Command_Flag
117 EFREET_DESKTOP_EXEC_FLAG_FULLPATH = 0x0001,
118 EFREET_DESKTOP_EXEC_FLAG_URI = 0x0002,
119 EFREET_DESKTOP_EXEC_FLAG_DIR = 0x0004,
120 EFREET_DESKTOP_EXEC_FLAG_FILE = 0x0008
125 * Efreet_Desktop_Command_Flag
127 typedef enum Efreet_Desktop_Command_Flag Efreet_Desktop_Command_Flag;
131 * Efreet_Desktop_Command
133 typedef struct Efreet_Desktop_Command Efreet_Desktop_Command;
137 * Holds information on a desktop Exec command entry
139 struct Efreet_Desktop_Command
141 Efreet_Desktop *desktop;
144 Efreet_Desktop_Command_Flag flags;
146 Efreet_Desktop_Command_Cb cb_command;
147 Efreet_Desktop_Progress_Cb cb_progress;
150 Eina_List *files; /**< list of Efreet_Desktop_Command_File */
155 * Efreet_Desktop_Command_File
157 typedef struct Efreet_Desktop_Command_File Efreet_Desktop_Command_File;
161 * Stores information on a file passed to the desktop Exec command
163 struct Efreet_Desktop_Command_File
165 Efreet_Desktop_Command *command;
174 int efreet_base_init(void);
175 void efreet_base_shutdown(void);
177 int efreet_icon_init(void);
178 void efreet_icon_shutdown(void);
180 int efreet_menu_init(void);
181 void efreet_menu_shutdown(void);
182 Eina_List *efreet_default_dirs_get(const char *user_dir,
183 Eina_List *system_dirs,
186 int efreet_ini_init(void);
187 int efreet_ini_shutdown(void);
189 int efreet_desktop_init(void);
190 int efreet_desktop_shutdown(void);
192 const char *efreet_home_dir_get(void);
194 EAPI const char *efreet_lang_get(void);
195 EAPI const char *efreet_lang_country_get(void);
196 EAPI const char *efreet_lang_modifier_get(void);
198 size_t efreet_array_cat(char *buffer, size_t size, const char *strs[]);
200 const char *efreet_desktop_environment_get(void);
202 #define NON_EXISTING (void *)-1
204 void efreet_cache_clear(void);
205 const char *efreet_icon_hash_get(const char *theme_name, const char *icon, int size);
206 void efreet_icon_hash_put(const char *theme_name, const char *icon, int size, const char *file);