Implemented an additional confirmation dialog
This commit is contained in:
parent
df3825f368
commit
85f69039c3
|
@ -16,6 +16,7 @@ static char const _license[] =
|
||||||
"along with this program. If not, see <http://www.gnu.org/licenses/>.\n";
|
"along with this program. If not, see <http://www.gnu.org/licenses/>.\n";
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
@ -429,13 +430,52 @@ static gboolean _about_on_closex(gpointer data)
|
||||||
/* presenter_close */
|
/* presenter_close */
|
||||||
int presenter_close(Presenter * presenter)
|
int presenter_close(Presenter * presenter)
|
||||||
{
|
{
|
||||||
/* FIXME check for unsaved changes */
|
int res;
|
||||||
|
|
||||||
|
/* FIXME really check for unsaved changes */
|
||||||
|
res = presenter_confirm(presenter, _("There are unsaved changes.\n"
|
||||||
|
"Discard or save them?"),
|
||||||
|
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||||
|
GTK_STOCK_DISCARD, GTK_RESPONSE_REJECT,
|
||||||
|
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
|
||||||
|
if(res == GTK_RESPONSE_CANCEL || res == GTK_RESPONSE_DELETE_EVENT)
|
||||||
|
return 1;
|
||||||
|
else if(res == GTK_RESPONSE_ACCEPT && presenter_save(presenter) != TRUE)
|
||||||
|
return 1;
|
||||||
gtk_widget_hide(presenter->window);
|
gtk_widget_hide(presenter->window);
|
||||||
gtk_main_quit();
|
gtk_main_quit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* presenter_confirm */
|
||||||
|
int presenter_confirm(Presenter * presenter, char const * message, ...)
|
||||||
|
{
|
||||||
|
GtkWidget * dialog;
|
||||||
|
va_list ap;
|
||||||
|
char const * action;
|
||||||
|
int res;
|
||||||
|
|
||||||
|
dialog = gtk_message_dialog_new(GTK_WINDOW(presenter->window),
|
||||||
|
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,
|
||||||
|
GTK_BUTTONS_NONE,
|
||||||
|
#if GTK_CHECK_VERSION(2, 6, 0)
|
||||||
|
"%s", _("Question"));
|
||||||
|
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),
|
||||||
|
#endif
|
||||||
|
"%s", message);
|
||||||
|
va_start(ap, message);
|
||||||
|
while((action = va_arg(ap, char const *)) != NULL)
|
||||||
|
gtk_dialog_add_button(GTK_DIALOG(dialog),
|
||||||
|
action, va_arg(ap, int));
|
||||||
|
va_end(ap);
|
||||||
|
gtk_window_set_title(GTK_WINDOW(dialog), _("Question"));
|
||||||
|
res = gtk_dialog_run(GTK_DIALOG(dialog));
|
||||||
|
gtk_widget_destroy(dialog);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* presenter_error */
|
/* presenter_error */
|
||||||
int presenter_error(Presenter * presenter, char const * message, int ret)
|
int presenter_error(Presenter * presenter, char const * message, int ret)
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,6 +32,7 @@ void presenter_delete(Presenter * presenter);
|
||||||
int presenter_set_monitor(Presenter * presenter, int monitor);
|
int presenter_set_monitor(Presenter * presenter, int monitor);
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
|
int presenter_confirm(Presenter * presenter, char const * message, ...);
|
||||||
int presenter_error(Presenter * presenter, char const * message, int ret);
|
int presenter_error(Presenter * presenter, char const * message, int ret);
|
||||||
|
|
||||||
int presenter_close(Presenter * presenter);
|
int presenter_close(Presenter * presenter);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user