Rename from fm / Fm to fm2 / Fm2 to stay consistent with code.

Change glob get function to do glob matching.


SVN revision: 32066
This commit is contained in:
codewarrior 2007-10-14 15:17:32 +00:00 committed by codewarrior
parent 9c181a96c3
commit e9a0d97c04
2 changed files with 66 additions and 36 deletions

View File

@ -3,7 +3,16 @@
*/ */
#include "e.h" #include "e.h"
/* local types */
typedef struct _E_Fm2_Mime_Handler_Tuple E_Fm2_Mime_Handler_Tuple;
struct _E_Fm2_Mime_Handler_Tuple
{
Evas_List *list;
const char *str;
};
/* local subsystem functions */ /* local subsystem functions */
static Evas_Bool _e_fm2_mime_handler_glob_match(Evas_Hash *hash, const char *key, void *data, void *fdata);
static Evas_Bool _e_fm_mime_icon_foreach(Evas_Hash *hash, const char *key, void *data, void *fdata); 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 *icon_map = NULL;
@ -118,18 +127,18 @@ e_fm_mime_icon_cache_flush(void)
} }
/* create (allocate), set properties, and return a new mime handler */ /* create (allocate), set properties, and return a new mime handler */
EAPI E_Fm_Mime_Handler * EAPI E_Fm2_Mime_Handler *
e_fm_mime_handler_new(const char *label, const char *icon_group, e_fm2_mime_handler_new(const char *label, const char *icon_group,
void (*action_func) (Evas_Object *obj, const char *path, void *data), void (*action_func) (Evas_Object *obj, const char *path, void *data),
void *action_data, void *action_data,
int (test_func) (Evas_Object *obj, const char *path, void *data), int (test_func) (Evas_Object *obj, const char *path, void *data),
void *test_data) void *test_data)
{ {
E_Fm_Mime_Handler *handler; E_Fm2_Mime_Handler *handler;
if ((!label) || (!action_func)) return NULL; if ((!label) || (!action_func)) return NULL;
handler = E_NEW(E_Fm_Mime_Handler, 1); handler = E_NEW(E_Fm2_Mime_Handler, 1);
if (!handler) return NULL; if (!handler) return NULL;
handler->label = evas_stringshare_add(label); handler->label = evas_stringshare_add(label);
@ -143,7 +152,7 @@ e_fm_mime_handler_new(const char *label, const char *icon_group,
} }
EAPI void EAPI void
e_fm_mime_handler_free(E_Fm_Mime_Handler *handler) e_fm2_mime_handler_free(E_Fm2_Mime_Handler *handler)
{ {
if (!handler) return; if (!handler) return;
evas_stringshare_del(handler->label); evas_stringshare_del(handler->label);
@ -153,7 +162,7 @@ e_fm_mime_handler_free(E_Fm_Mime_Handler *handler)
/* associate a certain mime type with a handler */ /* associate a certain mime type with a handler */
EAPI Evas_Bool EAPI Evas_Bool
e_fm_mime_handler_mime_add(E_Fm_Mime_Handler *handler, const char *mime) e_fm2_mime_handler_mime_add(E_Fm2_Mime_Handler *handler, const char *mime)
{ {
Evas_List *handlers = NULL; Evas_List *handlers = NULL;
@ -177,7 +186,7 @@ e_fm_mime_handler_mime_add(E_Fm_Mime_Handler *handler, const char *mime)
/* associate a certain glob with a handler */ /* associate a certain glob with a handler */
EAPI Evas_Bool EAPI Evas_Bool
e_fm_mime_handler_glob_add(E_Fm_Mime_Handler *handler, const char *glob) e_fm2_mime_handler_glob_add(E_Fm2_Mime_Handler *handler, const char *glob)
{ {
Evas_List *handlers = NULL; Evas_List *handlers = NULL;
@ -201,7 +210,7 @@ e_fm_mime_handler_glob_add(E_Fm_Mime_Handler *handler, const char *glob)
/* delete a certain handler for a certian mime */ /* delete a certain handler for a certian mime */
EAPI void EAPI void
e_fm_mime_handler_mime_del(E_Fm_Mime_Handler *handler, const char *mime) e_fm2_mime_handler_mime_del(E_Fm2_Mime_Handler *handler, const char *mime)
{ {
Evas_List *handlers = NULL; Evas_List *handlers = NULL;
@ -220,7 +229,7 @@ e_fm_mime_handler_mime_del(E_Fm_Mime_Handler *handler, const char *mime)
/* delete a certain handler for a certain glob */ /* delete a certain handler for a certain glob */
EAPI void EAPI void
e_fm_mime_handler_glob_del(E_Fm_Mime_Handler *handler, const char *glob) e_fm2_mime_handler_glob_del(E_Fm2_Mime_Handler *handler, const char *glob)
{ {
Evas_List *handlers = NULL; Evas_List *handlers = NULL;
@ -239,7 +248,7 @@ e_fm_mime_handler_glob_del(E_Fm_Mime_Handler *handler, const char *glob)
/* get the list of mime handlers for a mime */ /* get the list of mime handlers for a mime */
EAPI Evas_List * EAPI Evas_List *
e_fm_mime_handler_mime_handlers_get(const char *mime) e_fm2_mime_handler_mime_handlers_get(const char *mime)
{ {
if ((!mime) || (!_mime_handlers)) if ((!mime) || (!_mime_handlers))
return NULL; return NULL;
@ -247,19 +256,28 @@ e_fm_mime_handler_mime_handlers_get(const char *mime)
return evas_hash_find(_mime_handlers, mime); return evas_hash_find(_mime_handlers, mime);
} }
/* get the list of glob handlers for a glob */ /* get the list of glob handlers for a glob. NOTE: the list should be free()'ed */
EAPI Evas_List * EAPI Evas_List *
e_fm_mime_handler_glob_handlers_get(const char *glob) e_fm2_mime_handler_glob_handlers_get(const char *glob)
{ {
E_Fm2_Mime_Handler_Tuple *tuple;
Evas_List *handlers;
if ((!glob) || (!_glob_handlers)) if ((!glob) || (!_glob_handlers))
return NULL; return NULL;
return evas_hash_find(_glob_handlers, glob); tuple = E_NEW(E_Fm2_Mime_Handler_Tuple, 1);
tuple->list = NULL;
tuple->str = glob;
evas_hash_foreach(_glob_handlers, _e_fm2_mime_handler_glob_match, tuple);
handlers = tuple->list;
E_FREE(tuple);
return handlers;
} }
/* call a certain handler */ /* call a certain handler */
EAPI Evas_Bool EAPI Evas_Bool
e_fm_mime_handler_call(E_Fm_Mime_Handler *handler, Evas_Object *obj, const char *path) e_fm2_mime_handler_call(E_Fm2_Mime_Handler *handler, Evas_Object *obj, const char *path)
{ {
if (!handler || !obj || !path || !handler->action_func) if (!handler || !obj || !path || !handler->action_func)
return 0; return 0;
@ -281,7 +299,7 @@ e_fm_mime_handler_call(E_Fm_Mime_Handler *handler, Evas_Object *obj, const char
/* call all handlers related to a certain mime */ /* call all handlers related to a certain mime */
EAPI void EAPI void
e_fm_mime_handler_mime_handlers_call_all(Evas_Object *obj, const char *path, const char *mime) e_fm2_mime_handler_mime_handlers_call_all(Evas_Object *obj, const char *path, const char *mime)
{ {
Evas_List *handlers; Evas_List *handlers;
Evas_List *l; Evas_List *l;
@ -289,24 +307,24 @@ e_fm_mime_handler_mime_handlers_call_all(Evas_Object *obj, const char *path, con
if ((!obj) || (!path) || (!mime)) if ((!obj) || (!path) || (!mime))
return; return;
handlers = e_fm_mime_handler_mime_handlers_get(mime); handlers = e_fm2_mime_handler_mime_handlers_get(mime);
if (!handlers) if (!handlers)
return; return;
for (l = handlers; l; l = l->next) for (l = handlers; l; l = l->next)
{ {
E_Fm_Mime_Handler *handler; E_Fm2_Mime_Handler *handler;
handler = l->data; handler = l->data;
if (!handler) continue; if (!handler) continue;
e_fm_mime_handler_call(handler, obj, path); e_fm2_mime_handler_call(handler, obj, path);
} }
} }
/* call all handlers related to a certain glob */ /* call all handlers related to a certain glob */
EAPI void EAPI void
e_fm_mime_handler_glob_handlers_call_all(Evas_Object *obj, const char *path, const char *glob) e_fm2_mime_handler_glob_handlers_call_all(Evas_Object *obj, const char *path, const char *glob)
{ {
Evas_List *handlers; Evas_List *handlers;
Evas_List *l; Evas_List *l;
@ -314,22 +332,34 @@ e_fm_mime_handler_glob_handlers_call_all(Evas_Object *obj, const char *path, con
if ((!obj) || (!path) || (!glob)) if ((!obj) || (!path) || (!glob))
return; return;
handlers = e_fm_mime_handler_glob_handlers_get(glob); handlers = e_fm2_mime_handler_glob_handlers_get(glob);
if (!handlers) if (!handlers)
return; return;
for (l = handlers; l; l = l->next) for (l = handlers; l; l = l->next)
{ {
E_Fm_Mime_Handler *handler; E_Fm2_Mime_Handler *handler;
handler = l->data; handler = l->data;
if (!handler) continue; if (!handler) continue;
e_fm_mime_handler_call(handler, obj, path); e_fm2_mime_handler_call(handler, obj, path);
} }
} }
/* local subsystem functions */ /* local subsystem functions */
/* used to loop a glob hash and determine if the glob handler matches the filename */
static Evas_Bool _e_fm2_mime_handler_glob_match(Evas_Hash *hash, const char *key, void *data, void *fdata)
{
E_Fm2_Mime_Handler_Tuple *tuple;
tuple = fdata;
if (e_util_glob_match(tuple->str, key))
tuple->list = evas_list_append(tuple->list, data);
return 1;
}
static Evas_Bool static Evas_Bool
_e_fm_mime_icon_foreach(Evas_Hash *hash, const char *key, void *data, void *fdata) _e_fm_mime_icon_foreach(Evas_Hash *hash, const char *key, void *data, void *fdata)
{ {

View File

@ -7,9 +7,9 @@
#ifndef E_FM_MIME_H #ifndef E_FM_MIME_H
#define E_FM_MIME_H #define E_FM_MIME_H
typedef struct _E_Fm_Mime_Handler E_Fm_Mime_Handler; typedef struct _E_Fm2_Mime_Handler E_Fm2_Mime_Handler;
struct _E_Fm_Mime_Handler struct _E_Fm2_Mime_Handler
{ {
const char *label, *icon_group; const char *label, *icon_group;
void (*action_func) (Evas_Object *obj, const char *path, void *data); void (*action_func) (Evas_Object *obj, const char *path, void *data);
@ -22,17 +22,17 @@ EAPI const char *e_fm_mime_filename_get(const char *fname);
EAPI const char *e_fm_mime_icon_get(const char *mime); EAPI const char *e_fm_mime_icon_get(const char *mime);
EAPI void e_fm_mime_icon_cache_flush(void); 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 E_Fm2_Mime_Handler *e_fm2_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 void e_fm2_mime_handler_free(E_Fm2_Mime_Handler *handler);
EAPI Evas_Bool e_fm_mime_handler_mime_add(E_Fm_Mime_Handler *handler, const char *mime); EAPI Evas_Bool e_fm2_mime_handler_mime_add(E_Fm2_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_fm2_mime_handler_glob_add(E_Fm2_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 Evas_Bool e_fm2_mime_handler_call(E_Fm2_Mime_Handler *handler, Evas_Object *obj, const char *path);
EAPI void e_fm_mime_handler_mime_handlers_call_all(Evas_Object *obj, const char *path, const char *mime); EAPI void e_fm2_mime_handler_mime_handlers_call_all(Evas_Object *obj, const char *path, const char *mime);
EAPI void e_fm_mime_handler_glob_handlers_call_all(Evas_Object *obj, const char *path, const char *glob); EAPI void e_fm2_mime_handler_glob_handlers_call_all(Evas_Object *obj, const char *path, const char *glob);
EAPI void e_fm_mime_handler_mime_del(E_Fm_Mime_Handler *handler, const char *mime); EAPI void e_fm2_mime_handler_mime_del(E_Fm2_Mime_Handler *handler, const char *mime);
EAPI void e_fm_mime_handler_glob_del(E_Fm_Mime_Handler *handler, const char *glob); EAPI void e_fm2_mime_handler_glob_del(E_Fm2_Mime_Handler *handler, const char *glob);
EAPI Evas_List *e_fm_mime_handler_mime_handlers_get(const char *mime); EAPI Evas_List *e_fm2_mime_handler_mime_handlers_get(const char *mime);
EAPI Evas_List *e_fm_mime_handler_glob_handlers_get(const char *glob); EAPI Evas_List *e_fm2_mime_handler_glob_handlers_get(const char *glob);
#endif #endif
#endif #endif