jaehyun pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=489d43a62ac38eb406f90ee24c66033140e5c55d
commit 489d43a62ac38eb406f90ee24c66033140e5c55d Author: Jaehyun Cho <jae_hyun....@samsung.com> Date: Thu Feb 26 20:36:51 2015 +0900 edc_editor: Add enventor_object_font_set()/get() APIs. --- src/lib/edc_editor.c | 36 ++++++++++++++++++++++++++++++++++++ src/lib/enventor_object.eo | 22 ++++++++++++++++++++++ src/lib/enventor_private.h | 2 ++ src/lib/enventor_smart.c | 14 ++++++++++++++ 4 files changed, 74 insertions(+) diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c index adf1cb8..9fe9fdc 100644 --- a/src/lib/edc_editor.c +++ b/src/lib/edc_editor.c @@ -47,6 +47,8 @@ struct editor_s void *view_sync_cb_data; int select_pos; double font_scale; + const char *font_name; + const char *font_style; Eina_Bool edit_changed : 1; Eina_Bool linenumber : 1; @@ -64,6 +66,8 @@ struct editor_s static Eina_Bool image_preview_show(edit_data *ed, char *cur, Evas_Coord x, Evas_Coord y); +static void +edit_font_apply(edit_data *ed, const char *font_name, const char *font_style); static void line_init(edit_data *ed) @@ -119,6 +123,20 @@ entry_recover(edit_data *ed, int cursor_pos) } static void +edit_font_apply(edit_data *ed, const char *font_name, const char *font_style) +{ + if (!font_name) return; + + char *font = elm_font_fontconfig_name_get(font_name, font_style); + edje_text_class_set("enventor_entry", font, -100); + elm_font_fontconfig_name_free(font); + + elm_entry_calc_force(ed->en_line); + int pos = elm_entry_cursor_pos_get(ed->en_edit); + entry_recover(ed, pos); +} + +static void syntax_color_apply(edit_data *ed, Eina_Bool partial) { Evas_Object *tb = elm_entry_textblock_get(ed->en_edit); @@ -1089,6 +1107,9 @@ edit_term(edit_data *ed) { if (!ed) return; + if (ed->font_name) eina_stringshare_del(ed->font_name); + if (ed->font_style) eina_stringshare_del(ed->font_style); + syntax_helper *sh = ed->sh; parser_data *pd = ed->pd; @@ -1147,6 +1168,21 @@ edit_font_scale_get(edit_data *ed) } void +edit_font_set(edit_data *ed, const char *font_name, const char *font_style) +{ + eina_stringshare_replace(&ed->font_name, font_name); + eina_stringshare_replace(&ed->font_style, font_style); + edit_font_apply(ed, font_name, font_style); +} + +void +edit_font_get(edit_data *ed, const char **font_name, const char **font_style) +{ + if (font_name) *font_name = ed->font_name; + if (font_style) *font_style = ed->font_style; +} + +void edit_part_highlight_set(edit_data *ed, Eina_Bool part_highlight) { part_highlight = !!part_highlight; diff --git a/src/lib/enventor_object.eo b/src/lib/enventor_object.eo index 0f0e66c..d43a1c8 100644 --- a/src/lib/enventor_object.eo +++ b/src/lib/enventor_object.eo @@ -481,6 +481,28 @@ class Enventor.Object (Elm_Widget, Efl.File) { @ingroup Enventor */ return: Eina_Bool; } + font_set { + /*@ + @brief + @warning + @see + @ingroup Enventor */ + params { + @in const(char) *font_name; /*@ ... */ + @in const(char) *font_style; /*@ ... */ + } + } + font_get { + /*@ + @brief + @warning + @see + @ingroup Enventor */ + params { + @in const(char) **font_name; /*@ ... */ + @in const(char) **font_style; /*@ ... */ + } + } } implements { class.constructor; diff --git a/src/lib/enventor_private.h b/src/lib/enventor_private.h index ca3192f..07291fb 100644 --- a/src/lib/enventor_private.h +++ b/src/lib/enventor_private.h @@ -210,6 +210,8 @@ void edit_view_sync_cb_set(edit_data *ed, void (*cb)(void *data, Eina_Stringshar void edit_view_sync(edit_data *ed); void edit_font_scale_set(edit_data *ed, double font_scale); double edit_font_scale_get(edit_data *ed); +void edit_font_set(edit_data *ed, const char *font_name, const char *font_style); +void edit_font_get(edit_data *ed, const char **font_name, const char **font_style); void edit_part_highlight_toggle(edit_data *ed, Eina_Bool msg); void edit_line_delete(edit_data *ed); Eina_Stringshare *edit_cur_prog_name_get(edit_data *ed); diff --git a/src/lib/enventor_smart.c b/src/lib/enventor_smart.c index bda656e..f0b7d3b 100644 --- a/src/lib/enventor_smart.c +++ b/src/lib/enventor_smart.c @@ -481,6 +481,20 @@ _enventor_object_font_scale_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd) return edit_font_scale_get(pd->ed); } +EOLIAN static void +_enventor_object_font_set(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd, + const char *font_name, const char *font_style) +{ + edit_font_set(pd->ed, font_name, font_style); +} + +EOLIAN static void +_enventor_object_font_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd, + const char **font_name, const char **font_style) +{ + edit_font_get(pd->ed, font_name, font_style); +} + EOLIAN static int _enventor_object_max_line_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd) { --