1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5
6 static void
my_entry_anchor_bt(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)7 my_entry_anchor_bt(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
8 {
9 Evas_Object *av = data;
10 elm_entry_anchor_hover_end(av);
11 }
12
13 static void
_anchor_clicked_cb(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info)14 _anchor_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
15 {
16 Elm_Entry_Anchor_Info *ev = event_info;
17 printf("anchor click %d: '%s' (%d, %d)\n", ev->button, ev->name, ev->x, ev->y);
18 }
19
20 static void
_anchor_hover_opened_cb(void * data,Evas_Object * obj,void * event_info)21 _anchor_hover_opened_cb(void *data, Evas_Object *obj, void *event_info)
22 {
23 Evas_Object *av = data;
24 Elm_Entry_Anchor_Hover_Info *ei = event_info;
25 Evas_Object *bt, *bx;
26
27 bt = elm_button_add(obj);
28 elm_object_text_set(bt, ei->anchor_info->name);
29 elm_object_part_content_set(ei->hover, "middle", bt);
30 evas_object_show(bt);
31
32 // hints as to where we probably should put hover contents (buttons etc.).
33 if (ei->hover_top)
34 {
35 bx = elm_box_add(obj);
36 bt = elm_button_add(obj);
37 elm_object_text_set(bt, "Top 1");
38 elm_box_pack_end(bx, bt);
39 evas_object_smart_callback_add(bt, "clicked", my_entry_anchor_bt, av);
40 evas_object_show(bt);
41 bt = elm_button_add(obj);
42 elm_object_text_set(bt, "Top 2");
43 elm_box_pack_end(bx, bt);
44 evas_object_smart_callback_add(bt, "clicked", my_entry_anchor_bt, av);
45 evas_object_show(bt);
46 bt = elm_button_add(obj);
47 elm_object_text_set(bt, "Top 3");
48 elm_box_pack_end(bx, bt);
49 evas_object_smart_callback_add(bt, "clicked", my_entry_anchor_bt, av);
50 evas_object_show(bt);
51 elm_object_part_content_set(ei->hover, "top", bx);
52 evas_object_show(bx);
53 }
54 if (ei->hover_bottom)
55 {
56 bt = elm_button_add(obj);
57 elm_object_text_set(bt, "Bot");
58 elm_object_part_content_set(ei->hover, "bottom", bt);
59 evas_object_smart_callback_add(bt, "clicked", my_entry_anchor_bt, av);
60 evas_object_show(bt);
61 }
62 if (ei->hover_left)
63 {
64 bt = elm_button_add(obj);
65 elm_object_text_set(bt, "Left");
66 elm_object_part_content_set(ei->hover, "left", bt);
67 evas_object_smart_callback_add(bt, "clicked", my_entry_anchor_bt, av);
68 evas_object_show(bt);
69 }
70 if (ei->hover_right)
71 {
72 bt = elm_button_add(obj);
73 elm_object_text_set(bt, "Right");
74 elm_object_part_content_set(ei->hover, "right", bt);
75 evas_object_smart_callback_add(bt, "clicked", my_entry_anchor_bt, av);
76 evas_object_show(bt);
77 }
78 }
79
80 void
test_entry_anchor2(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)81 test_entry_anchor2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
82 {
83 Evas_Object *win, *en;
84
85 win = elm_win_util_standard_add("entry_anchor2", "Entry Anchor 2");
86 elm_win_autodel_set(win, EINA_TRUE);
87
88 en = elm_entry_add(win);
89 elm_entry_anchor_hover_style_set(en, "popout");
90 elm_entry_anchor_hover_parent_set(en, win);
91 elm_object_text_set(en,
92 "This is an entry widget in this window that<br/>"
93 "uses markup <b>like this</> for styling and<br/>"
94 "formatting <em>like this</>, as well as<br/>"
95 "<a href=X><link>links in the text</></a>, so enter text<br/>"
96 "in here to edit it. By the way, links are<br/>"
97 "called <a href=anc-02>Anchors</a> so you will need<br/>"
98 "to refer to them this way. <item relsize=16x16 vsize=full href=emoticon/guilty-smile></item>");
99 evas_object_smart_callback_add(en, "anchor,hover,opened", _anchor_hover_opened_cb, en);
100 evas_object_smart_callback_add(en, "anchor,clicked", _anchor_clicked_cb, en);
101 evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
102 elm_win_resize_object_add(win, en);
103 evas_object_show(en);
104
105 evas_object_resize(win, 320, 300);
106
107 elm_object_focus_set(win, EINA_TRUE);
108 evas_object_show(win);
109 }
110