Beispiel #1
0
        private void RebuildTree()
        {
            UpdateConfOptionsVars();
            var temp = OptionsTreeView.SelectedItem as MyTreeViewItem;

            if (temp != null)
            {
                if (temp.Page != PageTypes.CurrentConfiguration && temp.Page != PageTypes.Unit)
                {
                    temp.Page = PageTypes.TMUnits;
                }
                if (this.applySaveFlag)
                {
                    temp.Page          = PageTypes.Configuration;
                    this.applySaveFlag = false;
                }
            }
            OptionsTreeView.Items.Clear();
            this.treeBuilderUnitCount = 0;
            this.treeControllerCount  = 0;
            this.tm1640UnitsTree      = new List <bool>();
            this.configurationOptions.NumberDisplays = this.configurationOptions.DisplayUnitConfigurations.Count - 1;
            BuildTreeViewNodes(0, OptionsTreeView.Items);
            if (temp == null)
            {
                return;
            }
            var queue = new Queue <MyTreeViewItem>();

            queue.Enqueue(OptionsTreeView.Items[0] as MyTreeViewItem);
            while (queue.Count > 0)
            {
                // Take the next node from the front of the queue
                MyTreeViewItem node = queue.Dequeue();
                if (node.Page == PageTypes.TMUnits && temp.Page == PageTypes.Unit)
                {
                    node.IsExpanded = true;
                }
                if (node.Page == temp.Page && node.UnitNumber == temp.UnitNumber)
                {
                    node.IsSelected = true;
                    node.IsExpanded = true;
                    continue;
                }

                // Add the node’s children to the back of the queue
                foreach (object child in node.Items)
                {
                    queue.Enqueue(child as MyTreeViewItem);
                }
            }
        }
Beispiel #2
0
        private static MyTreeViewItem GetMyTreeView(string text, string imagePath, PageTypes page, int unitNumber = -1,
                                                    int screenNumber = -1)
        {
            var item = new MyTreeViewItem
            {
                Page         = page,
                UnitNumber   = unitNumber,
                ScreenNumber = screenNumber,
                IsExpanded   = false
            };
            // create stack panel
            var stack = new StackPanel {
                Orientation = Orientation.Horizontal
            };
            // create Image
            var image = new Image
            {
                Source = new BitmapImage(new Uri("/iRduino;component/Resources/" + imagePath, UriKind.Relative))
            };
            // Label
            var lbl = new Label {
                Content = text
            };

            image.Margin          = new Thickness(4, 0, 0, 0);
            lbl.Margin            = new Thickness(0);
            lbl.VerticalAlignment = VerticalAlignment.Center;
            stack.Margin          = new Thickness(0);
            // Add into stack
            stack.Children.Add(image);
            stack.Children.Add(lbl);
            // assign stack to header
            item.Header = stack;
            if (page != PageTypes.Configuration)
            {
                item.Margin = new Thickness(-10, 0, 0, 0);
            }
            return(item);
        }
Beispiel #3
0
 private static MyTreeViewItem GetMyTreeView(string text, string imagePath, PageTypes page, int unitNumber = -1,
                                             int screenNumber = -1)
 {
     var item = new MyTreeViewItem
     {
         Page = page,
         UnitNumber = unitNumber,
         ScreenNumber = screenNumber,
         IsExpanded = false
     };
     // create stack panel
     var stack = new StackPanel { Orientation = Orientation.Horizontal };
     // create Image
     var image = new Image
     {
         Source = new BitmapImage(new Uri("/iRduino;component/Resources/" + imagePath, UriKind.Relative))
     };
     // Label
     var lbl = new Label { Content = text };
     image.Margin = new Thickness(4,0,0,0);
     lbl.Margin = new Thickness(0);
     lbl.VerticalAlignment = VerticalAlignment.Center;
     stack.Margin = new Thickness(0);
     // Add into stack
     stack.Children.Add(image);
     stack.Children.Add(lbl);
     // assign stack to header
     item.Header = stack;
     if (page != PageTypes.Configuration)
     {
         item.Margin = new Thickness(-10, 0, 0, 0);
     }
     return item;
 }
Beispiel #4
0
        //Clear Tree before calling from external code. make sure to update _confOptions before!!
        private void BuildTreeViewNodes(int level, IList itemCollection)
        {
            if (this.configurationOptions == null)
            {
                MyTreeViewItem item0 = GetMyTreeView("Configurations", "wrench_orange.png", PageTypes.Configuration);
                item0.Selected += MyTreeItemSelected;
                itemCollection.Add(item0);
            }
            else
            {
                if (level == 6)
                {
                    return;
                }
                switch (level)
                {
                case 0:
                    MyTreeViewItem item0 = GetMyTreeView("Configurations", "wrench_orange.png",
                                                         PageTypes.Configuration);
                    item0.Selected  += MyTreeItemSelected;
                    item0.IsExpanded = true;
                    BuildTreeViewNodes(level + 1, item0.Items);
                    itemCollection.Add(item0);
                    break;

                case 1:
                    MyTreeViewItem item1 = GetMyTreeView(this.configurationOptions.Name, "script_gear.png",
                                                         PageTypes.CurrentConfiguration);
                    item1.Selected  += MyTreeItemSelected;
                    item1.IsExpanded = true;
                    BuildTreeViewNodes(level + 1, item1.Items);
                    itemCollection.Add(item1);
                    break;

                case 2:
                    if (this.configurationOptions.DisplayUnitConfigurations != null &&
                        this.configurationOptions.DisplayUnitConfigurations.Count > 0)
                    {
                        MyTreeViewItem itemTMUnits = GetMyTreeView("TM Display Units", "bricks.png", PageTypes.TMUnits);
                        currentBranch         = "TMUnits";
                        itemTMUnits.Selected += MyTreeItemSelected;
                        BuildTreeViewNodes(level + 1, itemTMUnits.Items);
                        itemCollection.Add(itemTMUnits);
                    }
                    if (this.configurationOptions.ControllerConfigurations != null &&
                        this.configurationOptions.ControllerConfigurations.Count > 0)
                    {
                        MyTreeViewItem itemControllers = GetMyTreeView("Controllers", "controller.png", PageTypes.None);
                        currentBranch             = "Controllers";
                        itemControllers.Focusable = false;
                        itemControllers.Selected += MyTreeItemSelected;
                        BuildTreeViewNodes(level + 1, itemControllers.Items);
                        itemCollection.Add(itemControllers);
                    }
                    MyTreeViewItem itemAdOpts = GetMyTreeView("Advanced Options", "page_gear.png",
                                                              PageTypes.AdvancedOptions);
                    itemAdOpts.Selected += MyTreeItemSelected;
                    itemCollection.Add(itemAdOpts);
                    break;

                case 3:
                    if (currentBranch == "TMUnits")
                    {
                        if (this.configurationOptions.DisplayUnitConfigurations != null &&
                            this.configurationOptions.DisplayUnitConfigurations.Count > 0)
                        {
                            for (int i = 0; i < this.configurationOptions.DisplayUnitConfigurations.Count; i++)
                            {
                                this.treeBuilderUnitCount = i;
                                MyTreeViewItem item2;
                                if (this.configurationOptions.DisplayUnitConfigurations[i].IsTM1640)
                                {
                                    item2 = GetMyTreeView(
                                        String.Format("Unit {0} (TM1640)", i + 1),
                                        "brickBlue.png",
                                        PageTypes.Unit,
                                        i);
                                    this.tm1640UnitsTree.Add(true);
                                }
                                else
                                {
                                    item2 = GetMyTreeView(
                                        String.Format("Unit {0}", i + 1), "brick.png", PageTypes.Unit, i);
                                    this.tm1640UnitsTree.Add(false);
                                }
                                item2.Selected += MyTreeItemSelected;
                                BuildTreeViewNodes(level + 1, item2.Items);
                                int count = this.tm1640UnitsTree.Count(flag => flag);
                                if (count > Constants.MaxNumberTm1640Units)
                                {
                                    MessageBox.Show(
                                        "Only Three or less TM1640 display units is supported currently");
                                }
                                itemCollection.Add(item2);
                            }
                        }
                    }
                    if (currentBranch == "Controllers")
                    {
                        if (this.configurationOptions.ControllerConfigurations != null)
                        {
                            if (this.configurationOptions.ControllerConfigurations.Count > 0)
                            {
                                for (int i = 0; i < this.configurationOptions.ControllerConfigurations.Count; i++)
                                {
                                    MyTreeViewItem itemJoy = GetMyTreeView(
                                        String.Format("Controller {0}", i + 1),
                                        "controller.png",
                                        PageTypes.JoystickButtons,
                                        i);
                                    itemJoy.Selected += MyTreeItemSelected;
                                    itemCollection.Add(itemJoy);
                                    this.treeControllerCount = i + 1;
                                }
                            }
                        }
                    }
                    break;

                case 4:
                    if (currentBranch == "TMUnits")
                    {
                        if (!this.configurationOptions.DisplayUnitConfigurations[this.treeBuilderUnitCount].IsTM1640)     //not TM1640
                        {
                            MyTreeViewItem item3 = GetMyTreeView(
                                "Buttons", "joystick.png", PageTypes.Buttons, this.treeBuilderUnitCount);
                            item3.Selected += MyTreeItemSelected;
                            itemCollection.Add(item3);
                            MyTreeViewItem item4 = GetMyTreeView(
                                "LEDs", "lightbulb.png", PageTypes.LEDs, this.treeBuilderUnitCount);
                            item4.Selected += MyTreeItemSelected;
                            itemCollection.Add(item4);
                        }
                        MyTreeViewItem item5 = GetMyTreeView(
                            "Screens", "layers.png", PageTypes.None, this.treeBuilderUnitCount);
                        item5.Focusable = false;
                        BuildTreeViewNodes(level + 1, item5.Items);
                        itemCollection.Add(item5);
                    }
                    break;

                case 5:
                    if (currentBranch == "TMUnits")
                    {
                        for (int j = 0;
                             j
                             < this.configurationOptions.DisplayUnitConfigurations[this.treeBuilderUnitCount]
                             .Screens.Count;
                             j++)
                        {
                            MyTreeViewItem item6 = GetMyTreeView(
                                string.Format("Screen {0}", j + 1),
                                "picture_empty.png",
                                this.configurationOptions.DisplayUnitConfigurations[this.treeBuilderUnitCount]
                                .IsTM1640
                                        ? PageTypes.TM1640Screen
                                        : PageTypes.Screen,
                                this.treeBuilderUnitCount,
                                j);
                            item6.Selected += MyTreeItemSelected;
                            BuildTreeViewNodes(level + 1, item6.Items);
                            itemCollection.Add(item6);
                        }
                    }
                    break;
                }
            }
        }