static Evas_Object* create_win(const char *name) { Evas_Object *eo; int w, h; eo = elm_win_add(NULL, name, ELM_WIN_BASIC); if (!eo) return NULL; elm_win_title_set(eo, name); elm_win_borderless_set(eo, EINA_TRUE); elm_win_autodel_set(eo, EINA_TRUE); evas_object_smart_callback_add(eo, "delete,request", _quit_cb, NULL); ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); evas_object_resize(eo, w, h); return eo; }
Evas_Object* appcore_create_win(const char *name) { Evas_Object *eo; int w, h; eo = elm_win_add(NULL, name, ELM_WIN_BASIC); if (eo) { elm_win_title_set(eo, name); elm_win_borderless_set(eo, EINA_TRUE); evas_object_smart_callback_add(eo, "delete,request", (Evas_Smart_Cb)appcore_win_del, NULL); ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); evas_object_resize(eo, w, h); } return eo; }
/** * @brief __create_main_win 创建住窗口 * @param app_data 传递的程序结构体 * @return 返回创建的对象 */ static Evas_Object *__create_main_win(void *app_data) { Evas_Object *window = elm_win_add(NULL, BROWSER_PACKAGE_NAME, ELM_WIN_BASIC); if (window) { int w; int h; elm_win_title_set(window, BROWSER_PACKAGE_NAME); elm_win_borderless_set(window, EINA_TRUE); elm_win_conformant_set(window, EINA_TRUE); evas_object_smart_callback_add(window, "delete,request", __main_win_del_cb, app_data); ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); evas_object_resize(window, w, h); elm_win_indicator_mode_set(window, ELM_WIN_INDICATOR_SHOW); evas_object_show(window); } return window; }
static Evas_Object* consumerapp_create_win(const char *name) { Evas_Object *eo; int w , h; eo = elm_win_add(NULL , name , ELM_WIN_BASIC); if(eo) { elm_win_title_set(eo , name); elm_win_borderless_set(eo , EINA_TRUE); evas_object_smart_callback_add(eo , "delete,request" , _win_del , NULL); ecore_x_window_size_get(ecore_x_window_root_first_get() , &w , &h); evas_object_resize(eo , w , h); elm_win_indicator_mode_set(eo , ELM_WIN_INDICATOR_SHOW); elm_win_indicator_opacity_set(eo , ELM_WIN_INDICATOR_OPAQUE); } evas_object_show(eo); return eo; }
ApplicationMain::ApplicationMain(int argc, char **argv) { cInfo() << "Calaos Home, starting..."; if (system("killall -9 eskiss 2> /dev/null") == -1) cCritical() << "Error forking !"; //init random generator srand(time(NULL)); //Init SSL and CURL SSL_load_error_strings(); SSL_library_init(); curl_global_init(CURL_GLOBAL_ALL); char *themefile = argvOptionParam(argv, argv + argc, "--theme"); if (themefile) { ApplicationMain::theme = themefile; cInfo() << "Using specified theme file: " << ApplicationMain::getTheme(); } else { ApplicationMain::theme = Prefix::Instance().dataDirectoryGet() + "/default.edj"; if (ecore_file_exists(ApplicationMain::theme.c_str())) cInfo() << "Using theme file " << theme; else cError() << theme << " Not found!"; } //Init efl core if (!eina_init()) throw (runtime_error("Unable to init Eina")); if (!ecore_init()) throw (runtime_error("Unable to init Ecore")); if (!ecore_con_init()) throw (runtime_error("Unable to init Ecore-Con")); if (!ecore_con_url_init()) throw (runtime_error("Unable to init Ecore-Con-Url")); if (!evas_init()) throw (runtime_error("Unable to init Evas")); if (!ecore_evas_init()) throw (runtime_error("Unable to init Ecore-Evas")); if (!edje_init()) throw (runtime_error("Unable to init Edje")); edje_frametime_set(1.0 / 60.0); edje_scale_set(1.0); if (!elm_init(argc, argv)) throw (runtime_error("Unable to init Elementary")); //Load Calaos specific ELM extensions elm_theme_extension_add(NULL, ApplicationMain::getTheme()); //Create the main window window = elm_win_add(NULL, "calaos-home", ELM_WIN_BASIC); elm_win_title_set(window, "Calaos Home"); elm_win_borderless_set(window, true); bool bFullscreen = argvOptionCheck(argv, argv + argc, "--fullscreen"); elm_win_fullscreen_set(window, bFullscreen); //Automatically quit main loop when the window is closed elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); elm_win_autodel_set(window, true); if (argvOptionCheck(argv, argv + argc, "--set-elm-config")) { //force setting the correct elementary options for touchscreen elm_config_finger_size_set(10); elm_config_scroll_bounce_enabled_set(true); elm_config_scroll_thumbscroll_enabled_set(true); elm_config_scroll_thumbscroll_threshold_set(24); elm_config_scroll_thumbscroll_momentum_threshold_set(100.0); elm_config_scroll_bounce_friction_set(0.5); elm_config_scroll_page_scroll_friction_set(0.5); elm_config_scroll_bring_in_scroll_friction_set(0.5); elm_config_scroll_zoom_friction_set(0.5); elm_config_scroll_thumbscroll_friction_set(1.0); elm_config_scroll_thumbscroll_border_friction_set(0.5); elm_config_scroll_thumbscroll_sensitivity_friction_set(0.25); } evas_object_event_callback_add(window, EVAS_CALLBACK_RESIZE, _window_resize_cb, this); evas = evas_object_evas_get(window); Evas_Object *bg = elm_bg_add(window); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(window, bg); evas_object_show(bg); evas_object_size_hint_min_set(bg, 200, 200); elm_bg_color_set(bg, 0, 0, 0); layout = elm_layout_add(window); if (!elm_layout_file_set(layout, ApplicationMain::getTheme(), EDJE_GROUP_MAIN_LAYOUT)) { string e = "Unable to find group \""; e += EDJE_GROUP_MAIN_LAYOUT; e += "\" in theme \""; e += ApplicationMain::getTheme(); e += "\""; throw (runtime_error(e)); } //create the screen suspend object and put it on the canvas ScreenSuspendView *screen_suspend = new ScreenSuspendView(evas, window); screen_suspend->Show(); screen_suspend->setAutoDelete(true); evas_object_size_hint_weight_set(layout, 1.0, 1.0); evas_object_show(layout); evas_object_resize(window, 1024, 768); evas_object_show(window); ecore_evas_focus_set(ecore_evas_ecore_evas_get(evas_object_evas_get(window)), true); Resize(); try { controller = new ApplicationController(evas, layout); } catch(exception const& e) { cCritical() << "Can't create ApplicationController"; throw; } }
static void winmain() { const char* name = "Hapti_UI_TEST"; int w,h; Evas_Object* win; Evas_Object* bg; Evas_Object* main_layout; Evas_Object* btns_box; Evas_Object* btn_vibe; Evas_Object* btn_stop; Evas* evas; win = elm_win_add(NULL, name, ELM_WIN_BASIC); if(!win) return; elm_win_title_set(win, name); elm_win_borderless_set(win, EINA_TRUE); elm_win_autodel_set(win, EINA_TRUE); evas_object_smart_callback_add(win, "delete,request", _quit_cb, NULL); ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); evas_object_resize(win, w, h); evas_object_show(win); evas = evas_object_evas_get(win); // set background bg = elm_bg_add(win); elm_bg_color_set(bg, 0xff, 0xff, 0xff); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, bg); evas_object_show(bg); // Base Layout main_layout = elm_layout_add(win); elm_layout_theme_set(main_layout, "layout", "application", "default"); evas_object_size_hint_weight_set(main_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, main_layout); evas_object_show(main_layout); // Indicator elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW); // add box btns_box = elm_box_add(win); elm_box_horizontal_set(btns_box, EINA_TRUE); elm_win_resize_object_add(win, btns_box); elm_box_padding_set(btns_box, 10, 0); evas_object_show(btns_box); // add Button btn_vibe = elm_button_add(main_layout); btn_stop = elm_button_add(main_layout); elm_object_text_set(btn_vibe, "Vibe"); elm_object_text_set(btn_stop, "Stop"); evas_object_smart_callback_add(btn_vibe, "clicked", _vibe_clicked_cb, NULL); evas_object_smart_callback_add(btn_stop, "clicked", _stop_clicked_cb, NULL); elm_box_pack_end(btns_box, btn_vibe); elm_box_pack_end(btns_box, btn_stop); evas_object_show(btn_vibe); evas_object_show(btn_stop); }
static Eina_Bool _e_elm_win_trap_show(void *data, Evas_Object *o) { Elm_Win_Trap_Ctx *ctx = data; Evas *e = evas_object_evas_get(o); Ecore_Evas *ee = ecore_evas_ecore_evas_get(e); Eina_Bool borderless; EINA_SAFETY_ON_NULL_RETURN_VAL(ctx, EINA_TRUE); borderless = elm_win_borderless_get(o); if (!ctx->client) { E_Client *ec; Ecore_Window win; #ifdef HAVE_WAYLAND int64_t wl_win_id = -1; #endif E_Pixmap_Type type = E_PIXMAP_TYPE_X; win = elm_win_window_id_get(o); #ifdef HAVE_WAYLAND if (!strncmp(ecore_evas_engine_name_get(ee), "wayland", 7)) { Ecore_Wl2_Window *ewin = elm_win_wl_window_get(o); type = E_PIXMAP_TYPE_WL; ecore_evas_object_cursor_set(ee, NULL, 0, 0, 0); ctx->pointer = e_comp->pointer; elm_win_borderless_set(o, 1); wl_win_id = ecore_wl2_window_surface_id_get(ewin); } else #endif { type = E_PIXMAP_TYPE_X; ctx->pointer = e_pointer_window_new(win, EINA_TRUE); } if (type == E_PIXMAP_TYPE_WL) ec = e_pixmap_find_client(type, (int64_t)win); else ec = e_pixmap_find_client(type, win); if (ec) ctx->client = ec; else { E_Pixmap *cp; const char *title, *name, *clas; ecore_evas_name_class_get(ee, &name, &clas); if (!name) name = "E"; if (!clas) clas = "_e_internal_window"; ecore_evas_name_class_set(ee, name, clas); title = elm_win_title_get(o); if ((!title) || (!title[0])) title = "E"; ecore_evas_title_set(ee, title); if (type == E_PIXMAP_TYPE_WL) cp = e_pixmap_new(type, (int64_t)win); else cp = e_pixmap_new(type, win); EINA_SAFETY_ON_NULL_RETURN_VAL(cp, EINA_TRUE); #ifdef HAVE_WAYLAND if (wl_win_id >= 0) e_pixmap_alias(cp, type, wl_win_id); #endif current_win = ctx; ctx->client = e_client_new(cp, 0, 1); current_win = NULL; EINA_SAFETY_ON_NULL_RETURN_VAL(ctx->client, EINA_TRUE); eina_stringshare_replace(&ctx->client->icccm.name, name); eina_stringshare_replace(&ctx->client->icccm.class, clas); eina_stringshare_replace(&ctx->client->icccm.title, title); } ctx->client->placed = ctx->placed | ctx->centered; ctx->client->internal_no_remember = ctx->internal_no_remember; ctx->client->internal_no_reopen = ctx->internal_no_reopen; ctx->client->internal_elm_win = o; elm_win_autodel_set(o, 1); evas_object_data_set(o, "E_Client", ctx->client); ctx->client->dialog = elm_win_type_get(o) == ELM_WIN_DIALOG_BASIC; ctx->client->tooltip = elm_win_type_get(o) == ELM_WIN_TOOLTIP; evas_object_size_hint_min_get(o, &ctx->client->icccm.min_w, &ctx->client->icccm.min_h); ctx->client->icccm.min_w = MAX(ctx->client->icccm.min_w, 0); ctx->client->icccm.min_h = MAX(ctx->client->icccm.min_h, 0); evas_object_size_hint_max_get(o, &ctx->client->icccm.max_w, &ctx->client->icccm.max_h); ctx->client->icccm.max_w = MAX(ctx->client->icccm.max_w, 0); ctx->client->icccm.max_h = MAX(ctx->client->icccm.max_h, 0); }