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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs