private void popoutForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            // get the page back
            var temp = ((Form)sender).Tag as BackstageViewPage;

            // add back to where it belongs
            this.pnlPages.Controls.Add(temp.Page);

            // clear the controls, so we dont dispose the good control when it closes
            ((Form)sender).Controls.Clear();
            popoutPage = null;
        }
Beispiel #2
0
 private BackstageViewPage AddBackstageViewPage(Type userControl, string headerText,
                                                BackstageViewPage Parent = null, bool advanced = false)
 {
     try
     {
         return(backstageView.AddPage(userControl, headerText, Parent, advanced));
     }
     catch (Exception ex)
     {
         log.Error(ex);
         return(null);
     }
 }
Beispiel #3
0
        public void AddPage(BackstageViewPage page)
        {
            page.Page.Anchor   = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            page.Page.Location = new Point(pnlMenu.Width, 0);
            page.Page.Dock     = DockStyle.Fill;

            _pages.Add(page);
            CreateLinkButton(page);
            this.pnlPages.Controls.Add(page.Page);

            if (_activePage == null)
            {
                _activePage = page;

                ActivatePage(page);
            }
        }
Beispiel #4
0
        public void ActivatePage(BackstageViewPage associatedPage)
        {
            // deactivate the old page
            _activePage.Page.Visible = false;
            var oldButton = this.pnlMenu.Controls.OfType <BackstageViewButton>().Single(b => b.Tag == _activePage);

            oldButton.IsSelected = false;

            associatedPage.Page.Visible = true;
            var newButton = this.pnlMenu.Controls.OfType <BackstageViewButton>().Single(b => b.Tag == associatedPage);

            newButton.IsSelected = true;

            _activePage = associatedPage;

            _activePage.Page.OnLoad(new EventArgs());
        }
Beispiel #5
0
        public void ActivatePage(BackstageViewPage associatedPage)
        {
            DrawMenu(associatedPage);

            // Deactivate old page
            if (_activePage.Page is IDeactivate)
            {
                ((IDeactivate)(_activePage.Page)).Deactivate();
            }

            // deactivate the old page - obsolete way of notifying activation
            //_activePage.Page.Close();

            foreach (var p in Pages)
            {
                p.Page.Visible = false;
            }

            // deactivate button
            _activePage.Page.Visible = false;
            try
            { // if the button was on an expanded tab. when we leave it no longer exits
                var oldButton = this.pnlMenu.Controls.OfType <BackstageViewButton>().Single(b => b.Tag == _activePage);
                oldButton.IsSelected = false;
            }
            catch { }

            // ensure fields have been init - obsolete way of notifying activation
            //associatedPage.Page.DoLoad(new EventArgs());

            // new way of notifying activation. Goal is to get rid of BackStageViewContentPanel
            // so plain old user controls can be added
            if (associatedPage.Page is IActivate)
            {
                ((IActivate)(associatedPage.Page)).Activate();
            }

            // show it
            associatedPage.Page.Visible = true;

            var newButton = this.pnlMenu.Controls.OfType <BackstageViewButton>().Single(b => b.Tag == associatedPage);

            newButton.IsSelected = true;

            _activePage = associatedPage;
        }
Beispiel #6
0
        private void CreateLinkButton(BackstageViewPage page)
        {
            var lnkButton = new BackstageViewButton
            {
                Text                = page.LinkText,
                Tag                 = page,
                Top                 = _pages.IndexOf(page) * ButtonSpacing,
                Width               = this.pnlMenu.Width,
                Height              = ButtonHeight,
                ContentPageColor    = this.BackColor,
                PencilBorderColor   = _buttonsAreaPencilColor,
                SelectedTextColor   = _selectedTextColor,
                UnSelectedTextColor = _unSelectedTextColor,
                HighlightColor1     = _highlightColor1,
                HighlightColor2     = _highlightColor2
            };

            pnlMenu.Controls.Add(lnkButton);
            lnkButton.Click += this.ButtonClick;
        }
Beispiel #7
0
        private void CreateLinkButton(BackstageViewPage page, bool haschild = false, bool child = false)
        {
            string label = page.LinkText;

            if (haschild)
            {
                label = ">> " + label;
            }
            if (child)
            {
                label = "      " + label;
            }

            var lnkButton = new BackstageViewButton
            {
                Text = label,
                Tag  = page,
                Top  = ButtonTopPos,
                // Top = _items.TakeWhile(i => i != page).Sum(i => i.Spacing),
                Width               = this.pnlMenu.Width,
                Height              = ButtonHeight,
                ContentPageColor    = this.BackColor,
                PencilBorderColor   = _buttonsAreaPencilColor,
                SelectedTextColor   = _selectedTextColor,
                UnSelectedTextColor = _unSelectedTextColor,
                HighlightColor1     = _highlightColor1,
                HighlightColor2     = _highlightColor2,
                //Dock = DockStyle.Bottom
            };

            pnlMenu.Controls.Add(lnkButton);
            lnkButton.Click       += this.ButtonClick;
            lnkButton.DoubleClick += lnkButton_DoubleClick;

            ButtonTopPos += lnkButton.Height;
        }
Beispiel #8
0
        public void ActivatePage(BackstageViewPage associatedPage)
        {
            if (associatedPage == null)
            {
                if (_activePage == null)
                    DrawMenu(null, true);
                return;
            }

            this.SuspendLayout();

            DrawMenu(associatedPage , false);

            // Deactivate old page
            if (_activePage != null && _activePage.Page is IDeactivate)
            {
                ((IDeactivate)(_activePage.Page)).Deactivate();
            }

            // deactivate the old page - obsolete way of notifying activation
            //_activePage.Page.Close();

            foreach (var p in Pages)
            {
                if (p.Page.Visible != false)
                    p.Page.Visible = false;
            }

            try
            { // if the button was on an expanded tab. when we leave it no longer exits
                var oldButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == _activePage);
                oldButton.IsSelected = false;
            }
            catch { }

            // new way of notifying activation. Goal is to get rid of BackStageViewContentPanel
            // so plain old user controls can be added
            if (associatedPage.Page is IActivate)
            {
                ((IActivate)(associatedPage.Page)).Activate();
            }

            // show it
            associatedPage.Page.Visible = true;

            try
            {
                var newButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == associatedPage);
                newButton.IsSelected = true;
            }
            catch { }

            _activePage = associatedPage;

            this.ResumeLayout();
        }
Beispiel #9
0
 public BackstageViewPage(UserControl page, string linkText, BackstageViewPage parent = null)
 {
     Page     = page;
     LinkText = linkText;
     Parent   = parent;
 }
Beispiel #10
0
        public void DrawMenu(BackstageViewPage CurrentPage, bool force = false)
        {
            if (!force)
            {
                if (_activePage == CurrentPage || CurrentPage == null)
                {
                    return;
                }
            }

            pnlMenu.Visible = false;
            pnlMenu.SuspendLayout();

            pnlMenu.Controls.Clear();

            // reset back to 0
            ButtonTopPos = 0;

            foreach (BackstageViewItem page in _items)
            {
                if (page.GetType() == typeof(BackstageViewPage))
                {
                    // its a base item. we want it
                    if (((BackstageViewPage)page).Parent == null)
                    {
                        bool children = PageHasChildren(page);

                        CreateLinkButton((BackstageViewPage)page, children);

                        // remember whats expanded
                        if (CurrentPage == page && children)
                        {
                            if (expanded.Contains((BackstageViewPage)page))
                            {
                                expanded.Remove((BackstageViewPage)page);
                            }
                            else
                            {
                                expanded.Add((BackstageViewPage)page);
                            }
                        }

                        // check for children
                        foreach (BackstageViewItem childrenpage in _items)
                        {
                            if (childrenpage.GetType() == typeof(BackstageViewPage))
                            {
                                if (((BackstageViewPage)childrenpage).Parent == ((BackstageViewPage)page))
                                {
                                    // check if current page has a parent thats not expanded
                                    if (CurrentPage == childrenpage && !expanded.Contains((BackstageViewPage)page))
                                    {
                                        expanded.Add((BackstageViewPage)page);
                                        DrawMenu(CurrentPage, true);
                                        return;
                                    }
                                    // draw all the siblings
                                    if (expanded.Contains((BackstageViewPage)page))
                                    {
                                        CreateLinkButton((BackstageViewPage)childrenpage, false, true);
                                    }
                                }
                            }
                        }
                        continue;
                    }
                }
                else
                {
                    ButtonTopPos += page.Spacing;
                }
            }

            pnlMenu.ResumeLayout(false);
            pnlMenu.PerformLayout();
            pnlMenu.Visible = true;
        }
