[Xfce4-commits] <xfce4-weather-plugin:master> New value: Dew point.

Harald Judt noreply at xfce.org
Sat Jan 5 12:04:11 CET 2013


Updating branch refs/heads/master
         to 683de85dc95a128c32ee20a885efba8667b9d27f (commit)
       from 370991e9d84fb678e3d2e143b5bf7a64ab68e775 (commit)

commit 683de85dc95a128c32ee20a885efba8667b9d27f
Author: Harald Judt <h.judt at gmx.at>
Date:   Wed Jan 2 17:49:19 2013 +0100

    New value: Dew point.
    
    The user can now add the dew point value to the scrollbox via the
    configuration dialog.

 panel-plugin/weather-config.c  |    3 ++-
 panel-plugin/weather-data.c    |   24 ++++++++++++++++++++++++
 panel-plugin/weather-data.h    |    1 +
 panel-plugin/weather-summary.c |   10 +++++++---
 panel-plugin/weather.c         |    3 +++
 5 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/panel-plugin/weather-config.c b/panel-plugin/weather-config.c
index a531068..489c6a5 100644
--- a/panel-plugin/weather-config.c
+++ b/panel-plugin/weather-config.c
@@ -32,7 +32,7 @@
 #include "weather-scrollbox.h"
 
 #define UPDATE_TIMER_DELAY 7
-#define OPTIONS_N 13
+#define OPTIONS_N 14
 #define BORDER 4
 #define LOC_NAME_MAX_LEN 50
 
@@ -99,6 +99,7 @@ static const labeloption labeloptions[OPTIONS_N] = {
     {N_("Wind direction (WD)"), WIND_DIRECTION},
     {N_("Wind direction in degrees (WD)"), WIND_DIRECTION_DEG},
     {N_("Humidity (H)"), HUMIDITY},
+    {N_("Dew point (D)"), DEWPOINT},
     {N_("Low clouds (CL)"), CLOUDS_LOW},
     {N_("Medium clouds (CM)"), CLOUDS_MED},
     {N_("High clouds (CH)"), CLOUDS_HIGH},
diff --git a/panel-plugin/weather-data.c b/panel-plugin/weather-data.c
index ab7d45f..a42a309 100644
--- a/panel-plugin/weather-data.c
+++ b/panel-plugin/weather-data.c
@@ -21,6 +21,7 @@
 #endif
 
 #include <libxfce4util/libxfce4util.h>
+#include <math.h>
 
 #include "weather-parsers.h"
 #include "weather-data.h"
@@ -148,6 +149,22 @@ timeslice_is_interval(xml_time *timeslice)
 }
 
 
+/*
+ * Calculate dew point in Celsius, taking the Magnus formulae as a
+ * basis. Source: http://de.wikipedia.org/wiki/Taupunkt
+ */
+static gdouble
+calc_dewpoint(const xml_location *loc)
+{
+    gdouble temp = string_to_double(loc->temperature_value, 0);
+    gdouble humidity = string_to_double(loc->humidity_value, 0);
+    gdouble val = log(humidity / 100);
+
+    return (241.2 * val + 4222.03716 * temp / (241.2 + temp))
+        / (17.5043 - val - 17.5043 * temp / (241.2 + temp));
+}
+
+
 gchar *
 get_data(const xml_time *timeslice,
          const units_config *units,
@@ -232,6 +249,12 @@ get_data(const xml_time *timeslice,
     case HUMIDITY:
         return LOCALE_DOUBLE(loc->humidity_value, ROUND_TO_INT("%.1f"));
 
+    case DEWPOINT:
+        val = calc_dewpoint(loc);
+        if (units->temperature == FAHRENHEIT)
+            val = val * 9.0 / 5.0 + 32.0;
+        return g_strdup_printf(ROUND_TO_INT("%.1f"), val);
+
     case CLOUDS_LOW:
         return LOCALE_DOUBLE(loc->clouds_percent[CLOUDS_PERC_LOW],
                              ROUND_TO_INT("%.1f"));
@@ -276,6 +299,7 @@ get_unit(const units_config *units,
     case ALTITUDE:
         return (units->altitude == FEET) ? _("ft") : _("m");
     case TEMPERATURE:
+    case DEWPOINT:
         return (units->temperature == FAHRENHEIT) ? _("°F") : _("°C");
     case PRESSURE:
         switch (units->pressure) {
diff --git a/panel-plugin/weather-data.h b/panel-plugin/weather-data.h
index 03be37c..9d7d32a 100644
--- a/panel-plugin/weather-data.h
+++ b/panel-plugin/weather-data.h
@@ -32,6 +32,7 @@ typedef enum {
     WIND_DIRECTION,
     WIND_DIRECTION_DEG,
     HUMIDITY,
+    DEWPOINT,
     CLOUDS_LOW,
     CLOUDS_MED,
     CLOUDS_HIGH,
diff --git a/panel-plugin/weather-summary.c b/panel-plugin/weather-summary.c
index 6c51bc4..0fb2950 100644
--- a/panel-plugin/weather-summary.c
+++ b/panel-plugin/weather-summary.c
@@ -342,7 +342,7 @@ create_summary_tab(plugin_data *data)
 
     point = format_date(conditions->point, NULL, TRUE);
     value = g_strdup_printf
-        (_("\tTemperature, wind, atmosphere and cloud data calculated\n"
+        (_("\tTemperatures, wind, atmosphere and cloud data calculated\n"
            "\tfor:\t\t\t%s\n"),
          point);
     g_free(point);
@@ -415,9 +415,10 @@ create_summary_tab(plugin_data *data)
         APPEND_TEXT_ITEM_REAL(value);
     }
 
-    /* temperature */
-    APPEND_BTEXT(_("\nTemperature\n"));
+    /* temperatures */
+    APPEND_BTEXT(_("\nTemperatures\n"));
     APPEND_TEXT_ITEM(_("Temperature"), TEMPERATURE);
+    APPEND_TEXT_ITEM(_("Dew point"), DEWPOINT);
 
     /* wind */
     APPEND_BTEXT(_("\nWind\n"));
@@ -540,6 +541,9 @@ forecast_cell_get_tooltip_text(plugin_data *data,
     g_string_append_printf(text, _("Data calculated for:\t%s\n\n"), value);
     g_free(value);
 
+    g_string_append(text, _("<b>Temperatures</b>\n"));
+    APPEND_TOOLTIP_ITEM(_("Dew point:\t\t\t%s%s%s\n\n"), DEWPOINT);
+
     g_string_append(text, _("<b>Atmosphere</b>\n"));
     APPEND_TOOLTIP_ITEM(_("Pressure:\t%s%s%s\n"), PRESSURE);
     APPEND_TOOLTIP_ITEM(_("Humidity:\t%s%s%s\n\n"), HUMIDITY);
diff --git a/panel-plugin/weather.c b/panel-plugin/weather.c
index e6d64b5..9bf464c 100644
--- a/panel-plugin/weather.c
+++ b/panel-plugin/weather.c
@@ -133,6 +133,9 @@ make_label(const plugin_data *data,
     case HUMIDITY:
         lbl = _("H");
         break;
+    case DEWPOINT:
+        lbl = _("D");
+        break;
     case CLOUDS_LOW:
         lbl = _("CL");
         break;


More information about the Xfce4-commits mailing list