static gboolean compare_location(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter, gpointer user_data) { MateWeatherPref* pref = user_data; WeatherLocation* loc; GtkTreeView* view; gtk_tree_model_get(model, iter, MATEWEATHER_XML_COL_POINTER, &loc, -1); if (!loc) { return FALSE; } if (!weather_location_equal(loc, pref->priv->applet->mateweather_pref.location)) { return FALSE; } view = GTK_TREE_VIEW(pref->priv->tree); gtk_tree_view_expand_to_path(view, path); gtk_tree_view_set_cursor(view, path, NULL, FALSE); gtk_tree_view_scroll_to_cell(view, path, NULL, TRUE, 0.5, 0.5); return TRUE; }
void mateweather_update (MateWeatherApplet *gw_applet) { WeatherPrefs prefs; const gchar *icon_name; icon_name = weather_info_get_icon_name(gw_applet->mateweather_info); gtk_image_set_from_icon_name (GTK_IMAGE (gw_applet->image), icon_name, GTK_ICON_SIZE_BUTTON); gtk_widget_set_tooltip_text (GTK_WIDGET(gw_applet->applet), _("Updating...")); /* Set preferred forecast type */ prefs.type = gw_applet->mateweather_pref.detailed ? FORECAST_ZONE : FORECAST_STATE; /* Set radar map retrieval option */ prefs.radar = gw_applet->mateweather_pref.radar_enabled; prefs.radar_custom_url = (gw_applet->mateweather_pref.use_custom_radar_url && gw_applet->mateweather_pref.radar) ? gw_applet->mateweather_pref.radar : NULL; /* Set the units */ prefs.temperature_unit = gw_applet->mateweather_pref.temperature_unit; prefs.speed_unit = gw_applet->mateweather_pref.speed_unit; prefs.pressure_unit = gw_applet->mateweather_pref.pressure_unit; prefs.distance_unit = gw_applet->mateweather_pref.distance_unit; /* Update current conditions */ if (gw_applet->mateweather_info && weather_location_equal(weather_info_get_location(gw_applet->mateweather_info), gw_applet->mateweather_pref.location)) { weather_info_update(gw_applet->mateweather_info, &prefs, update_finish, gw_applet); } else { weather_info_free(gw_applet->mateweather_info); gw_applet->mateweather_info = weather_info_new(gw_applet->mateweather_pref.location, &prefs, update_finish, gw_applet); } }