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 void get_map_size (ChamplainView *view, gint *width, gint *height) { gint size, rows, cols; ChamplainMapSource *map_source = champlain_view_get_map_source (view); gint zoom_level = champlain_view_get_zoom_level (view); size = champlain_map_source_get_tile_size (map_source); rows = champlain_map_source_get_row_count (map_source, zoom_level); cols = champlain_map_source_get_column_count (map_source, zoom_level); *width = size * rows; *height = size * cols; }