forked from enlightenment/enlightenment
Working on font selector:
* Fix mem issues * Advanced works... (I need some help with layout) SVN revision: 29375
This commit is contained in:
parent
d800072edf
commit
3b626b6027
|
@ -99,7 +99,6 @@ struct _E_Config_Dialog_Data
|
||||||
/* Font Data */
|
/* Font Data */
|
||||||
Evas_Hash *font_hash;
|
Evas_Hash *font_hash;
|
||||||
Evas_List *font_list;
|
Evas_List *font_list;
|
||||||
Evas_List *style_list;
|
|
||||||
|
|
||||||
/* Current data */
|
/* Current data */
|
||||||
char *cur_font;
|
char *cur_font;
|
||||||
|
@ -189,7 +188,9 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
||||||
E_Font_Properties *efp;
|
E_Font_Properties *efp;
|
||||||
efp = e_font_fontconfig_name_parse(efd->font);
|
efp = e_font_fontconfig_name_parse(efd->font);
|
||||||
tc->font = evas_stringshare_add(efp->name);
|
tc->font = evas_stringshare_add(efp->name);
|
||||||
if (efp->styles) tc->style = efp->styles->data;
|
if (efp->styles)
|
||||||
|
tc->style = evas_stringshare_add(efp->styles->data);
|
||||||
|
e_font_properties_free(efp);
|
||||||
}
|
}
|
||||||
tc->size = efd->size;
|
tc->size = efd->size;
|
||||||
tc->enabled = 1;
|
tc->enabled = 1;
|
||||||
|
@ -207,7 +208,9 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
||||||
E_Font_Properties *efp;
|
E_Font_Properties *efp;
|
||||||
efp = e_font_fontconfig_name_parse(efd->font);
|
efp = e_font_fontconfig_name_parse(efd->font);
|
||||||
tc->font = evas_stringshare_add(efp->name);
|
tc->font = evas_stringshare_add(efp->name);
|
||||||
if (efp->styles) tc->style = efp->styles->data;
|
if (efp->styles)
|
||||||
|
tc->style = evas_stringshare_add(efp->styles->data);
|
||||||
|
e_font_properties_free(efp);
|
||||||
|
|
||||||
}
|
}
|
||||||
tc->size = efd->size;
|
tc->size = efd->size;
|
||||||
|
@ -240,6 +243,13 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
|
||||||
|
e_font_available_hash_free(cfdata->font_hash);
|
||||||
|
while (cfdata->font_list)
|
||||||
|
{
|
||||||
|
cfdata->font_list = evas_list_remove_list(cfdata->font_list, cfdata->font_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
while ((l = cfdata->text_classes))
|
while ((l = cfdata->text_classes))
|
||||||
{
|
{
|
||||||
CFText_Class *tc;
|
CFText_Class *tc;
|
||||||
|
@ -252,6 +262,7 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
}
|
}
|
||||||
|
|
||||||
E_FREE(cfdata->cur_font);
|
E_FREE(cfdata->cur_font);
|
||||||
|
E_FREE(cfdata->cur_style);
|
||||||
E_FREE(cfdata);
|
E_FREE(cfdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,7 +295,6 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
const char *name;
|
const char *name;
|
||||||
name = e_font_fontconfig_name_get(tc->font, tc->style);
|
name = e_font_fontconfig_name_get(tc->font, tc->style);
|
||||||
e_font_default_set(tc->class_name, name, tc->size);
|
e_font_default_set(tc->class_name, name, tc->size);
|
||||||
printf("Adding: %s = %s\n", tc->class_name, name);
|
|
||||||
evas_stringshare_del(name);
|
evas_stringshare_del(name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -313,7 +323,6 @@ static Evas_Object *
|
||||||
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
Evas_Object *o, *of, *ob, *ot, *ott;
|
Evas_Object *o, *of, *ob, *ot, *ott;
|
||||||
Evas_List *fonts, *l = NULL;
|
|
||||||
|
|
||||||
cfdata->cur_index = -1;
|
cfdata->cur_index = -1;
|
||||||
cfdata->evas = evas;
|
cfdata->evas = evas;
|
||||||
|
@ -359,22 +368,29 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
||||||
|
|
||||||
if (cfdata->font_hash == NULL)
|
if (cfdata->font_hash == NULL)
|
||||||
{
|
{
|
||||||
|
Evas_List *fonts;
|
||||||
|
|
||||||
fonts = evas_font_available_list(evas);
|
fonts = evas_font_available_list(evas);
|
||||||
cfdata->font_hash = e_font_available_list_parse(fonts);
|
cfdata->font_hash = e_font_available_list_parse(fonts);
|
||||||
evas_hash_foreach(cfdata->font_hash, _font_hash_cb, cfdata);
|
evas_hash_foreach(cfdata->font_hash, _font_hash_cb, cfdata);
|
||||||
|
if (cfdata->font_list)
|
||||||
|
{
|
||||||
|
cfdata->font_list = evas_list_sort(cfdata->font_list,
|
||||||
|
evas_list_count(cfdata->font_list),
|
||||||
|
_sort_fonts);
|
||||||
|
}
|
||||||
evas_font_available_list_free(evas, fonts);
|
evas_font_available_list_free(evas, fonts);
|
||||||
}
|
}
|
||||||
|
|
||||||
l = cfdata->font_list;
|
if (cfdata->font_list)
|
||||||
|
|
||||||
if (l)
|
|
||||||
{
|
{
|
||||||
l = evas_list_sort(l, evas_list_count(l), _sort_fonts);
|
Evas_List *next;
|
||||||
for (fonts = l; fonts; fonts = fonts->next)
|
|
||||||
|
for (next = cfdata->font_list; next; next = next->next)
|
||||||
{
|
{
|
||||||
char *f;
|
char *f;
|
||||||
|
|
||||||
f = fonts->data;
|
f = next->data;
|
||||||
e_widget_ilist_append(cfdata->gui.font_list, NULL, f, NULL, NULL, f);
|
e_widget_ilist_append(cfdata->gui.font_list, NULL, f, NULL, NULL, f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -416,14 +432,23 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
tc->size = cfdata->cur_size;
|
tc->size = cfdata->cur_size;
|
||||||
if (cfdata->cur_font)
|
if (cfdata->cur_font)
|
||||||
tc->font = evas_stringshare_add(cfdata->cur_font);
|
tc->font = evas_stringshare_add(cfdata->cur_font);
|
||||||
|
if (cfdata->cur_style)
|
||||||
|
tc->style = evas_stringshare_add(cfdata->cur_style);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (next = cfdata->text_classes; next; next = next->next)
|
for (next = cfdata->text_classes; next; next = next->next)
|
||||||
{
|
{
|
||||||
tc = next->data;
|
tc = next->data;
|
||||||
|
|
||||||
if (!tc->class_name) continue;
|
if (!tc->class_name) continue;
|
||||||
|
|
||||||
if (tc->enabled && tc->font)
|
if (tc->enabled && tc->font)
|
||||||
e_font_default_set(tc->class_name, tc->font, tc->size);
|
{
|
||||||
|
const char *name;
|
||||||
|
name = e_font_fontconfig_name_get(tc->font, tc->style);
|
||||||
|
e_font_default_set(tc->class_name, name, tc->size);
|
||||||
|
evas_stringshare_del(name);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
e_font_default_remove(tc->class_name);
|
e_font_default_remove(tc->class_name);
|
||||||
}
|
}
|
||||||
|
@ -453,9 +478,9 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
static Evas_Object *
|
static Evas_Object *
|
||||||
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
Evas_Object *o, *of, *ob;
|
Evas_Object *o, *of, *ob, *ott, *oft;
|
||||||
E_Radio_Group *rg;
|
|
||||||
Evas_List *next;
|
Evas_List *next;
|
||||||
|
E_Radio_Group *rg;
|
||||||
int option_enable;
|
int option_enable;
|
||||||
|
|
||||||
cfdata->cur_index = -1;
|
cfdata->cur_index = -1;
|
||||||
|
@ -465,44 +490,87 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
||||||
o = e_widget_list_add(evas, 0, 0);
|
o = e_widget_list_add(evas, 0, 0);
|
||||||
|
|
||||||
/* Create Font Class Widgets */
|
/* Create Font Class Widgets */
|
||||||
of = e_widget_frametable_add(evas, _("Font Class Configuration"), 0);
|
oft = e_widget_frametable_add(evas, _("Font Class Configuration"), 0);
|
||||||
|
of = e_widget_framelist_add(evas, _("Font Classes"), 0);
|
||||||
cfdata->gui.class_list = e_widget_ilist_add(evas, 16, 16, NULL);
|
cfdata->gui.class_list = e_widget_ilist_add(evas, 16, 16, NULL);
|
||||||
e_widget_ilist_multi_select_set(cfdata->gui.class_list, 1);
|
e_widget_ilist_multi_select_set(cfdata->gui.class_list, 1);
|
||||||
e_widget_min_size_set(cfdata->gui.class_list, 100, 100);
|
e_widget_min_size_set(cfdata->gui.class_list, 80, 250);
|
||||||
e_widget_on_change_hook_set(cfdata->gui.class_list, _ilist_font_cb_change, cfdata);
|
e_widget_on_change_hook_set(cfdata->gui.class_list, _ilist_font_cb_change, cfdata);
|
||||||
_fill_ilist(cfdata);
|
_fill_ilist(cfdata);
|
||||||
e_widget_frametable_object_append(of, cfdata->gui.class_list,
|
e_widget_framelist_object_append(of, cfdata->gui.class_list);
|
||||||
0, 0, 1, 5, 1, 1, 1, 1);
|
e_widget_frametable_object_append(oft, of, 0, 0, 1, 5, 1, 1, 1, 1);
|
||||||
|
|
||||||
|
ott = e_widget_table_add(evas, 0);
|
||||||
cfdata->gui.enabled = e_widget_check_add(evas, _("Enable Font Class"), &(cfdata->cur_enabled));
|
cfdata->gui.enabled = e_widget_check_add(evas, _("Enable Font Class"), &(cfdata->cur_enabled));
|
||||||
e_widget_disabled_set(cfdata->gui.enabled, 1);
|
e_widget_disabled_set(cfdata->gui.enabled, 1);
|
||||||
e_widget_frametable_object_append(of, cfdata->gui.enabled,
|
e_widget_table_object_append(ott, cfdata->gui.enabled, 0, 0, 3, 1, 1, 0, 1, 0);
|
||||||
1, 0, 2, 1, 1, 1, 1, 1);
|
|
||||||
e_widget_on_change_hook_set(cfdata->gui.enabled, _enabled_font_cb_change, cfdata);
|
e_widget_on_change_hook_set(cfdata->gui.enabled, _enabled_font_cb_change, cfdata);
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Font"));
|
ob = e_widget_label_add(evas, _("Font Size:"));
|
||||||
e_widget_frametable_object_append(of, ob,
|
e_widget_table_object_append(ott, ob, 0, 1, 1, 1, 1, 0, 1, 0);
|
||||||
1, 2, 1, 1, 1, 1, 1, 1);
|
|
||||||
|
|
||||||
cfdata->gui.font = e_widget_entry_add(evas, &(cfdata->cur_font));
|
|
||||||
e_widget_on_change_hook_set(cfdata->gui.font, _font_cb_change, cfdata);
|
|
||||||
e_widget_disabled_set(cfdata->gui.font, 1);
|
|
||||||
e_widget_min_size_set(cfdata->gui.font, 100, 25);
|
|
||||||
e_widget_frametable_object_append(of, cfdata->gui.font,
|
|
||||||
2, 2, 1, 1, 1, 1, 1, 1);
|
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Font Size"));
|
|
||||||
e_widget_frametable_object_append(of, ob,
|
|
||||||
1, 3, 1, 1, 1, 1, 1, 1);
|
|
||||||
|
|
||||||
cfdata->gui.size = e_widget_slider_add(evas, 1, 0, _("%2.1f pixels"), 5.0, 25.0, 0.5, 0, &(cfdata->cur_size), NULL, 25);
|
cfdata->gui.size = e_widget_slider_add(evas, 1, 0, _("%2.1f pixels"), 5.0, 25.0, 0.5, 0, &(cfdata->cur_size), NULL, 25);
|
||||||
e_widget_on_change_hook_set(cfdata->gui.size, _size_cb_change, cfdata);
|
|
||||||
e_widget_disabled_set(cfdata->gui.size, 1);
|
e_widget_disabled_set(cfdata->gui.size, 1);
|
||||||
e_widget_min_size_set(cfdata->gui.size, 180, 25);
|
e_widget_min_size_set(cfdata->gui.size, 80, 25);
|
||||||
e_widget_frametable_object_append(of, cfdata->gui.size,
|
e_widget_on_change_hook_set(cfdata->gui.size, _size_cb_change, cfdata);
|
||||||
2, 3, 1, 1, 1, 1, 1, 1);
|
e_widget_table_object_append(ott, cfdata->gui.size,
|
||||||
|
1, 1, 2, 1, 1, 0, 1, 0);
|
||||||
|
e_widget_frametable_object_append(oft, ott,
|
||||||
|
1, 0, 2, 1, 1, 1, 1, 1);
|
||||||
|
/* Font List */
|
||||||
|
of = e_widget_framelist_add(evas, _("Fonts"), 1);
|
||||||
|
cfdata->gui.font_list = e_widget_ilist_add(evas, 16, 16, &(cfdata->cur_font));
|
||||||
|
e_widget_on_change_hook_set(cfdata->gui.font_list, _font_cb_change, cfdata);
|
||||||
|
evas_event_freeze(evas_object_evas_get(cfdata->gui.font_list));
|
||||||
|
edje_freeze();
|
||||||
|
e_widget_ilist_freeze(cfdata->gui.font_list);
|
||||||
|
|
||||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
if (cfdata->font_hash == NULL)
|
||||||
|
{
|
||||||
|
Evas_List *fonts;
|
||||||
|
|
||||||
|
fonts = evas_font_available_list(evas);
|
||||||
|
cfdata->font_hash = e_font_available_list_parse(fonts);
|
||||||
|
evas_hash_foreach(cfdata->font_hash, _font_hash_cb, cfdata);
|
||||||
|
if (cfdata->font_list)
|
||||||
|
{
|
||||||
|
cfdata->font_list = evas_list_sort(cfdata->font_list,
|
||||||
|
evas_list_count(cfdata->font_list),
|
||||||
|
_sort_fonts);
|
||||||
|
}
|
||||||
|
|
||||||
|
evas_font_available_list_free(evas, fonts);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cfdata->font_list)
|
||||||
|
{
|
||||||
|
for ( next = cfdata->font_list; next ; next = next->next)
|
||||||
|
{
|
||||||
|
char *f;
|
||||||
|
|
||||||
|
f = next->data;
|
||||||
|
e_widget_ilist_append(cfdata->gui.font_list, NULL, f, NULL, NULL, f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
e_widget_ilist_go(cfdata->gui.font_list);
|
||||||
|
e_widget_min_size_set(cfdata->gui.font_list, 75, 200);
|
||||||
|
e_widget_ilist_thaw(cfdata->gui.font_list);
|
||||||
|
edje_thaw();
|
||||||
|
evas_event_thaw(evas_object_evas_get(cfdata->gui.font_list));
|
||||||
|
e_widget_framelist_object_append(of, cfdata->gui.font_list);
|
||||||
|
e_widget_frametable_object_append(oft, of, 1, 1, 1, 4, 1, 1, 1, 1);
|
||||||
|
|
||||||
|
/* Empty Style List */
|
||||||
|
of = e_widget_framelist_add(evas, _("Styles"), 1);
|
||||||
|
cfdata->gui.style_list = e_widget_ilist_add(evas, 16, 16, &(cfdata->cur_style));
|
||||||
|
e_widget_on_change_hook_set(cfdata->gui.style_list, _style_cb_change, cfdata);
|
||||||
|
e_widget_ilist_go(cfdata->gui.style_list);
|
||||||
|
e_widget_min_size_set(cfdata->gui.style_list, 75, 200);
|
||||||
|
e_widget_framelist_object_append(of, cfdata->gui.style_list);
|
||||||
|
|
||||||
|
e_widget_frametable_object_append(oft, of, 2, 1, 1, 4, 1, 1, 1, 1);
|
||||||
|
e_widget_list_object_append(o, oft, 1, 1, 0.5);
|
||||||
|
|
||||||
/* Create Hinting Widgets */
|
/* Create Hinting Widgets */
|
||||||
of = e_widget_framelist_add(evas, _("Hinting"), 1);
|
of = e_widget_framelist_add(evas, _("Hinting"), 1);
|
||||||
|
@ -646,7 +714,6 @@ _ilist_font_cb_change(void *data, Evas_Object *obj)
|
||||||
e_widget_disabled_set(cfdata->gui.size, !tc->enabled);
|
e_widget_disabled_set(cfdata->gui.size, !tc->enabled);
|
||||||
e_widget_check_checked_set(cfdata->gui.enabled, tc->enabled);
|
e_widget_check_checked_set(cfdata->gui.enabled, tc->enabled);
|
||||||
|
|
||||||
if (tc) printf("Trying to setup f:%s, s:%s\n", tc->font, tc->style);
|
|
||||||
/* Basic GUI Parts */
|
/* Basic GUI Parts */
|
||||||
if (cfdata->gui.font_list)
|
if (cfdata->gui.font_list)
|
||||||
{
|
{
|
||||||
|
@ -755,11 +822,8 @@ _font_cb_change(void *data, Evas_Object *obj)
|
||||||
if (tc->font) evas_stringshare_del(tc->font);
|
if (tc->font) evas_stringshare_del(tc->font);
|
||||||
if (cfdata->cur_font)
|
if (cfdata->cur_font)
|
||||||
tc->font = evas_stringshare_add(cfdata->cur_font);
|
tc->font = evas_stringshare_add(cfdata->cur_font);
|
||||||
|
|
||||||
printf("Current Font %s\n", cfdata->cur_font);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Changed Font\n");
|
|
||||||
|
|
||||||
/* Load the style list */
|
/* Load the style list */
|
||||||
if (cfdata->cur_font)
|
if (cfdata->cur_font)
|
||||||
|
@ -786,11 +850,9 @@ _font_cb_change(void *data, Evas_Object *obj)
|
||||||
evas_event_thaw(evas_object_evas_get(cfdata->gui.style_list));
|
evas_event_thaw(evas_object_evas_get(cfdata->gui.style_list));
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Trying to change style!\n");
|
|
||||||
|
|
||||||
if (tc && tc->style)
|
if (tc && tc->style)
|
||||||
{
|
{
|
||||||
printf("Changing style %s\n", tc->style);
|
|
||||||
for (n = 0; n < e_widget_ilist_count(cfdata->gui.style_list); n++)
|
for (n = 0; n < e_widget_ilist_count(cfdata->gui.style_list); n++)
|
||||||
{
|
{
|
||||||
const char *f;
|
const char *f;
|
||||||
|
@ -829,8 +891,6 @@ _style_cb_change(void *data, Evas_Object *obj)
|
||||||
if (tc->style) evas_stringshare_del(tc->style);
|
if (tc->style) evas_stringshare_del(tc->style);
|
||||||
if (cfdata->cur_style)
|
if (cfdata->cur_style)
|
||||||
tc->style = evas_stringshare_add(cfdata->cur_style);
|
tc->style = evas_stringshare_add(cfdata->cur_style);
|
||||||
|
|
||||||
printf("Cur style %s\n", cfdata->cur_style);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue