[Xfce4-commits] <xfce4-weather-plugin:master> Merge branch 'short-location-name'

Harald Judt noreply at xfce.org
Mon Jul 16 16:00:03 CEST 2012


Updating branch refs/heads/master
         to a1cd2ccae937847fce078198449e152ddf366d19 (commit)
       from 5afb761ed7e95754f9565cb36e3bd8a152e3d642 (commit)

commit a1cd2ccae937847fce078198449e152ddf366d19
Merge: 5afb761 03eeed2
Author: Harald Judt <h.judt at gmx.at>
Date:   Mon Jul 16 15:59:04 2012 +0200

    Merge branch 'short-location-name'

commit 03eeed2caf8da0b4bd66772861379cc834718365
Author: Harald Judt <h.judt at gmx.at>
Date:   Mon Jul 16 15:50:46 2012 +0200

    Make location name editable.
    
    The user can now set the location name manually.

commit ca345ccf290e3b5019c4ce11a074b1551b1e39b6
Author: Harald Judt <h.judt at gmx.at>
Date:   Mon Jul 16 15:20:31 2012 +0200

    Do away with the short location name.
    
    Since the forecast data is requested using latitude and longitude,
    we're free to set the location name to something arbitrary. As a
    first step, sanitize the location name returned by the search
    dialog or by auto-detection via IP address and remove the code added
    previously for keeping an extra short location name.

 panel-plugin/weather-config.c  |   75 ++++++++++++++++++++++++++--------------
 panel-plugin/weather-summary.c |    4 +-
 panel-plugin/weather.c         |   14 -------
 panel-plugin/weather.h         |    3 +-
 4 files changed, 52 insertions(+), 44 deletions(-)

diff --git a/panel-plugin/weather-config.c b/panel-plugin/weather-config.c
index 0c10a2a..2929292 100644
--- a/panel-plugin/weather-config.c
+++ b/panel-plugin/weather-config.c
@@ -32,6 +32,7 @@
 
 #define OPTIONS_N 13
 #define BORDER    8
+#define LOC_NAME_MAX_LEN 50
 
 static const labeloption labeloptions[OPTIONS_N] = {
   {N_("Temperature (T)"), TEMPERATURE},
@@ -155,13 +156,39 @@ make_label (void)
 
 
 
+gchar *
+sanitize_location_name(const gchar *location_name)
+{
+  gchar *pos;
+  long   len;
+
+  pos = g_utf8_strchr (location_name, -1, ',');
+  if (pos != NULL)
+    return g_utf8_substring (location_name, 0,
+                             g_utf8_pointer_to_offset (location_name, pos));
+  else
+    {
+      len = g_utf8_strlen(location_name, LOC_NAME_MAX_LEN);
+
+      if (len >= LOC_NAME_MAX_LEN)
+        return g_utf8_substring (location_name, 0, len);
+
+      if (len > 0)
+        return g_strdup(location_name);
+
+      return g_strdup(_("Unset"));
+    }
+}
+
+
+
 void
 apply_options (xfceweather_dialog *dialog)
 {
   gint         option;
   gboolean     hasiter = FALSE;
   GtkTreeIter  iter;
-  gchar       *text, *pos;
+  gchar       *text;
   GValue       value = { 0, };
   GtkWidget   *widget;
 
@@ -183,9 +210,6 @@ apply_options (xfceweather_dialog *dialog)
   if (data->location_name)
     g_free (data->location_name);
 
-  if (data->location_name_short)
-    g_free (data->location_name_short);
-
   data->lat =
     g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->txt_lat)));
 
@@ -193,15 +217,7 @@ apply_options (xfceweather_dialog *dialog)
     g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->txt_lon)));
 
   data->location_name =
-    g_strdup (gtk_label_get_text (GTK_LABEL (dialog->txt_loc_name)));
-
-  pos = g_utf8_strchr(data->location_name, -1, ',');
-  if (pos != NULL)
-    data->location_name_short =
-      g_utf8_substring (data->location_name, 0,
-        g_utf8_pointer_to_offset (data->location_name, pos));
-  else
-    data->location_name_short = g_strdup (data->location_name);
+    g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->txt_loc_name)));
 
   /* call labels_clear() here */
   if (data->labels && data->labels->len > 0)
