From 7ace2ffaad1c6be679d29d5240512ceff35ea4a1 Mon Sep 17 00:00:00 2001 From: JP Rosevear Date: Mon, 14 Jan 2002 01:07:09 +0000 Subject: add protos 2002-01-13 JP Rosevear * gui/alarm-notify/save.h: add protos * gui/alarm-notify/save.c (save_blessed_program): records a program as blessed (is_blessed_program): checks to see if a program is blessed * gui/alarm-notify/alarm-queue.c (procedure_notification_dialog): popup a dialog notifying the user that is a program and let them not see the dialog about this program again (procedure_notification): use above svn path=/trunk/; revision=15313 --- calendar/gui/alarm-notify/alarm-queue.c | 71 +++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 17 deletions(-) (limited to 'calendar/gui/alarm-notify/alarm-queue.c') diff --git a/calendar/gui/alarm-notify/alarm-queue.c b/calendar/gui/alarm-notify/alarm-queue.c index eedeff0f76..fd22649e71 100644 --- a/calendar/gui/alarm-notify/alarm-queue.c +++ b/calendar/gui/alarm-notify/alarm-queue.c @@ -23,16 +23,21 @@ #endif #include +#include +#include +#include +#include +#include +#include #include #include -#include -#include #include #include #include #include +#include +#include #include -#include #include #include "alarm.h" #include "alarm-notify-dialog.h" @@ -735,6 +740,49 @@ mail_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id) } /* Performs notification of a procedure alarm */ +static gboolean +procedure_notification_dialog (const char *cmd, const char *url) +{ + GtkWidget *dialog, *label, *checkbox; + char *str; + int btn; + + if (is_blessed_program (url)) + return TRUE; + + dialog = gnome_dialog_new (_("Warning"), + GNOME_STOCK_BUTTON_YES, + GNOME_STOCK_BUTTON_NO, + NULL); + + str = g_strdup_printf (_("An Evolution Calendar reminder is about to trigger. " + "This reminder is configured to run the following program:\n\n" + " %s\n\n" + "Are you sure you want to run this program?"), + cmd); + label = gtk_label_new (str); + gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), + label, TRUE, TRUE, 4); + g_free (str); + + checkbox = gtk_check_button_new_with_label + (_("Do not ask me about this program again.")); + gtk_widget_show (checkbox); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), + checkbox, TRUE, TRUE, 4); + + /* Run the dialog */ + btn = gnome_dialog_run (GNOME_DIALOG (dialog)); + if (btn == GNOME_YES && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox))) + save_blessed_program (url); + gnome_dialog_close (GNOME_DIALOG (dialog)); + + return (btn == GNOME_YES); +} + static void procedure_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id) { @@ -744,8 +792,7 @@ procedure_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id CalComponentText description; icalattach *attach; const char *url; - char *cmd, *str; - GtkWidget *dialog; + char *cmd; int result; comp = cqa->alarms->comp; @@ -772,25 +819,15 @@ procedure_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id g_assert (url != NULL); /* Ask for confirmation before executing the stuff */ - if (description.value) cmd = g_strconcat (url, " ", description.value, NULL); else cmd = (char *) url; - str = g_strdup_printf (_("An Evolution Calendar reminder is about to trigger.\n" - "This reminder is configured to run the following program:\n\n" - " %s\n\n" - "Are you sure you want to run this program?"), - cmd); - - dialog = gnome_question_dialog_modal (str, NULL, NULL); - g_free (str); - result = 0; - if (gnome_dialog_run (GNOME_DIALOG (dialog)) == GNOME_YES) + if (procedure_notification_dialog (cmd, url)) result = gnome_execute_shell (NULL, cmd); - + if (cmd != (char *) url) g_free (cmd); -- cgit v1.2.3