1 #include <Elementary.h>
2 #include "elm_module_priv.h"
5 Elm_Entry_Extension_data *ext_mod;
6 typedef struct _Elm_Entry_Context_Menu_Item Elm_Entry_Context_Menu_Item;
7 struct _Elm_Entry_Context_Menu_Item
11 const char *icon_file;
12 const char *icon_group;
13 Elm_Icon_Type icon_type;
20 _select(void *data, Evas_Object *obj, void *event_info)
22 ext_mod->select(data,obj,event_info);
23 evas_object_hide(ext_mod->popup);
27 _paste(void *data, Evas_Object *obj, void *event_info)
29 ext_mod->paste(data,obj,event_info);
30 evas_object_hide(ext_mod->popup);
34 _cut(void *data, Evas_Object *obj, void *event_info)
36 ext_mod->cut(data,obj,event_info);
37 evas_object_hide(ext_mod->popup);
41 _copy(void *data, Evas_Object *obj, void *event_info)
43 ext_mod->copy(data,obj,event_info);
44 evas_object_hide(ext_mod->popup);
48 _cancel(void *data, Evas_Object *obj, void *event_info)
50 ext_mod->cancel(data,obj,event_info);
51 evas_object_hide(ext_mod->popup);
55 _clipboard_menu(void *data, Evas_Object *obj, void *event_info)
58 #ifdef HAVE_ELEMENTARY_X
59 ecore_x_selection_secondary_set(elm_win_xwindow_get(obj), "",1);
61 ext_mod->cnpinit(data,obj,event_info);
62 elm_cbhm_helper_init(obj);
63 if (ext_mod->textonly)
64 elm_cbhm_send_raw_data("show0");
66 elm_cbhm_send_raw_data("show1");
67 evas_object_hide(ext_mod->popup);
72 _item_clicked(void *data, Evas_Object *obj, void *event_info)
74 Elm_Entry_Context_Menu_Item *it = data;
75 Evas_Object *obj2 = it->obj;
77 if (it->func) it->func(it->data, obj2, NULL);
78 evas_object_hide(ext_mod->popup);
81 // module api funcs needed
83 elm_modapi_init(void *m)
85 return 1; // succeed always
89 elm_modapi_shutdown(void *m)
91 return 1; // succeed always
94 // module fucns for the specific module type
96 obj_hook(Evas_Object *obj)
100 ext_mod = ELM_NEW(Elm_Entry_Extension_data);
101 elm_entry_extension_module_data_get(obj,ext_mod);
106 obj_unhook(Evas_Object *obj)
116 obj_longpress(Evas_Object *obj)
123 const Elm_Entry_Context_Menu_Item *it;
125 elm_entry_extension_module_data_get(obj,ext_mod);
126 if (ext_mod->context_menu)
128 if (ext_mod->popup) evas_object_del(ext_mod->popup);
129 else elm_widget_scroll_freeze_push(obj);
130 top = elm_widget_top_get(obj);
132 ext_mod->popup = elm_popup_add(top);
133 elm_object_style_set(ext_mod->popup,"menustyle");
134 elm_popup_mode_set(ext_mod->popup, ELM_POPUP_TYPE_ALERT);
135 elm_popup_title_label_set(ext_mod->popup,"CopyPaste");
136 list = elm_list_add(ext_mod->popup);
137 elm_object_style_set(list,"popup");
138 elm_list_mode_set(list, ELM_LIST_COMPRESS);
139 elm_widget_sub_object_add(obj, ext_mod->popup);
140 if (!ext_mod->selmode)
142 if (!ext_mod->password)
143 elm_list_item_append(list, "Select", NULL, NULL,_select, obj);
144 if (1) // need way to detect if someone has a selection
146 if (ext_mod->editable)
147 elm_list_item_append(list, "Paste", NULL, NULL,_paste, obj);
149 // elm_ctxpopup_item_add(wd->ctxpopup, NULL, "Selectall",_select_all, obj );
151 if ((!ext_mod->password) && (ext_mod->editable))
152 elm_list_item_append(list, "More", NULL, NULL,_clipboard_menu, obj);
157 if (!ext_mod->password)
159 if (ext_mod->have_selection)
161 elm_list_item_append(list, "Copy", NULL, NULL,_copy, obj);
162 if (ext_mod->editable)
163 elm_list_item_append(list, "Cut", NULL, NULL,_cut, obj);
167 _cancel(obj,ext_mod->popup,NULL);
168 elm_list_item_append(list, "Select", NULL, NULL,_select, obj);
169 if (1) // need way to detect if someone has a selection
171 if (ext_mod->editable)
172 elm_list_item_append(list, "Paste", NULL, NULL,_paste, obj);
176 if (ext_mod->editable)
177 elm_list_item_append(list, "More", NULL, NULL,_clipboard_menu, obj);
181 EINA_LIST_FOREACH(ext_mod->items, l, it)
183 elm_list_item_append(list, it->label,NULL,NULL, _item_clicked, it);
188 elm_popup_content_set(ext_mod->popup, list);
189 evas_object_show(ext_mod->popup);
190 evas_render( evas_object_evas_get( ext_mod->popup ) );
193 ext_mod->longpress_timer = NULL;
197 obj_mouseup(Evas_Object *obj)
200 elm_entry_extension_module_data_get(obj,ext_mod);
201 if (ext_mod->longpress_timer)
203 if (ext_mod->have_selection )
205 _cancel(obj,ext_mod->popup,NULL);