コード例 #1
0
        private void LegendLayerVisibleChanged(object sender, LayerCancelEventArgs e)
        {
            var layer = _context.Legend.Layers.ItemByHandle(e.LayerHandle);

            if (layer == null || !layer.DynamicVisibility)
            {
                return;
            }

            if (layer.Visible && !layer.LayerVisibleAtCurrentScale)
            {
                e.Cancel = true;

                bool visible = true;
                if (AppConfig.Instance.DisplayDynamicVisibilityWarnings)
                {
                    visible = MessageService.Current.Ask("Dynamic visibility is enabled for this layer. " + Environment.NewLine +
                                                         "Do you want to disable it and show this layer?");
                }

                if (visible)
                {
                    layer.DynamicVisibility = false;
                    layer.Visible           = true;
                    _context.Legend.Redraw(LegendRedraw.LegendAndMap);
                }
            }
        }
コード例 #2
0
        internal void FireLayerVisibleChanged(int layerHandle, bool visible, ref bool cancel)
        {
            var args = new LayerCancelEventArgs(layerHandle, visible)
            {
                Cancel = cancel
            };

            FireEvent(this, LayerVisibleChanged, args);
            cancel = args.Cancel;
        }
コード例 #3
0
        private void BeforeRemoveLayer(object sender, LayerCancelEventArgs e)
        {
            if (!_presenter.HasLayer(e.LayerHandle))
            {
                return;
            }

            if (!_presenter.CheckAndSaveChanges(e.LayerHandle, true))
            {
                e.Cancel = true;
            }
        }
コード例 #4
0
ファイル: ProjectListener.cs プロジェクト: zylimit/MapWindow5
        private void plugin_BeforeRemoveLayer(object sender, LayerCancelEventArgs e)
        {
            if (_context.Map.GeometryEditor.LayerHandle == e.LayerHandle)
            {
                if (!_context.Map.GeometryEditor.SaveChanges())
                {
                    e.Cancel = true;
                    return;
                }
            }

            var layer = _context.Map.Layers.ItemByHandle(e.LayerHandle);

            if (layer != null && layer.FeatureSet != null && layer.FeatureSet.InteractiveEditing)
            {
                if (!_layerService.SaveLayerChanges(layer.Handle))
                {
                    e.Cancel = true;
                    return;
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// Runs appropriate handler for the element that was clicked. If no handler is found false is returned.
        /// </summary>
        private bool OnLayerElementClicked(LegendLayer lyr, LegendElement element)
        {
            switch (element.Type)
            {
            case LayerElementType.RasterColorBox:
            case LayerElementType.ColorBox:
                if (element.Index == -1)
                {
                    FireEvent(this, LayerStyleClicked, new LayerEventArgs(lyr.Handle));
                }
                else
                {
                    FireEvent(this, LayerCategoryClicked, new LayerCategoryEventArgs(lyr.Handle, MouseButtons.Left, element.Index));
                }
                break;

            case LayerElementType.Label:
                FireEvent(this, LayerLabelsClicked, new LayerEventArgs(lyr.Handle));
                break;

            case LayerElementType.Charts:
            case LayerElementType.ChartField:
            case LayerElementType.ChartFieldName:
                FireEvent(this, LayerDiagramsClicked, new LayerMouseEventArgs(lyr.Handle, MouseButtons.Left));

                // event for individual fields can be fired if necessary
                // FireEvent(this, LayerDiagramFieldClicked, new ChartFieldClickedEventArgs(lyr.Handle, MouseButtons.Left, element.Index));
                break;

            case LayerElementType.CategoryCheckbox:
                var sf = AxMap.get_Shapefile(lyr.Handle);
                if (sf != null)
                {
                    var ct = sf.Categories.Item[element.Index];
                    if (ct != null)
                    {
                        bool state = ct.DrawingOptions.Visible;
                        ct.DrawingOptions.Visible = !state;
                        AxMap.Redraw();
                    }
                }
                break;

            case LayerElementType.CheckBox:
            {
                var newState = !AxMap.get_LayerVisible(lyr.Handle);

                var args = new LayerCancelEventArgs(lyr.Handle, newState);
                FireEvent(this, LayerVisibleChanged, args);

                if (args.Cancel)
                {
                    return(true);
                }

                AxMap.set_LayerVisible(lyr.Handle, newState);

                var group = GetGroup(element.GroupIndex);
                group.UpdateGroupVisibility();

                FireEvent(this, LayerCheckboxClicked, new LayerEventArgs(lyr.Handle));
            }
            break;

            case LayerElementType.ExpansionBox:
            {
                Lock();
                lyr.Expanded = !lyr.Expanded;
                FireEvent(this, LayerPropertiesChanged, new LayerEventArgs(lyr.Handle));
                Unlock();
                return(true);
            }

            case LayerElementType.CategoriesCaption:
            case LayerElementType.ChartsCaption:
                Logger.Current.Info("Legend element clicked: " + element.Type + ". No handler is attached");
                return(true);

            case LayerElementType.Name:
            case LayerElementType.None:
            default:
                return(false);
            }

            Redraw();

            return(true);
        }