private bool RemoveLayerCore(int layerHandle, bool silent) { var layer = _context.Map.GetLayer(layerHandle); if (layer == null) { Logger.Current.Warn("LayerService.RemoveLayer: attempting to remove layer with invalid handle."); return(false); } if (!silent) { if (!MessageService.Current.Ask(string.Format("Do you want to remove the layer: {0}?", layer.Name))) { return(false); } } var args = new LayerCancelEventArgs(layerHandle); _broadcaster.BroadcastEvent(p => p.BeforeRemoveLayer_, _context.Legend, args); if (args.Cancel) { return(false); } _context.Map.Layers.Remove(layerHandle); return(true); }
/// <summary> /// Toggles interactive editing state for vector layer. /// </summary> public void ToggleVectorLayerEditing() { // perhaps better to allow setting state explicitly as parameter int handle = _context.Legend.SelectedLayerHandle; var fs = _context.Layers.GetFeatureSet(handle); var ogrLayer = _context.Layers.GetVectorLayer(handle); var args = new LayerCancelEventArgs(handle); _broadcaster.BroadcastEvent(p => p.BeforeLayerEditingChanged_, _context.Legend, args); if (args.Cancel) { return; } if (fs == null) { return; } if (fs.InteractiveEditing) { if (!SaveLayerChanges(handle)) { return; } } else { if (ogrLayer != null) { /*if (ogrLayer.DynamicLoading) * { * MessageService.Current.Info("Editing of dynamically loaded OGR layers isn't allowed."); * return; * }*/ if (!ogrLayer.get_SupportsEditing(SaveType.SaveAll)) { MessageService.Current.Info("OGR layer doesn't support editing: " + ogrLayer.LastError); return; } } fs.InteractiveEditing = true; } _broadcaster.BroadcastEvent(p => p.LayerEditingChanged_, _context.Legend, new LayerEventArgs(handle)); _context.Legend.Redraw(LegendRedraw.LegendAndMap); }