aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/utils.c46
-rw-r--r--src/utils.h1
2 files changed, 47 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c
index 152f226..e5e96fa 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -172,3 +172,49 @@ have_program (const gchar * program)
return have;
}
+
+gboolean
+zenity_warning (const char * icon_name,
+ const char * title,
+ const char * text)
+{
+ char * command_line;
+ int exit_status;
+ GError * error;
+ gboolean confirmed;
+ char * zenity;
+
+ confirmed = FALSE;
+ zenity = g_find_program_in_path ("zenity");
+
+ if (zenity)
+ {
+ command_line = g_strdup_printf ("%s"
+ " --warning"
+ " --icon-name=\"%s\""
+ " --title=\"%s\""
+ " --text=\"%s\""
+ " --no-wrap",
+ zenity,
+ icon_name,
+ title,
+ text);
+
+ /* Treat errors as user confirmation.
+ Otherwise how will the user ever log out? */
+ exit_status = -1;
+ error = NULL;
+ if (!g_spawn_command_line_sync (command_line, NULL, NULL, &exit_status, &error))
+ {
+ confirmed = TRUE;
+ }
+ else
+ {
+ confirmed = g_spawn_check_exit_status (exit_status, &error);
+ }
+
+ g_free (command_line);
+ }
+ g_free (zenity);
+ return confirmed;
+}
diff --git a/src/utils.h b/src/utils.h
index 60c5ed4..a433a23 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -39,3 +39,4 @@ gboolean is_budgie();
gboolean execute_command(const gchar * cmd);
gboolean open_url(const gchar * url);
gboolean have_program(const gchar * program);
+gboolean zenity_warning(const char *icon_name, const char *title, const char *text);