and now fix up the gadcon contents dialog a bit... :)

SVN revision: 22761
This commit is contained in:
Carsten Haitzler 2006-05-20 03:53:36 +00:00
parent 1a54ccf11d
commit ff7ec3ccad
1 changed files with 85 additions and 29 deletions

View File

@ -225,11 +225,13 @@ _cb_add_instance(void *data, void *data2)
E_Config_Gadcon *cf_gc;
E_Config_Gadcon_Client *cf_gcc;
Evas_List *l, *l2;
char *label;
Evas_Object *icon;
E_Gadcon_Client_Class *cc;
cfdata = data;
snprintf(buf, sizeof(buf), "default");
//FIXME: I DO NOT LIKE THIS LOOP. IT CAN NOT END. FOR EXAMPLE IBAR ON SHELF 0
for (i = 0; ; i++)
{
ok = 1;
@ -243,13 +245,13 @@ _cb_add_instance(void *data, void *data2)
if ((!strcmp(cf_gcc->name, cfdata->cname)) && (!strcmp(cf_gcc->id, buf)))
{
ok = 0;
break;
goto done;
}
}
if (!ok) break;
}
if (ok) break;
snprintf(buf, sizeof(buf), "other-%i", ok);
done:
snprintf(buf, sizeof(buf), "other-%i", i);
}
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
@ -264,8 +266,25 @@ _cb_add_instance(void *data, void *data2)
cfdata->cf_gcc = evas_list_append(cfdata->cf_gcc, cf_gcc);
e_widget_ilist_append(cfdata->o_instances, NULL, cf_gcc->name, _cb_select_client_instance,
cfdata, (char *)cf_gcc->name);
cc = NULL;
for (l = e_gadcon_provider_list(); l; l = l->next)
{
cc = l->data;
if ((cc->name) && (!strcmp(cc->name, cf_gcc->name))) break;
cc = NULL;
}
icon = NULL;
label = NULL;
if (cc)
{
if (cc->func.label) label = cc->func.label();
if (!label) label = cc->name;
if (cc->func.icon)
icon = cc->func.icon(evas_object_evas_get(cfdata->o_instances));
}
e_widget_ilist_append(cfdata->o_instances, icon, label,
_cb_select_client_instance, cfdata,
(char *)cf_gcc->name);
e_widget_ilist_go(cfdata->o_instances);
e_widget_ilist_selected_set(cfdata->o_instances,
e_widget_ilist_count(cfdata->o_instances) - 1);
@ -277,7 +296,7 @@ _cb_remove_instance(void *data, void *data2)
int i;
E_Config_Dialog_Data *cfdata;
E_Config_Gadcon_Client *cf_gcc;
Evas_List *l;
Evas_List *l, *l2;
cfdata = data;
i = e_widget_ilist_selected_get(cfdata->o_instances);
@ -295,8 +314,27 @@ _cb_remove_instance(void *data, void *data2)
e_widget_ilist_clear(cfdata->o_instances);
for (l = cfdata->cf_gcc; l; l = l->next)
{
E_Gadcon_Client_Class *cc;
char *label;
Evas_Object *icon;
cf_gcc = l->data;
e_widget_ilist_append(cfdata->o_instances, NULL, cf_gcc->name, _cb_select_client_instance,
cc = NULL;
for (l2 = e_gadcon_provider_list(); l2; l2 = l2->next)
{
cc = l2->data;
if ((cc->name) && (!strcmp(cc->name, cf_gcc->name))) break;
cc = NULL;
}
if (cc)
{
if (cc->func.label) label = cc->func.label();
if (!label) label = cc->name;
if (cc->func.icon)
icon = cc->func.icon(evas_object_evas_get(cfdata->o_instances));
}
e_widget_ilist_append(cfdata->o_instances, icon, label,
_cb_select_client_instance,
cfdata, (char *)cf_gcc->name);
}
e_widget_ilist_go(cfdata->o_instances);
@ -315,16 +353,16 @@ static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
/* generate the core widget layout for a basic dialog */
Evas_Object *o, *o2, *of, *oft, *ob, *oi;
Evas_Object *o, *o2, *of, *ob, *oi;
Evas_Coord wmw, wmh;
Evas_List *l;
Evas_List *l, *l2;
E_Config_Gadcon_Client *cf_gcc;
//int ok;
/* FIXME: this is just raw config now - it needs UI improvments */
o = e_widget_list_add(evas, 0, 1);
of = e_widget_framelist_add(evas, _("Available Items"), 0);
of = e_widget_framelist_add(evas, _("Available Gadgets"), 0);
oi = e_widget_ilist_add(evas, 24, 24, &(cfdata->cname));
@ -350,16 +388,41 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
e_widget_framelist_object_append(of, oi);
ob = e_widget_button_add(evas, _("Add Gadget"), NULL, _cb_add_instance, cfdata, NULL);
e_widget_framelist_object_append(of, ob);
// e_widget_frametable_object_append(oft, ob, 0, 1, 1, 1, 1, 1, 1, 1);
e_widget_disabled_set(ob, 1);
cfdata->o_add = ob;
e_widget_list_object_append(o, of, 1, 1, 0.5);
oft = e_widget_frametable_add(evas, _("Selected Items"), 0);
of = e_widget_framelist_add(evas, _("Selected"), 0);
oi = e_widget_ilist_add(evas, 24, 24, &(cfdata->ciname));
for (l = cfdata->cf_gcc; l; l = l->next)
{
E_Gadcon_Client_Class *cc;
char *label;
Evas_Object *icon;
cf_gcc = l->data;
e_widget_ilist_append(oi, NULL, cf_gcc->name, _cb_select_client_instance,
cc = NULL;
for (l2 = e_gadcon_provider_list(); l2; l2 = l2->next)
{
cc = l2->data;
if ((cc->name) && (!strcmp(cc->name, cf_gcc->name))) break;
cc = NULL;
}
if (cc)
{
if (cc->func.label) label = cc->func.label();
if (!label) label = cc->name;
if (cc->func.icon)
icon = cc->func.icon(evas);
}
e_widget_ilist_append(oi, icon, label,
_cb_select_client_instance,
cfdata, (char *)cf_gcc->name);
}
@ -367,24 +430,17 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
e_widget_min_size_get(oi, &wmw, &wmh);
if (wmw < 200) wmw = 200;
if (wmh < 190) wmh = 190;
e_widget_min_size_set(oi, wmw, wmh);
e_widget_min_size_set(oi, wmw, 250);
e_widget_frametable_object_append(oft, oi, 0, 0, 1, 1, 1, 1, 1, 1);
e_widget_framelist_object_append(of, oi);
cfdata->o_instances = oi;
ob = e_widget_button_add(evas, _("Add Instance"), NULL, _cb_add_instance, cfdata, NULL);
e_widget_frametable_object_append(oft, ob, 0, 1, 1, 1, 1, 1, 1, 1);
e_widget_disabled_set(ob, 1);
cfdata->o_add = ob;
ob = e_widget_button_add(evas, _("Remove Instance"), NULL, _cb_remove_instance, cfdata, NULL);
e_widget_frametable_object_append(oft, ob, 0, 2, 1, 1, 1, 1, 1, 1);
ob = e_widget_button_add(evas, _("Remove Gadget"), NULL, _cb_remove_instance, cfdata, NULL);
e_widget_framelist_object_append(of, ob);
e_widget_disabled_set(ob, 1);
cfdata->o_remove = ob;
e_widget_list_object_append(o, oft, 1, 1, 0.5);
e_widget_list_object_append(o, of, 1, 1, 0.5);
return o;
}
@ -445,13 +501,13 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
if ((!strcmp(cf_gcc2->name, cfdata->cname)) && (!strcmp(cf_gcc2->id, buf)))
{
ok = 0;
break;
goto done;
}
}
if (!ok) break;
}
if (ok) break;
snprintf(buf, sizeof(buf), "other-%i", ok);
done:
snprintf(buf, sizeof(buf), "other-%i", i);
}
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
cf_gcc->name = evas_stringshare_add(cfdata->cname);