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; }
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); } }
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); } }
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()); }
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; }
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; }
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; }
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(); }
public BackstageViewPage(UserControl page, string linkText, BackstageViewPage parent = null) { Page = page; LinkText = linkText; Parent = parent; }
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 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); } }
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); } }
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()); }
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(); }
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; }
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); } }
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; }
/// <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; }
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; }
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; }
/* * 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); } }
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; }