Example #1
0
        private void UncheckedLayerToMix(object sender, RoutedEventArgs e)
        {
            var contex = sender as System.Windows.Controls.Primitives.ToggleButton;

            Layer uncheckedLayer = (Layer)contex.DataContext;

            if (uncheckedLayer != null)
            {
                CheckedLayersForMixInOneLayer.Remove(uncheckedLayer);

                this.Publish <IsEnableMoveAndMixButtons>(new IsEnableMoveAndMixButtons(CheckedLayersForMixInOneLayer));
            }
        }
Example #2
0
        private void CheckedLayerToMix(object sender, RoutedEventArgs e)
        {
            var contex = sender as System.Windows.Controls.Primitives.ToggleButton;

            Layer checkedLayer = (Layer)contex.DataContext;

            if (CheckedLayersForMixInOneLayer.Count == 0)
            {
                CheckedLayersForMixInOneLayer.Add(checkedLayer);

                this.Publish <IsEnableMoveAndMixButtons>(new IsEnableMoveAndMixButtons(CheckedLayersForMixInOneLayer));
            }
            else
            if (CheckedLayersForMixInOneLayer.Count == 1)
            {
                var layer = CheckedLayersForMixInOneLayer.FirstOrDefault();

                var indexFirstLayer = ItemsSource.Items.IndexOf(layer);

                Layer beforeFirstLayer = null;
                Layer afterFirstLayer  = null;

                if (indexFirstLayer + 1 < ItemsSource.Items.Count)
                {
                    afterFirstLayer = (Layer)ItemsSource.Items.GetItemAt(indexFirstLayer + 1);
                }

                if (indexFirstLayer - 1 >= 0)
                {
                    beforeFirstLayer = (Layer)ItemsSource.Items.GetItemAt(indexFirstLayer - 1);
                }

                if ((checkedLayer == beforeFirstLayer) || (checkedLayer == afterFirstLayer))
                {
                    CheckedLayersForMixInOneLayer.Add(checkedLayer);

                    this.Publish <IsEnableMoveAndMixButtons>(new IsEnableMoveAndMixButtons(CheckedLayersForMixInOneLayer));
                }
                else
                {
                    contex.IsChecked = false;
                }
            }
            else
            {
                contex.IsChecked = false;
            }
        }
Example #3
0
        private void Mix2Layers()
        {
            if (CheckedLayersForMixInOneLayer.Count == 2)
            {
                var sortedCollection = CheckedLayersForMixInOneLayer.OrderBy(x => x.GetZIndex).ToList();

                var firstLayer  = sortedCollection[0];
                var secondLayer = sortedCollection[1];


                Layer resultLayer = new Layer()
                {
                    LastGrid  = firstLayer.LastGrid,
                    LastLayer = firstLayer.LastLayer,
                    Name      = string.Format("{0} + {1}", firstLayer.Name, secondLayer.Name),
                    NextGrid  = secondLayer.NextGrid,
                    NextLayer = secondLayer.NextLayer
                };

                List <Grid> gridIntoFirstGrid  = null;
                List <Grid> gridIntoSecondGrid = null;

                gridIntoFirstGrid  = (firstLayer.Grid.Children.Count > 0 ? HelpMethods.GetElementsFrom <Grid>(firstLayer.Grid).ConvertAll(x => (Grid)x) : new List <Grid>()
                {
                    new Grid()
                });
                gridIntoSecondGrid = (secondLayer.Grid.Children.Count > 0 ? HelpMethods.GetElementsFrom <Grid>(secondLayer.Grid).ConvertAll(x => (Grid)x) : new List <Grid>()
                {
                    new Grid()
                });

                var resultGrid       = gridIntoFirstGrid.Concat(gridIntoSecondGrid);
                var zIndexResultGrid = firstLayer.ZIndex;

                firstLayer.Grid.Children.Clear();
                secondLayer.Grid.Children.Clear();

                int indexOfFirstLayer = Items.IndexOf(firstLayer);

                Grid grid = new Grid();

                foreach (var item in resultGrid)
                {
                    grid.Children.Add(item);
                }

                resultLayer.Grid      = grid;
                resultLayer.ZIndex    = zIndexResultGrid;
                resultLayer.IsChecked = true;

                int index = Items.IndexOf(firstLayer);

                DeleteLayer(firstLayer);
                DeleteLayer(secondLayer);

                this.Publish <AddLayer>(new AddLayer(resultLayer, index));

                Items.Move(Items.IndexOf(resultLayer), index);

                if (resultLayer.LastLayer != null)
                {
                    resultLayer.LastLayer.NextGrid  = resultLayer.Grid;
                    resultLayer.LastLayer.NextLayer = resultLayer;
                }

                if (resultLayer.NextLayer != null)
                {
                    resultLayer.NextLayer.LastGrid  = resultLayer.Grid;
                    resultLayer.NextLayer.LastLayer = resultLayer;
                }

                CheckedLayersForMixInOneLayer.Clear();

                this.Publish <IsEnableMoveAndMixButtons>(new IsEnableMoveAndMixButtons(CheckedLayersForMixInOneLayer));
            }
        }