diff options
Diffstat (limited to 'mateweather/mateweather-dialog.c')
-rw-r--r-- | mateweather/mateweather-dialog.c | 616 |
1 files changed, 143 insertions, 473 deletions
diff --git a/mateweather/mateweather-dialog.c b/mateweather/mateweather-dialog.c index e8ff29ae..b677094d 100644 --- a/mateweather/mateweather-dialog.c +++ b/mateweather/mateweather-dialog.c @@ -11,8 +11,8 @@ */ #ifdef HAVE_CONFIG_H -# include <config.h> -#endif +#include <config.h> +#endif /* HAVE_CONFIG_H */ #include <stdio.h> #include <stdlib.h> @@ -27,84 +27,56 @@ #include "mateweather-pref.h" #include "mateweather-dialog.h" -struct _MateWeatherDialogPrivate { - GtkWidget* cond_location; - GtkWidget* cond_update; - GtkWidget* cond_cond; - GtkWidget* cond_sky; - GtkWidget* cond_temp; - GtkWidget* cond_dew; - GtkWidget* cond_humidity; - GtkWidget* cond_wind; - GtkWidget* cond_pressure; - GtkWidget* cond_vis; - GtkWidget* cond_apparent; - GtkWidget* cond_sunrise; - GtkWidget* cond_sunset; - GtkWidget* cond_image; - GtkWidget* forecast_text; - GtkWidget* radar_image; - - MateWeatherApplet* applet; +struct _MateWeatherDialog { + GtkDialog parent; + + GtkWidget *weather_notebook; + GtkWidget *cond_location; + GtkWidget *cond_update; + GtkWidget *cond_cond; + GtkWidget *cond_sky; + GtkWidget *cond_temp; + GtkWidget *cond_dew; + GtkWidget *cond_humidity; + GtkWidget *cond_wind; + GtkWidget *cond_pressure; + GtkWidget *cond_vis; + GtkWidget *cond_apparent; + GtkWidget *cond_sunrise; + GtkWidget *cond_sunset; + GtkWidget *cond_image; + GtkWidget *forecast_text; + GtkWidget *radar_image; + + MateWeatherApplet *applet; }; enum { - PROP_0, - PROP_MATEWEATHER_APPLET, + PROP_0, + PROP_MATEWEATHER_APPLET, }; -G_DEFINE_TYPE_WITH_PRIVATE (MateWeatherDialog, mateweather_dialog, GTK_TYPE_DIALOG); +G_DEFINE_TYPE (MateWeatherDialog, mateweather_dialog, GTK_TYPE_DIALOG); #define MONOSPACE_FONT_SCHEMA "org.mate.interface" #define MONOSPACE_FONT_KEY "monospace-font-name" -static void mateweather_dialog_save_geometry(MateWeatherDialog* dialog) -{ -#if 0 - GSettings* settings; - int w, h; - - gtk_window_get_size (GTK_WINDOW (dialog), &w, &h); - - settings = dialog->priv->applet->settings; - - /* FIXME those keys are not in org.mate.weather! */ - g_settings_set_int (settings, "dialog-width", w); - g_settings_set_int (settings, "dialog-height", h); -#endif -} - -static void mateweather_dialog_load_geometry(MateWeatherDialog* dialog) -{ -#if 0 - GSettings* settings; - int w, h; - - settings = dialog->priv->applet->settings; - - /* FIXME those keys are not in org.mate.weather! */ - w = g_settings_get_int (settings, "dialog-width"); - h = g_settings_get_int (settings, "dialog-height"); - - if (w > 0 && h > 0) - { - gtk_window_resize(GTK_WINDOW(dialog), w, h); - } -#endif -} - -static void response_cb(MateWeatherDialog* dialog, gint id, gpointer data) +static void +response_cb (MateWeatherDialog *dialog, + gint id, + gpointer data) { if (id == GTK_RESPONSE_OK) { - mateweather_update (dialog->priv->applet); - - mateweather_dialog_update (dialog); + mateweather_update (dialog->applet); + mateweather_dialog_update (dialog); } else { - gtk_widget_destroy (GTK_WIDGET(dialog)); + gtk_widget_destroy (GTK_WIDGET (dialog)); } } -static void link_cb(GtkButton* button, gpointer data) +static void +link_cb (GtkButton *button, + gpointer data) { gtk_show_uri_on_window (NULL, "http://www.weather.com/", @@ -112,7 +84,8 @@ static void link_cb(GtkButton* button, gpointer data) NULL); } -static gchar* replace_multiple_new_lines(gchar* s) +static gchar* +replace_multiple_new_lines(gchar* s) { gchar *prev_s = s; gint count; @@ -140,350 +113,6 @@ static gchar* replace_multiple_new_lines(gchar* s) return prev_s; } -static void mateweather_dialog_create(MateWeatherDialog* dialog) -{ - MateWeatherDialogPrivate *priv; - MateWeatherApplet *gw_applet; - - GtkWidget *weather_vbox; - GtkWidget *weather_notebook; - GtkWidget *cond_hbox; - GtkWidget *cond_grid; - GtkWidget *cond_location_lbl; - GtkWidget *cond_update_lbl; - GtkWidget *cond_temp_lbl; - GtkWidget *cond_cond_lbl; - GtkWidget *cond_sky_lbl; - GtkWidget *cond_wind_lbl; - GtkWidget *cond_humidity_lbl; - GtkWidget *cond_pressure_lbl; - GtkWidget *cond_vis_lbl; - GtkWidget *cond_dew_lbl; - GtkWidget *cond_apparent_lbl; - GtkWidget *cond_sunrise_lbl; - GtkWidget *cond_sunset_lbl; - GtkWidget *cond_vbox; - GtkWidget *current_note_lbl; - GtkWidget *forecast_note_lbl; - GtkWidget *radar_note_lbl; - GtkWidget *radar_vbox; - GtkWidget *radar_link_btn; - GtkWidget *radar_link_box; - GtkWidget *forecast_hbox; - GtkWidget *ebox; - GtkWidget *scrolled_window; - GtkWidget *imagescroll_window; - - priv = dialog->priv; - gw_applet = priv->applet; - - g_object_set (dialog, "destroy-with-parent", TRUE, NULL); - gtk_window_set_title (GTK_WINDOW (dialog), _("Details")); - gtk_dialog_add_buttons (GTK_DIALOG (dialog), - _("_Update"), GTK_RESPONSE_OK, - "gtk-close", GTK_RESPONSE_CLOSE, - NULL); - gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE); - gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); - gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), 2); - gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); - - if (gw_applet->mateweather_pref.radar_enabled) - gtk_window_set_default_size (GTK_WINDOW (dialog), 570,440); - else - gtk_window_set_default_size (GTK_WINDOW (dialog), 590, 340); - - gtk_window_set_screen (GTK_WINDOW (dialog), - gtk_widget_get_screen (GTK_WIDGET (gw_applet->applet))); - mateweather_dialog_load_geometry (dialog); - - /* Must come after load geometry, otherwise it will get reset. */ - gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE); - - weather_vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); - gtk_widget_show (weather_vbox); - - weather_notebook = gtk_notebook_new (); - gtk_container_set_border_width (GTK_CONTAINER (weather_notebook), 5); - gtk_widget_show (weather_notebook); - gtk_box_pack_start (GTK_BOX (weather_vbox), weather_notebook, TRUE, TRUE, 0); - - cond_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); - gtk_widget_show (cond_hbox); - gtk_container_add (GTK_CONTAINER (weather_notebook), cond_hbox); - gtk_container_set_border_width (GTK_CONTAINER (cond_hbox), 4); - - cond_grid = gtk_grid_new (); - gtk_widget_show (cond_grid); - gtk_box_pack_start (GTK_BOX (cond_hbox), cond_grid, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (cond_grid), 12); - gtk_grid_set_row_spacing (GTK_GRID (cond_grid), 6); - gtk_grid_set_column_spacing (GTK_GRID (cond_grid), 12); - - cond_location_lbl = gtk_label_new (_("City:")); - gtk_widget_show (cond_location_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_location_lbl, 0, 0, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_location_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_location_lbl), 0.0); - - cond_update_lbl = gtk_label_new (_("Last update:")); - gtk_widget_show (cond_update_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_update_lbl, 0, 1, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_update_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_update_lbl), 0.0); - - cond_cond_lbl = gtk_label_new (_("Conditions:")); - gtk_widget_show (cond_cond_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_cond_lbl, 0, 2, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_cond_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_cond_lbl), 0.0); - - cond_sky_lbl = gtk_label_new (_("Sky:")); - gtk_widget_show (cond_sky_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_sky_lbl, 0, 3, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_sky_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_sky_lbl), 0.0); - - cond_temp_lbl = gtk_label_new (_("Temperature:")); - gtk_widget_show (cond_temp_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_temp_lbl, 0, 4, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_temp_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_temp_lbl), 0.0); - - cond_apparent_lbl = gtk_label_new (_("Feels like:")); - gtk_widget_show (cond_apparent_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_apparent_lbl, 0, 5, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_apparent_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_apparent_lbl), 0.0); - - cond_dew_lbl = gtk_label_new (_("Dew point:")); - gtk_widget_show (cond_dew_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_dew_lbl, 0, 6, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_dew_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_dew_lbl), 0.0); - - cond_humidity_lbl = gtk_label_new (_("Relative humidity:")); - gtk_widget_show (cond_humidity_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_humidity_lbl, 0, 7, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_humidity_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_humidity_lbl), 0.0); - - cond_wind_lbl = gtk_label_new (_("Wind:")); - gtk_widget_show (cond_wind_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_wind_lbl, 0, 8, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_wind_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_wind_lbl), 0.0); - - cond_pressure_lbl = gtk_label_new (_("Pressure:")); - gtk_widget_show (cond_pressure_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_pressure_lbl, 0, 9, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_pressure_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_pressure_lbl), 0.0); - - cond_vis_lbl = gtk_label_new (_("Visibility:")); - gtk_widget_show (cond_vis_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_vis_lbl, 0, 10, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_vis_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_vis_lbl), 0.0); - - cond_sunrise_lbl = gtk_label_new (_("Sunrise:")); - gtk_widget_show (cond_sunrise_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_sunrise_lbl, 0, 11, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_sunrise_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_sunrise_lbl), 0.0); - - cond_sunset_lbl = gtk_label_new (_("Sunset:")); - gtk_widget_show (cond_sunset_lbl); - gtk_grid_attach (GTK_GRID (cond_grid), cond_sunset_lbl, 0, 12, 1, 1); - gtk_label_set_justify (GTK_LABEL (cond_sunset_lbl), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (cond_sunset_lbl), 0.0); - - priv->cond_location = gtk_label_new (""); - gtk_widget_show (priv->cond_location); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_location, 1, 0, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_location), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_location), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_location), 0.0); - - priv->cond_update = gtk_label_new (""); - gtk_widget_show (priv->cond_update); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_update, 1, 1, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_update), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_update), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_update), 0.0); - - priv->cond_cond = gtk_label_new (""); - gtk_widget_show (priv->cond_cond); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_cond, 1, 2, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_cond), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_cond), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_cond), 0.0); - - priv->cond_sky = gtk_label_new (""); - gtk_widget_show (priv->cond_sky); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_sky, 1, 3, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_sky), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_sky), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_sky), 0.0); - - priv->cond_temp = gtk_label_new (""); - gtk_widget_show (priv->cond_temp); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_temp, 1, 4, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_temp), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_temp), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_temp), 0.0); - - priv->cond_apparent = gtk_label_new (""); - gtk_widget_show (priv->cond_apparent); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_apparent, 1, 5, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_apparent), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_apparent), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_apparent), 0.0); - - priv->cond_dew = gtk_label_new (""); - gtk_widget_show (priv->cond_dew); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_dew, 1, 6, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_dew), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_dew), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_dew), 0.0); - - priv->cond_humidity = gtk_label_new (""); - gtk_widget_show (priv->cond_humidity); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_humidity, 1, 7, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_humidity), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_humidity), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_humidity), 0.0); - - priv->cond_wind = gtk_label_new (""); - gtk_widget_show (priv->cond_wind); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_wind, 1, 8, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_wind), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_wind), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_wind), 0.0); - - priv->cond_pressure = gtk_label_new (""); - gtk_widget_show (priv->cond_pressure); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_pressure, 1, 9, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_pressure), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_pressure), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_pressure), 0.0); - - priv->cond_vis = gtk_label_new (""); - gtk_widget_show (priv->cond_vis); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_vis, 1, 10, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_vis), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_vis), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_vis), 0.0); - - priv->cond_sunrise = gtk_label_new (""); - gtk_widget_show (priv->cond_sunrise); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_sunrise, 1, 11, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_sunrise), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_sunrise), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_sunrise), 0.0); - - priv->cond_sunset = gtk_label_new (""); - gtk_widget_show (priv->cond_sunset); - gtk_grid_attach (GTK_GRID (cond_grid), priv->cond_sunset, 1, 12, 1, 1); - gtk_label_set_selectable (GTK_LABEL (priv->cond_sunset), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->cond_sunset), GTK_JUSTIFY_LEFT); - gtk_label_set_xalign (GTK_LABEL (priv->cond_sunset), 0.0); - - cond_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); - gtk_widget_set_valign (cond_vbox, GTK_ALIGN_START); - gtk_widget_set_vexpand (cond_vbox, TRUE); - gtk_widget_show (cond_vbox); - gtk_box_pack_end (GTK_BOX (cond_hbox), cond_vbox, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (cond_vbox), 2); - - priv->cond_image = gtk_image_new_from_icon_name ("stock-unknown", GTK_ICON_SIZE_BUTTON); - gtk_widget_show (priv->cond_image); - gtk_container_add (GTK_CONTAINER (cond_vbox), priv->cond_image); - - current_note_lbl = gtk_label_new (_("Current Conditions")); - gtk_widget_show (current_note_lbl); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (weather_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (weather_notebook), 0), current_note_lbl); - - if (gw_applet->mateweather_pref.location->zone_valid) { - - forecast_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - gtk_container_set_border_width (GTK_CONTAINER (forecast_hbox), 12); - gtk_widget_show (forecast_hbox); - - scrolled_window = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), - GTK_SHADOW_ETCHED_IN); - - priv->forecast_text = gtk_text_view_new (); - set_access_namedesc (priv->forecast_text, _("Forecast Report"), _("See the ForeCast Details")); - gtk_container_add (GTK_CONTAINER (scrolled_window), priv->forecast_text); - gtk_text_view_set_editable (GTK_TEXT_VIEW (priv->forecast_text), FALSE); - gtk_text_view_set_left_margin (GTK_TEXT_VIEW (priv->forecast_text), 6); - gtk_widget_show (priv->forecast_text); - gtk_widget_show (scrolled_window); - gtk_box_pack_start (GTK_BOX (forecast_hbox), scrolled_window, TRUE, TRUE, 0); - - gtk_container_add (GTK_CONTAINER (weather_notebook), forecast_hbox); - - forecast_note_lbl = gtk_label_new (_("Forecast")); - gtk_widget_show (forecast_note_lbl); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (weather_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (weather_notebook), 1), forecast_note_lbl); - - } - - if (gw_applet->mateweather_pref.radar_enabled) { - - radar_note_lbl = gtk_label_new_with_mnemonic (_("Radar Map")); - gtk_widget_show (radar_note_lbl); - - radar_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); - gtk_widget_show (radar_vbox); - gtk_notebook_append_page (GTK_NOTEBOOK (weather_notebook), radar_vbox, radar_note_lbl); - gtk_container_set_border_width (GTK_CONTAINER (radar_vbox), 6); - - priv->radar_image = gtk_image_new (); - - imagescroll_window = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (imagescroll_window), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (imagescroll_window), - GTK_SHADOW_ETCHED_IN); - - ebox = gtk_event_box_new (); - gtk_widget_show (ebox); - - gtk_container_add (GTK_CONTAINER (imagescroll_window),ebox); - gtk_box_pack_start (GTK_BOX (radar_vbox), imagescroll_window, TRUE, TRUE, 0); - gtk_widget_show (priv->radar_image); - gtk_widget_show (imagescroll_window); - - gtk_container_add (GTK_CONTAINER (ebox), priv->radar_image); - - radar_link_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); - gtk_widget_set_halign (radar_link_box, GTK_ALIGN_CENTER); - gtk_widget_set_hexpand (radar_link_box, TRUE); - gtk_widget_show (radar_link_box); - gtk_box_pack_start (GTK_BOX (radar_vbox), radar_link_box, FALSE, FALSE, 0); - - radar_link_btn = gtk_button_new_with_mnemonic (_("_Visit Weather.com")); - set_access_namedesc (radar_link_btn, _("Visit Weather.com"), _("Click to Enter Weather.com")); - gtk_widget_set_size_request (radar_link_btn, 450, -2); - gtk_widget_show (radar_link_btn); - if (!g_settings_get_boolean (gw_applet->settings, "use-custom-radar-url")) - gtk_container_add (GTK_CONTAINER (radar_link_box), radar_link_btn); - - g_signal_connect (G_OBJECT (radar_link_btn), "clicked", - G_CALLBACK (link_cb), NULL); - - } - - g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (response_cb), NULL); - -} - static PangoFontDescription* get_system_monospace_font(void) { PangoFontDescription *desc = NULL; @@ -549,100 +178,123 @@ override_widget_font (GtkWidget *widget, g_free (size); } -void mateweather_dialog_update(MateWeatherDialog* dialog) +void +mateweather_dialog_update (MateWeatherDialog *dialog) { - MateWeatherDialogPrivate *priv; - MateWeatherApplet *gw_applet; + WeatherInfo *info; gchar *forecast; GtkTextBuffer *buffer; PangoFontDescription *font_desc; const gchar *icon_name; - priv = dialog->priv; - gw_applet = priv->applet; - /* Check for parallel network update in progress */ - if(gw_applet->mateweather_info == NULL) + if (dialog->applet->mateweather_info == NULL) return; + info = dialog->applet->mateweather_info; + /* Update icon */ - icon_name = weather_info_get_icon_name (gw_applet->mateweather_info); - gtk_image_set_from_icon_name (GTK_IMAGE (priv->cond_image), + icon_name = weather_info_get_icon_name (info); + gtk_image_set_from_icon_name (GTK_IMAGE (dialog->cond_image), icon_name, GTK_ICON_SIZE_DIALOG); /* Update current condition fields and forecast */ - gtk_label_set_text(GTK_LABEL(priv->cond_location), weather_info_get_location_name(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_update), weather_info_get_update(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_cond), weather_info_get_conditions(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_sky), weather_info_get_sky(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_temp), weather_info_get_temp(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_apparent), weather_info_get_apparent(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_dew), weather_info_get_dew(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_humidity), weather_info_get_humidity(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_wind), weather_info_get_wind(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_pressure), weather_info_get_pressure(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_vis), weather_info_get_visibility(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_sunrise), weather_info_get_sunrise(gw_applet->mateweather_info)); - gtk_label_set_text(GTK_LABEL(priv->cond_sunset), weather_info_get_sunset(gw_applet->mateweather_info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_location), weather_info_get_location_name (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_update), weather_info_get_update (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_cond), weather_info_get_conditions (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_sky), weather_info_get_sky (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_temp), weather_info_get_temp (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_apparent), weather_info_get_apparent (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_dew), weather_info_get_dew (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_humidity), weather_info_get_humidity (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_wind), weather_info_get_wind (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_pressure), weather_info_get_pressure (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_vis), weather_info_get_visibility (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_sunrise), weather_info_get_sunrise (info)); + gtk_label_set_text (GTK_LABEL (dialog->cond_sunset), weather_info_get_sunset (info)); /* Update forecast */ - if (gw_applet->mateweather_pref.location->zone_valid) { + if (dialog->applet->mateweather_pref.location->zone_valid) { font_desc = get_system_monospace_font (); if (font_desc) { - override_widget_font (priv->forecast_text, font_desc); + override_widget_font (dialog->forecast_text, font_desc); pango_font_description_free (font_desc); } - buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->forecast_text)); - forecast = g_strdup(weather_info_get_forecast(gw_applet->mateweather_info)); + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (dialog->forecast_text)); + forecast = g_strdup (weather_info_get_forecast (dialog->applet->mateweather_info)); if (forecast) { - forecast = g_strstrip(replace_multiple_new_lines(forecast)); - gtk_text_buffer_set_text(buffer, forecast, -1); - g_free(forecast); + forecast = g_strstrip (replace_multiple_new_lines (forecast)); + gtk_text_buffer_set_text (buffer, forecast, -1); + g_free (forecast); } else { - gtk_text_buffer_set_text(buffer, _("Forecast not currently available for this location."), -1); + gtk_text_buffer_set_text (buffer, _("Forecast not currently available for this location."), -1); } + gtk_widget_show (gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->weather_notebook), 1)); + } else { + gtk_widget_hide (gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->weather_notebook), 1)); } /* Update radar map */ - if (gw_applet->mateweather_pref.radar_enabled) { + if (dialog->applet->mateweather_pref.radar_enabled) { GdkPixbufAnimation *radar; - radar = weather_info_get_radar (gw_applet->mateweather_info); + radar = weather_info_get_radar (info); if (radar) { - gtk_image_set_from_animation (GTK_IMAGE (priv->radar_image), radar); + gtk_image_set_from_animation (GTK_IMAGE (dialog->radar_image), radar); } + gtk_widget_show (gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->weather_notebook), 2)); + gtk_window_set_default_size (GTK_WINDOW (dialog), 570, 440); + } else { + gtk_widget_hide (gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->weather_notebook), 2)); + gtk_window_set_default_size (GTK_WINDOW (dialog), 590, 340); } } -static void mateweather_dialog_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) +static void +mateweather_dialog_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - MateWeatherDialog *dialog = MATEWEATHER_DIALOG (object); + MateWeatherDialog *dialog; + + dialog = MATEWEATHER_DIALOG (object); switch (prop_id) { - case PROP_MATEWEATHER_APPLET: - dialog->priv->applet = g_value_get_pointer (value); - break; + case PROP_MATEWEATHER_APPLET: + dialog->applet = g_value_get_pointer (value); + break; } } -static void mateweather_dialog_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) +static void +mateweather_dialog_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - MateWeatherDialog *dialog = MATEWEATHER_DIALOG (object); + MateWeatherDialog *dialog; + + dialog = MATEWEATHER_DIALOG (object); switch (prop_id) { case PROP_MATEWEATHER_APPLET: - g_value_set_pointer (value, dialog->priv->applet); + g_value_set_pointer (value, dialog->applet); break; } } -static void mateweather_dialog_init(MateWeatherDialog* self) +static void +mateweather_dialog_init (MateWeatherDialog *dialog) { - self->priv = mateweather_dialog_get_instance_private (self); + gtk_widget_init_template (GTK_WIDGET (dialog)); } -static GObject* mateweather_dialog_constructor(GType type, guint n_construct_params, GObjectConstructParam* construct_params) +static GObject* +mateweather_dialog_constructor (GType type, + guint n_construct_params, + GObjectConstructParam *construct_params) { GObject *object; MateWeatherDialog *self; @@ -651,40 +303,58 @@ static GObject* mateweather_dialog_constructor(GType type, guint n_construct_par constructor (type, n_construct_params, construct_params); self = MATEWEATHER_DIALOG (object); - mateweather_dialog_create (self); mateweather_dialog_update (self); return object; } -GtkWidget* mateweather_dialog_new(MateWeatherApplet* applet) +GtkWidget* +mateweather_dialog_new (MateWeatherApplet *applet) { - return g_object_new(MATEWEATHER_TYPE_DIALOG, - "mateweather-applet", applet, - NULL); + return g_object_new(MATEWEATHER_TYPE_DIALOG, + "mateweather-applet", applet, + NULL); } -static void mateweather_dialog_unrealize(GtkWidget* widget) -{ - MateWeatherDialog* self = MATEWEATHER_DIALOG(widget); - - mateweather_dialog_save_geometry(self); - - GTK_WIDGET_CLASS(mateweather_dialog_parent_class)->unrealize(widget); -} - -static void mateweather_dialog_class_init(MateWeatherDialogClass* klass) +static void +mateweather_dialog_class_init (MateWeatherDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - mateweather_dialog_parent_class = g_type_class_peek_parent (klass); - object_class->set_property = mateweather_dialog_set_property; object_class->get_property = mateweather_dialog_get_property; object_class->constructor = mateweather_dialog_constructor; - widget_class->unrealize = mateweather_dialog_unrealize; /* This becomes an OBJECT property when MateWeatherApplet is redone */ - g_object_class_install_property(object_class, PROP_MATEWEATHER_APPLET, g_param_spec_pointer ("mateweather-applet", "MateWeather Applet", "The MateWeather Applet", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_MATEWEATHER_APPLET, + g_param_spec_pointer ("mateweather-applet", + "MateWeather Applet", + "The MateWeather Applet", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + gtk_widget_class_set_template_from_resource (widget_class, + WEATHER_RESOURCE_PATH "mateweather-dialog.ui"); + + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, weather_notebook); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_location); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_update); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_cond); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_sky); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_temp); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_dew); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_humidity); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_wind); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_pressure); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_vis); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_apparent); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_sunrise); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_sunset); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, cond_image); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, forecast_text); + gtk_widget_class_bind_template_child (widget_class, MateWeatherDialog, radar_image); + + gtk_widget_class_bind_template_callback (widget_class, response_cb); + gtk_widget_class_bind_template_callback (widget_class, link_cb); } |