Enlightenment CVS committal
Author : rbdpngn
Project : e17
Module : libs/ebg
Dir : e17/libs/ebg/src
Modified Files:
Ebg.h Makefile.am e_bg.c stamp-h.in
Log Message:
More merging spam.
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ebg/src/Ebg.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- Ebg.h 4 Sep 2002 18:48:42 -0000 1.12
+++ Ebg.h 14 Jan 2003 22:47:41 -0000 1.13
@@ -2,12 +2,14 @@
#define _E_BG_H_
#include <Edb.h>
-#include <Evas.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <limits.h>
+#include <X11/Xlib.h>
+#include <Imlib2.h>
+#include <Evas.h>
typedef struct _E_Background *E_Background;
typedef struct _E_Background_Layer *E_Background_Layer;
@@ -99,7 +101,7 @@
/* Gradient specific info */
struct
{
- Evas_List colors; /* list of E_Background_Gradient structs */
+ Evas_List *colors; /* list of E_Background_Gradient structs */
float angle; /* angle the gradient is set to */
}
gradient;
@@ -115,14 +117,14 @@
double x, y, w, h, fw, fh;
/* The object in the layer */
- Evas_Object obj;
+ Evas_Object *obj;
/* Used when inlined image needs saving to the db, necessary? */
Imlib_Image image;
};
struct _E_Background
{
- Evas evas; /* evas for this background */
+ Evas *evas; /* evas for this background */
char *file; /* bg.db file on disk */
int layer; /* layer in the evas */
int x, y; /* upper left corner of the bg in the evas */
@@ -134,10 +136,10 @@
}
geom;
- Evas_List layers;
+ Evas_List *layers;
/* All events pass through to base_obj for callbacks etc */
- Evas_Object base_obj;
+ Evas_Object *base_obj;
};
#ifdef __cplusplus
@@ -155,7 +157,7 @@
void e_bg_save(E_Background bg, char *file);
void e_bg_free(E_Background bg);
- void e_bg_add_to_evas(E_Background bg, Evas evas);
+ void e_bg_add_to_evas(E_Background bg, Evas * evas);
void e_bg_set_scroll(E_Background bg, int sx, int sy);
void e_bg_move(E_Background bg, int x, int y);
void e_bg_resize(E_Background bg, int w, int h);
@@ -169,14 +171,17 @@
/* layers and stacking */
void e_bg_set_layer(E_Background bg, int layer);
- void e_bg_stack_object_above(E_Background bg, Evas_Object above);
- void e_bg_stack_object_below(E_Background bg, Evas_Object below);
+ void e_bg_stack_object_above(E_Background bg, Evas_Object * above);
+ void e_bg_stack_object_below(E_Background bg, Evas_Object * below);
/* callbacks */
void e_bg_callback_add(E_Background bg, Evas_Callback_Type _cb,
- void (*func) (void *_data, Evas _e, Evas_Object _o,
- int _b, int _x, int _y), void *data);
- void e_bg_callback_del(E_Background bg, Evas_Callback_Type _cb);
+ void (*func) (void *_data, Evas * _e,
+ Evas_Object * _o, void *event_info),
+ void *data);
+ void e_bg_callback_del(E_Background bg, Evas_Callback_Type _cb,
+ void (*func) (void *_data, Evas * _e,
+ Evas_Object * _o, void *event_info));
#ifdef __cplusplus
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ebg/src/Makefile.am,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- Makefile.am 4 Sep 2002 18:48:42 -0000 1.5
+++ Makefile.am 14 Jan 2003 22:47:41 -0000 1.6
@@ -1,17 +1,15 @@
## Process this file with automake to produce Makefile.in
-INCLUDES = @edb_cflags@ @evas_cflags@
+INCLUDES = @edb_cflags@ @evas_cflags@ @imlib_cflags@
lib_LTLIBRARIES = libebg.la
-installed_headersdir = $(prefix)/include
-
-installed_headers_DATA = \
+include_HEADERS= \
Ebg.h
libebg_la_SOURCES = \
e_bg.c
-libebg_la_LIBADD = @edb_libs@ @evas_libs@ -lm
-libebg_la_LDFLAGS = -version-info 0:0:0
+libebg_la_LIBADD = @edb_libs@ @evas_libs@ @imlib_libs@ -lm
+libebg_la_LDFLAGS = -version-info 1:0:0
libebg_la_CFLAGS = -g
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ebg/src/e_bg.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -3 -r1.18 -r1.19
--- e_bg.c 4 Sep 2002 18:48:42 -0000 1.18
+++ e_bg.c 14 Jan 2003 22:47:41 -0000 1.19
@@ -1,5 +1,75 @@
#include "Ebg.h"
+/**
+ * e_bg_fill_bg_images - populate the bl->image attribute if necessary
+ * @bg - the E_Background whose images are to be filled
+ * For basic displaying of an e background the bl->image for each background
+ * layer is not necessary to be loaded. However this attribute MUST be set
+ * in order to insure consistency on saves. This is called before the file
+ * being saved is unlinked.
+ */
+static void
+e_bg_fill_bg_images(E_Background bg)
+{
+ Evas_List *l;
+ char buf[PATH_MAX];
+ Imlib_Load_Error le = IMLIB_LOAD_ERROR_NONE;
+ E_Background_Layer bl;
+
+ if (!bg)
+ return;
+ imlib_set_cache_size((1024 * 1024) * 8);
+ for (l = bg->layers; l; l = l->next)
+ {
+ bl = (E_Background_Layer) l->data;
+ if ((bl->type == E_BACKGROUND_TYPE_IMAGE) && (bl->inlined))
+ {
+ snprintf(buf, PATH_MAX, "%s:%s", bg->file, bl->file);
+ bl->image = imlib_load_image_with_error_return(buf, &le);
+ if (!le) /* what we need loaded */
+ continue;
+ else
+ {
+ bl->image = imlib_load_image_with_error_return(bl->file, &le);
+ if (le)
+ fprintf(stderr, "file loaded with error: %d\n", (int) le);
+
+ }
+ }
+ }
+}
+
+/**
+ * e_bg_free_bg_images - free all allocated imlib2 images in a bg
+ * @bg - the background containing the layer list needed to be checked
+ * Very simple list traversal cleaning up some memory. Called at the end of
+ * e_bg_save since the imlib2 images are no longer needed
+ */
+static void
+e_bg_free_bg_images(E_Background bg)
+{
+ Evas_List *l;
+ E_Background_Layer bl;
+
+ if (!bg)
+ return;
+ for (l = bg->layers; l; l = l->next)
+ {
+ bl = (E_Background_Layer) l->data;
+ if (bl->image)
+ {
+ imlib_context_set_image(bl->image);
+ imlib_free_image();
+ bl->image = NULL;
+ }
+ }
+ imlib_set_cache_size((1024 * 1024) * 0);
+}
+
+/**
+ * e_bg_gradient_new - allocate a 0'ed out E_Background_Gradient
+ * Returns a zeroed out E_Background_Gradient
+ */
static E_Background_Gradient
e_bg_gradient_new(void)
{
@@ -32,7 +102,7 @@
void
e_bg_layer_free(E_Background bg, E_Background_Layer bl)
{
- Evas_List l;
+ Evas_List *l;
if (!bg || !bl)
return;
@@ -44,18 +114,18 @@
free(bl->color_class);
bl->color_class = NULL;
if ((bg->evas) && (bl->obj))
- evas_del_object(bg->evas, bl->obj);
+ evas_object_del(bl->obj);
bl->obj = NULL;
if (bl->image)
{
imlib_context_set_image(bl->image);
imlib_free_image_and_decache();
+ bl->image = NULL;
}
for (l = bl->gradient.colors; l; l = l->next)
free((E_Background_Gradient) l->data);
if (bl->gradient.colors)
bl->gradient.colors = evas_list_free(bl->gradient.colors);
- bl->image = NULL;
free(bl);
bl = NULL;
}
@@ -70,19 +140,16 @@
e_bg_get_layer_number(E_Background bg, int num)
{
int i;
- Evas_List l;
+ Evas_List *l;
if (!bg)
return NULL;
- /* FIXME should this check for num >= 0? */
-
for (i = 0, l = bg->layers; l; l = l->next, i++)
{
if (i == num)
return l->data;
}
-
return NULL;
}
@@ -112,7 +179,7 @@
void
e_bg_free(E_Background bg)
{
- Evas_List l;
+ Evas_List *l;
if (!bg)
return;
@@ -128,7 +195,7 @@
if (bg->file)
free(bg->file);
if (bg->base_obj)
- evas_del_object(bg->evas, bg->base_obj);
+ evas_object_del(bg->base_obj);
bg->evas = NULL;
free(bg);
bg = NULL;
@@ -185,7 +252,7 @@
{
if (bl->inlined)
{
- snprintf(buf, PATH_MAX, "%s:/layers/%i/image", file, i);
+ snprintf(buf, PATH_MAX, "/layers/%i/image", i);
bl->file = strdup(buf);
}
else
@@ -221,7 +288,6 @@
snprintf(buf, PATH_MAX, "/layers/%i/gradient/%i/distance", i,
n);
e_db_int_get(db, buf, &(g->dist));
-
bl->gradient.colors = evas_list_append(bl->gradient.colors, g);
}
}
@@ -294,14 +360,17 @@
e_bg_save(E_Background bg, char *file)
{
E_DB_File *db;
- Evas_List l;
+ Evas_List *l;
+ char filename[PATH_MAX];
int i;
if (!bg || !file || !*file)
return;
- unlink(file);
- db = e_db_open(file);
+ snprintf(filename, PATH_MAX, "%s", file);
+ e_bg_fill_bg_images(bg);
+ unlink(filename);
+ db = e_db_open(filename);
if (!db)
return;
e_db_int_set(db, "/type/bg", 1);
@@ -373,19 +442,19 @@
if (bl->type == E_BACKGROUND_TYPE_IMAGE)
{
-
- if (bl->inlined)
+ if (bl->inlined && bl->image)
{
- if (!bl->image)
- bl->image = imlib_load_image(bl->file);
- if (bl->image)
- {
- snprintf(buf, PATH_MAX, "%s:/layers/%i/image", file, i);
- imlib_context_set_image(bl->image);
- imlib_image_set_format("db");
- imlib_image_attach_data_value("compression", NULL, 9, NULL);
- imlib_save_image(buf);
- }
+ Imlib_Load_Error le = IMLIB_LOAD_ERROR_NONE;
+
+ snprintf(buf, PATH_MAX, "%s:/layers/%i/image", filename, i);
+ imlib_context_set_image(bl->image);
+ imlib_image_set_format("db");
+ imlib_image_attach_data_value("compression", NULL, 9, NULL);
+ imlib_save_image_with_error_return(buf, &le);
+ if (le)
+ fprintf(stderr,
+ "%s saving failed\n%d is the imlib save error\n", buf,
+ (int) le);
}
else if (bl->file)
{
@@ -400,7 +469,7 @@
}
if (bl->type == E_BACKGROUND_TYPE_GRADIENT)
{
- Evas_List l;
+ Evas_List *l;
E_Background_Gradient g;
snprintf(buf, PATH_MAX, "/layers/%i/gradient/angle", i);
@@ -431,6 +500,7 @@
e_db_int_set(db, "/layers/count", i);
e_db_close(db);
e_db_flush();
+ e_bg_free_bg_images(bg);
}
/**
@@ -442,9 +512,9 @@
* E_Background. It does not show the bg, use e_bg_show(bg)
*/
void
-e_bg_add_to_evas(E_Background bg, Evas evas)
+e_bg_add_to_evas(E_Background bg, Evas * evas)
{
- Evas_List l;
+ Evas_List *l;
int ww, hh, count;
if (!bg || !evas)
@@ -457,10 +527,10 @@
return;
/* white base bg */
- bg->base_obj = evas_add_rectangle(bg->evas);
- evas_move(bg->evas, bg->base_obj, 0, 0);
- evas_resize(bg->evas, bg->base_obj, 999999999, 999999999);
- evas_set_color(bg->evas, bg->base_obj, 255, 255, 255, 255);
+ bg->base_obj = evas_object_rectangle_add(bg->evas);
+ evas_object_move(bg->base_obj, 0, 0);
+ evas_object_resize(bg->base_obj, 999999999, 999999999);
+ evas_object_color_set(bg->base_obj, 255, 255, 255, 255);
for (count = 0, l = bg->layers; l; l = l->next, count++)
{
@@ -471,41 +541,40 @@
switch (bl->type)
{
case E_BACKGROUND_TYPE_IMAGE:
- bl->obj = evas_add_image_from_file(bg->evas, bl->file);
+ bl->obj = evas_object_image_add(bg->evas);
+ if (bl->inlined)
+ evas_object_image_file_set(bl->obj, bg->file, bl->file);
+ else
+ evas_object_image_file_set(bl->obj, bl->file, NULL);
break;
case E_BACKGROUND_TYPE_GRADIENT:
{
- Evas_List l;
- Evas_Gradient og;
+ Evas_List *l;
E_Background_Gradient g;
- bl->obj = evas_add_gradient_box(bg->evas);
- og = evas_gradient_new();
+ bl->obj = evas_object_gradient_add(bg->evas);
for (l = bl->gradient.colors; l; l = l->next)
{
g = (E_Background_Gradient) l->data;
- evas_gradient_add_color(og, g->r, g->g, g->b, g->a, g->dist);
+ evas_object_gradient_color_add(bl->obj, g->r, g->g, g->b, g->a,
+ g->dist);
}
- evas_set_gradient(bg->evas, bl->obj, og);
- evas_set_angle(bg->evas, bl->obj, bl->gradient.angle);
- evas_gradient_free(og);
+ evas_object_gradient_angle_set(bl->obj, bl->gradient.angle);
break;
}
- case E_BACKGROUND_TYPE_SOLID:
+ default:
+ /* case E_BACKGROUND_TYPE_SOLID: */
{
- bl->obj = evas_add_rectangle(bg->evas);
- evas_set_color(bg->evas, bl->obj, bl->fg.r, bl->fg.g, bl->fg.b,
- bl->fg.a);
+ bl->obj = evas_object_rectangle_add(bg->evas);
+ evas_object_color_set(bl->obj, bl->fg.r, bl->fg.g, bl->fg.b,
+ bl->fg.a);
break;
}
- default:
- /* fixme -- handle invalid type properly */
}
-
- evas_set_pass_events(bg->evas, bl->obj, 1);
+ evas_object_pass_events_set(bl->obj, 1);
}
- evas_get_drawable_size(bg->evas, &ww, &hh);
+ evas_output_size_get(bg->evas, &ww, &hh);
bg->geom.w = bg->geom.h = 0;
e_bg_resize(bg, ww, hh);
}
@@ -520,7 +589,7 @@
void
e_bg_set_scroll(E_Background bg, int sx, int sy)
{
- Evas_List l;
+ Evas_List *l;
if (!bg)
return;
@@ -541,10 +610,10 @@
if (bl->type == E_BACKGROUND_TYPE_IMAGE)
{
- evas_set_image_fill(bg->evas, bl->obj,
- (double) bg->geom.sx * bl->scroll.x,
- (double) bg->geom.sy * bl->scroll.y, bl->fw,
- bl->fh);
+ evas_object_image_fill_set(bl->obj,
+ (double) bg->geom.sx * bl->scroll.x,
+ (double) bg->geom.sy * bl->scroll.y,
+ bl->fw, bl->fh);
}
}
}
@@ -562,18 +631,18 @@
if (bg->evas)
{
- Evas_List l;
- Evas_Object o;
+ Evas_List *l;
+ Evas_Object *o;
E_Background_Layer bl;
/* base bg color on the bottom */
- evas_set_layer(bg->evas, bg->base_obj, layer);
+ evas_object_layer_set(bg->base_obj, layer);
o = bg->base_obj;
for (l = bg->layers; l; l = l->next)
{
bl = l->data;
- evas_set_layer(bg->evas, bl->obj, layer);
- evas_stack_above(bg->evas, bl->obj, o);
+ evas_object_layer_set(bl->obj, layer);
+ evas_object_stack_above(bl->obj, o);
o = bl->obj;
}
}
@@ -588,7 +657,7 @@
void
e_bg_move(E_Background bg, int _x, int _y)
{
- Evas_List l;
+ Evas_List *l;
int i;
if (!bg)
@@ -605,7 +674,7 @@
bl = (E_Background_Layer) l->data;
- evas_get_geometry(bg->evas, bl->obj, NULL, NULL, &w, &h);
+ evas_object_geometry_get(bl->obj, NULL, NULL, &w, &h);
/* base is the bg's (x,y) */
x = bg->x;
y = bg->y;
@@ -620,7 +689,7 @@
bl->x = x;
bl->y = y;
- evas_move(bg->evas, bl->obj, bl->x, bl->y);
+ evas_object_move(bl->obj, bl->x, bl->y);
}
}
@@ -633,7 +702,7 @@
void
e_bg_resize(E_Background bg, int w, int h)
{
- Evas_List l;
+ Evas_List *l;
int i;
if (!bg)
@@ -646,6 +715,7 @@
bg->geom.w = w;
bg->geom.h = h;
+ evas_object_resize(bg->base_obj, w, h);
for (i = 0, l = bg->layers; l; l = l->next, i++)
{
E_Background_Layer bl;
@@ -665,7 +735,7 @@
/* object is an image, resize and calculate fill */
if (bl->type == E_BACKGROUND_TYPE_IMAGE)
{
- evas_get_image_size(bg->evas, bl->obj, &iw, &ih);
+ evas_object_image_size_get(bl->obj, &iw, &ih);
if (bl->size.orig.w)
w = (double) iw *bl->size.w;
@@ -703,24 +773,25 @@
bl->fw = fw;
bl->fh = fh;
- evas_move(bg->evas, bl->obj, bl->x, bl->y);
- evas_resize(bg->evas, bl->obj, bl->w, bl->h);
+ evas_object_move(bl->obj, bl->x, bl->y);
+ evas_object_resize(bl->obj, bl->w, bl->h);
switch (bl->type)
{
case E_BACKGROUND_TYPE_IMAGE:
- evas_set_image_fill(bg->evas, bl->obj,
- (double) bg->geom.sx * bl->scroll.x,
- (double) bg->geom.sy * bl->scroll.y, bl->fw,
- bl->fh);
+ evas_object_image_fill_set(bl->obj,
+ (double) bg->geom.sx * bl->scroll.x,
+ (double) bg->geom.sy * bl->scroll.y,
+ bl->fw, bl->fh);
break;
case E_BACKGROUND_TYPE_GRADIENT:
/* FIXME Necessary to call again ? */
- evas_set_angle(bg->evas, bl->obj, bl->gradient.angle);
+ evas_object_gradient_angle_set(bl->obj, bl->gradient.angle);
break;
case E_BACKGROUND_TYPE_SOLID:
break;
default:
+ break;
}
}
}
@@ -737,7 +808,7 @@
void
e_bg_set_color_class(E_Background bg, char *cc, int r, int g, int b, int a)
{
- Evas_List l;
+ Evas_List *l;
if (!bg)
return;
@@ -752,9 +823,9 @@
if (bg->evas)
{
if ((l == bg->layers) && (bg->base_obj))
- evas_set_color(bg->evas, bl->obj, r, g, b, 255);
+ evas_object_color_set(bl->obj, r, g, b, 255);
else
- evas_set_color(bg->evas, bl->obj, r, g, b, a);
+ evas_object_color_set(bl->obj, r, g, b, a);
}
}
}
@@ -768,8 +839,8 @@
*/
void
e_bg_callback_add(E_Background bg, Evas_Callback_Type cb,
- void (*func) (void *_data, Evas _e, Evas_Object _o, int _b,
- int _x, int _y), void *data)
+ void (*func) (void *_data, Evas * _e, Evas_Object * _o,
+ void *event_info), void *data)
{
if (!bg)
return;
@@ -780,7 +851,7 @@
if (!func)
return;
- evas_callback_add(bg->evas, bg->base_obj, cb, func, data);
+ evas_object_event_callback_add(bg->base_obj, cb, func, data);
}
/**
@@ -789,7 +860,9 @@
* @cb: The Evas_Callback_Type to remove
*/
void
-e_bg_callback_del(E_Background bg, Evas_Callback_Type cb)
+e_bg_callback_del(E_Background bg, Evas_Callback_Type cb,
+ void (*func) (void *_data, Evas * _e, Evas_Object * _o,
+ void *event_info))
{
if (!bg)
return;
@@ -798,7 +871,7 @@
if (!bg->base_obj)
return;
- evas_callback_del(bg->evas, bg->base_obj, cb);
+ evas_object_event_callback_del(bg->base_obj, cb, func);
}
/**
@@ -809,7 +882,7 @@
* the E_Background
*/
void
-e_bg_stack_object_above(E_Background bg, Evas_Object above)
+e_bg_stack_object_above(E_Background bg, Evas_Object * above)
{
int layer_num;
E_Background_Layer bl;
@@ -822,12 +895,12 @@
return;
if (!bg->base_obj)
return;
- layer_num = evas_get_layer(bg->evas, bg->base_obj);
- evas_set_layer(bg->evas, above, layer_num);
+ layer_num = evas_object_layer_get(bg->base_obj);
+ evas_object_layer_set(above, layer_num);
/* top most layer */
bl = (E_Background_Layer) bg->layers->last->data;
- evas_stack_above(bg->evas, above, bl->obj);
+ evas_object_stack_above(above, bl->obj);
}
@@ -839,7 +912,7 @@
* it below
*/
void
-e_bg_stack_object_below(E_Background bg, Evas_Object below)
+e_bg_stack_object_below(E_Background bg, Evas_Object * below)
{
int layer_num;
@@ -851,10 +924,10 @@
return;
if (!bg->base_obj)
return;
- layer_num = evas_get_layer(bg->evas, bg->base_obj);
- evas_set_layer(bg->evas, below, layer_num);
+ layer_num = evas_object_layer_get(bg->base_obj);
+ evas_object_layer_set(below, layer_num);
- evas_stack_below(bg->evas, below, bg->base_obj);
+ evas_object_stack_below(below, bg->base_obj);
}
/**
@@ -864,7 +937,7 @@
void
e_bg_show(E_Background bg)
{
- Evas_List l;
+ Evas_List *l;
E_Background_Layer bl;
if (!bg)
@@ -872,11 +945,11 @@
if (!bg->evas)
return;
- evas_show(bg->evas, bg->base_obj);
+ evas_object_show(bg->base_obj);
for (l = bg->layers; l; l = l->next)
{
bl = l->data;
- evas_show(bg->evas, bl->obj);
+ evas_object_show(bl->obj);
}
}
@@ -887,7 +960,7 @@
void
e_bg_hide(E_Background bg)
{
- Evas_List l;
+ Evas_List *l;
E_Background_Layer bl;
if (!bg)
@@ -895,11 +968,11 @@
if (!bg->evas)
return;
- evas_hide(bg->evas, bg->base_obj);
+ evas_object_hide(bg->base_obj);
for (l = bg->layers; l; l = l->next)
{
bl = l->data;
- evas_hide(bg->evas, bl->obj);
+ evas_object_hide(bl->obj);
}
}
@@ -921,7 +994,7 @@
}
else if (bl->type == E_BACKGROUND_TYPE_GRADIENT)
{
- Evas_List l;
+ Evas_List *l;
E_Background_Gradient g;
E_Background_Gradient new_g;
@@ -993,7 +1066,7 @@
e_bg_copy(E_Background bg)
{
E_Background new_bg;
- Evas_List l;
+ Evas_List *l;
if (!bg)
return (NULL);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ebg/src/stamp-h.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- stamp-h.in 22 Jan 2002 16:15:41 -0000 1.1
+++ stamp-h.in 14 Jan 2003 22:47:41 -0000 1.2
@@ -1 +0,0 @@
-timestamp
-------------------------------------------------------
This SF.NET email is sponsored by: Take your first step towards giving
your online business a competitive advantage. Test-drive a Thawte SSL
certificate - our easy online guide will show you how. Click here to get
started: http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0027en
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs