Example #1
0
        private void SwapLayers(List<string> newLayerNames)
        {
            List<UndoRedoLayerAddRemove> undoLayers = new List<UndoRedoLayerAddRemove>();

            // Remove existing layers
            for (int cntr = pnlLayers.Children.Count - 2; cntr >= 0; cntr--)
            {
                LayerRow layer = (LayerRow)pnlLayers.Children[cntr + 1];		// adding one, because AllLayers is at zero
                layer.LayerVisibilityChanged -= new EventHandler(Layer_LayerVisibilityChanged);
                layer.GotFocus -= new RoutedEventHandler(LayerRow_GotFocus);

                pnlLayers.Children.RemoveAt(cntr + 1);
                undoLayers.Add(new UndoRedoLayerAddRemove(cntr, false, layer.LayerName));
            }

            // Add new layers
            for (int cntr = 0; cntr < newLayerNames.Count; cntr++)
            {
                LayerRow layer = new LayerRow(this.Options.EditorColors);
                layer.LayerName = newLayerNames[cntr];
                layer.IsLayerVisible = true;
                layer.LayerVisibilityChanged += new EventHandler(Layer_LayerVisibilityChanged);
                layer.GotFocus += new RoutedEventHandler(LayerRow_GotFocus);

                pnlLayers.Children.Add(layer);

                undoLayers.Add(new UndoRedoLayerAddRemove(cntr, true, layer.LayerName));
            }

            undoLayers.Reverse();		// they need to be undone in opossite order
            AddNewUndoRedoItem(undoLayers.ToArray());
        }
Example #2
0
        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);
            }
        }
Example #3
0
        private void btnNewLayer_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                LayerRow layer = new LayerRow(_options.EditorColors);

                if (pnlLayers.Children.Count == 0)
                {
                    layer.LayerName = "All Layers";
                    layer.IsLayerVisible = true;
                    layer.CanEditName = false;
                    layer.ShouldShowVisibility = false;
                }
                else
                {
                    layer.LayerName = "Layer " + (pnlLayers.Children.Count).ToString();		// using count instead of count + 1, because 0 is all layers
                    layer.IsLayerVisible = true;
                    layer.LayerVisibilityChanged += new EventHandler(Layer_LayerVisibilityChanged);
                }

                layer.GotFocus += new RoutedEventHandler(LayerRow_GotFocus);

                pnlLayers.Children.Add(layer);

                if (pnlLayers.Children.Count > 1)		// AllLayers doesn't count as an actual layer, it just lets you manipulate parts regardless what layer they are on
                {
                    _parts.Add(new List<DesignPart>());
                    ChangeLayer(_parts.Count - 1, false);
                }

                if (pnlLayers.Children.Count > 2)		// don't let them undo the first layer
                {
                    AddNewUndoRedoItem(new UndoRedoLayerAddRemove[] { new UndoRedoLayerAddRemove(_currentLayerIndex, true, layer.LayerName) });
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), _msgboxCaption, MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }