ardupilot/Tools/ArdupilotMegaPlanner/Controls/MavlinkCheckBox.cs
Michael Oborne 78321133cb Mission Planner 1.2.17
add nested config page
add friendly comport names
add some exception handlers
add new old firmware hashs
remove more crom.controls stuff
enabled change speed
2012-11-04 16:45:39 +08:00

112 lines
3.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace ArdupilotMega.Controls
{
public class MavlinkCheckBox : CheckBox
{
public new event EventHandler CheckedChanged;
[System.ComponentModel.Browsable(true)]
public float OnValue { get; set; }
[System.ComponentModel.Browsable(true)]
public float OffValue { get; set; }
[System.ComponentModel.Browsable(true)]
public string ParamName { get; set; }
[System.ComponentModel.Browsable(true)]
public Hashtable param { get; set; }
Control _control;
public MavlinkCheckBox()
{
OnValue = 1;
OffValue = 0;
this.Enabled = false;
}
public void setup(float OnValue, float OffValue, string paramname, Hashtable paramlist, Control enabledisable = null)
{
base.CheckedChanged -= MavlinkCheckBox_CheckedChanged;
this.OnValue = OnValue;
this.OffValue = OffValue;
this.ParamName = paramname;
this.param = paramlist;
this._control = enabledisable;
if (paramlist.ContainsKey(paramname))
{
this.Enabled = true;
if ((float)paramlist[paramname] == OnValue)
{
this.Checked = true;
enableControl(true);
}
else if ((float)paramlist[paramname] == OffValue)
{
this.Checked = false;
enableControl(false);
}
else
{
this.CheckState = System.Windows.Forms.CheckState.Indeterminate;
enableControl(false);
}
}
else
{
this.Enabled = false;
}
base.CheckedChanged += new EventHandler(MavlinkCheckBox_CheckedChanged);
}
void enableControl(bool enable)
{
if (_control != null)
_control.Enabled = enable;
}
void MavlinkCheckBox_CheckedChanged(object sender, EventArgs e)
{
if (this.CheckedChanged != null)
this.CheckedChanged(sender, e);
if (this.Checked)
{
enableControl(true);
try
{
bool ans = MainV2.comPort.setParam(ParamName, OnValue);
if (ans == false)
CustomMessageBox.Show("Set " + ParamName + " Failed 1!");
}
catch { CustomMessageBox.Show("Set " + ParamName + " Failed 2!"); }
}
else
{
enableControl(false);
try
{
bool ans = MainV2.comPort.setParam(ParamName, OffValue);
if (ans == false)
CustomMessageBox.Show("Set " + ParamName + " Failed 1!");
}
catch { CustomMessageBox.Show("Set " + ParamName + " Failed 2!"); }
}
}
}
}