Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_config.c e_config.h e_int_config_display.c Log Message: randr - a nice module, isn't really needed anymroe now as almsot all the work is done by a config dialog (i added the safety box stuff from randr into it). i just need to add the cde to restore on login now. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.c,v retrieving revision 1.151 retrieving revision 1.152 diff -u -3 -r1.151 -r1.152 --- e_config.c 3 Mar 2006 06:00:17 -0000 1.151 +++ e_config.c 3 Mar 2006 09:04:26 -0000 1.152 @@ -458,7 +458,6 @@ E_CONFIG_LIST(D, T, gadcons, _e_config_gadcon_edd); E_CONFIG_LIST(D, T, shelves, _e_config_shelf_edd); E_CONFIG_VAL(D, T, font_hinting, INT); - E_CONFIG_VAL(D, T, desklock_personal_passwd, STR); E_CONFIG_VAL(D, T, desklock_background, STR); E_CONFIG_VAL(D, T, desklock_login_box_zone, INT); @@ -467,6 +466,11 @@ E_CONFIG_VAL(D, T, desklock_timeout, DOUBLE); E_CONFIG_VAL(D, T, desklock_disable_screensaver, INT); + E_CONFIG_VAL(D, T, display_res_restore, INT); + E_CONFIG_VAL(D, T, display_res_width, INT); + E_CONFIG_VAL(D, T, display_res_height, INT); + E_CONFIG_VAL(D, T, display_res_hz, INT); + e_config = e_config_domain_load("e", _e_config_edd); if (e_config) { @@ -627,6 +631,11 @@ e_config->desklock_timeout = 300.0; e_config->desklock_disable_screensaver = 0; + e_config->display_res_restore = 0; + e_config->display_res_width = 0; + e_config->display_res_height = 0; + e_config->display_res_hz = 0; + /* FIXME: fill up default gadcons! */ { E_Config_Shelf *cf_es; @@ -725,10 +734,6 @@ em->name = evas_stringshare_add("pager"); em->enabled = 1; e_config->modules = evas_list_append(e_config->modules, em); - em = E_NEW(E_Config_Module, 1); - em->name = evas_stringshare_add("randr"); - em->enabled = 1; - e_config->modules = evas_list_append(e_config->modules, em); } { E_Font_Fallback* eff; @@ -1692,6 +1697,10 @@ E_CONFIG_LIMIT(e_config->desklock_use_timeout, 0, 1); E_CONFIG_LIMIT(e_config->desklock_timeout, 1.0, 600.0); E_CONFIG_LIMIT(e_config->desklock_disable_screensaver, 0, 1); + E_CONFIG_LIMIT(e_config->display_res_restore, 0, 1); + E_CONFIG_LIMIT(e_config->display_res_width, 1, 8192); + E_CONFIG_LIMIT(e_config->display_res_height, 1, 8192); + E_CONFIG_LIMIT(e_config->display_res_hz, 0, 250); return 1; } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.h,v retrieving revision 1.88 retrieving revision 1.89 diff -u -3 -r1.88 -r1.89 --- e_config.h 3 Mar 2006 06:00:17 -0000 1.88 +++ e_config.h 3 Mar 2006 09:04:26 -0000 1.89 @@ -49,7 +49,7 @@ * versioning feature. the value of this is really irrelevant - just as * long as it increases every time we change something */ -#define E_CONFIG_FILE_VERSION 140 +#define E_CONFIG_FILE_VERSION 141 #define E_EVAS_ENGINE_DEFAULT 0 #define E_EVAS_ENGINE_SOFTWARE_X11 1 @@ -219,6 +219,11 @@ int desklock_use_timeout; // GUI double desklock_timeout; // GUI int desklock_disable_screensaver; + + int display_res_restore; + int display_res_width; + int display_res_height; + int display_res_hz; }; struct _E_Config_Module =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_display.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_int_config_display.c 15 Feb 2006 20:30:59 -0000 1.2 +++ e_int_config_display.c 3 Mar 2006 09:04:26 -0000 1.3 @@ -17,6 +17,8 @@ Evas_Object *res_list = NULL; typedef struct _Resolution Resolution; +typedef struct _SureBox SureBox; + struct _Resolution { int size_id; @@ -24,14 +26,134 @@ Ecore_X_Screen_Refresh_Rate *rates; }; +struct _SureBox +{ + E_Dialog *dia; + Ecore_Timer *timer; + int iterations; + Ecore_X_Screen_Size orig_size; + Ecore_X_Screen_Refresh_Rate orig_rate; + E_Config_Dialog *cfd; + E_Config_Dialog_Data *cfdata; +}; + struct _E_Config_Dialog_Data { E_Config_Dialog *cfd; Resolution *res; Ecore_X_Screen_Size orig_size; Ecore_X_Screen_Refresh_Rate orig_rate; + int restore; + + SureBox *surebox; }; +static void +_surebox_dialog_cb_delete(E_Win *win) +{ + E_Dialog *dia; + SureBox *sb; + + dia = win->data; + sb = dia->data; + sb->cfdata->surebox = NULL; + if (sb->timer) ecore_timer_del(sb->timer); + sb->timer = NULL; + free(sb); + e_object_del(E_OBJECT(dia)); +} + +static void +_surebox_dialog_cb_yes(void *data, E_Dialog *dia) +{ + _surebox_dialog_cb_delete(dia->win); +} + +static void +_surebox_dialog_cb_no(void *data, E_Dialog *dia) +{ + SureBox *sb; + + sb = data; + ecore_x_randr_screen_refresh_rate_set(sb->dia->win->container->manager->root, + sb->orig_size, sb->orig_rate); + e_config->display_res_width = sb->orig_size.width; + e_config->display_res_height = sb->orig_size.height; + e_config->display_res_hz = sb->orig_rate.rate; + sb->cfdata->orig_size = sb->orig_size; + sb->cfdata->orig_rate = sb->orig_rate; + e_config_save_queue(); + _surebox_dialog_cb_delete(dia->win); +} + +static void +_surebox_text_fill(SureBox *sb) +{ + char buf[4096]; + + snprintf(buf, sizeof(buf), + _("Does this look OK? Press <hilight>Yes</hilight> if it does, or No if not.<br>" + "If you do not press a button the old resolution of<br>" + "%dx%d at %d Hz will be restored in %d seconds."), + sb->orig_size.width, sb->orig_size.height, + sb->orig_rate.rate, sb->iterations); + e_dialog_text_set(sb->dia, buf); +} + +static int +_surebox_timer_cb(void *data) +{ + SureBox *sb; + + sb = data; + sb->iterations--; + _surebox_text_fill(sb); + if (sb->iterations == 0) + { + ecore_x_randr_screen_refresh_rate_set(sb->dia->win->container->manager->root, + sb->orig_size, sb->orig_rate); + e_config->display_res_width = sb->orig_size.width; + e_config->display_res_height = sb->orig_size.height; + e_config->display_res_hz = sb->orig_rate.rate; + sb->cfdata->orig_size = sb->orig_size; + sb->cfdata->orig_rate = sb->orig_rate; + e_config_save_queue(); + sb->timer = NULL; + e_object_del(E_OBJECT(sb->dia)); + return 0; + } + return 1; +} + +static SureBox * +_surebox_new(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + SureBox *sb; + + sb = E_NEW(SureBox, 1); + sb->dia = e_dialog_new(cfd->con); + sb->timer = ecore_timer_add(1.0, _surebox_timer_cb, sb); + sb->iterations = 15; + sb->orig_size = cfdata->orig_size; + sb->orig_rate = cfdata->orig_rate; + sb->cfd = cfd; + sb->cfdata = cfdata; + cfdata->surebox = sb; + sb->dia->data = sb; + e_dialog_title_set(sb->dia, _("Resolution change")); + _surebox_text_fill(sb); + e_win_delete_callback_set(sb->dia->win, _surebox_dialog_cb_delete); + e_dialog_button_add(sb->dia, _("Yes"), NULL, _surebox_dialog_cb_yes, sb); + e_dialog_button_add(sb->dia, _("No"), NULL, _surebox_dialog_cb_no, sb); + e_dialog_button_focus_num(sb->dia, 1); + e_win_borderless_set(sb->dia->win, 1); + e_win_layer_set(sb->dia->win, 6); + e_win_centered_set(sb->dia->win, 1); + e_win_sticky_set(sb->dia->win, 1); + e_dialog_show(sb->dia); +} + + EAPI E_Config_Dialog * e_int_config_display(E_Container *con) { @@ -58,6 +180,7 @@ man = e_manager_current_get(); cfdata->orig_size = ecore_x_randr_current_screen_size_get(man->root); cfdata->orig_rate = ecore_x_randr_current_screen_refresh_rate_get(man->root); + cfdata->restore = e_config->display_res_restore; } static void * @@ -73,6 +196,8 @@ static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { + if (cfdata->surebox) + e_object_del(E_OBJECT(cfdata->surebox->dia)); free(cfdata); } @@ -92,10 +217,14 @@ sscanf(sel_res, "%dx%d", &w, &h); sscanf(sel_rate, "%d Hz", &r); + e_config->display_res_width = cfdata->orig_size.width; + e_config->display_res_height = cfdata->orig_size.height; + e_config->display_res_hz = cfdata->orig_rate.rate; + if ((cfdata->orig_size.width == w) && (cfdata->orig_size.height == h) && (cfdata->orig_rate.rate == r)) - return 1; + goto saveonly; man = e_manager_current_get(); sizes = ecore_x_randr_screen_sizes_get(man->root, &n); @@ -119,18 +248,26 @@ } } - int ret; - ret = ecore_x_randr_screen_refresh_rate_set(man->root, size, rate); + e_config->display_res_width = size.width; + e_config->display_res_height = size.height; + e_config->display_res_hz = rate.rate; + ecore_x_randr_screen_refresh_rate_set(man->root, size, rate); + _surebox_new(cfd, cfdata); + cfdata->orig_size = size; cfdata->orig_rate = rate; + saveonly: + e_config->display_res_restore = cfdata->restore; + e_config_save_queue(); + return 1; } static Evas_Object * _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { - Evas_Object *o, *of, *ol, *rl; + Evas_Object *o, *of, *ol, *rl, *ob; E_Manager *man; Ecore_X_Screen_Size *sizes; Ecore_X_Screen_Size size; @@ -186,6 +323,9 @@ } } + ob = e_widget_check_add(evas, _("Restore this resolution on login"), &(cfdata->restore)); + e_widget_list_object_append(o, ob, 1, 1, 0.5); + e_widget_ilist_go(ol); e_widget_ilist_go(rl); return o; ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs