Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_config_dialog.c e_dialog.c e_dialog.h e_int_config_focus.c 
        e_widget.c e_widget_button.c e_widget_check.c e_widget_radio.c 


Log Message:


config dialogs now can enable/disable widgets and dialog buttons. ok and
apply are disabeld until a change is made - then they get enabled until u
apply (or ok) then they disable again until u change things again etc.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config_dialog.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_config_dialog.c   15 Oct 2005 05:38:27 -0000      1.7
+++ e_config_dialog.c   16 Oct 2005 07:32:11 -0000      1.8
@@ -11,6 +11,7 @@
 static void _e_config_dialog_cb_apply(void *data, E_Dialog *dia);
 static void _e_config_dialog_cb_advanced(void *data, void *data2);
 static void _e_config_dialog_cb_basic(void *data, void *data2);
+static void _e_config_dialog_cb_changed(void *data, Evas_Object *obj);
 
 /* local subsystem globals */
 
@@ -106,11 +107,14 @@
      }
    
    e_widget_min_size_get(o, &mw, &mh);
+   e_widget_on_change_hook_set(o, _e_config_dialog_cb_changed, cfd);
    e_dialog_content_set(cfd->dia, o, mw, mh);
    
    e_dialog_button_add(cfd->dia, _("OK"), NULL, _e_config_dialog_cb_ok, cfd);
    e_dialog_button_add(cfd->dia, _("Apply"), NULL, _e_config_dialog_cb_apply, 
cfd);
    e_dialog_button_add(cfd->dia, _("Cancel"), NULL, NULL, NULL);
+   e_dialog_button_disable_num_set(cfd->dia, 0, 1);
+   e_dialog_button_disable_num_set(cfd->dia, 1, 1);
    e_win_centered_set(cfd->dia->win, 1);
    e_dialog_show(cfd->dia);
    cfd->view_type = type;
@@ -157,6 +161,8 @@
      cfd->view.basic.apply_cfdata(cfd, cfd->cfdata);
    else
      cfd->view.advanced.apply_cfdata(cfd, cfd->cfdata);
+   e_dialog_button_disable_num_set(cfd->dia, 0, 1);
+   e_dialog_button_disable_num_set(cfd->dia, 1, 1);
 }
 
 static void
@@ -176,3 +182,13 @@
    cfd = data;
    _e_config_dialog_go(cfd, E_CONFIG_DIALOG_CFDATA_TYPE_BASIC);
 }
+
+static void
+_e_config_dialog_cb_changed(void *data, Evas_Object *obj)
+{
+   E_Config_Dialog *cfd;
+   
+   cfd = data;
+   e_dialog_button_disable_num_set(cfd->dia, 0, 0);
+   e_dialog_button_disable_num_set(cfd->dia, 1, 0);
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_dialog.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- e_dialog.c  14 Oct 2005 19:19:37 -0000      1.27
+++ e_dialog.c  16 Oct 2005 07:32:11 -0000      1.28
@@ -93,6 +93,16 @@
    return 1;
 }
 
+int
+e_dialog_button_disable_num_set(E_Dialog *dia, int button, int disabled)
+{
+   Evas_Object *o;
+   
+   o = evas_list_nth(dia->buttons, button);
+   if (o) e_widget_disabled_set(o, disabled);
+   return 1;
+}
+
 void
 e_dialog_title_set(E_Dialog *dia, char *title)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_dialog.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_dialog.h  12 Oct 2005 16:02:33 -0000      1.7
+++ e_dialog.h  16 Oct 2005 07:32:11 -0000      1.8
@@ -27,14 +27,15 @@
    void                *data;
 };
 
-EAPI E_Dialog *e_dialog_new                 (E_Container *con);
-EAPI void      e_dialog_button_add          (E_Dialog *dia, char *label, char 
*icon, void (*func) (void *data, E_Dialog *dia), void *data);
-EAPI int       e_dialog_button_focus_num    (E_Dialog *dia, int button);
-EAPI void      e_dialog_title_set           (E_Dialog *dia, char *title);
-EAPI void      e_dialog_text_set            (E_Dialog *dia, char *text);
-EAPI void      e_dialog_icon_set            (E_Dialog *dia, char *icon, 
Evas_Coord size);
-EAPI void      e_dialog_content_set         (E_Dialog *dia, Evas_Object *obj, 
Evas_Coord minw, Evas_Coord minh);
-EAPI void      e_dialog_show                (E_Dialog *dia);
+EAPI E_Dialog *e_dialog_new                    (E_Container *con);
+EAPI void      e_dialog_button_add             (E_Dialog *dia, char *label, 
char *icon, void (*func) (void *data, E_Dialog *dia), void *data);
+EAPI int       e_dialog_button_focus_num       (E_Dialog *dia, int button);
+EAPI int       e_dialog_button_disable_num_set (E_Dialog *dia, int button, int 
disabled);
+EAPI void      e_dialog_title_set              (E_Dialog *dia, char *title);
+EAPI void      e_dialog_text_set               (E_Dialog *dia, char *text);
+EAPI void      e_dialog_icon_set               (E_Dialog *dia, char *icon, 
Evas_Coord size);
+EAPI void      e_dialog_content_set            (E_Dialog *dia, Evas_Object 
*obj, Evas_Coord minw, Evas_Coord minh);
+EAPI void      e_dialog_show                   (E_Dialog *dia);
     
 #endif
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_focus.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_int_config_focus.c        15 Oct 2005 03:09:46 -0000      1.4
+++ e_int_config_focus.c        16 Oct 2005 07:32:11 -0000      1.5
@@ -45,6 +45,18 @@
 }
 
 /**--CREATE--**/
