private void InsertLayer(int layerIndex, Layer layer) { layer.Invalidated += new EventHandler <RectInt32InvalidatedEventArgs>(this.OnLayerInvalidated); layer.PropertyChanged += new PropertyEventHandler(this.OnLayerPropertyChanged); VerticalImageStrip.Item item = new VerticalImageStrip.Item(null) { ImageOpacity = { Value = 0.0 }, Tag = layer, Text = layer.Name, IsChecked = layer.Visible }; this.BeginLayersListChange(); this.layers.Insert(layerIndex, layer); this.layerToItemMap.Add(layer, item); int index = this.LayerIndexToRenderSlot(layerIndex); base.InsertItem(index, item); this.EndLayersListChange(); this.RefreshLayerThumbnail(layer); if (this.activeLayer == layer) { using (base.UseSuppressEnsureItemFullyVisible()) { this.ActiveLayer = null; this.ActiveLayer = layer; } } }
private void RemoveLayerAt(int layerIndex) { Layer key = this.layers[layerIndex]; if (this.activeLayer == key) { this.ActiveLayer = null; } this.BeginLayersListChange(); VerticalImageStrip.Item item = this.layerToItemMap[key]; item.Tag = null; base.RemoveItem(item); if (item.Image != null) { item.Image.Dispose(); } key.Invalidated -= new EventHandler <RectInt32InvalidatedEventArgs>(this.OnLayerInvalidated); key.PropertyChanged -= new PropertyEventHandler(this.OnLayerPropertyChanged); this.layers.RemoveAt(layerIndex); this.layerToItemMap.Remove(key); OurThumbnailProvider nukeMe = new OurThumbnailProvider(null, key); this.thumbnailManager.RemoveFromQueue(nukeMe); this.EndLayersListChange(); }
protected override void OnItemClicked(VerticalImageStrip.Item item, VerticalImageStrip.ItemPart itemPart, MouseButtons mouseButtons) { Layer tag = (Layer)item.Tag; if (itemPart == VerticalImageStrip.ItemPart.CheckBox) { tag.Visible = !tag.Visible; } else if (mouseButtons == MouseButtons.Left) { this.OnLayerClicked(tag); } base.OnItemClicked(item, itemPart, mouseButtons); }
private void OnLayerPropertyChanged(object sender, PropertyEventArgs e) { if (base.InvokeRequired) { PdnSynchronizationContext.Instance.Post((SendOrPostCallback)(_ => this.OnLayerPropertyChanged(sender, e))); } else if (!base.IsDisposed) { Layer key = (Layer)sender; if (this.layerToItemMap.ContainsKey(key)) { VerticalImageStrip.Item item = this.layerToItemMap[key]; item.Text = key.Name; item.IsChecked = key.Visible; } } }
private void OnLayersListChangedImpl() { Layer[] newLayers; Layer[] excluded = this.layers.ToArrayEx <Layer>(); if (this.document != null) { newLayers = this.document.Layers.Cast <Layer>().ToArrayEx <Layer>(); } else { newLayers = Array.Empty <Layer>(); } IEnumerable <Layer> enumerable = newLayers.Except <Layer>(excluded); IEnumerable <Layer> enumerable2 = excluded.Except <Layer>(newLayers); IEnumerable <Layer> enumerable3 = newLayers.Intersect <Layer>(excluded); foreach (Layer layer in enumerable) { this.InsertLayer(this.layers.Count, layer); } foreach (Layer layer2 in enumerable2) { this.RemoveLayer(layer2); } int length = newLayers.Length; VerticalImageStrip.Item item = null; for (int i = 0; i < length; i++) { int layerIndex = this.RenderSlotToLayerIndex(i); VerticalImageStrip.Item itemB = base.ItemIndexToItem(i); if (itemB.IsSelected) { item = itemB; itemB.IsSelected = false; } if (itemB.Tag != newLayers[layerIndex]) { double num5; int num4 = base.Items.IndexOf <VerticalImageStrip.Item>(it => it.Tag == newLayers[layerIndex]); if (num4 == -1) { ExceptionUtil.ThrowInternalErrorException(); } VerticalImageStrip.Item itemA = base.ItemIndexToItem(num4); if (itemA.IsSelected) { item = itemA; itemA.IsSelected = false; } base.SwapItems(itemA, itemB); if (!this.renderSlotsBeforeChanging.TryGetValue((Layer)itemB.Tag, out num5)) { num5 = Math.Min(i, excluded.Length - 1); } if (itemB.RenderSlot.FinalValue != num5) { itemB.RenderSlot.Value = num5; } } } for (int j = 0; j < newLayers.Length; j++) { this.layers[j] = newLayers[j]; } base.UpdateItemRenderSlots(); if (item != null) { item.IsSelected = true; } int index = this.LayerIndexToRenderSlot(this.ActiveLayerIndex); base.EnsureItemFullyVisible(index); base.ForceMouseMove(false); base.AllowReorder = true; }