[Xfce4-commits] <xfce4-weather-plugin:master> Reformat source code: weather-summary
Harald Judt
noreply at xfce.org
Thu Jul 26 16:12:10 CEST 2012
Updating branch refs/heads/master
to d06db6157cdd49ee7116f5f75108143143fd0f32 (commit)
from 3cee110bcef398f9f69b8ff5a48b2d56a2bbd09c (commit)
commit d06db6157cdd49ee7116f5f75108143143fd0f32
Author: Harald Judt <h.judt at gmx.at>
Date: Thu Jul 26 16:10:19 2012 +0200
Reformat source code: weather-summary
panel-plugin/weather-summary.c | 861 +++++++++++++++++++++-------------------
panel-plugin/weather-summary.h | 5 +-
2 files changed, 466 insertions(+), 400 deletions(-)
diff --git a/panel-plugin/weather-summary.c b/panel-plugin/weather-summary.c
index 240718d..c96fafa 100644
--- a/panel-plugin/weather-summary.c
+++ b/panel-plugin/weather-summary.c
@@ -31,356 +31,407 @@
#include "weather-icon.h"
-static gboolean lnk_clicked (GtkTextTag *tag, GObject *obj,
- GdkEvent *event, GtkTextIter *iter,
- GtkWidget *textview);
-
-#define BORDER 8
-#define APPEND_BTEXT(text) gtk_text_buffer_insert_with_tags(GTK_TEXT_BUFFER(buffer),\
- &iter, text, -1, btag, NULL);
-#define APPEND_TEXT_ITEM_REAL(text) gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer), \
- &iter, text, -1);\
- g_free (value);
-#define APPEND_TEXT_ITEM(text, item) rawvalue = get_data(conditions, data->unit_system, item); \
- unit = get_unit(data->unit_system, item); \
- value = g_strdup_printf("\t%s%s%s%s%s\n", \
- text, text ? ": " : "", \
- rawvalue, \
- strcmp(unit, "°") ? " " : "", \
- unit); \
- g_free (rawvalue);\
- APPEND_TEXT_ITEM_REAL(value);
-#define APPEND_LINK_ITEM(prefix, text, url, lnk_tag) \
- gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer), \
- &iter, prefix, -1);\
- gtk_text_buffer_insert_with_tags(GTK_TEXT_BUFFER(buffer), \
- &iter, text, -1, lnk_tag, NULL);\
- gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer), \
- &iter, "\n", -1);\
- g_object_set_data_full(G_OBJECT(lnk_tag), "url", g_strdup(url), g_free); \
- g_signal_connect(G_OBJECT(lnk_tag), "event", \
- G_CALLBACK(lnk_clicked), NULL);
-
+static gboolean
+lnk_clicked(GtkTextTag *tag,
+ GObject *obj,
+ GdkEvent *event,
+ GtkTextIter *iter,
+ GtkWidget *textview);
+
+
+#define BORDER 8
+
+#define APPEND_BTEXT(text) \
+ gtk_text_buffer_insert_with_tags(GTK_TEXT_BUFFER(buffer), \
+ &iter, text, -1, btag, NULL);
+
+#define APPEND_TEXT_ITEM_REAL(text) \
+ gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer), \
+ &iter, text, -1); \
+ g_free(value);
+
+#define APPEND_TEXT_ITEM(text, item) \
+ rawvalue = get_data(conditions, data->unit_system, item); \
+ unit = get_unit(data->unit_system, item); \
+ value = g_strdup_printf("\t%s%s%s%s%s\n", \
+ text, text ? ": " : "", \
+ rawvalue, \
+ strcmp(unit, "°") ? " " : "", \
+ unit); \
+ g_free(rawvalue); \
+ APPEND_TEXT_ITEM_REAL(value);
+
+#define APPEND_LINK_ITEM(prefix, text, url, lnk_tag) \
+ gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer), \
+ &iter, prefix, -1); \
+ gtk_text_buffer_insert_with_tags(GTK_TEXT_BUFFER(buffer), \
+ &iter, text, -1, lnk_tag, NULL); \
+ gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer), \
+ &iter, "\n", -1); \
+ g_object_set_data_full(G_OBJECT(lnk_tag), "url", g_strdup(url), g_free); \
+ g_signal_connect(G_OBJECT(lnk_tag), "event", \
+ G_CALLBACK(lnk_clicked), NULL);
static GtkTooltips *tooltips = NULL;
-static gboolean lnk_clicked (GtkTextTag *tag, GObject *obj,
- GdkEvent *event, GtkTextIter *iter,
- GtkWidget *textview)
+
+static gboolean
+lnk_clicked(GtkTextTag *tag,
+ GObject *obj,
+ GdkEvent *event,
+ GtkTextIter *iter,
+ GtkWidget *textview)
{
- if (event->type == GDK_BUTTON_RELEASE) {
- const gchar *url = g_object_get_data(G_OBJECT(tag), "url");
- gchar *str = g_strdup_printf("exo-open --launch WebBrowser %s", url);
+ const gchar *url;
+ gchar *str;
- g_spawn_command_line_async(str, NULL);
- g_free(str);
- } else if (event->type == GDK_LEAVE_NOTIFY) {
- gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(obj),
- GTK_TEXT_WINDOW_TEXT), NULL);
- }
- return FALSE;
+ if (event->type == GDK_BUTTON_RELEASE) {
+ url = g_object_get_data(G_OBJECT(tag), "url");
+ str = g_strdup_printf("exo-open --launch WebBrowser %s", url);
+ g_spawn_command_line_async(str, NULL);
+ g_free(str);
+ } else if (event->type == GDK_LEAVE_NOTIFY)
+ gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(obj),
+ GTK_TEXT_WINDOW_TEXT),
+ NULL);
+ return FALSE;
}
+
static gboolean
-icon_clicked (GtkWidget *widget,
+icon_clicked (GtkWidget *widget,
GdkEventButton *event,
- gpointer user_data)
+ gpointer user_data)
{
- return lnk_clicked(user_data, NULL, (GdkEvent *)(event), NULL, NULL);
+ return lnk_clicked(user_data, NULL, (GdkEvent *) (event), NULL, NULL);
}
+
static GdkCursor *hand_cursor = NULL;
static GdkCursor *text_cursor = NULL;
static gboolean on_icon = FALSE;
-static gboolean view_motion_notify(GtkWidget *widget,
- GdkEventMotion *event,
- GtkWidget *view)
+static gboolean
+view_motion_notify(GtkWidget *widget,
+ GdkEventMotion *event,
+ GtkWidget *view)
{
- if (event->x != -1 && event->y != -1) {
- gint bx, by;
- GtkTextIter iter;
- GSList *tags;
- GSList *cur;
-
- gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(view),
- GTK_TEXT_WINDOW_WIDGET,
- event->x, event->y, &bx, &by);
- gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(view),
- &iter, bx, by);
- tags = gtk_text_iter_get_tags(&iter);
- for (cur = tags; cur != NULL; cur = cur->next) {
- GtkTextTag *tag = cur->data;
- if (g_object_get_data(G_OBJECT(tag), "url")) {
- gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(view),
- GTK_TEXT_WINDOW_TEXT), hand_cursor);
- return FALSE;
- }
+ if (event->x != -1 && event->y != -1) {
+ gint bx, by;
+ GtkTextIter iter;
+ GSList *tags;
+ GSList *cur;
+
+ gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(view),
+ GTK_TEXT_WINDOW_WIDGET,
+ event->x, event->y, &bx, &by);
+ gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(view),
+ &iter, bx, by);
+ tags = gtk_text_iter_get_tags(&iter);
+ for (cur = tags; cur != NULL; cur = cur->next) {
+ GtkTextTag *tag = cur->data;
+ if (g_object_get_data(G_OBJECT(tag), "url")) {
+ gdk_window_set_cursor(gtk_text_view_get_window
+ (GTK_TEXT_VIEW(view),
+ GTK_TEXT_WINDOW_TEXT), hand_cursor);
+ return FALSE;
+ }
+ }
}
- }
- if (!on_icon)
- gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(view),
- GTK_TEXT_WINDOW_TEXT), text_cursor);
- return FALSE;
+ if (!on_icon)
+ gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(view),
+ GTK_TEXT_WINDOW_TEXT),
+ text_cursor);
+ return FALSE;
}
-static gboolean icon_motion_notify(GtkWidget *widget,
- GdkEventMotion *event,
- GtkWidget *view)
+
+static gboolean
+icon_motion_notify(GtkWidget *widget,
+ GdkEventMotion *event,
+ GtkWidget *view)
{
- on_icon = TRUE;
- gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(view),
- GTK_TEXT_WINDOW_TEXT), hand_cursor);
- return FALSE;
+ on_icon = TRUE;
+ gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(view),
+ GTK_TEXT_WINDOW_TEXT),
+ hand_cursor);
+ return FALSE;
}
-static gboolean view_leave_notify(GtkWidget *widget,
- GdkEventMotion *event,
- GtkWidget *view)
+
+static gboolean
+view_leave_notify(GtkWidget *widget,
+ GdkEventMotion *event,
+ GtkWidget *view)
{
- on_icon = FALSE;
- gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(view),
- GTK_TEXT_WINDOW_TEXT), text_cursor);
- return FALSE;
+ on_icon = FALSE;
+ gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(view),
+ GTK_TEXT_WINDOW_TEXT),
+ text_cursor);
+ return FALSE;
}
+
static GtkWidget *weather_channel_evt = NULL;
-static void view_scrolled_cb (GtkAdjustment *adj, GtkWidget *view)
+static void
+view_scrolled_cb(GtkAdjustment *adj,
+ GtkWidget *view)
{
- if (weather_channel_evt) {
- gint x, y, x1, y1;
- x1 = view->allocation.width - 191 - 15;
- y1 = view->requisition.height - 60 - 15;
- gtk_text_view_buffer_to_window_coords(
- GTK_TEXT_VIEW(view),
- GTK_TEXT_WINDOW_TEXT, x1, y1, &x, &y);
- gtk_text_view_move_child(GTK_TEXT_VIEW(view),
- weather_channel_evt, x, y);
- }
+ if (weather_channel_evt) {
+ gint x, y, x1, y1;
+ x1 = view->allocation.width - 191 - 15;
+ y1 = view->requisition.height - 60 - 15;
+ gtk_text_view_buffer_to_window_coords(GTK_TEXT_VIEW(view),
+ GTK_TEXT_WINDOW_TEXT,
+ x1, y1, &x, &y);
+ gtk_text_view_move_child(GTK_TEXT_VIEW(view),
+ weather_channel_evt, x, y);
+ }
}
-static void view_size_allocate_cb (GtkWidget *widget,
- GtkAllocation *allocation,
- gpointer data)
+
+static void
+view_size_allocate_cb(GtkWidget *widget,
+ GtkAllocation *allocation,
+ gpointer data)
{
- view_scrolled_cb(NULL, GTK_WIDGET(data));
+ view_scrolled_cb(NULL, GTK_WIDGET(data));
}
-static gchar *get_logo_path (void)
+
+static gchar *
+get_logo_path(void)
{
- gchar *dir = g_strconcat(g_get_user_cache_dir(), G_DIR_SEPARATOR_S,
- "xfce4", G_DIR_SEPARATOR_S, "weather-plugin", NULL);
+ gchar *dir = g_strconcat(g_get_user_cache_dir(), G_DIR_SEPARATOR_S,
+ "xfce4", G_DIR_SEPARATOR_S, "weather-plugin",
+ NULL);
- g_mkdir_with_parents(dir, 0755);
- g_free(dir);
+ g_mkdir_with_parents(dir, 0755);
+ g_free(dir);
- return g_strconcat(g_get_user_cache_dir(), G_DIR_SEPARATOR_S,
- "xfce4", G_DIR_SEPARATOR_S, "weather-plugin",
- G_DIR_SEPARATOR_S, "weather_logo.gif", NULL);
+ return g_strconcat(g_get_user_cache_dir(), G_DIR_SEPARATOR_S,
+ "xfce4", G_DIR_SEPARATOR_S, "weather-plugin",
+ G_DIR_SEPARATOR_S, "weather_logo.gif", NULL);
}
+
static void
-logo_fetched (gboolean succeed,
- gchar *result,
- size_t len,
- gpointer user_data)
+logo_fetched (gboolean succeed,
+ gchar *result,
+ size_t len,
+ gpointer user_data)
{
- if (succeed && result) {
- gchar *path = get_logo_path();
- GError *error = NULL;
- GdkPixbuf *pixbuf = NULL;
- if (!g_file_set_contents(path, result, len, &error)) {
- printf("err %s\n", error?error->message:"?");
- g_error_free(error);
- g_free(result);
- g_free(path);
- return;
- }
- g_free(result);
- pixbuf = gdk_pixbuf_new_from_file(path, NULL);
- g_free(path);
- if (pixbuf) {
- gtk_image_set_from_pixbuf(GTK_IMAGE(user_data), pixbuf);
- g_object_unref(pixbuf);
- }
- }
+ if (succeed && result) {
+ gchar *path = get_logo_path();
+ GError *error = NULL;
+ GdkPixbuf *pixbuf = NULL;
+ if (!g_file_set_contents(path, result, len, &error)) {
+ printf("err %s\n", error?error->message:"?");
+ g_error_free(error);
+ g_free(result);
+ g_free(path);
+ return;
+ }
+ g_free(result);
+ pixbuf = gdk_pixbuf_new_from_file(path, NULL);
+ g_free(path);
+ if (pixbuf) {
+ gtk_image_set_from_pixbuf(GTK_IMAGE(user_data), pixbuf);
+ g_object_unref(pixbuf);
+ }
+ }
}
-static GtkWidget *weather_summary_get_logo(xfceweather_data *data)
+
+static GtkWidget *
+weather_summary_get_logo(xfceweather_data *data)
{
- GtkWidget *image = gtk_image_new();
- GdkPixbuf *pixbuf = NULL;
- gchar *path = get_logo_path();
-
- pixbuf = gdk_pixbuf_new_from_file(path, NULL);
- g_free(path);
- if (pixbuf == NULL) {
- weather_http_receive_data ("met.no", "/filestore/met.no-logo.gif",
- data->proxy_host, data->proxy_port, logo_fetched, image);
- } else {
- gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
- g_object_unref(pixbuf);
- }
-
- return image;
+ GtkWidget *image = gtk_image_new();
+ GdkPixbuf *pixbuf = NULL;
+ gchar *path = get_logo_path();
+
+ pixbuf = gdk_pixbuf_new_from_file(path, NULL);
+ g_free(path);
+ if (pixbuf == NULL)
+ weather_http_receive_data("met.no", "/filestore/met.no-logo.gif",
+ data->proxy_host, data->proxy_port,
+ logo_fetched, image);
+ else {
+ gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
+ g_object_unref(pixbuf);
+ }
+
+ return image;
}
+
static GtkWidget *
-create_summary_tab (xfceweather_data *data)
+create_summary_tab(xfceweather_data *data)
{
- GtkTextBuffer *buffer;
- GtkTextIter iter;
- GtkTextTag *btag, *ltag0, *ltag1;
- gchar *value, *wind, *sun_val, *vis, *rawvalue;
- const gchar *unit;
- GtkWidget *view, *frame, *scrolled;
- GdkColor lnk_color;
- GtkAdjustment *adj;
- GtkWidget *weather_channel_icon;
- xml_time *conditions;
- struct tm *start_tm, *end_tm, *point_tm;
- char interval_start[80], interval_end[80], point[80];
-
- view = gtk_text_view_new ();
- gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
- gtk_container_set_border_width (GTK_CONTAINER (view), BORDER);
- frame = gtk_frame_new (NULL);
- scrolled = gtk_scrolled_window_new (NULL, NULL);
-
- gtk_container_add (GTK_CONTAINER (scrolled), view);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
- gtk_container_set_border_width (GTK_CONTAINER (frame), BORDER);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
- gtk_container_add (GTK_CONTAINER (frame), scrolled);
-
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER (buffer), &iter, 0);
- btag =
- gtk_text_buffer_create_tag (buffer, NULL, "weight", PANGO_WEIGHT_BOLD,
- NULL);
-
- gdk_color_parse("#0000ff", &lnk_color);
- ltag0 = gtk_text_buffer_create_tag(buffer, "lnk0", "foreground-gdk", &lnk_color, NULL);
- ltag1 = gtk_text_buffer_create_tag(buffer, "lnk1", "foreground-gdk", &lnk_color, NULL);
-
- /* head */
- value = g_strdup_printf (_("Weather report for: %s.\n\n"), data->location_name);
- APPEND_BTEXT (value);
- g_free (value);
-
- conditions = get_current_conditions(data->weatherdata);
- APPEND_BTEXT(_("Coordinates\n"));
- APPEND_TEXT_ITEM (_("Altitude"), ALTITUDE);
- APPEND_TEXT_ITEM (_("Latitude"), LATITUDE);
- APPEND_TEXT_ITEM (_("Longitude"), LONGITUDE);
-
- APPEND_BTEXT(_("\nTime\n"));
- point_tm = localtime(&conditions->point);
- strftime (point, 80, "%c", point_tm);
- value = g_strdup_printf (_("\tTemperature, wind, atmosphere and cloud data apply to:\n\t%s\n"), point);
- APPEND_TEXT_ITEM_REAL (value);
-
- start_tm = localtime(&conditions->start);
- strftime (interval_start, 80, "%c", start_tm);
- end_tm = localtime(&conditions->end);
- strftime (interval_end, 80, "%c", end_tm);
- value = g_strdup_printf (_("\n\tPrecipitation and the weather symbol have been calculated\n\tfor the following time interval:\n\tStart:\t%s\n\tEnd:\t%s\n"),
- interval_start,
- interval_end);
- APPEND_TEXT_ITEM_REAL (value);
-
- /* Temperature */
- APPEND_BTEXT (_("\nTemperature\n"));
- APPEND_TEXT_ITEM (_("Temperature"), TEMPERATURE);
-
- /* Wind */
- APPEND_BTEXT (_("\nWind\n"));
- rawvalue = get_data (conditions, data->unit_system, WIND_SPEED);
- wind = translate_wind_speed (conditions, rawvalue, data->unit_system);
- g_free (rawvalue);
- rawvalue = get_data (conditions, data->unit_system, WIND_BEAUFORT);
- 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);
- wind = translate_wind_direction (rawvalue);
- g_free (rawvalue);
- rawvalue = get_data (conditions, data->unit_system, WIND_DIRECTION_DEG);
- value = g_strdup_printf ("\t%s: %s (%s%s)\n", _("Direction"),
- wind, rawvalue,
- get_unit (data->unit_system, WIND_DIRECTION_DEG));
- g_free (rawvalue);
- g_free (wind);
- APPEND_TEXT_ITEM_REAL (value);
-
- /* Precipitation */
- APPEND_BTEXT (_("\nPrecipitations\n"));
- APPEND_TEXT_ITEM(_("Precipitations amount"), PRECIPITATIONS);
-
- /* Atmosphere */
- APPEND_BTEXT (_("\nAtmosphere\n"));
- APPEND_TEXT_ITEM (_("Pressure"), PRESSURE);
- APPEND_TEXT_ITEM (_("Humidity"), HUMIDITY);
-
- /* Clouds */
- APPEND_BTEXT (_("\nClouds\n"));
- APPEND_TEXT_ITEM (_("Fog"), FOG);
- APPEND_TEXT_ITEM (_("Low clouds"), CLOUDS_LOW);
- APPEND_TEXT_ITEM (_("Medium clouds"), CLOUDS_MED);
- APPEND_TEXT_ITEM (_("High clouds"), CLOUDS_HIGH);
- APPEND_TEXT_ITEM (_("Cloudiness"), CLOUDINESS);
-
- APPEND_BTEXT (_("\nData from The Norwegian Meteorological Institute\n"));
- value = g_strdup ("http://met.no");
- g_object_set_data_full(G_OBJECT(ltag0), "url", value, g_free);
- APPEND_LINK_ITEM ("\t", _("Thanks to met.no"), "http://met.no/", ltag1);
-
- g_signal_connect(G_OBJECT(view), "motion-notify-event",
- G_CALLBACK(view_motion_notify), view);
- g_signal_connect(G_OBJECT(view), "leave-notify-event",
- G_CALLBACK(view_leave_notify), view);
-
- weather_channel_icon = weather_summary_get_logo(data);
-
- if (weather_channel_icon) {
- weather_channel_evt = gtk_event_box_new();
- gtk_container_add(GTK_CONTAINER(weather_channel_evt), weather_channel_icon);
- gtk_text_view_add_child_in_window(GTK_TEXT_VIEW(view), weather_channel_evt,
- GTK_TEXT_WINDOW_TEXT, 0, 0);
- gtk_widget_show_all(weather_channel_evt);
- adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolled));
- g_signal_connect(G_OBJECT(adj), "value-changed",
- G_CALLBACK(view_scrolled_cb), view);
- g_signal_connect(G_OBJECT(view), "size_allocate",
- G_CALLBACK(view_size_allocate_cb),
- view);
- g_signal_connect(G_OBJECT(weather_channel_evt), "button-release-event",
- G_CALLBACK(icon_clicked),
- ltag0);
- g_signal_connect(G_OBJECT(weather_channel_evt), "enter-notify-event",
- G_CALLBACK(icon_motion_notify), view);
- g_signal_connect(G_OBJECT(weather_channel_evt), "visibility-notify-event",
- G_CALLBACK(icon_motion_notify), view);
- g_signal_connect(G_OBJECT(weather_channel_evt), "motion-notify-event",
- G_CALLBACK(icon_motion_notify), view);
- g_signal_connect(G_OBJECT(weather_channel_evt), "leave-notify-event",
- G_CALLBACK(view_leave_notify), view);
- }
- if (hand_cursor == NULL)
- hand_cursor = gdk_cursor_new(GDK_HAND2);
- if (text_cursor == NULL)
- text_cursor = gdk_cursor_new(GDK_XTERM);
-
- return frame;
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+ GtkTextTag *btag, *ltag0, *ltag1;
+ GtkWidget *view, *frame, *scrolled, *weather_channel_icon;
+ GtkAdjustment *adj;
+ GdkColor lnk_color;
+ xml_time *conditions;
+ const gchar *unit;
+ struct tm *start_tm, *end_tm, *point_tm;
+ gchar *value, *wind, *sun_val, *vis, *rawvalue;
+ char interval_start[80], interval_end[80], point[80];
+
+ view = gtk_text_view_new();
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(view), FALSE);
+ gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(view), FALSE);
+ gtk_container_set_border_width(GTK_CONTAINER(view), BORDER);
+ frame = gtk_frame_new(NULL);
+ scrolled = gtk_scrolled_window_new(NULL, NULL);
+
+ gtk_container_add(GTK_CONTAINER(scrolled), view);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ gtk_container_set_border_width(GTK_CONTAINER(frame), BORDER);
+ gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
+ gtk_container_add(GTK_CONTAINER(frame), scrolled);
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
+ gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(buffer), &iter, 0);
+ btag = gtk_text_buffer_create_tag(buffer, NULL, "weight",
+ PANGO_WEIGHT_BOLD, NULL);
+
+ gdk_color_parse("#0000ff", &lnk_color);
+ ltag0 = gtk_text_buffer_create_tag(buffer, "lnk0",
+ "foreground-gdk", &lnk_color, NULL);
+ ltag1 = gtk_text_buffer_create_tag(buffer, "lnk1",
+ "foreground-gdk", &lnk_color, NULL);
+
+ /* head */
+ value = g_strdup_printf(_("Weather report for: %s.\n\n"),
+ data->location_name);
+ APPEND_BTEXT(value);
+ g_free(value);
+
+ conditions = get_current_conditions(data->weatherdata);
+ APPEND_BTEXT(_("Coordinates\n"));
+ APPEND_TEXT_ITEM(_("Altitude"), ALTITUDE);
+ APPEND_TEXT_ITEM(_("Latitude"), LATITUDE);
+ APPEND_TEXT_ITEM(_("Longitude"), LONGITUDE);
+
+ APPEND_BTEXT(_("\nTime\n"));
+ point_tm = localtime(&conditions->point);
+ strftime(point, 80, "%c", point_tm);
+ value = g_strdup_printf
+ (_("\tTemperature, wind, atmosphere and cloud data apply to:\n\t%s\n"),
+ point);
+ APPEND_TEXT_ITEM_REAL(value);
+
+ start_tm = localtime(&conditions->start);
+ strftime(interval_start, 80, "%c", start_tm);
+ end_tm = localtime(&conditions->end);
+ strftime(interval_end, 80, "%c", end_tm);
+ value = g_strdup_printf
+ (_("\n\tPrecipitation and the weather symbol have been calculated\n\tfor the following time interval:\n\tStart:\t%s\n\tEnd:\t%s\n"),
+ interval_start,
+ interval_end);
+ APPEND_TEXT_ITEM_REAL(value);
+
+ /* temperature */
+ APPEND_BTEXT(_("\nTemperature\n"));
+ APPEND_TEXT_ITEM(_("Temperature"), TEMPERATURE);
+
+ /* wind */
+ APPEND_BTEXT(_("\nWind\n"));
+ rawvalue = get_data(conditions, data->unit_system, WIND_SPEED);
+ wind = translate_wind_speed(conditions, rawvalue, data->unit_system);
+ g_free(rawvalue);
+ rawvalue = get_data(conditions, data->unit_system, WIND_BEAUFORT);
+ 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);
+ wind = translate_wind_direction(rawvalue);
+ g_free(rawvalue);
+ rawvalue = get_data(conditions, data->unit_system, WIND_DIRECTION_DEG);
+ value = g_strdup_printf("\t%s: %s (%s%s)\n", _("Direction"),
+ wind, rawvalue,
+ get_unit(data->unit_system, WIND_DIRECTION_DEG));
+ g_free(rawvalue);
+ g_free(wind);
+ APPEND_TEXT_ITEM_REAL(value);
+
+ /* precipitation */
+ APPEND_BTEXT(_("\nPrecipitations\n"));
+ APPEND_TEXT_ITEM(_("Precipitations amount"), PRECIPITATIONS);
+
+ /* atmosphere */
+ APPEND_BTEXT(_("\nAtmosphere\n"));
+ APPEND_TEXT_ITEM(_("Pressure"), PRESSURE);
+ APPEND_TEXT_ITEM(_("Humidity"), HUMIDITY);
+
+ /* clouds */
+ APPEND_BTEXT(_("\nClouds\n"));
+ APPEND_TEXT_ITEM(_("Fog"), FOG);
+ APPEND_TEXT_ITEM(_("Low clouds"), CLOUDS_LOW);
+ APPEND_TEXT_ITEM(_("Medium clouds"), CLOUDS_MED);
+ APPEND_TEXT_ITEM(_("High clouds"), CLOUDS_HIGH);
+ APPEND_TEXT_ITEM(_("Cloudiness"), CLOUDINESS);
+
+ APPEND_BTEXT(_("\nData from The Norwegian Meteorological Institute\n"));
+ value = g_strdup("http://met.no");
+ g_object_set_data_full(G_OBJECT(ltag0), "url", value, g_free);
+ APPEND_LINK_ITEM("\t", _("Thanks to met.no"), "http://met.no/", ltag1);
+
+ g_signal_connect(G_OBJECT(view), "motion-notify-event",
+ G_CALLBACK(view_motion_notify), view);
+ g_signal_connect(G_OBJECT(view), "leave-notify-event",
+ G_CALLBACK(view_leave_notify), view);
+
+ weather_channel_icon = weather_summary_get_logo(data);
+
+ if (weather_channel_icon) {
+ weather_channel_evt = gtk_event_box_new();
+ gtk_container_add(GTK_CONTAINER(weather_channel_evt),
+ weather_channel_icon);
+ gtk_text_view_add_child_in_window(GTK_TEXT_VIEW(view),
+ weather_channel_evt,
+ GTK_TEXT_WINDOW_TEXT, 0, 0);
+ gtk_widget_show_all(weather_channel_evt);
+ adj =
+ gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolled));
+ g_signal_connect(G_OBJECT(adj), "value-changed",
+ G_CALLBACK(view_scrolled_cb), view);
+ g_signal_connect(G_OBJECT(view), "size_allocate",
+ G_CALLBACK(view_size_allocate_cb),
+ view);
+ g_signal_connect(G_OBJECT(weather_channel_evt), "button-release-event",
+ G_CALLBACK(icon_clicked),
+ ltag0);
+ g_signal_connect(G_OBJECT(weather_channel_evt), "enter-notify-event",
+ G_CALLBACK(icon_motion_notify), view);
+ g_signal_connect(G_OBJECT(weather_channel_evt), "visibility-notify-event",
+ G_CALLBACK(icon_motion_notify), view);
+ g_signal_connect(G_OBJECT(weather_channel_evt), "motion-notify-event",
+ G_CALLBACK(icon_motion_notify), view);
+ g_signal_connect(G_OBJECT(weather_channel_evt), "leave-notify-event",
+ G_CALLBACK(view_leave_notify), view);
+ }
+ if (hand_cursor == NULL)
+ hand_cursor = gdk_cursor_new(GDK_HAND2);
+ if (text_cursor == NULL)
+ text_cursor = gdk_cursor_new(GDK_XTERM);
+
+ return frame;
}
+
GtkWidget *
-add_forecast_cell(GtkWidget *widget, GdkColor *color) {
+add_forecast_cell(GtkWidget *widget,
+ GdkColor *color)
+{
GtkWidget *ebox;
ebox = gtk_event_box_new();
if (color == NULL)
@@ -393,17 +444,20 @@ add_forecast_cell(GtkWidget *widget, GdkColor *color) {
return ebox;
}
+
GtkWidget *
-add_forecast_header(gchar *text, gdouble angle, GdkColor *color)
+add_forecast_header(gchar *text,
+ gdouble angle,
+ GdkColor *color)
{
GtkWidget *label, *align;
gchar *str;
- if (angle)
- align = gtk_alignment_new(1, 1, 0, 1);
- else
- align = gtk_alignment_new(1, 1, 1, 0);
- gtk_container_set_border_width(GTK_CONTAINER(align), 4);
+ if (angle)
+ align = gtk_alignment_new(1, 1, 0, 1);
+ else
+ align = gtk_alignment_new(1, 1, 1, 0);
+ gtk_container_set_border_width(GTK_CONTAINER(align), 4);
label = gtk_label_new(NULL);
gtk_label_set_angle(GTK_LABEL(label), angle);
@@ -415,8 +469,9 @@ add_forecast_header(gchar *text, gdouble angle, GdkColor *color)
return add_forecast_cell(align, color);
}
+
static GtkWidget *
-make_forecast (xfceweather_data *data)
+make_forecast(xfceweather_data *data)
{
GtkWidget *table, *ebox, *box, *align;
GtkWidget *forecast_box, *label, *image;
@@ -426,8 +481,8 @@ make_forecast (xfceweather_data *data)
gint i, weekday, daytime;
gchar *dayname, *wind_speed, *wind_direction, *value, *rawvalue;
xml_time *fcdata;
- time_t now_t = time(NULL), fcday_t;
struct tm fcday_tm;
+ time_t now_t = time(NULL), fcday_t;
table = gtk_table_new(data->forecast_days + 1, 5, FALSE);
gtk_table_set_row_spacings(GTK_TABLE(table), 0);
@@ -454,7 +509,7 @@ make_forecast (xfceweather_data *data)
4, 5, 0, 1);
for (i = 0; i < data->forecast_days; i++) {
- /* Forecast day headers */
+ /* forecast day headers */
fcday_tm = *localtime(&now_t);
fcday_t = time_calc_day(fcday_tm, i);
weekday = localtime(&fcday_t)->tm_wday;
@@ -471,7 +526,7 @@ make_forecast (xfceweather_data *data)
gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(ebox),
0, 1, i+1, i+2);
- /* Get forecast data for each daytime */
+ /* get forecast data for each daytime */
for (daytime = MORNING; daytime <= NIGHT; daytime++) {
forecast_box = gtk_vbox_new(FALSE, 0);
align = gtk_alignment_new(0.5, 0.5, 1, 1);
@@ -490,9 +545,9 @@ make_forecast (xfceweather_data *data)
g_free(rawvalue);
image = gtk_image_new_from_pixbuf(icon);
gtk_box_pack_start(GTK_BOX(forecast_box), GTK_WIDGET(image),
- TRUE, TRUE, 0);
- if (G_LIKELY (icon))
- g_object_unref (G_OBJECT (icon));
+ TRUE, TRUE, 0);
+ if (G_LIKELY(icon))
+ g_object_unref(G_OBJECT(icon));
rawvalue = get_data(fcdata, data->unit_system, SYMBOL);
value = g_strdup_printf("%s",
@@ -502,34 +557,39 @@ make_forecast (xfceweather_data *data)
label = gtk_label_new(NULL);
gtk_label_set_markup(GTK_LABEL(label), value);
gtk_box_pack_start(GTK_BOX(forecast_box), GTK_WIDGET(label),
- TRUE, TRUE, 0);
+ TRUE, TRUE, 0);
g_free(value);
rawvalue = get_data(fcdata, data->unit_system, TEMPERATURE);
value = g_strdup_printf("%s %s",
rawvalue,
- get_unit(data->unit_system, TEMPERATURE));
+ get_unit(data->unit_system,
+ TEMPERATURE));
g_free(rawvalue);
label = gtk_label_new(value);
gtk_box_pack_start(GTK_BOX(forecast_box), GTK_WIDGET(label),
- TRUE, TRUE, 0);
+ TRUE, TRUE, 0);
g_free(value);
- rawvalue = get_data(fcdata, data->unit_system, WIND_DIRECTION);
+ rawvalue = get_data(fcdata, data->unit_system,
+ WIND_DIRECTION);
wind_direction = translate_wind_direction(rawvalue);
wind_speed = get_data(fcdata, data->unit_system, WIND_SPEED);
value = g_strdup_printf("%s %s %s",
wind_direction,
wind_speed,
- get_unit(data->unit_system, WIND_SPEED));
+ get_unit(data->unit_system,
+ WIND_SPEED));
g_free(wind_speed);
g_free(wind_direction);
g_free(rawvalue);
label = gtk_label_new(value);
- gtk_box_pack_start(GTK_BOX(forecast_box), label, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(forecast_box), label,
+ TRUE, TRUE, 0);
g_free(value);
- gtk_widget_set_size_request(GTK_WIDGET(forecast_box), 150, -1);
+ gtk_widget_set_size_request(GTK_WIDGET(forecast_box),
+ 150, -1);
}
xml_time_free(fcdata);
}
@@ -542,16 +602,16 @@ make_forecast (xfceweather_data *data)
}
-
static GtkWidget *
-create_forecast_tab (xfceweather_data *data, GtkWidget *window)
+create_forecast_tab(xfceweather_data *data,
+ GtkWidget *window)
{
- GtkWidget *ebox, *align, *hbox, *scrolled, *table;
- GdkWindow *win;
- GdkScreen *screen;
+ GtkWidget *ebox, *align, *hbox, *scrolled, *table;
+ GdkWindow *win;
+ GdkScreen *screen;
GdkRectangle rect;
- gint monitor_num, height_needed, height_max;
- gdouble factor;
+ gint monitor_num, height_needed, height_max;
+ gdouble factor;
/* calculate maximum height we may use, subtracting some sane value for safety */
screen = gtk_window_get_screen(GTK_WINDOW(window));
@@ -585,9 +645,11 @@ create_forecast_tab (xfceweather_data *data, GtkWidget *window)
scrolled = gtk_scrolled_window_new (NULL, NULL);
gtk_container_set_border_width(GTK_CONTAINER(scrolled), BORDER);
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), align);
+ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled),
+ align);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
if (rect.width <= 720)
gtk_widget_set_size_request(GTK_WIDGET(scrolled), 650, height_max);
else
@@ -599,80 +661,83 @@ create_forecast_tab (xfceweather_data *data, GtkWidget *window)
}
}
+
static void
-summary_dialog_response (GtkWidget *dlg,
- gint response,
- GtkWidget *window)
+summary_dialog_response(GtkWidget *dlg,
+ gint response,
+ GtkWidget *window)
{
- if (response == GTK_RESPONSE_ACCEPT)
- gtk_widget_destroy(window);
- else if (response == GTK_RESPONSE_HELP)
- g_spawn_command_line_async ("exo-open --launch WebBrowser " PLUGIN_WEBSITE, NULL);
+ if (response == GTK_RESPONSE_ACCEPT)
+ gtk_widget_destroy(window);
+ else if (response == GTK_RESPONSE_HELP)
+ g_spawn_command_line_async ("exo-open --launch WebBrowser " PLUGIN_WEBSITE, NULL);
}
+
GtkWidget *
create_summary_window (xfceweather_data *data)
{
- GtkWidget *window, *notebook, *vbox, *hbox, *label;
- gchar *title, *rawvalue;
- GdkPixbuf *icon;
- xml_time *conditions;
-
- window = xfce_titled_dialog_new_with_buttons (_("Weather Update"),
- NULL,
- GTK_DIALOG_NO_SEPARATOR,
- GTK_STOCK_ABOUT,
- GTK_RESPONSE_HELP,
- GTK_STOCK_CLOSE,
- GTK_RESPONSE_ACCEPT, NULL);
- 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);
- }
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE,
- 0);
-
- conditions = get_current_conditions(data->weatherdata);
-
- rawvalue = get_data (conditions, data->unit_system, SYMBOL);
- icon = get_icon (rawvalue, 48, is_night_time());
- g_free (rawvalue);
-
- gtk_window_set_icon (GTK_WINDOW (window), icon);
-
- if (G_LIKELY (icon))
- g_object_unref (G_OBJECT (icon));
-
- if (data->location_name == NULL || data->weatherdata == NULL) {
- hbox = gtk_hbox_new (FALSE, 0);
- if (data->location_name == NULL)
- label = gtk_label_new(_("Please set a location in the plugin settings."));
- else
- label = gtk_label_new(_("Currently no data available."));
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET(label),
- TRUE, TRUE, 0);
-
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET(hbox),
- TRUE, TRUE, 0);
- gtk_window_set_default_size (GTK_WINDOW (window), 500, 400);
- } else {
- notebook = gtk_notebook_new ();
- gtk_container_set_border_width (GTK_CONTAINER (notebook), BORDER);
- gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
- create_forecast_tab (data, window),
- gtk_label_new_with_mnemonic (_("_Forecast")));
- gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
- create_summary_tab (data),
- gtk_label_new_with_mnemonic (_("_Details")));
-
- gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
- }
-
- g_signal_connect (G_OBJECT (window), "response",
- G_CALLBACK (summary_dialog_response), window);
-
- return window;
+ GtkWidget *window, *notebook, *vbox, *hbox, *label;
+ gchar *title, *rawvalue;
+ GdkPixbuf *icon;
+ xml_time *conditions;
+
+ window = xfce_titled_dialog_new_with_buttons(_("Weather Update"),
+ NULL,
+ GTK_DIALOG_NO_SEPARATOR,
+ GTK_STOCK_ABOUT,
+ GTK_RESPONSE_HELP,
+ GTK_STOCK_CLOSE,
+ GTK_RESPONSE_ACCEPT, NULL);
+ 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);
+ }
+
+ vbox = gtk_vbox_new(FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox), vbox, TRUE, TRUE,
+ 0);
+
+ conditions = get_current_conditions(data->weatherdata);
+
+ rawvalue = get_data(conditions, data->unit_system, SYMBOL);
+ icon = get_icon(rawvalue, 48, is_night_time());
+ g_free(rawvalue);
+
+ gtk_window_set_icon(GTK_WINDOW(window), icon);
+
+ if (G_LIKELY(icon))
+ g_object_unref(G_OBJECT(icon));
+
+ if (data->location_name == NULL || data->weatherdata == NULL) {
+ hbox = gtk_hbox_new(FALSE, 0);
+ if (data->location_name == NULL)
+ label = gtk_label_new(_("Please set a location in the plugin settings."));
+ else
+ label = gtk_label_new(_("Currently no data available."));
+ gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(label),
+ TRUE, TRUE, 0);
+
+ gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(hbox),
+ TRUE, TRUE, 0);
+ gtk_window_set_default_size(GTK_WINDOW(window), 500, 400);
+ } else {
+ notebook = gtk_notebook_new();
+ gtk_container_set_border_width(GTK_CONTAINER(notebook), BORDER);
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+ create_forecast_tab(data, window),
+ gtk_label_new_with_mnemonic(_("_Forecast")));
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+ create_summary_tab(data),
+ gtk_label_new_with_mnemonic(_("_Details")));
+
+ gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);
+ }
+
+ g_signal_connect(G_OBJECT(window), "response",
+ G_CALLBACK(summary_dialog_response), window);
+
+ return window;
}
diff --git a/panel-plugin/weather-summary.h b/panel-plugin/weather-summary.h
index 7b70231..6b2cd5e 100644
--- a/panel-plugin/weather-summary.h
+++ b/panel-plugin/weather-summary.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2003-2007 Xfce Development Team
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -20,7 +20,8 @@
G_BEGIN_DECLS
-GtkWidget * create_summary_window (xfceweather_data *data);
+GtkWidget *create_summary_window(xfceweather_data *data);
G_END_DECLS
+
#endif
More information about the Xfce4-commits
mailing list