Enlightenment CVS committal
Author : handyande
Project : e17
Module : apps/examine
Dir : e17/apps/examine/src
Modified Files:
examine.c examine_client.c examine_client.h ipc.h
Log Message:
Refactor of examine_client and examine_code to use a loaded prop list
play with examine_interface (not right yet)
add revert
add save (a tad buggy right now)
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/examine/src/examine.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- examine.c 4 Feb 2004 00:44:09 -0000 1.3
+++ examine.c 23 Feb 2004 23:37:51 -0000 1.4
@@ -17,11 +17,11 @@
int debug = 1;
void render_ewl(void);
-
+void draw_tree(void);
void print_usage(void);
Ewl_Widget *main_win;
-Ewl_Widget *main_box;
+Ewl_Widget *tree_box;
/*****************************************************************************/
@@ -63,12 +63,6 @@
ewl_callback_append(main_win, EWL_CALLBACK_DELETE_WINDOW,
__destroy_main_window, NULL);
- main_box = ewl_vbox_new();
- ewl_container_append_child(EWL_CONTAINER(main_win), main_box);
- ewl_object_set_padding(EWL_OBJECT(main_box), 2, 2, 2, 2);
- ewl_widget_show(main_box);
-
-
reconnect:
cc++;
if ((ret = examine_client_init(pipe_name, &cs)) != ECORE_CONFIG_ERR_SUCC)
@@ -101,137 +95,194 @@
}
+
+/* callbacks */
+
void
-render_ewl(void)
+cb_quit(Ewl_Widget * w, void *ev_data, void *user_data)
+{
+ examine_client_exit();
+ ewl_main_quit();
+ ewl_widget_destroy(main_win);
+ /* ewl_shutdown(); ### segs */
+}
+
+void
+cb_save(Ewl_Widget * w, void *ev_data, void *user_data)
{
- Ewl_Widget *row, *cell[2], *text[2];
- char *label, *typename, *start, *end;
- char *prop_list;
- int tmpi;
- double tmpd;
- char type[20], range[10], step[5];
- int mini, maxi;
- double mind, maxd;
+ examine_client_save_list();
+ /* sets all props where oldvalue != value */
+}
- prop_list = examine_client_list_props();
- if (prop_list && (strlen(prop_list) > 0)) {
+void
+cb_revert(Ewl_Widget * w, void *ev_data, void *user_data)
+{
+ examine_client_revert_list();
+ draw_tree();
+}
+
+void
+cb_set_str(Ewl_Widget * w, void *ev_data, void *user_data)
+{
+ examine_prop *change;
+ char *data;
+
+ change = (examine_prop *) user_data;
+ data = (char *) ev_data;
+ free(change->value.ptr);
+ change->value.ptr = strdup(data);
+}
+
+void
+cb_set_int(Ewl_Widget * w, void *ev_data, void *user_data)
+{
+ examine_prop *change;
+
+ change = (examine_prop *) user_data;
+ change->value.val = (int) ewl_spinner_get_value(EWL_SPINNER(w));
+}
+
+void
+cb_set_float(Ewl_Widget * w, void *ev_data, void *user_data)
+{
+ examine_prop *change;
+
+ change = (examine_prop *) user_data;
+ change->value.fval = (float) ewl_spinner_get_value(EWL_SPINNER(w));
+}
+
+/* UI constructor */
+
+void
+draw_tree(void)
+{
+ examine_prop *prop_item;
+ Ewl_Widget *row, *cell[2], *label, *input;
+
+ ewl_container_reset(EWL_CONTAINER(tree_box));
+ prop_item = examine_client_list_props();
+ while (prop_item) {
row = ewl_grid_new(3, 1);
cell[0] = ewl_cell_new();
cell[1] = ewl_cell_new();
- text[0] = ewl_text_new("Property");
- text[1] = ewl_text_new("Value");
+ label = ewl_text_new(prop_item->key);
+
+ if (prop_item->type == PT_STR) {
+ input = ewl_entry_new(prop_item->value.ptr);
+ ewl_callback_append(EWL_ENTRY(input)->text, EWL_CALLBACK_VALUE_CHANGED,
+ cb_set_str, prop_item);
+ } else if (prop_item->type == PT_INT) {
+ input = ewl_spinner_new();
+
+ ewl_spinner_set_digits(EWL_SPINNER(input), 0);
+ ewl_spinner_set_step(EWL_SPINNER(input), 1);
+ ewl_spinner_set_value(EWL_SPINNER(input), prop_item->value.val);
+ if (prop_item->bound & BOUND_BOUND) {
+ ewl_spinner_set_min_val(EWL_SPINNER(input), prop_item->min);
+ ewl_spinner_set_max_val(EWL_SPINNER(input), prop_item->max);
+ }
+ if (prop_item->bound & BOUND_STEPPED)
+ ewl_spinner_set_step(EWL_SPINNER(input), prop_item->step);
+ ewl_callback_append(input, EWL_CALLBACK_VALUE_CHANGED, cb_set_int,
+ prop_item);
+ } else if (prop_item->type == PT_FLT) {
+ input = ewl_spinner_new();
+
+/* ewl_spinner_set_digits(EWL_SPINNER(input), 0);
+ ewl_spinner_set_step(EWL_SPINNER(input), 1);*/
+ ewl_spinner_set_value(EWL_SPINNER(input), prop_item->value.fval);
+ if (prop_item->bound & BOUND_BOUND) {
+ ewl_spinner_set_min_val(EWL_SPINNER(input), prop_item->fmin);
+ ewl_spinner_set_max_val(EWL_SPINNER(input), prop_item->fmax);
+ }
+ if (prop_item->bound & BOUND_STEPPED)
+ ewl_spinner_set_step(EWL_SPINNER(input), prop_item->fstep);
+ ewl_callback_append(input, EWL_CALLBACK_VALUE_CHANGED, cb_set_float,
+ prop_item);
+ } else if (prop_item->type == PT_RGB) {
+ input = ewl_entry_new(prop_item->value.ptr);
+ ewl_callback_append(EWL_ENTRY(input)->text, EWL_CALLBACK_VALUE_CHANGED,
+ cb_set_str, prop_item);
+ } else
+ input = ewl_text_new("unknown");
+
- ewl_container_append_child(EWL_CONTAINER(cell[0]), text[0]);
- ewl_container_append_child(EWL_CONTAINER(cell[1]), text[1]);
+ ewl_container_append_child(EWL_CONTAINER(cell[0]), label);
+ ewl_container_append_child(EWL_CONTAINER(cell[1]), input);
ewl_grid_add(EWL_GRID(row), cell[0], 1, 1, 1, 1);
ewl_grid_add(EWL_GRID(row), cell[1], 2, 3, 1, 1);
ewl_widget_show(cell[0]);
ewl_widget_show(cell[1]);
- ewl_widget_show(text[0]);
- ewl_widget_show(text[1]);
+ ewl_widget_show(label);
+ ewl_widget_show(input);
- ewl_container_append_child(EWL_CONTAINER(main_box), row);
+ ewl_container_append_child(EWL_CONTAINER(tree_box), row);
+ ewl_object_set_minimum_h(EWL_OBJECT(row), 22);
ewl_widget_show(row);
- start = prop_list;
- end = prop_list + strlen(prop_list);
+ prop_item = prop_item->next;
+ }
- while (start < end) {
- label = start;
- while (*start) {
- if (*start == ':') {
- *start = '\0';
- break;
- }
- start++;
- }
+}
- start++;
- typename = ++start;
- while (*start) {
- if (*start == '\n') {
- *start = '\0';
- break;
- }
- start++;
- }
+void
+render_ewl(void)
+{
+ Ewl_Widget *main_box, *row, *cell[2], *text[2];
+ Ewl_Widget *save, *revert, *quit;
- if (*label && *typename) {
- row = ewl_grid_new(3, 1);
- cell[0] = ewl_cell_new();
- cell[1] = ewl_cell_new();
- text[0] = ewl_text_new(label);
-
- type[0]='\0';
- range[0]='\0';
- step[0]='\0';
- sscanf(typename, "%s%*s%s%*s%s", &type, &range, &step);
-
- if(type[strlen(type)-1]==',')
- type[strlen(type)-1]='\0';
- if(*range)
- if(range[strlen(range)-1]==',')
- range[strlen(range)-1]='\0';
-
- if (!strcmp(type, "string"))
- text[1] = ewl_entry_new(examine_client_get_val(label));
- else if (!strcmp(type, "integer")) {
- text[1] = ewl_spinner_new();
- ewl_spinner_set_digits(EWL_SPINNER(text[1]), 0);
- ewl_spinner_set_step(EWL_SPINNER(text[1]), 1);
- sscanf(examine_client_get_val(label), "%d", &tmpi);
- ewl_spinner_set_value(EWL_SPINNER(text[1]), tmpi);
- if (*range) {
- sscanf(range, "%d..%d", &mini, &maxi);
- ewl_spinner_set_min_val(EWL_SPINNER(text[1]), mini);
- ewl_spinner_set_max_val(EWL_SPINNER(text[1]), maxi);
- }
- if (*step) {
- sscanf(step, "%d", &tmpi);
- ewl_spinner_set_step(EWL_SPINNER(text[1]), tmpi);
- }
- } else if (!strcmp(type, "float")) {
- text[1] = ewl_spinner_new();
-// ewl_spinner_set_digits(EWL_SPINNER(text[1]), 0);
-// ewl_spinner_set_step(EWL_SPINNER(text[1]), 1);
- sscanf(examine_client_get_val(label), "%lf", &tmpd);
- ewl_spinner_set_value(EWL_SPINNER(text[1]), tmpd);
- if (*range) {
- sscanf(range, "%lf..%lf", &mind, &maxd);
- ewl_spinner_set_min_val(EWL_SPINNER(text[1]), mind);
- ewl_spinner_set_max_val(EWL_SPINNER(text[1]), maxd);
- }
- if (*step) {
- sscanf(step, "%lf", &tmpd);
- ewl_spinner_set_step(EWL_SPINNER(text[1]), tmpd);
- }
- } else if (!strcmp(type, "colour"))
- text[1] = ewl_entry_new(examine_client_get_val(label));
- else
- text[1] = ewl_text_new(typename);
-
-
- ewl_container_append_child(EWL_CONTAINER(cell[0]), text[0]);
- ewl_container_append_child(EWL_CONTAINER(cell[1]), text[1]);
- ewl_grid_add(EWL_GRID(row), cell[0], 1, 1, 1, 1);
- ewl_grid_add(EWL_GRID(row), cell[1], 2, 3, 1, 1);
-
- ewl_widget_show(cell[0]);
- ewl_widget_show(cell[1]);
- ewl_widget_show(text[0]);
- ewl_widget_show(text[1]);
-
- ewl_container_append_child(EWL_CONTAINER(main_box), row);
- ewl_object_set_minimum_h(EWL_OBJECT(row), 22);
- ewl_widget_show(row);
- }
+ main_box = ewl_vbox_new();
+ ewl_container_append_child(EWL_CONTAINER(main_win), main_box);
+ ewl_object_set_padding(EWL_OBJECT(main_box), 2, 2, 2, 2);
+ ewl_widget_show(main_box);
- start++;
- }
- }
- free(prop_list);
+
+ row = ewl_grid_new(3, 1);
+ cell[0] = ewl_cell_new();
+ cell[1] = ewl_cell_new();
+ text[0] = ewl_text_new("Property");
+ text[1] = ewl_text_new("Value");
+
+ ewl_container_append_child(EWL_CONTAINER(cell[0]), text[0]);
+ ewl_container_append_child(EWL_CONTAINER(cell[1]), text[1]);
+ ewl_grid_add(EWL_GRID(row), cell[0], 1, 1, 1, 1);
+ ewl_grid_add(EWL_GRID(row), cell[1], 2, 3, 1, 1);
+
+ ewl_widget_show(cell[0]);
+ ewl_widget_show(cell[1]);
+ ewl_widget_show(text[0]);
+ ewl_widget_show(text[1]);
+
+ ewl_container_append_child(EWL_CONTAINER(main_box), row);
+ ewl_widget_show(row);
+
+ tree_box = ewl_vbox_new();
+ ewl_container_append_child(EWL_CONTAINER(main_box), tree_box);
+ ewl_object_set_padding(EWL_OBJECT(tree_box), 2, 2, 2, 2);
+ ewl_widget_show(tree_box);
+
+ draw_tree();
+
+ row = ewl_hbox_new();
+ ewl_container_append_child(EWL_CONTAINER(main_box), row);
+ ewl_object_set_fill_policy((Ewl_Object *) row, EWL_FLAG_FILL_HFILL);
+ ewl_widget_show(row);
+
+ save = ewl_button_new("Save");
+ ewl_callback_append(save, EWL_CALLBACK_MOUSE_DOWN, cb_save, NULL);
+ revert = ewl_button_new("Revert");
+ ewl_callback_append(revert, EWL_CALLBACK_MOUSE_DOWN, cb_revert, NULL);
+ quit = ewl_button_new("Close");
+ ewl_callback_append(quit, EWL_CALLBACK_MOUSE_DOWN, cb_quit, NULL);
+
+ ewl_container_append_child(EWL_CONTAINER(row), save);
+ ewl_container_append_child(EWL_CONTAINER(row), revert);
+ ewl_container_append_child(EWL_CONTAINER(row), quit);
+ ewl_widget_show(save);
+ ewl_widget_show(revert);
+ ewl_widget_show(quit);
}
/*****************************************************************************/
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/examine/src/examine_client.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- examine_client.c 13 Jan 2004 19:51:50 -0000 1.1
+++ examine_client.c 23 Feb 2004 23:37:51 -0000 1.2
@@ -16,6 +16,7 @@
char *examine_client_buf;
ex_ipc_server_list *examine_client_server;
+examine_prop *prop_list;
/*****************************************************************************/
@@ -51,7 +52,8 @@
Ecore_Ipc_Event_Server_Data *e;
e = (Ecore_Ipc_Event_Server_Data *) event;
- examine_client_buf = strdup(e->data);
+ if (e->data && *((char *) e->data))
+ examine_client_buf = strdup(e->data);
E(2, "application sent: %2d.%02d #%03d=>#%03d \"%s\".%d\n",
e->major, e->minor, 0, 0, (char *) e->data, e->size);
@@ -122,7 +124,7 @@
/*****************************************************************************/
int
-examine_client_send(call * c, char *key)
+examine_client_send(call * c, char *key, char *val)
{
char *m;
int l, ret;
@@ -133,19 +135,194 @@
serial = 0;
if (key)
send_append(&m, &l, key);
+ if (val)
+ send_append(&m, &l, val);
ret = ex_ipc_send(&examine_client_server, c->id, serial, m, l);
if (m)
free(m);
}
-char *
+examine_prop *
examine_client_list_props(void)
{
call *c;
+ examine_prop *prop_tmp;
+ char *label, *typename, *start, *end;
+ int tmpi;
+ float tmpd;
+ char type[20], range[10], step[5];
+ int mini, maxi;
+ float mind, maxd;
+
+
+ if (prop_list)
+ return prop_list;
c = find_call("prop-list");
- examine_client_send(c, NULL);
- return examine_client_buf;
+ examine_client_send(c, NULL, NULL);
+
+ if (examine_client_buf && (strlen(examine_client_buf) > 0)) {
+
+ start = examine_client_buf;
+ end = examine_client_buf + strlen(examine_client_buf);
+
+ while (start < end) {
+ label = start;
+ while (*start) {
+ if (*start == ':') {
+ *start = '\0';
+ break;
+ }
+ start++;
+ }
+
+ start++;
+ typename = ++start;
+ while (*start) {
+ if (*start == '\n') {
+ *start = '\0';
+ break;
+ }
+ start++;
+ }
+
+ if (*label && *typename) {
+ prop_tmp = malloc(sizeof(examine_prop));
+ prop_tmp->key = strdup(label);
+ prop_tmp->bound = BOUND_NONE;
+
+ type[0] = '\0';
+ range[0] = '\0';
+ step[0] = '\0';
+ sscanf(typename, "%s%*s%s%*s%s", &type, &range, &step);
+
+ if (type[strlen(type) - 1] == ',')
+ type[strlen(type) - 1] = '\0';
+ if (*range)
+ if (range[strlen(range) - 1] == ',')
+ range[strlen(range) - 1] = '\0';
+
+ if (!strcmp(type, "string")) {
+ prop_tmp->type = PT_STR;
+ prop_tmp->value.ptr = strdup(examine_client_get_val(label));
+ prop_tmp->oldvalue.ptr = strdup(examine_client_get_val(label));
+ } else if (!strcmp(type, "integer")) {
+ prop_tmp->type = PT_INT;
+
+ sscanf(examine_client_get_val(label), "%d", &tmpi);
+ prop_tmp->value.val = tmpi;
+ prop_tmp->oldvalue.val = tmpi;
+ if (*range) {
+ prop_tmp->bound |= BOUND_BOUND;
+ sscanf(range, "%d..%d", &mini, &maxi);
+ prop_tmp->min = mini;
+ prop_tmp->max = maxi;
+ }
+ if (*step) {
+ prop_tmp->bound |= BOUND_STEPPED;
+ sscanf(step, "%d", &tmpi);
+ prop_tmp->step = tmpi;
+ }
+ } else if (!strcmp(type, "float")) {
+ prop_tmp->type = PT_FLT;
+
+ sscanf(examine_client_get_val(label), "%lf", &tmpd);
+ prop_tmp->value.fval = tmpd;
+ prop_tmp->oldvalue.fval = tmpd;
+ if (*range) {
+ prop_tmp->bound |= BOUND_BOUND;
+ sscanf(range, "%lf..%lf", &mind, &maxd);
+ prop_tmp->fmin = mind;
+ prop_tmp->fmax = maxd;
+ }
+ if (*step) {
+ prop_tmp->bound |= BOUND_STEPPED;
+ sscanf(step, "%lf", &tmpd);
+ prop_tmp->fstep = tmpd;
+ }
+ } else if (!strcmp(type, "colour")) {
+ prop_tmp->type = PT_RGB;
+ prop_tmp->value.ptr = strdup(label);
+ prop_tmp->oldvalue.ptr = strdup(label);
+ } else
+ prop_tmp->value.ptr = NULL;
+
+ prop_tmp->next = prop_list;
+ prop_list = prop_tmp;
+ }
+
+ start++;
+ }
+ }
+ free(examine_client_buf);
+
+ return prop_list;
+}
+
+void
+examine_client_revert_list(void)
+{
+ examine_prop *prop_item;
+
+ prop_item = prop_list;
+ while (prop_item) {
+ examine_client_revert(prop_item);
+ prop_item = prop_item->next;
+ }
+}
+
+void
+examine_client_revert(examine_prop * target)
+{
+ switch (target->type) {
+ case PT_INT:
+ target->value.val = target->oldvalue.val;
+ break;
+ case PT_FLT:
+ target->value.fval = target->oldvalue.fval;
+ break;
+ default: /* PT_STR, PT_RGB */
+ free(target->value.ptr);
+ target->value.ptr = strdup(target->oldvalue.ptr);
+ }
+}
+
+void
+examine_client_save_list(void)
+{
+ examine_prop *prop_item;
+
+ prop_item = prop_list;
+ while (prop_item) {
+ examine_client_save(prop_item);
+ prop_item = prop_item->next;
+ }
+}
+
+void
+examine_client_save(examine_prop * target)
+{
+ switch (target->type) {
+ case PT_INT:
+ if (target->value.val != target->oldvalue.val) {
+ target->oldvalue.val = target->value.val;
+ examine_client_set_val(target);
+ }
+ break;
+ case PT_FLT:
+ if (target->value.fval != target->oldvalue.fval) {
+ target->oldvalue.fval = target->value.fval;
+ examine_client_set_val(target);
+ }
+ break;
+ default: /* PT_STR, PT_RGB */
+ if (strcmp(target->value.ptr, target->oldvalue.ptr) != 0) {
+ free(target->oldvalue.ptr);
+ target->oldvalue.ptr = strdup(target->value.ptr);
+ examine_client_set_val(target);
+ }
+ }
+
}
char *
@@ -155,7 +332,7 @@
call *c;
c = find_call("prop-get");
- examine_client_send(c, key);
+ examine_client_send(c, key, NULL);
ret = strstr(examine_client_buf, "=") + 1;
if (*ret == '"') {
ret++;
@@ -167,6 +344,30 @@
return ret;
}
+void
+examine_client_set_val(examine_prop * target)
+{
+ char *valstr;
+ call *c;
+
+ c = find_call("prop-set");
+
+ switch (target->type) {
+ case PT_INT:
+ valstr = malloc(1000); /* ### FIXME */
+ sprintf(valstr, "%d", target->value.val);
+ break;
+ case PT_FLT:
+ valstr = malloc(1000); /* ### FIXME */
+ sprintf(valstr, "%f", target->value.fval);
+ break;
+ default: /* PT_STR, PT_RGB */
+ valstr = target->value.ptr;
+ }
+
+ examine_client_send(c, target->key, valstr);
+}
+
int
examine_client_init(char *pipe_name, connstate * cs)
{
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/examine/src/examine_client.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- examine_client.h 13 Jan 2004 19:51:50 -0000 1.1
+++ examine_client.h 23 Feb 2004 23:37:51 -0000 1.2
@@ -20,7 +20,31 @@
para signature;
} call;
-
+typedef enum bound_flags {
+ BOUND_NONE = 0,
+ BOUND_BOUND = 1,
+ BOUND_STEPPED = 2
+} bound_flags;
+
+
+typedef struct examine_prop {
+ char *key;
+ int type;
+ bound_flags bound;
+ int min, max, step;
+ float fmin, fmax, fstep;
+ union {
+ char *ptr;
+ long val;
+ float fval;
+ } value;
+ union {
+ char *ptr;
+ long val;
+ float fval;
+ } oldvalue;
+ struct examine_prop *next;
+} examine_prop;
static call calls[] = {
{IPC_NONE, "bundle", P_HELPONLY},
@@ -50,8 +74,13 @@
-int examine_client_send(call * c, char *key);
-char *examine_client_list_props(void);
+int examine_client_send(call * c, char *key, char *val);
+examine_prop *examine_client_list_props(void);
+void examine_client_revert_list(void);
+void examine_client_revert(examine_prop * target);
+void examine_client_save_list(void);
+void examine_client_save(examine_prop * target);
char *examine_client_get_val(char *key);
+void examine_client_set_val(examine_prop * target);
int examine_client_init(char *pipe_name, connstate * cs);
int examine_client_exit(void);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/examine/src/ipc.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- ipc.h 5 Jan 2004 20:45:10 -0000 1.1
+++ ipc.h 23 Feb 2004 23:37:51 -0000 1.2
@@ -19,14 +19,17 @@
Ecore_Config_Server *srv2ecore_config_srv(void *srv);
-char *ipc_prop_list(Ecore_Config_Server *srv, const long serial);
-char *ipc_prop_desc(Ecore_Config_Server *srv, const long serial,const char *key);
-char *ipc_prop_get(Ecore_Config_Server *srv, const long serial,const char *key);
-int ipc_prop_set(Ecore_Config_Server *srv, const long serial,const char *key,const
char *val);
-
-char *ipc_bundle_list(Ecore_Config_Server *srv);
-int ipc_bundle_new(Ecore_Config_Server *srv, const char *);
-char *ipc_bundle_label_get(Ecore_Config_Server *srv, const long);
-int ipc_bundle_label_set(Ecore_Config_Server *srv, const long,const char *);
-long ipc_bundle_label_find(Ecore_Config_Server *srv, const char *);
+char *ipc_prop_list(Ecore_Config_Server * srv, const long serial);
+char *ipc_prop_desc(Ecore_Config_Server * srv, const long serial,
+ const char *key);
+char *ipc_prop_get(Ecore_Config_Server * srv, const long serial,
+ const char *key);
+int ipc_prop_set(Ecore_Config_Server * srv, const long serial,
+ const char *key, const char *val);
+char *ipc_bundle_list(Ecore_Config_Server * srv);
+int ipc_bundle_new(Ecore_Config_Server * srv, const char *);
+char *ipc_bundle_label_get(Ecore_Config_Server * srv, const long);
+int ipc_bundle_label_set(Ecore_Config_Server * srv, const long,
+ const char *);
+long ipc_bundle_label_find(Ecore_Config_Server * srv, const char *);
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs