Enlightenment CVS committal

Author  : devilhorns
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_config_color_classes.c 


Log Message:
Partially working color class config dialog.
  - Added basic/advanced apply code.
  - Needs perhaps colors in basic mode.
  
Still commented in config panel as it needs more work.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_color_classes.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_int_config_color_classes.c        3 Oct 2006 14:14:59 -0000       1.7
+++ e_int_config_color_classes.c        3 Oct 2006 17:17:04 -0000       1.8
@@ -11,7 +11,12 @@
 static Evas_Object *_adv_create_widgets   (E_Config_Dialog *cfd, Evas *evas, 
E_Config_Dialog_Data *cfdata);
 
 static void         _load_color_classes   (Evas_Object *obj, 
E_Config_Dialog_Data *cfdata);
-static void         _cb_enable_change     (void *data, Evas_Object *obj, void 
*event_info);
+static void         _radio_cb_change      (void *data, Evas_Object *obj, void 
*event_info);
+static void         _list_cb_change       (void *data, Evas_Object *obj);
+static void         _update_colors        (E_Config_Dialog_Data *cfdata, 
CFColor_Class *cc);
+static void         _color1_cb_change     (void *data, Evas_Object *obj);
+static void         _color2_cb_change     (void *data, Evas_Object *obj);
+static void         _color3_cb_change     (void *data, Evas_Object *obj);
 
 struct _CFColor_Hash 
 {
@@ -24,6 +29,10 @@
    const char *key;
    const char *name;
    int enabled;
+
+   int r, g, b, a;
+   int r2, g2, b2, a2;
+   int r3, g3, b3, a3;   
 };
 
 struct _E_Config_Dialog_Data 
@@ -34,6 +43,7 @@
    Evas_List *classes;
    struct 
      {
+       Evas_Object *renable, *rdisable;
        Evas_Object *c1, *c2, *c3;
      } gui;
 };
@@ -106,9 +116,38 @@
          {
             cfc->key = evas_stringshare_add(_color_hash[i].key);
             cfc->name = evas_stringshare_add(_(_color_hash[i].name));
-            cc = e_color_class_find(cfc->name);
+            cc = e_color_class_find(cfc->key);
             if (cc) 
-              cfc->enabled = 1;
+              {
+                 cfc->enabled = 1;
+                 cfc->r = cc->r;
+                 cfc->g = cc->g;
+                 cfc->b = cc->b;
+                 cfc->a = cc->a;
+                 cfc->r2 = cc->r2;
+                 cfc->g2 = cc->g2;
+                 cfc->b2 = cc->b2;
+                 cfc->a2 = cc->a2;
+                 cfc->r3 = cc->r3;
+                 cfc->g3 = cc->g3;
+                 cfc->b3 = cc->b3;
+                 cfc->a3 = cc->a3;
+              }
+            else 
+              {
+                 cfc->r = 255;
+                 cfc->g = 255;
+                 cfc->b = 255;
+                 cfc->a = 255;
+                 cfc->r2 = 0;
+                 cfc->g2 = 0;
+                 cfc->b2 = 0;
+                 cfc->a2 = 255;
+                 cfc->r3 = 0;
+                 cfc->g3 = 0;
+                 cfc->b3 = 0;
+                 cfc->a3 = 255;
+              }
          }
        else 
          cfc->name = evas_stringshare_add(_color_hash[i].name);
@@ -117,26 +156,8 @@
      }
    
    cfdata->color1 = calloc(1, sizeof(E_Color));
-   cfdata->color1->a = 255;
-   cfdata->color1->r = 255;
-   cfdata->color1->g = 255;
-   cfdata->color1->b = 255;
-   
    cfdata->color2 = calloc(1, sizeof(E_Color));
-   cfdata->color2->a = 255;
-   cfdata->color2->r = 0;
-   cfdata->color2->g = 0;
-   cfdata->color2->b = 0;
-
    cfdata->color3 = calloc(1, sizeof(E_Color));
-   cfdata->color3->a = 255;
-   cfdata->color3->r = 0;
-   cfdata->color3->g = 0;
-   cfdata->color3->b = 0;
-
-   e_color_update_rgb(cfdata->color1);
-   e_color_update_rgb(cfdata->color2);
-   e_color_update_rgb(cfdata->color3);
 }
 
 static void *
