aboutsummaryrefslogtreecommitdiff
path: root/src/utils.c
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2018-03-15 22:35:37 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2018-03-15 22:35:37 +0100
commit9819c2ee11af87fe567a2438e072dfd08774bb3d (patch)
treef1a2e8def4717f2e6fe0669e00141a1e0997da38 /src/utils.c
parent32df70ed9a55a9ec66c1689a007df9714bee16f5 (diff)
downloadayatana-indicator-power-9819c2ee11af87fe567a2438e072dfd08774bb3d.tar.gz
ayatana-indicator-power-9819c2ee11af87fe567a2438e072dfd08774bb3d.tar.bz2
ayatana-indicator-power-9819c2ee11af87fe567a2438e072dfd08774bb3d.zip
Add fallback code that produces a warning (using zenity), if we don't know how to handle certain actions.
Diffstat (limited to 'src/utils.c')
-rw-r--r--src/utils.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c
index 2e4c4cb..4bb063b 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -40,6 +40,52 @@ execute_command (const gchar * cmd)
}
}
+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;
+}
+
void
utils_handle_settings_request (void)
{
@@ -80,6 +126,12 @@ utils_handle_settings_request (void)
g_free (path);
}
+ else
+ {
+ zenity_warning ("dialog-warning",
+ _("Warning"),
+ _("The Ayatana Power Indicator does not support evoking the\npower settings dialog for your desktop environment, yet.\n\nPlease report this to the developers at:\nhttps://github.com/ArcticaProject/ayatana-indicator-power/issues"));
+ }
}
execute_command (control_center_cmd);