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

Reply via email to