Enlightenment CVS committal

Author  : rephorm
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_spectrum.c e_test.c e_widget_csel.c e_widget_csel.h 


Log Message:

make csel a proper widget instead of just a wrapper around table.
pass in a color struct to update
(use the change hook to know when changes have occured)

use a short timer instead of an idler to update the spectrum image data
  -- ideally, we would add a pre/post render hooks for smart objects. then we 
could redraw int he pre-render callback.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_spectrum.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_spectrum.c        14 Aug 2006 05:21:16 -0000      1.2
+++ e_spectrum.c        14 Aug 2006 07:05:31 -0000      1.3
@@ -14,7 +14,7 @@
   E_Color_Component mode; 
 
   E_Color *cv;
-  int draw_queued;
+  Ecore_Job *draw_timer;
 };
 
 static int _e_spectrum_redraw(void *d);
@@ -36,8 +36,6 @@
   evas_object_image_size_set(sp->o_spectrum, sp->iw, sp->ih);
   evas_object_image_alpha_set(sp->o_spectrum, 1);
 
-  ecore_idler_add(_e_spectrum_redraw, sp);
-
   evas_object_smart_member_add(sp->o_spectrum, o);
 }
 
@@ -52,6 +50,8 @@
   evas_object_del(sp->o_spectrum);
   evas_object_del(sp->o_event);
   evas_object_del(sp->o_cursor);
+
+  if (sp->draw_timer) ecore_timer_del(sp->draw_timer);
 }
 
 static void
@@ -257,7 +257,6 @@
   int r, g, b;
   float vx, vy, vz;
 
-  if (!sp->draw_queued) return 1;
   data = evas_object_image_data_get(sp->o_spectrum, 1);
   if (!data) return;
 
@@ -297,8 +296,8 @@
 
   evas_object_image_data_set(sp->o_spectrum, data);
   evas_object_image_data_update_add(sp->o_spectrum, 0, 0, sp->iw, sp->ih);
-  sp->draw_queued = 0;
-  return 1;
+  sp->draw_timer = NULL;
+  return 0;
 }
 
 static void
@@ -306,7 +305,8 @@
 {
   if (!sp || !sp->cv) return;
 
-  sp->draw_queued = 1;
+  if (sp->draw_timer) ecore_timer_del(sp->draw_timer);
+  sp->draw_timer = ecore_timer_add(.001, _e_spectrum_redraw, sp);
 }
 
 Evas_Object *
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_test.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -3 -r1.63 -r1.64
--- e_test.c    14 Aug 2006 04:38:49 -0000      1.63
+++ e_test.c    14 Aug 2006 07:05:31 -0000      1.64
@@ -794,17 +794,30 @@
    
 }
 #elif 0
+
+static void
+_e_test_cb_change(void *data, Evas_Object *obj)
+{
+   E_Color *c = data;
+   printf("Current color: %d, %d, %d\n", c->r, c->g, c->b);
+}
+
 static void
 _e_test_internal(E_Container *con)
 {
    E_Dialog *dia;
    Evas_Object *o;
    Evas_Coord mw, mh;
+   E_Color *color;
 
    dia = e_dialog_new(con);
    e_dialog_title_set(dia, "Test Color Selector");
-   o = e_widget_csel_add(dia->win->evas);
+
+   color = calloc(1, sizeof(E_Color));
+
+   o = e_widget_csel_add(dia->win->evas, color);
    evas_object_show(o);
+   e_widget_on_change_hook_set(o, _e_test_cb_change, color);
    e_widget_min_size_get(o, &mw, &mh);
    e_dialog_content_set(dia, o, mw, mh);
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_csel.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_widget_csel.c     14 Aug 2006 04:38:49 -0000      1.1
+++ e_widget_csel.c     14 Aug 2006 07:05:31 -0000      1.2
@@ -6,6 +6,7 @@
 typedef struct _E_Widget_Data E_Widget_Data;
 struct _E_Widget_Data
 {
+   Evas_Object *obj;
    Evas_List *sliders;
    Evas_List *entries;
    Evas_Object *spectrum, *vert, *current;
@@ -136,12 +137,14 @@
      }
 
    wd->changing = 0;
+
+   e_widget_change(wd->obj);
 }
 
 Evas_Object *
-e_widget_csel_add(Evas *evas)
+e_widget_csel_add(Evas *evas, E_Color *color)
 {
-   Evas_Object *o;
+   Evas_Object *obj, *o;
    Evas_Object *frame, *table;
    Evas_Coord mw, mh;
    E_Color*cv;
@@ -150,17 +153,21 @@
    char *labels[6] = { "R", "G", "B", "H", "S", "V" };
    E_Widget_Data *wd;
 
+   obj = e_widget_add(evas);
+   
+   wd = calloc(1, sizeof(E_Widget_Data));
+   wd->mode = 1;
+   wd->cv = color;
+   wd->obj = obj;
+
    table = e_widget_table_add(evas, 0);
+   e_widget_sub_object_add(obj, table);
+   e_widget_resize_object_set(obj, table);
 
    frame = e_widget_frametable_add(evas, "colors", 0);
-   wd = calloc(1, sizeof(E_Widget_Data));
-   wd->mode = 1;
+   e_widget_sub_object_add(obj, frame);
    grp = e_widget_radio_group_new(&wd->mode);
 
-   // all sliders update a single color value struct
-   cv = calloc(1, sizeof(E_Color));
-   wd->cv = cv;
-
    cv->r = 20; cv->g = 120; cv->b = 79;
    cv->a = 255;
    e_color_update_rgb(cv);
@@ -193,16 +200,19 @@
          }
 
        o = e_widget_radio_add(evas, labels[i], i, grp);
+       e_widget_sub_object_add(obj, o);
        e_widget_on_change_hook_set(o, _e_wid_cb_radio_changed, wd);
        e_widget_frametable_object_append(frame, o, 0, i, 1, 1, 1, 1, 0, 0);
 
        o = e_widget_cslider_add(evas, i, cv, 0, 0);
+       e_widget_sub_object_add(obj, o);
        evas_object_show(o);
        wd->sliders = evas_list_append(wd->sliders, o);
        e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
        e_widget_frametable_object_append(frame, o, 1, i, 1, 1, 1, 1, 1, 0);
 
        o = e_widget_entry_add(evas, &(wd->values[i]));
+       e_widget_sub_object_add(obj, o);
        evas_object_show(o);
        wd->entries = evas_list_append(wd->entries, o);
        e_widget_frametable_object_append(frame, o, 2, i, 1, 1, 1, 1, 1, 1);
@@ -211,12 +221,14 @@
      }
 
    o = e_widget_spectrum_add(evas, wd->mode, cv);
+   e_widget_sub_object_add(obj, o);
    evas_object_show(o);
    e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
    wd->spectrum = o;
    e_widget_table_object_append(table, o, 1, 1, 1, 1, 1, 1, 1, 1);
 
    o = e_widget_cslider_add(evas, wd->mode, cv, 1, 1);
+   e_widget_sub_object_add(obj, o);
    e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
    evas_object_show(o);
    wd->vert = o;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_csel.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_widget_csel.h     14 Aug 2006 04:38:49 -0000      1.1
+++ e_widget_csel.h     14 Aug 2006 07:05:31 -0000      1.2
@@ -1,6 +1,6 @@
 #ifndef E_WIDGET_CSEL_H
 #define E_WIDGET_CSEL_H
 
-Evas_Object *e_widget_csel_add(Evas *evas);
+Evas_Object *e_widget_csel_add(Evas *evas, E_Color *color);
 
 #endif



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to