Enlightenment CVS committal

Author  : rephorm
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        Makefile.am e_includes.h e_int_config_wallpaper.c e_spectrum.c 
        e_test.c e_widget_color_well.c e_widget_color_well.h 
        e_widget_csel.c e_widget_cslider.c e_widget_spectrum.c 
Added Files:
        e_color_dialog.c e_color_dialog.h 
        e_int_config_wallpaper_gradient.c 
        e_int_config_wallpaper_gradient.h 


Log Message:

add gradient bg dialog.
finish up the color selector widgets (plug some leaks)

TODO:
  * color_dialog needs a way of specifying initial color
  * color_well needs to use this when showing its color dialog
  * the grad dialog should remember the last selected colors
  * the color dialog whould probably keep a list of favorite / recent colors

Also, it looks like there's a leak (according to valgrind at least) in 
e_editable.c when you set the text and it reallocs.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/Makefile.am,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -3 -r1.141 -r1.142
--- Makefile.am 20 Aug 2006 04:48:27 -0000      1.141
+++ Makefile.am 20 Aug 2006 21:18:29 -0000      1.142
@@ -172,7 +172,9 @@
 e_widget_csel.h \
 e_widget_color_well.h \
 e_int_config_wallpaper.h \
-e_int_config_wallpaper_import.h
+e_int_config_wallpaper_import.h \
+e_int_config_wallpaper_gradient.h \
+e_color_dialog.h 
 
 enlightenment_src = \
 e_user.c \
@@ -321,6 +323,8 @@
 e_widget_color_well.c \
 e_int_config_wallpaper.c \
 e_int_config_wallpaper_import.c \
+e_int_config_wallpaper_gradient.c \
+e_color_dialog.c \
 $(ENLIGHTENMENTHEADERS)
 
 enlightenment_SOURCES = \
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_includes.h,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -3 -r1.119 -r1.120
--- e_includes.h        20 Aug 2006 04:48:27 -0000      1.119
+++ e_includes.h        20 Aug 2006 21:18:29 -0000      1.120
@@ -149,3 +149,4 @@
 #include "e_widget_cslider.h"
 #include "e_widget_color_well.h"
 #include "e_widget_csel.h"
+#include "e_color_dialog.h"
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_wallpaper.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_int_config_wallpaper.c    16 Aug 2006 12:24:23 -0000      1.5
+++ e_int_config_wallpaper.c    20 Aug 2006 21:18:29 -0000      1.6
@@ -30,6 +30,7 @@
    int all_this_desk_screen;
    /* dialogs */
    E_Win *win_import;
+   E_Dialog *dia_gradient;
 };
 
 EAPI E_Config_Dialog *
@@ -91,6 +92,15 @@
    cfdata->win_import = NULL;
 }
 
+EAPI void
+e_int_config_wallpaper_gradient_done(E_Config_Dialog *dia)
+{
+   E_Config_Dialog_Data *cfdata;
+   
+   cfdata = dia->cfdata;
+   cfdata->dia_gradient = NULL;
+}
+
 
 static void
 _cb_button_up(void *data1, void *data2)
@@ -163,7 +173,6 @@
    E_Config_Dialog_Data *cfdata;
    
    cfdata = data;
-   printf("SEL\n");
 }
 
 static void
@@ -255,8 +264,18 @@
    else cfdata->win_import = e_int_config_wallpaper_import(cfdata->cfd);
 }
 
-
-
+static void
+_cb_gradient(void *data1, void *data2)
+{
+   E_Config_Dialog_Data *cfdata;
+   
+   cfdata = data1;
+   if (cfdata->dia_gradient)
+     {
+       e_win_raise(cfdata->dia_gradient->win);
+     }
+   else cfdata->dia_gradient = e_int_config_wallpaper_gradient(cfdata->cfd);
+}
 
 static void
 _fill_data(E_Config_Dialog_Data *cfdata)
@@ -324,6 +343,7 @@
 _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
    if (cfdata->win_import) e_int_config_wallpaper_del(cfdata->win_import);
+   //if (cfdata->dia_gradient) 
e_int_config_wallpaper_gradient_del(cfdata->dia_gradient);
    E_FREE(cfdata->bg);
    free(cfdata);
 }