Beispiel #11
0
        private void SoftwareConfig_Load(object sender, EventArgs e)
        {
            try
            {
                ConfigArducopter conf_PID = new ConfigArducopter();
                conf_PID.Dock = DockStyle.Fill;
                TabPage pid_tp = new TabPage();//Create new tabpage
                pid_tp.Controls.Add(conf_PID);
                pid_tp.Text = "参数调试";
                tabControl_debug.TabPages.Add(pid_tp);
                tabControl_debug.SelectedIndexChanged += new EventHandler(conf_PID.OnFocus);

                ConfigRawParams conf_rawParams = new ConfigRawParams();
                conf_rawParams.Dock = DockStyle.Fill;
                TabPage rp_tp = new TabPage();//Create new tabpage
                rp_tp.Controls.Add(conf_rawParams);
                rp_tp.Text = "参数列表";
                tabControl_debug.TabPages.Add(rp_tp);
                tabControl_debug.SelectedIndexChanged += new EventHandler(conf_rawParams.OnFocus);

                return;

                BackstageViewPage start = null;

                if (MainV2.comPort.BaseStream.IsOpen)
                {
                    start = AddBackstageViewPage(typeof(ConfigFlightModes), Strings.FlightModes);

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduCopter2)
                    {
                        AddBackstageViewPage(typeof(ConfigAC_Fence), Strings.GeoFence);
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduCopter2)
                    {
                        start = AddBackstageViewPage(typeof(ConfigSimplePids), Strings.BasicTuning);

                        AddBackstageViewPage(typeof(ConfigArducopter), Strings.ExtendedTuning);
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduPlane)
                    {
                        start = AddBackstageViewPage(typeof(ConfigArduplane), Strings.BasicTuning);
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduRover)
                    {
                        start = AddBackstageViewPage(typeof(ConfigArdurover), Strings.BasicTuning);
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduTracker)
                    {
                        start = AddBackstageViewPage(typeof(ConfigAntennaTracker), Strings.ExtendedTuning);
                    }
                    AddBackstageViewPage(typeof(ConfigFriendlyParams), Strings.StandardParams);

                    if (MainV2.DisplayConfiguration.displayAdvancedParams)
                    {
                        AddBackstageViewPage(typeof(ConfigFriendlyParamsAdv), Strings.AdvancedParams, null, true);
                    }
                    if (MainV2.DisplayConfiguration.displayFullParamList)
                    {
                        AddBackstageViewPage(typeof(ConfigRawParams), Strings.FullParameterList, null, true);
                    }
                    if (MainV2.DisplayConfiguration.displayFullParamTree)
                    {
                        AddBackstageViewPage(typeof(ConfigRawParamsTree), Strings.FullParameterTree, null, true);
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.Ateryx)
                    {
                        start = AddBackstageViewPage(typeof(ConfigFlightModes), Strings.FlightModes);
                        AddBackstageViewPage(typeof(ConfigAteryxSensors), "Ateryx Zero Sensors");
                        AddBackstageViewPage(typeof(ConfigAteryx), "Ateryx Pids");
                    }

                    AddBackstageViewPage(typeof(ConfigPlanner), "Planner");
                }
                else
                {
                    start = AddBackstageViewPage(typeof(ConfigPlanner), "Planner");
                }

                // apply theme before trying to display it
                ThemeManager.ApplyThemeTo(this);

                // remeber last page accessed
                foreach (BackstageViewPage page in backstageView.Pages)
                {
                    if (page.LinkText == lastpagename)
                    {
                        backstageView.ActivatePage(page);
                        break;
                    }
                }


                if (backstageView.SelectedPage == null && start != null)
                {
                    backstageView.ActivatePage(start);
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
        }
Beispiel #12
0
        private void SoftwareConfig_Load(object sender, EventArgs e)
        {
            try
            {
                BackstageViewPage start = null;

                if (MainV2.comPort.BaseStream.IsOpen)
                {
                    AddBackstageViewPage(new ConfigFlightModes(), Strings.FlightModes);

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduCopter2)
                    {
                        AddBackstageViewPage(new ConfigAC_Fence(), Strings.GeoFence);
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduCopter2)
                    {
                        start = AddBackstageViewPage(new ConfigSimplePids(), Strings.BasicTuning);

                        AddBackstageViewPage(new ConfigArducopter(), Strings.ExtendedTuning);
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduPlane)
                    {
                        start = AddBackstageViewPage(new ConfigArduplane(), Strings.BasicTuning);
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduRover)
                    {
                        start = AddBackstageViewPage(new ConfigArdurover(), Strings.BasicTuning);
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduTracker)
                    {
                        start = AddBackstageViewPage(new ConfigAntennaTracker(), Strings.ExtendedTuning);
                    }

                    AddBackstageViewPage(new ConfigFriendlyParams {
                        ParameterMode = ParameterMetaDataConstants.Standard
                    }, Strings.StandardParams);
                    AddBackstageViewPage(new ConfigFriendlyParams {
                        ParameterMode = ParameterMetaDataConstants.Advanced
                    }, Strings.AdvancedParams, null, true);
                    AddBackstageViewPage(new ConfigRawParams(), Strings.FullParameterList, null, true);

                    AddBackstageViewPage(new ConfigRawParamsTree(), Strings.FullParameterTree, null, true);


                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.Ateryx)
                    {
                        start = AddBackstageViewPage(new ConfigFlightModes(), Strings.FlightModes);
                        AddBackstageViewPage(new ConfigAteryxSensors(), "Ateryx Zero Sensors");
                        AddBackstageViewPage(new ConfigAteryx(), "Ateryx Pids");
                    }

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduTracker)
                    {
                        start = AddBackstageViewPage(new ConfigRawParams(), Strings.FullParameterList, null, true);
                    }

                    AddBackstageViewPage(new ConfigPlanner(), "Planner");
                }
                else
                {
                    start = AddBackstageViewPage(new ConfigPlanner(), "Planner");
                }

                // remeber last page accessed
                foreach (BackstageViewPage page in backstageView.Pages)
                {
                    if (page.LinkText == lastpagename)
                    {
                        this.backstageView.ActivatePage(page);
                        break;
                    }
                }


                if (this.backstageView.SelectedPage == null && start != null)
                {
                    backstageView.ActivatePage(start);
                }

                ThemeManager.ApplyThemeTo(this);
            }
            catch (Exception ex) { log.Error(ex); }
        }
 private BackstageViewPage AddBackstageViewPage(UserControl userControl, string headerText, BackstageViewPage Parent = null, bool advanced = false)
 {
     try
     {
         log.Debug("adding page " + headerText);
         var obj = backstageView.AddPage(userControl, headerText, Parent, advanced);
         log.Debug("done page " + headerText);
         return(obj);
     }
     catch (Exception ex) { log.Error(ex); return(null); }
 }
