when clicking on a color well, initialize the color selector to the well's color

few other cleanups


SVN revision: 24957
This commit is contained in:
rephorm 2006-08-20 22:15:27 +00:00 committed by rephorm
parent e84d43ddba
commit 24bb452439
9 changed files with 31 additions and 16 deletions

View File

@ -19,7 +19,7 @@ e_color_update_hsv(E_Color *ec)
}
void
e_color_copy(E_Color *from, E_Color *to)
e_color_copy(const E_Color *from, E_Color *to)
{
if (!from || !to) return;
to->r = from->r;

View File

@ -31,6 +31,6 @@ struct _E_Color
EAPI void e_color_update_rgb (E_Color *ec);
EAPI void e_color_update_hsv (E_Color *ec);
EAPI void e_color_copy (E_Color *from, E_Color *to);
EAPI void e_color_copy (const E_Color *from, E_Color *to);
#endif
#endif

View File

@ -8,8 +8,14 @@ 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);
/**
* Create a color selector dialog.
*
* @param con container to display on
* @param color color to initialize to (or NULL for black).
*/
E_Color_Dialog *
e_color_dialog_new (E_Container *con)
e_color_dialog_new (E_Container *con, const E_Color *color)
{
E_Color_Dialog *dia;
Evas_Object *o;
@ -21,6 +27,10 @@ e_color_dialog_new (E_Container *con)
e_dialog_title_set(dia->dia, "Color Selector");
dia->color = calloc(1, sizeof(E_Color));
if (color)
e_color_copy(color, dia->color);
else
dia->color->a = 255;
o = e_widget_csel_add(dia->dia->win->evas, dia->color);

View File

@ -26,7 +26,7 @@ struct _E_Color_Dialog
void *cancel_data;
};
EAPI E_Color_Dialog *e_color_dialog_new (E_Container *con);
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);

View File

@ -129,17 +129,17 @@ e_int_config_wallpaper_gradient(E_Config_Dialog *parent)
evas_object_show(o);
e_widget_table_object_append(ot, o, 2, 1, 1, 1, 1, 1, 1, 1);
o = e_widget_color_well_add(evas, cfdata->color1, parent->con);
o = e_widget_color_well_add(evas, cfdata->color1, 1);
evas_object_show(o);
e_widget_table_object_append(ot, o, 2, 2, 1, 1, 1, 1, 1, 1);
o = e_widget_color_well_add(evas, cfdata->color2, parent->con);
o = e_widget_color_well_add(evas, cfdata->color2, 1);
evas_object_show(o);
e_widget_table_object_append(ot, o, 2, 3, 1, 1, 1, 1, 1, 1);
e_widget_list_object_append(ol, ot, 1, 1, 0.5);
of = e_widget_framelist_add(evas, "Fill and Spread Options", 1);
of = e_widget_framelist_add(evas, "Fill Options", 1);
rg = e_widget_radio_group_new(&(cfdata->mode));
@ -172,7 +172,7 @@ e_int_config_wallpaper_gradient(E_Config_Dialog *parent)
e_dialog_button_add(dia, _("Cancel"), NULL, _import_cb_close, cfdata);
_import_opt_disabled_set(import, 1);
e_dialog_resizable_set(dia, 1);
e_dialog_resizable_set(dia, 0);
e_dialog_show(dia);
return dia;
}

View File

@ -662,7 +662,7 @@ _e_test_internal(E_Container *con)
{
E_Color_Dialog *d;
d = e_color_dialog_new(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);
}

View File

@ -13,6 +13,7 @@ struct _E_Widget_Data
E_Color_Dialog *dia;
E_Color *color;
E_Container *con; // container to pop a color dialog up on
int show_color_dialog;
};
static void _e_wid_update(E_Widget_Data *wd);
@ -38,10 +39,10 @@ _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char
wid = data;
wd = e_widget_data_get(wid);
if (!wd->con) return;
if (!wd->show_color_dialog || !wd->con) return;
if (!wd->dia)
{
wd->dia = e_color_dialog_new(wd->con);
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);
}
@ -83,11 +84,12 @@ _e_wid_del_hook(Evas_Object *obj)
* 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_Container *con)
e_widget_color_well_add(Evas *evas, E_Color *color, int show_color_dialog)
{
Evas_Object *obj, *o;
Evas_Coord mw, mh;
E_Widget_Data *wd;
E_Win *win;
obj = e_widget_add(evas);
e_widget_del_hook_set(obj, _e_wid_del_hook);
@ -97,7 +99,10 @@ e_widget_color_well_add(Evas *evas, E_Color *color, E_Container *con)
wd->obj = obj;
wd->color = color;
wd->con = con;
win = e_win_evas_object_win_get(obj);
wd->con = win->container;
wd->show_color_dialog = show_color_dialog;
o = edje_object_add(evas);
e_widget_sub_object_add(obj, o);

View File

@ -1,7 +1,7 @@
#ifndef E_WIDGET_COLOR_WELL_H
#define E_WIDGET_COLOR_WELL_H
EAPI Evas_Object *e_widget_color_well_add (Evas *evas, E_Color *color, E_Container *con);
EAPI Evas_Object *e_widget_color_well_add (Evas *evas, E_Color *color, int show_color_dialog);
EAPI void e_widget_color_well_update (Evas_Object *obj);
#endif

View File

@ -256,7 +256,7 @@ e_widget_csel_add(Evas *evas, E_Color *color)
e_widget_table_object_append(table, frame, 3, 1, 1, 1, 1, 1, 1, 1);
o = e_widget_color_well_add(evas, wd->cv, NULL);
o = e_widget_color_well_add(evas, wd->cv, 0);
e_widget_sub_object_add(obj, o);
evas_object_show(o);
wd->well = o;