EAPI void e_widget_frametable_object_append(Evas_Object *obj, Evas_Object *sobj, int col, int row, int colspan, int rowspan, int fill_w, int fill_h, int expand_w, int expand_h) { E_Widget_Data *wd; Evas_Coord mw = 0, mh = 0; wd = e_widget_data_get(obj); e_table_pack(wd->o_table, sobj, col, row, colspan, rowspan); e_widget_size_min_get(sobj, &mw, &mh); e_table_pack_options_set(sobj, fill_w, fill_h, /* fill */ expand_w, expand_h, /* expand */ 0.5, 0.5, /* align */ mw, mh, /* min */ 99999, 99999 /* max */ ); e_table_size_min_get(wd->o_table, &mw, &mh); edje_extern_object_min_size_set(wd->o_table, mw, mh); edje_object_part_swallow(wd->o_frame, "e.swallow.content", wd->o_table); edje_object_size_min_calc(wd->o_frame, &mw, &mh); e_widget_size_min_set(obj, mw, mh); e_widget_sub_object_add(obj, sobj); evas_object_show(sobj); }
Evas_Object * e_widget_spectrum_add(Evas *evas, E_Color_Component mode, E_Color *cv) { 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); wd->cv = cv; wd->mode = mode; o = edje_object_add(evas); wd->o_edje = o; e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/spectrum"); evas_object_show(o); edje_object_size_min_calc(o, &mw, &mh); e_widget_size_min_set(obj, mw, mh); 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); evas_object_intercept_resize_callback_add(o, _e_wid_resize, wd); evas_object_intercept_move_callback_add(o, _e_wid_move, wd); o = e_spectrum_add(evas); e_spectrum_color_value_set(o, cv); e_spectrum_mode_set(o, mode); e_widget_sub_object_add(obj, o); evas_object_show(o); wd->o_spectrum = o; edje_object_part_swallow(wd->o_edje, "e.swallow.content", o); edje_extern_object_min_size_set(o, 100, 100); o = evas_object_rectangle_add(evas); evas_object_color_set(o, 0, 0, 0, 0); e_widget_sub_object_add(obj, o); evas_object_show(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); wd->o_event = o; e_widget_spectrum_update(obj, 0); return obj; }
EAPI void e_widget_label_text_set(Evas_Object *obj, const char *text) { E_Widget_Data *wd; Evas_Coord mw, mh; wd = e_widget_data_get(obj); edje_object_part_text_set(wd->text, "e.text.label", text); edje_object_size_min_calc(wd->text, &mw, &mh); edje_extern_object_min_size_set(wd->text, mw, mh); }
static void _e_mod_ind_win_cb_resize(E_Win *win) { Ind_Win *iwin; if (!(iwin = win->data)) return; if (iwin->popup) e_popup_resize(iwin->popup, win->w, win->h); if (iwin->o_event) evas_object_resize(iwin->o_event, win->w, win->h); if (iwin->o_base) evas_object_resize(iwin->o_base, win->w, win->h); if (iwin->gadcon->o_container) edje_extern_object_min_size_set(iwin->gadcon->o_container, win->w, win->h); }
void etk_test_evas_object_window_create(void *data) { Evas *evas; Evas_Object *edje_object; Evas_Object *evas_object; static Etk_Widget *window = NULL; Etk_Widget *vbox; Etk_Widget *frame; Etk_Widget *etk_evas_object; int w, h; if (window) { etk_widget_show_all(window); return; } window = etk_window_new(); etk_signal_connect_by_code(ETK_WINDOW_DELETE_EVENT_SIGNAL, ETK_OBJECT(window), ETK_CALLBACK(etk_window_hide_on_delete), NULL); etk_window_title_set(ETK_WINDOW(window), "Etk-Evas Object Test"); evas = etk_toplevel_evas_get(ETK_TOPLEVEL(window)); vbox = etk_vbox_new(ETK_FALSE, 5); /* Add an edje object */ frame = etk_frame_new("Edje Object"); edje_object = edje_object_add(evas); edje_object_file_set(edje_object, PACKAGE_DATA_DIR"/test/clock.edj", "icon"); edje_object_size_min_get(edje_object, &w, &h); edje_extern_object_min_size_set(edje_object, w, h); evas_object_resize(edje_object, w, h); etk_evas_object = etk_evas_object_new(); etk_evas_object_set_object(ETK_EVAS_OBJECT(etk_evas_object), edje_object); etk_container_add(ETK_CONTAINER(frame), etk_evas_object); etk_box_append(ETK_BOX(vbox), frame, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); /* Add an evas rectangle */ frame = etk_frame_new("Evas Object"); evas_object = evas_object_rectangle_add(evas); evas_object_resize(evas_object, 150, 150); evas_object_color_set(evas_object, 150, 100, 100, 255); etk_evas_object = etk_evas_object_new(); etk_evas_object_set_object(ETK_EVAS_OBJECT(etk_evas_object), evas_object); etk_container_add(ETK_CONTAINER(frame), etk_evas_object); etk_box_append(ETK_BOX(vbox), frame, ETK_BOX_END, ETK_BOX_EXPAND_FILL, 0); etk_container_add(ETK_CONTAINER(window), vbox); etk_widget_show_all(window); }
static void _e_gadcon_popup_size_recalc(E_Gadcon_Popup *pop, Evas_Object *obj) { Evas_Coord w = 0, h = 0; e_widget_size_min_get(obj, &w, &h); if ((!w) || (!h)) evas_object_size_hint_min_get(obj, &w, &h); if ((!w) || (!h)) { edje_object_size_min_get(obj, &w, &h); edje_object_size_min_restricted_calc(obj, &w, &h, w, h); } edje_extern_object_min_size_set(obj, w, h); edje_object_size_min_calc(pop->o_bg, &pop->w, &pop->h); evas_object_resize(pop->o_bg, pop->w, pop->h); if (pop->win->visible) _e_gadcon_popup_position(pop); }
/* Edje: render() */ static Etk_Bool _edje_render(Etk_Tree_Model * model, Etk_Tree_Row * row, Etk_Geometry geometry, void *cell_data, Evas_Object * cell_objects[ETK_TREE_MAX_OBJECTS_PER_MODEL], Evas * evas) { //g_debug("render called"); Etk_Tree_Model_Edje *edje_model; Etk_Tree_Model_Edje_Data *edje_data; if (!(edje_model = (Etk_Tree_Model_Edje *) model) || !(edje_data = cell_data) || !evas || !edje_data->parameters) return ETK_FALSE; if (! (cell_objects[0] = etk_cache_find(edje_model->cache, edje_data->parameters, NULL))) { //g_debug("Rendering"); cell_objects[0] = edje_object_add(evas); if (!cell_objects[0]) return ETK_FALSE; } if (!edje_file_group_exists(edje_model->file, edje_model->part)) { g_error("%s does not exist in %s", edje_model->part, edje_model->file); } edje_object_file_set(cell_objects[0], edje_model->file, edje_model->part); edje_extern_object_min_size_set(cell_objects[0], geometry.w, geometry.h); g_hash_table_foreach(edje_data->parameters, _edje_set_text_cb, cell_objects[0]); evas_object_move(cell_objects[0], geometry.x, geometry.y); evas_object_resize(cell_objects[0], geometry.w, geometry.h); evas_object_show(cell_objects[0]); return ETK_TRUE; }
EAPI void e_widget_frametable_object_append_full(Evas_Object *obj, Evas_Object *sobj, int col, int row, int colspan, int rowspan, int fill_w, int fill_h, int expand_w, int expand_h, double align_x, double align_y, Evas_Coord min_w, Evas_Coord min_h, Evas_Coord max_w, Evas_Coord max_h) { E_Widget_Data *wd = e_widget_data_get(obj); Evas_Coord mw = 0, mh = 0; e_table_pack(wd->o_table, sobj, col, row, colspan, rowspan); e_table_pack_options_set(sobj, fill_w, fill_h, expand_w, expand_h, align_x, align_y, min_w, min_h, max_w, max_h ); e_table_size_min_get(wd->o_table, &mw, &mh); edje_extern_object_min_size_set(wd->o_table, mw, mh); edje_object_part_swallow(wd->o_frame, "e.swallow.content", wd->o_table); edje_object_size_min_calc(wd->o_frame, &mw, &mh); e_widget_size_min_set(obj, mw, mh); e_widget_sub_object_add(obj, sobj); evas_object_show(sobj); }
/* externally accessible functions */ EAPI Evas_Object * e_widget_preview_add(Evas *evas, int minw, int minh) { Evas_Object *obj; E_Widget_Data *wd; Evas_Coord mw, mh; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); wd = E_NEW(E_Widget_Data, 1); if (!wd) return NULL; wd->obj = obj; wd->o_frame = edje_object_add(evas); e_theme_edje_object_set(wd->o_frame, "base/theme/widgets", "e/widgets/preview"); evas_object_show(wd->o_frame); e_widget_sub_object_add(obj, wd->o_frame); e_widget_resize_object_set(obj, wd->o_frame); wd->img = e_livethumb_add(evas); e_livethumb_vsize_set(wd->img, minw * 2, minh * 2); edje_extern_object_min_size_set(wd->img, minw, minh); /* Why do we set max size? This prevents from being nicely resized. */ /* edje_extern_object_max_size_set(o, minw, minh); */ // evas_object_show(wd->img); edje_object_part_swallow(wd->o_frame, "e.swallow.content", wd->img); e_widget_sub_object_add(obj, wd->img); e_widget_data_set(obj, wd); e_widget_can_focus_set(obj, 0); edje_object_size_min_calc(wd->o_frame, &mw, &mh); e_widget_size_min_set(obj, mw, mh); return obj; }
int e_syscon_show(E_Zone *zone, const char *defact) { Evas_Object *o, *o2; Evas_Coord mw, mh; int x, y, w, h, zx, zy, zw, zh; int iw, ih; Eina_List *l; double t; t = ecore_loop_time_get(); if (popup) { if ((t - show_time) > 0.5) { for (l = e_config->syscon.actions; l; l = l->next) { E_Config_Syscon_Action *sca; E_Action *a; if (!(sca = l->data)) continue; if (!sca->action) continue; a = e_action_find(sca->action); if (!a) continue; if (sca->is_main == 2) { a->func.go(NULL, sca->params); e_syscon_hide(); break; } } } return 0; } input_window = ecore_x_window_input_new(zone->container->win, zone->x, zone->y, zone->w, zone->h); ecore_x_window_show(input_window); if (!e_grabinput_get(input_window, 1, input_window)) { ecore_x_window_free(input_window); input_window = 0; return 0; } popup = e_popup_new(zone, 0, 0, 1, 1); if (!popup) { e_grabinput_release(input_window, input_window); ecore_x_window_free(input_window); input_window = 0; return 0; } evas_event_freeze(popup->evas); e_popup_layer_set(popup, E_LAYER_POPUP); handlers = eina_list_append (handlers, ecore_event_handler_add (ECORE_EVENT_KEY_DOWN, _cb_key_down, NULL)); handlers = eina_list_append (handlers, ecore_event_handler_add (ECORE_EVENT_MOUSE_BUTTON_DOWN, _cb_mouse_down, NULL)); handlers = eina_list_append (handlers, ecore_event_handler_add (ECORE_EVENT_MOUSE_BUTTON_UP, _cb_mouse_up, NULL)); handlers = eina_list_append (handlers, ecore_event_handler_add (ECORE_EVENT_MOUSE_MOVE, _cb_mouse_move, NULL)); handlers = eina_list_append (handlers, ecore_event_handler_add (ECORE_EVENT_MOUSE_WHEEL, _cb_mouse_wheel, NULL)); o = edje_object_add(popup->evas); o_bg = o; e_theme_edje_object_set(o, "base/theme/syscon", "e/widgets/syscon/main"); edje_object_part_text_set(o, "e.text.label", _("Cancel")); edje_object_signal_callback_add(o, "e,action,close", "", _cb_signal_close, NULL); edje_object_signal_callback_add(o, "e,action,syscon", "*", _cb_signal_syscon, NULL); act_count = 0; show_time = t; // main (default): // halt | suspend | desk_lock // secondary (default): // reboot | hibernate | logout // extra (example for illume): // home | close | kill o = e_flowlayout_add(popup->evas); o_flow_main = o; e_flowlayout_orientation_set(o, 1); e_flowlayout_flowdirection_set(o, 1, 1); e_flowlayout_homogenous_set(o, 1); o = e_flowlayout_add(popup->evas); o_flow_secondary = o; e_flowlayout_orientation_set(o, 1); e_flowlayout_flowdirection_set(o, 1, 1); e_flowlayout_homogenous_set(o, 1); o = e_flowlayout_add(popup->evas); o_flow_extra = o; e_flowlayout_orientation_set(o, 1); e_flowlayout_flowdirection_set(o, 1, 1); e_flowlayout_homogenous_set(o, 1); for (l = e_config->syscon.actions; l; l = l->next) { E_Config_Syscon_Action *sca; char buf[1024]; E_Action *a; int disabled; if (!(sca = l->data)) continue; if (!sca->action) continue; a = e_action_find(sca->action); if (!a) continue; disabled = 0; if ((!strcmp(sca->action, "logout")) && (!e_sys_action_possible_get(E_SYS_LOGOUT))) disabled = 1; else if ((!strcmp(sca->action, "halt")) && (!e_sys_action_possible_get(E_SYS_HALT))) disabled = 1; else if ((!strcmp(sca->action, "halt_now")) && (!e_sys_action_possible_get(E_SYS_HALT_NOW))) disabled = 1; else if ((!strcmp(sca->action, "reboot")) && (!e_sys_action_possible_get(E_SYS_REBOOT))) disabled = 1; else if ((!strcmp(sca->action, "suspend")) && (!e_sys_action_possible_get(E_SYS_SUSPEND))) disabled = 1; else if ((!strcmp(sca->action, "hibernate")) && (!e_sys_action_possible_get(E_SYS_HIBERNATE))) disabled = 1; o = edje_object_add(popup->evas); edje_object_signal_callback_add(o, "e,action,click", "", _cb_signal_action, sca); if (sca->button) { snprintf(buf, sizeof(buf), "e/widgets/syscon/item/%s", sca->button); e_theme_edje_object_set(o, "base/theme/widgets", buf); } else e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/syscon/item/button"); edje_object_part_text_set(o, "e.text.label", _(e_action_predef_label_get(sca->action, sca->params))); if (sca->icon) { o2 = e_icon_add(popup->evas); e_util_icon_theme_set(o2, sca->icon); edje_object_part_swallow(o, "e.swallow.icon", o2); evas_object_show(o2); if (disabled) edje_object_signal_emit(o2, "e,state,disabled", "e"); } if (disabled) edje_object_signal_emit(o, "e,state,disabled", "e"); if (sca->is_main) { e_flowlayout_pack_end(o_flow_main, o); iw = ih = e_config->syscon.main.icon_size * e_scale; } else { e_flowlayout_pack_end(o_flow_secondary, o); iw = ih = e_config->syscon.secondary.icon_size * e_scale; } edje_object_message_signal_process(o); edje_object_size_min_calc(o, &mw, &mh); if (mw > iw) iw = mw; if (mh > ih) ih = mh; e_flowlayout_pack_options_set(o, 1, 1, 0, 0, 0.5, 0.5, iw, ih, iw, ih); evas_object_show(o); } for (l = (Eina_List *)e_sys_con_extra_action_list_get(); l; l = l->next) { E_Sys_Con_Action *sca; char buf[1024]; sca = l->data; o = edje_object_add(popup->evas); edje_object_signal_callback_add(o, "e,action,click", "", _cb_signal_action_extra, sca); if (sca->button_name) { snprintf(buf, sizeof(buf), "e/widgets/syscon/item/%s", sca->button_name); e_theme_edje_object_set(o, "base/theme/widgets", buf); } else e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/syscon/item/button"); edje_object_part_text_set(o, "e.text.label", sca->label); if (sca->icon_group) { o2 = edje_object_add(popup->evas); e_util_edje_icon_set(o2, sca->icon_group); edje_object_part_swallow(o, "e.swallow.icon", o2); evas_object_show(o2); if (sca->disabled) edje_object_signal_emit(o2, "e,state,disabled", "e"); } if (sca->disabled) edje_object_signal_emit(o, "e,state,disabled", "e"); e_flowlayout_pack_end(o_flow_extra, o); iw = ih = e_config->syscon.extra.icon_size * e_scale; e_flowlayout_pack_options_set(o, 1, 1, 0, 0, 0.5, 0.5, iw, ih, iw, ih); evas_object_show(o); } e_flowlayout_fill_set(o_flow_main, 1); edje_object_part_swallow(o_bg, "e.swallow.main", o_flow_main); e_flowlayout_fill_set(o_flow_secondary, 1); edje_object_part_swallow(o_bg, "e.swallow.secondary", o_flow_secondary); e_flowlayout_fill_set(o_flow_extra, 1); edje_object_part_swallow(o_bg, "e.swallow.extra", o_flow_extra); e_zone_useful_geometry_get(zone, &zx, &zy, &zw, &zh); evas_object_resize(o_bg, zw, zh); edje_object_calc_force(o_bg); e_flowlayout_size_min_get(o_flow_main, &mw, &mh); edje_extern_object_min_size_set(o_flow_main, mw, mh); edje_object_part_swallow(o_bg, "e.swallow.main", o_flow_main); e_flowlayout_size_min_get(o_flow_secondary, &mw, &mh); edje_extern_object_min_size_set(o_flow_secondary, mw, mh); edje_object_part_swallow(o_bg, "e.swallow.secondary", o_flow_secondary); e_flowlayout_size_min_get(o_flow_extra, &mw, &mh); edje_extern_object_min_size_set(o_flow_extra, mw, mh); edje_object_part_swallow(o_bg, "e.swallow.extra", o_flow_extra); edje_object_size_min_calc(o_bg, &mw, &mh); w = mw; if (w > zw) w = zw; x = zx - zone->x + (zw - w) / 2; h = mh; if (h > zh) h = zh; y = zy - zone->y + (zh - h) / 2; e_popup_move_resize(popup, x, y, w, h); evas_object_move(o_bg, 0, 0); evas_object_resize(o_bg, w, h); evas_object_show(o_bg); e_popup_edje_bg_object_set(popup, o_bg); if (e_config->syscon.do_input) { deftimer = ecore_timer_add(e_config->syscon.timeout, _cb_timeout_defaction, NULL); if (defact) do_defact = eina_stringshare_add(defact); } evas_event_thaw(popup->evas); inevas = 0; e_popup_show(popup); return 1; }
Ind_Win * e_mod_ind_win_new(E_Zone *zone) { Ind_Win *iwin; Ecore_X_Window_State states[2]; Evas_Coord h = 0; /* create our new indicator window object */ iwin = E_OBJECT_ALLOC(Ind_Win, IND_WIN_TYPE, _e_mod_ind_win_cb_free); if (!iwin) return NULL; h = (il_ind_cfg->height * e_scale); iwin->zone = zone; /* create new window */ iwin->win = e_win_new(zone->container); iwin->win->data = iwin; /* set some properties on the window */ e_win_title_set(iwin->win, _("Illume Indicator")); e_win_name_class_set(iwin->win, "Illume-Indicator", "Illume-Indicator"); e_win_no_remember_set(iwin->win, EINA_TRUE); /* hook into window resize so we can resize our objects */ e_win_resize_callback_set(iwin->win, _e_mod_ind_win_cb_resize); /* set this window to not show in taskbar or pager */ states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR; states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER; ecore_x_netwm_window_state_set(iwin->win->evas_win, states, 2); /* set this window to not accept or take focus */ ecore_x_icccm_hints_set(iwin->win->evas_win, 0, 0, 0, 0, 0, 0, 0); /* create the popup */ iwin->popup = e_popup_new(zone, 0, 0, zone->w, h); e_popup_name_set(iwin->popup, "indicator"); e_popup_layer_set(iwin->popup, 200); /* create our event rectangle */ iwin->o_event = evas_object_rectangle_add(iwin->win->evas); evas_object_color_set(iwin->o_event, 0, 0, 0, 0); evas_object_event_callback_add(iwin->o_event, EVAS_CALLBACK_MOUSE_DOWN, _e_mod_ind_win_cb_mouse_down, iwin); evas_object_event_callback_add(iwin->o_event, EVAS_CALLBACK_MOUSE_UP, _e_mod_ind_win_cb_mouse_up, iwin); evas_object_event_callback_add(iwin->o_event, EVAS_CALLBACK_MOUSE_MOVE, _e_mod_ind_win_cb_mouse_move, iwin); evas_object_move(iwin->o_event, 0, 0); evas_object_show(iwin->o_event); /* create our base object */ iwin->o_base = edje_object_add(iwin->win->evas); if (!e_theme_edje_object_set(iwin->o_base, "base/theme/modules/illume-indicator", "modules/illume-indicator/window")) { char buff[PATH_MAX]; snprintf(buff, sizeof(buff), "%s/e-module-illume-indicator.edj", _ind_mod_dir); edje_object_file_set(iwin->o_base, buff, "modules/illume-indicator/window"); } evas_object_move(iwin->o_base, 0, 0); evas_object_show(iwin->o_base); e_popup_edje_bg_object_set(iwin->popup, iwin->o_base); /* create our gadget container */ iwin->gadcon = e_gadcon_swallowed_new("illume-indicator", zone->id, iwin->o_base, "e.swallow.content"); edje_extern_object_min_size_set(iwin->gadcon->o_container, zone->w, h); e_gadcon_min_size_request_callback_set(iwin->gadcon, _e_mod_ind_win_cb_min_size_request, iwin); e_gadcon_size_request_callback_set(iwin->gadcon, _e_mod_ind_win_cb_size_request, iwin); e_gadcon_frame_request_callback_set(iwin->gadcon, _e_mod_ind_win_cb_frame_request, iwin); e_gadcon_orient(iwin->gadcon, E_GADCON_ORIENT_FLOAT); e_gadcon_zone_set(iwin->gadcon, zone); e_gadcon_ecore_evas_set(iwin->gadcon, iwin->win->ecore_evas); e_gadcon_util_menu_attach_func_set(iwin->gadcon, _e_mod_ind_win_cb_menu_items_append, iwin); e_gadcon_populate(iwin->gadcon); /* hook into property change so we can adjust w/ e_scale */ iwin->hdls = eina_list_append(iwin->hdls, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, _e_mod_ind_win_cb_win_prop, iwin)); /* hook into zone resize so we can set minimum window width when zone * size changes */ iwin->hdls = eina_list_append(iwin->hdls, ecore_event_handler_add(E_EVENT_ZONE_MOVE_RESIZE, _e_mod_ind_win_cb_zone_resize, iwin)); iwin->hdls = eina_list_append(iwin->hdls, ecore_event_handler_add(E_EVENT_BORDER_HIDE, _e_mod_ind_win_cb_border_hide, iwin)); iwin->hdls = eina_list_append(iwin->hdls, ecore_event_handler_add(E_EVENT_BORDER_SHOW, _e_mod_ind_win_cb_border_show, iwin)); /* set minimum size of this window & popup */ e_win_size_min_set(iwin->win, zone->w, h); ecore_evas_size_min_set(iwin->popup->ecore_evas, zone->w, h); /* position and resize this window */ e_win_move_resize(iwin->win, zone->x, zone->y, zone->w, h); e_popup_move_resize(iwin->popup, zone->x, zone->y, zone->w, h); /* show the window */ e_win_show(iwin->win); e_popup_show(iwin->popup); /* set this window on proper zone */ e_border_zone_set(iwin->win->border, zone); iwin->win->border->user_skip_winlist = 1; iwin->win->border->lock_focus_in = 1; iwin->win->border->lock_focus_out = 1; /* set this window to be a dock window. This needs to be done after show * as E will sometimes reset the window type */ ecore_x_netwm_window_type_set(iwin->win->evas_win, ECORE_X_WINDOW_TYPE_DOCK); /* tell conformant apps our position and size */ ecore_x_e_illume_indicator_geometry_set(zone->black_win, zone->x, zone->y, zone->w, h); return iwin; }
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; }