ardupilot/Tools/ArdupilotMegaPlanner/Controls/MainSwitcher.cs
Michael Oborne 25bcfdd1e7 Mission Planner 1.2.12
add arduino chip detect
fix apm2,2.5 dialog test
add write timeout. this will stop planner hangs on bad serial devices.
change quickview decimal places to 0.00
fix map clicking issue.
fix wind direction wrapping
add airspeed use
modify firmware screen from Marooned
major flightdata tab change.
add save/load polygon from file
add some error handling dialogs
2012-09-20 07:37:36 +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>();
public 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;
}
}
}
}