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)
 {

-- 


Reply via email to