- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details:
+ *
+ * https://www.gnu.org/licenses/agpl-3.0.html
/* If people can't read the README, well maybe
* they can do it /online/.
*/
/* If people can't read the README, well maybe
* they can do it /online/.
*/
/* 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);
/* 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);
}
if (G_UNLIKELY(spawn_result == FALSE)) {
g_warning(_("Unable to open the following url: %s"), PLUGIN_WEBSITE);
}
if (response == GTK_RESPONSE_OK) {
/* This corresponds to the "Save" button, so we
want to save any settings that may have changed. */
g_object_set_data(G_OBJECT(hdaps->plugin), "dialog", NULL);
hdaps->poll_frequency = gtk_spin_button_get_value_as_int((GtkSpinButton*)hdaps->sb_poll_frequency);
if (response == GTK_RESPONSE_OK) {
/* This corresponds to the "Save" button, so we
want to save any settings that may have changed. */
g_object_set_data(G_OBJECT(hdaps->plugin), "dialog", NULL);
hdaps->poll_frequency = gtk_spin_button_get_value_as_int((GtkSpinButton*)hdaps->sb_poll_frequency);
snprintf(hdaps->sysfs_file, FILENAME_MAX, UNLOAD_HEADS_FMT, hdaps->device_name);
hdaps_save(hdaps->plugin, hdaps);
hdaps_reset_timeout(hdaps);
}
snprintf(hdaps->sysfs_file, FILENAME_MAX, UNLOAD_HEADS_FMT, hdaps->device_name);
hdaps_save(hdaps->plugin, hdaps);
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. */
/* Since there is already a "save" button, we should ignore
any changes that were made if the user presses "cancel"
instead. */
/* Create the dialog */
dialog = xfce_titled_dialog_new_with_buttons(_("Hdaps Plugin"),
GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))),
/* Create the dialog */
dialog = xfce_titled_dialog_new_with_buttons(_("Hdaps Plugin"),
GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))),
- GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR,
- GTK_STOCK_HELP, GTK_RESPONSE_HELP,
- GTK_STOCK_SAVE, GTK_RESPONSE_OK,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ "gtk-help", GTK_RESPONSE_HELP,
+ "gtk-save", GTK_RESPONSE_OK,
+ "gtk-cancel", GTK_RESPONSE_CANCEL,
g_signal_connect(G_OBJECT (dialog), "response",
G_CALLBACK(hdaps_configure_response), hdaps);
g_signal_connect(G_OBJECT (dialog), "response",
G_CALLBACK(hdaps_configure_response), hdaps);
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), vbox, TRUE, TRUE, 0);
-
+ gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
+ vbox, TRUE, TRUE, 0);
+
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
label = gtk_label_new(_("Poll Frequency:"));
gtk_size_group_add_widget(sg, label);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
label = gtk_label_new(_("Poll Frequency:"));
gtk_size_group_add_widget(sg, label);
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_widget_set_halign(label, 0.0);
+ gtk_widget_set_valign(label, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
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), label, FALSE, FALSE, 0);
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,
gtk_box_pack_start(GTK_BOX(hbox),
hdaps->sb_poll_frequency,
FALSE,
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
label = gtk_label_new(_("Device Name:"));
gtk_size_group_add_widget(sg, label);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
label = gtk_label_new(_("Device Name:"));
gtk_size_group_add_widget(sg, label);
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_widget_set_halign(label, 0.0);
+ gtk_widget_set_valign(label, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
/* Add the current device name, it should always be available.
Oh, and it should be the default, too. */
/* Add the current device name, it should always be available.
Oh, and it should be the default, too. */
/* 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);
/* 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;
/* 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
the only entry. Therefore, to avoid duplicates, we only
have to avoid adding the current device name a second time. */
if (strcmp(hdaps_devices[list_idx], hdaps->device_name) != 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
the only entry. Therefore, to avoid duplicates, we only
have to avoid adding the current device name a second time. */
if (strcmp(hdaps_devices[list_idx], hdaps->device_name) != 0) {
gtk_box_pack_start(GTK_BOX(hbox), hdaps->cb_device_name, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), hdaps->cb_device_name, FALSE, FALSE, 0);
-/* 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,
-/* 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";
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);
+ /* 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,
"copyright", copyright,
"destroy-with-parent", TRUE,
gtk_show_about_dialog(NULL,
"authors", authors,
"copyright", copyright,
"destroy-with-parent", TRUE,
"logo-icon-name", PACKAGE_NAME,
"icon-name", PACKAGE_NAME,
"program-name", PACKAGE_NAME,
"logo-icon-name", PACKAGE_NAME,
"icon-name", PACKAGE_NAME,
"program-name", PACKAGE_NAME,