@@ -424,7 +444,7 @@
                           _cb_import, cfdata, NULL);
    e_widget_list_object_append(ol, o, 1, 0, 0.5);
    o = e_widget_button_add(evas, _("Gradient..."), "enlightenment/gradient",
-                          NULL, cfdata, NULL);
+                          _cb_gradient, cfdata, NULL);
    e_widget_list_object_append(ol, o, 1, 0, 0.5);
    e_widget_list_object_append(il, ol, 1, 0, 0.5);
    e_widget_list_object_append(of, il, 1, 0, 0.0);
@@ -564,7 +584,7 @@
                           _cb_import, cfdata, NULL);
    e_widget_list_object_append(ol, o, 1, 0, 0.5);
    o = e_widget_button_add(evas, _("Gradient..."), "enlightenment/gradient",
-                          NULL, cfdata, NULL);
+                          _cb_gradient, cfdata, NULL);
    e_widget_list_object_append(ol, o, 1, 0, 0.5);
    e_widget_list_object_append(il, ol, 1, 0, 0.5);
    e_widget_list_object_append(of, il, 1, 0, 0.0);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_spectrum.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_spectrum.c        17 Aug 2006 16:58:32 -0000      1.7
+++ e_spectrum.c        20 Aug 2006 21:18:29 -0000      1.8
@@ -55,6 +55,8 @@
   evas_object_del(sp->o_cursor);
 
   if (sp->draw_timer) ecore_timer_del(sp->draw_timer);
+
+  E_FREE(sp);
 }
 
 static void
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_test.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -3 -r1.68 -r1.69
--- e_test.c    20 Aug 2006 04:48:27 -0000      1.68
+++ e_test.c    20 Aug 2006 21:18:29 -0000      1.69
@@ -652,39 +652,19 @@
 #elif 0
 
 static void
-_e_test_cb_change(void *data, Evas_Object *obj)
+_e_test_cb_ok(E_Color_Dialog *dia, E_Color *color, void *data)
 {
-   E_Color *c = data;
-   printf("Current color: %d, %d, %d\n", c->r, c->g, c->b);
+   printf("Current color: %d, %d, %d\n", color->r, color->g, color->b);
 }
 
 static void
 _e_test_internal(E_Container *con)
 {
-   E_Dialog *dia;
-   Evas_Object *o;
-   Evas_Coord mw, mh;
-   E_Color *color;
+   E_Color_Dialog *d;
 
-   dia = e_dialog_new(con, "E", "_test");
-   e_dialog_title_set(dia, "Test Color Selector");
-
-   color = calloc(1, sizeof(E_Color));
-   color->a = 255;
-
-   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);
-
-   /* buttons at the bottom */
-   e_dialog_button_add(dia, "Cancel", NULL, NULL, NULL);
-   e_dialog_button_add(dia, "OK", NULL, NULL, NULL);
-   e_dialog_resizable_set(dia, 1);
-   e_win_centered_set(dia->win, 1);
-   e_dialog_show(dia);
-   e_win_resize(dia->win, 460, 260); 
+   d = e_color_dialog_new(con);
+   e_color_dialog_show(d);
+   e_color_dialog_select_callback_add(d, _e_test_cb_ok, NULL);
 }
 
 #else
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_color_well.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_widget_color_well.c       15 Aug 2006 00:54:33 -0000      1.1
+++ e_widget_color_well.c       20 Aug 2006 21:18:30 -0000      1.2
@@ -9,9 +9,17 @@
    Evas_Object *obj;
    Evas_Object *o_edje;
    Evas_Object *o_rect;
+
+   E_Color_Dialog *dia;
    E_Color *color;
+   E_Container *con; // container to pop a color dialog up on
 };
 
+static void _e_wid_update(E_Widget_Data *wd);
+static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char 
*emission, const char *source);
+static void _e_wid_color_select_cb(E_Color_Dialog *dia, E_Color *color, void 
*data);
+static void _e_wid_color_cancel_cb(E_Color_Dialog *dia, E_Color *color, void 
*data);
+
 static void
 _e_wid_update(E_Widget_Data *wd)
 {
@@ -21,26 +29,82 @@
    e_widget_change(wd->obj);
 }
 
