3 static void _e_color_dialog_button1_click(void *data, E_Dialog *edia);
4 static void _e_color_dialog_button2_click(void *data, E_Dialog *edia);
5 static void _e_color_dialog_free(E_Color_Dialog *dia);
6 static void _e_color_dialog_dia_del(void *obj);
7 static void _e_color_dialog_cb_csel_change(void *data, Evas_Object *obj);
10 * Create a color selector dialog.
12 * @param con container to display on
13 * @param color color to initialize to (or NULL for black).
14 * @param alpha_enabled if set, uses alpha and let user edit it.
17 e_color_dialog_new(E_Container *con, const E_Color *color, Eina_Bool alpha_enabled)
23 dia = E_OBJECT_ALLOC(E_Color_Dialog, E_COLOR_DIALOG_TYPE, _e_color_dialog_free);
24 if (!dia) return NULL;
25 dia->dia = e_dialog_new(con, "E", "_color_dialog");
26 e_dialog_title_set(dia->dia, _("Color Selector"));
28 dia->color = calloc(1, sizeof(E_Color));
29 dia->initial = calloc(1, sizeof(E_Color));
32 e_color_copy(color, dia->color);
34 if ((!color) || (!alpha_enabled))
37 e_color_copy(dia->color, dia->initial);
39 o = e_widget_csel_add(dia->dia->win->evas, dia->color, alpha_enabled);
41 e_widget_size_min_get(o, &mw, &mh);
42 e_dialog_content_set(dia->dia, o, 460, 260);
43 e_widget_on_change_hook_set(o, _e_color_dialog_cb_csel_change, dia);
45 /* buttons at the bottom */
46 e_dialog_button_add(dia->dia, _("Select"), NULL, _e_color_dialog_button1_click, dia);
47 e_dialog_button_add(dia->dia, _("Cancel"), NULL, _e_color_dialog_button2_click, dia);
48 e_dialog_resizable_set(dia->dia, 1);
49 e_win_centered_set(dia->dia->win, 1);
52 e_object_del_attach_func_set(E_OBJECT(dia->dia), _e_color_dialog_dia_del);
58 e_color_dialog_show(E_Color_Dialog *dia)
60 e_dialog_show(dia->dia);
61 e_dialog_border_icon_set(dia->dia, "enlightenment/colors");
65 e_color_dialog_title_set(E_Color_Dialog *dia, const char *title)
67 e_dialog_title_set(dia->dia, title);
71 e_color_dialog_select_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data)
73 dia->select_func = func;
74 dia->select_data = data;
78 e_color_dialog_cancel_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data)
80 dia->cancel_func = func;
81 dia->cancel_data = data;
85 e_color_dialog_change_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data)
87 dia->change_func = func;
88 dia->change_data = data;
92 _e_color_dialog_cb_csel_change(void *data, Evas_Object *obj __UNUSED__)
97 if (dia->change_func && dia->color)
98 dia->change_func(dia, dia->color, dia->change_data);
102 _e_color_dialog_button1_click(void *data, E_Dialog *edia __UNUSED__)
107 if (dia->select_func && dia->color)
108 dia->select_func(dia, dia->color, dia->select_data);
109 _e_color_dialog_free(dia);
113 _e_color_dialog_button2_click(void *data, E_Dialog *edia __UNUSED__)
118 if (dia->cancel_func && dia->initial)
119 dia->cancel_func(dia, dia->initial, dia->cancel_data);
120 _e_color_dialog_free(data);
124 _e_color_dialog_free(E_Color_Dialog *dia)
128 e_object_del_attach_func_set(E_OBJECT(dia->dia), NULL);
129 e_object_del(E_OBJECT(dia->dia));
137 _e_color_dialog_dia_del(void *obj)
140 E_Color_Dialog *cdia = dia->data;
141 if (cdia->cancel_func && cdia->initial)
142 cdia->cancel_func(cdia, cdia->initial, cdia->cancel_data);
145 e_object_del(E_OBJECT(cdia));