mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-05 23:48:31 -04:00
9cb60e1cc9
fix hud battery text overlaying tweak hud resize tweak main switcher fix quickview text scaleing fix dist to mav. added french translation thanks oliver change tooltip time add 3dr iv add distance to home dataflashlog update
108 lines
2.8 KiB
C#
108 lines
2.8 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.SuspendLayout();
|
|
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);
|
|
|
|
nextscreen.Control.ResumeLayout();
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|