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