1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #define EO_BETA_API
5 #include <Efl_Ui.h>
6 #include <Elementary.h>
7 
8 static void
_apply_style(Eo * obj,size_t start_pos,size_t end_pos,const char * style)9 _apply_style(Eo *obj, size_t start_pos, size_t end_pos, const char *style)
10 {
11    Efl_Text_Cursor_Object *start, *end;
12 
13    start = efl_ui_textbox_cursor_create(obj);
14    end = efl_ui_textbox_cursor_create(obj);
15 
16    efl_text_cursor_object_position_set(start, start_pos);
17    efl_text_cursor_object_position_set(end, end_pos);
18 
19    efl_text_formatter_attribute_insert(start, end, style);
20 
21    efl_del(start);
22    efl_del(end);
23 }
24 
25 static Eo *
_create_label(Eo * win,Eo * bx)26 _create_label(Eo *win, Eo *bx)
27 {
28    Eo *en;
29    en = efl_add(EFL_UI_TEXTBOX_CLASS, win);
30    printf("Added Efl.Ui.Textbox object\n");
31    efl_text_interactive_editable_set(en, EINA_FALSE);
32    efl_pack(bx, en);
33    return en;
34 }
35 
36 
37 void
test_efl_ui_text_label(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)38 test_efl_ui_text_label(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
39 {
40    Evas_Object *win, *bx;
41    Eo *en;
42    char *markup;
43 
44    win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
45                   efl_text_set(efl_added, "Efl Canvas_Layout"),
46          efl_ui_win_autodel_set(efl_added, EINA_TRUE));
47 
48    bx = efl_add(EFL_UI_BOX_CLASS, win);
49    efl_content_set(win, bx);
50 
51    en = _create_label(win, bx);
52    efl_text_set(en, "This is a\t small label");
53    //                012345678901234567890
54    _apply_style(en, 0, 21, "font_size=12 font_weight=bold");
55    efl_text_font_weight_set(en, EFL_TEXT_FONT_WEIGHT_BOLD);
56 
57    en = _create_label(win, bx);
58    efl_text_set(en, "This is a text. It is longer but its size is taken as the"
59          " min size so that it shows in whole");
60    _apply_style(en, 40, 45, "font_weight=bold color=#ff0");
61    _apply_style(en, 52, 58, "font_weight=italic color=#f00");
62 
63    en = _create_label(win, bx);
64    efl_text_set(en, "By default 'multiline' is disabled.\n"
65          "So, \\n would only work if you enable it.");
66 
67    en = _create_label(win, bx);
68    efl_text_markup_set(en, "You can also <b>ENTER</b> markup!");
69    efl_text_font_family_set(en, "Sans");
70    efl_text_font_size_set(en, 14);
71    efl_text_wrap_set(en, EFL_TEXT_FORMAT_WRAP_WORD);
72    efl_text_multiline_set(en, EINA_TRUE);
73 
74    en = _create_label(win, bx);
75    markup = efl_text_markup_util_text_to_markup(
76          "You can use the text -> markup helper\nto make coding easier.");
77    efl_text_markup_set(en, markup);
78    free(markup);
79    efl_text_font_family_set(en, "Sans");
80    efl_text_font_size_set(en, 14);
81    efl_text_wrap_set(en, EFL_TEXT_FORMAT_WRAP_WORD);
82    efl_text_multiline_set(en, EINA_TRUE);
83 
84    en = _create_label(win, bx);
85    markup = efl_text_markup_util_markup_to_text(
86          "You can use markup -&gt; text helpers<ps>to make coding easier.");
87    efl_text_set(en, markup);
88    free(markup);
89    efl_text_font_family_set(en, "Sans");
90    efl_text_font_size_set(en, 14);
91    efl_text_wrap_set(en, EFL_TEXT_FORMAT_WRAP_WORD);
92    efl_text_multiline_set(en, EINA_TRUE);
93 }
94 
95 typedef struct
96 {
97    const char *wrap_mode[4];
98    size_t cur_wrap;
99 } Test_Data;
100 
101 static void
_on_bt3_clicked(void * data,const Efl_Event * event EINA_UNUSED)102 _on_bt3_clicked(void *data, const Efl_Event *event EINA_UNUSED)
103 {
104    Efl_Text_Cursor_Object *sel_start, *sel_end;
105    Eo *en = data;
106 
107    efl_text_interactive_selection_cursors_get(en, &sel_start, &sel_end);
108    const char *s = efl_text_cursor_object_range_text_get(sel_start, sel_end);
109 
110    printf("SELECTION REGION: %d - %d\n",
111          efl_text_cursor_object_position_get( sel_start),
112          efl_text_cursor_object_position_get(sel_end));
113    printf("SELECTION:\n");
114    if (s) printf("%s\n", s);
115 }
116 
117 static void
_on_bt6_clicked(void * data,const Efl_Event * event EINA_UNUSED)118 _on_bt6_clicked(void *data, const Efl_Event *event EINA_UNUSED)
119 {
120    Eo *text_obj = data;
121 
122    Efl_Text_Format_Wrap wrap = efl_text_wrap_get(text_obj);
123 
124    switch(wrap)
125      {
126       case EFL_TEXT_FORMAT_WRAP_NONE:
127          wrap = EFL_TEXT_FORMAT_WRAP_CHAR;
128          break;
129       case EFL_TEXT_FORMAT_WRAP_CHAR:
130          wrap = EFL_TEXT_FORMAT_WRAP_WORD;
131          break;
132       case EFL_TEXT_FORMAT_WRAP_WORD:
133          wrap = EFL_TEXT_FORMAT_WRAP_MIXED;
134          break;
135       case EFL_TEXT_FORMAT_WRAP_MIXED:
136          wrap = EFL_TEXT_FORMAT_WRAP_NONE;
137          break;
138       default:
139          break;
140      }
141    efl_text_wrap_set(text_obj, wrap);
142 }
143 
144 void
test_efl_ui_text(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)145 test_efl_ui_text(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
146 {
147    Eo *win, *bx, *bx2, *en;
148    Eo *bt;
149 
150    win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
151                   efl_text_set(efl_added, "Efl Ui Text"),
152          efl_ui_win_autodel_set(efl_added, EINA_TRUE));
153 
154    bx = efl_add(EFL_UI_BOX_CLASS, win);
155    efl_gfx_hint_weight_set(bx, EFL_GFX_HINT_EXPAND, EFL_GFX_HINT_EXPAND);
156    efl_content_set(win, bx);
157 
158    en = efl_add(EFL_UI_TEXTBOX_CLASS, bx,
159          efl_text_multiline_set(efl_added, EINA_TRUE));
160 
161    printf("Added Efl.Ui.Textbox object\n");
162 
163    efl_text_interactive_editable_set(en, EINA_TRUE);
164    efl_ui_textbox_scrollable_set(en, EINA_TRUE);
165 
166    efl_text_font_family_set(en, "Sans");
167    efl_text_font_size_set(en, 12);
168    efl_text_font_width_set(en, EFL_TEXT_FONT_WIDTH_ULTRACONDENSED);
169    efl_text_color_set(en, 255, 255, 255, 255);
170 
171    efl_text_set(en,
172       "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\n"
173       "tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim\n"
174       "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea\n"
175       "commodo consequat.  Duis aute irure dolor in reprehenderit in voluptate\n"
176       "velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\n"
177       "occaecat cupidatat non proident, sunt in culpa qui officia deserunt\n"
178       "mollit anim id est laborum");
179 
180    efl_gfx_hint_size_min_set(en, EINA_SIZE2D(300, 100));
181    efl_pack(bx, en);
182 
183    bx2 = efl_add(EFL_UI_BOX_CLASS, bx);
184    efl_gfx_hint_weight_set(bx2, EFL_GFX_HINT_EXPAND, EFL_GFX_HINT_EXPAND);
185    efl_ui_layout_orientation_set(bx2, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL);
186 
187    bt = efl_add(EFL_UI_BUTTON_CLASS, bx2);
188    efl_text_set(bt, "Sel");
189    efl_event_callback_add(bt, EFL_INPUT_EVENT_CLICKED, _on_bt3_clicked, en);
190    efl_gfx_hint_weight_set(bt, EFL_GFX_HINT_EXPAND, 0.0);
191    efl_pack(bx2, bt);
192    elm_object_focus_allow_set(bt, EINA_FALSE);
193 
194    bt = efl_add(EFL_UI_BUTTON_CLASS, bx2);
195    efl_text_set(bt, "Wr");
196    efl_event_callback_add(bt, EFL_INPUT_EVENT_CLICKED, _on_bt6_clicked, en);
197    efl_gfx_hint_weight_set(bt, EFL_GFX_HINT_EXPAND, 0.0);
198    efl_pack(bx2, bt);
199    elm_object_focus_allow_set(bt, EINA_FALSE);
200 
201    efl_pack(bx, bx2);
202 }
203 
204 void
test_efl_ui_text_inputfield(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)205 test_efl_ui_text_inputfield(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
206 {
207    Eo *win, *bx, *en;
208 
209    win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
210                   efl_text_set(efl_added, "Efl Ui Text Input Field"),
211          efl_ui_win_autodel_set(efl_added, EINA_TRUE));
212 
213    bx = efl_add(EFL_UI_BOX_CLASS, win);
214    efl_gfx_hint_weight_set(bx, EFL_GFX_HINT_EXPAND, EFL_GFX_HINT_EXPAND);
215    efl_content_set(win, bx);
216 
217    en = efl_add(EFL_UI_TEXTBOX_CLASS, bx,
218          efl_text_multiline_set(efl_added, EINA_FALSE));
219 
220    efl_text_interactive_editable_set(en, EINA_TRUE);
221    efl_ui_textbox_scrollable_set(en, EINA_TRUE);
222 
223    printf("Added Efl.Ui.Textbox object\n");
224    efl_text_font_width_set(en, EFL_TEXT_FONT_WIDTH_ULTRACONDENSED);
225    efl_text_set(efl_part(en, "efl.text_guide"), "Enter you name here");
226 
227    efl_pack(bx, en);
228 
229    en = _create_label(win, bx);
230    efl_text_set(en, "This is a multiline input.\n"
231          "Enter multiline here");
232    efl_text_interactive_editable_set(en, EINA_TRUE);
233    efl_text_wrap_set(en, EFL_TEXT_FORMAT_WRAP_WORD);
234    efl_text_multiline_set(en, EINA_TRUE);
235    efl_ui_textbox_scrollable_set(en, EINA_TRUE);
236    evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.5);
237 
238    efl_gfx_entity_size_set(win, EINA_SIZE2D(300, 200));
239 
240 }
241