add a change callback to the color dialog

update grad preview live as you select a color


SVN revision: 26587
This commit is contained in:
rephorm 2006-10-14 04:50:00 +00:00 committed by rephorm
parent 7869f73061
commit 02f37f014b
4 changed files with 42 additions and 7 deletions

View 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)
{

View 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

View 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

View 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);
}
@ -72,6 +74,16 @@ _e_wid_color_cancel_cb(E_Color_Dialog *dia, E_Color *color, void *data)
wd->dia = NULL;
}
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)
{