ardupilot/Tools/ArdupilotMegaPlanner/Gentemp.cs

170 lines
7.2 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace ArdupilotMega
{
public partial class Gentemp : Form
{
public Gentemp()
{
InitializeComponent();
string item = "";
string name = "";
int locx = 0;
int locy = 0;
int sizeh = 0;
int sizew = 0;
string text = "";
string tooltip = "";
string parent = "";
string type = "";
XmlTextReader scriptXmlReader = new XmlTextReader("APM_config_screen.xml");
scriptXmlReader.WhitespaceHandling = WhitespaceHandling.None;
while (scriptXmlReader.Read())
{
switch (scriptXmlReader.NodeType)
{
case XmlNodeType.Element:
item = scriptXmlReader.Name;
break;
case XmlNodeType.Text:
switch (item)
{
case "Name":
name = scriptXmlReader.Value;
break;
case "Location.X":
locx = int.Parse(scriptXmlReader.Value);
break;
case "Location.Y":
locy = int.Parse(scriptXmlReader.Value);
break;
case "Size.Width":
sizew = int.Parse(scriptXmlReader.Value);
break;
case "Size.Height":
sizeh = int.Parse(scriptXmlReader.Value);
break;
case "Text":
text = scriptXmlReader.Value;
break;
case "ToolTip":
tooltip = scriptXmlReader.Value;
break;
case "Parent":
parent = scriptXmlReader.Value;
break;
case "Type":
type = scriptXmlReader.Value;
break;
}
break;
case XmlNodeType.EndElement:
item = scriptXmlReader.Name;
if (item == "Object")
{
switch (type) {
case "System.Windows.Forms.Button":
Button but = new Button();
but.Parent = FindControlByName(parent);
but.Name = name;
but.Text = text;
but.Size = new Size(sizew,sizeh);
but.Location = new Point(locx,locy);
but.Parent.Controls.Add(but);
break;
case "System.Windows.Forms.Label":
Label lbl = new Label();
lbl.Parent = FindControlByName(parent);
lbl.Name = name;
lbl.Text = text;
lbl.Size = new Size(sizew, sizeh);
lbl.Location = new Point(locx, locy);
lbl.Parent.Controls.Add(lbl);
break;
case "System.Windows.Forms.GroupBox":
GroupBox Grp = new GroupBox();
Grp.Parent = FindControlByName(parent);
Grp.Name = name;
Grp.Text = text;
Grp.Size = new Size(sizew, sizeh);
Grp.Location = new Point(locx, locy);
Grp.Parent.Controls.Add(Grp);
break;
case "System.Windows.Forms.TextBox":
TextBox TXT = new TextBox();
TXT.Parent = FindControlByName(parent);
TXT.Name = name;
TXT.Text = text;
TXT.Size = new Size(sizew, sizeh);
TXT.Location = new Point(locx, locy);
TXT.Parent.Controls.Add(TXT);
break;
case "System.Windows.Forms.CheckBox":
CheckBox CHK = new CheckBox();
CHK.Parent = FindControlByName(parent);
CHK.Name = name;
CHK.Text = text;
CHK.Size = new Size(sizew, sizeh);
CHK.Location = new Point(locx, locy);
CHK.Parent.Controls.Add(CHK);
break;
case "System.Windows.Forms.DomainUpDown":
DomainUpDown DUD = new DomainUpDown();
DUD.Parent = FindControlByName(parent);
DUD.Name = name;
DUD.Text = text;
DUD.Size = new Size(sizew, sizeh);
DUD.Location = new Point(locx, locy);
DUD.Parent.Controls.Add(DUD);
break;
case "System.Windows.Forms.ComboBox":
ComboBox CMB = new ComboBox();
CMB.Parent = FindControlByName(parent);
CMB.Name = name;
CMB.Text = text;
CMB.Size = new Size(sizew, sizeh);
CMB.Location = new Point(locx, locy);
CMB.Parent.Controls.Add(CMB);
break;
}
}
break;
default:
break;
}
}
}
private Control FindControlByName(string name)
{
foreach (Control c in this.Controls)
{
if (c.Name == name)
return c;
}
return this;
}
}
}