mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 22:48:29 -04:00
25bcfdd1e7
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
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>();
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|