forked from enlightenment/enlightenment
fix up advanced font dialog a lot to work less stupidly and set icon indicators when it should
SVN revision: 75009
This commit is contained in:
parent
fe2cfa7e0c
commit
e4584d2214
|
@ -50,7 +50,7 @@ struct _CFText_Class
|
||||||
const char *font;
|
const char *font;
|
||||||
const char *style;
|
const char *style;
|
||||||
Evas_Font_Size size;
|
Evas_Font_Size size;
|
||||||
unsigned char enabled : 1;
|
unsigned char enabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
const E_Text_Class_Pair text_class_predefined_names[] = {
|
const E_Text_Class_Pair text_class_predefined_names[] = {
|
||||||
|
@ -125,7 +125,7 @@ struct _E_Config_Dialog_Data
|
||||||
const char *cur_style;
|
const char *cur_style;
|
||||||
double cur_size;
|
double cur_size;
|
||||||
int cur_enabled;
|
int cur_enabled;
|
||||||
int cur_index;
|
CFText_Class *cur_class;
|
||||||
|
|
||||||
/* Font Fallbacks */
|
/* Font Fallbacks */
|
||||||
int cur_fallbacks_enabled;
|
int cur_fallbacks_enabled;
|
||||||
|
@ -417,7 +417,6 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
||||||
{
|
{
|
||||||
Evas_Object *ot, *ob, *of;
|
Evas_Object *ot, *ob, *of;
|
||||||
|
|
||||||
cfdata->cur_index = -1;
|
|
||||||
cfdata->evas = evas;
|
cfdata->evas = evas;
|
||||||
|
|
||||||
ot = e_widget_table_add(evas, 0);
|
ot = e_widget_table_add(evas, 0);
|
||||||
|
@ -534,22 +533,22 @@ static int
|
||||||
_advanced_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
_advanced_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
Eina_List *next;
|
Eina_List *l;
|
||||||
CFText_Class *tc;
|
CFText_Class *tc;
|
||||||
|
E_Ilist_Item *ili;
|
||||||
|
|
||||||
/* Save current data */
|
/* Save current data */
|
||||||
if (cfdata->cur_index >= 0)
|
if (cfdata->cur_class)
|
||||||
{
|
{
|
||||||
tc = eina_list_nth(cfdata->text_classes, cfdata->cur_index);
|
tc = cfdata->cur_class;
|
||||||
tc->enabled = cfdata->cur_enabled;
|
|
||||||
tc->size = cfdata->cur_size;
|
tc->size = cfdata->cur_size;
|
||||||
if (cfdata->cur_font)
|
if (cfdata->cur_font)
|
||||||
tc->font = eina_stringshare_ref(cfdata->cur_font);
|
eina_stringshare_replace(&tc->font, cfdata->cur_font);
|
||||||
if (cfdata->cur_style)
|
if (cfdata->cur_style)
|
||||||
tc->style = eina_stringshare_ref(cfdata->cur_style);
|
eina_stringshare_replace(&tc->style, cfdata->cur_style);
|
||||||
}
|
}
|
||||||
|
|
||||||
EINA_LIST_FOREACH(cfdata->text_classes, next, tc)
|
EINA_LIST_FOREACH(cfdata->text_classes, l, tc)
|
||||||
{
|
{
|
||||||
if (!tc->class_name) continue;
|
if (!tc->class_name) continue;
|
||||||
if (tc->enabled && tc->font)
|
if (tc->enabled && tc->font)
|
||||||
|
@ -563,6 +562,26 @@ _advanced_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfda
|
||||||
else
|
else
|
||||||
e_font_default_remove(tc->class_name);
|
e_font_default_remove(tc->class_name);
|
||||||
}
|
}
|
||||||
|
i = 0;
|
||||||
|
EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->gui.class_list), l, ili)
|
||||||
|
{
|
||||||
|
Evas_Object *ic;
|
||||||
|
tc = e_widget_ilist_item_data_get(ili);
|
||||||
|
if (!tc)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (tc->enabled)
|
||||||
|
{
|
||||||
|
ic = e_icon_add(cfdata->evas);
|
||||||
|
e_util_icon_theme_set(ic, "dialog-ok-apply");
|
||||||
|
e_widget_ilist_nth_icon_set(cfdata->gui.class_list, i, ic);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
e_widget_ilist_nth_icon_set(cfdata->gui.class_list, i, NULL);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
/* Fallbacks configure */
|
/* Fallbacks configure */
|
||||||
e_font_fallback_clear();
|
e_font_fallback_clear();
|
||||||
|
@ -597,7 +616,6 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
||||||
Eina_List *next = NULL;
|
Eina_List *next = NULL;
|
||||||
int option_enable;
|
int option_enable;
|
||||||
|
|
||||||
cfdata->cur_index = -1;
|
|
||||||
cfdata->evas = evas;
|
cfdata->evas = evas;
|
||||||
|
|
||||||
otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
|
otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
|
||||||
|
@ -607,11 +625,10 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
||||||
ob = e_widget_ilist_add(evas, 16, 16, NULL);
|
ob = e_widget_ilist_add(evas, 16, 16, NULL);
|
||||||
cfdata->gui.class_list = ob;
|
cfdata->gui.class_list = ob;
|
||||||
_class_list_load(cfdata);
|
_class_list_load(cfdata);
|
||||||
e_widget_ilist_multi_select_set(ob, 1);
|
|
||||||
e_widget_size_min_set(ob, 110, 220);
|
e_widget_size_min_set(ob, 110, 220);
|
||||||
e_widget_on_change_hook_set(ob, _adv_class_cb_change, cfdata);
|
e_widget_on_change_hook_set(ob, _adv_class_cb_change, cfdata);
|
||||||
e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1);
|
e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1);
|
||||||
ob = e_widget_check_add(evas, _("Enable Font Class"), &(cfdata->cur_enabled));
|
ob = e_widget_check_add(evas, _("Enable Font Class"), NULL);
|
||||||
cfdata->gui.enabled = ob;
|
cfdata->gui.enabled = ob;
|
||||||
e_widget_on_change_hook_set(ob, _adv_enabled_font_cb_change, cfdata);
|
e_widget_on_change_hook_set(ob, _adv_enabled_font_cb_change, cfdata);
|
||||||
e_widget_disabled_set(ob, 1);
|
e_widget_disabled_set(ob, 1);
|
||||||
|
@ -730,7 +747,7 @@ _class_list_load(E_Config_Dialog_Data *cfdata)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ic = NULL;
|
ic = NULL;
|
||||||
e_widget_ilist_append(cfdata->gui.class_list, ic, tc->class_description, NULL, NULL, NULL);
|
e_widget_ilist_append(cfdata->gui.class_list, ic, tc->class_description, NULL, tc, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
e_widget_ilist_header_append(cfdata->gui.class_list, NULL, tc->class_description);
|
e_widget_ilist_header_append(cfdata->gui.class_list, NULL, tc->class_description);
|
||||||
|
@ -753,22 +770,20 @@ _adv_class_cb_change(void *data, Evas_Object *obj __UNUSED__)
|
||||||
if (!(cfdata = data)) return;
|
if (!(cfdata = data)) return;
|
||||||
|
|
||||||
/* Save Current */
|
/* Save Current */
|
||||||
if (cfdata->cur_index >= 0)
|
if (cfdata->cur_class)
|
||||||
{
|
{
|
||||||
tc = eina_list_nth(cfdata->text_classes, cfdata->cur_index);
|
tc = cfdata->cur_class;
|
||||||
tc->enabled = cfdata->cur_enabled;
|
|
||||||
tc->size = cfdata->cur_size;
|
tc->size = cfdata->cur_size;
|
||||||
|
|
||||||
eina_stringshare_del(tc->font);
|
eina_stringshare_replace(&tc->font, cfdata->cur_font);
|
||||||
tc->font = eina_stringshare_ref(cfdata->cur_font);
|
eina_stringshare_replace(&tc->style, cfdata->cur_style);
|
||||||
|
|
||||||
eina_stringshare_del(tc->style);
|
|
||||||
tc->style = eina_stringshare_ref(cfdata->cur_style);
|
|
||||||
|
|
||||||
if (cfdata->gui.style_list)
|
if (cfdata->gui.style_list)
|
||||||
e_widget_ilist_unselect(cfdata->gui.style_list);
|
e_widget_ilist_unselect(cfdata->gui.style_list);
|
||||||
if (cfdata->gui.size_list)
|
if (cfdata->gui.size_list)
|
||||||
e_widget_ilist_unselect(cfdata->gui.size_list);
|
e_widget_ilist_unselect(cfdata->gui.size_list);
|
||||||
|
if (cfdata->gui.font_list)
|
||||||
|
e_widget_ilist_unselect(cfdata->gui.font_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If no class is selected unselect all and return */
|
/* If no class is selected unselect all and return */
|
||||||
|
@ -783,67 +798,77 @@ _adv_class_cb_change(void *data, Evas_Object *obj __UNUSED__)
|
||||||
e_widget_ilist_unselect(cfdata->gui.font_list);
|
e_widget_ilist_unselect(cfdata->gui.font_list);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
tc = e_widget_ilist_selected_data_get(cfdata->gui.class_list);
|
||||||
|
if (!tc) return;
|
||||||
|
e_widget_check_valptr_set(cfdata->gui.enabled, (int*)&tc->enabled);
|
||||||
|
|
||||||
tc = eina_list_nth(cfdata->text_classes, indx);
|
cfdata->cur_class = tc;
|
||||||
cfdata->cur_index = indx;
|
|
||||||
|
|
||||||
e_widget_disabled_set(cfdata->gui.enabled, 0);
|
e_widget_disabled_set(cfdata->gui.enabled, 0);
|
||||||
e_widget_disabled_set(cfdata->gui.font_list, !tc->enabled);
|
e_widget_disabled_set(cfdata->gui.font_list, !tc->enabled);
|
||||||
e_widget_disabled_set(cfdata->gui.size_list, !tc->enabled);
|
e_widget_disabled_set(cfdata->gui.size_list, !tc->enabled);
|
||||||
e_widget_check_checked_set(cfdata->gui.enabled, tc->enabled);
|
if (!tc->enabled) return;
|
||||||
|
if (!cfdata->gui.font_list) return;
|
||||||
|
|
||||||
if (cfdata->gui.font_list)
|
{
|
||||||
{
|
E_Ilist_Item *ili;
|
||||||
/* Select the configured font */
|
Eina_List *l;
|
||||||
for (indx = 0; indx < e_widget_ilist_count(cfdata->gui.font_list); indx++)
|
unsigned int sel = 0;
|
||||||
{
|
|
||||||
const char *f;
|
|
||||||
|
|
||||||
f = e_widget_ilist_nth_label_get(cfdata->gui.font_list, indx);
|
/* Select the configured font */
|
||||||
if (tc->font && !strcasecmp(f, tc->font))
|
EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->gui.font_list), l, ili)
|
||||||
{
|
{
|
||||||
e_widget_ilist_selected_set(cfdata->gui.font_list, indx);
|
const char *f;
|
||||||
break;
|
|
||||||
}
|
f = ili->label;
|
||||||
}
|
if (tc->font && !strcasecmp(f, tc->font))
|
||||||
}
|
{
|
||||||
|
e_widget_ilist_selected_set(cfdata->gui.font_list, sel);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
sel++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_adv_enabled_font_cb_change(void *data, Evas_Object *obj __UNUSED__)
|
_adv_enabled_font_cb_change(void *data, Evas_Object *obj __UNUSED__)
|
||||||
{
|
{
|
||||||
E_Config_Dialog_Data *cfdata;
|
E_Config_Dialog_Data *cfdata;
|
||||||
Eina_List *l;
|
CFText_Class *tc;
|
||||||
int n;
|
|
||||||
|
|
||||||
if (!(cfdata = data)) return;
|
if (!(cfdata = data)) return;
|
||||||
e_widget_disabled_set(cfdata->gui.font_list, !cfdata->cur_enabled);
|
tc = e_widget_ilist_selected_data_get(cfdata->gui.class_list);
|
||||||
e_widget_disabled_set(cfdata->gui.style_list, !cfdata->cur_enabled);
|
if ((!tc) || (!tc->enabled))
|
||||||
e_widget_disabled_set(cfdata->gui.size_list, !cfdata->cur_enabled);
|
|
||||||
|
|
||||||
/* Search class list fot selected and enable Icon */
|
|
||||||
for (n = 0, l = e_widget_ilist_items_get(cfdata->gui.class_list); l; l = l->next, n++)
|
|
||||||
{
|
{
|
||||||
E_Ilist_Item *i;
|
e_widget_disabled_set(cfdata->gui.font_list, 1);
|
||||||
Evas_Object *icon = NULL;
|
e_widget_ilist_unselect(cfdata->gui.font_list);
|
||||||
CFText_Class *tc;
|
e_widget_disabled_set(cfdata->gui.style_list, 1);
|
||||||
|
e_widget_ilist_unselect(cfdata->gui.font_list);
|
||||||
if (!(i = l->data)) continue;
|
e_widget_disabled_set(cfdata->gui.size_list, 1);
|
||||||
if (!i->selected) continue;
|
e_widget_ilist_unselect(cfdata->gui.font_list);
|
||||||
|
if (tc)
|
||||||
tc = eina_list_nth(cfdata->text_classes, n);
|
e_widget_ilist_nth_icon_set(cfdata->gui.class_list, e_widget_ilist_selected_get(cfdata->gui.class_list), NULL);
|
||||||
tc->enabled = cfdata->cur_enabled;
|
return;
|
||||||
tc->size = cfdata->cur_size;
|
|
||||||
eina_stringshare_del(tc->font);
|
|
||||||
if (cfdata->cur_font)
|
|
||||||
tc->font = eina_stringshare_ref(cfdata->cur_font);
|
|
||||||
if (cfdata->cur_enabled)
|
|
||||||
{
|
|
||||||
icon = e_icon_add(cfdata->evas);
|
|
||||||
e_util_icon_theme_set(icon, "enlightenment");
|
|
||||||
}
|
|
||||||
e_widget_ilist_nth_icon_set(cfdata->gui.class_list, n, icon);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
e_widget_disabled_set(cfdata->gui.font_list, 0);
|
||||||
|
e_widget_disabled_set(cfdata->gui.style_list, 0);
|
||||||
|
e_widget_disabled_set(cfdata->gui.size_list, 0);
|
||||||
|
/* Search class list fot selected and enable Icon */
|
||||||
|
{
|
||||||
|
Evas_Object *icon = NULL;
|
||||||
|
|
||||||
|
tc->size = cfdata->cur_size;
|
||||||
|
eina_stringshare_replace(&tc->font, cfdata->cur_font);
|
||||||
|
if (tc->enabled)
|
||||||
|
{
|
||||||
|
icon = e_icon_add(cfdata->evas);
|
||||||
|
e_util_icon_theme_set(icon, "enlightenment");
|
||||||
|
}
|
||||||
|
|
||||||
|
e_widget_ilist_nth_icon_set(cfdata->gui.class_list, e_widget_ilist_selected_get(cfdata->gui.class_list), icon);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -881,25 +906,14 @@ _adv_font_cb_change(void *data, Evas_Object *obj __UNUSED__)
|
||||||
{
|
{
|
||||||
E_Config_Dialog_Data *cfdata;
|
E_Config_Dialog_Data *cfdata;
|
||||||
CFText_Class *tc;
|
CFText_Class *tc;
|
||||||
Eina_List *l;
|
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
tc = NULL;
|
|
||||||
if (!(cfdata = data)) return;
|
if (!(cfdata = data)) return;
|
||||||
|
|
||||||
/* Set up the new font name for each selected class */
|
/* Set up the new font name for each selected class */
|
||||||
for (n = 0, l = e_widget_ilist_items_get(cfdata->gui.class_list); l; l = l->next, n++)
|
tc = e_widget_ilist_selected_data_get(cfdata->gui.class_list);
|
||||||
{
|
if (tc)
|
||||||
E_Ilist_Item *i;
|
eina_stringshare_replace(&tc->font, cfdata->cur_font);
|
||||||
|
|
||||||
if (!(i = l->data)) continue;
|
|
||||||
if (!i->selected) continue;
|
|
||||||
|
|
||||||
tc = eina_list_nth(cfdata->text_classes, n);
|
|
||||||
if (tc->font) eina_stringshare_del(tc->font);
|
|
||||||
if (cfdata->cur_font)
|
|
||||||
tc->font = eina_stringshare_ref(cfdata->cur_font);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Load the style list */
|
/* Load the style list */
|
||||||
if (cfdata->cur_font)
|
if (cfdata->cur_font)
|
||||||
|
|
Loading…
Reference in New Issue