efl

Форк
0
/
test_entry.c 
3022 строки · 110.2 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "elementary_config.h"
3
#endif
4

5
#include <Elementary.h>
6

7
// FIXME: elm_entry is not part of EO API, the below test cases may be useless
8
#include "elm_entry_eo.h"
9
#include "elm_popup_eo.h"
10

11
static void
12
my_entry_bt_1(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
13
{
14
   Evas_Object *en = data;
15
   elm_object_text_set(en, "");
16
}
17

18
static void
19
my_entry_bt_2(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
20
{
21
   Evas_Object *en = data;
22
   const char *s = elm_object_text_get(en);
23
   printf("ENTRY:\n");
24
   if (s) printf("%s\n", s);
25
   printf("ENTRY PLAIN UTF8:\n");
26
   if (s)
27
     {
28
        s = elm_entry_markup_to_utf8(s);
29
        if (s)
30
          {
31
             printf("%s\n", s);
32
             free((char *)s);
33
          }
34
     }
35
}
36

37
static void
38
my_entry_bt_3(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
39
{
40
   Evas_Object *en = data;
41
   const char *s = elm_entry_selection_get(en);
42
   int start = 0, end = 0;
43
   elm_entry_select_region_get(en, &start, &end);
44
   printf("SELECTION REGION: %d - %d\n", start, end);
45
   printf("SELECTION:\n");
46
   if (s) printf("%s\n", s);
47
   printf("SELECTION PLAIN UTF8:\n");
48
   if (s)
49
     {
50
        s = elm_entry_markup_to_utf8(s);
51
        if (s)
52
          {
53
             printf("%s\n", s);
54
             free((char *)s);
55
          }
56
     }
57
}
58

59
static void
60
my_entry_bt_4(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
61
{
62
   Evas_Object *en = data;
63
   elm_entry_entry_insert(en, "Insert some <b>BOLD</> text");
64
}
65

66
static void
67
my_entry_bt_5(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
68
{
69
   Evas_Object *en = data;
70
   elm_entry_scrollable_set(en, !elm_entry_scrollable_get(en));
71
}
72

73
static void
74
my_entry_bt_6(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
75
{
76
   Evas_Object *en = data;
77
   static Elm_Wrap_Type wr = ELM_WRAP_NONE;
78

79
   wr++;
80
   if (wr == ELM_WRAP_LAST) wr = ELM_WRAP_NONE;
81
   printf("wr: %i\n", wr);
82
   elm_entry_line_wrap_set(en, wr);
83
}
84

85
static void
86
my_entry_bt_7(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
87
{
88
   Evas_Object *en = data;
89
   elm_entry_editable_set(en, !elm_entry_editable_get(en));
90
}
91

92
static void
93
my_entry_bt_8(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
94
{
95
   Evas_Object *en = data;
96
   elm_object_focus_set(en, EINA_TRUE);
97
}
98

99
static void
100
my_entry_bt_9(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
101
{
102
   Evas_Object *en = data;
103
   elm_object_focus_set(en, EINA_FALSE);
104
}
105

106
static void
107
changed_cb1(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
108
{
109
   Evas_Object *ck = data;
110
   printf("ck %p to %i\n", obj, elm_check_state_get(obj));
111
   elm_config_context_menu_disabled_set(elm_check_state_get(obj));
112
   printf("ck2 %p is now %i\n", ck, elm_check_state_get(ck));
113
}
114

115
static void
116
select_allow_check_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
117
{
118
   Evas_Object *en = data;
119
   elm_entry_select_allow_set(en, elm_check_state_get(obj));
120

121
   if (elm_check_state_get(obj))
122
     printf("Entry %p is now selectable.\n", en);
123
   else
124
     printf("Entry %p is now unselectable.\n", en);
125
}
126

127
static void
128
entry_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
129
{
130
   const char *event = data;
131
   printf("Entry '%s' callback called\n", event);
132
   
133
}
134

135
static void
136
entry_focused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
137
{
138
   printf("Entry 'focused' callback called\n");
139
}
140

141
static void
142
entry_unfocused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
143
{
144
   printf("Entry 'unfocused' callback called\n");
145
}
146

147
void
148
test_entry(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
149
{
150
   Evas_Object *win, *bx, *bx2, *bx3, *bt, *en, *ck;
151
   char buf[4096];
152

153
   win = elm_win_util_standard_add("entry", "Entry");
154
   elm_win_autodel_set(win, EINA_TRUE);
155

156
   bx = elm_box_add(win);
157
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
158
   elm_win_resize_object_add(win, bx);
159
   evas_object_show(bx);
160

161
   en = elm_entry_add(win);
162
   elm_entry_line_wrap_set(en, ELM_WRAP_NONE);
163
   snprintf(buf, sizeof(buf),
164
            "This is an entry widget in this window that<br/>"
165
            "uses markup <b>like this</> for styling and<br/>"
166
            "formatting <em>like this</>, as well as<br/>"
167
            "<a href=X><link>links in the text</></a>, so enter text<br/>"
168
            "in here to edit it. By the way, links are<br/>"
169
            "called <a href=anc-02>Anchors</a> so you will need<br/>"
170
            "to refer to them this way.<br/>"
171
            "<br/>"
172

173
            "Also you can stick in items with (relsize + ascent): "
174
            "<item relsize=16x16 vsize=ascent href=emoticon/evil-laugh></item>"
175
            " (full) "
176
            "<item relsize=16x16 vsize=full href=emoticon/guilty-smile></item>"
177
            " (to the left)<br/>"
178

179
            "Also (size + ascent): "
180
            "<item size=16x16 vsize=ascent href=emoticon/haha></item>"
181
            " (full) "
182
            "<item size=16x16 vsize=full href=emoticon/happy-panting></item>"
183
            " (before this)<br/>"
184

185
            "And as well (absize + ascent): "
186
            "<item absize=64x64 vsize=ascent href=emoticon/knowing-grin></item>"
187
            " (full) "
188
            "<item absize=64x64 vsize=full href=emoticon/not-impressed></item>"
189
            " or even paths to image files on disk too like: "
190
            "<item absize=96x128 vsize=full href=file://%s/images/sky_01.jpg></item>"
191
            " ... end."
192
            , elm_app_data_dir_get()
193
            );
194
   elm_object_text_set(en, buf);
195
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
196
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
197
   evas_object_smart_callback_add(en, "changed", entry_changed_cb, "changed");
198
   evas_object_smart_callback_add(en, "changed,user", entry_changed_cb, "changed,user");
199
   evas_object_smart_callback_add(en, "focused", entry_focused_cb, NULL);
200
   evas_object_smart_callback_add(en, "unfocused", entry_unfocused_cb, NULL);
201
   elm_box_pack_end(bx, en);
202
   evas_object_show(en);
203
   elm_object_focus_set(en, EINA_TRUE);
204

205
   bx2 = elm_box_add(win);
206
   elm_box_horizontal_set(bx2, EINA_TRUE);
207
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
208
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
209

210
   bt = elm_button_add(win);
211
   elm_object_text_set(bt, "Clr");
212
   evas_object_smart_callback_add(bt, "clicked", my_entry_bt_1, en);
213
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
214
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
215
   elm_box_pack_end(bx2, bt);
216
   elm_object_focus_allow_set(bt, EINA_FALSE);
217
   evas_object_show(bt);
218

219
   bt = elm_button_add(win);
220
   elm_object_text_set(bt, "Prnt");
221
   evas_object_smart_callback_add(bt, "clicked", my_entry_bt_2, en);
222
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
223
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
224
   elm_box_pack_end(bx2, bt);
225
   elm_object_focus_allow_set(bt, EINA_FALSE);
226
   evas_object_show(bt);
227

228
   bt = elm_button_add(win);
229
   elm_object_text_set(bt, "Sel");
230
   evas_object_smart_callback_add(bt, "clicked", my_entry_bt_3, en);
231
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
232
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
233
   elm_box_pack_end(bx2, bt);
234
   elm_object_focus_allow_set(bt, EINA_FALSE);
235
   evas_object_show(bt);
236

237
   bt = elm_button_add(win);
238
   elm_object_text_set(bt, "Ins");
239
   evas_object_smart_callback_add(bt, "clicked", my_entry_bt_4, en);
240
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
241
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
242
   elm_box_pack_end(bx2, bt);
243
   elm_object_focus_allow_set(bt, EINA_FALSE);
244
   evas_object_show(bt);
245

246
   bt = elm_button_add(win);
247
   elm_object_text_set(bt, "Scrl");
248
   evas_object_smart_callback_add(bt, "clicked", my_entry_bt_5, en);
249
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
250
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
251
   elm_box_pack_end(bx2, bt);
252
   elm_object_focus_allow_set(bt, EINA_FALSE);
253
   evas_object_show(bt);
254

255
   bt = elm_button_add(win);
256
   elm_object_text_set(bt, "Wr");
257
   evas_object_smart_callback_add(bt, "clicked", my_entry_bt_6, en);
258
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
259
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
260
   elm_box_pack_end(bx2, bt);
261
   elm_object_focus_allow_set(bt, EINA_FALSE);
262
   evas_object_show(bt);
263

264
   bt = elm_button_add(win);
265
   elm_object_text_set(bt, "Edit");
266
   evas_object_smart_callback_add(bt, "clicked", my_entry_bt_7, en);
267
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
268
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
269
   elm_box_pack_end(bx2, bt);
270
   elm_object_focus_allow_set(bt, EINA_FALSE);
271
   evas_object_show(bt);
272

273
   bt = elm_button_add(win);
274
   elm_object_text_set(bt, "Focus");
275
   evas_object_smart_callback_add(bt, "clicked", my_entry_bt_8, en);
276
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
277
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
278
   elm_box_pack_end(bx2, bt);
279
   elm_object_focus_allow_set(bt, EINA_FALSE);
280
   evas_object_show(bt);
281

282
   bt = elm_button_add(win);
283
   elm_object_text_set(bt, "Unfocus");
284
   evas_object_smart_callback_add(bt, "clicked", my_entry_bt_9, en);
285
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
286
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
287
   elm_box_pack_end(bx2, bt);
288
   elm_object_focus_allow_set(bt, EINA_FALSE);
289
   evas_object_show(bt);
290

291
   bx3 = elm_box_add(win);
292
   elm_box_horizontal_set(bx3, EINA_TRUE);
293
   evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
294
   evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
295

296
   ck = elm_check_add(win);
297
   elm_object_text_set(ck, "Context Menu Disable");
298
   evas_object_smart_callback_add(ck, "changed", changed_cb1, ck);
299
   elm_box_pack_end(bx3, ck);
300
   evas_object_show(ck);
301

302
   ck = elm_check_add(win);
303
   elm_object_text_set(ck, "Select Allow");
304
   elm_check_state_set(ck, elm_entry_select_allow_get(en));
305
   evas_object_smart_callback_add(ck, "changed", select_allow_check_changed_cb, en);
306
   elm_box_pack_end(bx3, ck);
307
   evas_object_show(ck);
308

309
   elm_box_pack_end(bx, bx3);
310
   elm_box_pack_end(bx, bx2);
311
   evas_object_show(bx3);
312
   evas_object_show(bx2);
313

314
   evas_object_show(win);
315
}
316

317
static void
318
my_scrolled_entry_bt_1(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
319
{
320
   Evas_Object *en = data;
321
   elm_object_text_set(en, "");
322
}
323

324
static void
325
my_scrolled_entry_bt_2(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
326
{
327
   Evas_Object *en = data;
328
   const char *s = elm_object_text_get(en);
329
   printf("ENTRY:\n");
330
   if (s) printf("%s\n", s);
331
   printf("ENTRY PLAIN UTF8:\n");
332
   if (s)
333
     {
334
        s = elm_entry_markup_to_utf8(s);
335
        if (s)
336
          {
337
             printf("%s\n", s);
338
             free((char *)s);
339
          }
340
     }
341
}
342

343
static void
344
my_scrolled_entry_bt_3(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
345
{
346
   Evas_Object *en = data;
347
   const char *s = elm_entry_selection_get(en);
348
   int start = 0, end = 0;
349
   elm_entry_select_region_get(en, &start, &end);
350
   printf("SELECTION REGION: %d - %d\n", start, end);
351
   printf("SELECTION:\n");
352
   if (s) printf("%s\n", s);
353
   printf("SELECTION PLAIN UTF8:\n");
354
   if (s)
355
     {
356
        s = elm_entry_markup_to_utf8(s);
357
        if (s)
358
          {
359
             printf("%s\n", s);
360
             free((char *)s);
361
          }
362
     }
363
}
364

365
static void
366
my_scrolled_entry_bt_4(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
367
{
368
   Evas_Object *en = data;
369
   elm_entry_entry_insert(en, "Insert some <b>BOLD</> text");
370
}
371

372
static void
373
my_scrolled_entry_bt_5(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
374
{
375
   Evas_Object *en = data;
376
   const char *s = elm_object_text_get(en);
377
   printf("PASSWORD: '%s'\n", s ? s : "");
378
}
379

380
static void
381
scrolled_anchor_test(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
382
{
383
   Evas_Object *en = data;
384
   elm_entry_entry_insert(en, "ANCHOR CLICKED");
385
}
386

387
static void
388
_item_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
389
{
390
   Elm_Entry_Context_Menu_Item *item = (Elm_Entry_Context_Menu_Item *)event_info;
391
   printf("\ncurrent selected text = %s\n", elm_entry_context_menu_item_label_get(item));
392
}
393

394
static void
395
_entry_rejected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
396
{
397
   Elm_Entry_Filter_Accept_Set *accept_set = data;
398

399
   if (!accept_set) return;
400

401
   if (accept_set->accepted)
402
     printf("REJECTED: This entry only accepts the following character set: [%s]\n", accept_set->accepted);
403
   else
404
     printf("REJECTED: This entry rejects the following character set: [%s]\n", accept_set->rejected);
405
}
406

407
static void
408
_end_show_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
409
{
410
   Evas_Object *en = data;
411
   elm_entry_end_visible_set(en, EINA_TRUE);
412
}
413

414
static void
415
_end_hide_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
416
{
417
   Evas_Object *en = data;
418
   elm_entry_end_visible_set(en, EINA_FALSE);
419
}
420

421
static void
422
_context_menu_show_cb(void *data EINA_UNUSED, const Efl_Event *event)
423
{
424
   elm_entry_context_menu_clear(event->object);
425
   elm_entry_context_menu_item_add(event->object, "MenuD1", NULL, ELM_ICON_NONE, _item_cb, NULL);
426
   elm_entry_context_menu_item_add(event->object, "MenuD2", NULL, ELM_ICON_NONE, _item_cb, NULL);
427
}
428

429
void
430
test_entry_scrolled(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
431
{
432
   Evas_Object *win, *bx, *bx2, *bx3, *bx4, *bt, *en, *en_p, *sp, *entry, *label;
433
   static Elm_Entry_Filter_Accept_Set digits_filter_data, digits_filter_data2;
434
   static Elm_Entry_Filter_Limit_Size limit_filter_data, limit_filter_data2;
435

436
   win = elm_win_util_standard_add("entry-scrolled", "Entry Scrolled");
437
   elm_win_autodel_set(win, EINA_TRUE);
438

439
   bx = elm_box_add(win);
440
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
441
   elm_win_resize_object_add(win, bx);
442
   evas_object_show(bx);
443

444
   /* disabled entry */
445
   en = elm_entry_add(win);
446
   elm_entry_scrollable_set(en, EINA_TRUE);
447
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
448
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
449
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
450
   elm_object_text_set(en, "Disabled entry");
451
   elm_entry_single_line_set(en, EINA_TRUE);
452
   elm_object_disabled_set(en, EINA_TRUE);
453
   evas_object_show(en);
454
   elm_box_pack_end(bx, en);
455

456
   /* entry with guide */
457
   en = elm_entry_add(win);
458
   elm_entry_scrollable_set(en, EINA_TRUE);
459
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
460
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
461
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
462
   elm_object_part_text_set(en, "guide", "This string is guide");
463
   elm_entry_single_line_set(en, EINA_TRUE);
464
   evas_object_show(en);
465
   elm_box_pack_end(bx, en);
466

467
   /* password entry */
468
   en = elm_entry_add(win);
469
   elm_entry_scrollable_set(en, EINA_TRUE);
470
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
471
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
472
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
473
   elm_entry_password_set(en, EINA_TRUE);
474
   elm_entry_single_line_set(en, EINA_TRUE);
475
   elm_object_text_set(en, "Access denied, give up!");
476
   elm_object_disabled_set(en, EINA_TRUE);
477
   evas_object_show(en);
478
   elm_box_pack_end(bx, en);
479

480
   /* multi-line disable entry */
481
   en = elm_entry_add(win);
482
   elm_entry_scrollable_set(en, EINA_TRUE);
483
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
484
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
485
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
486
   elm_object_disabled_set(en, EINA_TRUE);
487
   elm_entry_context_menu_item_add(en, "Hello", NULL, ELM_ICON_NONE, NULL, NULL);
488
   elm_entry_context_menu_item_add(en, "World", NULL, ELM_ICON_NONE, NULL, NULL);
489
   elm_object_text_set(en,
490
                       "Multi-line disabled entry widget :)<br/>"
491
                       "We can use markup <b>like this</> for styling and<br/>"
492
                       "formatting <em>like this</>, as well as<br/>"
493
                       "<a href=X><link>links in the text</></a>,"
494
                       "but it won't be editable or clickable.");
495
   evas_object_show(en);
496
   elm_box_pack_end(bx, en);
497

498
   sp = elm_separator_add(win);
499
   elm_separator_horizontal_set(sp, EINA_TRUE);
500
   elm_box_pack_end(bx, sp);
501
   evas_object_show(sp);
502

503
   /* Single line selected entry */
504
   en = elm_entry_add(win);
505
   elm_entry_scrollable_set(en, EINA_TRUE);
506
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
507
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
508
   elm_object_text_set(en, "This is a single line");
509
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
510
   elm_entry_single_line_set(en, EINA_TRUE);
511
   elm_entry_select_all(en);
512
   elm_entry_context_menu_item_add(en, "Menu1", NULL, ELM_ICON_NONE, _item_cb, NULL);
513
   elm_entry_context_menu_item_add(en, "Menu2", NULL, ELM_ICON_NONE, _item_cb, NULL);
514
   evas_object_show(en);
515
   elm_box_pack_end(bx, en);
516

517
   /* Only digits entry */
518
   en = elm_entry_add(win);
519
   elm_entry_scrollable_set(en, EINA_TRUE);
520
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
521
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
522
   elm_object_text_set(en, "01234");
523
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
524
   elm_entry_single_line_set(en, EINA_TRUE);
525
   evas_object_show(en);
526
   elm_box_pack_end(bx, en);
527

528
   digits_filter_data.accepted = "0123456789";
529
   digits_filter_data.rejected = NULL;
530
   elm_entry_markup_filter_append(en, elm_entry_filter_accept_set, &digits_filter_data);
531
   evas_object_smart_callback_add(en, "rejected", _entry_rejected_cb, &digits_filter_data);
532

533
   /* No digits entry */
534
   en = elm_entry_add(win);
535
   elm_entry_scrollable_set(en, EINA_TRUE);
536
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
537
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
538
   elm_object_text_set(en, "No numbers here");
539
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
540
   elm_entry_single_line_set(en, EINA_TRUE);
541
   evas_object_show(en);
542
   elm_box_pack_end(bx, en);
543

544
   digits_filter_data2.accepted = NULL;
545
   digits_filter_data2.rejected = "0123456789";
546
   elm_entry_markup_filter_append(en, elm_entry_filter_accept_set, &digits_filter_data2);
547
   evas_object_smart_callback_add(en, "rejected", _entry_rejected_cb, &digits_filter_data2);
548

549
   /* Size limited entry */
550
   en = elm_entry_add(win);
551
   elm_entry_scrollable_set(en, EINA_TRUE);
552
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
553
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
554
   elm_object_text_set(en, "Just 20 chars");
555
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
556
   elm_entry_single_line_set(en, EINA_TRUE);
557
   evas_object_show(en);
558
   elm_box_pack_end(bx, en);
559

560
   limit_filter_data.max_char_count = 20;
561
   limit_filter_data.max_byte_count = 0;
562
   elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &limit_filter_data);
563

564
   /* Byte size limited entry */
565
   en = elm_entry_add(win);
566
   elm_entry_scrollable_set(en, EINA_TRUE);
567
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
568
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
569
   elm_object_text_set(en, "And now only 30 bytes");
570
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
571
   elm_entry_single_line_set(en, EINA_TRUE);
572
   evas_object_show(en);
573
   elm_box_pack_end(bx, en);
574

575
   limit_filter_data2.max_char_count = 0;
576
   limit_filter_data2.max_byte_count = 30;
577
   elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &limit_filter_data2);
578

579
   /* Single line password entry */
580
   en_p = elm_entry_add(win);
581
   elm_entry_scrollable_set(en_p, EINA_TRUE);
582
   evas_object_size_hint_weight_set(en_p, EVAS_HINT_EXPAND, 0.0);
583
   evas_object_size_hint_align_set(en_p, EVAS_HINT_FILL, 0.5);
584
   elm_scroller_policy_set(en_p, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
585
   elm_object_text_set(en_p, "Password here");
586
   elm_entry_single_line_set(en_p, EINA_TRUE);
587
   elm_entry_password_set(en_p, EINA_TRUE);
588
   evas_object_show(en_p);
589
   elm_box_pack_end(bx, en_p);
590

591
   /* Last password show entry */
592
   bx4 = elm_box_add(win);
593
   evas_object_size_hint_weight_set(bx4, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
594
   evas_object_show(bx4);
595

596
   label = elm_label_add(bx4);
597
   elm_object_text_set(label, "<b>Last password show entry</b>");
598
   evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
599
   elm_box_pack_end(bx4, label);
600
   evas_object_show(label);
601

602
   en = elm_entry_add(bx4);
603
   elm_entry_scrollable_set(en, EINA_TRUE);
604
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
605
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
606
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
607
   elm_entry_password_set(en, EINA_TRUE);
608
   elm_object_text_set(en, "Last password show");
609
   elm_entry_single_line_set(en, EINA_TRUE);
610
   edje_password_show_last_set(EINA_TRUE);
611
   edje_password_show_last_timeout_set(-1);
612
   evas_object_show(en);
613

614
   elm_box_pack_end(bx4, en);
615
   elm_box_pack_end(bx, bx4);
616

617
   /* entry with icon/end widgets */
618
   entry = elm_entry_add(win);
619
   elm_entry_scrollable_set(entry, EINA_TRUE);
620
   elm_scroller_policy_set(entry, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
621
   elm_entry_single_line_set(entry, EINA_TRUE);
622
   evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
623
   evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
624
   bt = elm_icon_add(win);
625
   elm_icon_standard_set(bt, "go-home");
626
   evas_object_size_hint_min_set(bt, 48, 48);
627
   evas_object_color_set(bt, 128, 0, 0, 128);
628
   evas_object_show(bt);
629
   elm_object_part_content_set(entry, "icon", bt);
630
   bt = elm_icon_add(win);
631
   elm_icon_standard_set(bt, "delete");
632
   evas_object_color_set(bt, 128, 0, 0, 128);
633
   evas_object_size_hint_min_set(bt, 48, 48);
634
   evas_object_show(bt);
635
   elm_object_part_content_set(entry, "end", bt);
636
   elm_object_text_set(entry, "entry with icon and end objects. For the test of show/hide end, text should be long long...");
637
   evas_object_show(entry);
638
   elm_box_pack_end(bx, entry);
639

640
   /* markup entry */
641
   en = elm_entry_add(win);
642
   elm_entry_scrollable_set(en, EINA_TRUE);
643
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
644
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
645
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
646
   elm_object_text_set(en,
647
                       "This is an entry widget in this window that<br/>"
648
                       "uses markup <b>like this</> for styling and<br/>"
649
                       "formatting <em>like this</>, as well as<br/>"
650
                       "<a href=X><link>links in the text</></a>, so enter text<br/>"
651
                       "in here to edit it. By them way, links are<br/>"
652
                       "called <a href=anc-02>Anchors</a> so you will need<br/>"
653
                       "to refer to them this way. At the end here is a really long "
654
                       "line to test line wrapping to see if it works. But just in "
655
                       "case this line is not long enough I will add more here to "
656
                       "really test it out, as Elementary really needs some "
657
                       "good testing to see if entry widgets work as advertised.");
658
   evas_object_smart_callback_add(en, "anchor,clicked", scrolled_anchor_test, en);
659
   evas_object_show(en);
660
   elm_box_pack_end(bx, en);
661
   efl_event_callback_add(en, ELM_ENTRY_EVENT_CONTEXT_OPEN, _context_menu_show_cb, NULL);
662

663
   bx2 = elm_box_add(win);
664
   elm_box_horizontal_set(bx2, EINA_TRUE);
665
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
666
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
667

668
   bt = elm_button_add(win);
669
   elm_object_text_set(bt, "Clear");
670
   evas_object_smart_callback_add(bt, "clicked", my_scrolled_entry_bt_1, en);
671
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
672
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
673
   elm_box_pack_end(bx2, bt);
674
   elm_object_focus_allow_set(bt, EINA_FALSE);
675
   evas_object_show(bt);
676

677
   bt = elm_button_add(win);
678
   elm_object_text_set(bt, "Print");
679
   evas_object_smart_callback_add(bt, "clicked", my_scrolled_entry_bt_2, en);
680
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
681
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
682
   elm_box_pack_end(bx2, bt);
683
   elm_object_focus_allow_set(bt, EINA_FALSE);
684
   evas_object_show(bt);
685

686
   bt = elm_button_add(win);
687
   elm_object_text_set(bt, "Print pwd");
688
   evas_object_smart_callback_add(bt, "clicked", my_scrolled_entry_bt_5, en_p);
689
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
690
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
691
   elm_box_pack_end(bx2, bt);
692
   elm_object_focus_allow_set(bt, EINA_FALSE);
693
   evas_object_show(bt);
694

695
   bt = elm_button_add(win);
696
   elm_object_text_set(bt, "Selection");
697
   evas_object_smart_callback_add(bt, "clicked", my_scrolled_entry_bt_3, en);
698
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
699
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
700
   elm_box_pack_end(bx2, bt);
701
   elm_object_focus_allow_set(bt, EINA_FALSE);
702
   evas_object_show(bt);
703

704
   bt = elm_button_add(win);
705
   elm_object_text_set(bt, "Insert");
706
   evas_object_smart_callback_add(bt, "clicked", my_scrolled_entry_bt_4, en);
707
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
708
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
709
   elm_box_pack_end(bx2, bt);
710
   elm_object_focus_allow_set(bt, EINA_FALSE);
711
   evas_object_show(bt);
712

713
   elm_box_pack_end(bx, bx2);
714
   evas_object_show(bx2);
715

716
   bx3 = elm_box_add(win);
717
   elm_box_horizontal_set(bx3, EINA_TRUE);
718
   evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
719
   evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
720

721
   bt = elm_button_add(win);
722
   elm_object_text_set(bt, "End Show");
723
   evas_object_smart_callback_add(bt, "clicked", _end_show_cb, entry);
724
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
725
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
726
   elm_box_pack_end(bx3, bt);
727
   elm_object_focus_allow_set(bt, 0);
728
   evas_object_show(bt);
729

730
   bt = elm_button_add(win);
731
   elm_object_text_set(bt, "End Hide");
732
   evas_object_smart_callback_add(bt, "clicked", _end_hide_cb, entry);
733
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
734
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
735
   elm_box_pack_end(bx3, bt);
736
   elm_object_focus_allow_set(bt, 0);
737
   evas_object_show(bt);
738

739
   elm_box_pack_end(bx, bx3);
740
   evas_object_show(bx3);
741

742
   elm_object_focus_set(win, EINA_TRUE);
743
   evas_object_resize(win, 320 * elm_config_scale_get(),
744
                           500 * elm_config_scale_get());
745
   evas_object_show(win);
746
}
747

748
static void
749
my_pop_dismissed(void *data EINA_UNUSED, const Efl_Event *ev)
750
{
751
   efl_del(ev->object);
752
}
753

754
static void
755
my_pop_close_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
756
{
757
  Evas_Object *pop, *en;
758
  pop = data;
759
  en = efl_parent_get(pop);
760
  elm_object_text_set(en, "This is very long text,"
761
                      " it is longer than width of this page."
762
                      " So if scroller is moved to next page,"
763
                      " that is bug when you click under button"
764
                      " and then click this entry text");
765
  elm_entry_cursor_end_set(en);
766

767
  efl_event_callback_add(pop, ELM_POPUP_EVENT_DISMISSED, my_pop_dismissed, NULL);
768
  elm_popup_dismiss(pop);
769
}
770

771
static void
772
my_pop_bt_clr(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
773
{
774
   Evas_Object *pop, *btn, *en = data;
775
   elm_object_text_set(en, "");
776
   elm_entry_cursor_end_set(en);
777

778
   pop = elm_popup_add(efl_key_data_get(en, "win"));
779
   efl_parent_set(pop, en);
780
   elm_object_text_set(pop, "If you click confirm, "
781
                       "set long text to entry "
782
                       "and delete popup obj");
783

784
   btn = elm_button_add(pop);
785
   elm_object_text_set(btn, "Confirm");
786
   evas_object_smart_callback_add(btn, "clicked", my_pop_close_cb, pop);
787
   elm_object_part_content_set(pop, "button1", btn);
788

789
   evas_object_show(btn);
790
   evas_object_show(pop);
791
}
792

793
static void
794
my_en_bt_clr(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
795
{
796
   Evas_Object *en = data;
797
   elm_entry_cursor_end_set(en);
798
}
799

800
void
801
test_entry_on_page_scroll(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
802
{
803
   Evas_Object *win, *sc, *bx, *ly, *rect, *en, *btn, *lb;
804
   char buf[PATH_MAX];
805

806
   win = elm_win_util_standard_add("entry-on-page-scroll", "Entry on Page Scroll");
807
   elm_win_autodel_set(win, EINA_TRUE);
808

809
   sc = elm_scroller_add(win);
810
   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
811
   elm_scroller_page_relative_set(sc, 1.0, 0.0);
812
   elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
813
   elm_scroller_page_scroll_limit_set(sc, 1, 0);
814
   elm_win_resize_object_add(win, sc);
815
   evas_object_show(sc);
816

817
   bx = elm_box_add(sc);
818
   elm_box_horizontal_set(bx, EINA_TRUE);
819
   elm_object_content_set(sc, bx);
820
   evas_object_show(bx);
821

822
   ly = elm_layout_add(bx);
823
   snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
824
   elm_layout_file_set(ly, buf, "page_layout");
825
   rect = evas_object_rectangle_add(evas_object_evas_get(ly));
826
   evas_object_color_set(rect, 50, 0, 0, 50);
827
   elm_object_part_content_set(ly, "page", rect);
828

829
   en = elm_entry_add(ly);
830
   elm_object_part_text_set(en, "guide", "Entry area");
831
  elm_object_text_set(en, "This is very long text,"
832
                      " it is longer than width of this page."
833
                      " So if scroller is moved to next page,"
834
                      " that is bug when you click under button"
835
                      " and then click this entry text");
836
   elm_object_part_content_set(ly, "element1", en);
837
   elm_entry_scrollable_set(en, EINA_TRUE);
838
   elm_entry_single_line_set(en, EINA_TRUE);
839
   efl_key_data_set(en, "win", win); // no ref
840
   evas_object_show(en);
841

842
   btn = elm_button_add(ly);
843
   elm_object_text_set(btn, "Click this and then click entry");
844
   elm_object_part_content_set(ly, "element2", btn);
845
   evas_object_smart_callback_add(btn, "clicked", my_en_bt_clr, en);
846
   evas_object_show(btn);
847
   elm_object_focus_set(btn, EINA_TRUE);
848

849
   btn = elm_button_add(ly);
850
   elm_object_text_set(btn, "Click this and close popup");
851
   elm_object_part_content_set(ly, "element3", btn);
852
   evas_object_smart_callback_add(btn, "clicked", my_pop_bt_clr, en);
853
   evas_object_show(btn);
854
   elm_object_focus_set(btn, EINA_TRUE);
855

856
   elm_object_part_text_set(ly, "text", "Page1");
857
   elm_box_pack_end(bx, ly);
858
   evas_object_show(ly);
859

860
   ly = elm_layout_add(bx);
861
   snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
862
   elm_layout_file_set(ly, buf, "page_layout");
863
   rect = evas_object_rectangle_add(evas_object_evas_get(ly));
864
   evas_object_color_set(rect, 0, 50, 0, 50);
865
   elm_object_part_content_set(ly, "page", rect);
866
   elm_object_part_text_set(ly, "text", "Page2");
867

868
   lb = elm_label_add(ly);
869
   elm_object_text_set(lb, "It should be shown by user's scroll");
870
   elm_object_part_content_set(ly, "element2", lb);
871
   evas_object_show(lb);
872

873
   elm_box_pack_end(bx, ly);
874
   evas_object_show(ly);
875

876
   evas_object_resize(win, 400 * elm_config_scale_get(),
877
                           550 * elm_config_scale_get());
878
   evas_object_show(win);
879

880
}
881

882
static void
883
my_ent_bt_clr(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
884
{
885
   Evas_Object *en = data;
886
   elm_object_text_set(en, "");
887
}
888

889
static void
890
my_ent_bt_pri(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
891
{
892
   Evas_Object *en = data;
893
   const char *s = elm_object_text_get(en);
894
   printf("ENTRY:\n");
895
   if (s) printf("%s\n", s);
896
   printf("ENTRY PLAIN UTF8:\n");
897
   if (s)
898
     {
899
        s = elm_entry_markup_to_utf8(s);
900
        if (s)
901
          {
902
             printf("%s\n", s);
903
             free((char *)s);
904
          }
905
     }
906
}
907

908
static void
909
my_ent_bt_sel(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
910
{
911
   Evas_Object *en = data;
912
   const char *s = elm_entry_selection_get(en);
913
   int start = 0, end = 0;
914
   elm_entry_select_region_get(en, &start, &end);
915
   printf("SELECTION REGION: %d - %d\n", start, end);
916
   printf("SELECTION:\n");
917
   if (s) printf("%s\n", s);
918
   printf("SELECTION PLAIN UTF8:\n");
919
   if (s)
920
     {
921
        s = elm_entry_markup_to_utf8(s);
922
        if (s)
923
          {
924
             printf("%s\n", s);
925
             free((char *)s);
926
          }
927
     }
928
}
929

930
static void
931
my_ent_bt_all(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
932
{
933
   Evas_Object *en = data;
934
   elm_entry_select_all(en);
935
}
936

937
static void
938
my_ent_bt_non(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
939
{
940
   Evas_Object *en = data;
941
   elm_entry_select_none(en);
942
}
943

944
static void
945
my_ent_bt_region(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
946
{
947
   Evas_Object *en = data;
948
   elm_entry_select_region_set(en, 10, 16);
949
}
950

951
static void
952
my_ent_bt_ins(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
953
{
954
   Evas_Object *en = data;
955
   elm_entry_entry_insert(en, "Insert text");
956
}
957

958
static void
959
my_ent_bt_lef(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
960
{
961
   Evas_Object *en = data;
962
   elm_entry_cursor_prev(en);
963
}
964

965
static void
966
my_ent_bt_rig(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
967
{
968
   Evas_Object *en = data;
969
   elm_entry_cursor_next(en);
970
}
971

972
static void
973
my_ent_bt_up_(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
974
{
975
   Evas_Object *en = data;
976
   elm_entry_cursor_up(en);
977
}
978

979
static void
980
my_ent_bt_dow(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
981
{
982
   Evas_Object *en = data;
983
   elm_entry_cursor_down(en);
984
}
985

986
static void
987
my_ent_bt_beg(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
988
{
989
   Evas_Object *en = data;
990
   elm_entry_cursor_begin_set(en);
991
}
992

993
static void
994
my_ent_bt_end(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
995
{
996
   Evas_Object *en = data;
997
   elm_entry_cursor_end_set(en);
998
}
999

1000
static void
1001
my_ent_bt_lbe(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1002
{
1003
   Evas_Object *en = data;
1004
   elm_entry_cursor_line_begin_set(en);
1005
}
1006

1007
static void
1008
my_ent_bt_len(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1009
{
1010
   Evas_Object *en = data;
1011
   elm_entry_cursor_line_end_set(en);
1012
}
1013

1014
static void
1015
my_ent_bt_sbe(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1016
{
1017
   Evas_Object *en = data;
1018
   elm_entry_cursor_selection_begin(en);
1019
}
1020

1021
static void
1022
my_ent_bt_sen(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1023
{
1024
   Evas_Object *en = data;
1025
   elm_entry_cursor_selection_end(en);
1026
}
1027

1028
static void
1029
my_ent_bt_fmt(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1030
{
1031
   Evas_Object *en = data;
1032
   printf("IS FORMAT: %i\n",
1033
          (int)elm_entry_cursor_is_format_get(en));
1034
}
1035

1036
static void
1037
my_ent_bt_vfm(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1038
{
1039
   Evas_Object *en = data;
1040
   printf("IS VISIBLE FORMAT %i\n",
1041
          (int)elm_entry_cursor_is_visible_format_get(en));
1042
}
1043

1044
static void
1045
my_ent_bt_chr(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1046
{
1047
   Evas_Object *en = data;
1048
   printf("CHAR '%s'\n", elm_entry_cursor_content_get(en));
1049
}
1050

1051
static void
1052
my_ent_bt_cut(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1053
{
1054
   Evas_Object *en = data;
1055
   elm_entry_selection_cut(en);
1056
}
1057

1058
static void
1059
my_ent_bt_cop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1060
{
1061
   Evas_Object *en = data;
1062
   elm_entry_selection_copy(en);
1063
}
1064

1065
static void
1066
my_ent_bt_pas(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1067
{
1068
   Evas_Object *en = data;
1069
   elm_entry_selection_paste(en);
1070
}
1071

1072
static char *user_style =
1073
   "DEFAULT='font_size=16 color=#F00'"
1074
   "em='+ backing=on backing_color=#FFF'"
1075
   "grn='+ color=#0F0'"
1076
   "ul='+ underline=on underline_color=#AAA'";
1077

1078
static void
1079
ent_tg_singleline_mode_state_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
1080
{
1081
   Evas_Object *en = data;
1082

1083
   elm_entry_single_line_set(en, elm_check_state_get(obj));
1084
}
1085

1086
static void
1087
ent_bt_style_user_peek(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1088
{
1089
   Evas_Object *en = data;
1090
   const char* cur_style = elm_entry_text_style_user_peek(en);
1091
   if (cur_style)
1092
     printf("Current style user: %s\n", cur_style);
1093
   else
1094
     printf("Style user stack is empty.\n");
1095
}
1096

1097
static void
1098
ent_bt_style_user_pop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1099
{
1100
   Evas_Object *en = data;
1101
   elm_entry_text_style_user_pop(en);
1102
   printf("Style user popped\n");
1103
}
1104

1105
static void
1106
ent_bt_style_user_push(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1107
{
1108
   Evas_Object *en = data;
1109
   elm_entry_text_style_user_push(en, user_style);
1110
   printf("Style user pushed\n");
1111
}
1112

1113
void
1114
test_entry_style_user(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1115
{
1116
   Evas_Object *win, *bx, *hbx, *en, *bt, *bt2, *tg;
1117

1118
   win = elm_win_util_standard_add("entry-user-style", "Entry User Style");
1119
   elm_win_autodel_set(win, EINA_TRUE);
1120

1121
   bx = elm_box_add(win);
1122
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1123
   elm_win_resize_object_add(win, bx);
1124
   evas_object_show(bx);
1125

1126
   en = elm_entry_add(bx);
1127
   elm_entry_line_wrap_set(en, ELM_WRAP_MIXED);
1128
   elm_entry_text_style_user_push(en, user_style);
1129
   elm_object_text_set(en,
1130
      "Default style<br>"
1131
      "<em>Change a standard tag (backing)</em><br>"
1132
      "<grn>Create a custom tag (green)</grn><br>"
1133
      "<ul>Create a custom tag (underline)</ul><br>"
1134
      "<underline=double underline_color=#0F0 underline2_color=#00F>Unnamed tag (underline double)</underline><br>"
1135
      );
1136
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1137
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
1138
   elm_box_pack_end(bx, en);
1139
   evas_object_show(en);
1140
   elm_object_focus_set(en, EINA_TRUE);
1141

1142
   tg = elm_check_add(bx);
1143
   elm_object_style_set(tg, "toggle");
1144
   elm_object_text_set(tg, "Singleline Mode");
1145
   elm_object_part_text_set(tg, "on", "ON");
1146
   elm_object_part_text_set(tg, "off", "OFF");
1147
   evas_object_smart_callback_add(tg, "changed", ent_tg_singleline_mode_state_changed_cb, en);
1148
   elm_box_pack_end(bx, tg);
1149
   evas_object_show(tg);
1150

1151
   hbx = elm_box_add(bx);
1152
   elm_box_horizontal_set(hbx, EINA_TRUE);
1153
   elm_box_pack_end(bx, hbx);
1154
   evas_object_show(hbx);
1155

1156
   bt = elm_button_add(hbx);
1157
   elm_object_text_set(bt, "Peek");
1158
   evas_object_smart_callback_add(bt, "clicked", ent_bt_style_user_peek, en);
1159
   elm_box_pack_end(hbx, bt);
1160
   elm_object_focus_allow_set(bt, EINA_FALSE);
1161
   evas_object_show(bt);
1162

1163
   bt2 = elm_button_add(hbx);
1164
   elm_object_text_set(bt2, "Pop");
1165
   evas_object_smart_callback_add(bt2, "clicked", ent_bt_style_user_pop, en);
1166
   elm_box_pack_end(hbx, bt2);
1167
   elm_object_focus_allow_set(bt2, EINA_FALSE);
1168
   evas_object_show(bt2);
1169

1170
   bt2 = elm_button_add(hbx);
1171
   elm_object_text_set(bt2, "Push");
1172
   evas_object_smart_callback_add(bt2, "clicked", ent_bt_style_user_push, en);
1173
   elm_box_pack_end(hbx, bt2);
1174
   elm_object_focus_allow_set(bt2, EINA_FALSE);
1175
   evas_object_show(bt2);
1176

1177
   evas_object_resize(win, 300 * elm_config_scale_get(),
1178
                           300 * elm_config_scale_get());
1179
   evas_object_show(win);
1180
}
1181

1182

1183
static char *default_style_text =
1184
   "<title>Elementary typography</title><br>"
1185
   "<ps>"
1186
   "<subtitle>Basic tags</subtitle><br>"
1187
   "Elm by default provide the <b>bold</b>, the <i>italic</i>, the "
1188
   "<hilight>hilight</hilight> and the <link>link</link> tags.<br>"
1189
   "<ps>"
1190
   "<subtitle>Font sizes</subtitle><br>"
1191
   "You can also use the <big>big</big> or <bigger>bigger</bigger> and "
1192
   "the <small>small</small> or <smaller>smaller</smaller> tags.<br>"
1193
   "<ps>"
1194
   "<subtitle>Status indicators</subtitle><br>"
1195
   "<info>info</info>, <success>success</success>, <warning>warning</warning> and <failure>failure</failure><br>"
1196
   "<ps>"
1197
   "<subtitle>Forms attributes</subtitle><br>"
1198
   "<name>Song:</name> <val>The show must go on</val><br>"
1199
   "<name>Artist:</name> <val>Queen</val><br>"
1200
   "<name>Album:</name> <val>Innuendo</val><br>"
1201
   "<ps>"
1202
   "<subtitle>Syntax highlight</subtitle><br>"
1203
   "<code>"
1204
   "<preprocessor>#include</preprocessor> <string>&lt;stdlib.h&gt;</string><br>"
1205
   "<preprocessor>#include</preprocessor> <string>&lt;Evas.h&gt;</string><br>"
1206
   "<br>"
1207
   "<preprocessor>#define</preprocessor> MESSAGE <string>\"Hello World\"</string><br>"
1208
   "<br>"
1209
   "<comment>/* Prints a message to standard output */</comment><br>"
1210
   "<type>void</type> <function>print_message</function><brace>(</brace><type>const char</type> *msg<brace>)</brace> <brace>{</brace><br>"
1211
   "   printf<brace>(</brace><string>\"%s\\n\"</string>, msg<brace>)</brace>;<br>"
1212
   "<brace>}</brace><br>"
1213
   "<br>"
1214
   "<type>int</type> <function>main</function><brace>(</brace><type>int</type> argc, <type>char</type> *argv[]<brace>)</brace> <brace>{</brace><br>"
1215
   "   <type>int</type> num_int = <number>123</number>;<br>"
1216
   "   <type>float</type> num_float = <number>0.999</number>;<br>"
1217
   "   <type>char</type> *str = <string>\"This is a string\"</string>;<br>"
1218
   "   <type>Evas_Object</type> *obj = <keyword>NULL</keyword>;<br>"
1219
   "   print_message<brace>(</brace>MESSAGE<brace>)</brace>;<br>"
1220
   "   <keyword>return</keyword> <number>0</number>;<br>"
1221
   "<brace>}</brace><br>"
1222
   "<ps>"
1223
   "<line_added>+diff line added</line_added><br>"
1224
   "<line_removed>-diff line removed</line_removed><br>"
1225
   "<line_changed> diff line changed</line_changed><br>"
1226
   "</code>";
1227

1228
static void
1229
ent_bt_def_style_disabled(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
1230
{
1231
   Evas_Object *en = data;
1232
   elm_object_disabled_set(en, elm_check_state_get(obj));
1233
}
1234

1235
static void
1236
ent_bt_def_style_scrollable(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
1237
{
1238
   Evas_Object *en = data;
1239
   elm_entry_scrollable_set(en, elm_check_state_get(obj));
1240
}
1241

1242
static void
1243
ent_bt_def_style_markup(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
1244
{
1245
   Evas_Object *en = data;
1246

1247
   if (elm_check_state_get(obj))
1248
   {
1249
      char *markup = elm_entry_utf8_to_markup(default_style_text);
1250
      elm_object_text_set(en, markup);
1251
      free(markup);
1252
   }
1253
   else
1254
      elm_object_text_set(en, default_style_text);
1255
}
1256

1257
static void
1258
ent_bt_def_style_wrap(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
1259
{
1260
   Evas_Object *en = data;
1261

1262
   if (elm_check_state_get(obj))
1263
     elm_entry_line_wrap_set(en, ELM_WRAP_NONE);
1264
   else
1265
     elm_entry_line_wrap_set(en, ELM_WRAP_WORD);
1266
}
1267

1268
void
1269
test_entry_style_default(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1270
{
1271
   Evas_Object *win, *bx, *vbx, *en, *o;
1272

1273
   win = elm_win_util_standard_add("entry-style", "Entry Default Style");
1274
   elm_win_autodel_set(win, EINA_TRUE);
1275

1276
   bx = elm_box_add(win);
1277
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1278
   elm_win_resize_object_add(win, bx);
1279
   evas_object_show(bx);
1280

1281
   en = elm_entry_add(win);
1282
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1283
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
1284
   elm_object_text_set(en, default_style_text);
1285
   elm_entry_editable_set(en, EINA_TRUE);
1286
   elm_entry_line_wrap_set(en, ELM_WRAP_WORD);
1287
   elm_box_pack_end(bx, en);
1288
   evas_object_show(en);
1289

1290
   o = elm_separator_add(win);
1291
   elm_separator_horizontal_set(o, EINA_TRUE);
1292
   elm_box_pack_end(bx, o);
1293
   evas_object_show(o);
1294

1295
   vbx = elm_box_add(win);
1296
   elm_box_horizontal_set(vbx, EINA_TRUE);
1297
   elm_box_pack_end(bx, vbx);
1298
   evas_object_show(vbx);
1299

1300
   o = elm_check_add(win);
1301
   elm_object_text_set(o, "show markup");
1302
   evas_object_smart_callback_add(o, "changed", ent_bt_def_style_markup, en);
1303
   elm_box_pack_end(vbx, o);
1304
   evas_object_show(o);
1305

1306
   o = elm_check_add(win);
1307
   elm_object_text_set(o, "disabled");
1308
   evas_object_smart_callback_add(o, "changed", ent_bt_def_style_disabled, en);
1309
   elm_box_pack_end(vbx, o);
1310
   evas_object_show(o);
1311

1312
   o = elm_check_add(win);
1313
   elm_object_text_set(o, "scrollable");
1314
   evas_object_smart_callback_add(o, "changed", ent_bt_def_style_scrollable, en);
1315
   elm_box_pack_end(vbx, o);
1316
   evas_object_show(o);
1317

1318
   o = elm_check_add(win);
1319
   elm_object_text_set(o, "no wrap");
1320
   evas_object_smart_callback_add(o, "changed", ent_bt_def_style_wrap, en);
1321
   elm_box_pack_end(vbx, o);
1322
   evas_object_show(o);
1323

1324
   evas_object_resize(win, 400 * elm_config_scale_get(),
1325
                           400 * elm_config_scale_get());
1326
   evas_object_show(win);
1327
}
1328

1329
static void
1330
_entry_activated_cb(void *data EINA_UNUSED, Evas_Object *obj,
1331
                    void *event_info EINA_UNUSED)
1332
{
1333
   printf("entry is activated: %s\n", elm_entry_entry_get(obj));
1334
}
1335

1336
void
1337
test_entry3(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1338
{
1339
   Evas_Object *win, *bx, *bx2, *bt, *en;
1340

1341
   win = elm_win_util_standard_add("entry3", "Entry 3");
1342
   elm_win_autodel_set(win, EINA_TRUE);
1343

1344
   bx = elm_box_add(win);
1345
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1346
   elm_win_resize_object_add(win, bx);
1347
   evas_object_show(bx);
1348

1349
   /* Single line selected entry */
1350
   en = elm_entry_add(win);
1351
   elm_entry_scrollable_set(en, EINA_TRUE);
1352
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
1353
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
1354
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
1355
   elm_object_text_set(en, "This is a single line");
1356
   elm_entry_single_line_set(en, EINA_TRUE);
1357
   evas_object_smart_callback_add(en, "activated", _entry_activated_cb, NULL);
1358
   elm_box_pack_end(bx, en);
1359
   evas_object_show(en);
1360

1361
   bx2 = elm_box_add(win);
1362
   elm_box_horizontal_set(bx2, EINA_TRUE);
1363
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1364
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1365

1366
   bt = elm_button_add(win);
1367
   elm_object_text_set(bt, "Clr");
1368
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_clr, en);
1369
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1370
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1371
   elm_box_pack_end(bx2, bt);
1372
   elm_object_focus_allow_set(bt, EINA_FALSE);
1373
   evas_object_show(bt);
1374

1375
   bt = elm_button_add(win);
1376
   elm_object_text_set(bt, "Pri");
1377
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_pri, en);
1378
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1379
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1380
   elm_box_pack_end(bx2, bt);
1381
   elm_object_focus_allow_set(bt, EINA_FALSE);
1382
   evas_object_show(bt);
1383

1384
   bt = elm_button_add(win);
1385
   elm_object_text_set(bt, "Sel");
1386
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_sel, en);
1387
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1388
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1389
   elm_box_pack_end(bx2, bt);
1390
   elm_object_focus_allow_set(bt, EINA_FALSE);
1391
   evas_object_show(bt);
1392

1393
   bt = elm_button_add(win);
1394
   elm_object_text_set(bt, "All");
1395
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_all, en);
1396
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1397
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1398
   elm_box_pack_end(bx2, bt);
1399
   elm_object_focus_allow_set(bt, EINA_FALSE);
1400
   evas_object_show(bt);
1401

1402
   bt = elm_button_add(win);
1403
   elm_object_text_set(bt, "Non");
1404
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_non, en);
1405
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1406
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1407
   elm_box_pack_end(bx2, bt);
1408
   elm_object_focus_allow_set(bt, EINA_FALSE);
1409
   evas_object_show(bt);
1410

1411
   bt = elm_button_add(win);
1412
   elm_object_text_set(bt, "Region");
1413
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_region, en);
1414
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1415
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1416
   elm_box_pack_end(bx2, bt);
1417
   elm_object_focus_allow_set(bt, EINA_FALSE);
1418
   evas_object_show(bt);
1419

1420
   bt = elm_button_add(win);
1421
   elm_object_text_set(bt, "Ins");
1422
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_ins, en);
1423
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1424
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1425
   elm_box_pack_end(bx2, bt);
1426
   elm_object_focus_allow_set(bt, EINA_FALSE);
1427
   evas_object_show(bt);
1428

1429
   elm_box_pack_end(bx, bx2);
1430
   evas_object_show(bx2);
1431

1432
   bx2 = elm_box_add(win);
1433
   elm_box_horizontal_set(bx2, EINA_TRUE);
1434
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1435
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1436

1437
   bt = elm_button_add(win);
1438
   elm_object_text_set(bt, "Lef");
1439
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_lef, en);
1440
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1441
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1442
   elm_box_pack_end(bx2, bt);
1443
   elm_object_focus_allow_set(bt, EINA_FALSE);
1444
   evas_object_show(bt);
1445

1446
   bt = elm_button_add(win);
1447
   elm_object_text_set(bt, "Rig");
1448
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_rig, en);
1449
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1450
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1451
   elm_box_pack_end(bx2, bt);
1452
   elm_object_focus_allow_set(bt, EINA_FALSE);
1453
   evas_object_show(bt);
1454

1455
   bt = elm_button_add(win);
1456
   elm_object_text_set(bt, "Up ");
1457
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_up_, en);
1458
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1459
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1460
   elm_box_pack_end(bx2, bt);
1461
   elm_object_focus_allow_set(bt, EINA_FALSE);
1462
   evas_object_show(bt);
1463

1464
   bt = elm_button_add(win);
1465
   elm_object_text_set(bt, "Dow");
1466
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_dow, en);
1467
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1468
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1469
   elm_box_pack_end(bx2, bt);
1470
   elm_object_focus_allow_set(bt, EINA_FALSE);
1471
   evas_object_show(bt);
1472

1473
   bt = elm_button_add(win);
1474
   elm_object_text_set(bt, "Beg");
1475
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_beg, en);
1476
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1477
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1478
   elm_box_pack_end(bx2, bt);
1479
   elm_object_focus_allow_set(bt, EINA_FALSE);
1480
   evas_object_show(bt);
1481

1482
   bt = elm_button_add(win);
1483
   elm_object_text_set(bt, "End");
1484
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_end, en);
1485
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1486
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1487
   elm_box_pack_end(bx2, bt);
1488
   elm_object_focus_allow_set(bt, EINA_FALSE);
1489
   evas_object_show(bt);
1490

1491
   elm_box_pack_end(bx, bx2);
1492
   evas_object_show(bx2);
1493

1494
   bx2 = elm_box_add(win);
1495
   elm_box_horizontal_set(bx2, EINA_TRUE);
1496
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1497
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1498

1499
   bt = elm_button_add(win);
1500
   elm_object_text_set(bt, "LBe");
1501
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_lbe, en);
1502
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1503
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1504
   elm_box_pack_end(bx2, bt);
1505
   elm_object_focus_allow_set(bt, EINA_FALSE);
1506
   evas_object_show(bt);
1507

1508
   bt = elm_button_add(win);
1509
   elm_object_text_set(bt, "LEn");
1510
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_len, en);
1511
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1512
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1513
   elm_box_pack_end(bx2, bt);
1514
   elm_object_focus_allow_set(bt, EINA_FALSE);
1515
   evas_object_show(bt);
1516

1517
   bt = elm_button_add(win);
1518
   elm_object_text_set(bt, "SBe");
1519
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_sbe, en);
1520
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1521
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1522
   elm_box_pack_end(bx2, bt);
1523
   elm_object_focus_allow_set(bt, EINA_FALSE);
1524
   evas_object_show(bt);
1525

1526
   bt = elm_button_add(win);
1527
   elm_object_text_set(bt, "SEn");
1528
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_sen, en);
1529
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1530
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1531
   elm_box_pack_end(bx2, bt);
1532
   elm_object_focus_allow_set(bt, EINA_FALSE);
1533
   evas_object_show(bt);
1534

1535
   bt = elm_button_add(win);
1536
   elm_object_text_set(bt, "Fmt");
1537
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_fmt, en);
1538
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1539
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1540
   elm_box_pack_end(bx2, bt);
1541
   elm_object_focus_allow_set(bt, EINA_FALSE);
1542
   evas_object_show(bt);
1543

1544
   bt = elm_button_add(win);
1545
   elm_object_text_set(bt, "VFm");
1546
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_vfm, en);
1547
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1548
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1549
   elm_box_pack_end(bx2, bt);
1550
   elm_object_focus_allow_set(bt, EINA_FALSE);
1551
   evas_object_show(bt);
1552

1553
   elm_box_pack_end(bx, bx2);
1554
   evas_object_show(bx2);
1555

1556
   bx2 = elm_box_add(win);
1557
   elm_box_horizontal_set(bx2, EINA_TRUE);
1558
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1559
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1560

1561
   bt = elm_button_add(win);
1562
   elm_object_text_set(bt, "Chr");
1563
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_chr, en);
1564
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1565
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1566
   elm_box_pack_end(bx2, bt);
1567
   elm_object_focus_allow_set(bt, EINA_FALSE);
1568
   evas_object_show(bt);
1569

1570
   bt = elm_button_add(win);
1571
   elm_object_text_set(bt, "Cut");
1572
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_cut, en);
1573
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1574
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1575
   elm_box_pack_end(bx2, bt);
1576
   elm_object_focus_allow_set(bt, EINA_FALSE);
1577
   evas_object_show(bt);
1578

1579
   bt = elm_button_add(win);
1580
   elm_object_text_set(bt, "Cop");
1581
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_cop, en);
1582
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1583
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1584
   elm_box_pack_end(bx2, bt);
1585
   elm_object_focus_allow_set(bt, EINA_FALSE);
1586
   evas_object_show(bt);
1587

1588
   bt = elm_button_add(win);
1589
   elm_object_text_set(bt, "Pas");
1590
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_pas, en);
1591
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1592
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1593
   elm_box_pack_end(bx2, bt);
1594
   elm_object_focus_allow_set(bt, EINA_FALSE);
1595
   evas_object_show(bt);
1596

1597
   elm_box_pack_end(bx, bx2);
1598
   evas_object_show(bx2);
1599

1600
   /* markup entry */
1601
   en = elm_entry_add(win);
1602
   elm_entry_scrollable_set(en, EINA_TRUE);
1603
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1604
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
1605
   elm_object_text_set(en,
1606
                       "This is an entry widget in this window that<br/>"
1607
                       "uses markup <b>like this</> for styling and<br/>"
1608
                       "formatting <em>like this</>, as well as<br/>"
1609
                       "<a href=X><link>links in the text</></a>, so enter text<br/>"
1610
                       "in here to edit it. By them way, links are<br/>"
1611
                       "called <a href=anc-02>Anchors</a> so you will need<br/>"
1612
                       "to refer to them this way. At the end here is a really long "
1613
                       "line to test line wrapping to see if it works. But just in "
1614
                       "case this line is not long enough I will add more here to "
1615
                       "really test it out, as Elementary really needs some "
1616
                       "good testing to see if entry widgets work as advertised."
1617
                      );
1618
   evas_object_smart_callback_add(en, "anchor,clicked", scrolled_anchor_test, en);
1619
   elm_box_pack_end(bx, en);
1620
   evas_object_show(en);
1621

1622
   bx2 = elm_box_add(win);
1623
   elm_box_horizontal_set(bx2, EINA_TRUE);
1624
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1625
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1626

1627
   bt = elm_button_add(win);
1628
   elm_object_text_set(bt, "Clr");
1629
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_clr, en);
1630
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1631
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1632
   elm_box_pack_end(bx2, bt);
1633
   elm_object_focus_allow_set(bt, EINA_FALSE);
1634
   evas_object_show(bt);
1635

1636
   bt = elm_button_add(win);
1637
   elm_object_text_set(bt, "Pri");
1638
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_pri, en);
1639
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1640
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1641
   elm_box_pack_end(bx2, bt);
1642
   elm_object_focus_allow_set(bt, EINA_FALSE);
1643
   evas_object_show(bt);
1644

1645
   bt = elm_button_add(win);
1646
   elm_object_text_set(bt, "Sel");
1647
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_sel, en);
1648
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1649
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1650
   elm_box_pack_end(bx2, bt);
1651
   elm_object_focus_allow_set(bt, EINA_FALSE);
1652
   evas_object_show(bt);
1653

1654
   bt = elm_button_add(win);
1655
   elm_object_text_set(bt, "All");
1656
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_all, en);
1657
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1658
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1659
   elm_box_pack_end(bx2, bt);
1660
   elm_object_focus_allow_set(bt, EINA_FALSE);
1661
   evas_object_show(bt);
1662

1663
   bt = elm_button_add(win);
1664
   elm_object_text_set(bt, "Non");
1665
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_non, en);
1666
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1667
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1668
   elm_box_pack_end(bx2, bt);
1669
   elm_object_focus_allow_set(bt, EINA_FALSE);
1670
   evas_object_show(bt);
1671

1672
   bt = elm_button_add(win);
1673
   elm_object_text_set(bt, "Ins");
1674
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_ins, en);
1675
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1676
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1677
   elm_box_pack_end(bx2, bt);
1678
   elm_object_focus_allow_set(bt, EINA_FALSE);
1679
   evas_object_show(bt);
1680

1681
   elm_box_pack_end(bx, bx2);
1682
   evas_object_show(bx2);
1683

1684
   bx2 = elm_box_add(win);
1685
   elm_box_horizontal_set(bx2, EINA_TRUE);
1686
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1687
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1688

1689
   bt = elm_button_add(win);
1690
   elm_object_text_set(bt, "Lef");
1691
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_lef, en);
1692
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1693
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1694
   elm_box_pack_end(bx2, bt);
1695
   elm_object_focus_allow_set(bt, EINA_FALSE);
1696
   evas_object_show(bt);
1697

1698
   bt = elm_button_add(win);
1699
   elm_object_text_set(bt, "Rig");
1700
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_rig, en);
1701
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1702
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1703
   elm_box_pack_end(bx2, bt);
1704
   elm_object_focus_allow_set(bt, EINA_FALSE);
1705
   evas_object_show(bt);
1706

1707
   bt = elm_button_add(win);
1708
   elm_object_text_set(bt, "Up ");
1709
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_up_, en);
1710
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1711
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1712
   elm_box_pack_end(bx2, bt);
1713
   elm_object_focus_allow_set(bt, EINA_FALSE);
1714
   evas_object_show(bt);
1715

1716
   bt = elm_button_add(win);
1717
   elm_object_text_set(bt, "Dow");
1718
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_dow, en);
1719
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1720
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1721
   elm_box_pack_end(bx2, bt);
1722
   elm_object_focus_allow_set(bt, EINA_FALSE);
1723
   evas_object_show(bt);
1724

1725
   bt = elm_button_add(win);
1726
   elm_object_text_set(bt, "Beg");
1727
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_beg, en);
1728
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1729
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1730
   elm_box_pack_end(bx2, bt);
1731
   elm_object_focus_allow_set(bt, EINA_FALSE);
1732
   evas_object_show(bt);
1733

1734
   bt = elm_button_add(win);
1735
   elm_object_text_set(bt, "LEn");
1736
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_len, en);
1737
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1738
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1739
   elm_box_pack_end(bx2, bt);
1740
   elm_object_focus_allow_set(bt, EINA_FALSE);
1741
   evas_object_show(bt);
1742

1743
   bt = elm_button_add(win);
1744
   elm_object_text_set(bt, "SBe");
1745
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_sbe, en);
1746
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1747
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1748
   elm_box_pack_end(bx2, bt);
1749
   elm_object_focus_allow_set(bt, EINA_FALSE);
1750
   evas_object_show(bt);
1751

1752
   bt = elm_button_add(win);
1753
   elm_object_text_set(bt, "SEn");
1754
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_sen, en);
1755
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1756
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1757
   elm_box_pack_end(bx2, bt);
1758
   elm_object_focus_allow_set(bt, EINA_FALSE);
1759
   evas_object_show(bt);
1760

1761
   bt = elm_button_add(win);
1762
   elm_object_text_set(bt, "Fmt");
1763
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_fmt, en);
1764
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1765
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1766
   elm_box_pack_end(bx2, bt);
1767
   elm_object_focus_allow_set(bt, EINA_FALSE);
1768
   evas_object_show(bt);
1769

1770
   bt = elm_button_add(win);
1771
   elm_object_text_set(bt, "VFm");
1772
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_vfm, en);
1773
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1774
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1775
   elm_box_pack_end(bx2, bt);
1776
   elm_object_focus_allow_set(bt, EINA_FALSE);
1777
   evas_object_show(bt);
1778

1779
   elm_box_pack_end(bx, bx2);
1780
   evas_object_show(bx2);
1781

1782
   bx2 = elm_box_add(win);
1783
   elm_box_horizontal_set(bx2, EINA_TRUE);
1784
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1785
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1786

1787
   bt = elm_button_add(win);
1788
   elm_object_text_set(bt, "Chr");
1789
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_chr, en);
1790
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1791
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1792
   elm_box_pack_end(bx2, bt);
1793
   elm_object_focus_allow_set(bt, EINA_FALSE);
1794
   evas_object_show(bt);
1795

1796
   bt = elm_button_add(win);
1797
   elm_object_text_set(bt, "Cut");
1798
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_cut, en);
1799
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1800
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1801
   elm_box_pack_end(bx2, bt);
1802
   elm_object_focus_allow_set(bt, EINA_FALSE);
1803
   evas_object_show(bt);
1804

1805
   bt = elm_button_add(win);
1806
   elm_object_text_set(bt, "Cop");
1807
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_cop, en);
1808
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1809
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1810
   elm_box_pack_end(bx2, bt);
1811
   elm_object_focus_allow_set(bt, EINA_FALSE);
1812
   evas_object_show(bt);
1813

1814
   bt = elm_button_add(win);
1815
   elm_object_text_set(bt, "Pas");
1816
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_pas, en);
1817
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1818
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1819
   elm_box_pack_end(bx2, bt);
1820
   elm_object_focus_allow_set(bt, EINA_FALSE);
1821
   evas_object_show(bt);
1822

1823
   elm_box_pack_end(bx, bx2);
1824
   evas_object_show(bx2);
1825

1826
   elm_object_focus_set(win, EINA_TRUE);
1827
   evas_object_resize(win, 320 * elm_config_scale_get(),
1828
                           480 * elm_config_scale_get());
1829
   evas_object_show(win);
1830
}
1831

1832
void
1833
test_entry4(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1834
{
1835
   Evas_Object *win, *ly, *en;
1836
   char buf[PATH_MAX];
1837

1838
   win = elm_win_util_standard_add("entry4", "Entry 4");
1839
   elm_win_autodel_set(win, EINA_TRUE);
1840

1841
   ly = elm_layout_add(win);
1842
   snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
1843
   elm_layout_file_set(ly, buf, "layout");
1844
   evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1845
   elm_win_resize_object_add(win, ly);
1846
   evas_object_show(ly);
1847

1848
   en = elm_entry_add(win);
1849
   elm_entry_scrollable_set(en, EINA_TRUE);
1850
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
1851
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
1852
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
1853
   elm_object_text_set(en, "This is a single line");
1854
   elm_entry_single_line_set(en, EINA_TRUE);
1855
   elm_object_part_content_set(ly, "element1", en);
1856

1857
   en = elm_entry_add(win);
1858
   elm_entry_line_wrap_set(en, ELM_WRAP_NONE);
1859
   elm_object_text_set(en,
1860
                       "This is an entry widget<br/>"
1861
                       "that uses markup<br/>"
1862
                       "<b>like this</> and has<br/>"
1863
                       "no scroller, so you can<br/>"
1864
                       "use it more flexibly.");
1865
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1866
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
1867
   elm_object_part_content_set(ly, "element2", en);
1868

1869
   en = elm_entry_add(win);
1870
   elm_entry_scrollable_set(en, EINA_TRUE);
1871
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1872
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
1873
   elm_object_text_set(en,
1874
                       "This is an entry widget in this window that<br/>"
1875
                       "uses markup <b>like this</> for styling and<br/>"
1876
                       "formatting <em>like this</>, as well as<br/>"
1877
                       "<a href=X><link>links in the text</></a>, so enter text<br/>"
1878
                       "in here to edit it. By them way, links are<br/>"
1879
                       "called <a href=anc-02>Anchors</a> so you will need<br/>"
1880
                       "to refer to them this way. At the end here is a really long "
1881
                       "line to test line wrapping to see if it works. But just in "
1882
                       "case this line is not long enough I will add more here to "
1883
                       "really test it out, as Elementary really needs some "
1884
                       "good testing to see if entry widgets work as advertised."
1885
                      );
1886
   evas_object_smart_callback_add(en, "anchor,clicked", scrolled_anchor_test, en);
1887
   elm_object_part_content_set(ly, "element3", en);
1888

1889
   evas_object_show(win);
1890
}
1891

1892
void
1893
test_entry5(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1894
{
1895
   Evas_Object *win, *bx, *bx2, *bt, *en;
1896

1897
   win = elm_win_util_standard_add("entry5", "Entry 5");
1898
   elm_win_autodel_set(win, EINA_TRUE);
1899

1900
   bx = elm_box_add(win);
1901
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1902
   elm_win_resize_object_add(win, bx);
1903
   evas_object_show(bx);
1904

1905
   en = elm_entry_add(win);
1906
   elm_entry_scrollable_set(en, EINA_TRUE);
1907
   elm_entry_line_wrap_set(en, ELM_WRAP_CHAR);
1908
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1909
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
1910
   elm_object_text_set(en,
1911
                       "This is an entry widget in this window that "
1912
                       "uses markup like this for styling and "
1913
                       "formatting like this, as well as "
1914
                       "to refer to them this way. At the end here is a really long "
1915
                       "line to test line wrapping to see if it works. But just in "
1916
                       "case this line is not long enough I will add more here to "
1917
                       "really test it out, as Elementary really needs some "
1918
                       "good testing to see if entry widgets work as advertised."
1919
                      );
1920
   evas_object_smart_callback_add(en, "anchor,clicked", scrolled_anchor_test, en);
1921
   elm_box_pack_end(bx, en);
1922
   evas_object_show(en);
1923

1924
   bx2 = elm_box_add(win);
1925
   elm_box_horizontal_set(bx2, EINA_TRUE);
1926
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1927
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1928

1929
   bt = elm_button_add(win);
1930
   elm_object_text_set(bt, "Clr");
1931
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_clr, en);
1932
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1933
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1934
   elm_box_pack_end(bx2, bt);
1935
   elm_object_focus_allow_set(bt, EINA_FALSE);
1936
   evas_object_show(bt);
1937

1938
   bt = elm_button_add(win);
1939
   elm_object_text_set(bt, "Pri");
1940
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_pri, en);
1941
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1942
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1943
   elm_box_pack_end(bx2, bt);
1944
   elm_object_focus_allow_set(bt, EINA_FALSE);
1945
   evas_object_show(bt);
1946

1947
   bt = elm_button_add(win);
1948
   elm_object_text_set(bt, "Sel");
1949
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_sel, en);
1950
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1951
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1952
   elm_box_pack_end(bx2, bt);
1953
   elm_object_focus_allow_set(bt, EINA_FALSE);
1954
   evas_object_show(bt);
1955

1956
   bt = elm_button_add(win);
1957
   elm_object_text_set(bt, "All");
1958
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_all, en);
1959
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1960
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1961
   elm_box_pack_end(bx2, bt);
1962
   elm_object_focus_allow_set(bt, EINA_FALSE);
1963
   evas_object_show(bt);
1964

1965
   bt = elm_button_add(win);
1966
   elm_object_text_set(bt, "Non");
1967
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_non, en);
1968
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1969
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1970
   elm_box_pack_end(bx2, bt);
1971
   elm_object_focus_allow_set(bt, EINA_FALSE);
1972
   evas_object_show(bt);
1973

1974
   bt = elm_button_add(win);
1975
   elm_object_text_set(bt, "Ins");
1976
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_ins, en);
1977
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1978
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1979
   elm_box_pack_end(bx2, bt);
1980
   elm_object_focus_allow_set(bt, EINA_FALSE);
1981
   evas_object_show(bt);
1982

1983
   elm_box_pack_end(bx, bx2);
1984
   evas_object_show(bx2);
1985

1986
   bx2 = elm_box_add(win);
1987
   elm_box_horizontal_set(bx2, EINA_TRUE);
1988
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1989
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1990

1991
   bt = elm_button_add(win);
1992
   elm_object_text_set(bt, "Lef");
1993
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_lef, en);
1994
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1995
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1996
   elm_box_pack_end(bx2, bt);
1997
   elm_object_focus_allow_set(bt, EINA_FALSE);
1998
   evas_object_show(bt);
1999

2000
   bt = elm_button_add(win);
2001
   elm_object_text_set(bt, "Rig");
2002
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_rig, en);
2003
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2004
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2005
   elm_box_pack_end(bx2, bt);
2006
   elm_object_focus_allow_set(bt, EINA_FALSE);
2007
   evas_object_show(bt);
2008

2009
   bt = elm_button_add(win);
2010
   elm_object_text_set(bt, "Up ");
2011
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_up_, en);
2012
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2013
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2014
   elm_box_pack_end(bx2, bt);
2015
   elm_object_focus_allow_set(bt, EINA_FALSE);
2016
   evas_object_show(bt);
2017

2018
   bt = elm_button_add(win);
2019
   elm_object_text_set(bt, "Dow");
2020
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_dow, en);
2021
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2022
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2023
   elm_box_pack_end(bx2, bt);
2024
   elm_object_focus_allow_set(bt, EINA_FALSE);
2025
   evas_object_show(bt);
2026

2027
   bt = elm_button_add(win);
2028
   elm_object_text_set(bt, "Beg");
2029
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_beg, en);
2030
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2031
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2032
   elm_box_pack_end(bx2, bt);
2033
   elm_object_focus_allow_set(bt, EINA_FALSE);
2034
   evas_object_show(bt);
2035

2036
   bt = elm_button_add(win);
2037
   elm_object_text_set(bt, "End");
2038
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_end, en);
2039
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2040
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2041
   elm_box_pack_end(bx2, bt);
2042
   elm_object_focus_allow_set(bt, EINA_FALSE);
2043
   evas_object_show(bt);
2044

2045
   elm_box_pack_end(bx, bx2);
2046
   evas_object_show(bx2);
2047

2048
   bx2 = elm_box_add(win);
2049
   elm_box_horizontal_set(bx2, EINA_TRUE);
2050
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
2051
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2052

2053
   bt = elm_button_add(win);
2054
   elm_object_text_set(bt, "LBe");
2055
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_lbe, en);
2056
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2057
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2058
   elm_box_pack_end(bx2, bt);