@@ -174,28 +195,117 @@
 static int
 _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
 {
+   Evas_List *l;
+   
+   for (l = cfdata->classes; l; l = l->next) 
+     {
+       CFColor_Class *c;
+       E_Color_Class *cc;
+       
+       c = l->data;
+       if (!c) continue;
+       if (!c->key) continue;
+
+       cc = e_color_class_find(c->key);
+       if (!c->enabled) 
+         {
+            if (cc)
+              e_color_class_del(cc->name);
+         }
+       else 
+         {
+            if (cc) 
+              {
+                 e_color_class_set(cc->name, c->r, c->g, c->b, c->a,
+                                   c->r2, c->g2, c->b2, c->a2,
+                                   c->r3, c->g3, c->b3, c->a3);
+              }
+            else 
+              {
+                 e_color_class_set(c->key, c->r, c->g, c->b, c->a,
+                                   c->r2, c->g2, c->b2, c->a2,
+                                   c->r3, c->g3, c->b3, c->a3);
+              }
+         }
+     }
    return 1;
 }
 
 static Evas_Object *
 _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data 
*cfdata) 
 {
-   Evas_Object *o, *of, *ob;
+   Evas_Object *o, *of, *ob, *ot;
+   E_Radio_Group *rg;
    Evas_List *l;
-   
+
    o = e_widget_list_add(evas, 0, 0);
+   ot = e_widget_table_add(evas, 1);
+   
    of = e_widget_framelist_add(evas, _("Color Classes"), 0);
    e_widget_framelist_content_align_set(of, 0.0, 0.0);
-   ob = e_widget_ilist_add(evas, 16, 16, &(cfdata->cur_class));
+   ob = e_widget_ilist_add(evas, 16, 16, NULL);
+   e_widget_on_change_hook_set(ob, _list_cb_change, cfdata);
    _load_color_classes(ob, cfdata);
    e_widget_framelist_object_append(of, ob);
-   e_widget_list_object_append(o, ob, 1, 1, 0.5);
+   e_widget_table_object_append(ot, of, 0, 0, 1, 4, 1, 1, 1, 1);
+
+   of = e_widget_framelist_add(evas, _("State"), 0);
+   e_widget_framelist_content_align_set(of, 0.0, 0.0);
+   rg = e_widget_radio_group_new(&(cfdata->state));
+   ob = e_widget_radio_add(evas, _("Enabled"), 1, rg);
+   cfdata->gui.renable = ob;
+   evas_object_smart_callback_add(ob, "changed", _radio_cb_change, cfdata);   
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_radio_add(evas, _("Disabled"), 0, rg);
+   cfdata->gui.rdisable = ob;
+   evas_object_smart_callback_add(ob, "changed", _radio_cb_change, cfdata);
+   e_widget_framelist_object_append(of, ob);
+   e_widget_table_object_append(ot, of, 1, 0, 1, 1, 1, 1, 1, 1);
+   
+   e_widget_list_object_append(o, ot, 1, 1, 0.5);
+   e_dialog_resizable_set(cfd->dia, 1);
    return o;
 }
 
 static int
 _adv_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
 {
+   Evas_List *l;
+   
+   for (l = cfdata->classes; l; l = l->next) 
+     {
+       CFColor_Class *c;
+       E_Color_Class *cc;
+       
+       c = l->data;
+       if (!c) continue;
+       if (!c->key) continue;
+
+       cc = e_color_class_find(c->key);
+       if (!c->enabled) 
+         {
+            if (cc)
+              e_color_class_del(cc->name);
+         }
+       else 
+         {
+            printf("Alpha: %i\n", c->a);
+            printf("Alpha2: %i\n", c->a2);
+            printf("Alpha3: %i\n", c->a3);
+            if (cc) 
+              {
+                 e_color_class_set(cc->name, c->r, c->g, c->b, c->a,
+                                   c->r2, c->g2, c->b2, c->a2,
+                                   c->r3, c->g3, c->b3, c->a3);
+              }
+            else 
+              {
+                 e_color_class_set(c->key, c->r, c->g, c->b, c->a,
+                                   c->r2, c->g2, c->b2, c->a2,
+                                   c->r3, c->g3, c->b3, c->a3);
+              }
+         }
+     }
    return 1;
 }
 
@@ -211,7 +321,8 @@
    
    of = e_widget_framelist_add(evas, _("Color Classes"), 0);
    e_widget_framelist_content_align_set(of, 0.0, 0.0);
-   ob = e_widget_ilist_add(evas, 16, 16, &(cfdata->cur_class));
+   ob = e_widget_ilist_add(evas, 16, 16, NULL);
+   e_widget_on_change_hook_set(ob, _list_cb_change, cfdata);
    _load_color_classes(ob, cfdata);
    e_widget_framelist_object_append(of, ob);
    e_widget_table_object_append(ot, of, 0, 0, 1, 4, 1, 1, 1, 1);
