+/*
+ * xfce4-hdaps, an XFCE4 panel plugin for the HDAPS system.
+ *
+ * Copyright Michael Orlitzky
+ *
+ * http://michael.orlitzky.com/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * 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.
+ *
+ * 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.
+ *
+ * http://www.fsf.org/licensing/licenses/gpl.html
+ */
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include <string.h>
#include <gtk/gtk.h>
-#include <libxfcegui4/libxfcegui4.h>
+#include <libxfce4ui/libxfce4ui.h>
#include <libxfce4panel/xfce-panel-plugin.h>
#include "xfce4-hdaps-dialogs.h"
+#include "hdaps.h"
/* Wild guess. Actually borrowed from some code
I copy-and-pasted. Doesn't seem too ugly. */
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
hdaps->cb_device_name = gtk_combo_box_new_text();
+
/* Add the current device name, it should always be available.
Oh, and it should be the default, too. */
gtk_combo_box_append_text((GtkComboBox*)hdaps->cb_device_name, hdaps->device_name);
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. I believe GTK takes care of the duplicates
- for us. */
+ 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++) {
- gtk_combo_box_append_text((GtkComboBox*)hdaps->cb_device_name, hdaps_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_combo_box_append_text((GtkComboBox*)hdaps->cb_device_name, hdaps_devices[list_idx]);
+ }
}
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,
+ gpointer data) {
+ gchar *cmd;
+
+ cmd = g_strdup_printf("%s %s","xdg-open", link);
+
+ /* Stolen from xfce4-power-manager. */
+ if (!g_spawn_command_line_async(cmd, NULL)) {
+ g_free(cmd);
+ cmd = g_strdup_printf("%s %s","xfbrowser4", link);
+ 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) {
- GdkPixbuf *icon;
- GtkWidget *dialog;
- XfceAboutInfo *about;
-
- /* Send NULL as our license, since GPL >= 3 is not
- supported yet. I don't particularly care if people
- want to re-license under GPL2, but I also don't want
- to cause any unnecessary confusion. */
- about = xfce_about_info_new("xfce4-hdaps",
- VERSION,
- _("An HDAPS Plugin for XFCE4"),
- XFCE_COPYRIGHT_TEXT("2009", "Michael Orlitzky"),
- NULL);
-
- xfce_about_info_set_homepage(about, PLUGIN_WEBSITE);
-
- xfce_about_info_add_credit(about,
- "Michael Orlitzky",
- "michael@orlitzky.com",
- _("A Reasonable Man"));
-
- icon = gtk_icon_theme_load_icon(gtk_icon_theme_get_default(),
- "xfce4-hdaps",
- 48, 0, NULL);
-
- dialog = xfce_about_dialog_new_with_values(NULL, about, icon);
- xfce_about_info_free(about);
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- g_object_unref(G_OBJECT(icon));
+ 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);
+
+ gtk_show_about_dialog(NULL,
+ "authors", authors,
+ "copyright", copyright,
+ "destroy-with-parent", TRUE,
+ "license", LICENSE_GPL3,
+ "logo-icon-name", PACKAGE_NAME,
+ "icon-name", PACKAGE_NAME,
+ "name", PACKAGE_NAME,
+ "version", PACKAGE_VERSION,
+ "website", PLUGIN_WEBSITE,
+ "website-label", "xfce4-hdaps homepage",
+ NULL);
}