static void zoom_changed_cb (GtkWidget *widget, GParamSpec *pspec, EmerillonWindow *self) { GtkAction *zoom_in_action; GtkAction *zoom_out_action; gint zoom_level; guint min_zoom_level = 0; guint max_zoom_level = 18; ChamplainMapSource *source = NULL; source = champlain_view_get_map_source (self->priv->view); min_zoom_level = champlain_map_source_get_min_zoom_level (source); max_zoom_level = champlain_map_source_get_max_zoom_level (source); zoom_in_action = gtk_action_group_get_action (self->priv->main_actions, "ViewZoomIn"); zoom_out_action = gtk_action_group_get_action (self->priv->main_actions, "ViewZoomOut"); g_object_get (self->priv->view, "zoom-level", &zoom_level, NULL); gtk_action_set_sensitive (zoom_in_action, zoom_level < max_zoom_level); gtk_action_set_sensitive (zoom_out_action, zoom_level > min_zoom_level); }
static guint get_max_zoom_level (ChamplainMapSource *map_source) { ChamplainMapSourceChain *source_chain = CHAMPLAIN_MAP_SOURCE_CHAIN (map_source); g_return_val_if_fail (source_chain, 0); ChamplainMapSourceChainPrivate *priv = source_chain->priv; g_return_val_if_fail (priv->stack_top, 0); return champlain_map_source_get_max_zoom_level (priv->stack_top); }
static guint get_max_zoom_level (ChamplainMapSource *map_source) { g_return_val_if_fail (CHAMPLAIN_IS_TILE_CACHE (map_source), 0); ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); g_return_val_if_fail (CHAMPLAIN_IS_MAP_SOURCE (next_source), 0); return champlain_map_source_get_max_zoom_level (next_source); }