@@ -219,6 +330,7 @@
    of = e_widget_framelist_add(evas, _("Object Color"), 1);
    ob = e_widget_color_well_add(evas, cfdata->color1, 1);
    cfdata->gui.c1 = ob;
+   e_widget_on_change_hook_set(ob, _color1_cb_change, cfdata);
    e_widget_disabled_set(ob, 1);
    e_widget_framelist_object_append(of, ob);
    e_widget_table_object_append(ot, of, 1, 1, 1, 1, 1, 1, 1, 1);
@@ -226,6 +338,7 @@
    of = e_widget_framelist_add(evas, _("Outline Color"), 1);
    ob = e_widget_color_well_add(evas, cfdata->color2, 1);
    cfdata->gui.c2 = ob;
+   e_widget_on_change_hook_set(ob, _color2_cb_change, cfdata);
    e_widget_disabled_set(ob, 1);
    e_widget_framelist_object_append(of, ob);
    e_widget_table_object_append(ot, of, 1, 2, 1, 1, 1, 1, 1, 1);
@@ -233,6 +346,7 @@
    of = e_widget_framelist_add(evas, _("Shadow Color"), 1);
    ob = e_widget_color_well_add(evas, cfdata->color3, 1);
    cfdata->gui.c3 = ob;
+   e_widget_on_change_hook_set(ob, _color3_cb_change, cfdata);
    e_widget_disabled_set(ob, 1);
    e_widget_framelist_object_append(of, ob);
    e_widget_table_object_append(ot, of, 1, 3, 1, 1, 1, 1, 1, 1);
@@ -241,10 +355,12 @@
    e_widget_framelist_content_align_set(of, 0.0, 0.0);
    rg = e_widget_radio_group_new(&(cfdata->state));
    ob = e_widget_radio_add(evas, _("Enabled"), 1, rg);
-   evas_object_smart_callback_add(ob, "changed", _cb_enable_change, cfdata);   
+   cfdata->gui.renable = ob;
+   evas_object_smart_callback_add(ob, "changed", _radio_cb_change, cfdata);   
    e_widget_framelist_object_append(of, ob);
    ob = e_widget_radio_add(evas, _("Disabled"), 0, rg);
-   evas_object_smart_callback_add(ob, "changed", _cb_enable_change, cfdata);
+   cfdata->gui.rdisable = ob;
+   evas_object_smart_callback_add(ob, "changed", _radio_cb_change, cfdata);
    e_widget_framelist_object_append(of, ob);
    e_widget_table_object_append(ot, of, 1, 0, 1, 1, 1, 1, 1, 1);
    
@@ -288,23 +404,196 @@
 }
 
 static void 
