Enlightenment CVS committal
Author : raster
Project : e17
Module : apps/e
Dir : e17/apps/e/src/bin
Modified Files:
e_gadcon.c e_gadcon.h e_int_config_modules.c
e_int_gadcon_config.c e_int_shelf_config.c e_widget_radio.c
Log Message:
gadcons now can have their contents enabled/disabled depending on what is
providing it.
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- e_gadcon.c 5 May 2006 23:31:12 -0000 1.23
+++ e_gadcon.c 7 May 2006 09:49:37 -0000 1.24
@@ -49,6 +49,7 @@
static void e_gadcon_layout_unpack(Evas_Object *obj);
static Evas_Hash *providers = NULL;
+static Evas_List *providers_list = NULL;
static Evas_List *gadcons = NULL;
/* externally accessible functions */
@@ -71,6 +72,7 @@
E_Gadcon *gc;
providers = evas_hash_direct_add(providers, cc->name, cc);
+ providers_list = evas_list_append(providers_list, cc);
for (l = gadcons; l; l = l->next)
{
gc = l->data;
@@ -102,6 +104,13 @@
e_object_del(E_OBJECT(gcc));
}
providers = evas_hash_del(providers, cc->name, cc);
+ providers_list = evas_list_remove(providers_list, cc);
+}
+
+EAPI Evas_List *
+e_gadcon_provider_list(void)
+{
+ return providers_list;
}
EAPI E_Gadcon *
@@ -213,6 +222,7 @@
E_Gadcon_Client_Class *cc;
cf_gcc = l->data;
+ if (!cf_gcc->name) continue;
cc = evas_hash_find(providers, cf_gcc->name);
if (cc)
{
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- e_gadcon.h 5 May 2006 23:31:12 -0000 1.17
+++ e_gadcon.h 7 May 2006 09:49:37 -0000 1.18
@@ -124,6 +124,7 @@
EAPI int e_gadcon_shutdown(void);
EAPI void e_gadcon_provider_register(E_Gadcon_Client_Class *cc);
EAPI void e_gadcon_provider_unregister(E_Gadcon_Client_Class *cc);
+EAPI Evas_List *e_gadcon_provider_list(void);
EAPI E_Gadcon *e_gadcon_swallowed_new(const char *name, char *id,
Evas_Object *obj, char *swallow_name);
EAPI void e_gadcon_swallowed_min_size_set(E_Gadcon *gc, Evas_Coord
w, Evas_Coord h);
EAPI void e_gadcon_min_size_request_callback_set(E_Gadcon *gc,
void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void
*data);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_modules.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- e_int_config_modules.c 4 Mar 2006 07:58:17 -0000 1.27
+++ e_int_config_modules.c 7 May 2006 09:49:37 -0000 1.28
@@ -250,8 +250,8 @@
Evas_Object *o, *of, *ob, *ot, *ilist, *mt;
E_Radio_Group *rg;
E_Module *m;
+ Evas_List *l;
char buf[4096];
- int i;
o = e_widget_list_add(evas, 1, 0);
ot = e_widget_table_add(evas, 1);
@@ -262,12 +262,12 @@
e_widget_on_change_hook_set(ilist, _ilist_cb_change, cfdata);
cfdata->state = -1;
- for (i = 0; i < evas_list_count(cfdata->modules); i++)
+ for (l = cfdata->modules; l; l = l->next)
{
CFModule *cm;
Evas_Object *oc;
- cm = evas_list_nth(cfdata->modules, i);
+ cm = l->data;
if (cm)
{
cm->state = MOD_UNLOADED;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_gadcon_config.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_int_gadcon_config.c 5 May 2006 23:31:12 -0000 1.2
+++ e_int_gadcon_config.c 7 May 2006 09:49:37 -0000 1.3
@@ -13,6 +13,9 @@
struct _E_Config_Dialog_Data
{
E_Gadcon *gc;
+ char *cname;
+ int enabled;
+ Evas_Object *o_enabled, *o_disabled;
};
/* a nice easy setup function that does the dirty work */
@@ -43,27 +46,7 @@
static void
_fill_data(E_Config_Dialog_Data *cfdata)
{
-/*
- if (cfdata->escfg->style)
- cfdata->style = strdup(cfdata->escfg->style);
- else
- cfdata->style = strdup("");
- cfdata->orient = cfdata->escfg->orient;
- cfdata->fit_along = cfdata->escfg->fit_along;
- cfdata->fit_size = cfdata->escfg->fit_size;
- cfdata->size = cfdata->escfg->size;
- if ((!cfdata->escfg->popup) &&
- (cfdata->escfg->layer == 1))
- cfdata->layering = 0;
- else if ((cfdata->escfg->popup) &&
- (cfdata->escfg->layer == 0))
- cfdata->layering = 1;
- else if ((cfdata->escfg->popup) &&
- (cfdata->escfg->layer == 200))
- cfdata->layering = 2;
- else
- cfdata->layering = 2;
- */
+ cfdata->cname = NULL;
}
static void *
@@ -86,7 +69,7 @@
{
/* Free the cfdata */
cfdata->gc->config_dialog = NULL;
-// if (cfdata->style) free(cfdata->style);
+ if (cfdata->cname) free(cfdata->cname);
free(cfdata);
}
@@ -94,53 +77,95 @@
static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
-/*
- E_Zone *zone;
- int id;
-
- cfdata->escfg->orient = cfdata->orient;
- cfdata->escfg->fit_along = cfdata->fit_along;
- cfdata->escfg->fit_size = cfdata->fit_size;
- cfdata->escfg->size = cfdata->size;
-
- if (cfdata->escfg->style) evas_stringshare_del(cfdata->escfg->style);
- cfdata->escfg->style = evas_stringshare_add(cfdata->style);
- if (cfdata->layering == 0)
- {
- cfdata->escfg->popup = 0;
- cfdata->escfg->layer = 1;
- }
- else if (cfdata->layering == 1)
- {
- cfdata->escfg->popup = 1;
- cfdata->escfg->layer = 0;
- }
- else if (cfdata->layering == 2)
- {
- cfdata->escfg->popup = 1;
- cfdata->escfg->layer = 200;
- }
- zone = cfdata->es->zone;
- id = cfdata->es->id;
- cfdata->es->config_dialog = NULL;
- e_object_del(E_OBJECT(cfdata->es));
- cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name,
- cfdata->escfg->style,
- cfdata->escfg->popup,
- cfdata->escfg->layer, id);
- cfdata->es->cfg = cfdata->escfg;
- cfdata->es->fit_along = cfdata->escfg->fit_along;
- cfdata->es->fit_size = cfdata->escfg->fit_size;
- e_shelf_orient(cfdata->es, cfdata->escfg->orient);
- e_shelf_position_calc(cfdata->es);
- e_shelf_populate(cfdata->es);
- e_shelf_show(cfdata->es);
- e_config_save_queue();
- */
+ Evas_List *l;
+ E_Config_Gadcon *cf_gc;
+ E_Config_Gadcon_Client *cf_gcc;
+ int ok = 0;
+
cfdata->gc->config_dialog = cfd;
+ for (l = e_config->gadcons; l; l = l->next)
+ {
+ cf_gc = l->data;
+ if ((!strcmp(cf_gc->name, cfdata->gc->name)) &&
+ (!strcmp(cf_gc->id, cfdata->gc->id)))
+ {
+ ok = 1;
+ break;
+ }
+ }
+ if (!ok) return;
+ for (l = cf_gc->clients; l; l = l->next)
+ {
+ cf_gcc = l->data;
+ if (!cf_gcc->name) continue;
+ if (!strcmp(cf_gcc->name, cfdata->cname))
+ {
+ if (!cfdata->enabled)
+ {
+ /* remove from list */
+ cf_gc->clients = evas_list_remove_list(cf_gc->clients, l);
+ if (cf_gcc->name) evas_stringshare_del(cf_gcc->name);
+ if (cf_gcc->id) evas_stringshare_del(cf_gcc->id);
+ if (cf_gcc->style) evas_stringshare_del(cf_gcc->style);
+ free(cf_gcc);
+ goto savedone;
+ }
+ return 1; /* Apply was OK */
+ }
+ }
+ cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
+ cf_gcc->name = evas_stringshare_add(cfdata->cname);
+ cf_gcc->id = evas_stringshare_add("default");
+ cf_gcc->geom.res = 800;
+ cf_gcc->geom.size = 80;
+ cf_gcc->geom.pos = cf_gcc->geom.res - cf_gcc->geom.size;
+ cf_gcc->autoscroll = 0;
+ cf_gcc->resizable = 0;
+ cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
+ savedone:
+ e_gadcon_unpopulate(cfdata->gc);
+ e_gadcon_populate(cfdata->gc);
+ e_config_save_queue();
return 1; /* Apply was OK */
}
+static void
+_cb_select(void *data)
+{
+ E_Config_Dialog_Data *cfdata;
+ Evas_List *l;
+ E_Config_Gadcon *cf_gc;
+ E_Config_Gadcon_Client *cf_gcc;
+ int ok = 0, enabled = 0;
+
+ cfdata = data;
+ for (l = e_config->gadcons; l; l = l->next)
+ {
+ cf_gc = l->data;
+ if ((!strcmp(cf_gc->name, cfdata->gc->name)) &&
+ (!strcmp(cf_gc->id, cfdata->gc->id)))
+ {
+ ok = 1;
+ break;
+ }
+ }
+ if (!ok) return;
+ for (l = cf_gc->clients; l; l = l->next)
+ {
+ cf_gcc = l->data;
+ if (!cf_gcc->name) continue;
+ if (!strcmp(cf_gcc->name, cfdata->cname))
+ {
+ enabled = 1;
+ break;
+ }
+ }
+ e_widget_disabled_set(cfdata->o_enabled, 0);
+ e_widget_disabled_set(cfdata->o_disabled, 0);
+ e_widget_radio_toggle_set(cfdata->o_enabled, enabled);
+ e_widget_radio_toggle_set(cfdata->o_disabled, 1 - enabled);
+}
+
/**--GUI--**/
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
*cfdata)
@@ -155,84 +180,42 @@
/* FIXME: this is just raw config now - it needs UI improvments */
o = e_widget_list_add(evas, 0, 1);
-/*
- o2 = e_widget_list_add(evas, 0, 0);
-
- of = e_widget_framelist_add(evas, _("Stacking"), 0);
- rg = e_widget_radio_group_new(&(cfdata->layering));
- ob = e_widget_radio_add(evas, _("Above Everything"), 2, rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Below Windows"), 1, rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Below Everything"), 0, rg);
- e_widget_framelist_object_append(of, ob);
- e_widget_list_object_append(o2, of, 1, 1, 0.5);
-
- of = e_widget_framelist_add(evas, _("Size"), 0);
- ob = e_widget_check_add(evas, _("Shrink length fit contents"),
&(cfdata->fit_along));
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_label_add(evas, _("Shelf Size"));
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_slider_add(evas, 1, 0, _("%3.0f pixels"), 4, 120, 4, 0, NULL,
&(cfdata->size), 200);
- e_widget_framelist_object_append(of, ob);
- e_widget_list_object_append(o2, of, 1, 1, 0.5);
-
- of = e_widget_framelist_add(evas, _("Layout"), 0);
- rg = e_widget_radio_group_new(&(cfdata->orient));
- ob = e_widget_radio_add(evas, _("Left"), E_GADCON_ORIENT_LEFT, rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Right"), E_GADCON_ORIENT_RIGHT, rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Top"), E_GADCON_ORIENT_TOP, rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Bottom"), E_GADCON_ORIENT_BOTTOM, rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Top Left"), E_GADCON_ORIENT_CORNER_TL, rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Top Right"), E_GADCON_ORIENT_CORNER_TR,
rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Bottom Left"), E_GADCON_ORIENT_CORNER_BL,
rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Bottom Right"), E_GADCON_ORIENT_CORNER_BR,
rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Left Top"), E_GADCON_ORIENT_CORNER_LT, rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Right Top"), E_GADCON_ORIENT_CORNER_RT,
rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Left Bottom"), E_GADCON_ORIENT_CORNER_LB,
rg);
- e_widget_framelist_object_append(of, ob);
- ob = e_widget_radio_add(evas, _("Right Bottom"), E_GADCON_ORIENT_CORNER_RB,
rg);
- e_widget_framelist_object_append(of, ob);
- e_widget_list_object_append(o2, of, 1, 1, 0.5);
+ of = e_widget_framelist_add(evas, _("Available Items"), 0);
- e_widget_list_object_append(o, o2, 1, 1, 0.5);
-
- oi = e_widget_ilist_add(evas, 128, 20, &(cfdata->style));
-
- sel = 0;
- styles = e_theme_shelf_list();
+ oi = e_widget_ilist_add(evas, 24, 24, &(cfdata->cname));
- for (n = 0, l = styles; l; l = l->next, n++)
+ for (l = e_gadcon_provider_list(); l; l = l->next)
{
- char buf[4096];
+ E_Gadcon_Client_Class *cc;
- ob = e_livethumb_add(evas);
- e_livethumb_vsize_set(ob, 256, 40);
- oj = edje_object_add(e_livethumb_evas_get(ob));
- snprintf(buf, sizeof(buf), "shelf/%s/base", (char *)l->data);
- e_theme_edje_object_set(oj, "base/theme/shelf", buf);
- e_livethumb_thumb_set(ob, oj);
- e_widget_ilist_append(oi, ob, (char *)l->data, NULL, NULL, l->data);
- if (!strcmp(cfdata->es->style, (char *)l->data))
- sel = n;
+ cc = l->data;
+ /* FIXME: need icon */
+ e_widget_ilist_append(oi, NULL, cc->name, _cb_select, cfdata, cc->name);
}
+
+ e_widget_ilist_go(oi);
+
e_widget_min_size_get(oi, &wmw, &wmh);
+ if (wmw < 200) wmw = 200;
e_widget_min_size_set(oi, wmw, 250);
- e_widget_ilist_go(oi);
- e_widget_ilist_selected_set(oi, sel);
+ e_widget_framelist_object_append(of, oi);
+
+ e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+ of = e_widget_framelist_add(evas, _("Status"), 0);
+
+ rg = e_widget_radio_group_new(&(cfdata->enabled));
+ ob = e_widget_radio_add(evas, _("Enabled"), 1, rg);
+ e_widget_disabled_set(ob, 1);
+ e_widget_framelist_object_append(of, ob);
+ cfdata->o_enabled = ob;
+ ob = e_widget_radio_add(evas, _("Disabled"), 0, rg);
+ e_widget_disabled_set(ob, 1);
+ e_widget_framelist_object_append(of, ob);
+ cfdata->o_disabled = ob;
+
+ e_widget_list_object_append(o, of, 0, 0, 0.0);
- e_widget_list_object_append(o, oi, 1, 1, 0.5);
-*/
return o;
}
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_shelf_config.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_int_shelf_config.c 5 May 2006 12:20:14 -0000 1.6
+++ e_int_shelf_config.c 7 May 2006 09:49:37 -0000 1.7
@@ -145,6 +145,14 @@
return 1; /* Apply was OK */
}
+static void
+_cb_configure(void *data, void *data2)
+{
+ E_Config_Dialog_Data *cfdata;
+
+ e_int_gadcon_config(cfdata->es->gadcon);
+}
+
/**--GUI--**/
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
*cfdata)
@@ -212,6 +220,10 @@
e_widget_list_object_append(o, o2, 1, 1, 0.5);
+ o2 = e_widget_list_add(evas, 0, 0);
+
+ of = e_widget_framelist_add(evas, _("Styles"), 0);
+
oi = e_widget_ilist_add(evas, 128, 20, &(cfdata->style));
sel = 0;
@@ -237,7 +249,14 @@
e_widget_ilist_go(oi);
e_widget_ilist_selected_set(oi, sel);
- e_widget_list_object_append(o, oi, 1, 1, 0.5);
+ e_widget_framelist_object_append(of, oi);
+
+ e_widget_list_object_append(o2, of, 0, 0, 0.5);
+
+ ob = e_widget_button_add(evas, _("Configure Contents..."), "widget/config",
_cb_configure, cfdata, NULL);
+ e_widget_list_object_append(o2, ob, 0, 0, 0.5);
+
+ e_widget_list_object_append(o, o2, 0, 0, 0.0);
return o;
}
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_radio.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- e_widget_radio.c 6 May 2006 09:35:05 -0000 1.10
+++ e_widget_radio.c 7 May 2006 09:49:37 -0000 1.11
@@ -88,7 +88,29 @@
if (!wd) return;
if (toggle)
- edje_object_signal_emit(wd->o_radio, "toggle_on", "");
+ {
+ Evas_List *l;
+ int toggled = 0;
+
+ for (l = wd->group->radios; l; l = l->next)
+ {
+ wd = e_widget_data_get(l->data);
+ if (l->data != obj)
+ {
+ wd = e_widget_data_get(l->data);
+ if (wd->valnum == *(wd->group->valptr))
+ {
+ edje_object_signal_emit(wd->o_radio, "toggle_off", "");
+ toggled = 1;
+ break;
+ }
+ }
+ }
+ if (!toggled) return;
+ wd = e_widget_data_get(obj);
+ *(wd->group->valptr) = wd->valnum;
+ edje_object_signal_emit(wd->o_radio, "toggle_on", "");
+ }
else
edje_object_signal_emit(wd->o_radio, "toggle_off", "");
}
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs