Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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);
        }