X-Git-Url: http://gitweb.michael.orlitzky.com/?p=xfce4-hdaps.git;a=blobdiff_plain;f=panel-plugin%2Fxfce4-hdaps-dialogs.c;h=26f454e4aa146c104bdd80064acc34f673996322;hp=dc104fdff75f67329b4d84747e93d99fc4e8fe73;hb=60ffd1d1b7266d9a030b2c864135ff444f0cb917;hpb=c4bc79ca98f1f556a39ddba593d01a09b7b4bc9f diff --git a/panel-plugin/xfce4-hdaps-dialogs.c b/panel-plugin/xfce4-hdaps-dialogs.c index dc104fd..26f454e 100644 --- a/panel-plugin/xfce4-hdaps-dialogs.c +++ b/panel-plugin/xfce4-hdaps-dialogs.c @@ -48,15 +48,15 @@ static void hdaps_configure_response(GtkWidget *dialog, /* 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. */ @@ -68,7 +68,7 @@ static void hdaps_configure_response(GtkWidget *dialog, 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. */ @@ -83,16 +83,16 @@ static void hdaps_configure_response(GtkWidget *dialog, 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. */ @@ -102,9 +102,9 @@ void hdaps_configure(XfcePanelPlugin *plugin, dialog = xfce_titled_dialog_new_with_buttons(_("Hdaps Plugin"), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_HELP, GTK_RESPONSE_HELP, - GTK_STOCK_SAVE, GTK_RESPONSE_OK, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + "gtk-help", GTK_RESPONSE_HELP, + "gtk-save", GTK_RESPONSE_OK, + "gtk-cancel", GTK_RESPONSE_CANCEL, NULL); /* Center the dialog on screen. */ @@ -121,15 +121,16 @@ void hdaps_configure(XfcePanelPlugin *plugin, g_signal_connect(G_OBJECT (dialog), "response", G_CALLBACK(hdaps_configure_response), hdaps); - - vbox = gtk_vbox_new(FALSE, DEFAULT_BORDER_WIDTH); + + 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(dialog)->vbox), vbox, TRUE, TRUE, 0); - + 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); - hbox = gtk_hbox_new(FALSE, DEFAULT_BORDER_WIDTH); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, DEFAULT_BORDER_WIDTH); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(_("Poll Frequency:")); @@ -140,7 +141,7 @@ void hdaps_configure(XfcePanelPlugin *plugin, 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, @@ -148,7 +149,7 @@ void hdaps_configure(XfcePanelPlugin *plugin, 0); /* Create the device name dropdown. */ - hbox = gtk_hbox_new(FALSE, DEFAULT_BORDER_WIDTH); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, DEFAULT_BORDER_WIDTH); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(_("Device Name:")); @@ -162,17 +163,17 @@ void hdaps_configure(XfcePanelPlugin *plugin, /* 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 @@ -182,9 +183,9 @@ void hdaps_configure(XfcePanelPlugin *plugin, 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); } @@ -192,41 +193,34 @@ void hdaps_configure(XfcePanelPlugin *plugin, -/* 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 ", 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,