+static void
+_fill_data(CFData *cfdata)
+{
+   cfdata->focus_policy = e_config->focus_policy;
+   cfdata->focus_setting = e_config->focus_setting;
+   cfdata->pass_click_on = e_config->pass_click_on;
+   cfdata->always_click_to_raise = e_config->always_click_to_raise;
+   cfdata->always_click_to_focus = e_config->always_click_to_focus;
+
+   cfdata->mode = cfdata->focus_policy;
+}
+
 static void *
 _create_data(E_Config_Dialog *cfd)
 {
@@ -55,14 +67,7 @@
    CFData *cfdata;
    
    cfdata = E_NEW(CFData, 1);
-   cfdata->focus_policy = e_config->focus_policy;
-   cfdata->focus_setting = e_config->focus_setting;
-   cfdata->pass_click_on = e_config->pass_click_on;
-   cfdata->always_click_to_raise = e_config->always_click_to_raise;
-   cfdata->always_click_to_focus = e_config->always_click_to_focus;
-
-   cfdata->mode = cfdata->focus_policy;
-   
+   _fill_data(cfdata);
    return cfdata;
 }
 
@@ -131,6 +136,8 @@
    Evas_Object *o, *ob;
    E_Radio_Group *rg;
    
+   _fill_data(cfdata);
+   
    o = e_widget_list_add(evas, 0, 0);
    rg = e_widget_radio_group_new(&(cfdata->mode));
    ob = e_widget_radio_add(evas, _("Click Window to Focus"), E_FOCUS_CLICK, 
rg);
@@ -149,6 +156,8 @@
    Evas_Object *o, *ob, *of;
    E_Radio_Group *rg;
    
+   _fill_data(cfdata);
+   
    o = e_widget_list_add(evas, 0, 0);
    
    of = e_widget_framelist_add(evas, _("Focus"), 0);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_widget.c  16 Oct 2005 05:59:18 -0000      1.3
