X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=panel-plugin%2Fxfce4-hdaps-dialogs.c;h=d03a6a7a482f10956bcc67059d47f1d5d22f4ff7;hb=2eda16ca596e8340605ad931ac59445ca53296f6;hp=5f2e87711ddf2ffb08d9943f660fe38af678a20e;hpb=5f69fb70c315fbbf79e435c88fabfb1b86be4b2a;p=xfce4-hdaps.git diff --git a/panel-plugin/xfce4-hdaps-dialogs.c b/panel-plugin/xfce4-hdaps-dialogs.c index 5f2e877..d03a6a7 100644 --- a/panel-plugin/xfce4-hdaps-dialogs.c +++ b/panel-plugin/xfce4-hdaps-dialogs.c @@ -22,10 +22,12 @@ #include #endif +#include #include -#include +#include #include #include "xfce4-hdaps-dialogs.h" +#include "hdaps.h" /* Wild guess. Actually borrowed from some code I copy-and-pasted. Doesn't seem too ugly. */ @@ -153,6 +155,7 @@ void hdaps_configure(XfcePanelPlugin *plugin, 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); @@ -162,14 +165,19 @@ void hdaps_configure(XfcePanelPlugin *plugin, 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); @@ -180,35 +188,53 @@ void hdaps_configure(XfcePanelPlugin *plugin, + +/* 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 ", NULL }; + const gchar *copyright = "Copyright \302\251 2011 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); }