Beispiel #14
0
        private void popoutForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            // get the page back
            var temp = ((Form)sender).Tag as BackstageViewPage;

            // add back to where it belongs
            this.pnlPages.Controls.Add(temp.Page);

            // clear the controls, so we dont dispose the good control when it closes
            ((Form)sender).Controls.Clear();
            popoutPage = null;
        }
        public void ActivatePage(BackstageViewPage associatedPage)
        {
            // deactivate the old page
            _activePage.Page.Close();
            Pages.ForEach(x =>
            {
                x.Page.Visible = false;
            });

            _activePage.Page.Visible = false;
            var oldButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == _activePage);
            oldButton.IsSelected = false;

            associatedPage.Page.Visible = true;
            var newButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == associatedPage);
            newButton.IsSelected = true;

            _activePage = associatedPage;

            _activePage.Page.DoLoad(new EventArgs());
        }
Beispiel #16
0
        public void ActivatePage(BackstageViewPage associatedPage)
        {
            if (associatedPage == null)
            {
                if (_activePage == null)
                {
                    DrawMenu(null, true);
                }
                return;
            }

            MissionPlanner.Utilities.Tracking.AddPage(associatedPage.Page.GetType().ToString(), associatedPage.LinkText);

            this.SuspendLayout();

            DrawMenu(associatedPage, false);

            // Deactivate old page
            if (_activePage != null && _activePage.Page is IDeactivate)
            {
                ((IDeactivate)(_activePage.Page)).Deactivate();
            }

            // deactivate the old page - obsolete way of notifying activation
            //_activePage.Page.Close();

            foreach (var p in Pages)
            {
                if (p.Page.Visible != false)
                {
                    p.Page.Visible = false;
                }
            }

            try
            { // if the button was on an expanded tab. when we leave it no longer exits
                if (_activePage != null)
                {
                    var oldButton = this.pnlMenu.Controls.OfType <BackstageViewButton>().Single(b => b.Tag == _activePage);
                    oldButton.IsSelected = false;
                }
            }
            catch { }

            // new way of notifying activation. Goal is to get rid of BackStageViewContentPanel
            // so plain old user controls can be added
            if (associatedPage.Page is IActivate)
            {
                ((IActivate)(associatedPage.Page)).Activate();
            }

            // show it
            associatedPage.Page.Visible = true;

            try
            {
                var newButton = this.pnlMenu.Controls.OfType <BackstageViewButton>().Single(b => b.Tag == associatedPage);
                newButton.IsSelected = true;
            }
            catch { }

            _activePage = associatedPage;

            this.ResumeLayout();
        }