2059
   elm_object_focus_allow_set(bt, EINA_FALSE);
2060
   evas_object_show(bt);
2061

2062
   bt = elm_button_add(win);
2063
   elm_object_text_set(bt, "LEn");
2064
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_len, en);
2065
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2066
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2067
   elm_box_pack_end(bx2, bt);
2068
   elm_object_focus_allow_set(bt, EINA_FALSE);
2069
   evas_object_show(bt);
2070

2071
   bt = elm_button_add(win);
2072
   elm_object_text_set(bt, "SBe");
2073
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_sbe, en);
2074
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2075
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2076
   elm_box_pack_end(bx2, bt);
2077
   elm_object_focus_allow_set(bt, EINA_FALSE);
2078
   evas_object_show(bt);
2079

2080
   bt = elm_button_add(win);
2081
   elm_object_text_set(bt, "SEn");
2082
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_sen, en);
2083
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2084
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2085
   elm_box_pack_end(bx2, bt);
2086
   elm_object_focus_allow_set(bt, EINA_FALSE);
2087
   evas_object_show(bt);
2088

2089
   bt = elm_button_add(win);
2090
   elm_object_text_set(bt, "Fmt");
2091
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_fmt, en);
2092
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2093
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2094
   elm_box_pack_end(bx2, bt);
