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); } } }
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; }
private void BeforeRemoveLayer(object sender, LayerCancelEventArgs e) { if (!_presenter.HasLayer(e.LayerHandle)) { return; } if (!_presenter.CheckAndSaveChanges(e.LayerHandle, true)) { e.Cancel = true; } }
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; } } }
/// <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); }