Code cleanups for font config dialog

* Move sndev's code into ilist so it can be reused


SVN revision: 22075
This commit is contained in:
Stafford Mitchell Horne 2006-04-13 00:01:15 +00:00
parent 92da7990c5
commit 27fcbce58a
5 changed files with 101 additions and 86 deletions

View File

@ -187,6 +187,18 @@ e_ilist_selected_label_get(Evas_Object *obj)
return NULL;
}
EAPI Evas_Object *
e_ilist_selected_icon_get(Evas_Object *obj)
{
E_Smart_Item *si;
API_ENTRY return NULL;
if (!sd->items) return NULL;
si = evas_list_nth(sd->items, sd->selected);
if (si) return si->icon_obj;
return NULL;
}
EAPI void *
e_ilist_selected_data_get(Evas_Object *obj)
{
@ -319,6 +331,45 @@ e_ilist_nth_label_set(Evas_Object *obj, int n, const char *label)
if (si) edje_object_part_text_set(si->base_obj, "label", label);
}
EAPI Evas_Object *
e_ilist_nth_icon_get(Evas_Object *obj, int n)
{
E_Smart_Item *si;
API_ENTRY return NULL;
if (!sd->items) return NULL;
si = evas_list_nth(sd->items, n);
if (si) return si->icon_obj;
return NULL;
}
EAPI void
e_ilist_nth_icon_set(Evas_Object *obj, int n, Evas_Object *icon)
{
E_Smart_Item *si;
API_ENTRY return;
if (!sd->items) return;
si = evas_list_nth(sd->items, n);
if (si)
{
if (si->icon_obj)
{
edje_object_part_unswallow(si->base_obj, si->icon_obj);
evas_object_hide(si->icon_obj);
evas_object_del(si->icon_obj);
}
si->icon_obj = icon;
if (si->icon_obj)
{
edje_extern_object_min_size_set(si->icon_obj, sd->icon_w, sd->icon_h);
edje_object_part_swallow(si->base_obj, "icon_swallow", si->icon_obj);
evas_object_show(si->icon_obj);
}
}
}
EAPI int
e_ilist_count(Evas_Object *obj)
{

View File

@ -22,6 +22,9 @@ EAPI void e_ilist_remove_num (Evas_Object *obj, int n);
EAPI void e_ilist_remove_label (Evas_Object *obj, const char *label);
EAPI const char *e_ilist_nth_label_get (Evas_Object *obj, int n);
EAPI void e_ilist_nth_label_set (Evas_Object *obj, int n, const char *label);
EAPI void e_ilist_nth_icon_set (Evas_Object *obj, int n, Evas_Object *icon);
EAPI Evas_Object *e_ilist_nth_icon_get (Evas_Object *obj, int n);
EAPI Evas_Object *e_ilist_selected_icon_get (Evas_Object *obj);
EAPI int e_ilist_count (Evas_Object *obj);
EAPI void e_ilist_clear (Evas_Object *obj);

View File

@ -20,40 +20,6 @@ static void _update_font_class_ilist_icon(void *data);
static void _enabled_fallback_cb_change(void *data, Evas_Object *obj);
typedef struct _E_Smart_Item E_Smart_Item;
typedef struct _E_Smart_Data E_Smart_Data;
typedef struct _E_Widget_IList_Data E_Widget_IList_Data;
struct _E_Widget_IList_Data
{
Evas_Object *o_widget, *o_scrollframe, *o_ilist;
Evas_List *callbacks;
char **value;
};
struct _E_Smart_Data
{
Evas_Coord x, y, w, h;
Evas_Object *smart_obj;
Evas_Object *box_obj;
Evas_List *items;
int selected;
Evas_Coord icon_w, icon_h;
unsigned char selector : 1;
};
struct _E_Smart_Item
{
E_Smart_Data *sd;
Evas_Object *base_obj;
Evas_Object *icon_obj;
void (*func) (void *data, void *data2);
void (*func_hilight) (void *data, void *data2);
void *data;
void *data2;
};
struct _E_Text_Class_Pair
{
const char *class_name;
@ -102,6 +68,7 @@ const E_Text_Class_Pair text_class_predefined_names[ ] = {
struct _E_Config_Dialog_Data
{
E_Config_Dialog *cfd;
Evas *evas;
/* Text Classes */
Evas_List *text_classes;
@ -301,6 +268,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
int i;
cfdata->cur_index = -1;
cfdata->evas = evas;
o = e_widget_list_add(evas, 0, 0);
/* Create Font Class Widgets */
@ -318,11 +286,15 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
tc = evas_list_nth(cfdata->text_classes, i);
if (tc)
{
ic = edje_object_add(evas);
if (tc->enabled)
e_util_edje_icon_set(ic, ILIST_ICON_WITH_DEFINED_FONT);
{
ic = edje_object_add(evas);
e_util_edje_icon_set(ic, ILIST_ICON_WITH_DEFINED_FONT);
}
else
e_util_edje_icon_set(ic, "");
{
ic = NULL;
}
e_widget_ilist_append(cfdata->gui.class_list, ic, tc->class_description, NULL, NULL, NULL);
}
}
@ -467,21 +439,27 @@ static void
_enabled_font_cb_change(void *data, Evas_Object *obj)
{
E_Config_Dialog_Data *cfdata;
Evas_Object *icon;
int n;
cfdata = data;
if (!cfdata) return;
n = e_widget_ilist_selected_get(cfdata->gui.class_list);
if (cfdata->cur_enabled)
{
e_widget_disabled_set(cfdata->gui.font, 0);
e_widget_disabled_set(cfdata->gui.size, 0);
icon = edje_object_add(cfdata->evas);
e_util_edje_icon_set(icon, ILIST_ICON_WITH_DEFINED_FONT);
}
else
{
e_widget_disabled_set(cfdata->gui.font, 1);
e_widget_disabled_set(cfdata->gui.size, 1);
icon = NULL;
}
_update_font_class_ilist_icon(cfdata);
e_widget_ilist_nth_icon_set(cfdata->gui.class_list, n, icon);
}
/* Private Font Fallback Functions */
@ -495,50 +473,3 @@ static void _enabled_fallback_cb_change(void *data, Evas_Object *obj)
e_widget_disabled_set(cfdata->gui.fallback_list, !cfdata->cur_fallbacks_enabled);
}
/* Just to have nice icon change in fontclass list */
static void _update_font_class_ilist_icon(void *data)
{
E_Smart_Item *si;
E_Smart_Data *sd;
E_Widget_IList_Data *wd;
Evas_Object *obj;
E_Config_Dialog_Data *cfdata;
if (!(cfdata = data))
return;
if (!(wd = e_widget_data_get(cfdata->gui.class_list)))
return;
obj = wd->o_ilist;
sd = evas_object_smart_data_get(obj);
if ((!obj) || (!sd) ||
(evas_object_type_get(obj) && strcmp(evas_object_type_get(obj), "e_ilist")))
return;
si = evas_list_nth(sd->items, sd->selected);
if (si)
{
edje_object_part_unswallow(si->base_obj, si->icon_obj);
evas_object_hide(si->icon_obj);
if (cfdata->cur_enabled)
{
if (si->icon_obj == NULL)
si->icon_obj = edje_object_add(evas_object_evas_get(sd->smart_obj));
e_util_edje_icon_set(si->icon_obj, ILIST_ICON_WITH_DEFINED_FONT);
}
else
si->icon_obj = NULL;
if (si->icon_obj)
{
edje_extern_object_min_size_set(si->icon_obj, sd->icon_w, sd->icon_h);
edje_object_part_swallow(si->base_obj, "icon_swallow", si->icon_obj);
evas_object_show(si->icon_obj);
}
}
}

View File

@ -184,6 +184,33 @@ e_widget_ilist_nth_label_set(Evas_Object *obj, int n, const char *label)
e_ilist_nth_label_set(wd->o_ilist, n, label);
}
EAPI void
e_widget_ilist_nth_icon_set(Evas_Object *obj, int n, Evas_Object *icon)
{
E_Widget_Data *wd;
wd = e_widget_data_get(obj);
e_ilist_nth_icon_set(wd->o_ilist, n, icon);
}
EAPI Evas_Object *
e_widget_ilist_nth_icon_get(Evas_Object *obj, int n)
{
E_Widget_Data *wd;
wd = e_widget_data_get(obj);
return e_ilist_nth_icon_get(wd->o_ilist, n);
}
EAPI Evas_Object *
e_widget_ilist_selected_icon_get(Evas_Object *obj)
{
E_Widget_Data *wd;
wd = e_widget_data_get(obj);
return e_ilist_selected_icon_get(wd->o_ilist);
}
EAPI int
e_widget_ilist_count(Evas_Object *obj)
{

View File

@ -18,6 +18,9 @@ EAPI void e_widget_ilist_remove_num(Evas_Object *obj, int n);
EAPI void e_widget_ilist_remove_label(Evas_Object *obj, const char *label);
EAPI const char *e_widget_ilist_nth_label_get(Evas_Object *obj, int n);
EAPI void e_widget_ilist_nth_label_set(Evas_Object *obj, int n, const char *label);
EAPI void e_widget_ilist_nth_icon_set(Evas_Object *obj, int n, Evas_Object *icon);
EAPI Evas_Object *e_widget_ilist_nth_icon_get(Evas_Object *obj, int n);
EAPI Evas_Object *e_widget_ilist_selected_icon_get(Evas_Object *obj);
EAPI int e_widget_ilist_count(Evas_Object *obj);
EAPI void e_widget_ilist_clear(Evas_Object *obj);