[Xfce4-commits] <xfce4-weather-plugin:master> Remove lookup buttons.
Harald Judt
noreply at xfce.org
Tue Nov 27 16:46:06 CET 2012
Updating branch refs/heads/master
to 001542871a446d8b7f526668ad4f80575309503b (commit)
from f553076d8b61f5cb5ec57e113d0d53120eca1a31 (commit)
commit 001542871a446d8b7f526668ad4f80575309503b
Author: Harald Judt <h.judt at gmx.at>
Date: Thu Nov 22 16:22:51 2012 +0100
Remove lookup buttons.
Instead of providing buttons to determine altitude and timezone,
auto-detect those values after the user has chosen a location with
the change button or after latitude and longitude have been
auto-detected.
If the user changes latitude and longitude manually, he should
do so with the other values too.
panel-plugin/weather-config.c | 217 ++++++++++++++++++-----------------------
1 files changed, 94 insertions(+), 123 deletions(-)
diff --git a/panel-plugin/weather-config.c b/panel-plugin/weather-config.c
index 514ebed..2457fc9 100644
--- a/panel-plugin/weather-config.c
+++ b/panel-plugin/weather-config.c
@@ -331,63 +331,6 @@ option_i(const data_types opt)
static void
-auto_locate_cb(const gchar *loc_name,
- const gchar *lat,
- const gchar *lon,
- const unit_systems unit_system,
- gpointer user_data)
-{
- xfceweather_dialog *dialog = (xfceweather_dialog *) user_data;
-
- if (lat && lon && loc_name) {
- gtk_entry_set_text(GTK_ENTRY(dialog->text_loc_name), loc_name);
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_lat),
- string_to_double(lat, 0));
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_lon),
- string_to_double(lon, 0));
- } else
- gtk_entry_set_text(GTK_ENTRY(dialog->text_loc_name), _("Unset"));
- gtk_widget_set_sensitive(dialog->text_loc_name, TRUE);
-}
-
-
-static void
-start_auto_locate(xfceweather_dialog *dialog)
-{
- gtk_widget_set_sensitive(dialog->text_loc_name, FALSE);
- gtk_entry_set_text(GTK_ENTRY(dialog->text_loc_name), _("Detecting..."));
- weather_search_by_ip(dialog->wd->session, auto_locate_cb, dialog);
-}
-
-
-static gboolean
-cb_findlocation(GtkButton *button,
- gpointer user_data)
-{
- xfceweather_dialog *dialog = (xfceweather_dialog *) user_data;
- search_dialog *sdialog;
- gchar *loc_name;
-
- sdialog = create_search_dialog(NULL, dialog->wd->session);
-
- gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE);
- if (run_search_dialog(sdialog)) {
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_lat),
- string_to_double(sdialog->result_lat, 0));
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_lon),
- string_to_double(sdialog->result_lon, 0));
- loc_name = sanitize_location_name(sdialog->result_name);
- gtk_entry_set_text(GTK_ENTRY(dialog->text_loc_name), loc_name);
- g_free(loc_name);
- }
- free_search_dialog(sdialog);
- gtk_widget_set_sensitive(GTK_WIDGET(button), TRUE);
-
- return FALSE;
-}
-
-
-static void
cb_lookup_altitude(SoupSession *session,
SoupMessage *msg,
gpointer user_data)
@@ -402,7 +345,7 @@ cb_lookup_altitude(SoupSession *session,
if (altitude) {
alt = string_to_double(altitude->altitude, -9999);
weather_debug("Altitude returned by GeoNames: %.0f meters", alt);
- if (alt != -9999)
+ if (alt >= -420)
gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_alt),
alt);
xml_altitude_free(altitude);
@@ -410,32 +353,6 @@ cb_lookup_altitude(SoupSession *session,
}
-static gboolean
-button_lookup_altitude_clicked(GtkButton *button,
- gpointer user_data)
-{
- xfceweather_dialog *dialog = (xfceweather_dialog *) user_data;
- gchar *url, latbuf[10], lonbuf[10];
- gdouble lat, lon;
-
- gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE);
- lat = gtk_spin_button_get_value(GTK_SPIN_BUTTON(dialog->spin_lat));
- lon = gtk_spin_button_get_value(GTK_SPIN_BUTTON(dialog->spin_lon));
-
- (void) g_ascii_formatd(latbuf, 10, "%.6f", lat);
- (void) g_ascii_formatd(lonbuf, 10, "%.6f", lon);
-
- url = g_strdup_printf("http://api.geonames.org"
- "/srtm3XML?lat=%s&lng=%s&username=%s",
- &latbuf[0], &lonbuf[0], GEONAMES_USERNAME);
- weather_http_queue_request(dialog->wd->session, url,
- cb_lookup_altitude, user_data);
- g_free(url);
- gtk_widget_set_sensitive(GTK_WIDGET(button), TRUE);
- return FALSE;
-}
-
-
static void
cb_lookup_timezone(SoupSession *session,
SoupMessage *msg,
@@ -459,27 +376,91 @@ cb_lookup_timezone(SoupSession *session,
}
-static gboolean
-button_lookup_timezone_clicked(GtkButton *button,
- gpointer user_data)
+static void
+lookup_altitude_timezone(const gpointer user_data)
{
xfceweather_dialog *dialog = (xfceweather_dialog *) user_data;
gchar *url, latbuf[10], lonbuf[10];
gdouble lat, lon;
- gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE);
lat = gtk_spin_button_get_value(GTK_SPIN_BUTTON(dialog->spin_lat));
lon = gtk_spin_button_get_value(GTK_SPIN_BUTTON(dialog->spin_lon));
(void) g_ascii_formatd(latbuf, 10, "%.6f", lat);
(void) g_ascii_formatd(lonbuf, 10, "%.6f", lon);
+ /* lookup altitude */
+ url = g_strdup_printf("http://api.geonames.org"
+ "/srtm3XML?lat=%s&lng=%s&username=%s",
+ &latbuf[0], &lonbuf[0], GEONAMES_USERNAME);
+ weather_http_queue_request(dialog->wd->session, url,
+ cb_lookup_altitude, user_data);
+ g_free(url);
+
+ /* lookup timezone */
url = g_strdup_printf("http://www.earthtools.org/timezone/%s/%s",
&latbuf[0], &lonbuf[0]);
weather_http_queue_request(dialog->wd->session, url,
cb_lookup_timezone, user_data);
g_free(url);
+}
+
+static void
+auto_locate_cb(const gchar *loc_name,
+ const gchar *lat,
+ const gchar *lon,
+ const unit_systems unit_system,
+ gpointer user_data)
+{
+ xfceweather_dialog *dialog = (xfceweather_dialog *) user_data;
+
+ if (lat && lon && loc_name) {
+ gtk_entry_set_text(GTK_ENTRY(dialog->text_loc_name), loc_name);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_lat),
+ string_to_double(lat, 0));
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_lon),
+ string_to_double(lon, 0));
+ lookup_altitude_timezone(user_data);
+ } else
+ gtk_entry_set_text(GTK_ENTRY(dialog->text_loc_name), _("Unset"));
+ gtk_widget_set_sensitive(dialog->text_loc_name, TRUE);
+}
+
+
+static void
+start_auto_locate(xfceweather_dialog *dialog)
+{
+ gtk_widget_set_sensitive(dialog->text_loc_name, FALSE);
+ gtk_entry_set_text(GTK_ENTRY(dialog->text_loc_name), _("Detecting..."));
+ weather_search_by_ip(dialog->wd->session, auto_locate_cb, dialog);
+}
+
+
+static gboolean
+cb_findlocation(GtkButton *button,
+ gpointer user_data)
+{
+ xfceweather_dialog *dialog = (xfceweather_dialog *) user_data;
+ search_dialog *sdialog;
+ gchar *loc_name;
+
+ sdialog = create_search_dialog(NULL, dialog->wd->session);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE);
+ if (run_search_dialog(sdialog)) {
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_lat),
+ string_to_double(sdialog->result_lat, 0));
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_lon),
+ string_to_double(sdialog->result_lon, 0));
+ loc_name = sanitize_location_name(sdialog->result_name);
+ gtk_entry_set_text(GTK_ENTRY(dialog->text_loc_name), loc_name);
+ g_free(loc_name);
+ }
+ free_search_dialog(sdialog);
+
+ lookup_altitude_timezone(user_data);
gtk_widget_set_sensitive(GTK_WIDGET(button), TRUE);
+
return FALSE;
}
@@ -487,9 +468,9 @@ button_lookup_timezone_clicked(GtkButton *button,
static GtkWidget *
create_location_page(xfceweather_dialog *dialog)
{
- GtkWidget *palign, *page, *hbox, *vbox, *table, *label, *image, *frame;
- GtkWidget *button_loc_change, *button_alt_lookup, *button_timezone_lookup;
- GtkSizeGroup *sg_label, *sg_spin, *sg_button;
+ GtkWidget *palign, *page, *hbox, *vbox, *label, *image;
+ GtkWidget *button_loc_change;
+ GtkSizeGroup *sg_label, *sg_spin;
palign = gtk_alignment_new(0.5, 0.5, 1, 1);
gtk_container_set_border_width(GTK_CONTAINER(palign), BORDER);
@@ -497,7 +478,6 @@ create_location_page(xfceweather_dialog *dialog)
gtk_container_add(GTK_CONTAINER(palign), page);
sg_label = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
sg_spin = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
- sg_button = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
/* location name */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -555,56 +535,47 @@ create_location_page(xfceweather_dialog *dialog)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
- gtk_box_pack_start(GTK_BOX(page), vbox, FALSE, FALSE, 0);
/* altitude */
- frame = gtk_frame_new(_("Corrections"));
- table = gtk_table_new(2, 4, FALSE);
- gtk_table_set_row_spacings(GTK_TABLE(table), BORDER*2);
- gtk_table_set_col_spacings(GTK_TABLE(table), BORDER/2);
+ hbox = gtk_hbox_new(FALSE, BORDER);
label = gtk_label_new_with_mnemonic(_("_Altitude:"));
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_size_group_add_widget(sg_label, label);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER);
dialog->spin_alt = gtk_spin_button_new_with_range(-420, 10000, 1);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_alt), 0);
+ gtk_size_group_add_widget(sg_spin, dialog->spin_alt);
gtk_label_set_mnemonic_widget(GTK_LABEL(label),
GTK_WIDGET(dialog->spin_alt));
dialog->label_alt_unit = gtk_label_new(_("meters"));
gtk_misc_set_alignment(GTK_MISC(dialog->label_alt_unit), 0, 0.5);
- button_alt_lookup =
- gtk_button_new_with_mnemonic(_("Lookup altitu_de"));
- gtk_size_group_add_widget(sg_button, button_alt_lookup);
- g_signal_connect(G_OBJECT(button_alt_lookup), "clicked",
- G_CALLBACK(button_lookup_altitude_clicked), dialog);
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
- gtk_table_attach_defaults(GTK_TABLE(table),
- dialog->spin_alt, 1, 2, 0, 1);
- gtk_table_attach_defaults(GTK_TABLE(table),
- dialog->label_alt_unit, 2, 3, 0, 1);
- gtk_table_attach_defaults(GTK_TABLE(table),
- button_alt_lookup, 3, 4, 0, 1);
+ gtk_box_pack_start(GTK_BOX(hbox), dialog->spin_alt, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), dialog->label_alt_unit, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
/* timezone */
+ hbox = gtk_hbox_new(FALSE, BORDER);
label = gtk_label_new_with_mnemonic(_("_Timezone:"));
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_size_group_add_widget(sg_label, label);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER);
dialog->spin_timezone = gtk_spin_button_new_with_range(-24, 24, 1);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_timezone), 0);
+ gtk_size_group_add_widget(sg_spin, dialog->spin_timezone);
gtk_label_set_mnemonic_widget(GTK_LABEL(label),
GTK_WIDGET(dialog->spin_timezone));
- button_timezone_lookup =
- gtk_button_new_with_mnemonic(_("Lookup time_zone"));
- gtk_size_group_add_widget(sg_button, button_timezone_lookup);
- g_signal_connect(G_OBJECT(button_timezone_lookup), "clicked",
- G_CALLBACK(button_lookup_timezone_clicked), dialog);
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
- gtk_table_attach_defaults(GTK_TABLE(table),
- dialog->spin_timezone, 1, 2, 1, 2);
- gtk_table_attach_defaults(GTK_TABLE(table),
- button_timezone_lookup, 3, 4, 1, 2);
- gtk_container_add(GTK_CONTAINER(frame), table);
- gtk_container_set_border_width(GTK_CONTAINER(table), BORDER);
- gtk_box_pack_start(GTK_BOX(page), frame, FALSE, FALSE, BORDER);
+ gtk_box_pack_start(GTK_BOX(hbox), dialog->spin_timezone, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
+
+ /* instructions for correction of altitude and timezone */
+ hbox = gtk_hbox_new(FALSE, BORDER);
+ label = gtk_label_new(_("Please change location name to your liking and "
+ "correct\naltitude and timezone if they are "
+ "not auto-detected correctly."));
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER/2);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER/2);
+ gtk_box_pack_start(GTK_BOX(page), vbox, FALSE, FALSE, 0);
/* initialize widgets with current data */
if (dialog->wd) {
@@ -622,7 +593,7 @@ create_location_page(xfceweather_dialog *dialog)
start_auto_locate(dialog);
g_object_unref(G_OBJECT(sg_label));
- g_object_unref(G_OBJECT(sg_button));
+ g_object_unref(G_OBJECT(sg_spin));
return palign;
}
More information about the Xfce4-commits
mailing list