Enlightenment CVS committal

Author  : englebass
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_exec.c e_order.c e_order.h 


Log Message:
convert ibar to E_Order

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_exec.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_exec.c    24 Mar 2007 21:28:14 -0000      1.3
+++ e_exec.c    25 Mar 2007 10:16:05 -0000      1.4
@@ -44,6 +44,7 @@
    char *signal;
 };
 
+/* local subsystem functions */
 static void _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, 
int remaining);
 static int  _e_exec_cb_expire_timer(void *data);
 static int  _e_exec_cb_exit(void *data, int type, void *event);
@@ -57,6 +58,7 @@
 static Evas_Object *_dialog_scrolltext_create(Evas *evas, char *title, 
Ecore_Exe_Event_Data_Line *lines);
 static void         _dialog_save_cb(void *data, void *data2);
 
+/* local subsystem globals */
 static Evas_List   *e_exec_start_pending = NULL;
 static Evas_Hash   *e_exec_instances = NULL;
 static int          startup_id = 0;
@@ -64,6 +66,7 @@
 static Ecore_Event_Handler *_e_exec_exit_handler = NULL;
 static Ecore_Event_Handler *_e_exec_border_add_handler = NULL;
 
+/* externally accessible functions */
 EAPI int
 e_exec_init(void)
 {
@@ -119,6 +122,7 @@
    return 1;
 }
 
+/* local subsystem functions */
 static void
 _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining)
 {
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_order.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_order.c   24 Mar 2007 23:51:46 -0000      1.6
+++ e_order.c   25 Mar 2007 10:16:05 -0000      1.7
@@ -8,57 +8,46 @@
  * - Update E_Order object if a .desktop file becomes available
  */
 
+/* local subsystem functions */
 static void _e_order_free       (E_Order *eo);
 static void _e_order_cb_monitor (void *data, Ecore_File_Monitor *em, 
Ecore_File_Event event, const char *path);
+static void _e_order_read       (E_Order *eo);
 static void _e_order_save       (E_Order *eo);
 
+/* externally accessible functions */
 EAPI E_Order *
 e_order_new(const char *path)
 {
    E_Order *eo;
-   FILE *f;
-   
+ 
    if ((!path) || (!ecore_file_exists(path))) return NULL;
 
    eo = E_OBJECT_ALLOC(E_Order, E_ORDER_TYPE, _e_order_free);
    if (!eo) return NULL;
 
-   f = fopen(path, "rb");
-   if (f)
-     {
-       char buf[4096];
-
-       while (fgets(buf, sizeof(buf), f))
-         {
-            int len;
-
-            len = strlen(buf);
-            if (len > 0)
-              {
-                 if (buf[len - 1] == '\n')
-                   {
-                      buf[len - 1] = 0;
-                      len--;
-                   }
-                 if (len > 0)
-                   {
-                      Efreet_Desktop *desktop;
-                      desktop = efreet_util_desktop_by_file_id_get(buf);
-                      if (desktop) eo->desktops = 
evas_list_append(eo->desktops, desktop);
-                   }
-              }
-         }
-       fclose(f);
-     }
    eo->path = evas_stringshare_add(path);
+   _e_order_read(eo);
    eo->monitor = ecore_file_monitor_add(path, _e_order_cb_monitor, eo);
 
    return eo;
 }
 
 EAPI void
+e_order_update_callback_set(E_Order *eo, void (*cb)(void *data, E_Order *eo), 
void *data)
+{
+   E_OBJECT_CHECK(eo);
+   E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE);
+
+   eo->cb.update = cb;
+   eo->cb.data = data;
+}
+
+EAPI void
 e_order_remove(E_Order *eo, Efreet_Desktop *desktop)
 {
+   E_OBJECT_CHECK(eo);
+   E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE);
+
    eo->desktops = evas_list_remove(eo->desktops, desktop);
    _e_order_save(eo);
 }
@@ -66,6 +55,9 @@
 EAPI void
 e_order_append(E_Order *eo, Efreet_Desktop *desktop)
 {
+   E_OBJECT_CHECK(eo);
+   E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE);
+
    eo->desktops = evas_list_append(eo->desktops, desktop);
    _e_order_save(eo);
 }
@@ -73,6 +65,9 @@
 EAPI void
 e_order_prepend_relative(E_Order *eo, Efreet_Desktop *desktop, Efreet_Desktop 
*before)
 {
+   E_OBJECT_CHECK(eo);
+   E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE);
+
    eo->desktops = evas_list_prepend_relative(eo->desktops, desktop, before);
    _e_order_save(eo);
 }
@@ -82,6 +77,9 @@
 {
    Evas_List *l;
 
+   E_OBJECT_CHECK(eo);
+   E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE);
+
    for (l = files; l ; l = l->next)
      {
        Efreet_Desktop *desktop;
@@ -100,6 +98,9 @@
 {
    Evas_List *l;
 
+   E_OBJECT_CHECK(eo);
+   E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE);
+
    for (l = files; l ; l = l->next)
      {
        Efreet_Desktop *desktop;
@@ -113,6 +114,7 @@
    _e_order_save(eo);
 }
 
+/* local subsystem functions */
 static void
 _e_order_free(E_Order *eo)
 {
@@ -125,7 +127,50 @@
 static void
 _e_order_cb_monitor(void *data, Ecore_File_Monitor *em, Ecore_File_Event 
event, const char *path)
 {
-   /* TODO */
+   E_Order *eo;
+
+   eo = data;
+
+   /* It doesn't really matter what the change is, just re-read the file */
+   _e_order_read(eo);
+   if (eo->cb.update) eo->cb.update(eo->cb.data, eo);
+}
+
+static void
+_e_order_read(E_Order *eo)
+{
+   FILE *f;
+
+   eo->desktops = evas_list_free(eo->desktops);
+   if (!eo->path) return;
+
+   f = fopen(eo->path, "rb");
+   if (f)
+     {
+       char buf[4096];
+
+       while (fgets(buf, sizeof(buf), f))
+         {
+            int len;
+
+            len = strlen(buf);
+            if (len > 0)
+              {
+                 if (buf[len - 1] == '\n')
+                   {
+                      buf[len - 1] = 0;
+                      len--;
+                   }
+                 if (len > 0)
+                   {
+                      Efreet_Desktop *desktop;
+                      desktop = efreet_util_desktop_by_file_id_get(buf);
+                      if (desktop) eo->desktops = 
evas_list_append(eo->desktops, desktop);
+                   }
+              }
+         }
+       fclose(f);
+     }
 }
 
 static void
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_order.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_order.h   24 Mar 2007 23:51:46 -0000      1.4
+++ e_order.h   25 Mar 2007 10:16:05 -0000      1.5
@@ -18,9 +18,15 @@
    const char         *path;
    Evas_List          *desktops; /* A list of Efreet_Desktop files this .order 
contains */
    Ecore_File_Monitor *monitor; /* Check for changes int the .order file */
+
+   struct {
+       void (*update)(void *data, E_Order *eo);
+       void *data;
+   } cb;
 };
 
 EAPI E_Order *e_order_new(const char *path);
+EAPI void     e_order_update_callback_set(E_Order *eo, void (*cb)(void *data, 
E_Order *eo), void *data);
 
 EAPI void e_order_remove(E_Order *eo, Efreet_Desktop *desktop);
 EAPI void e_order_append(E_Order *eo, Efreet_Desktop *desktop);



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to