static void layers_panel_finalize ( GObject *gob ) { VikLayersPanel *vlp = VIK_LAYERS_PANEL ( gob ); g_object_unref ( VIK_LAYER(vlp->toplayer) ); g_object_unref ( G_OBJECT(vlp->popup_factory) ); G_OBJECT_CLASS(parent_class)->finalize(gob); }
static void georef_layer_goto_center ( gpointer vgl_vlp[2] ) { VikGeorefLayer *vgl = VIK_GEOREF_LAYER ( vgl_vlp[0] ); VikViewport *vp = vik_layers_panel_get_viewport(VIK_LAYERS_PANEL(vgl_vlp[1])); struct UTM utm; VikCoord coord; vik_coord_to_utm ( vik_viewport_get_center ( vp ), &utm ); utm.easting = vgl->corner.easting + (vgl->width * vgl->mpp_easting / 2); /* only an approximation */ utm.northing = vgl->corner.northing - (vgl->height * vgl->mpp_northing / 2); vik_coord_load_from_utm ( &coord, vik_viewport_get_coord_mode ( vp ), &utm ); vik_viewport_set_center_coord ( vp, &coord ); vik_layers_panel_emit_update ( VIK_LAYERS_PANEL(vgl_vlp[1]) ); }
static void aggregate_layer_child_visible_toggle ( menu_array_values values ) { VikAggregateLayer *val = VIK_AGGREGATE_LAYER ( values[MA_VAL] ); VikLayersPanel *vlp = VIK_LAYERS_PANEL ( values[MA_VLP] ); VikLayer *vl; // Loop around all (child) layers applying visibility setting // This does not descend the tree if there are aggregates within aggregrate - just the first level of layers held GList *iter = val->children; while ( iter ) { vl = VIK_LAYER ( iter->data ); vl->visible = !vl->visible; // Also set checkbox on/off vik_treeview_item_toggle_visible ( vik_layers_panel_get_treeview ( vlp ), &(vl->iter) ); iter = iter->next; } // Redraw as view may have changed vik_layer_emit_update ( VIK_LAYER ( val ) ); }
static void aggregate_layer_child_visible ( gpointer data[2], gboolean on_off) { // Convert data back to correct types VikAggregateLayer *val = VIK_AGGREGATE_LAYER ( data[0] ); VikLayersPanel *vlp = VIK_LAYERS_PANEL ( data[1] ); VikLayer *vl; // Loop around all (child) layers applying visibility setting // This does not descend the tree if there are aggregates within aggregrate - just the first level of layers held GList *iter = val->children; while ( iter ) { vl = VIK_LAYER ( iter->data ); vl->visible = on_off; // Also set checkbox on_off vik_treeview_item_set_visible ( vik_layers_panel_get_treeview ( vlp ), &(vl->iter), on_off ); iter = iter->next; } // Redraw as view may have changed vik_layer_emit_update ( VIK_LAYER ( val ) ); }
VikLayersPanel *vik_layers_panel_new () { return VIK_LAYERS_PANEL ( g_object_new ( VIK_LAYERS_PANEL_TYPE, NULL ) ); }
static void georef_layer_zoom_to_fit ( gpointer vgl_vlp[2] ) { vik_viewport_set_xmpp ( vik_layers_panel_get_viewport(VIK_LAYERS_PANEL(vgl_vlp[1])), VIK_GEOREF_LAYER(vgl_vlp[0])->mpp_easting ); vik_viewport_set_ympp ( vik_layers_panel_get_viewport(VIK_LAYERS_PANEL(vgl_vlp[1])), VIK_GEOREF_LAYER(vgl_vlp[0])->mpp_northing ); vik_layers_panel_emit_update ( VIK_LAYERS_PANEL(vgl_vlp[1]) ); }