private void UndoRedo_LayerRemove(UndoRedoLayerAddRemove[] items) { foreach (UndoRedoLayerAddRemove item in items) { if (_parts[item.LayerIndex].Count > 0) { throw new ApplicationException("There shouldn't be any items on the current layer: " + item.LayerIndex.ToString()); } // Remove it LayerRow layer = (LayerRow)pnlLayers.Children[item.LayerIndex]; layer.LayerVisibilityChanged -= new EventHandler(Layer_LayerVisibilityChanged); layer.GotFocus -= new RoutedEventHandler(LayerRow_GotFocus); pnlLayers.Children.RemoveAt(item.LayerIndex + 1); // row at zero is AllLayers, so it's shifted by one _parts.RemoveAt(item.LayerIndex); // Change layers int newIndex = item.LayerIndex; if (newIndex >= _parts.Count) { newIndex = _parts.Count - 1; } ChangeLayer(newIndex, false); } }
private void UndoRedo_LayerAdd(UndoRedoLayerAddRemove[] items) { foreach (UndoRedoLayerAddRemove item in items) { LayerRow layer = new LayerRow(_options.EditorColors); //layer.LayerName = "Layer " + (item.LayerIndex + 1).ToString(); layer.LayerName = item.Name; layer.IsLayerVisible = true; layer.LayerVisibilityChanged += new EventHandler(Layer_LayerVisibilityChanged); layer.GotFocus += new RoutedEventHandler(LayerRow_GotFocus); pnlLayers.Children.Insert(item.LayerIndex + 1, layer); // row at zero is AllLayers, so it's shifted by one _parts.Insert(item.LayerIndex, new List<DesignPart>()); ChangeLayer(item.LayerIndex, true); } }