/* Launch the user's web browser and direct them to
the plugin's webpage. */
gboolean spawn_result = g_spawn_command_line_async("exo-open --launch WebBrowser " PLUGIN_WEBSITE, NULL);
-
+
if (G_UNLIKELY(spawn_result == FALSE)) {
g_warning(_("Unable to open the following url: %s"), PLUGIN_WEBSITE);
}
-
+
return;
}
-
+
if (response == GTK_RESPONSE_OK) {
/* This corresponds to the "Save" button, so we
want to save any settings that may have changed. */
hdaps_reset_timeout(hdaps);
}
-
+
/* Since there is already a "save" button, we should ignore
any changes that were made if the user presses "cancel"
instead. */
void hdaps_configure(XfcePanelPlugin *plugin,
HdapsPlugin *hdaps) {
-
+
/* Here comes a bunch of GTK garbage to create the
settings dialog. */
-
+
GtkWidget *dialog;
GtkWidget *label;
GtkWidget *vbox;
GtkWidget *hbox;
GtkSizeGroup *sg;
-
+
/* Block the plugin menu while the configuration
dialogue is open. Don't forget to unblock it before
we close. */
g_signal_connect(G_OBJECT (dialog), "response",
G_CALLBACK(hdaps_configure_response), hdaps);
-
+
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, DEFAULT_BORDER_WIDTH);
gtk_container_set_border_width(GTK_CONTAINER(vbox), DEFAULT_BORDER_WIDTH - 2);
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
vbox, TRUE, TRUE, 0);
-
+
/* Create size group to keep widgets aligned */
sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
hdaps->sb_poll_frequency = gtk_spin_button_new_with_range(100, 5000, 100);
gtk_spin_button_set_value((GtkSpinButton*)hdaps->sb_poll_frequency, hdaps->poll_frequency);
-
+
gtk_box_pack_start(GTK_BOX(hbox),
hdaps->sb_poll_frequency,
FALSE,
/* Add the current device name, it should always be available.
Oh, and it should be the default, too. */
gtk_combo_box_text_append_text((GtkComboBoxText*)hdaps->cb_device_name, hdaps->device_name);
-
+
/* This function takes an index, and 0 should be the first
(only) index at this point. */
gtk_combo_box_set_active((GtkComboBox*)hdaps->cb_device_name, 0);
-
+
/* Now loop through the list of available devices, adding each
to the list as we go. */
char hdaps_devices[MAX_HDAPS_DEVICES][FILENAME_MAX];
int found_devices = get_hdaps_device_list(hdaps_devices);
int list_idx = 0;
-
+
for (list_idx = 0; list_idx < found_devices; list_idx++) {
/* We don't want to add duplicate entries to the combo box.
However, at this point, the current device name should be
gtk_combo_box_text_append_text((GtkComboBoxText*)hdaps->cb_device_name, hdaps_devices[list_idx]);
}
}
-
+
gtk_box_pack_start(GTK_BOX(hbox), hdaps->cb_device_name, FALSE, FALSE, 0);
-
+
/* Show the dialog and all of its widgets. */
gtk_widget_show_all(dialog);
}
-/* URL handler used on the About dialog. */
-static void hdaps_url_handler(GtkAboutDialog *about,
- const gchar *link,
+/* URI (http(s):// and mailto://) handler used on the About dialog. */
+static void hdaps_uri_handler(GtkAboutDialog *about,
+ const gchar *uri,
gpointer data) {
gchar *cmd;
- cmd = g_strdup_printf("%s %s","xdg-open", link);
+ cmd = g_strdup_printf("%s %s","xdg-open", uri);
- /* Stolen from xfce4-power-manager. */
if (!g_spawn_command_line_async(cmd, NULL)) {
g_free(cmd);
- cmd = g_strdup_printf("%s %s","xfbrowser4", link);
+ cmd = g_strdup_printf("%s %s","xdg-open", uri);
g_spawn_command_line_async(cmd, NULL);
}
g_free(cmd);
}
-/* Email address handler used on the About dialog. */
-static void hdaps_mailto_handler(GtkAboutDialog *about,
- const gchar *link,
- gpointer data) {
- gchar *cmd = g_strdup_printf( "%s %s", "xdg-email", link);
-
- g_spawn_command_line_async(cmd, NULL);
- g_free(cmd);
-}
-
-
void hdaps_about(XfcePanelPlugin *plugin) {
const gchar *authors[] = { "Michael Orlitzky <michael@orlitzky.com>", NULL };
- const gchar *copyright = "Copyright \302\251 2012 Michael Orlitzky";
-
- gtk_about_dialog_set_url_hook(hdaps_url_handler, NULL, NULL);
- gtk_about_dialog_set_email_hook(hdaps_mailto_handler, NULL, NULL);
+ const gchar *copyright = "Copyright \302\251 2019 Michael Orlitzky";
+
+ /* Use a custom URI handler for http(s):// and mailto:// URIs. The
+ default behavior apparently needs gio/gvfs to work, and I don't
+ have those installed. */
+ g_signal_connect(plugin,
+ "activate-link",
+ G_CALLBACK(hdaps_uri_handler),
+ NULL);
gtk_show_about_dialog(NULL,
"authors", authors,