@@ -302,11 +318,15 @@ option_i (datas opt)
 static void auto_locate_cb(const gchar *loc_name, const gchar *lat, const gchar *lon, gpointer user_data)
 {
   xfceweather_dialog *dialog = (xfceweather_dialog *) user_data;
+  gchar *sane_loc_name;
 
   if (lat && lon && loc_name) {
     gtk_entry_set_text (GTK_ENTRY (dialog->txt_lat), lat);
     gtk_entry_set_text (GTK_ENTRY (dialog->txt_lon), lon);
-    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name), loc_name);
+    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_name), loc_name);
+    sane_loc_name = sanitize_location_name(loc_name);
+    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_name), sane_loc_name);
+    g_free(sane_loc_name);
     gtk_widget_set_sensitive(dialog->txt_loc_name, TRUE);
 #if GTK_CHECK_VERSION(2,12,0)
     gtk_widget_set_tooltip_text(dialog->txt_loc_name,loc_name);
@@ -314,7 +334,7 @@ static void auto_locate_cb(const gchar *loc_name, const gchar *lat, const gchar
   } else {
     gtk_entry_set_text (GTK_ENTRY (dialog->txt_lat), "");
     gtk_entry_set_text (GTK_ENTRY (dialog->txt_lon), "");
-    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name), _("Unset"));
+    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_name), _("Unset"));
     gtk_widget_set_sensitive(dialog->txt_loc_name, TRUE);
   }
 }
@@ -322,7 +342,7 @@ static void auto_locate_cb(const gchar *loc_name, const gchar *lat, const gchar
 static void start_auto_locate(xfceweather_dialog *dialog)
 {
   gtk_widget_set_sensitive(dialog->txt_loc_name, FALSE);
-  gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name), _("Detecting..."));
+  gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_name), _("Detecting..."));
   weather_search_by_ip(dialog->wd->proxy_host, dialog->wd->proxy_port,
   	auto_locate_cb, dialog);
 }
@@ -333,6 +353,7 @@ cb_findlocation (GtkButton *button,
 {
   xfceweather_dialog *dialog = (xfceweather_dialog *) user_data;
   search_dialog *sdialog;
+  gchar *loc_name;
 
   sdialog = create_search_dialog (NULL,
                                   dialog->wd->proxy_host,
@@ -341,7 +362,9 @@ cb_findlocation (GtkButton *button,
   if (run_search_dialog (sdialog)) {
     gtk_entry_set_text (GTK_ENTRY (dialog->txt_lat), sdialog->result_lat);
     gtk_entry_set_text (GTK_ENTRY (dialog->txt_lon), sdialog->result_lon);
-    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name), sdialog->result_name);
+    loc_name = sanitize_location_name(sdialog->result_name);
+    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_name), loc_name);
+    g_free(loc_name);
     gtk_widget_set_sensitive(dialog->txt_loc_name, TRUE);
 #if GTK_CHECK_VERSION(2,12,0)
     gtk_widget_set_tooltip_text(dialog->txt_loc_name,sdialog->result_name);
@@ -396,17 +419,14 @@ create_config_dialog (xfceweather_data *data,
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
 
 
-  label = gtk_label_new (_("Location:"));
+  label = gtk_label_new_with_mnemonic (_("L_ocation:"));
   dialog->txt_lat = gtk_entry_new ();
   dialog->txt_lon = gtk_entry_new ();
-  dialog->txt_loc_name = gtk_label_new ("");
+  dialog->txt_loc_name = gtk_entry_new ();
 
   gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-  gtk_misc_set_alignment (GTK_MISC (dialog->txt_loc_name), 0, 0.5);
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), GTK_WIDGET (dialog->txt_loc_name));
 
