ardupilot/Tools/ArdupilotMegaPlanner/Controls/MainSwitcher.cs
Michael Oborne b04d76049c Mission Planner 1.2.5
add experimental antenna tracker find
add new apparam eeprom reader
add ground alt display to hud
mod stats
modify guided mode alt selection.
test flight planner tab on flight data tab
move some functions to the right click menu
add xplanes data in/out setup to be automatic.
add better mission upload handeling.
2012-08-12 12:25:22 +08:00

105 lines
2.7 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ArdupilotMega.Utilities;
using ArdupilotMega.Controls.BackstageView;
namespace ArdupilotMega.Controls
{
public partial class MainSwitcher : UserControl
{
public List<Screen> screens = new List<Screen>();
Screen current;
public MainSwitcher()
{
InitializeComponent();
}
public void AddScreen(Screen Screen)
{
// add to list
screens.Add(Screen);
// hide it
Screen.Control.Visible = false;
}
public void ShowScreen(string name)
{
if (current != null)
{
// hide current screen
current.Visible = false;
// remove reference
this.Controls.Remove(current.Control);
if (current.Control is IDeactivate)
{
((IDeactivate)(current.Control)).Deactivate();
}
// check if we need to remove the current control
if (!current.Persistent)
{
// cleanup
current.Control.Close();
current.Control.Dispose();
current.Control = (MyUserControl)Activator.CreateInstance(current.Control.GetType());
}
}
// find next screen
Screen nextscreen = screens.Single(s => s.Name == name);
nextscreen.Control.Location = new Point(0, 0);
nextscreen.Control.Dock = DockStyle.Fill;
nextscreen.Control.Size = this.Size;
nextscreen.Visible = true;
if (nextscreen.Control is IActivate)
{
((IActivate)(nextscreen.Control)).Activate();
}
this.Controls.Add(nextscreen.Control);
ThemeManager.ApplyThemeTo(nextscreen.Control);
current = nextscreen;
}
protected override void OnPaintBackground(PaintEventArgs e)
{
base.OnPaintBackground(e);
}
public class Screen
{
public string Name;
public MyUserControl Control;
public bool Visible { get { return Control.Visible; } set { Control.Visible = value; } }
public bool Persistent;
public Screen(string Name, MyUserControl Control, bool Persistent = false)
{
this.Name = Name;
this.Control = Control;
this.Persistent = Persistent;
}
}
}
}