int main(void) { Evas_Object *o; Ecore_Evas *ee; int r; evas_init(); ecore_init(); ecore_evas_init(); edje_init(); ee = ecore_evas_new(NULL, 0, 0, 320, 240, NULL); if (!ee) return -1; o = edje_object_add(ecore_evas_get(ee)); if (!edje_object_file_set(o, "test.edj", "main")) { fprintf(stderr, "could not load edje: %d\n", edje_object_load_error_get(o)); return -2; } evas_object_resize(o, 320, 240); evas_object_show(o); ecore_evas_alpha_set(ee, 1); ecore_evas_borderless_set(ee, 1); ecore_evas_show(ee); ecore_main_loop_begin(); return 0; }
EcoreEvasWindowXRenderX11::EcoreEvasWindowXRenderX11( int width, int height, const char* display ) :EcoreEvasWindow() { Dout( dc::notice, "EcoreEvasWindow::EcoreEvasWindowGL" ); EcoreApplication::application()->setMainWindow( this ); if ( ::getenv( "EFL_DISPLAY" ) ) display = ::getenv( "EFL_DISPLAY" ); if ( ::getenv( "EFL_WIDTH" ) ) width = atoi( ::getenv( "EFL_WIDTH" ) ); if ( ::getenv( "EFL_HEIGHT" ) ) height = atoi( ::getenv( "EFL_HEIGHT" ) ); Dout( dc::notice, "- detected display string '" << ( display ? display:"<null>" ) << "' - starting X11 engine" ); //FIXME: Should we care about positioning? 0, 0 for now _ee = ecore_evas_xrender_x11_new( const_cast<char*>( display ), 0, 0, 0, width, height ); ecore_evas_title_set( _ee, eApp->name().c_str() ); ecore_evas_borderless_set( _ee, 0 ); _canvas = new EvasCanvas( ecore_evas_get( _ee ) ); /* Set up magic object back link */ ecore_evas_data_set( _ee, "obj_c++", this ); /* Set up default callbacks */ setEventEnabled( Resize, true ); setEventEnabled( DeleteRequest, true ); }
static MiniBrowser *browserCreate(const char *url) { MiniBrowser *app = malloc(sizeof(MiniBrowser)); app->ee = ecore_evas_new(0, 0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT, 0); ecore_evas_title_set(app->ee, "EFL MiniBrowser"); ecore_evas_callback_resize_set(app->ee, on_ecore_evas_resize); ecore_evas_borderless_set(app->ee, 0); ecore_evas_show(app->ee); app->evas = ecore_evas_get(app->ee); app->bg = evas_object_rectangle_add(app->evas); evas_object_name_set(app->bg, "bg"); evas_object_size_hint_weight_set(app->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_move(app->bg, 0, 0); evas_object_resize(app->bg, DEFAULT_WIDTH, DEFAULT_HEIGHT); evas_object_color_set(app->bg, 255, 150, 150, 255); evas_object_show(app->bg); /* Create webview */ app->browser = ewk_view_add(app->evas); evas_object_name_set(app->browser, "browser"); evas_object_size_hint_weight_set(app->browser, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_resize(app->browser, DEFAULT_WIDTH, DEFAULT_HEIGHT); evas_object_show(app->browser); evas_object_focus_set(app->browser, EINA_TRUE); ewk_view_uri_set(app->browser, url); return app; }
Elicit_Band * elicit_band_new(const char *theme_file) { Elicit_Band *band; band = calloc(1, sizeof(Elicit_Band)); //XXX allow other engines band->ee = ecore_evas_software_x11_new(0,0,0,0,10,10); ecore_evas_borderless_set(band->ee, 1); if (ecore_x_screen_is_composited(0)) ecore_evas_alpha_set(band->ee, 1); else ecore_evas_shaped_set(band->ee, 1); band->obj = edje_object_add(ecore_evas_get(band->ee)); //XXX theme file! if (!edje_object_file_set(band->obj, theme_file, "elicit.band")) { fprintf(stderr, "[Elicit] Error: Can't set band theme\n"); } evas_object_move(band->obj, 0, 0); evas_object_show(band->obj); return band; }
int main(int argc, char **argv) { init_efl(); char *theme = find_theme(); if (!theme) fatal("Could not find theme"); Ecore_Evas *ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 400, 400); if (!ee) { fprintf(stderr, "FATAL: Could not get an ee...\n"); exit(1); } Ecore_X_Screen_Size sz = get_screen_size(ee); ecore_evas_resize(ee, sz.width, sz.height); ecore_evas_title_set(ee, "Launcher"); ecore_evas_borderless_set(ee, 1); ecore_evas_fullscreen_set(ee, 1); Evas *evas = ecore_evas_get(ee); Evas_Object *edje = edje_object_add(evas); edje_object_file_set(edje, theme, "main"); evas_object_move(edje, 0, 0); evas_object_resize(edje, sz.width, sz.height); evas_object_show(edje); ecore_evas_show(ee); ecore_main_loop_begin(); shutdown_efl(); return 0; }
EvasWindowSoftwareX11::EvasWindowSoftwareX11( const Eflxx::Size &size, const char* display ) : EvasWindow(), mExwin (NULL) { Dout( dc::notice, "EvasWindow::EvasWindowSoftwareX11" ); Application::getInstance()->setMainWindow( this ); /*if ( ::getenv( "EFL_DISPLAY" ) ) display = ::getenv( "EFL_DISPLAY" ); if ( ::getenv( "EFL_WIDTH" ) ) size.width (atoi( ::getenv( "EFL_WIDTH" ) )); if ( ::getenv( "EFL_HEIGHT" ) ) size.height (atoi( ::getenv( "EFL_HEIGHT" ) ));*/ Dout( dc::notice, "- detected display string '" << ( display ? display:"<null>" ) << "' - starting X11 engine" ); //FIXME: Should we care about positioning? 0, 0 for now _ee = ecore_evas_software_x11_new( const_cast<char*>( display ), 0, 0, 0, size.width (), size.height () ); ecore_evas_title_set( _ee, Application::getInstance()->getName().c_str() ); ecore_evas_borderless_set( _ee, 0 ); _canvas = Evasxx::Canvas::wrap ( ecore_evas_get( _ee ) ); /* Set up magic object back link */ ecore_evas_data_set( _ee, "obj_c++", this ); /* Set up default callbacks */ setEventEnabled( Resize, true ); setEventEnabled( DeleteRequest, true ); }
static MiniBrowser *browserCreate(const char *url, const char *engine) { MiniBrowser *app = malloc(sizeof(MiniBrowser)); app->ee = ecore_evas_new(engine, 0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT, 0); if (!app->ee) return 0; ecore_evas_title_set(app->ee, APP_NAME); ecore_evas_callback_resize_set(app->ee, on_ecore_evas_resize); ecore_evas_borderless_set(app->ee, 0); ecore_evas_show(app->ee); ecore_evas_callback_delete_request_set(app->ee, closeWindow); app->evas = ecore_evas_get(app->ee); app->bg = evas_object_rectangle_add(app->evas); evas_object_name_set(app->bg, "bg"); evas_object_size_hint_weight_set(app->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_move(app->bg, 0, 0); evas_object_resize(app->bg, DEFAULT_WIDTH, DEFAULT_HEIGHT); evas_object_color_set(app->bg, 255, 150, 150, 255); evas_object_show(app->bg); /* Create webview */ app->browser = ewk_view_add(app->evas); ewk_view_theme_set(app->browser, THEME_DIR"/default.edj"); evas_object_name_set(app->browser, "browser"); evas_object_smart_callback_add(app->browser, "load,error", on_error, app); evas_object_smart_callback_add(app->browser, "load,progress", on_progress, app); evas_object_smart_callback_add(app->browser, "title,changed", on_title_changed, app); evas_object_smart_callback_add(app->browser, "uri,changed", on_url_changed, app); evas_object_event_callback_add(app->browser, EVAS_CALLBACK_KEY_DOWN, on_key_down, app); evas_object_size_hint_weight_set(app->browser, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_move(app->browser, 0, URL_BAR_HEIGHT); evas_object_resize(app->browser, DEFAULT_WIDTH, DEFAULT_HEIGHT - URL_BAR_HEIGHT); evas_object_show(app->browser); evas_object_focus_set(app->browser, EINA_TRUE); app->url_bar = url_bar_add(app->browser, DEFAULT_WIDTH); ewk_view_uri_set(app->browser, url); return app; }
//Create a new menu //The parent menu will have to be destroyed by eclair_menu_free //Return NULL if failed Eclair_Menu *eclair_menu_new(Eclair_Engine menu_engine) { Eclair_Menu *menu; Ecore_X_Window_State window_states[2]; menu = calloc(1, sizeof(Eclair_Menu)); menu->engine = menu_engine; if (menu_engine == ECLAIR_GL) { menu->window = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 0, 0); menu->x_window = ecore_evas_gl_x11_window_get(menu->window); } else { menu->window = ecore_evas_software_x11_new(NULL, 0, 0, 0, 0, 0); menu->x_window = ecore_evas_software_x11_window_get(menu->window); } ecore_evas_title_set(menu->window, "eclair menu"); ecore_evas_name_class_set(menu->window, "eclair", "Eclair"); window_states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR; window_states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER; ecore_x_netwm_window_state_set(menu->x_window, window_states, 2); ecore_evas_borderless_set(menu->window, 1); menu->evas = ecore_evas_get(menu->window); menu->edje_object = edje_object_add(menu->evas); if (!edje_object_file_set(menu->edje_object, ECLAIR_WIDGETS_THEME, "eclair_menu")) { evas_object_del(menu->edje_object); ecore_evas_free(menu->window); free(menu); return NULL; } evas_object_move(menu->edje_object, 0, 0); evas_object_show(menu->edje_object); ecore_evas_data_set(menu->window, "eclair_menu", menu); ecore_evas_callback_resize_set(menu->window, _eclair_menu_resize_cb); ecore_evas_hide(menu->window); return menu; }
static Erss_Tooltip *erss_tooltip_new (char *description) { Erss_Tooltip *tt; int x, y, w, h; Evas_Coord ew, eh; if(description == NULL) return NULL; tt = malloc (sizeof (Erss_Tooltip)); memset (tt, 0, sizeof (Erss_Tooltip)); tt->ee = ecore_evas_software_x11_new (NULL, 0, 0, 0, 250, 80); ecore_evas_override_set(tt->ee, 1); ecore_evas_borderless_set (tt->ee, TRUE); tt->win = ecore_evas_software_x11_window_get(ee); ecore_x_netwm_window_type_set (tt->win, ECORE_X_WINDOW_TYPE_UTILITY); ecore_evas_geometry_get (tt->ee, &x, &y, &w, &h); tt->evas = ecore_evas_get (tt->ee); evas_font_path_append (tt->evas, PACKAGE_DATA_DIR"/fonts/"); tt->bg = esmart_trans_x11_new (tt->evas); evas_object_move (tt->bg, 0, 0); evas_object_layer_set (tt->bg, -5); evas_object_resize (tt->bg, w, h); evas_object_name_set(tt->bg, "root_background"); evas_object_show (tt->bg); tt->bg = evas_object_rectangle_add(tt->evas); evas_object_move (tt->bg, 0, 0); evas_object_layer_set (tt->bg, -6); evas_object_resize (tt->bg, w, h); evas_object_color_set(tt->bg, 255, 255, 255, 20); evas_object_name_set(tt->bg, "background"); evas_object_show (tt->bg); tt->etox = etox_new_all(tt->evas, x + 5, y + 5, w - 10 , h - 10, 255, ETOX_ALIGN_LEFT); etox_context_set_wrap_marker(etox_get_context(tt->etox), NULL, NULL); etox_context_set_align(etox_get_context(tt->etox), ETOX_ALIGN_LEFT); etox_context_set_font(etox_get_context(tt->etox), "Vera", 10); etox_context_set_style(etox_get_context(tt->etox), "shadow"); etox_context_set_color(etox_get_context(tt->etox), 225, 225, 225, 255); etox_set_soft_wrap(tt->etox, 1); etox_set_word_wrap(tt->etox, 1); etox_set_alpha(tt->etox, 255); evas_object_layer_set(tt->etox, 1000); etox_set_text (tt->etox, description); evas_object_show (tt->etox); evas_object_geometry_get(tt->etox, NULL, NULL, &ew, &eh); if (eh > ew) { double scale = (double)ew / (double)eh; ew = ew / scale; eh *= scale; evas_object_resize(tt->etox, ew, eh); evas_object_geometry_get(tt->etox, NULL, NULL, &ew, &eh); } ecore_evas_callback_move_set (tt->ee, erss_window_move_tooltip); ecore_evas_callback_resize_set(tt->ee, erss_window_resize); ecore_evas_resize(tt->ee, ew + 10, eh + 10); return tt; }
// TODO: Possible without #ifdef stuff? EvasWindowFB::EvasWindowFB( const Eflxx::Size &size, const char* display, int rotation ) : EvasWindow() { Dout( dc::notice, "EvasWindow::EvasWindowFB" ); Application::getInstance()->setMainWindow( this ); /*if ( ::getenv( "EFL_DISPLAY" ) ) display = ::getenv( "EFL_DISPLAY" ); if ( ::getenv( "EFL_WIDTH" ) ) size.width (atoi( ::getenv( "EFL_WIDTH" ) )); if ( ::getenv( "EFL_HEIGHT" ) ) size.height (atoi( ::getenv( "EFL_HEIGHT" ) )); if ( ::getenv( "EFL_ROTATION" ) ) rotation = atoi( ::getenv( "EFL_ROTATION" ) );*/ if ( display /*&& ::strstr( display, "/dev/fb" )*/ ) { #ifdef ENABLE_EFLPP_FB int fb_dev_fd = ::open( display, O_RDONLY ); if ( fb_dev_fd < 0 ) { fprintf(stderr,"Can't open display '%s': %s\n", display, strerror(errno)); exit( 1 ); } struct fb_var_screeninfo fb_vinfo; struct fb_fix_screeninfo fb_finfo; // read VScreen info from fb if ( ioctl( fb_dev_fd, FBIOGET_VSCREENINFO, &fb_vinfo ) ) { fprintf(stderr,"Can't get VSCREENINFO: %s\n", strerror(errno)); exit(1); } // readFScreen info from fb if ( ioctl( fb_dev_fd, FBIOGET_FSCREENINFO, &fb_finfo ) ) { fprintf(stderr,"Can't get FSCREENINFO: %s\n", strerror(errno)); exit(1); } Dout( dc::notice, "- using display '" << display << "' [" << fb_finfo.id << "] - " << fb_vinfo.xres << "x" << fb_vinfo.yres << "@" << rotation ); width = ( rotation % 180 ) ? fb_vinfo.yres : fb_vinfo.xres; height = ( rotation % 180 ) ? fb_vinfo.xres : fb_vinfo.yres; Dout( dc::notice, "- using size (after rotating) " << size.width () << "x" << size.height () ); #ifdef ECORE_FB_NO_ROTATION_BUG //FIXME EFL BUG: initial rotation is not taken into account for evas calculation _ee = ecore_evas_fb_new( const_cast<char*>( display ), rotation, 50, 50 ); #else _ee = ecore_evas_fb_new( const_cast<char*>( display ), 0, 50, 50 ); // start with rotation 0 to workaround bug #endif ecore_evas_fullscreen_set( _ee, 1 ); // fullscreen is default to get auto resize on changing rotation ecore_evas_rotation_set( _ee, rotation ); // force resize #else printf("FB engine not enabled\n"); #endif } ecore_evas_title_set( _ee, Application::getInstance()->getName().c_str() ); ecore_evas_borderless_set( _ee, 0 ); _canvas = Evasxx::Canvas::wrap (ecore_evas_get( _ee )); /* Set up magic object back link */ ecore_evas_data_set( _ee, "obj_c++", this ); /* Set up default callbacks */ setEventEnabled( Resize, true ); setEventEnabled( DeleteRequest, true ); }
void EcoreEvasWindow::setBorderless( int on ) { ecore_evas_borderless_set( _ee, on ); }
bool ui_init(ePlayer *player) { int zero = 0; char buf[PATH_MAX]; debug(DEBUG_LEVEL_INFO, "Starting setup\n"); ecore_init(); ecore_evas_init(); edje_init(); ewl_init(&zero, NULL); ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, app_signal_exit, NULL); #ifdef HAVE_ECORE_EVAS_GL if (!strcasecmp(player->cfg.evas_engine, "gl")) { debug(DEBUG_LEVEL_INFO, "Starting EVAS GL X11\n"); player->gui.ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 0, 0); } else #endif #ifdef HAVE_ECORE_EVAS_FB if (!strcasecmp(player->cfg.evas_engine, "fb")) { debug(DEBUG_LEVEL_INFO, "Starting EVAS FB\n"); player->gui.ee = ecore_evas_fb_new(NULL, 0, 0, 0); } else #endif { debug(DEBUG_LEVEL_INFO, "Starting EVAS X11\n"); player->gui.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 0, 0); } if (!player->gui.ee) { debug(DEBUG_LEVEL_CRITICAL, "Cannot create Ecore Evas (using %s engine)\n", player->cfg.evas_engine); return false; } ecore_evas_title_set(player->gui.ee, "ePlayer"); ecore_evas_name_class_set(player->gui.ee, "ecore_test", "test_evas"); ecore_evas_borderless_set(player->gui.ee, 1); ecore_evas_shaped_set(player->gui.ee, 1); ecore_evas_callback_pre_render_set(player->gui.ee, cb_ee_pre_render); ecore_evas_callback_post_render_set(player->gui.ee, cb_ee_post_render); ecore_evas_callback_resize_set(player->gui.ee, cb_ee_resize); ecore_evas_show(player->gui.ee); player->gui.evas = ecore_evas_get(player->gui.ee); snprintf(buf, sizeof(buf), "%s/.e/apps/%s/fonts", getenv("HOME"), PACKAGE); evas_font_path_append(player->gui.evas, buf); evas_font_path_append(player->gui.evas, DATA_DIR "/fonts"); evas_font_path_append(player->gui.evas, "/usr/X11R6/lib/X11/fonts"); evas_font_path_append(player->gui.evas, "/usr/share/fonts"); if (!ui_init_dragger(player)) return false; return ui_init_edje(player, "eplayer"); }
Elicit * elicit_new() { Elicit *el; char buf[PATH_MAX]; char *dir; el = calloc(sizeof(Elicit), 1); el->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 500, 500); if (!el->ee) { fprintf(stderr, "[Elicit] Error creating new ecore evas\n"); free(el); return NULL; } el->evas = ecore_evas_get(el->ee); ecore_evas_title_set(el->ee, "Elicit"); ecore_evas_name_class_set(el->ee, "Elicit", "Elicit"); ecore_evas_borderless_set(el->ee, 1); // XXX get correct screen number if (ecore_x_screen_is_composited(0)) ecore_evas_alpha_set(el->ee, 1); else ecore_evas_shaped_set(el->ee, 1); ecore_evas_data_set(el->ee, "Elicit", el); ecore_evas_callback_resize_set(el->ee, cb_ee_resize); ecore_evas_callback_mouse_in_set(el->ee, cb_ee_mouse_in); ecore_evas_callback_mouse_out_set(el->ee, cb_ee_mouse_out); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE, cb_x_configure, el); el->obj.main = edje_object_add(el->evas); /* setup paths */ dir = br_find_data_dir(DATADIR); snprintf(buf, sizeof(buf), "%s/%s/", dir, PACKAGE); if (!ecore_file_exists(buf)) { fprintf(stderr, "[Elicit] Warning: falling back to hardcoded data dir.\n"); snprintf(buf, sizeof(buf), "%s/%s/", DATADIR, PACKAGE); } el->path.datadir = strdup(buf); free(dir); if (getenv("HOME")) { snprintf(buf, sizeof(buf), "%s/.e/apps/elicit/", getenv("HOME")); if (!ecore_file_is_dir(buf)) ecore_file_mkpath(buf); el->path.confdir = strdup(buf); snprintf(buf, sizeof(buf), "%s/.e/apps/elicit/elicit.conf", getenv("HOME")); el->path.conffile = strdup(buf); snprintf(buf, sizeof(buf), "%s/.e/apps/elicit/elicit.gpl", getenv("HOME")); el->path.palette = strdup(buf); } /* color */ el->color = color_new(); color_callback_changed_add(el->color, cb_color_changed, el); /* palette */ el->palette = palette_new(); palette_load(el->palette, el->path.palette); return el; }
void setup_cc_with_pos(int x, int y) { ControlCentre *cc; char *edjefn = malloc(PATH_MAX); char *fontpath = malloc(PATH_MAX); Evas_Coord edje_w, edje_h; CCPos *pos; cc = malloc(sizeof(ControlCentre)); controlcentre = cc; pos = get_cc_pos(); if (x >= 0 || y >= 0) { pos->x = x; pos->y = y; } /* Setup the Window */ if (!strcmp(main_config->render_method, "gl")) { #ifdef HAVE_ECORE_EVAS_GL cc->win = ecore_evas_gl_x11_new(NULL, 0, pos->x, pos->y, pos->width, pos->height); #else dml("GL not in Ecore_Evas module. Falling back on software!", 1); free(main_config->render_method); main_config->render_method = strdup("software"); cc->win = ecore_evas_software_x11_new(NULL, 0, pos->x, pos->y, pos->width, pos->height); #endif } else cc->win = ecore_evas_software_x11_new(NULL, 0, pos->x, pos->y, pos->width, pos->height); ecore_evas_title_set(cc->win, "Enotes"); ecore_evas_name_class_set(cc->win, "Enotes", "Enotes"); if (main_config->ontop == 1) ecore_evas_layer_set(cc->win, 7); else ecore_evas_layer_set(cc->win, 2); if (main_config->sticky == 1) ecore_evas_sticky_set(cc->win, 1); else ecore_evas_sticky_set(cc->win, 0); ecore_evas_borderless_set(cc->win, 1); ecore_evas_shaped_set(cc->win, 1); if (pos->x != 0 && pos->y != 0) ecore_evas_resize(cc->win, pos->x, pos->y); ecore_evas_show(cc->win); // if(main_config->ontop==1) /* Moving the damn thing */ ecore_evas_move(cc->win, pos->x, pos->y); /* Setup the Canvas, Render-Method and Font Path */ cc->evas = ecore_evas_get(cc->win); evas_output_method_set(cc->evas, evas_render_method_lookup(main_config-> render_method)); snprintf(fontpath, PATH_MAX, "%s/fonts", PACKAGE_DATA_DIR); evas_font_path_append(cc->evas, fontpath); free(fontpath); /* Draggable Setup */ cc->dragger = esmart_draggies_new(cc->win); evas_object_name_set(cc->dragger, "dragger"); evas_object_move(cc->dragger, 0, 0); evas_object_layer_set(cc->dragger, 0); evas_object_color_set(cc->dragger, 255, 255, 255, 0); esmart_draggies_button_set(cc->dragger, 1); evas_object_show(cc->dragger); /* Setup the EDJE */ cc->edje = edje_object_add(cc->evas); snprintf(edjefn, PATH_MAX, CC_EDJE, PACKAGE_DATA_DIR, main_config->theme); edje_object_file_set(cc->edje, edjefn, CC_PART); free(edjefn); evas_object_move(cc->edje, 0, 0); evas_object_layer_set(cc->edje, 1); evas_object_name_set(cc->edje, "edje"); evas_object_pass_events_set(cc->edje, 0); evas_object_show(cc->edje); if (pos->shaded) edje_object_signal_emit(cc->edje, EDJE_SIGNAL_CC_SHADE "_GO", ""); else edje_object_signal_emit(cc->edje, EDJE_SIGNAL_CC_UNSHADE "_GO", ""); /* EDJE and ECORE min, max and resizing */ edje_object_size_max_get(cc->edje, &edje_w, &edje_h); ecore_evas_size_max_set(cc->win, edje_w, edje_h); edje_object_size_min_get(cc->edje, &edje_w, &edje_h); ecore_evas_size_min_set(cc->win, edje_w, edje_h); ecore_evas_resize(cc->win, (int) edje_w, (int) edje_h); evas_object_resize(cc->edje, edje_w, edje_h); evas_object_resize(cc->dragger, edje_w, edje_h); /* Ecore Callbacks */ ecore_evas_callback_resize_set(cc->win, cc_resize); ecore_evas_callback_destroy_set(cc->win, cc_close_win); ecore_evas_callback_delete_request_set(cc->win, cc_close_win); /* Edje Callbacks */ edje_object_signal_callback_add(cc->edje, EDJE_SIGNAL_CC_MINIMIZE, "", (void *) cc_minimize, cc->win); edje_object_signal_callback_add(cc->edje, EDJE_SIGNAL_CC_CLOSE, "", (void *) cc_close, NULL); edje_object_signal_callback_add(cc->edje, EDJE_SIGNAL_CC_SAVELOAD, "", (void *) cc_saveload, NULL); edje_object_signal_callback_add(cc->edje, EDJE_SIGNAL_CC_SETTINGS, "", (void *) cc_settings, NULL); edje_object_signal_callback_add(cc->edje, EDJE_SIGNAL_CC_NEW, "", (void *) cc_newnote, NULL); edje_object_signal_callback_add(cc->edje, EDJE_SIGNAL_CC_SHADE, "", (void *) cc_shade, NULL); edje_object_signal_callback_add(cc->edje, EDJE_SIGNAL_CC_UNSHADE, "", (void *) cc_unshade, NULL); free(pos); return; }