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