-#if GTK_CHECK_VERSION(2,12,0)
-  gtk_label_set_ellipsize (GTK_LABEL(dialog->txt_loc_name), PANGO_ELLIPSIZE_END);
-#endif
   if (dialog->wd->lat != NULL)
     gtk_entry_set_text (GTK_ENTRY (dialog->txt_lat),
                         dialog->wd->lat);
@@ -415,12 +435,15 @@ create_config_dialog (xfceweather_data *data,
                         dialog->wd->lon);
 
   if (dialog->wd->location_name != NULL)
-    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name),
+    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_name),
                         dialog->wd->location_name);
+  else
+    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_name), _("Unset"));
+  gtk_entry_set_max_length (GTK_ENTRY (dialog->txt_loc_name), LOC_NAME_MAX_LEN);
 
 #if GTK_CHECK_VERSION(2,12,0)
-  gtk_widget_set_tooltip_text(dialog->txt_loc_name,
-  	gtk_label_get_text(GTK_LABEL(dialog->txt_loc_name)));
+  gtk_widget_set_tooltip_text (dialog->txt_loc_name,
+                               gtk_entry_get_text (GTK_ENTRY (dialog->txt_loc_name)));
 #endif
 
   if (dialog->wd->lat == NULL || dialog->wd->lon == NULL) {
diff --git a/panel-plugin/weather-summary.c b/panel-plugin/weather-summary.c
index 1122f46..bf437cd 100644
--- a/panel-plugin/weather-summary.c
+++ b/panel-plugin/weather-summary.c
@@ -605,8 +605,8 @@ create_summary_window (xfceweather_data *data)
 						GTK_RESPONSE_HELP,
                                                 GTK_STOCK_CLOSE,
                                                 GTK_RESPONSE_ACCEPT, NULL);
-  if (data->location_name_short != NULL) {
-    title = g_strdup_printf (_("Weather report for: %s"), data->location_name_short);
+  if (data->location_name != NULL) {
+    title = g_strdup_printf (_("Weather report for: %s"), data->location_name);
     xfce_titled_dialog_set_subtitle (XFCE_TITLED_DIALOG (window), title);
     g_free (title);
   }
diff --git a/panel-plugin/weather.c b/panel-plugin/weather.c
index c8c7750..802761f 100644
--- a/panel-plugin/weather.c
+++ b/panel-plugin/weather.c
@@ -553,16 +553,6 @@ xfceweather_read_config (XfcePanelPlugin  *plugin,
       data->location_name = g_strdup (value);
     }
 
-  value = xfce_rc_read_entry (rc, "loc_name_short", NULL);
-
-  if (value)
-    {
-      if (data->location_name_short)
-        g_free (data->location_name_short);
-
-      data->location_name_short = g_strdup (value);
-    }
-
   data->unit_system = xfce_rc_read_int_entry(rc, "unit_system", METRIC);
 
   if (data->proxy_host)
@@ -657,9 +647,6 @@ xfceweather_write_config (XfcePanelPlugin  *plugin,
   if (data->location_name)
     xfce_rc_write_entry (rc, "loc_name", data->location_name);
 
-  if (data->location_name_short)
-    xfce_rc_write_entry (rc, "loc_name_short", data->location_name_short);
-
   xfce_rc_write_bool_entry (rc, "proxy_fromenv", data->proxy_fromenv);
 
   if (data->proxy_host)
@@ -1018,7 +1005,6 @@ xfceweather_free (XfcePanelPlugin  *plugin,
   g_free (data->lat);
   g_free (data->lon);
   g_free (data->location_name);
-  g_free (data->location_name_short);
   g_free (data->proxy_host);
 
   /* Free Array */
diff --git a/panel-plugin/weather.h b/panel-plugin/weather.h
index a7df36e..557509e 100644
--- a/panel-plugin/weather.h
+++ b/panel-plugin/weather.h
@@ -54,8 +54,7 @@ typedef struct
 
   gchar           *lat;
   gchar           *lon;
-  gchar		  *location_name;
-  gchar           *location_name_short;
+  gchar           *location_name;
   unit_systems     unit_system;
 
   xml_weather     *weatherdata;


More information about the Xfce4-commits mailing list