Work on .order parsing.

SVN revision: 29053
This commit is contained in:
Sebastian Dransfeld 2007-03-24 22:02:33 +00:00
parent 173ffd1d54
commit c9a8d12b08
2 changed files with 68 additions and 1 deletions

View File

@ -2,3 +2,68 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#include "e.h"
/*
* TODO:
* - Update E_Order object if a .desktop file becomes available
*/
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);
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) evas_list_append(eo->desktops, desktop);
}
}
}
fclose(f);
}
eo->monitor = ecore_file_monitor_add(path, _e_order_cb_monitor, eo);
return eo;
}
static void
_e_order_free(E_Order *eo)
{
evas_list_free(eo->desktops);
if (eo->monitor) ecore_file_monitor_del(eo->monitor);
free(eo);
}
static void
_e_order_cb_monitor(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const char *path)
{
/* TODO */
}

View File

@ -15,9 +15,11 @@ struct _E_Order
{
E_Object e_obj_inherit;
Evas_List *subapps; /* A list of Efreet_Desktop files this .order contains */
Evas_List *desktops; /* A list of Efreet_Desktop files this .order contains */
Ecore_File_Monitor *monitor; /* Check for changes int the .order file */
};
EAPI E_Order *e_order_new(const char *path);
#endif
#endif