diff --git a/Configurator/Configurator.Net/ArducopterConfigurator.csproj b/Configurator/Configurator.Net/ArducopterConfigurator.csproj
index a086985e50a..340cb8d250b 100644
--- a/Configurator/Configurator.Net/ArducopterConfigurator.csproj
+++ b/Configurator/Configurator.Net/ArducopterConfigurator.csproj
@@ -50,7 +50,6 @@
-
@@ -213,8 +212,10 @@
+
+
diff --git a/Configurator/Configurator.Net/PresentationModels/MainVm.cs b/Configurator/Configurator.Net/PresentationModels/MainVm.cs
index 481e094963f..514d4da5454 100644
--- a/Configurator/Configurator.Net/PresentationModels/MainVm.cs
+++ b/Configurator/Configurator.Net/PresentationModels/MainVm.cs
@@ -29,13 +29,13 @@ namespace ArducopterConfigurator.PresentationModels
new PositionAltitudePidsVm(),
//new MotorCommandsVm(session),
new CalibrationOffsetsDataVm(),
- new SerialMonitorVm(session)
+ new SerialMonitorVm()
};
foreach (var vm in MonitorVms)
{
if (vm is ItalksToApm)
- (vm as ItalksToApm).sendTextToApm += MainVm_sendTextToApm;
+ vm.sendTextToApm += MainVm_sendTextToApm;
}
ConnectCommand = new DelegateCommand(
@@ -46,6 +46,10 @@ namespace ArducopterConfigurator.PresentationModels
RefreshPortListCommand = new DelegateCommand(_ => RefreshPorts());
+ RestoreDefaultsCommand = new DelegateCommand(_ => RestoreDefaults(), _ => IsConnected);
+
+ WriteToEepromCommand = new DelegateCommand(_ => WriteToEeprom(), _ => IsConnected);
+
ConnectionState = SessionStates.Disconnected;
AvailablePorts = new BindingList();
@@ -60,6 +64,8 @@ namespace ArducopterConfigurator.PresentationModels
SelectedPort = AvailablePorts[AvailablePorts.Count-1];
}
+
+
void MainVm_sendTextToApm(object sender, sendTextToApmEventArgs e)
{
if (sender.Equals(_selectedVm)==false)
@@ -80,6 +86,18 @@ namespace ArducopterConfigurator.PresentationModels
AvailablePorts.Add(c);
}
+ private void RestoreDefaults()
+ {
+ if (_comms.IsConnected)
+ _comms.Send("Y");
+ }
+
+ private void WriteToEeprom()
+ {
+ if (_comms.IsConnected)
+ _comms.Send("W");
+ }
+
void _session_LineOfDataReceived(string strRx)
{
// If we are waiting for the version string
@@ -105,6 +123,10 @@ namespace ArducopterConfigurator.PresentationModels
public ICommand DisconnectCommand { get; private set; }
public ICommand RefreshPortListCommand { get; private set; }
+
+ public ICommand RestoreDefaultsCommand { get; private set; }
+
+ public ICommand WriteToEepromCommand { get; private set; }
public BindingList AvailablePorts { get; private set; }
diff --git a/Configurator/Configurator.Net/PresentationModels/MonitorVm.cs b/Configurator/Configurator.Net/PresentationModels/MonitorVm.cs
deleted file mode 100644
index b6e374bb576..00000000000
--- a/Configurator/Configurator.Net/PresentationModels/MonitorVm.cs
+++ /dev/null
@@ -1,184 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Text;
-
-namespace ArducopterConfigurator
-{
- // Vm base has functionality for populating properties using reflection
-
- ///
- /// Monitor VM base class
- ///
- ///
- /// Common base for some factored out things like only passing data to an active
- /// Monitor, etc
- ///
- public abstract class MonitorVm : NotifyProperyChangedBase, IPresentationModel
- {
- private readonly IComms _sp;
- protected bool isActive;
- protected string[] PropsInUpdateOrder;
-
- protected MonitorVm(IComms sp)
- {
- _sp = sp;
- _sp.LineOfDataReceived += sp_LineOfDataReceived;
- }
-
- void sp_LineOfDataReceived(string obj)
- {
- if (isActive)
- OnStringReceived(obj);
- }
-
- ///
- /// Called when the mode is selected
- ///
- ///
- /// Any initialising commands should be sent to the serial port
- /// when this method is called.
- ///
- public void Activate()
- {
- isActive = true;
- OnActivated();
- }
-
- public void DeActivate()
- {
- isActive = false;
- OnDeactivated();
- }
-
- public event EventHandler updatedByApm;
-
- protected virtual void OnDeactivated()
- {
-
- }
-
- protected virtual void OnActivated()
- {
-
- }
-
- ///
- /// Send raw text to the Arducopter
- ///
- protected void SendString(string strToSend)
- {
- if (_sp.IsConnected)
- _sp.Send(strToSend);
- }
-
- ///
- /// Call-back for text sent back from the Arducopter
- ///
- ///
- /// This is called when a full line of text is received from the APM
- /// This will not be called when the mode is not selected
- ///
- protected abstract void OnStringReceived(string strReceived);
-
- #region Implementation of IPresentationModel
-
- public abstract string Name { get; }
-
- #endregion
-
-
- // Common method for populating properties, using a hardcoded
- // property update order, and reflection to get the property type
- protected void PopulatePropsFromUpdate(string strRx, bool fireInpc)
- {
-
- var strs = strRx.Split(',');
-
- if (PropsInUpdateOrder.Length!=strs.Length)
- {
- Console.WriteLine(Name + ": Processing update with " + strs.Length
- + " values, but have " + PropsInUpdateOrder.Length
- + " properties to populate. Ignoring this update");
- return;
- }
-
- for (int i = 0; i < PropsInUpdateOrder.Length; i++)
- {
- var prop = this.GetType().GetProperty(PropsInUpdateOrder[i]);
- var s = strs[i];
- object value = null;
-
- if (prop == null)
- {
- Console.WriteLine("Trying to set non existant property: " + PropsInUpdateOrder[i]);
- break;
- }
-
- if (prop.PropertyType == typeof(float))
- {
- float val;
- if (!float.TryParse(s, out val))
- {
- Console.WriteLine("Error parsing float: {0}, VM: {1}" + s, Name);
- break;
- }
- value = val;
- }
- if (prop.PropertyType == typeof(bool))
- {
- float val;
- if (!float.TryParse(s, out val))
- {
- Console.WriteLine("Error parsing float (bool): {0}, VM: {1}" + s, Name);
- break;
- }
- value = val != 0.0;
- }
-
- if (prop.PropertyType == typeof(int))
- {
- int val;
- if (!int.TryParse(s, out val))
- {
- Console.WriteLine("Error parsing int:{0}, VM: {1}" + s, Name);
- break;
- }
- value = val;
- }
-
- prop.SetValue(this, value, null);
-
- if (fireInpc)
- FirePropertyChanged(PropsInUpdateOrder[i]);
- }
- }
-
- // Common method for sending/updating data
- // sentence sent to APM is the commandChar followed by the property
- // vals in the correct order, seperated by semicolons
- protected void SendPropsWithCommand(string commandChar)
- {
- var strings = new string[PropsInUpdateOrder.Length];
- for (int i = 0; i < PropsInUpdateOrder.Length; i++)
- {
- var prop = this.GetType().GetProperty(PropsInUpdateOrder[i]);
-
- if (prop.PropertyType == typeof(bool))
- strings[i] = ((bool) prop.GetValue(this, null)) ? "1" : "0";
- else
- strings[i] = prop.GetValue(this, null).ToString();
-
- }
-
- var sentence = commandChar + string.Join(";", strings);
- SendString(sentence);
- }
-
- public void handleLineOfText(string strRx)
- {
- throw new System.NotImplementedException();
- }
-
- public event EventHandler sendTextToApm;
- }
-}
\ No newline at end of file
diff --git a/Configurator/Configurator.Net/PresentationModels/MotorCommandsVm.cs b/Configurator/Configurator.Net/PresentationModels/MotorCommandsVm.cs
index 971c85c74d4..317af4f7c0d 100644
--- a/Configurator/Configurator.Net/PresentationModels/MotorCommandsVm.cs
+++ b/Configurator/Configurator.Net/PresentationModels/MotorCommandsVm.cs
@@ -1,17 +1,25 @@
+using System;
+
namespace ArducopterConfigurator.PresentationModels
{
- public class MotorCommandsVm : MonitorVm
+ public class MotorCommandsVm : NotifyProperyChangedBase, IPresentationModel
{
- public MotorCommandsVm(IComms _sp)
- : base(_sp)
- {
- }
-
- public override string Name
+ public string Name
{
get { return "Motor Commands"; }
}
+ public void Activate()
+ {
+ }
+
+ public void DeActivate()
+ {
+ // todo stop
+ }
+
+ public event EventHandler updatedByApm;
+
public int MotorFront { get; set; }
public int MotorRear { get; set; }
public int MotorLeft { get; set; }
@@ -25,20 +33,10 @@ namespace ArducopterConfigurator.PresentationModels
{
}
-
- protected override void OnDeactivated()
+ public void handleLineOfText(string strRx)
{
-
}
- protected override void OnActivated()
- {
-
- }
-
- protected override void OnStringReceived(string strReceived)
- {
-
- }
+ public event EventHandler sendTextToApm;
}
}
\ No newline at end of file
diff --git a/Configurator/Configurator.Net/PresentationModels/SerialMonitorVm.cs b/Configurator/Configurator.Net/PresentationModels/SerialMonitorVm.cs
index 42c38cf9fbd..151cf8e2ef5 100644
--- a/Configurator/Configurator.Net/PresentationModels/SerialMonitorVm.cs
+++ b/Configurator/Configurator.Net/PresentationModels/SerialMonitorVm.cs
@@ -3,52 +3,47 @@ using System.IO.Ports;
namespace ArducopterConfigurator.PresentationModels
{
- public class SerialMonitorVm : MonitorVm
+ public class SerialMonitorVm : NotifyProperyChangedBase, IPresentationModel
{
private string _text;
- public SerialMonitorVm(IComms _sp) : base(_sp)
- {
- _sp.LineOfDataReceived += new Action(_sp_DataReceived);
-
- }
-
- void _sp_DataReceived(string obj)
- {
- _text += obj;
- FirePropertyChanged("ReceviedText");
- }
-
public string ReceviedText { get { return _text; } }
public string SendText { get; set; }
-
-
- protected override void OnActivated()
- {
-
- SendString("X");
- _text = string.Empty;
- FirePropertyChanged("ReceviedText");
- }
-
-
- protected override void OnStringReceived(string strReceived)
- {
- _text += strReceived;
- FirePropertyChanged("ReceviedText");
- }
-
- public override string Name
+
+ public string Name
{
get { return "Serial Monitor"; }
}
+ public void Activate()
+ {
+ _text = string.Empty;
+ FirePropertyChanged("ReceviedText");
+ }
+
+ public void DeActivate()
+ {
+ if (sendTextToApm!=null)
+ sendTextToApm(this, new sendTextToApmEventArgs("X"));
+ }
+
+ public event EventHandler updatedByApm;
+
public void SendTextCommand()
{
- SendString(SendText);
+ if (sendTextToApm != null)
+ sendTextToApm(this, new sendTextToApmEventArgs(SendText));
SendText = "";
FirePropertyChanged("SendText");
}
+
+ public void handleLineOfText(string strRx)
+ {
+ _text += strRx + Environment.NewLine;
+ FirePropertyChanged("ReceviedText");
+ }
+
+ public event EventHandler sendTextToApm;
}
}
\ No newline at end of file
diff --git a/Configurator/Configurator.Net/Test/MotorCommandsVmTest.cs b/Configurator/Configurator.Net/Test/MotorCommandsVmTest.cs
index 5855fb549e3..b22801d6574 100644
--- a/Configurator/Configurator.Net/Test/MotorCommandsVmTest.cs
+++ b/Configurator/Configurator.Net/Test/MotorCommandsVmTest.cs
@@ -12,11 +12,14 @@ namespace ArducopterConfiguratorTest
[SetUp]
public void Setup()
{
- _mockComms = new MockComms();
- _vm = new MotorCommandsVm(_mockComms);
+
}
-
+ // Todo
+ // test that it stops all motors on deactivate
+
+
+
}
diff --git a/Configurator/Configurator.Net/Test/VmTestBase.cs b/Configurator/Configurator.Net/Test/VmTestBase.cs
index 8c9588fe698..a7c6bd569a8 100644
--- a/Configurator/Configurator.Net/Test/VmTestBase.cs
+++ b/Configurator/Configurator.Net/Test/VmTestBase.cs
@@ -3,55 +3,55 @@ using NUnit.Framework;
namespace ArducopterConfiguratorTest
{
- public abstract class VmTestBase where T : MonitorVm
- {
- protected T _vm;
- protected MockComms _mockComms;
- protected string sampleLineOfData; // should be taken from a real APM if possible
- protected string getCommand;
- protected string setCommand;
-
- [Test]
- public void ActivateSendsCorrectCommand()
- {
- _vm.Activate();
- Assert.AreEqual(1, _mockComms.SentItems.Count);
- Assert.AreEqual(getCommand, _mockComms.SentItems[0]);
- }
-
- [Test]
- public void ReceivedDataIgnoredWhenNotActive()
- {
- bool inpcFired = false;
- _vm.PropertyChanged += delegate { inpcFired = true; };
-
- _mockComms.FireLineRecieve(sampleLineOfData);
- Assert.False(inpcFired);
- }
-
- [Test]
- public void ReceivedDataIgnoredAfterDeActive()
- {
- _vm.Activate();
- _mockComms.FireLineRecieve(sampleLineOfData);
- _vm.DeActivate();
- _mockComms.FireLineRecieve(sampleLineOfData);
- bool inpcFired = false;
- _vm.PropertyChanged += delegate { inpcFired = true; };
-
- Assert.False(inpcFired);
- }
-
- [Test]
- public void UpdateStringReceivedPopulatesValues()
- {
- bool inpcFired = false;
- _vm.PropertyChanged += delegate { inpcFired = true; };
-
- _vm.Activate();
- _mockComms.FireLineRecieve(sampleLineOfData);
-
- Assert.True(inpcFired);
- }
- }
+// public abstract class VmTestBase where T : MonitorVm
+// {
+// protected T _vm;
+// protected MockComms _mockComms;
+// protected string sampleLineOfData; // should be taken from a real APM if possible
+// protected string getCommand;
+// protected string setCommand;
+//
+// [Test]
+// public void ActivateSendsCorrectCommand()
+// {
+// _vm.Activate();
+// Assert.AreEqual(1, _mockComms.SentItems.Count);
+// Assert.AreEqual(getCommand, _mockComms.SentItems[0]);
+// }
+//
+// [Test]
+// public void ReceivedDataIgnoredWhenNotActive()
+// {
+// bool inpcFired = false;
+// _vm.PropertyChanged += delegate { inpcFired = true; };
+//
+// _mockComms.FireLineRecieve(sampleLineOfData);
+// Assert.False(inpcFired);
+// }
+//
+// [Test]
+// public void ReceivedDataIgnoredAfterDeActive()
+// {
+// _vm.Activate();
+// _mockComms.FireLineRecieve(sampleLineOfData);
+// _vm.DeActivate();
+// _mockComms.FireLineRecieve(sampleLineOfData);
+// bool inpcFired = false;
+// _vm.PropertyChanged += delegate { inpcFired = true; };
+//
+// Assert.False(inpcFired);
+// }
+//
+// [Test]
+// public void UpdateStringReceivedPopulatesValues()
+// {
+// bool inpcFired = false;
+// _vm.PropertyChanged += delegate { inpcFired = true; };
+//
+// _vm.Activate();
+// _mockComms.FireLineRecieve(sampleLineOfData);
+//
+// Assert.True(inpcFired);
+// }
+// }
}
\ No newline at end of file
diff --git a/Configurator/Configurator.Net/Views/AcroConfigView.Designer.cs b/Configurator/Configurator.Net/Views/AcroConfigView.Designer.cs
index 9fb16c3fa42..653ed636935 100644
--- a/Configurator/Configurator.Net/Views/AcroConfigView.Designer.cs
+++ b/Configurator/Configurator.Net/Views/AcroConfigView.Designer.cs
@@ -29,6 +29,7 @@
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AcroConfigView));
this.button2 = new System.Windows.Forms.Button();
this.AcroModeConfigVmBindingSource = new System.Windows.Forms.BindingSource(this.components);
this.groupBox4 = new System.Windows.Forms.GroupBox();
@@ -65,11 +66,11 @@
// button2
//
this.button2.DataBindings.Add(new System.Windows.Forms.Binding("Tag", this.AcroModeConfigVmBindingSource, "RefreshCommand", true));
- this.button2.Location = new System.Drawing.Point(125, 109);
+ this.button2.Image = ((System.Drawing.Image)(resources.GetObject("button2.Image")));
+ this.button2.Location = new System.Drawing.Point(206, 108);
this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(65, 23);
+ this.button2.Size = new System.Drawing.Size(26, 26);
this.button2.TabIndex = 12;
- this.button2.Text = "Refresh";
this.button2.UseVisualStyleBackColor = true;
//
// AcroModeConfigVmBindingSource
@@ -277,11 +278,11 @@
// button1
//
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Tag", this.AcroModeConfigVmBindingSource, "UpdateCommand", true));
- this.button1.Location = new System.Drawing.Point(196, 109);
+ this.button1.Image = ((System.Drawing.Image)(resources.GetObject("button1.Image")));
+ this.button1.Location = new System.Drawing.Point(235, 108);
this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(65, 23);
+ this.button1.Size = new System.Drawing.Size(26, 26);
this.button1.TabIndex = 8;
- this.button1.Text = "Update";
this.button1.UseVisualStyleBackColor = true;
//
// textBox10
diff --git a/Configurator/Configurator.Net/Views/AcroConfigView.resx b/Configurator/Configurator.Net/Views/AcroConfigView.resx
index 90527b1ecbd..15f0dc5f62c 100644
--- a/Configurator/Configurator.Net/Views/AcroConfigView.resx
+++ b/Configurator/Configurator.Net/Views/AcroConfigView.resx
@@ -120,6 +120,90 @@
17, 17
+
+
+
+ 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
+ c7uNnGi8xn9S4RHZGLiTUQAAAABJRU5ErkJggg==
+
+
259, 17
diff --git a/Configurator/Configurator.Net/Views/AltitudeHoldConfigView.Designer.cs b/Configurator/Configurator.Net/Views/AltitudeHoldConfigView.Designer.cs
index 485a19182a2..70d5e5797a5 100644
--- a/Configurator/Configurator.Net/Views/AltitudeHoldConfigView.Designer.cs
+++ b/Configurator/Configurator.Net/Views/AltitudeHoldConfigView.Designer.cs
@@ -29,6 +29,7 @@
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AltitudeHoldConfigView));
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
@@ -73,7 +74,7 @@
this.textBox4.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.AltitudeHoldConfigBindingSource, "D", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBox4.Location = new System.Drawing.Point(27, 64);
this.textBox4.Name = "textBox4";
- this.textBox4.Size = new System.Drawing.Size(78, 20);
+ this.textBox4.Size = new System.Drawing.Size(50, 20);
this.textBox4.TabIndex = 13;
//
// AltitudeHoldConfigBindingSource
@@ -85,7 +86,7 @@
this.textBox5.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.AltitudeHoldConfigBindingSource, "I", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBox5.Location = new System.Drawing.Point(27, 38);
this.textBox5.Name = "textBox5";
- this.textBox5.Size = new System.Drawing.Size(78, 20);
+ this.textBox5.Size = new System.Drawing.Size(50, 20);
this.textBox5.TabIndex = 12;
//
// textBox6
@@ -93,29 +94,29 @@
this.textBox6.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.AltitudeHoldConfigBindingSource, "P", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBox6.Location = new System.Drawing.Point(27, 12);
this.textBox6.Name = "textBox6";
- this.textBox6.Size = new System.Drawing.Size(78, 20);
+ this.textBox6.Size = new System.Drawing.Size(50, 20);
this.textBox6.TabIndex = 11;
//
// button2
//
this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button2.DataBindings.Add(new System.Windows.Forms.Binding("Tag", this.AltitudeHoldConfigBindingSource, "RefreshCommand", true));
- this.button2.Location = new System.Drawing.Point(119, 96);
+ this.button2.Image = ((System.Drawing.Image)(resources.GetObject("button2.Image")));
+ this.button2.Location = new System.Drawing.Point(205, 93);
this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(74, 23);
+ this.button2.Size = new System.Drawing.Size(26, 26);
this.button2.TabIndex = 18;
- this.button2.Text = "Refresh";
this.button2.UseVisualStyleBackColor = true;
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Tag", this.AltitudeHoldConfigBindingSource, "UpdateCommand", true));
- this.button1.Location = new System.Drawing.Point(199, 96);
+ this.button1.Image = ((System.Drawing.Image)(resources.GetObject("button1.Image")));
+ this.button1.Location = new System.Drawing.Point(237, 93);
this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(74, 23);
+ this.button1.Size = new System.Drawing.Size(26, 26);
this.button1.TabIndex = 17;
- this.button1.Text = "Update";
this.button1.UseVisualStyleBackColor = true;
//
// AltitudeHoldConfigView
diff --git a/Configurator/Configurator.Net/Views/AltitudeHoldConfigView.resx b/Configurator/Configurator.Net/Views/AltitudeHoldConfigView.resx
index c879c719ffd..fa9afb1bdf8 100644
--- a/Configurator/Configurator.Net/Views/AltitudeHoldConfigView.resx
+++ b/Configurator/Configurator.Net/Views/AltitudeHoldConfigView.resx
@@ -120,4 +120,88 @@
17, 17
+
+
+
+ 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
+ c7uNnGi8xn9S4RHZGLiTUQAAAABJRU5ErkJggg==
+
+
\ No newline at end of file
diff --git a/Configurator/Configurator.Net/Views/mainForm.Designer.cs b/Configurator/Configurator.Net/Views/mainForm.Designer.cs
index 57536ba3071..98446082a16 100644
--- a/Configurator/Configurator.Net/Views/mainForm.Designer.cs
+++ b/Configurator/Configurator.Net/Views/mainForm.Designer.cs
@@ -40,6 +40,8 @@ namespace ArducopterConfigurator
this.lblConnectionStatus = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button();
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+ this.button3 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.mainVmBindingSource)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.availablePortsBindingSource)).BeginInit();
this.SuspendLayout();
@@ -54,7 +56,7 @@ namespace ArducopterConfigurator
this.tabCtrlMonitorVms.Location = new System.Drawing.Point(12, 10);
this.tabCtrlMonitorVms.Name = "tabCtrlMonitorVms";
this.tabCtrlMonitorVms.SelectedIndex = 0;
- this.tabCtrlMonitorVms.Size = new System.Drawing.Size(530, 396);
+ this.tabCtrlMonitorVms.Size = new System.Drawing.Size(530, 386);
this.tabCtrlMonitorVms.TabIndex = 3;
this.tabCtrlMonitorVms.Selected += new System.Windows.Forms.TabControlEventHandler(this.tabCtrlConfigs_Selected);
//
@@ -102,7 +104,7 @@ namespace ArducopterConfigurator
// lblConnectionStatus
//
this.lblConnectionStatus.AutoSize = true;
- this.lblConnectionStatus.Location = new System.Drawing.Point(307, 417);
+ this.lblConnectionStatus.Location = new System.Drawing.Point(189, 418);
this.lblConnectionStatus.Name = "lblConnectionStatus";
this.lblConnectionStatus.Size = new System.Drawing.Size(112, 13);
this.lblConnectionStatus.TabIndex = 8;
@@ -121,11 +123,35 @@ namespace ArducopterConfigurator
this.toolTip.SetToolTip(this.button2, "Refresh port list");
this.button2.UseVisualStyleBackColor = true;
//
+ // button3
+ //
+ this.button3.DataBindings.Add(new System.Windows.Forms.Binding("Tag", this.mainVmBindingSource, "RestoreDefaultsCommand", true, System.Windows.Forms.DataSourceUpdateMode.Never));
+ this.button3.Image = ((System.Drawing.Image)(resources.GetObject("button3.Image")));
+ this.button3.Location = new System.Drawing.Point(502, 402);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(40, 34);
+ this.button3.TabIndex = 10;
+ this.toolTip.SetToolTip(this.button3, "Restore Defaults");
+ this.button3.UseVisualStyleBackColor = true;
+ //
+ // button4
+ //
+ this.button4.DataBindings.Add(new System.Windows.Forms.Binding("Tag", this.mainVmBindingSource, "WriteToEepromCommand", true));
+ this.button4.Image = ((System.Drawing.Image)(resources.GetObject("button4.Image")));
+ this.button4.Location = new System.Drawing.Point(456, 402);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(40, 34);
+ this.button4.TabIndex = 11;
+ this.toolTip.SetToolTip(this.button4, "Save to Eprom");
+ this.button4.UseVisualStyleBackColor = true;
+ //
// mainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(554, 445);
+ this.Controls.Add(this.button4);
+ this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.lblConnectionStatus);
this.Controls.Add(this.button1);
@@ -154,6 +180,8 @@ namespace ArducopterConfigurator
private System.Windows.Forms.Label lblConnectionStatus;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.ToolTip toolTip;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button4;
}
}
diff --git a/Configurator/Configurator.Net/Views/mainForm.resx b/Configurator/Configurator.Net/Views/mainForm.resx
index a1dbb499ef8..a92f67d2dc9 100644
--- a/Configurator/Configurator.Net/Views/mainForm.resx
+++ b/Configurator/Configurator.Net/Views/mainForm.resx
@@ -178,6 +178,55 @@
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
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD/////
+ /yH/C05FVFNDQVBFMi4wAwEBAAAh+QQBAAD9ACwAAAAAIAAYAAAI3gD7CRzY70LBgwYTIiTIsKHAChkg
+ SoxIcaLDi/0iZNDIcaPHjhgbSoBAsqTJkxBCCrxQIYJLlDAhMGAwgULIDBsjLKDwoKfPnw9m4sR5kaXL
+ CBQsAF06k6ZNjDhdLp3qwMHQDEVbSp0KtGnNmzm5dmVwNetRsT+9Pr0YNQJanw0alHVodOtbtWDtohU6
+ 1KxesXihhn0blGxfulrdEg7MdvBdw0QRH11AubLlygoUOA2JYePlz5ivYlVJtnQG06hHqxw4IUPr165j
+ w15NkEIG27hv685NmyDW3/2AC8cYEAA7
\ No newline at end of file