2095
   elm_object_focus_allow_set(bt, EINA_FALSE);
2096
   evas_object_show(bt);
2097

2098
   bt = elm_button_add(win);
2099
   elm_object_text_set(bt, "VFm");
2100
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_vfm, en);
2101
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2102
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2103
   elm_box_pack_end(bx2, bt);
2104
   elm_object_focus_allow_set(bt, EINA_FALSE);
2105
   evas_object_show(bt);
2106

2107
   elm_box_pack_end(bx, bx2);
2108
   evas_object_show(bx2);
2109

2110
   bx2 = elm_box_add(win);
2111
   elm_box_horizontal_set(bx2, EINA_TRUE);
2112
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
2113
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2114

2115
   bt = elm_button_add(win);
2116
   elm_object_text_set(bt, "Chr");
2117
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_chr, en);
2118
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2119
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2120
   elm_box_pack_end(bx2, bt);
2121
   elm_object_focus_allow_set(bt, EINA_FALSE);
2122
   evas_object_show(bt);
2123

2124
   bt = elm_button_add(win);
2125
   elm_object_text_set(bt, "Cut");
2126
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_cut, en);
2127
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2128
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2129
   elm_box_pack_end(bx2, bt);
2130
   elm_object_focus_allow_set(bt, EINA_FALSE);