Beispiel #17
0
        private void CreateLinkButton(BackstageViewPage page,bool haschild = false, bool child = false)
        {
            string label = page.LinkText;

            if (haschild)
            {
                label = ">> " + label;
            }
            if (child)
            {
                label = "      " + label;
            }

            var lnkButton = new BackstageViewButton
                                {
                                    Text = label,
                                    Tag = page,
                                    Top = ButtonTopPos,
                       // Top = _items.TakeWhile(i => i != page).Sum(i => i.Spacing),
                                    Width = this.pnlMenu.Width,
                                    Height = ButtonHeight,
                                    ContentPageColor = this.BackColor,
                                    PencilBorderColor = _buttonsAreaPencilColor,
                                    SelectedTextColor = _selectedTextColor,
                                    UnSelectedTextColor = _unSelectedTextColor,
                                    HighlightColor1 = _highlightColor1,
                                    HighlightColor2 = _highlightColor2,
                                    //Dock = DockStyle.Bottom
                                };

            pnlMenu.Controls.Add(lnkButton);
            lnkButton.Click += this.ButtonClick;
            lnkButton.DoubleClick += lnkButton_DoubleClick;

            ButtonTopPos += lnkButton.Height;
        }
Beispiel #18
0
        private void SoftwareConfig_Load(object sender, EventArgs e)
        {
            try
            {
                BackstageViewPage start = null;

                //if (MainV2.comPort.BaseStream.IsOpen)
                {
                    //start = AddBackstageViewPage(typeof(ConfigFlightModes), Strings.FlightModes);

                    //if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduCopter2)
                    //    AddBackstageViewPage(typeof( ConfigAC_Fence), Strings.GeoFence);

                    if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduCopter2)
                    {
                        start = AddBackstageViewPage(typeof(ConfigSimplePids), Strings.BasicTuning);

                        AddBackstageViewPage(typeof(ConfigArducopter), Strings.ExtendedTuning);
                    }

                    //if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduPlane)
                    //{
                    //    start = AddBackstageViewPage(typeof( ConfigArduplane), Strings.BasicTuning);
                    //}

                    //if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduRover)
                    //{
                    //    start = AddBackstageViewPage(typeof( ConfigArdurover), Strings.BasicTuning);
                    //}

                    //if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduTracker)
                    //{
                    //    start = AddBackstageViewPage(typeof( ConfigAntennaTracker), Strings.ExtendedTuning);
                    //}
                    AddBackstageViewPage(typeof(ConfigFriendlyParams), Strings.StandardParams);

                    if (MainV2.DisplayConfiguration.displayAdvancedParams)
                    {
                        AddBackstageViewPage(typeof(ConfigFriendlyParamsAdv), Strings.AdvancedParams, null, true);
                    }
                    if (MainV2.DisplayConfiguration.displayFullParamList)
                    {
                        AddBackstageViewPage(typeof(ConfigRawParams), Strings.FullParameterList, null, true);
                    }
                    if (MainV2.DisplayConfiguration.displayFullParamTree)
                    {
                        AddBackstageViewPage(typeof(ConfigRawParamsTree), Strings.FullParameterTree, null, true);
                    }

                    //if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.Ateryx)
                    //{
                    //    start = AddBackstageViewPage(typeof( ConfigFlightModes), Strings.FlightModes);
                    //    AddBackstageViewPage(typeof( ConfigAteryxSensors), "Ateryx Zero Sensors");
                    //    AddBackstageViewPage(typeof( ConfigAteryx), "Ateryx Pids");
                    //}

                    AddBackstageViewPage(typeof(ConfigPlanner), "Planner");
                }
                //else
                //{
                //    start = AddBackstageViewPage(typeof( ConfigPlanner), "Planner");
                //}

                // apply theme before trying to display it
                ThemeManager.ApplyThemeTo(this);

                // remeber last page accessed
                foreach (BackstageViewPage page in backstageView.Pages)
                {
                    if (page.LinkText == lastpagename)
                    {
                        backstageView.ActivatePage(page);
                        break;
                    }
                }


                if (backstageView.SelectedPage == null && start != null)
                {
                    backstageView.ActivatePage(start);
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
        }
        public void AddPage(BackstageViewPage page)
        {
            page.Page.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            page.Page.Location = new Point(pnlMenu.Width, 0);
            page.Page.Dock = DockStyle.Fill;

            _pages.Add(page);
            CreateLinkButton(page);
            this.pnlPages.Controls.Add(page.Page);

            if (_activePage == null)
            {
                _activePage = page;

                ActivatePage(page);
            }
        }
        private void CreateLinkButton(BackstageViewPage page)
        {
            var lnkButton = new BackstageViewButton
                                {
                                    Text = page.LinkText,
                                    Tag = page,
                                    Top = _pages.IndexOf(page) * ButtonSpacing,
                                    Width = this.pnlMenu.Width,
                                    Height = ButtonHeight,
                                    ContentPageColor = this.BackColor,
                                    PencilBorderColor = _buttonsAreaPencilColor,
                                    SelectedTextColor = _selectedTextColor,
                                    UnSelectedTextColor = _unSelectedTextColor,
                                    HighlightColor1 = _highlightColor1,
                                    HighlightColor2 = _highlightColor2
                                };

            pnlMenu.Controls.Add(lnkButton);
            lnkButton.Click += this.ButtonClick;
            lnkButton.DoubleClick += lnkButton_DoubleClick;
        }
Beispiel #21
0
        /// <summary>
        /// Add a page (tab) to this backstage view. Will be added at the end/bottom
        /// </summary>
        public BackstageViewPage AddPage(UserControl userControl, string headerText, BackstageViewPage Parent)
        {
            var page = new BackstageViewPage(userControl, headerText, Parent)
                           {
                               Page =
                                   {
                                       Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top,
                                       Location = new Point(pnlMenu.Width, 0),
                                       Dock = DockStyle.Fill
                                   }
                           };

            _items.Add(page);

            //CreateLinkButton(page);
            //DrawMenu(page);

            page.Page.Visible = false;

            this.pnlPages.Controls.Add(page.Page);

            if (_activePage == null)
            {
              //  _activePage = page;

             //   ActivatePage(page);
            }

            return page;
        }
Beispiel #22
0
        private void DrawMenu(BackstageViewPage CurrentPage)
        {
            if (_activePage == CurrentPage)
                return;

            pnlMenu.Visible = false;
            pnlMenu.SuspendLayout();

            pnlMenu.Controls.Clear();

            // reset back to 0
            ButtonTopPos = 0;

            foreach (BackstageViewItem page in _items)
            {
                if (page.GetType() == typeof(BackstageViewPage))
                {
                    // its a base item. we want it
                    if (((BackstageViewPage)page).Parent == null)
                    {
                        bool children = PageHasChildren(page);

                        CreateLinkButton((BackstageViewPage)page, children);

                        // check for children
                        foreach (BackstageViewItem parentpage in _items)
                        {
                            if (parentpage.GetType() == typeof(BackstageViewPage))
                            {
                                if (((BackstageViewPage)parentpage).Parent == ((BackstageViewPage)page))
                                {
                                    // draw all the siblings
                                    if (((BackstageViewPage)parentpage).Parent == CurrentPage)
                                    {
                                        CreateLinkButton((BackstageViewPage)parentpage,false,true);
                                    }
                                    if (((BackstageViewPage)parentpage).Parent == CurrentPage.Parent)
                                    {
                                        CreateLinkButton((BackstageViewPage)parentpage,false,true);
                                    }
                                }
                            }
                        }
                        continue;
                    }

                }
                else
                {
                    ButtonTopPos += page.Spacing;
                }
            }

            pnlMenu.ResumeLayout(false);
            pnlMenu.PerformLayout();
            pnlMenu.Visible = true;
        }
Beispiel #23
0
        public void DrawMenu(BackstageViewPage CurrentPage, bool force = false)
        {
            if (!force)
            {
                if (_activePage == CurrentPage || CurrentPage == null)
                {
                    return;
                }
            }

            pnlMenu.Visible = false;
            pnlMenu.SuspendLayout();

            pnlMenu.Controls.Clear();

            // reset back to 0
            ButtonTopPos = 0;

            foreach (BackstageViewItem page in _items)
            {
                if (page.GetType() == typeof(BackstageViewPage))
                {
                    // its a base item. we want it
                    if (((BackstageViewPage)page).Parent == null)
                    {
                        bool children = PageHasChildren(page);

                        CreateLinkButton((BackstageViewPage)page, children);

                        // remember whats expanded
                        if (CurrentPage == page && children)
                        {
                            if (expanded.Contains((BackstageViewPage)page))
                            {
                                expanded.Remove((BackstageViewPage)page);
                            }
                            else
                            {
                                expanded.Add((BackstageViewPage)page);
                            }
                        }

                        // check for children
                        foreach (BackstageViewItem childrenpage in _items)
                        {
                            if (childrenpage.GetType() == typeof(BackstageViewPage))
                            {
                                if (((BackstageViewPage)childrenpage).Parent == ((BackstageViewPage)page))
                                {
                                    // check if current page has a parent thats not expanded
                                    if (CurrentPage == childrenpage && !expanded.Contains((BackstageViewPage)page))
                                    {
                                        expanded.Add((BackstageViewPage)page);
                                        DrawMenu(CurrentPage,true);
                                        return;
                                    }
                                    // draw all the siblings
                                    if (expanded.Contains((BackstageViewPage)page))
                                    {
                                        CreateLinkButton((BackstageViewPage)childrenpage, false, true);
                                    }
                                }
                            }
                        }
                        continue;
                    }

                }
                else
                {
                    ButtonTopPos += page.Spacing;
                }
            }

            pnlMenu.ResumeLayout(false);
            pnlMenu.PerformLayout();
            pnlMenu.Visible = true;
        }
        private void CreateLinkButton(BackstageViewPage page)
        {
            var lnkButton = new BackstageViewButton
                                {
                                    Text = page.LinkText,
                                    Tag = page,
                        Top = _items.TakeWhile(i => i != page).Sum(i => i.Spacing),
                                    Width = this.pnlMenu.Width,
                                    Height = ButtonHeight,
                                    ContentPageColor = this.BackColor,
                                    PencilBorderColor = _buttonsAreaPencilColor,
                                    SelectedTextColor = _selectedTextColor,
                                    UnSelectedTextColor = _unSelectedTextColor,
                                    HighlightColor1 = _highlightColor1,
                                    HighlightColor2 = _highlightColor2,
                                   // Dock = DockStyle.Bottom
                                };

            pnlMenu.Controls.Add(lnkButton);
            lnkButton.Click += this.ButtonClick;
            lnkButton.DoubleClick += lnkButton_DoubleClick;
        }
Beispiel #25
0
        /*
         * Experimental - double clicking a button will spawn it out into a new form
         * Care must be given to lifecycle here - two pages can now be interacted with
         * 'simultaneously'
         */
        private void lnkButton_DoubleClick(object sender, EventArgs e)
        {
            var backstageViewButton = ((BackstageViewButton)sender);
            var associatedPage = backstageViewButton.Tag as BackstageViewPage;

            var popoutForm = new Form();
            popoutForm.FormClosing += popoutForm_FormClosing;

            int maxright = 0, maxdown = 0;

            foreach (Control ctl in associatedPage.Page.Controls)
            {
                maxright = Math.Max(ctl.Right, maxright);
                maxdown = Math.Max(ctl.Bottom, maxdown);
            }

            // set the height to 0, so we can derive the header height in the next step
            popoutForm.Height = 0;

            popoutForm.Size = new Size(maxright + 20, maxdown + 20 + popoutForm.Height);
            popoutForm.Controls.Add(associatedPage.Page);
            popoutForm.Tag = associatedPage;

            popoutForm.Text = associatedPage.LinkText;

            popoutPage = associatedPage;

            popoutForm.BackColor = this.BackColor;
            popoutForm.ForeColor = this.ForeColor;

            popoutForm.Show(this);
        }
        private void SoftwareConfig_Load(object sender, EventArgs e)
        {
            try
            {
                BackstageViewPage start = null;

                if (gotAllParams)
                {
                    if (MainV2.comPort.BaseStream.IsOpen)
                    {
                        AddBackstageViewPage(typeof(Parametermodification), "舵机/PID快捷");

                        if (MainV2.DisplayConfiguration.displayFlightModes)
                        {
                            start = AddBackstageViewPage(typeof(ConfigFlightModes), Strings.FlightModes);
                        }

                        if (MainV2.comPort.MAV.cs.firmware == Firmwares.ArduCopter2)
                        {
                            AddBackstageViewPage(typeof(ConfigAC_Fence), Strings.GeoFence);
                        }

                        if (MainV2.comPort.MAV.cs.firmware == Firmwares.ArduCopter2)
                        {
                            if (MainV2.DisplayConfiguration.displayBasicTuning)
                            {
                                start = AddBackstageViewPage(typeof(ConfigSimplePids), Strings.BasicTuning);
                            }

                            if (MainV2.DisplayConfiguration.displayExtendedTuning)
                            {
                                AddBackstageViewPage(typeof(ConfigArducopter), Strings.ExtendedTuning);
                            }
                        }

                        if (MainV2.comPort.MAV.cs.firmware == Firmwares.ArduPlane)
                        {
                            start = AddBackstageViewPage(typeof(ConfigArduplane), Strings.BasicTuning);
                        }

                        if (MainV2.comPort.MAV.cs.firmware == Firmwares.ArduRover)
                        {
                            start = AddBackstageViewPage(typeof(ConfigArdurover), Strings.BasicTuning);
                        }

                        if (MainV2.comPort.MAV.cs.firmware == Firmwares.ArduTracker)
                        {
                            start = AddBackstageViewPage(typeof(ConfigAntennaTracker), Strings.ExtendedTuning);
                        }

                        if (MainV2.DisplayConfiguration.displayBasicTuning)
                        {
                            AddBackstageViewPage(typeof(ConfigFriendlyParams), Strings.StandardParams);
                        }

                        if (MainV2.DisplayConfiguration.displayAdvancedParams)
                        {
                            AddBackstageViewPage(typeof(ConfigFriendlyParamsAdv), Strings.AdvancedParams, null, true);
                        }

                        if (!Program.MONO && ConfigOSD.IsApplicable())
                        {
                            AddBackstageViewPage(typeof(ConfigOSD), Strings.OnboardOSD);
                        }

                        if ((MainV2.comPort.MAV.cs.capabilities & (int)MAVLink.MAV_PROTOCOL_CAPABILITY.FTP) > 0)
                        {
                            AddBackstageViewPage(typeof(MavFTPUI), Strings.MAVFtp);
                        }

                        if (true)
                        {
                            AddBackstageViewPage(typeof(ConfigUserDefined), Strings.User_Params);
                        }
                    }
                }

                if (MainV2.DisplayConfiguration.displayFullParamList)
                {
                    if (!MainV2.comPort.BaseStream.IsOpen || gotAllParams)
                    {
                        AddBackstageViewPage(typeof(ConfigRawParams), Strings.FullParameterList, null, true);
                    }
                }
                if (MainV2.DisplayConfiguration.displayFullParamTree && !Program.MONO)
                {
                    if (!MainV2.comPort.BaseStream.IsOpen || gotAllParams)
                    {
                        AddBackstageViewPage(typeof(ConfigRawParamsTree), Strings.FullParameterTree, null, true);
                    }
                }

                if (MainV2.comPort.BaseStream.IsOpen)
                {
                    if (MainV2.comPort.MAV.cs.firmware == Firmwares.Ateryx)
                    {
                        start = AddBackstageViewPage(typeof(ConfigFlightModes), Strings.FlightModes);
                        AddBackstageViewPage(typeof(ConfigAteryxSensors), "Ateryx Zero Sensors");
                        AddBackstageViewPage(typeof(ConfigAteryx), "Ateryx Pids");
                    }

                    if (!gotAllParams)
                    {
                        if (start == null)
                        {
                            start = AddBackstageViewPage(typeof(ConfigParamLoading), Strings.Loading);
                        }
                        else
                        {
                            AddBackstageViewPage(typeof(ConfigParamLoading), Strings.Loading);
                        }
                    }

                    AddBackstageViewPage(typeof(ConfigPlanner), Strings.Planner);
                }
                else
                {
                    start = AddBackstageViewPage(typeof(ConfigPlanner), Strings.Planner);
                }

                // apply theme before trying to display it
                ThemeManager.ApplyThemeTo(this);

                // remeber last page accessed
                foreach (BackstageViewPage page in backstageView.Pages)
                {
                    if (page.LinkText == lastpagename)
                    {
                        backstageView.ActivatePage(page);
                        break;
                    }
                }


                if (backstageView.SelectedPage == null && start != null)
                {
                    this.BeginInvoke((Action) delegate
                    {
                        try
                        {
                            backstageView.ActivatePage(start);
                        }
                        catch (Exception ex)
                        {
                            log.Error(ex);
                        }
                    });
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
        }
Beispiel #27
0
 public BackstageViewPage(UserControl page, string linkText, BackstageViewPage parent = null)
 {
     Page = page;
     LinkText = linkText;
     Parent = parent;
 }
Beispiel #28
0
        public void ActivatePage(BackstageViewPage associatedPage)
        {
            DrawMenu(associatedPage);

            // Deactivate old page
            if (_activePage.Page is IDeactivate)
            {
                ((IDeactivate)(_activePage.Page)).Deactivate();
            }

            // deactivate the old page - obsolete way of notifying activation
            //_activePage.Page.Close();

            foreach (var p in Pages)
                p.Page.Visible = false;

            // deactivate button
            _activePage.Page.Visible = false;
            try
            { // if the button was on an expanded tab. when we leave it no longer exits
                var oldButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == _activePage);
                oldButton.IsSelected = false;
            }
            catch { }

            // ensure fields have been init - obsolete way of notifying activation
            //associatedPage.Page.DoLoad(new EventArgs());

            // new way of notifying activation. Goal is to get rid of BackStageViewContentPanel
            // so plain old user controls can be added
            if (associatedPage.Page is IActivate)
            {
                ((IActivate)(associatedPage.Page)).Activate();
            }

            // show it
            associatedPage.Page.Visible = true;

            var newButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == associatedPage);
            newButton.IsSelected = true;

            _activePage = associatedPage;
        }