-_cb_enable_change(void *data, Evas_Object *obj, void *event_info) 
+_radio_cb_change(void *data, Evas_Object *obj, void *event_info) 
 {
    E_Config_Dialog_Data *cfdata;
+   Evas_List *l;
    
    cfdata = data;
    if (!cfdata) return;
-   printf("Change Event: %i\n", cfdata->state);
+
+   for (l = cfdata->classes; l; l = l->next) 
+     {
+       CFColor_Class *c;
+       
+       c = l->data;
+       if (!c) continue;
+       if (!c->key) continue;
+       if (strcmp(c->name, cfdata->cur_class)) continue;
+       c->enabled = cfdata->state;
+       break;
+     }
+   
+   if (!cfdata->gui.c1) return;   
    if (cfdata->state == 0) 
      {
        e_widget_disabled_set(cfdata->gui.c1, 1);
        e_widget_disabled_set(cfdata->gui.c2, 1);
-       e_widget_disabled_set(cfdata->gui.c3, 1);       
+       e_widget_disabled_set(cfdata->gui.c3, 1);
      }
    else if (cfdata->state == 1) 
      {
        e_widget_disabled_set(cfdata->gui.c1, 0);
        e_widget_disabled_set(cfdata->gui.c2, 0);
        e_widget_disabled_set(cfdata->gui.c3, 0);
+     }
+}
+
+static void 
+_list_cb_change(void *data, Evas_Object *obj) 
+{
+   E_Config_Dialog_Data *cfdata;
+   Evas_List *l;
+   
+   cfdata = data;
+   if (!cfdata) return;
+   
+   cfdata->cur_class = (char *)e_widget_ilist_selected_label_get(obj);
+   
+   for (l = cfdata->classes; l; l = l->next) 
+     {
+       CFColor_Class *c;
+       int enable = 0;
+       
+       c = l->data;
+       if (!c) continue;
+       if (!c->key) continue;
+       if (!strcmp(c->name, cfdata->cur_class)) 
+         {
+            enable = c->enabled;
+            cfdata->state = enable;
+            if (enable) 
+              {
+                 e_widget_disabled_set(cfdata->gui.c1, 0);
+                 e_widget_disabled_set(cfdata->gui.c2, 0);
+                 e_widget_disabled_set(cfdata->gui.c3, 0);
+                 e_widget_radio_toggle_set(cfdata->gui.renable, 1);
+                 e_widget_radio_toggle_set(cfdata->gui.rdisable, 0);
+              }
+            else 
+              {
+                 e_widget_disabled_set(cfdata->gui.c1, 1);
+                 e_widget_disabled_set(cfdata->gui.c2, 1);
+                 e_widget_disabled_set(cfdata->gui.c3, 1);
+                 e_widget_radio_toggle_set(cfdata->gui.renable, 0);
+                 e_widget_radio_toggle_set(cfdata->gui.rdisable, 1);
+              }
+            _update_colors(cfdata, c);
+            break;
+         }     
+     }   
+}
+
+static void 
+_update_colors(E_Config_Dialog_Data *cfdata, CFColor_Class *cc) 
+{
+   cfdata->color1->a = cc->a;
+   cfdata->color1->r = cc->r;
+   cfdata->color1->g = cc->g;
+   cfdata->color1->b = cc->b;
+
+   cfdata->color2->a = cc->a2;
+   cfdata->color2->r = cc->r2;
+   cfdata->color2->g = cc->g2;
+   cfdata->color2->b = cc->b2;
+
+   cfdata->color3->a = cc->a3;
+   cfdata->color3->r = cc->r3;
+   cfdata->color3->g = cc->g3;
+   cfdata->color3->b = cc->b3;
+
+   e_color_update_rgb(cfdata->color1);
+   e_color_update_rgb(cfdata->color2);
+   e_color_update_rgb(cfdata->color3);
+   
+   e_widget_color_well_update(cfdata->gui.c1);
+   e_widget_color_well_update(cfdata->gui.c2);
+   e_widget_color_well_update(cfdata->gui.c3);
+}
+
+static void 
+_color1_cb_change(void *data, Evas_Object *obj) 
+{
+   E_Config_Dialog_Data *cfdata;
+   Evas_List *l;
+   
+   cfdata = data;
+   if (!cfdata) return;
+
+   e_color_update_rgb(cfdata->color1);
+   
+   for (l = cfdata->classes; l; l = l->next) 
+     {
+       CFColor_Class *c;
+       
+       c = l->data;
+       if (!c) continue;
+       if (!c->key) continue;
+       if (!strcmp(c->name, cfdata->cur_class)) 
+         {
+            c->r = cfdata->color1->r;
+            c->g = cfdata->color1->g;
+            c->b = cfdata->color1->b;
+            c->a = cfdata->color1->a;
+            break;
+         }
+     }
+}
+
+static void 
+_color2_cb_change(void *data, Evas_Object *obj) 
+{
+   E_Config_Dialog_Data *cfdata;
+   Evas_List *l;
+   
+   cfdata = data;
+   if (!cfdata) return;
+
+   e_color_update_rgb(cfdata->color2);
+   
+   for (l = cfdata->classes; l; l = l->next) 
+     {
+       CFColor_Class *c;
+       
+       c = l->data;
+       if (!c) continue;
+       if (!c->key) continue;
+       if (!strcmp(c->name, cfdata->cur_class)) 
+         {
+            c->r2 = cfdata->color2->r;
+            c->g2 = cfdata->color2->g;
+            c->b2 = cfdata->color2->b;
+            c->a2 = cfdata->color2->a;
+            break;
+         }
+     }
+}
+
+static void 
+_color3_cb_change(void *data, Evas_Object *obj) 
+{
+   E_Config_Dialog_Data *cfdata;
+   Evas_List *l;
+   
+   cfdata = data;
+   if (!cfdata) return;
+
+   e_color_update_rgb(cfdata->color3);
+   
+   for (l = cfdata->classes; l; l = l->next) 
+     {
+       CFColor_Class *c;
+       
+       c = l->data;
+       if (!c) continue;
+       if (!c->key) continue;
+       if (!strcmp(c->name, cfdata->cur_class)) 
+         {
+            c->r3 = cfdata->color3->r;
+            c->g3 = cfdata->color3->g;
+            c->b3 = cfdata->color3->b;
+            c->a3 = cfdata->color3->a;
+            break;
+         }
      }
 }



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to