+static void
+_e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const 
char *source)
+{
+   Evas_Object *wid;
+   E_Widget_Data *wd;
+
+   wid = data;
+   wd = e_widget_data_get(wid);
+
+   if (!wd->con) return;
+   if (!wd->dia)
+     {
+       wd->dia = e_color_dialog_new(wd->con);
+       e_color_dialog_select_callback_add(wd->dia, _e_wid_color_select_cb, wd);
+       e_color_dialog_cancel_callback_add(wd->dia, _e_wid_color_cancel_cb, wd);
+     }
+   e_color_dialog_show(wd->dia);
+}
+
+static void
+_e_wid_color_select_cb(E_Color_Dialog *dia, E_Color *color, void *data)
+{
+   E_Widget_Data *wd;
+   wd = data;
+   e_color_copy(color, wd->color);
+   _e_wid_update(wd);
+   wd->dia = NULL;
+}
+
+static void
+_e_wid_color_cancel_cb(E_Color_Dialog *dia, E_Color *color, void *data)
+{
+   E_Widget_Data *wd;
+   wd = data;
+   wd->dia = NULL;
+}
+
+static void
+_e_wid_del_hook(Evas_Object *obj)
+{
+   E_Widget_Data *wd;
+   int i;
+   
+   wd = e_widget_data_get(obj);
+   if (!wd) return;
+
+   E_FREE(wd);
+}
+
+/**
+ * Add a color well widget to an evas.
+ * An optional E_Container may be passed in. If not NULL, when clicked a color 
dialog will pop up.
+ */
 Evas_Object *
-e_widget_color_well_add(Evas *evas, E_Color *color)
+e_widget_color_well_add(Evas *evas, E_Color *color, E_Container *con)
 {
    Evas_Object *obj, *o;
    Evas_Coord mw, mh;
    E_Widget_Data *wd;
 
    obj = e_widget_add(evas);
+   e_widget_del_hook_set(obj, _e_wid_del_hook);
    
    wd = calloc(1, sizeof(E_Widget_Data));
    e_widget_data_set(obj, wd);
-   wd->color = color;
    wd->obj = obj;
 
+   wd->color = color;
+   wd->con = con;
+
    o = edje_object_add(evas);
    e_widget_sub_object_add(obj, o);
    e_widget_resize_object_set(obj, o);
    e_theme_edje_object_set(o, "base/theme/widgets",
                           "widgets/color_well");
-
+   edje_object_signal_callback_add(o, "click", "", _e_wid_signal_cb1, obj);
    evas_object_show(o); 
    wd->o_edje = o;
 
@@ -57,6 +121,9 @@
    return obj;
 }
 
+/**
+ * Let the color well know that its color data has changed.
+ */
 void
 e_widget_color_well_update(Evas_Object *obj)
 {
@@ -65,6 +132,5 @@
    wd = e_widget_data_get(obj);
    _e_wid_update(wd);
 }
-
 
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_color_well.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_widget_color_well.h       15 Aug 2006 00:54:33 -0000      1.1
+++ e_widget_color_well.h       20 Aug 2006 21:18:30 -0000      1.2
@@ -1,7 +1,7 @@
 #ifndef E_WIDGET_COLOR_WELL_H
 #define E_WIDGET_COLOR_WELL_H
 
-void e_widget_color_well_update(Evas_Object *obj);
-Evas_Object *e_widget_color_well_add(Evas *evas, E_Color *color);
+EAPI Evas_Object *e_widget_color_well_add    (Evas *evas, E_Color *color, 
E_Container *con);
+EAPI void         e_widget_color_well_update (Evas_Object *obj);
 
 #endif
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_csel.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_widget_csel.c     17 Aug 2006 16:58:32 -0000      1.5
+++ e_widget_csel.c     20 Aug 2006 21:18:30 -0000      1.6
@@ -17,6 +17,27 @@
 };
 
 static void
