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

Reply via email to