mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 22:48:29 -04:00
b04d76049c
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.
105 lines
2.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|