[Xfce4-commits] <xfce4-weather-plugin:master> Implement new units handling and rounding of values.
Harald Judt
noreply at xfce.org
Tue Nov 27 16:46:13 CET 2012
Updating branch refs/heads/master
to 7c982646da5398836bf2089376386f75b88c48fb (commit)
from 4d0a9b80910a8f9c475194e9be18973ebb1d3438 (commit)
commit 7c982646da5398836bf2089376386f75b88c48fb
Author: Harald Judt <h.judt at gmx.at>
Date: Fri Nov 23 22:44:10 2012 +0100
Implement new units handling and rounding of values.
Replace the old metric/imperial system with a more configurable
solution. Additionally, support optional rounding of values everywhere
in the plugin except on the summary details tab where always the exact
values should be reported.
panel-plugin/weather-data.c | 160 +++++++++++++++++++++++---------------
panel-plugin/weather-data.h | 12 +--
panel-plugin/weather-debug.c | 2 -
panel-plugin/weather-summary.c | 43 ++++++-----
panel-plugin/weather-translate.c | 4 +-
panel-plugin/weather-translate.h | 2 +-
panel-plugin/weather.c | 58 +++++++++-----
panel-plugin/weather.h | 2 +-
8 files changed, 166 insertions(+), 117 deletions(-)
diff --git a/panel-plugin/weather-data.c b/panel-plugin/weather-data.c
index ffc353e..b205669 100644
--- a/panel-plugin/weather-data.c
+++ b/panel-plugin/weather-data.c
@@ -33,9 +33,11 @@
#define CHK_NULL(s) ((s) ? g_strdup(s) : g_strdup(""))
-#define LOCALE_DOUBLE(value, \
- format) (g_strdup_printf(format, \
- g_ascii_strtod(value, NULL)))
+#define ROUND_TO_INT(default_format) (round ? "%.0f" : default_format)
+
+#define LOCALE_DOUBLE(value, format) \
+ (g_strdup_printf(format, \
+ g_ascii_strtod(value, NULL)))
static gboolean
@@ -67,116 +69,146 @@ string_to_double(const gchar *str,
gchar *
get_data(const xml_time *timeslice,
- const unit_systems unit_system,
- const data_types type)
+ const units_config *units,
+ const data_types type,
+ gboolean round)
{
const xml_location *loc = NULL;
- double val;
+ gdouble val;
- if (timeslice == NULL || timeslice->location == NULL)
+ if (timeslice == NULL || timeslice->location == NULL || units == NULL)
return g_strdup("");
loc = timeslice->location;
switch (type) {
case ALTITUDE:
- if (unit_system == METRIC)
+ switch (units->altitude) {
+ case METERS:
return LOCALE_DOUBLE(loc->altitude, "%.0f");
- val = g_ascii_strtod(loc->altitude, NULL);
- val /= 0.3048;
- return g_strdup_printf("%.2f", val);
+
+ case FEET:
+ val = string_to_double(loc->altitude, 0);
+ val /= 0.3048;
+ return g_strdup_printf("%.2f", val);
+ }
+
case LATITUDE:
return LOCALE_DOUBLE(loc->latitude, "%.4f");
+
case LONGITUDE:
return LOCALE_DOUBLE(loc->longitude, "%.4f");
- case TEMPERATURE:
- case TEMPERATURE_RAW:
- val = g_ascii_strtod(loc->temperature_value, NULL);
- if (unit_system == IMPERIAL &&
+
+ case TEMPERATURE: /* source may be in Celsius or Fahrenheit */
+ val = string_to_double(loc->temperature_value, 0);
+ if (units->temperature == FAHRENHEIT &&
(!strcmp(loc->temperature_unit, "celcius") ||
!strcmp(loc->temperature_unit, "celsius")))
val = val * 9.0 / 5.0 + 32.0;
- else if (unit_system == METRIC &&
+ else if (units->temperature == CELSIUS &&
!strcmp(loc->temperature_unit, "fahrenheit"))
val = (val - 32.0) * 5.0 / 9.0;
- if (type == TEMPERATURE_RAW) {
- /* We might want to use the raw temperature value of
- * higher precision for calculations. */
- return g_strdup_printf("%.1f", val);
- } else {
- /*
- * Round half up for temperatures, according to the
- * "Federal Meteorological Handbook No. 1 - Surface
- * Weather Observations and Reports September 2005",
- * chapter 2.6.3 "Rounding Figures", available at
- * http://www.ofcm.gov/fmh-1/fmh1.htm. As a side-effect,
- * this approach automatically uses a negative zero "-0"
- * for values between -0.5 and 0, which is considered
- * important, as in the Celcius scale a value below 0
- * indicates freezing.
- */
- return g_strdup_printf("%.0f", val);
- }
- case PRESSURE:
- if (unit_system == METRIC)
- return LOCALE_DOUBLE(loc->pressure_value, "%.1f");
- val = g_ascii_strtod(loc->pressure_value, NULL);
- if (unit_system == IMPERIAL)
+ return g_strdup_printf(ROUND_TO_INT("%.1f"), val);
+
+ case PRESSURE: /* source is in hectopascals */
+ val = string_to_double(loc->pressure_value, 0);
+ switch (units->pressure) {
+ case INCH_MERCURY:
+ val *= 0.03;
+ case PSI:
val *= 0.01450378911491;
- return g_strdup_printf("%.1f", val);
- case WIND_SPEED:
- val = g_ascii_strtod(loc->wind_speed_mps, NULL);
- if (unit_system == IMPERIAL)
- val *= 2.2369362920544;
- else if (unit_system == METRIC)
+ case TORR:
+ val /= 1.333224;
+ }
+ return g_strdup_printf(ROUND_TO_INT("%.1f"), val);
+
+ case WIND_SPEED: /* source is in meters per hour */
+ val = string_to_double(loc->wind_speed_mps, 0);
+ switch (units->windspeed) {
+ case KMH:
val *= 3.6;
- return g_strdup_printf("%.1f", val);
+ case MPH:
+ val *= 2.2369362920544;
+ }
+ return g_strdup_printf(ROUND_TO_INT("%.1f"), val);
+
case WIND_BEAUFORT:
return CHK_NULL(loc->wind_speed_beaufort);
+
case WIND_DIRECTION:
return CHK_NULL(loc->wind_dir_name);
+
case WIND_DIRECTION_DEG:
return LOCALE_DOUBLE(loc->wind_dir_deg, "%.1f");
+
case HUMIDITY:
- return LOCALE_DOUBLE(loc->humidity_value, "%.1f");
+ return LOCALE_DOUBLE(loc->humidity_value, ROUND_TO_INT("%.1f"));
+
case CLOUDS_LOW:
- return LOCALE_DOUBLE(loc->clouds_percent[CLOUDS_PERC_LOW], "%.1f");
+ return LOCALE_DOUBLE(loc->clouds_percent[CLOUDS_PERC_LOW],
+ ROUND_TO_INT("%.1f"));
+
case CLOUDS_MED:
- return LOCALE_DOUBLE(loc->clouds_percent[CLOUDS_PERC_MED], "%.1f");
+ return LOCALE_DOUBLE(loc->clouds_percent[CLOUDS_PERC_MED],
+ ROUND_TO_INT("%.1f"));
+
case CLOUDS_HIGH:
- return LOCALE_DOUBLE(loc->clouds_percent[CLOUDS_PERC_HIGH], "%.1f");
+ return LOCALE_DOUBLE(loc->clouds_percent[CLOUDS_PERC_HIGH],
+ ROUND_TO_INT("%.1f"));
+
case CLOUDINESS:
return LOCALE_DOUBLE(loc->clouds_percent[CLOUDS_PERC_CLOUDINESS],
- "%.1f");
+ ROUND_TO_INT("%.1f"));
+
case FOG:
- return LOCALE_DOUBLE(loc->fog_percent, "%.1f");
- case PRECIPITATIONS:
- if (unit_system == METRIC)
- return LOCALE_DOUBLE(loc->precipitation_value, "%.1f");
- val = g_ascii_strtod(loc->precipitation_value, NULL);
- if (unit_system == IMPERIAL)
+ return LOCALE_DOUBLE(loc->fog_percent, ROUND_TO_INT("%.1f"));
+
+ case PRECIPITATIONS: /* source is in millimeters */
+ val = string_to_double(loc->precipitation_value, 0);
+ if (units->precipitations == INCHES)
val /= 25.4;
- return g_strdup_printf("%.3f", val);
+ return g_strdup_printf(ROUND_TO_INT("%.1f"), val);
+
case SYMBOL:
return CHK_NULL(loc->symbol);
}
+
return g_strdup("");
}
const gchar *
-get_unit(const unit_systems unit_system,
+get_unit(const units_config *units,
const data_types type)
{
+ if (units == NULL)
+ return "";
+
switch (type) {
case ALTITUDE:
- return (unit_system == IMPERIAL) ? _("ft") : _("m");
+ return (units->altitude == FEET) ? _("ft") : _("m");
case TEMPERATURE:
- return (unit_system == IMPERIAL) ? _("°F") : _("°C");
+ return (units->temperature == FAHRENHEIT) ? _("°F") : _("°C");
case PRESSURE:
- return (unit_system == IMPERIAL) ? _("psi") : _("hPa");
+ switch (units->pressure) {
+ case HECTOPASCAL:
+ return _("hPa");
+ case INCH_MERCURY:
+ return _("inHg");
+ case PSI:
+ return _("psi");
+ case TORR:
+ return _("mmHg");
+ }
case WIND_SPEED:
- return (unit_system == IMPERIAL) ? _("mph") : _("km/h");
+ switch (units->windspeed) {
+ case KMH:
+ return _("km/h");
+ case MPH:
+ return _("mph");
+ case MPS:
+ return _("m/s");
+ }
case WIND_DIRECTION_DEG:
case LATITUDE:
case LONGITUDE:
@@ -189,7 +221,7 @@ get_unit(const unit_systems unit_system,
case FOG:
return "%";
case PRECIPITATIONS:
- return (unit_system == IMPERIAL) ? _("in") : _("mm");
+ return (units->precipitations == INCHES) ? _("in") : _("mm");
case SYMBOL:
case WIND_BEAUFORT:
case WIND_DIRECTION:
diff --git a/panel-plugin/weather-data.h b/panel-plugin/weather-data.h
index 33d30f2..f18977e 100644
--- a/panel-plugin/weather-data.h
+++ b/panel-plugin/weather-data.h
@@ -43,11 +43,6 @@ typedef enum {
} data_types;
typedef enum {
- IMPERIAL,
- METRIC
-} unit_systems;
-
-typedef enum {
CELSIUS,
FAHRENHEIT
} units_temperature;
@@ -95,10 +90,11 @@ gdouble string_to_double(const gchar *str,
gdouble backup);
gchar *get_data(const xml_time *timeslice,
- unit_systems unit_system,
- data_types type);
+ const units_config *units,
+ data_types type,
+ gboolean round);
-const gchar *get_unit(unit_systems unit_system,
+const gchar *get_unit(const units_config *units,
data_types type);
gboolean is_night_time(const xml_astro *astro);
diff --git a/panel-plugin/weather-debug.c b/panel-plugin/weather-debug.c
index d6a9e45..353536b 100644
--- a/panel-plugin/weather-debug.c
+++ b/panel-plugin/weather-debug.c
@@ -405,7 +405,6 @@ weather_dump_plugindata(const xfceweather_data *data)
" latitude: %s\n"
" longitude: %s\n"
" location name: %s\n"
- " unit system: %d\n"
" night time: %s\n"
" --------------------------------------------\n"
" animation transitions: %s\n"
@@ -421,7 +420,6 @@ weather_dump_plugindata(const xfceweather_data *data)
data->lat,
data->lon,
data->location_name,
- data->unit_system,
YESNO(data->night_time),
YESNO(data->animation_transitions),
data->forecast_days);
diff --git a/panel-plugin/weather-summary.c b/panel-plugin/weather-summary.c
index 6c01707..bb0bc9d 100644
--- a/panel-plugin/weather-summary.c
+++ b/panel-plugin/weather-summary.c
@@ -58,8 +58,8 @@ lnk_clicked(GtkTextTag *tag,
g_free(value);
#define APPEND_TEXT_ITEM(text, item) \
- rawvalue = get_data(conditions, data->unit_system, item); \
- unit = get_unit(data->unit_system, item); \
+ rawvalue = get_data(conditions, data->units, item, FALSE); \
+ unit = get_unit(data->units, item); \
value = g_strdup_printf("\t%s%s%s%s%s\n", \
text, text ? ": " : "", \
rawvalue, \
@@ -398,23 +398,23 @@ create_summary_tab(xfceweather_data *data)
/* wind */
APPEND_BTEXT(_("\nWind\n"));
- rawvalue = get_data(conditions, data->unit_system, WIND_SPEED);
- wind = translate_wind_speed(rawvalue, data->unit_system);
+ rawvalue = get_data(conditions, data->units, WIND_SPEED, FALSE);
+ wind = translate_wind_speed(rawvalue, data->units);
g_free(rawvalue);
- rawvalue = get_data(conditions, data->unit_system, WIND_BEAUFORT);
+ rawvalue = get_data(conditions, data->units, WIND_BEAUFORT, FALSE);
value = g_strdup_printf(_("\t%s: %s (%s on the Beaufort scale)\n"),
_("Speed"), wind, rawvalue);
g_free(rawvalue);
g_free(wind);
APPEND_TEXT_ITEM_REAL(value);
- rawvalue = get_data(conditions, data->unit_system, WIND_DIRECTION);
+ rawvalue = get_data(conditions, data->units, WIND_DIRECTION, FALSE);
wind = translate_wind_direction(rawvalue);
g_free(rawvalue);
- rawvalue = get_data(conditions, data->unit_system, WIND_DIRECTION_DEG);
+ rawvalue = get_data(conditions, data->units, WIND_DIRECTION_DEG, FALSE);
value = g_strdup_printf("\t%s: %s (%s%s)\n", _("Direction"),
wind, rawvalue,
- get_unit(data->unit_system, WIND_DIRECTION_DEG));
+ get_unit(data->units, WIND_DIRECTION_DEG));
g_free(rawvalue);
g_free(wind);
APPEND_TEXT_ITEM_REAL(value);
@@ -596,7 +596,7 @@ make_forecast(xfceweather_data *data)
fcdata = make_forecast_data(data->weatherdata, i, daytime);
if (fcdata != NULL) {
if (fcdata->location != NULL) {
- rawvalue = get_data(fcdata, data->unit_system, SYMBOL);
+ rawvalue = get_data(fcdata, data->units, SYMBOL, FALSE);
icon = get_icon(data->icon_theme, rawvalue, 48,
(daytime == NIGHT));
g_free(rawvalue);
@@ -606,10 +606,11 @@ make_forecast(xfceweather_data *data)
if (G_LIKELY(icon))
g_object_unref(G_OBJECT(icon));
- rawvalue = get_data(fcdata, data->unit_system, SYMBOL);
- value = g_strdup_printf("%s",
- translate_desc(rawvalue,
- (daytime == NIGHT)));
+ rawvalue = get_data(fcdata, data->units, SYMBOL, FALSE);
+ value =
+ g_strdup_printf("%s",
+ translate_desc(rawvalue,
+ (daytime == NIGHT)));
g_free(rawvalue);
label = gtk_label_new(NULL);
gtk_label_set_markup(GTK_LABEL(label), value);
@@ -620,10 +621,11 @@ make_forecast(xfceweather_data *data)
TRUE, TRUE, 0);
g_free(value);
- rawvalue = get_data(fcdata, data->unit_system, TEMPERATURE);
+ rawvalue = get_data(fcdata, data->units,
+ TEMPERATURE, data->round);
value = g_strdup_printf("%s %s",
rawvalue,
- get_unit(data->unit_system,
+ get_unit(data->units,
TEMPERATURE));
g_free(rawvalue);
label = gtk_label_new(value);
@@ -634,14 +636,15 @@ make_forecast(xfceweather_data *data)
TRUE, TRUE, 0);
g_free(value);
- rawvalue = get_data(fcdata, data->unit_system,
- WIND_DIRECTION);
+ rawvalue = get_data(fcdata, data->units,
+ WIND_DIRECTION, FALSE);
wind_direction = translate_wind_direction(rawvalue);
- wind_speed = get_data(fcdata, data->unit_system, WIND_SPEED);
+ wind_speed = get_data(fcdata, data->units,
+ WIND_SPEED, data->round);
value = g_strdup_printf("%s %s %s",
wind_direction,
wind_speed,
- get_unit(data->unit_system,
+ get_unit(data->units,
WIND_SPEED));
g_free(wind_speed);
g_free(wind_direction);
@@ -767,7 +770,7 @@ create_summary_window (xfceweather_data *data)
conditions = get_current_conditions(data->weatherdata);
- symbol = get_data(conditions, data->unit_system, SYMBOL);
+ symbol = get_data(conditions, data->units, SYMBOL, FALSE);
icon = get_icon(data->icon_theme, symbol, 48, data->night_time);
g_free(symbol);
diff --git a/panel-plugin/weather-translate.c b/panel-plugin/weather-translate.c
index 3d0ea08..b92867b 100644
--- a/panel-plugin/weather-translate.c
+++ b/panel-plugin/weather-translate.c
@@ -278,7 +278,7 @@ translate_wind_direction(const gchar *wdir)
/* Return "calm", "N/A" or a number */
gchar *
translate_wind_speed(const gchar *wspeed,
- const unit_systems unit_system)
+ const units_config *units)
{
gchar *wspeed_loc;
@@ -288,7 +288,7 @@ translate_wind_speed(const gchar *wspeed,
wspeed_loc = g_strdup(_("N/A"));
else {
wspeed_loc =
- g_strdup_printf("%s %s", wspeed, get_unit(unit_system, WIND_SPEED));
+ g_strdup_printf("%s %s", wspeed, get_unit(units, WIND_SPEED));
}
return wspeed_loc;
}
diff --git a/panel-plugin/weather-translate.h b/panel-plugin/weather-translate.h
index 69874f4..042e03f 100644
--- a/panel-plugin/weather-translate.h
+++ b/panel-plugin/weather-translate.h
@@ -35,7 +35,7 @@ gchar *translate_day(gint weekday);
gchar *translate_wind_direction(const gchar *wdir);
gchar *translate_wind_speed(const gchar *wspeed,
- unit_systems unit_system);
+ const units_config *units);
G_END_DECLS
diff --git a/panel-plugin/weather.c b/panel-plugin/weather.c
index ea51d6b..6ee6050 100644
--- a/panel-plugin/weather.c
+++ b/panel-plugin/weather.c
@@ -43,13 +43,13 @@
#define BORDER 8
#define CONNECTION_TIMEOUT (10) /* connection timeout in seconds */
-#define DATA_AND_UNIT(var, item) \
- value = get_data(conditions, data->unit_system, item); \
- unit = get_unit(data->unit_system, item); \
- var = g_strdup_printf("%s%s%s", \
- value, \
- strcmp(unit, "°") ? " " : "", \
- unit); \
+#define DATA_AND_UNIT(var, item) \
+ value = get_data(conditions, data->units, item, data->round); \
+ unit = get_unit(data->units, item); \
+ var = g_strdup_printf("%s%s%s", \
+ value, \
+ strcmp(unit, "°") ? " " : "", \
+ unit); \
g_free(value);
@@ -151,14 +151,14 @@ make_label(const xfceweather_data *data,
/* get current weather conditions */
conditions = get_current_conditions(data->weatherdata);
- rawvalue = get_data(conditions, data->unit_system, type);
+ rawvalue = get_data(conditions, data->units, type, data->round);
switch (type) {
case WIND_DIRECTION:
value = translate_wind_direction(rawvalue);
break;
case WIND_SPEED:
- value = translate_wind_speed(rawvalue, data->unit_system);
+ value = translate_wind_speed(rawvalue, data->units);
break;
default:
value = NULL;
@@ -171,7 +171,7 @@ make_label(const xfceweather_data *data,
txtsize, lbl, value);
g_free(value);
} else {
- unit = get_unit(data->unit_system, type);
+ unit = get_unit(data->units, type);
str = g_strdup_printf("<span size=\"%s\">%s: %s%s%s</span>",
txtsize, lbl, rawvalue,
strcmp(unit, "°") ? " " : "", unit);
@@ -182,7 +182,7 @@ make_label(const xfceweather_data *data,
txtsize, value);
g_free(value);
} else {
- unit = get_unit(data->unit_system, type);
+ unit = get_unit(data->units, type);
str = g_strdup_printf("<span size=\"%s\">%s%s%s</span>",
txtsize, rawvalue,
strcmp(unit, "°") ? " " : "", unit);
@@ -211,7 +211,7 @@ update_icon(xfceweather_data *data)
/* set icon according to current weather conditions */
conditions = get_current_conditions(data->weatherdata);
- str = get_data(conditions, data->unit_system, SYMBOL);
+ str = get_data(conditions, data->units, SYMBOL, data->round);
icon = get_icon(data->icon_theme, str, size, data->night_time);
g_free(str);
gtk_image_set_from_pixbuf(GTK_IMAGE(data->iconimage), icon);
@@ -519,7 +519,21 @@ xfceweather_read_config(XfcePanelPlugin *plugin,
data->location_name = g_strdup(value);
}
- data->unit_system = xfce_rc_read_int_entry(rc, "unit_system", METRIC);
+ if (data->units)
+ g_slice_free(units_config, data->units);
+ data->units = g_slice_new0(units_config);
+ data->units->temperature =
+ xfce_rc_read_int_entry(rc, "units_temperature", CELSIUS);
+ data->units->pressure =
+ xfce_rc_read_int_entry(rc, "units_pressure", HECTOPASCAL);
+ data->units->windspeed =
+ xfce_rc_read_int_entry(rc, "units_windspeed", KMH);
+ data->units->precipitations =
+ xfce_rc_read_int_entry(rc, "units_precipitations", MILLIMETERS);
+ data->units->altitude =
+ xfce_rc_read_int_entry(rc, "units_altitude", METERS);
+
+ data->round = xfce_rc_read_bool_entry(rc, "round", TRUE);
val = xfce_rc_read_int_entry(rc, "forecast_days", DEFAULT_FORECAST_DAYS);
data->forecast_days =
@@ -571,7 +585,8 @@ xfceweather_write_config(XfcePanelPlugin *plugin,
if (!rc)
return;
- xfce_rc_write_int_entry(rc, "unit_system", data->unit_system);
+ if (data->location_name)
+ xfce_rc_write_entry(rc, "loc_name", data->location_name);
if (data->lat)
xfce_rc_write_entry(rc, "lat", data->lat);
@@ -579,8 +594,14 @@ xfceweather_write_config(XfcePanelPlugin *plugin,
if (data->lon)
xfce_rc_write_entry(rc, "lon", data->lon);
- if (data->location_name)
- xfce_rc_write_entry(rc, "loc_name", data->location_name);
+ xfce_rc_write_int_entry(rc, "units_temperature", data->units->temperature);
+ xfce_rc_write_int_entry(rc, "units_pressure", data->units->pressure);
+ xfce_rc_write_int_entry(rc, "units_windspeed", data->units->windspeed);
+ xfce_rc_write_int_entry(rc, "units_precipitations",
+ data->units->precipitations);
+ xfce_rc_write_int_entry(rc, "units_altitude", data->units->altitude);
+
+ xfce_rc_write_bool_entry(rc, "round", data->round);
xfce_rc_write_int_entry(rc, "forecast_days", data->forecast_days);
@@ -814,7 +835,7 @@ weather_get_tooltip_text(const xfceweather_data *data)
else
sunval = g_strdup_printf("");
- sym = get_data(conditions, data->unit_system, SYMBOL);
+ sym = get_data(conditions, data->units, SYMBOL, FALSE);
DATA_AND_UNIT(symbol, SYMBOL);
DATA_AND_UNIT(alt, ALTITUDE);
DATA_AND_UNIT(lat, LATITUDE);
@@ -901,7 +922,7 @@ weather_get_tooltip_cb(GtkWidget *widget,
}
conditions = get_current_conditions(data->weatherdata);
- rawvalue = get_data(conditions, data->unit_system, SYMBOL);
+ rawvalue = get_data(conditions, data->units, SYMBOL, data->round);
icon = get_icon(data->icon_theme, rawvalue, 128, data->night_time);
g_free(rawvalue);
gtk_tooltip_set_icon(tooltip, icon);
@@ -924,7 +945,6 @@ xfceweather_create_control(XfcePanelPlugin *plugin)
/* Initialize with sane default values */
data->plugin = plugin;
- data->unit_system = METRIC;
data->units = g_slice_new0(units_config);
data->weatherdata = NULL;
data->forecast_days = DEFAULT_FORECAST_DAYS;
diff --git a/panel-plugin/weather.h b/panel-plugin/weather.h
index 1342b80..a30d4cb 100644
--- a/panel-plugin/weather.h
+++ b/panel-plugin/weather.h
@@ -61,8 +61,8 @@ typedef struct {
gchar *lon;
gchar *location_name;
- unit_systems unit_system;
units_config *units;
+ gboolean round;
xml_weather *weatherdata;
xml_astro *astrodata;
More information about the Xfce4-commits
mailing list