void setup(void) { Evas_Coord pw; int ex, ey, ew, eh; Evas_Coord width, height; char msg[] = "The Etox Test utility consists in a series " "of test suites designed to exercise all of " "the etox functions.\n" "Informational messages will be displayed here, " "the test text will be presented in the colored " "rectangle below.\n" "To start a test suite, select it from the " "navigation panel on the left.\n"; /* Create interface */ /* Background */ o_bg = evas_object_image_add(evas); evas_object_image_file_set(o_bg, IM "bg.png", IM "bg.png"); evas_object_resize(o_bg, win_w, win_h); evas_object_image_fill_set(o_bg, 0, 0, win_w, win_h); evas_object_move(o_bg, 0, 0); evas_object_layer_set(o_bg, 0); evas_object_show(o_bg); /* Panel */ setup_panel(evas); evas_object_geometry_get(o_panel, NULL, NULL, &pw, NULL); ey = win_h / 2; ew = win_w - pw - 20; eh = ey - 10; ex = pw + 10; ey += 10; /* Create message etox */ e_msg = etox_new_all(evas, ex, 10, ew, eh , 255, ETOX_ALIGN_LEFT); etox_context_set_align(etox_get_context(e_msg), ETOX_ALIGN_LEFT); etox_context_set_font(etox_get_context(e_msg), "sinon", 14); etox_context_set_style(etox_get_context(e_msg), "shadow"); etox_context_set_color(etox_get_context(e_msg), 225, 225, 225, 255); etox_set_soft_wrap(e_msg, 1); etox_set_text(e_msg, msg); etox_set_alpha(e_msg, 255); evas_object_layer_set(e_msg, 1000); evas_object_show(e_msg); /* Setup test etox */ /* Setup test etox background */ o_bg_etox = evas_object_rectangle_add(evas); evas_object_move(o_bg_etox, ex, ey); evas_object_resize(o_bg_etox, ew, eh); evas_object_color_set(o_bg_etox, 0, 100, 100, 100); evas_object_layer_set(o_bg_etox, 100); evas_object_show(o_bg_etox); /* Clip rectangle for bounding where the test text is drawn */ clip_test = evas_object_rectangle_add(evas); evas_object_move(clip_test, ex, ey); evas_object_resize(clip_test, ew, eh); evas_object_show(clip_test); /* Create test etox */ e_test = etox_new_all(evas, ex, ey, ew, eh, 255, ETOX_ALIGN_CENTER); etox_context_set_font(etox_get_context(e_test), "sinon", 14); etox_context_set_style(etox_get_context(e_test), "plain"); etox_context_set_color(etox_get_context(e_test), 225, 225, 225, 255); etox_set_text(e_test, ""); evas_object_clip_set(e_test, clip_test); etox_set_alpha(e_test, 255); evas_object_layer_set(e_test, 1000); /* * Create the next test button */ o_next_box = evas_object_image_add(evas); evas_object_image_file_set(o_next_box, IM "panel_button1.png", IM "panel_button1.png"); evas_object_image_border_set(o_next_box, 3, 3, 3, 3); evas_object_layer_set(o_next_box, 1000); evas_object_hide(o_next_box); o_txt_next_box = evas_object_text_add(evas); evas_object_text_font_set(o_txt_next_box, "andover", 24); evas_object_text_text_set(o_txt_next_box, "Next"); evas_object_color_set(o_txt_next_box, 0, 0, 0, 160); evas_object_layer_set(o_txt_next_box, 1000); evas_object_move(o_next_box, 516, 150); evas_object_move(o_txt_next_box, 519, 152); width = evas_object_text_horiz_advance_get(o_txt_next_box); height = evas_object_text_vert_advance_get(o_txt_next_box); width += 10; height += 5; evas_object_resize(o_next_box, width, height); evas_object_image_fill_set(o_next_box, 0, 0, width, height); evas_object_hide(o_txt_next_box); evas_object_event_callback_add(o_txt_next_box, EVAS_CALLBACK_MOUSE_DOWN, next_test, NULL); /* * Create the previous test button */ o_prev_box = evas_object_image_add(evas); evas_object_image_file_set(o_prev_box, IM "panel_button1.png", IM "panel_button1.png"); evas_object_image_border_set(o_prev_box, 3, 3, 3, 3); evas_object_layer_set(o_prev_box, 1000); evas_object_hide(o_prev_box); o_txt_prev_box = evas_object_text_add(evas); evas_object_text_font_set(o_txt_prev_box, "andover", 24); evas_object_text_text_set(o_txt_prev_box, "Previous"); evas_object_color_set(o_txt_prev_box, 0, 0, 0, 160); evas_object_layer_set(o_txt_prev_box, 1000); evas_object_move(o_prev_box, 416, 150); evas_object_move(o_txt_prev_box, 419, 152); width = evas_object_text_horiz_advance_get(o_txt_prev_box); height = evas_object_text_vert_advance_get(o_txt_prev_box); width += 10; height += 5; evas_object_resize(o_prev_box, width, height); evas_object_image_fill_set(o_prev_box, 0, 0, width, height); evas_object_hide(o_txt_prev_box); evas_object_event_callback_add(o_txt_prev_box, EVAS_CALLBACK_MOUSE_DOWN, prev_test, NULL); }
//Create a new menu item of type "item_type" //This item will be automatically freed by calling eclair_menu_free on the parent menu //Return NULL if failed Eclair_Menu_Item *eclair_menu_item_new(const char *label, Eclair_Menu *parent, Eclair_Menu_Item_Type item_type, const char *icon_path) { Eclair_Menu_Item *item; int result; if (!parent) return NULL; item = calloc(1, sizeof(Eclair_Menu_Item)); item->type = item_type; //We load the edje object of the item item->edje_object = edje_object_add(parent->evas); if (item->type == ECLAIR_MENU_ITEM_SEPARATOR_ITEM) result = edje_object_file_set(item->edje_object, ECLAIR_WIDGETS_THEME, "eclair_menu_separator"); else result = edje_object_file_set(item->edje_object, ECLAIR_WIDGETS_THEME, "eclair_menu_item"); if (!result) { evas_object_del(item->edje_object); item->edje_object = NULL; return 0; } evas_object_event_callback_add(item->edje_object, EVAS_CALLBACK_MOUSE_IN, _eclair_menu_item_in_cb, item); evas_object_event_callback_add(item->edje_object, EVAS_CALLBACK_MOUSE_OUT, _eclair_menu_item_out_cb, item); evas_object_event_callback_add(item->edje_object, EVAS_CALLBACK_MOUSE_UP, _eclair_menu_item_up_cb, item); evas_object_show(item->edje_object); //We load the icon if (item->type == ECLAIR_MENU_ITEM_ICON_ITEM) { char *icon_size_str; int icon_size; item->icon_object = evas_object_image_add(parent->evas); evas_object_image_file_set(item->icon_object, icon_path, NULL); if (evas_object_image_load_error_get(item->icon_object)) { evas_object_del(item->icon_object); item->icon_object = NULL; item->type = ECLAIR_MENU_ITEM_NORMAL_ITEM; } else { if ((icon_size_str = edje_file_data_get(ECLAIR_WIDGETS_THEME, "icon_size"))) { icon_size = atoi(icon_size_str); evas_object_image_fill_set(item->icon_object, 0, 0, icon_size, icon_size); free(icon_size_str); } else evas_object_image_fill_set(item->icon_object, 0, 0, 16, 16); edje_object_part_swallow(item->edje_object, "icon", item->icon_object); evas_object_pass_events_set(item->icon_object, 1); evas_object_show(item->edje_object); } } eclair_menu_append_item(parent, item); if (item->type != ECLAIR_MENU_ITEM_SEPARATOR_ITEM) eclair_menu_item_label_set(item, label); return item; }
static void _create_view_layout(Evas_Object *parent, char *layout_file, char *index_style, char it_style[][20], Eina_Bool even_num) { Evas_Object *layout, *scroller, *box, *left_right_rect, *img, *page_layout, *index; Elm_Object_Item *nf_it; char img_path[PATH_MAX]; int i, max_items; page_data *pd = (page_data *)calloc(1, sizeof(page_data)); /* Create Layout */ layout = elm_layout_add(parent); elm_layout_file_set(layout, ELM_DEMO_EDJ, layout_file); evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(layout); evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _layout_del_cb, pd); pd->main_layout = layout; /* Create Scroller */ scroller = elm_scroller_add(layout); elm_scroller_loop_set(scroller, EINA_FALSE, EINA_FALSE); evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); elm_scroller_page_scroll_limit_set(scroller, 1, 0); elm_object_scroll_lock_y_set(scroller, EINA_TRUE); elm_object_part_content_set(layout, "scroller", scroller); evas_object_show(scroller); evas_object_smart_callback_add(scroller, "scroll", _scroll, pd); pd->scroller = scroller; /* Create Box */ box = elm_box_add(scroller); elm_box_horizontal_set(box, EINA_TRUE); elm_object_content_set(scroller, box); evas_object_show(box); pd->box = box; /* Create Rect object for page_layout center align in Box */ left_right_rect = evas_object_rectangle_add(evas_object_evas_get(box)); elm_box_pack_end(box, left_right_rect); /* Create Pages */ if (even_num) max_items = NUM_INDEX_CIRCLE_EVEN; else max_items = NUM_ITEMS; for (i = 0; i < max_items; ++i) { page_layout = elm_layout_add(box); pd->page_layout[i] = page_layout; evas_object_size_hint_weight_set(page_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(page_layout, 0, EVAS_HINT_FILL); elm_layout_theme_set(page_layout, "layout", "body_thumbnail", "default"); evas_object_show(page_layout); img = elm_image_add(page_layout); snprintf(img_path, sizeof(img_path), "%s/100_%d.jpg", ICON_DIR, (i % 6) + 1); elm_image_file_set(img, img_path, NULL); elm_object_part_content_set(page_layout, "elm.icon", img); /* Make unselect state all of the pages except first one */ if (i) elm_object_signal_emit(page_layout, "elm,state,thumbnail,unselect", "elm"); elm_box_pack_end(box, page_layout); } /*Add resize callback for get a actual size of layout and main layout */ evas_object_event_callback_add(pd->page_layout[0], EVAS_CALLBACK_RESIZE, _layout_resize_cb, pd); elm_box_pack_end(box, left_right_rect); pd->left_right_rect = left_right_rect; /* Add animator for page transfer effect */ ecore_animator_add(animator_cb, pd); /* Create Index */ index = elm_index_add(layout); elm_object_style_set(index, index_style); evas_object_size_hint_weight_set(index, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(index, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_index_horizontal_set(index, EINA_TRUE); elm_index_autohide_disabled_set(index, EINA_TRUE); elm_object_part_content_set(layout, "controller", index); for (i = 0; i < max_items; ++i) { pd->it[i] = elm_index_item_append(index, NULL, NULL, (void *) i); if (it_style) elm_object_item_style_set(pd->it[i], it_style[i]); } pd->min_page = 0; pd->max_page = max_items - 1; elm_index_level_go(index, 0); elm_index_item_selected_set(pd->it[0], EINA_TRUE); pd->cur_page = 0; pd->index = index; pd->last_it = pd->it[0]; evas_object_event_callback_add(index, EVAS_CALLBACK_MOUSE_DOWN, _on_index_mouse_down_cb, pd); evas_object_event_callback_add(index, EVAS_CALLBACK_MOUSE_MOVE, _on_index_mouse_move_cb, pd); evas_object_event_callback_add(index, EVAS_CALLBACK_MOUSE_UP, _on_index_mouse_up_cb, pd); nf_it = elm_naviframe_item_push(parent, NULL, NULL, NULL, layout, NULL); elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE); }
ScreenSuspendView::ScreenSuspendView(Evas *_e, Evas_Object *p): EdjeObject(ApplicationMain::getTheme(), _e), parent(p) { evas_object_data_set(edje, "ScreenSuspendView", this); try { LoadEdje("calaos/screen_suspend"); } catch(exception const& e) { Utils::logger("root") << Priority::CRIT << "ScreenSuspendView: Can't load edje" << log4cpp::eol; throw; } Move(0, 0); setLayer(5000); evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE, _window_resize_cb, this); object_signal.connect(sigc::mem_fun(*this, &ScreenSuspendView::edjeCallback)); ScreenManager::instance().wakeup_screen.connect([=]() { EmitSignal("now,wakeup", "calaos"); EmitSignal("event,repeat,activate", "calaos"); is_during_wakeup = false; }); ScreenManager::instance().wakeup_screen_start.connect([=]() { if(is_during_wakeup) return; EmitSignal("start,wakeup", "calaos"); is_during_wakeup = true; if(Utils::get_config_option("dpms_block") == "true") { //TODO, use a pin code instead of the full password here //and show a PIN code keyboard only with numbers // ApplicationMain::Instance().ShowKeyboard( // _("Locked screen, please enter your password to unlock."), // sigc::mem_fun(*this, &ScreenSuspendView::keyboardCallback), // false // ); } }); ScreenManager::instance().suspend_screen.connect([=]() { //TOFIX //ApplicationMain::Instance().ForceCloseKeyboard(); }); ScreenManager::instance().suspend_screen_start.connect([=]() { EmitSignal("event,repeat,deactivate", "calaos"); EmitSignal("start,suspend", "calaos"); is_during_suspend = true; }); }
Evas_Object * e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int vertical, int fixed) { Evas_Object *obj, *o; E_Widget_Data *wd; Evas_Coord mw, mh; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); e_widget_focus_hook_set(obj, _e_wid_focus_hook); e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); e_widget_data_set(obj, wd); evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _e_wid_resize, wd); wd->vertical = vertical; wd->fixed = fixed; wd->mode = mode; wd->color = color; wd->prev = calloc(1, sizeof (E_Color)); wd->o_hgrad = NULL; o = edje_object_add(evas); wd->o_cslider = o; e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/cslider"); if (wd->vertical) edje_object_signal_emit(o, "e,state,direction,v", "e"); else edje_object_signal_emit(o, "e,state,direction,h", "e"); evas_object_show(o); edje_object_size_min_calc(o, &mw, &mh); e_widget_size_min_set(obj, mw, mh); edje_object_signal_callback_add(wd->o_cslider, "drag,start", "*", _e_wid_cb_drag_start, obj); edje_object_signal_callback_add(wd->o_cslider, "drag", "*", _e_wid_cb_drag, obj); edje_object_signal_callback_add(wd->o_cslider, "drag,stop", "*", _e_wid_cb_drag_stop, obj); e_widget_sub_object_add(obj, o); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_focus_steal, obj); e_widget_resize_object_set(obj, o); /* add gradient obj */ o = evas_object_rectangle_add(evas); e_widget_sub_object_add(obj, o); /* evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_cb_down, obj); */ /* evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_wid_cb_move, obj); */ /* evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_wid_cb_up, obj); */ evas_object_color_set(o, 255, 255, 255, 255); wd->o_grad = o; edje_object_part_swallow(wd->o_cslider, "e.swallow.content", o); o = evas_object_rectangle_add(evas); e_widget_sub_object_add(obj, o); evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, _e_wid_move, wd); evas_object_show(o); evas_object_color_set(o, 0, 0, 0, 0); wd->o_event = o; _e_wid_update(wd); return obj; }
E_Win * e_int_config_imc_import(E_Config_Dialog *parent) { Evas *evas; E_Win *win; Evas_Object *o, *ofm; Import *import; E_Config_Dialog_Data *cfdata; Evas_Modifier_Mask mask; Evas_Coord w, h; Eina_Bool kg; import = E_NEW(Import, 1); if (!import) return NULL; win = e_win_new(parent->con); if (!win) { E_FREE(import); return NULL; } evas = e_win_evas_get(win); cfdata = E_NEW(E_Config_Dialog_Data, 1); import->cfdata = cfdata; import->win = win; import->parent = parent; e_win_title_set(win, _("Select an Input Method Settings...")); e_win_delete_callback_set(win, _imc_import_cb_delete); e_win_resize_callback_set(win, _imc_import_cb_resize); e_win_dialog_set(win, 1); e_win_name_class_set(win, "E", "_imc_import_dialog"); o = edje_object_add(evas); import->bg_obj = o; e_theme_edje_object_set(o, "base/theme/dialog", "e/widgets/dialog/main"); evas_object_move(o, 0, 0); evas_object_show(o); o = e_widget_list_add(evas, 1, 1); e_widget_on_focus_hook_set(o, _imc_import_cb_wid_focus, import); import->box_obj = o; edje_object_part_swallow(import->bg_obj, "e.swallow.buttons", o); o = evas_object_rectangle_add(evas); import->event_obj = o; mask = 0; kg = evas_object_key_grab(o, "Tab", mask, ~mask, 0); if (!kg) fprintf(stderr, "ERROR: unable to redirect \"Tab\" key events to object %p.\n", o); mask = evas_key_modifier_mask_get(evas, "Shift"); kg = evas_object_key_grab(o, "Tab", mask, ~mask, 0); if (!kg) fprintf(stderr, "ERROR: unable to redirect \"Tab\" key events to object %p.\n", o); mask = 0; kg = evas_object_key_grab(o, "Return", mask, ~mask, 0); if (!kg) fprintf(stderr, "ERROR: unable to redirect \"Return\" key events to object %p.\n", o); mask = 0; kg = evas_object_key_grab(o, "KP_Enter", mask, ~mask, 0); if (!kg) fprintf(stderr, "ERROR: unable to redirect \"KP_Enter\" key events to object %p.\n", o); evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, _imc_import_cb_key_down, import); o = e_widget_list_add(evas, 0, 0); import->content_obj = o; ofm = e_widget_fsel_add(evas, e_user_homedir_get(), "/", NULL, NULL, _imc_import_cb_selected, import, _imc_import_cb_changed, import, 1); import->fsel_obj = ofm; e_widget_list_object_append(o, ofm, 1, 1, 0.5); e_widget_size_min_get(o, &w, &h); edje_extern_object_min_size_set(o, w, h); edje_object_part_swallow(import->bg_obj, "e.swallow.content", o); evas_object_show(o); import->ok_obj = e_widget_button_add(evas, _("OK"), NULL, _imc_import_cb_ok, win, cfdata); e_widget_list_object_append(import->box_obj, import->ok_obj, 1, 0, 0.5); import->cancel_obj = e_widget_button_add(evas, _("Cancel"), NULL, _imc_import_cb_close, win, cfdata); e_widget_list_object_append(import->box_obj, import->cancel_obj, 1, 0, 0.5); e_widget_disabled_set(import->ok_obj, 1); e_win_centered_set(win, 1); o = import->box_obj; e_widget_size_min_get(o, &w, &h); edje_extern_object_min_size_set(o, w, h); edje_object_part_swallow(import->bg_obj, "e.swallow.buttons", o); edje_object_size_min_calc(import->bg_obj, &w, &h); evas_object_resize(import->bg_obj, w, h); e_win_resize(win, w, h); e_win_size_min_set(win, w, h); e_win_size_max_set(win, 99999, 99999); e_win_show(win); e_win_border_icon_set(win, "preferences-imc"); win->data = import; return win; }
EAPI_MAIN int elm_main(int argc, char *argv[]) { Evas_Object *win, *bg, *box, *box2, *btn, *ic, *url, *naviframe, *tabs, *web; Evas *e; Evas_Modifier_Mask ctrl_mask; App_Data *ad; if (!elm_need_web()) return -1; ad = calloc(1, sizeof(App_Data)); if (!ad) return -1; elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); win = elm_win_add(NULL, "example-web", ELM_WIN_BASIC); elm_win_autodel_set(win, EINA_TRUE); e = evas_object_evas_get(win); ctrl_mask = evas_key_modifier_mask_get(e, "Control"); if (!evas_object_key_grab(win, "f", ctrl_mask, 0, EINA_TRUE)) fprintf(stderr, "Could not grab trigger for search dialog\n"); evas_object_smart_callback_add(win, "delete,request", _win_del_request_cb, ad); evas_object_event_callback_add(win, EVAS_CALLBACK_KEY_DOWN, _win_search_trigger_cb, ad); evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _win_free_cb, ad); bg = elm_bg_add(win); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, bg); evas_object_show(bg); box = elm_box_add(win); evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, box); evas_object_show(box); url = elm_entry_add(win); elm_entry_single_line_set(url, EINA_TRUE); elm_entry_scrollable_set(url, EINA_TRUE); evas_object_size_hint_weight_set(url, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(url, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box, url); evas_object_show(url); evas_object_smart_callback_add(url, "activated", _url_activated_cb, ad); box2 = elm_box_add(win); elm_box_horizontal_set(box2, EINA_TRUE); elm_object_part_content_set(url, "icon", box2); elm_entry_icon_visible_set(url, EINA_FALSE); btn = elm_button_add(win); elm_box_pack_end(box2, btn); evas_object_show(btn); ad->nav.back = btn; ic = elm_icon_add(win); elm_icon_standard_set(ic, "arrow_left"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _nav_back_cb, ad); btn = elm_button_add(win); elm_box_pack_end(box2, btn); evas_object_show(btn); ad->nav.refresh = btn; ic = elm_icon_add(win); elm_icon_standard_set(ic, "refresh"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _nav_refresh_cb, ad); btn = elm_button_add(win); elm_box_pack_end(box2, btn); evas_object_show(btn); ad->nav.fwd = btn; ic = elm_icon_add(win); elm_icon_standard_set(ic, "arrow_right"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _nav_fwd_cb, ad); box2 = elm_box_add(win); elm_box_horizontal_set(box2, EINA_TRUE); evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box, box2); evas_object_show(box2); btn = elm_button_add(win); elm_box_pack_end(box2, btn); evas_object_show(btn); ic = elm_icon_add(win); elm_icon_standard_set(ic, "file"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _add_tab_cb, ad); tabs = elm_toolbar_add(win); elm_toolbar_align_set(tabs, 0.0); elm_toolbar_select_mode_set(tabs, ELM_OBJECT_SELECT_MODE_ALWAYS); elm_toolbar_homogeneous_set(tabs, EINA_FALSE); elm_toolbar_shrink_mode_set(tabs, ELM_TOOLBAR_SHRINK_MENU); evas_object_size_hint_weight_set(tabs, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(tabs, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box2, tabs); evas_object_show(tabs); btn = elm_button_add(win); elm_box_pack_end(box2, btn); evas_object_show(btn); evas_object_smart_callback_add(btn, "clicked", _close_tab_cb, ad); ic = elm_icon_add(win); elm_icon_standard_set(ic, "close"); elm_object_part_content_set(btn, "icon", ic); naviframe = elm_naviframe_add(win); evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box, naviframe); evas_object_show(naviframe); elm_toolbar_menu_parent_set(tabs, naviframe); web = elm_web_add(win); elm_web_window_create_hook_set(web, _web_create_window_cb, ad); elm_web_history_enabled_set(web, EINA_FALSE); evas_object_size_hint_weight_set(web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(web, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_naviframe_item_simple_push(naviframe, web); default_content_set(web); ad->win = win; ad->main_box = box; ad->naviframe = naviframe; ad->url = url; ad->default_web = web; ad->tabs = tabs; ad->close_tab = btn; evas_object_resize(win, 480, 640); evas_object_show(win); elm_run(); elm_shutdown(); return 0; }
static void _win_search_trigger_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { Evas_Event_Key_Down *ev = event_info; App_Data *ad = data; Evas_Object *box, *box2, *entry, *btn, *ic; if (strcmp(ev->keyname, "f") || !evas_key_modifier_is_set(ev->modifiers, "Control")) return; if (ad->search_box || !ad->current_tab) return; box = elm_box_add(ad->win); elm_box_horizontal_set(box, EINA_TRUE); evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_after(ad->main_box, box, ad->url); evas_object_show(box); evas_object_event_callback_add(box, EVAS_CALLBACK_DEL, _search_box_del_cb, ad); entry = elm_entry_add(ad->win); elm_entry_single_line_set(entry, EINA_TRUE); elm_entry_scrollable_set(entry, EINA_TRUE); evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box, entry); evas_object_show(entry); evas_object_smart_callback_add(entry, "changed", _search_entry_changed_cb, ad); evas_object_smart_callback_add(entry, "activated", _search_entry_activate_cb, ad); box2 = elm_box_add(ad->win); elm_box_horizontal_set(box2, EINA_TRUE); elm_object_part_content_set(entry, "end", box2); btn = elm_button_add(ad->win); elm_box_pack_end(box2, btn); evas_object_show(btn); ic = elm_icon_add(ad->win); elm_icon_standard_set(ic, "arrow_up"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _search_prev_cb, ad); btn = elm_button_add(ad->win); elm_box_pack_end(box2, btn); evas_object_show(btn); ic = elm_icon_add(ad->win); elm_icon_standard_set(ic, "arrow_down"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _search_next_cb, ad); btn = elm_button_add(ad->win); elm_box_pack_end(box, btn); evas_object_show(btn); ic = elm_icon_add(ad->win); elm_icon_standard_set(ic, "close"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _search_close_cb, ad); ad->search_box = box; ad->search_entry = entry; elm_object_focus_set(entry, EINA_TRUE); }