add a change callback to the color dialog
authorrephorm <rephorm>
Sat, 14 Oct 2006 04:50:00 +0000 (04:50 +0000)
committerrephorm <rephorm@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 14 Oct 2006 04:50:00 +0000 (04:50 +0000)
update grad preview live as you select a color

SVN revision: 26587

src/bin/e_color_dialog.c
src/bin/e_color_dialog.h
src/bin/e_test.c
src/bin/e_widget_color_well.c

index d3f7555..a489a23 100644 (file)
@@ -8,6 +8,7 @@ static void _e_color_dialog_button1_click(void *data, E_Dialog *edia);
 static void _e_color_dialog_button2_click(void *data, E_Dialog *edia);
 static void _e_color_dialog_free(E_Color_Dialog *dia);
 static void _e_color_dialog_dia_del(void *obj);
+static void _e_color_dialog_cb_csel_change(void *data, Evas_Object *obj);
 
 /**
  * Create a color selector dialog.
@@ -38,6 +39,7 @@ e_color_dialog_new(E_Container *con, const E_Color *color)
    evas_object_show(o);
    e_widget_min_size_get(o, &mw, &mh);
    e_dialog_content_set(dia->dia, o, 460, 260);
+   e_widget_on_change_hook_set(o, _e_color_dialog_cb_csel_change, dia);
 
    /* buttons at the bottom */
    e_dialog_button_add(dia->dia, "OK", NULL,  _e_color_dialog_button1_click, dia);
@@ -65,19 +67,37 @@ e_color_dialog_title_set(E_Color_Dialog *dia, const char *title)
 }
 
 void
-e_color_dialog_select_callback_add(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data)
+e_color_dialog_select_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data)
 {
    dia->select_func = func;
    dia->select_data = data;
 }
 
 void
-e_color_dialog_cancel_callback_add(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data)
+e_color_dialog_cancel_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data)
 {
    dia->cancel_func = func;
    dia->cancel_data = data;
 }
 
+
+EAPI void
+e_color_dialog_change_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data)
+{
+   dia->change_func = func;
+   dia->change_data = data;
+}
+
+static void
+_e_color_dialog_cb_csel_change(void *data, Evas_Object *obj)
+{
+   E_Color_Dialog *dia;
+   dia = data;
+   printf("COLOR DIALOG csel change\n");
+   if (dia->change_func && dia->color)
+     dia->change_func(dia, dia->color, dia->change_data);
+}
+
 static void
 _e_color_dialog_button1_click(void *data, E_Dialog *edia)
 {
index 0311f0b..03cd88a 100644 (file)
@@ -24,13 +24,16 @@ struct _E_Color_Dialog
    void  *select_data;
    void (*cancel_func)(E_Color_Dialog *dia, E_Color *color, void *data);
    void  *cancel_data;
+   void (*change_func)(E_Color_Dialog *dia, E_Color *color, void *data);
+   void  *change_data;
 };
 
 EAPI E_Color_Dialog  *e_color_dialog_new                (E_Container *con, const E_Color *initial_color);
 EAPI void             e_color_dialog_show               (E_Color_Dialog *dia);
 EAPI void             e_color_dialog_title_set          (E_Color_Dialog *dia, const char *title);
-EAPI void             e_color_dialog_select_callback_add(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data);
-EAPI void             e_color_dialog_cancel_callback_add(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data);
+EAPI void             e_color_dialog_select_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data);
+EAPI void             e_color_dialog_cancel_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data);
+EAPI void             e_color_dialog_change_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data);
 
 #endif
 #endif
index 7370a94..5062444 100644 (file)
@@ -668,7 +668,7 @@ _e_test_internal(E_Container *con)
 
    d = e_color_dialog_new(con, NULL);
    e_color_dialog_show(d);
-   e_color_dialog_select_callback_add(d, _e_test_cb_ok, NULL);
+   e_color_dialog_select_callback_set(d, _e_test_cb_ok, NULL);
 }
 
 #else
index 3eb0f57..6ea620f 100644 (file)
@@ -20,6 +20,7 @@ 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_color_change_cb(E_Color_Dialog *dia, E_Color *color, void *data);
 static void _e_wid_disable_hook(Evas_Object *obj);
 
 static void
@@ -48,8 +49,9 @@ _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char
    if (!wd->dia)
      {
        wd->dia = e_color_dialog_new(wd->con, wd->color);
-       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_select_callback_set(wd->dia, _e_wid_color_select_cb, wd);
+       e_color_dialog_cancel_callback_set(wd->dia, _e_wid_color_cancel_cb, wd);
+       e_color_dialog_change_callback_set(wd->dia, _e_wid_color_change_cb, wd);
      }
    e_color_dialog_show(wd->dia);
 }
@@ -73,6 +75,16 @@ _e_wid_color_cancel_cb(E_Color_Dialog *dia, E_Color *color, void *data)
 }
 
 static void
+_e_wid_color_change_cb(E_Color_Dialog *dia, E_Color *color, void *data)
+{
+   E_Widget_Data *wd;
+   wd = data;
+   printf("COLOR WELL change_cb\n");
+   e_color_copy(color, wd->color);
+   _e_wid_update(wd);
+}
+
+static void
 _e_wid_del_hook(Evas_Object *obj)
 {
    E_Widget_Data *wd;