+++ e_widget.c  16 Oct 2005 07:32:11 -0000      1.4
@@ -202,9 +202,7 @@
 e_widget_focus_jump(Evas_Object *obj, int forward)
 {
    API_ENTRY return 0;
-   if ((!e_widget_can_focus_get(obj)) ||
-       (e_widget_disabled_get(obj)))
-     return 0;
+   if (!e_widget_can_focus_get(obj)) return 0;
        
    /* if it has a focus func its an end-point widget like a button */
    if (sd->focus_func)
@@ -235,10 +233,10 @@
               {
                  for (l = sd->subobjs; l; l = l->next)
                    {
-                      if ((e_widget_can_focus_get(l->data)) &&
-                          (!e_widget_disabled_get(l->data)))
+                      if (e_widget_can_focus_get(l->data))
                         {
-                           if (focus_next)
+                           if ((focus_next) &&
+                               (!e_widget_disabled_get(l->data)))
                              {
                                 /* the previous focused item was unfocused - 
so focus
                                  * the next one (that can be focused) */
@@ -262,10 +260,10 @@
               {
                  for (l = evas_list_last(sd->subobjs); l; l = l->prev)
                    {
-                      if ((e_widget_can_focus_get(l->data)) &&
-                          (!e_widget_disabled_get(l->data)))
+                      if (e_widget_can_focus_get(l->data))
                         {
-                           if (focus_next)
+                           if ((focus_next) &&
+                               (!e_widget_disabled_get(l->data)))
                              {
                                 /* the previous focused item was unfocused - 
so focus
                                  * the next one (that can be focused) */
@@ -405,13 +403,31 @@
 {
    API_ENTRY return;
    if (sd->on_change_func) sd->on_change_func(sd->on_change_data, obj);
+   else e_widget_change(e_widget_parent_get(obj));
 }
 
 void
 e_widget_disabled_set(Evas_Object *obj, int disabled)
 {
    API_ENTRY return;
+   if (((sd->disabled) && (disabled)) ||
+       ((!sd->disabled) && (!disabled))) return;
    sd->disabled = disabled;
+   if (sd->focused)
+     {
+       Evas_Object *o, *parent;
+
+       printf("disable focused %p!\n", obj);
+       parent = obj;
+        for (;;)
+          {
+            o = e_widget_parent_get(parent);
+            if (!o) break;
+            parent = o;
+         }
+       printf("jump %p\n", parent);
+       e_widget_focus_jump(parent, 1);
+     }
    if (sd->disable_func) sd->disable_func(obj);
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_button.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_widget_button.c   16 Oct 2005 05:59:18 -0000      1.4
+++ e_widget_button.c   16 Oct 2005 07:32:11 -0000      1.5
@@ -16,6 +16,7 @@
 static void _e_wid_del_hook(Evas_Object *obj);
 static void _e_wid_focus_hook(Evas_Object *obj);
 static void _e_wid_activate_hook(Evas_Object *obj);
+static void _e_wid_disable_hook(Evas_Object *obj);
 static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char 
*emission, const char *source);
 static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 /* local subsystem functions */
@@ -33,6 +34,7 @@
    e_widget_del_hook_set(obj, _e_wid_del_hook);
    e_widget_focus_hook_set(obj, _e_wid_focus_hook);
    e_widget_activate_hook_set(obj, _e_wid_activate_hook);
+   e_widget_disable_hook_set(obj, _e_wid_disable_hook);
    wd = calloc(1, sizeof(E_Widget_Data));
    wd->func = func;
    wd->data = data;
@@ -106,6 +108,18 @@
 }
 
 static void
+_e_wid_disable_hook(Evas_Object *obj)
+{
+   E_Widget_Data *wd;
+   
+   wd = e_widget_data_get(obj);
+   if (e_widget_disabled_get(obj))
+     edje_object_signal_emit(wd->o_button, "disabled", "");
+   else
+     edje_object_signal_emit(wd->o_button, "enabled", "");
+}
+
+static void
 _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const 
char *source)
 {
    e_widget_focus_steal(data);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_check.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_widget_check.c    16 Oct 2005 05:59:18 -0000      1.6
+++ e_widget_check.c    16 Oct 2005 07:32:11 -0000      1.7
@@ -14,6 +14,7 @@
 static void _e_wid_focus_hook(Evas_Object *obj);
 static void _e_wid_do(Evas_Object *obj);
 static void _e_wid_activate_hook(Evas_Object *obj);
+static void _e_wid_disable_hook(Evas_Object *obj);
 static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char 
*emission, const char *source);
 static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
     
@@ -32,6 +33,7 @@
    e_widget_del_hook_set(obj, _e_wid_del_hook);
    e_widget_focus_hook_set(obj, _e_wid_focus_hook);
    e_widget_activate_hook_set(obj, _e_wid_activate_hook);
+   e_widget_disable_hook_set(obj, _e_wid_disable_hook);
    wd = calloc(1, sizeof(E_Widget_Data));
    wd->valptr = val;
    e_widget_data_set(obj, wd);
@@ -112,6 +114,18 @@
 }
 
 static void
+_e_wid_disable_hook(Evas_Object *obj)
+{
+   E_Widget_Data *wd;
+   
+   wd = e_widget_data_get(obj);
+   if (e_widget_disabled_get(obj))
+     edje_object_signal_emit(wd->o_check, "disabled", "");
+   else
+     edje_object_signal_emit(wd->o_check, "enabled", "");
+}
+     
+static void
 _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const 
char *source)
 {
    _e_wid_do(data);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_radio.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_widget_radio.c    16 Oct 2005 05:59:18 -0000      1.5
+++ e_widget_radio.c    16 Oct 2005 07:32:11 -0000      1.6
@@ -21,6 +21,7 @@
 static void _e_wid_focus_hook(Evas_Object *obj);
 static void _e_wid_do(Evas_Object *obj);
 static void _e_wid_activate_hook(Evas_Object *obj);
+static void _e_wid_disable_hook(Evas_Object *obj);
 static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char 
*emission, const char *source);
 static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 /* local subsystem functions */
@@ -48,6 +49,7 @@
    e_widget_del_hook_set(obj, _e_wid_del_hook);
    e_widget_focus_hook_set(obj, _e_wid_focus_hook);
    e_widget_activate_hook_set(obj, _e_wid_activate_hook);
+   e_widget_disable_hook_set(obj, _e_wid_disable_hook);
    wd = calloc(1, sizeof(E_Widget_Data));
    wd->group = group;
    wd->valnum = valnum;
@@ -152,6 +154,18 @@
 }
 
 static void
+_e_wid_disable_hook(Evas_Object *obj)
+{
+   E_Widget_Data *wd;
+   
+   wd = e_widget_data_get(obj);
+   if (e_widget_disabled_get(obj))
+     edje_object_signal_emit(wd->o_radio, "disabled", "");
+   else
+     edje_object_signal_emit(wd->o_radio, "enabled", "");
+}
+
+static void
 _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const 
char *source)
 {
    _e_wid_do(data);




-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to