Enlightenment CVS committal Author : devilhorns Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_fm_mime.h e_fm_mime.c Log Message: Add mime/glob _del functions. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm_mime.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_fm_mime.h 14 Oct 2007 12:59:26 -0000 1.6 +++ e_fm_mime.h 14 Oct 2007 13:39:39 -0000 1.7 @@ -1,33 +1,34 @@ -/* - * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 - */ -#ifdef E_TYPEDEFS - -#else -#ifndef E_FM_MIME_H -#define E_FM_MIME_H - -typedef struct _E_Fm_Mime_Handler E_Fm_Mime_Handler; - -struct _E_Fm_Mime_Handler -{ - const char *label, *icon_group; - void (*action_func) (Evas_Object *obj, const char *path, void *data); - int (*test_func) (Evas_Object *obj, const char *path, void *data); - void *action_data; - void *test_data; -}; - -EAPI const char *e_fm_mime_filename_get(const char *fname); -EAPI const char *e_fm_mime_icon_get(const char *mime); -EAPI void e_fm_mime_icon_cache_flush(void); - +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#ifdef E_TYPEDEFS + +#else +#ifndef E_FM_MIME_H +#define E_FM_MIME_H + +typedef struct _E_Fm_Mime_Handler E_Fm_Mime_Handler; + +struct _E_Fm_Mime_Handler +{ + const char *label, *icon_group; + void (*action_func) (Evas_Object *obj, const char *path, void *data); + int (*test_func) (Evas_Object *obj, const char *path, void *data); + void *action_data; + void *test_data; +}; + +EAPI const char *e_fm_mime_filename_get(const char *fname); +EAPI const char *e_fm_mime_icon_get(const char *mime); +EAPI void e_fm_mime_icon_cache_flush(void); + EAPI E_Fm_Mime_Handler *e_fm_mime_handler_new(const char *label, const char *icon_group, void (*action_func) (Evas_Object *obj, const char *path, void *data), void *action_data, int (test_func) (Evas_Object *obj, const char *path, void *data), void *test_data); -EAPI void e_fm_mime_handler_free(E_Fm_Mime_Handler *handler); -EAPI Evas_Bool e_fm_mime_handler_mime_add(E_Fm_Mime_Handler *handler, const char *mime); -EAPI Evas_Bool e_fm_mime_handler_glob_add(E_Fm_Mime_Handler *handler, const char *glob); -EAPI Evas_Bool e_fm_mime_handler_call(E_Fm_Mime_Handler *handler, Evas_Object *obj, const char *path); - - -#endif -#endif +EAPI void e_fm_mime_handler_free(E_Fm_Mime_Handler *handler); +EAPI Evas_Bool e_fm_mime_handler_mime_add(E_Fm_Mime_Handler *handler, const char *mime); +EAPI Evas_Bool e_fm_mime_handler_glob_add(E_Fm_Mime_Handler *handler, const char *glob); +EAPI Evas_Bool e_fm_mime_handler_call(E_Fm_Mime_Handler *handler, Evas_Object *obj, const char *path); +EAPI void e_fm_mime_handler_mime_del(E_Fm_Mime_Handler *handler, const char *mime); +EAPI void e_fm_mime_handler_glob_del(E_Fm_Mime_Handler *handler, const char *glob); + +#endif +#endif =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm_mime.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- e_fm_mime.c 14 Oct 2007 12:59:26 -0000 1.18 +++ e_fm_mime.c 14 Oct 2007 13:39:39 -0000 1.19 @@ -7,6 +7,8 @@ static Evas_Bool _e_fm_mime_icon_foreach(Evas_Hash *hash, const char *key, void *data, void *fdata); static Evas_Hash *icon_map = NULL; +static Evas_Hash *_mime_handlers = NULL; +static Evas_Hash *_glob_handlers = NULL; /* externally accessible functions */ EAPI const char * @@ -115,9 +117,6 @@ icon_map = NULL; } -static Evas_Hash *_mime_handlers = NULL; -static Evas_Hash *_glob_handlers = NULL; - /* create (allocate), set properties, and return a new mime handler */ EAPI E_Fm_Mime_Handler * e_fm_mime_handler_new(const char *label, const char *icon_group, @@ -220,6 +219,42 @@ handler->action_func(obj, path, handler->action_data); return 1; +} + +EAPI void +e_fm_mime_handler_mime_del(E_Fm_Mime_Handler *handler, const char *mime) +{ + Evas_List *handlers = NULL; + + if ((!handler) || (!mime)) return; + + /* if there's an entry for this mime already, then append to its list */ + if ((handlers = evas_hash_find(_mime_handlers, mime))) + { + handlers = evas_list_remove(handlers, handler); + if (handlers) + _mime_handlers = evas_hash_modify(_mime_handlers, mime, handlers); + else + _mime_handlers = evas_hash_del(_mime_handlers, mime, handlers); + } +} + +EAPI void +e_fm_mime_handler_glob_del(E_Fm_Mime_Handler *handler, const char *glob) +{ + Evas_List *handlers = NULL; + + if ((!handler) || (!glob)) return; + + /* if there's an entry for this glob already, then append to its list */ + if ((handlers = evas_hash_find(_glob_handlers, glob))) + { + handlers = evas_list_remove(handlers, handler); + if (handlers) + _glob_handlers = evas_hash_modify(_glob_handlers, glob, handlers); + else + _glob_handlers = evas_hash_del(_glob_handlers, glob, handlers); + } } /* local subsystem functions */ ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs