3 /******** private function definitions **********/
4 static void _e_confirm_dialog_free(E_Confirm_Dialog *cd);
5 static void _e_confirm_dialog_delete(E_Win *win);
6 static void _e_confirm_dialog_yes(void *data, E_Dialog *dia);
7 static void _e_confirm_dialog_no(void *data, E_Dialog *dia);
14 e_object_del(dia->data);
17 /********** externally accesible functions ****************/
18 EAPI E_Confirm_Dialog *
19 e_confirm_dialog_show(const char *title, const char *icon, const char *text,
20 const char *button_text, const char *button2_text,
21 void (*func)(void *data), void (*func2)(void *data),
22 void *data, void *data2,
23 void (*del_func)(void *data), void *del_data)
28 cd = E_OBJECT_ALLOC(E_Confirm_Dialog, E_CONFIRM_DIALOG_TYPE, _e_confirm_dialog_free);
33 cd->del.func = del_func;
34 cd->del.data = del_data;
36 dia = e_dialog_new(e_container_current_get(e_manager_current_get()), "E", "_confirm_dialog");
39 e_object_del(E_OBJECT(cd));
45 e_win_delete_callback_set(dia->win, _e_confirm_dialog_delete);
46 e_object_del_attach_func_set(E_OBJECT(dia), _dia_del);
48 if (title) e_dialog_title_set(dia, title);
49 if (icon) e_dialog_icon_set(dia, icon, 64);
50 if (text) e_dialog_text_set(dia, text);
52 e_dialog_button_add(dia, !button_text ? _("Yes") : button_text, NULL, _e_confirm_dialog_yes, cd);
53 e_dialog_button_add(dia, !button2_text ? _("No") : button2_text, NULL, _e_confirm_dialog_no, cd);
55 e_dialog_button_focus_num(dia, 1);
56 e_win_centered_set(dia->win, 1);
62 /********* private function bodies ************/
64 _e_confirm_dialog_free(E_Confirm_Dialog *cd)
68 e_object_ref(E_OBJECT(cd));
69 cd->no_run = EINA_TRUE;
70 if (cd->no.func) cd->no.func(cd->no.data);
71 e_object_unref(E_OBJECT(cd));
74 if (cd->del.func) cd->del.func(cd->del.data);
75 e_object_del(E_OBJECT(cd->dia));
80 _e_confirm_dialog_yes(void *data, E_Dialog *dia __UNUSED__)
86 cd->no_run = EINA_TRUE;
87 if (cd->yes.func) cd->yes.func(cd->yes.data);
93 _e_confirm_dialog_no(void *data, E_Dialog *dia __UNUSED__)
99 cd->no_run = EINA_TRUE;
100 if (cd->no.func) cd->no.func(cd->no.data);
102 e_object_unref(data);
106 _e_confirm_dialog_delete(E_Win *win)
111 e_object_del(dia->data);