Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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;
         }
     }
 }
Esempio n. 5
0
        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;
        }