2131
   evas_object_show(bt);
2132

2133
   bt = elm_button_add(win);
2134
   elm_object_text_set(bt, "Cop");
2135
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_cop, en);
2136
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2137
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2138
   elm_box_pack_end(bx2, bt);
2139
   elm_object_focus_allow_set(bt, EINA_FALSE);
2140
   evas_object_show(bt);
2141

2142
   bt = elm_button_add(win);
2143
   elm_object_text_set(bt, "Pas");
2144
   evas_object_smart_callback_add(bt, "clicked", my_ent_bt_pas, en);
2145
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2146
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2147
   elm_box_pack_end(bx2, bt);
2148
   elm_object_focus_allow_set(bt, EINA_FALSE);
2149
   evas_object_show(bt);
2150

2151
   elm_box_pack_end(bx, bx2);
2152
   evas_object_show(bx2);
2153

2154
   elm_object_focus_set(win, EINA_TRUE);
2155
   evas_object_resize(win, 320 * elm_config_scale_get(),
2156
                           480 * elm_config_scale_get());
2157
   evas_object_show(win);
2158
}
2159

2160
void
2161
test_entry6(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2162
{
2163
   Evas_Object *win, *bx, *en;
2164

2165
   win = elm_win_util_standard_add("entry6", "Entry 6");
2166
   elm_win_autodel_set(win, EINA_TRUE);
2167

2168
   bx = elm_box_add(win);
2169
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2170
   elm_win_resize_object_add(win, bx);
2171
   evas_object_show(bx);
2172

2173
   en = elm_entry_add(win);
2174
   elm_entry_scrollable_set(en, EINA_TRUE);
2175
   elm_entry_line_wrap_set(en, ELM_WRAP_CHAR);
2176
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2177
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
2178
   elm_object_text_set(en,
2179
                       "input_panel_enabled: TRUE.<br>"
2180
                       "When this entry gets a focus, virtual keyboard will be shown "
2181
                       "in illume environment.");
2182
   elm_box_pack_end(bx, en);
2183
   evas_object_show(en);
2184

2185
   en = elm_entry_add(win);
2186
   elm_entry_scrollable_set(en, EINA_TRUE);
2187
   elm_entry_line_wrap_set(en, ELM_WRAP_CHAR);
2188
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2189
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
2190
   elm_object_text_set(en,
2191
                       "input_panel_enabled: FALSE.<br>"
2192
                       "This entry doesn't allow one to show virtual keyboard automatically.<br>"
2193
                       "it is used in case that wants its own keypad such as calculator.");
2194
   elm_entry_input_panel_enabled_set(en, EINA_FALSE);
2195
   elm_box_pack_end(bx, en);
2196
   evas_object_show(en);
2197

2198
   elm_object_focus_set(win, EINA_TRUE);
2199
   evas_object_resize(win, 320 * elm_config_scale_get(),
2200
                           300 * elm_config_scale_get());
2201
   evas_object_show(win);
2202
}
2203

2204
static void
2205
changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2206
{
2207
   Evas_Object *en;
2208
   en = (Evas_Object*)data;
2209

2210
   elm_entry_editable_set(en, elm_check_state_get(obj));
2211
}
2212

2213
static void
2214
en_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2215
{
2216
   Evas_Object *sp, *en;
2217
   sp = (Evas_Object *)data;
2218
   en = (Evas_Object *)obj;
2219
   elm_spinner_min_max_set(sp, 0, strlen(elm_object_text_get(en)));
2220
}
2221

2222
static void
2223
sp_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2224
{
2225
   Evas_Object *en, *sp;
2226
   en = (Evas_Object *)data;
2227
   sp = (Evas_Object *)obj;
2228
   elm_entry_cursor_pos_set(en, elm_spinner_value_get(sp));
2229
   elm_object_focus_set(en, EINA_TRUE);
2230
}
2231

2232
static void
2233
add_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2234
{
2235
   Evas_Object *en;
2236
   en = (Evas_Object *)data;
2237

2238
   elm_entry_context_menu_item_add(en, "item", NULL, ELM_ICON_NONE, NULL, NULL);
2239
}
2240

2241
static void
2242
clear_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2243
{
2244
   Evas_Object *en;
2245
   en = (Evas_Object *)data;
2246

2247
   elm_entry_context_menu_clear(en);
2248
}
2249

2250
static Evas_Object *
2251
item_provider(void *images EINA_UNUSED, Evas_Object *en, const char *item)
2252
{
2253
   Evas_Object *o = NULL;;
2254
   char buf[1024];
2255

2256
   if (!strcmp(item, "itemprovider"))
2257
     {
2258
        snprintf(buf, sizeof(buf), "%s/images/icon_00.png",
2259
                 elm_app_data_dir_get());
2260
        o = evas_object_image_filled_add(evas_object_evas_get(en));
2261
        evas_object_image_file_set(o, buf, NULL);
2262
     }
2263

2264
   return o;
2265
}
2266

2267
static Evas_Object *
2268
prepend_item_provider(void *images EINA_UNUSED, Evas_Object *en, const char *item)
2269
{
2270
   Evas_Object *o = NULL;;
2271
   char buf[1024];
2272

2273
   if (!strcmp(item, "itemprovider"))
2274
     {
2275
        snprintf(buf, sizeof(buf), "%s/images/icon_10.png",
2276
                 elm_app_data_dir_get());
2277
        o = evas_object_image_filled_add(evas_object_evas_get(en));
2278
        evas_object_image_file_set(o, buf, NULL);
2279
     }
2280

2281
   return o;
2282
}
2283

2284
static void
2285
prepend_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2286
{
2287
   Evas_Object *en;
2288
   en = (Evas_Object *)data;
2289

2290
   elm_entry_item_provider_prepend(en, prepend_item_provider, NULL);
2291
   elm_object_text_set(en,
2292
                       "Item Provider"
2293
                       "<item size=50x50 vsize=full href=itemprovider></item>"
2294
                      );
2295
}
2296

2297
static void
2298
remove_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2299
{
2300
   Evas_Object *en;
2301
   en = (Evas_Object *)data;
2302

2303
   elm_entry_item_provider_remove(en, item_provider, NULL);
2304
   elm_entry_item_provider_remove(en, prepend_item_provider, NULL);
2305
   elm_object_text_set(en,
2306
                       "Item Provider"
2307
                       "<item size=50x50 vsize=full href=itemprovider></item>"
2308
                      );
2309
}
2310

2311
static void
2312
enable_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2313
{
2314
   Evas_Object *en;
2315
   en = (Evas_Object*)data;
2316

2317
   elm_entry_context_menu_disabled_set(en, elm_check_state_get(obj));
2318
}
2319

2320
void
2321
test_entry7(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2322
{
2323
   Evas_Object *win, *gd, *bg, *en, *tg, *lb, *sp;
2324
   Evas_Object *bt, *en2;
2325

2326
   win = elm_win_util_standard_add("entry7", "Entry 7");
2327
   elm_win_autodel_set(win, EINA_TRUE);
2328

2329
   gd = elm_grid_add(win);
2330
   elm_grid_size_set(gd, 100, 100);
2331
   evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2332
   elm_win_resize_object_add(win, gd);
2333
   evas_object_show(gd);
2334

2335
   /* upper entry group */
2336
   bg = elm_bg_add(win);
2337
   elm_bg_color_set(bg, 255, 0, 0);
2338
   elm_grid_pack(gd, bg, 10, 10, 60, 30);
2339
   evas_object_show(bg);
2340

2341
   en = elm_entry_add(win);
2342
   elm_entry_scrollable_set(en, EINA_TRUE);
2343
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2344
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
2345
   elm_object_text_set(en, "Editable, Cursor Position");
2346
   evas_object_show(en);
2347
   elm_grid_pack(gd, en, 10, 10, 60, 30);
2348

2349
   tg = elm_check_add(win);
2350
   evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2351
   evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
2352
   elm_object_text_set(tg, "Editable");
2353
   elm_check_state_set(tg, EINA_TRUE);
2354
   evas_object_smart_callback_add(tg, "changed", changed_cb, en);
2355
   elm_grid_pack(gd, tg, 70, 10, 22, 10);
2356
   evas_object_show(tg);
2357

2358
   lb = elm_label_add(win);
2359
   elm_object_text_set(lb, "Cursor position:");
2360
   evas_object_size_hint_weight_set(lb, 0.0, 0.0);
2361
   evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
2362
   elm_grid_pack(gd, lb, 70, 25, 25, 5);
2363
   evas_object_show(lb);
2364

2365
   sp = elm_spinner_add(win);
2366
   elm_spinner_label_format_set(sp, "%1.0f");
2367
   elm_spinner_step_set(sp, 1);
2368
   elm_spinner_wrap_set(sp, ELM_WRAP_CHAR);
2369
   elm_spinner_min_max_set(sp, 0, strlen(elm_object_text_get(en)));
2370
   evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, EVAS_HINT_FILL);
2371
   evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2372
   elm_grid_pack(gd, sp, 70, 30, 25, 10);
2373
   evas_object_smart_callback_add(en, "changed", en_changed_cb, sp);
2374
   evas_object_smart_callback_add(sp, "delay,changed", sp_changed_cb, en);
2375
   evas_object_show(sp);
2376

2377
   /* bottom entry group */
2378
   bg = elm_bg_add(win);
2379
   elm_bg_color_set(bg, 0, 255, 0);
2380
   elm_grid_pack(gd, bg, 10, 50, 45, 30);
2381
   evas_object_show(bg);
2382

2383
   en2 = elm_entry_add(win);
2384
   elm_entry_scrollable_set(en2, EINA_TRUE);
2385
   evas_object_size_hint_weight_set(en2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2386
   evas_object_size_hint_align_set(en2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2387
   elm_object_text_set(en2,
2388
                       "Item Provider"
2389
                       "<item size=50x50 vsize=full href=itemprovider></item>"
2390
                      );
2391
   elm_entry_item_provider_append(en2, item_provider, NULL);
2392
   elm_entry_context_menu_disabled_set(en2, EINA_TRUE);
2393
   elm_grid_pack(gd, en2, 10, 50, 45, 30);
2394
   evas_object_show(en2);
2395

2396
   tg = elm_check_add(win);
2397
   evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2398
   evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
2399
   elm_object_text_set(tg, "Disable Context Menu");
2400
   elm_check_state_set(tg, EINA_TRUE);
2401
   evas_object_smart_callback_add(tg, "changed", enable_changed_cb, en2);
2402
   elm_grid_pack(gd, tg, 55, 50, 40, 10);
2403
   evas_object_show(tg);
2404

2405
   bt = elm_button_add(win);
2406
   elm_object_text_set(bt, "Add Context Menu");
2407
   elm_grid_pack(gd, bt, 55, 60, 40, 10);
2408
   evas_object_smart_callback_add(bt, "clicked", add_bt_clicked, en2);
2409
   evas_object_show(bt);
2410

2411
   bt = elm_button_add(win);
2412
   elm_object_text_set(bt, "Clear Context Menu");
2413
   elm_grid_pack(gd, bt, 55, 70, 40, 10);
2414
   evas_object_smart_callback_add(bt, "clicked", clear_bt_clicked, en2);
2415
   evas_object_show(bt);
2416

2417
   bt = elm_button_add(win);
2418
   elm_object_text_set(bt, "Prepend Item Provider");
2419
   elm_grid_pack(gd, bt, 10, 80, 45, 10);
2420
   evas_object_smart_callback_add(bt, "clicked", prepend_bt_clicked, en2);
2421
   evas_object_show(bt);
2422

2423
   bt = elm_button_add(win);
2424
   elm_object_text_set(bt, "Remove Item Provider");
2425
   elm_grid_pack(gd, bt, 55, 80, 40, 10);
2426
   evas_object_smart_callback_add(bt, "clicked", remove_bt_clicked, en2);
2427
   evas_object_show(bt);
2428

2429
   evas_object_resize(win, 320 * elm_config_scale_get(),
2430
                           320 * elm_config_scale_get());
2431
   evas_object_show(win);
2432
}
2433

2434
static void
2435
filter_prepend_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2436
{
2437
   Evas_Object *en, *en2;
2438
   static Elm_Entry_Filter_Accept_Set digits_filter_data;
2439

2440
   en = (Evas_Object *)data;
2441
   en2 = evas_object_data_get(en, "filter-entry");
2442
   digits_filter_data.accepted = elm_object_text_get(en2);
2443
   digits_filter_data.rejected = NULL;
2444

2445
   elm_entry_markup_filter_append(en, elm_entry_filter_accept_set,
2446
                                  &digits_filter_data);
2447
   elm_object_text_set(en, "Markup Filter Prepend Test:");
2448
}
2449

2450
static void
2451
filter_remove_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2452
{
2453
   Evas_Object *en;
2454
   en = (Evas_Object *)data;
2455

2456
   elm_entry_markup_filter_remove(en, elm_entry_filter_accept_set, NULL);
2457
   elm_object_text_set(en, "Markup Filter Prepend Test:");
2458
}
2459

2460
static void
2461
icon_visible_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2462
{
2463
   Evas_Object *en;
2464
   en = (Evas_Object*)data;
2465

2466
   elm_entry_icon_visible_set(en, elm_check_state_get(obj));
2467
}
2468

2469
static void
2470
end_visible_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2471
{
2472
   Evas_Object *en;
2473
   en = (Evas_Object*)data;
2474

2475
   elm_entry_end_visible_set(en, elm_check_state_get(obj));
2476
}
2477

2478
static void
2479
horizontal_bounce_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2480
{
2481
   Evas_Object *en;
2482
   Eina_Bool vb;
2483
   Eina_Bool bounce = elm_check_state_get(obj);
2484
   en = (Evas_Object*)data;
2485

2486
   elm_scroller_bounce_get(en, NULL, &vb);
2487
   elm_scroller_bounce_set(en, bounce, bounce);
2488
}
2489

2490
static void
2491
vertical_bounce_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2492
{
2493
   Evas_Object *en;
2494
   Eina_Bool hb;
2495
   Eina_Bool bounce = elm_check_state_get(obj);
2496
   en = (Evas_Object*)data;
2497

2498
   elm_scroller_bounce_get(en, &hb, NULL);
2499
   elm_scroller_bounce_set(en, hb, bounce);
2500
}
2501

2502
void
2503
test_entry8(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2504
{
2505
   Evas_Object *win, *gd, *rect, *en, *lb;
2506
   Evas_Object *bt, *en2;
2507
   Evas_Object *ch, *en3;
2508
   Evas_Object *en4;
2509
   static Elm_Entry_Filter_Limit_Size limit_filter_data;
2510

2511
   win = elm_win_util_standard_add("entry8", "Entry 8");
2512
   elm_win_autodel_set(win, EINA_TRUE);
2513

2514
   gd = elm_grid_add(win);
2515
   elm_grid_size_set(gd, 100, 100);
2516
   evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2517
   elm_win_resize_object_add(win, gd);
2518
   evas_object_show(gd);
2519

2520
   rect = evas_object_rectangle_add(evas_object_evas_get(win));
2521
   elm_grid_pack(gd, rect, 5, 5, 90, 10);
2522
   evas_object_color_set(rect, 125, 125, 255, 255);
2523
   evas_object_show(rect);
2524

2525
   en = elm_entry_add(win);
2526
   elm_entry_scrollable_set(en, EINA_TRUE);
2527
   elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
2528
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2529
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
2530
   elm_object_text_set(en, "Markup Filter Prepend Test");
2531
   elm_grid_pack(gd, en, 5, 5, 90, 10);
2532
   evas_object_show(en);
2533

2534
   lb = elm_label_add(win);
2535
   elm_object_text_set(lb, "Markup Filter (20 Characters):");
2536
   evas_object_size_hint_weight_set(lb, 0.0, 0.0);
2537
   evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
2538
   elm_grid_pack(gd, lb, 5, 15, 50, 10);
2539
   evas_object_show(lb);
2540

2541
   rect = evas_object_rectangle_add(evas_object_evas_get(win));
2542
   elm_grid_pack(gd, rect, 55, 15, 40, 10);
2543
   evas_object_color_set(rect, 0, 125, 255, 255);
2544
   evas_object_show(rect);
2545

2546
   en2 = elm_entry_add(win);
2547
   elm_entry_scrollable_set(en2, EINA_TRUE);
2548
   elm_scroller_policy_set(en2, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
2549
   evas_object_size_hint_weight_set(en2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2550
   evas_object_size_hint_align_set(en2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2551
   limit_filter_data.max_char_count = 20;
2552
   limit_filter_data.max_byte_count = 0;
2553
   elm_entry_markup_filter_append(en2, elm_entry_filter_limit_size, &limit_filter_data);
2554
   evas_object_data_set(en, "filter-entry", en2);
2555
   evas_object_show(en2);
2556
   elm_grid_pack(gd, en2, 55, 15, 40, 10);
2557

2558
   bt = elm_button_add(win);
2559
   elm_object_text_set(bt, "Markup Filter Prepend");
2560
   elm_grid_pack(gd, bt, 5, 25, 45, 10);
2561
   evas_object_smart_callback_add(bt, "clicked", filter_prepend_bt_clicked, en);
2562
   evas_object_show(bt);
2563

2564
   bt = elm_button_add(win);
2565
   elm_object_text_set(bt, "Markup Filter Remove");
2566
   elm_grid_pack(gd, bt, 50, 25, 45, 10);
2567
   evas_object_smart_callback_add(bt, "clicked", filter_remove_bt_clicked, en);
2568
   evas_object_show(bt);
2569

2570
   en3 = elm_entry_add(win);
2571
   elm_entry_scrollable_set(en3, EINA_TRUE);
2572
   elm_scroller_policy_set(en3, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
2573
   elm_entry_single_line_set(en3, EINA_TRUE);
2574
   evas_object_size_hint_weight_set(en3, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2575
   evas_object_size_hint_align_set(en3, EVAS_HINT_FILL, EVAS_HINT_FILL);
2576
   evas_object_show(en3);
2577
   elm_grid_pack(gd, en3, 5, 35, 90, 20);
2578

2579
   bt = elm_icon_add(win);
2580
   elm_icon_standard_set(bt, "go-home");
2581
   evas_object_size_hint_min_set(bt, 48, 48);
2582
   evas_object_color_set(bt, 128, 0, 0, 128);
2583
   evas_object_show(bt);
2584
   elm_object_part_content_set(en3, "icon", bt);
2585

2586
   bt = elm_icon_add(win);
2587
   elm_icon_standard_set(bt, "delete");
2588
   evas_object_color_set(bt, 128, 0, 0, 128);
2589
   evas_object_size_hint_min_set(bt, 48, 48);
2590
   evas_object_show(bt);
2591
   elm_object_part_content_set(en3, "end", bt);
2592

2593
   ch = elm_check_add(win);
2594
   evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2595
   evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
2596
   elm_object_text_set(ch, "Icon Visible");
2597
   elm_check_state_set(ch, EINA_TRUE);
2598
   evas_object_smart_callback_add(ch, "changed", icon_visible_changed_cb, en3);
2599
   elm_grid_pack(gd, ch, 5, 55, 30, 10);
2600
   evas_object_show(ch);
2601

2602
   ch = elm_check_add(win);
2603
   evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2604
   evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
2605
   elm_object_text_set(ch, "End Visible");
2606
   elm_check_state_set(ch, EINA_TRUE);
2607
   evas_object_smart_callback_add(ch, "changed", end_visible_changed_cb, en3);
2608
   elm_grid_pack(gd, ch, 70, 55, 25, 10);
2609
   evas_object_show(ch);
2610

2611
   rect = evas_object_rectangle_add(evas_object_evas_get(win));
2612
   elm_grid_pack(gd, rect, 5, 65, 90, 20);
2613
   evas_object_color_set(rect, 255, 125, 125, 255);
2614
   evas_object_show(rect);
2615

2616
   en4 = elm_entry_add(win);
2617
   elm_object_part_text_set(en4, "guide", "Type in here");
2618
   elm_entry_scrollable_set(en4, EINA_TRUE);
2619
   elm_scroller_bounce_set(en4, EINA_TRUE, EINA_TRUE);
2620
   elm_entry_autocapital_type_set(en4, ELM_AUTOCAPITAL_TYPE_WORD);
2621
   evas_object_size_hint_weight_set(en4, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2622
   evas_object_size_hint_align_set(en4, EVAS_HINT_FILL, EVAS_HINT_FILL);
2623
   elm_grid_pack(gd, en4, 5, 65, 90, 20);
2624
   evas_object_show(en4);
2625

2626
   ch = elm_check_add(win);
2627
   evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2628
   evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
2629
   elm_object_text_set(ch, "Horizontal Bounce Set");
2630
   elm_check_state_set(ch, EINA_TRUE);
2631
   evas_object_smart_callback_add(ch, "changed", horizontal_bounce_changed_cb, en4);
2632
   elm_grid_pack(gd, ch, 5, 85, 45, 10);
2633
   evas_object_show(ch);
2634

2635
   ch = elm_check_add(win);
2636
   evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2637
   evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
2638
   elm_object_text_set(ch, "Vertical Bounce Set");
2639
   elm_check_state_set(ch, EINA_TRUE);
2640
   evas_object_smart_callback_add(ch, "changed", vertical_bounce_changed_cb, en4);
2641
   elm_grid_pack(gd, ch, 50, 85, 45, 10);
2642
   evas_object_show(ch);
2643

2644
   evas_object_resize(win, 320 * elm_config_scale_get(),
2645
                           320 * elm_config_scale_get());
2646
   evas_object_show(win);
2647
}
2648

2649
typedef struct {
2650
     Evas_Object *en_regex;
2651
     Evas_Object *lb_regex;
2652
     Evas_Object *en_single;
2653
     Evas_Object *en_multi;
2654
     Elm_Validator_Regexp *re;
2655
} _test_regex_data_t;
2656

2657
static void
2658
_test_regex_data_del(void *data,
2659
                     Evas *e EINA_UNUSED,
2660
                     Evas_Object *obj EINA_UNUSED,
2661
                     void *event_info EINA_UNUSED)
2662
{
2663
   _test_regex_data_t *test_data = data;
2664
   if (test_data->re) elm_validator_regexp_free(test_data->re);
2665
   free(test_data);
2666
}
2667

2668
static void
2669
_test_regex_bt_cb(void *data,
2670
                  Evas_Object *obj EINA_UNUSED,
2671
                  void *event_info EINA_UNUSED)
2672
{
2673
   int status;
2674
   _test_regex_data_t *test_data = data;
2675
   Eina_Strbuf *tmp;
2676

2677
   if (test_data->re)
2678
     {
2679
        efl_event_callback_del(test_data->en_single, ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, test_data->re);
2680
        efl_event_callback_del(test_data->en_multi, ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, test_data->re);
2681
        elm_validator_regexp_free(test_data->re);
2682
     }
2683
   test_data->re = elm_validator_regexp_new(elm_entry_entry_get(test_data->en_regex), NULL);
2684

2685
   status = elm_validator_regexp_status_get(test_data->re);
2686
   tmp = eina_strbuf_manage_new(strdup("Regex error: "));
2687
   switch (status)
2688
     {
2689
     case ELM_REG_NOERROR:
2690
          {
2691
             eina_strbuf_append(tmp, "No error. Regex maches to the Entrys text.");
2692
             break;
2693
          }
2694
     case ELM_REG_BADPAT:
2695
          {
2696
             eina_strbuf_append(tmp, "Invalid regular expression.");
2697
             break;
2698
          }
2699
     default:
2700
        break;
2701
     }
2702
   if (!status)
2703
     {
2704
        efl_event_callback_add(test_data->en_single, ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, test_data->re);
2705
        efl_event_callback_add(test_data->en_multi, ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, test_data->re);
2706
     }
2707

2708
   elm_object_text_set(test_data->lb_regex, eina_strbuf_string_get(tmp));
2709
   eina_strbuf_free(tmp);
2710
}
2711

2712
static inline Evas_Object *
2713
_test_regex_entry_add(Evas_Object *parent, Eina_Bool is_singleline)
2714
{
2715
   Evas_Object *entry = elm_entry_add(parent);
2716
   elm_entry_scrollable_set(entry, EINA_TRUE);
2717
   elm_entry_single_line_set(entry, is_singleline);
2718
   evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2719
   evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
2720
   elm_entry_editable_set(entry, EINA_TRUE);
2721
   evas_object_show(entry);
2722
   return entry;
2723
}
2724

2725
void
2726
test_entry_regex(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2727
{
2728
   Evas_Object *win, *scr, *box;
2729
   Evas_Object *item, *label, *bt, *sep;
2730
   _test_regex_data_t *test_data;
2731
#define REGEX "^[0-9]*$"
2732

2733
   test_data = malloc(sizeof(_test_regex_data_t));
2734

2735
   win = elm_win_util_standard_add("Entry", "Entry Regex Test");
2736
   elm_win_autodel_set(win, EINA_TRUE);
2737
   evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,
2738
                                  _test_regex_data_del, test_data);
2739

2740
   scr = elm_scroller_add(win);
2741
   elm_scroller_bounce_set(scr, EINA_FALSE, EINA_TRUE);
2742
   elm_scroller_policy_set(scr, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
2743
   evas_object_size_hint_weight_set(scr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2744
   elm_win_resize_object_add(win, scr);
2745
   evas_object_show(scr);
2746

2747
   box = elm_box_add(win);
2748
   evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2749
   elm_box_homogeneous_set(box, EINA_FALSE);
2750
   elm_object_content_set(scr, box);
2751

2752
   evas_object_show(box);
2753

2754
   label = elm_label_add(box);
2755
   elm_object_text_set(label, "Regular Expression");
2756
   elm_box_pack_end(box, label);
2757
   evas_object_show(label);
2758

2759
   item = elm_box_add(win);
2760
   evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2761
   evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
2762
   elm_box_horizontal_set(item, EINA_TRUE);
2763
   elm_box_homogeneous_set(item, EINA_FALSE);
2764
   evas_object_show(item);
2765
   elm_box_pack_end(box, item);
2766

2767
   test_data->en_regex =  _test_regex_entry_add(item, EINA_TRUE);
2768
   elm_box_pack_end(item, test_data->en_regex);
2769

2770
   bt = elm_button_add(item);
2771
   elm_object_text_set(bt, "Set");
2772
   evas_object_smart_callback_add(bt, "clicked", _test_regex_bt_cb, test_data);
2773
   evas_object_show(bt);
2774
   elm_box_pack_end(item, bt);
2775

2776
   test_data->lb_regex = elm_label_add(box);
2777
   elm_object_text_set(test_data->lb_regex, "Regex error: no error.");
2778
   elm_box_pack_end(box, test_data->lb_regex);
2779
   evas_object_show(test_data->lb_regex);
2780

2781
   sep = elm_separator_add(box);
2782
   elm_separator_horizontal_set(sep, EINA_TRUE);
2783
   evas_object_show(sep);
2784
   elm_box_pack_end(box, sep);
2785

2786
   label = elm_label_add(box);
2787
   elm_object_text_set(label, "Test regex in single line entry");
2788
   elm_box_pack_end(box, label);
2789
   evas_object_show(label);
2790

2791
   test_data->en_single =  _test_regex_entry_add(box, EINA_TRUE);
2792
   elm_box_pack_end(box, test_data->en_single);
2793

2794
   label = elm_label_add(box);
2795
   elm_object_text_set(label, "Test regex in multi line entry");
2796
   elm_box_pack_end(box, label);
2797
   evas_object_show(label);
2798

2799
   test_data->en_multi =  _test_regex_entry_add(box, EINA_FALSE);
2800
   elm_box_pack_end(box, test_data->en_multi);
2801

2802
   test_data->re = elm_validator_regexp_new(REGEX, NULL);
2803
   elm_entry_entry_set(test_data->en_regex, REGEX);
2804
   efl_event_callback_add(test_data->en_single, ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, test_data->re);
2805
   efl_event_callback_add(test_data->en_multi, ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, test_data->re);
2806

2807
   evas_object_resize(win, 400 * elm_config_scale_get(),
2808
                           400 * elm_config_scale_get());
2809
   evas_object_show(win);
2810

2811
#undef REGEX
2812
}
2813

2814
static void
2815
_scrolled_entry_clear(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2816
{
2817
   Evas_Object *en = data;
2818
   elm_object_text_set(en, "");
2819
}
2820

2821
static void
2822
_scrolled_entry_save(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2823
{
2824
   Evas_Object *en = data;
2825
   elm_entry_file_save(en);
2826
}
2827

2828
static void
2829
auto_save_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2830
{
2831
   Evas_Object *en;
2832
   en = (Evas_Object*)data;
2833

2834
   elm_entry_autosave_set(en, elm_check_state_get(obj));
2835
}
2836

2837
void
2838
test_entry_notepad(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2839
{
2840
   Evas_Object *win, *bx, *bx2, *bt, *np, *ch;
2841

2842
   win = elm_win_util_standard_add("entry-notepad", "Entry Notepad");
2843
   elm_win_autodel_set(win, EINA_TRUE);
2844

2845
   bx = elm_box_add(win);
2846
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2847
   elm_win_resize_object_add(win, bx);
2848
   evas_object_show(bx);
2849

2850
   np = elm_entry_add(win);
2851
   elm_entry_scrollable_set(np, EINA_TRUE);
2852
   elm_entry_file_set(np, "note.txt", ELM_TEXT_FORMAT_PLAIN_UTF8);
2853
   evas_object_size_hint_weight_set(np, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2854
   evas_object_size_hint_align_set(np, EVAS_HINT_FILL, EVAS_HINT_FILL);
2855
   elm_box_pack_end(bx, np);
2856
   evas_object_show(np);
2857

2858
   bx2 = elm_box_add(win);
2859
   elm_box_horizontal_set(bx2, EINA_TRUE);
2860
   elm_box_homogeneous_set(bx2, EINA_TRUE);
2861
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
2862
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2863

2864
   bt = elm_button_add(win);
2865
   elm_object_text_set(bt, "Clear");
2866
   evas_object_smart_callback_add(bt, "clicked", _scrolled_entry_clear, np);
2867
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2868
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2869
   elm_box_pack_end(bx2, bt);
2870
   evas_object_show(bt);
2871

2872
   bt = elm_button_add(win);
2873
   elm_object_text_set(bt, "Save");
2874
   evas_object_smart_callback_add(bt, "clicked", _scrolled_entry_save, np);
2875
   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2876
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2877
   elm_box_pack_end(bx2, bt);
2878
   evas_object_show(bt);
2879

2880
   ch = elm_check_add(win);
2881
   evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2882
   evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
2883
   elm_object_text_set(ch, "Auto Save");
2884
   elm_check_state_set(ch, EINA_FALSE);
2885
   evas_object_smart_callback_add(ch, "changed", auto_save_changed_cb, np);
2886
   elm_box_pack_end(bx2, ch);
2887
   evas_object_show(ch);
2888

2889
   elm_box_pack_end(bx, bx2);
2890
   evas_object_show(bx2);
2891

2892
   evas_object_resize(win, 320 * elm_config_scale_get(),
2893
                           300 * elm_config_scale_get());
2894

2895
   elm_object_focus_set(win, EINA_TRUE);
2896
   evas_object_show(win);
2897
}
2898

2899
void
2900
test_entry_emoticon(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
2901
                    void *event_info EINA_UNUSED)
2902
{
2903
   Evas_Object *win, *en;
2904

2905
   win = elm_win_util_standard_add("entry-emoticon", "Entry Emoticon");
2906
   elm_win_autodel_set(win, EINA_TRUE);
2907

2908
   en = elm_entry_add(win);
2909
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2910
   elm_win_resize_object_add(win, en);
2911
   elm_entry_scrollable_set(en, EINA_TRUE);
2912
   elm_object_text_set(en,
2913
                       "angry <item absize=64x64 vsize=ascent href=emoticon/angry></item> <br>"
2914
                       "angry-shout <item absize=64x64 vsize=ascent href=emoticon/angry-shout></item> <br>"
2915
                       "crazy-laugh <item absize=64x64 vsize=ascent href=emoticon/crazy-laugh></item> <br>"
2916
                       "evil-laugh <item absize=64x64 vsize=ascent href=emoticon/evil-laugh></item> <br>"
2917
                       "evil <item absize=64x64 vsize=ascent href=emoticon/evil></item> <br>"
2918
                       "goggle-smile <item absize=64x64 vsize=ascent href=emoticon/goggle-smile></item> <br>"
2919
                       "grumpy <item absize=64x64 vsize=ascent href=emoticon/grumpy></item> <br>"
2920
                       "guilty <item absize=64x64 vsize=ascent href=emoticon/guilty></item> <br>"
2921
                       "haha <item absize=64x64 vsize=ascent href=emoticon/haha></item> <br>"
2922
                       "happy-panting <item absize=64x64 vsize=ascent href=emoticon/happy-panting></item> <br>"
2923
                       "happy <item absize=64x64 vsize=ascent href=emoticon/happy></item> <br>"
2924
                       "indifferent <item absize=64x64 vsize=ascent href=emoticon/indifferent></item> <br>"
2925
                       "kiss <item absize=64x64 vsize=ascent href=emoticon/kiss></item> <br>"
2926
                       "knowing-grin <item absize=64x64 vsize=ascent href=emoticon/knowing-grin></item> <br>"
2927
                       "laugh <item absize=64x64 vsize=ascent href=emoticon/laugh></item> <br>"
2928
                       "little-bit-sorry <item absize=64x64 vsize=ascent href=emoticon/little-bit-sorry></item> <br>"
2929
                       "love-lots <item absize=64x64 vsize=ascent href=emoticon/love-lots></item> <br>"
2930
                       "love <item absize=64x64 vsize=ascent href=emoticon/love></item> <br>"
2931
                       "minimal-smile <item absize=64x64 vsize=ascent href=emoticon/minimal-smile></item> <br>"
2932
                       "not-happy <item absize=64x64 vsize=ascent href=emoticon/not-happy></item> <br>"
2933
                       "not-impressed <item absize=64x64 vsize=ascent href=emoticon/not-impressed></item> <br>"
2934
                       "omg <item absize=64x64 vsize=ascent href=emoticon/omg></item> <br>"
2935
                       "opensmile <item absize=64x64 vsize=ascent href=emoticon/opensmile></item> <br>"
2936
                       "smile <item absize=64x64 vsize=ascent href=emoticon/smile></item> <br>"
2937
                       "sorry <item absize=64x64 vsize=ascent href=emoticon/sorry></item> <br>"
2938
                       "squint-laugh <item absize=64x64 vsize=ascent href=emoticon/squint-laugh></item> <br>"
2939
                       "surprised <item absize=64x64 vsize=ascent href=emoticon/surprised></item> <br>"
2940
                       "suspicious <item absize=64x64 vsize=ascent href=emoticon/suspicious></item> <br>"
2941
                       "tongue-dangling <item absize=64x64 vsize=ascent href=emoticon/tongue-dangling></item> <br>"
2942
                       "tongue-poke <item absize=64x64 vsize=ascent href=emoticon/tongue-poke></item> <br>"
2943
                       "uh <item absize=64x64 vsize=ascent href=emoticon/uh></item> <br>"
2944
                       "unhappy <item absize=64x64 vsize=ascent href=emoticon/unhappy></item> <br>"
2945
                       "very-sorry <item absize=64x64 vsize=ascent href=emoticon/very-sorry></item> <br>"
2946
                       "what <item absize=64x64 vsize=ascent href=emoticon/what></item> <br>"
2947
                       "wink <item absize=64x64 vsize=ascent href=emoticon/wink></item> <br>"
2948
                       "worried <item absize=64x64 vsize=ascent href=emoticon/worried></item> <br>"
2949
                       "wtf <item absize=64x64 vsize=ascent href=emoticon/wtf></item> <br>"
2950
                      );
2951
   evas_object_show(en);
2952
   elm_object_focus_set(en, EINA_TRUE);
2953

2954
   evas_object_resize(win, 400 * elm_config_scale_get(),
2955
                           500 * elm_config_scale_get());
2956
   evas_object_show(win);
2957
}
2958

2959
static void
2960
password_entry_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
2961
{
2962
   printf("Password : %s\n", elm_entry_entry_get(obj));
2963
}
2964

2965
static void
2966
show_password_check_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
2967
{
2968
   Evas_Object *en = (Evas_Object *)data;
2969
   Eina_Bool state = elm_check_state_get(obj);
2970

2971
   if (state)
2972
     {
2973
        printf(" * Show Password...\n");
2974
        elm_object_text_set(obj, "Hide Password");
2975
        elm_entry_password_set(en, EINA_FALSE);
2976
     }
2977
   else
2978
     {
2979
        printf(" * Hide Password...\n");
2980
        elm_object_text_set(obj, "Show Password");
2981
        elm_entry_password_set(en, EINA_TRUE);
2982
     }
2983
}
2984

2985
void
2986
test_entry_password(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
2987
{
2988
   Evas_Object *win, *bx, *en, *ck;
2989

2990
   edje_password_show_last_set(EINA_TRUE);
2991
   edje_password_show_last_timeout_set(-1);
2992

2993
   win = elm_win_util_standard_add("entry", "Entry");
2994
   elm_win_autodel_set(win, EINA_TRUE);
2995

2996
   bx = elm_box_add(win);
2997
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2998
   elm_win_resize_object_add(win, bx);
2999
   evas_object_show(bx);
3000

3001
   en = elm_entry_add(bx);
3002
   elm_entry_single_line_set(en, EINA_TRUE);
3003
   elm_entry_scrollable_set(en, EINA_TRUE);
3004
   elm_entry_password_set(en, EINA_TRUE);
3005
   elm_object_part_text_set(en, "elm.guide", "Enter Your Password");
3006
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3007
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
3008
   elm_box_pack_end(bx, en);
3009
   evas_object_show(en);
3010

3011
   evas_object_smart_callback_add(en, "changed", password_entry_changed_cb, NULL);
3012

3013
   ck = elm_check_add(bx);
3014
   elm_object_text_set(ck, "Show Password");
3015
   evas_object_smart_callback_add(ck, "changed", show_password_check_changed_cb, en);
3016
   elm_box_pack_end(bx, ck);
3017
   evas_object_show(ck);
3018

3019
   evas_object_resize(win, 300 * elm_config_scale_get(),
3020
                           100 * elm_config_scale_get());
3021
   evas_object_show(win);
3022
}
3023

3024

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.