+_e_wid_del_hook(Evas_Object *obj)
+{
+   E_Widget_Data *wd;
+   int i;
+   
+   wd = e_widget_data_get(obj);
+   if (!wd) return;
+
+   for (i = 0; i < E_COLOR_COMPONENT_MAX; i++)
+     {
+       E_FREE(wd->values[i]);
+     }
+   E_FREE(wd->values);
+
+   evas_list_free(wd->sliders);
+   evas_list_free(wd->entries);
+
+   E_FREE(wd);
+}
+
+static void
 _e_wid_cb_radio_changed(void *data, Evas_Object *o)
 {
    E_Widget_Data *wd = data;
@@ -148,18 +169,19 @@
 {
    Evas_Object *obj, *o;
    Evas_Object *frame, *table;
-   E_Color*cv;
    int i;
    E_Radio_Group *grp = NULL;
    char *labels[6] = { "R", "G", "B", "H", "S", "V" };
    E_Widget_Data *wd;
 
    obj = e_widget_add(evas);
+   e_widget_del_hook_set(obj, _e_wid_del_hook);
    
    wd = calloc(1, sizeof(E_Widget_Data));
    wd->mode = 1;
    wd->cv = color;
    wd->obj = obj;
+   e_widget_data_set(obj, wd);
 
    table = e_widget_table_add(evas, 0);
    e_widget_sub_object_add(obj, table);
@@ -177,22 +199,22 @@
        switch(i)
          {
           case E_COLOR_COMPONENT_R:
-             snprintf(wd->values[i], 10, "%i", cv->r);
+             snprintf(wd->values[i], 10, "%i", wd->cv->r);
              break;
           case E_COLOR_COMPONENT_G:
-             snprintf(wd->values[i], 10, "%i", cv->g);
+             snprintf(wd->values[i], 10, "%i", wd->cv->g);
              break;
           case E_COLOR_COMPONENT_B:
-             snprintf(wd->values[i], 10, "%i", cv->b);
+             snprintf(wd->values[i], 10, "%i", wd->cv->b);
              break;
           case E_COLOR_COMPONENT_H:
-             snprintf(wd->values[i], 10, "%.0f", cv->h);
+             snprintf(wd->values[i], 10, "%.0f", wd->cv->h);
              break;
           case E_COLOR_COMPONENT_S:
-             snprintf(wd->values[i], 10, "%.2f", cv->s);
+             snprintf(wd->values[i], 10, "%.2f", wd->cv->s);
              break;
           case E_COLOR_COMPONENT_V:
-             snprintf(wd->values[i], 11, "%.2f", cv->v);
+             snprintf(wd->values[i], 11, "%.2f", wd->cv->v);
              break;
          }
 
@@ -201,7 +223,7 @@
        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);
+       o = e_widget_cslider_add(evas, i, wd->cv, 0, 0);
        e_widget_sub_object_add(obj, o);
        evas_object_show(o);
        wd->sliders = evas_list_append(wd->sliders, o);
@@ -217,23 +239,24 @@
 
      }
 
-   o = e_widget_spectrum_add(evas, wd->mode, cv);
+   o = e_widget_spectrum_add(evas, wd->mode, wd->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);
+   o = e_widget_cslider_add(evas, wd->mode, wd->cv, 1, 1);
    e_widget_sub_object_add(obj, o);
    e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
+   e_widget_min_size_set(o, 30, 50);
    evas_object_show(o);
    wd->vert = o;
-   e_widget_table_object_append(table, o, 2, 1, 1, 1, 1, 1, 0, 1);
+   e_widget_table_object_append(table, o, 2, 1, 1, 1, 0, 1, 0, 1);
 
    e_widget_table_object_append(table, frame, 3, 1, 1, 1, 1, 1, 1, 1);
 
-   o = e_widget_color_well_add(evas, cv);
+   o = e_widget_color_well_add(evas, wd->cv, NULL);
    e_widget_sub_object_add(obj, o);
    evas_object_show(o);
    wd->well = o;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_cslider.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_widget_cslider.c  17 Aug 2006 16:58:32 -0000      1.3
+++ e_widget_cslider.c  20 Aug 2006 21:18:30 -0000      1.4
@@ -15,7 +15,6 @@
    int fixed;
    E_Color_Component mode;
    int valnum;
-   //int r, g, b, a;
    E_Color *color;
 
    int dragging;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_spectrum.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_widget_spectrum.c 15 Aug 2006 00:54:33 -0000      1.2
+++ e_widget_spectrum.c 20 Aug 2006 21:18:30 -0000      1.3
@@ -77,6 +77,7 @@
 
    o = evas_object_rectangle_add(evas);
    evas_object_color_set(o, 0, 0, 0, 0);
+   e_widget_sub_object_add(obj, o);
    evas_object_show(o);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_cb_down, 
obj);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_wid_cb_move, 
obj);



-------------------------------------------------------------------------
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