PREFIX value ml_elm_hoversel_item_add( value v_obj, value v_label, value v_icon, value v_func, value v_unit) { const char* label; if(v_label == Val_int(0)) label = NULL; else label = String_val(Field(v_label, 0)); const char* icon_file; Elm_Icon_Type icon_type; if(v_icon == Val_int(0)) { icon_file = NULL; icon_type = 0; } else { value v = Field(v_icon, 0); icon_file = String_val(Field(v, 0)); icon_type = Elm_Icon_Type_val(Field(v, 1)); } Evas_Smart_Cb func; value* data; if(v_func == Val_int(0)) { func = NULL; data = NULL; } else { func = ml_Evas_Smart_Cb; data = ml_register_value(Field(v_func, 0)); } Elm_Object_Item* item = elm_hoversel_item_add((Evas_Object*) v_obj, label, icon_file, icon_type, func, data); if(item == NULL) { if(data != NULL) ml_remove_value(data); caml_failwith("elm_hoversel_item_add"); } if(data != NULL) elm_object_item_del_cb_set(item, ml_Evas_Smart_Cb_on_del); return (value) item; }
Tab_Data * tab_add(App_Data *ad) { Tab_Data *td; td = calloc(1, sizeof(Tab_Data)); if (!td) return NULL; td->web = elm_web_add(ad->win); elm_web_window_create_hook_set(td->web, _web_create_window_cb, ad); elm_web_inwin_mode_set(td->web, EINA_TRUE); evas_object_size_hint_weight_set(td->web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(td->web, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_naviframe_item_simple_push(ad->naviframe, td->web); td->app = ad; td->tab = elm_toolbar_item_append(td->app->tabs, NULL, "New tab", _tab_clicked_cb, td); elm_object_item_del_cb_set(td->tab, _tb_item_del_cb); evas_object_data_set(td->web, "tab_data", td); evas_object_smart_callback_add(td->web, "title,changed", _title_changed_cb, td); evas_object_smart_callback_add(td->web, "uri,changed", _uri_changed_cb, td); evas_object_event_callback_add(td->web, EVAS_CALLBACK_FREE, _web_free_cb, td); elm_toolbar_item_selected_set(td->tab, EINA_TRUE); return td; }
static void _add_item(void *data, Evas_Object *obj, void *event_info) { static int num = 0; char *str = malloc(sizeof(char) * 10); Elm_Object_Item *hoversel_it; snprintf(str, 10, "item %d", ++num); hoversel_it = elm_hoversel_item_add(obj, str, NULL, ELM_ICON_NONE, NULL, str); elm_object_item_del_cb_set(hoversel_it, _free); }
static void _add_data_cb(void *data, Evas_Object *obj, void *event_info) { Elm_Object_Item *list_it; Evas_Object *li = data; char label[32]; char *content = malloc(sizeof(char) * 32); snprintf(content, 32, "Item content %i", counter); snprintf(label, sizeof(label), "Item %i", counter++); list_it = elm_list_item_append(li, label, NULL, NULL, _sel_data_cb, content); if (!list_it) { printf("Error adding item\n"); return; } elm_object_item_del_cb_set(list_it, _free_data); }