public override async Task LoadContent() { await base.LoadContent(); AddCancelButton(); //create the dropdown widget var drop = new NumEdit(0f, Content); drop.Vertical = VerticalAlignment.Center; drop.Horizontal = HorizontalAlignment.Right; drop.Size = new Vector2(350, 128); drop.Position = Resolution.ScreenArea.Center; AddItem(drop); }
void numericDouble_TextChanged(object sender, EventArgs e) { NumEdit numEdit = (NumEdit)sender; int index = int.Parse(numEdit.Name.Substring(numEdit.Name.LastIndexOf("_") + 1)); if (!string.IsNullOrEmpty(numEdit.Text)) { numEdit.BackColor = Color.White; ParametersToPass[index] = double.Parse(numEdit.Text); ValuesThatHaveBeenSet[index] = true; } else { numEdit.BackColor = InvalidColor; ParametersToPass[index] = null; ValuesThatHaveBeenSet[index] = false; } }
private void Populate() { this.Text = "Preview: " + TheFunction.Name; panel1.Controls.Clear(); int gap = 5; int currentTop = 0; int maxLabelWidth = 0; System.Drawing.Font font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); Label measureLabel = new Label(); measureLabel.BackColor = Color.Transparent; measureLabel.Font = font; Graphics graphics = Graphics.FromHwnd(measureLabel.Handle); string displayText; ParametersToPass = new object[TheFunction.Parameters.Length]; bool parametersMatch = false; List <object> parameterObjects = null; ValuesThatHaveBeenSet = new bool[TheFunction.Parameters.Length]; if (CachedParameteres.ContainsKey(TheFunction)) { parameterObjects = CachedParameteres[TheFunction]; parametersMatch = TheFunction.Parameters.Length == parameterObjects.Count; if (parametersMatch) { for (int i = 0; i < TheFunction.Parameters.Length; i++) { if (parameterObjects[i] == null || !TheFunction.Parameters[i].DataType.IsInstanceOfType(parameterObjects[i])) { parametersMatch = false; } } } } for (int i = 0; i < TheFunction.Parameters.Length; i++) { Project.ParamInfo param = TheFunction.Parameters[i]; displayText = string.Format("{2}. {0} ({1}):", param.Name, param.DataType, i + 1); maxLabelWidth = (float)maxLabelWidth > graphics.MeasureString(displayText, font).Width ? maxLabelWidth : (int)graphics.MeasureString(displayText, new Font("Microsoft Sans Serif", 8.25f)).Width; if (parametersMatch) { ParametersToPass[i] = parameterObjects[i]; ValuesThatHaveBeenSet[i] = true; } } for (int i = 0; i < TheFunction.Parameters.Length; i++) { Project.ParamInfo param = TheFunction.Parameters[i]; // New implementation Label lbl = new Label(); lbl.Text = string.Format("{2}. {0} ({1}):", param.Name, param.DataType, i + 1); lbl.TextAlign = ContentAlignment.BottomLeft; lbl.Width = maxLabelWidth + gap; panel1.Controls.Add(lbl); lbl.Left = gap; if (i == 0) { currentTop = 0; } else { currentTop += lbl.Height + gap; } lbl.Top = currentTop; currentTop = lbl.Bottom; // typeof(ArchAngel.Interfaces.IScriptBaseObject).IsInstanceOfType(param.DataType) if (param.DataType.GetInterface("ArchAngel.Interfaces.IScriptBaseObject") != null) { Label txt = new Label(); txt.BackColor = InvalidColor; txt.Top = currentTop; txt.Left = gap * 4; txt.Tag = param; txt.BorderStyle = BorderStyle.FixedSingle; if (parametersMatch) { txt.Text = ArchAngel.Interfaces.ProjectHelper.GetDisplayName(ParametersToPass[i]); } panel1.Controls.Add(txt); Button btnBrowseArchAngelObject = new Button(); btnBrowseArchAngelObject.Text = "..."; btnBrowseArchAngelObject.BackColor = Color.FromKnownColor(KnownColor.Control); btnBrowseArchAngelObject.Width = btnBrowseArchAngelObject.Height + gap; btnBrowseArchAngelObject.Top = currentTop; btnBrowseArchAngelObject.Tag = txt; btnBrowseArchAngelObject.Name = string.Format("btnBrowseArchAngelObject_{0}", i); btnBrowseArchAngelObject.Click += new EventHandler(btnBrowseArchAngelObject_Click); btnBrowseArchAngelObject.Left = txt.Right + gap; panel1.Controls.Add(btnBrowseArchAngelObject); } else { switch (param.DataType.Name.ToLower()) { case "bool": case "boolean": CheckBox chk = new CheckBox(); chk.Top = currentTop; chk.Left = gap * 4; chk.Name = string.Format("chk_{0}", i); chk.CheckedChanged += new EventHandler(chk_CheckedChanged); panel1.Controls.Add(chk); break; case "int": case "int32": NumEdit numericInt = new NumEdit(); numericInt.BackColor = InvalidColor; numericInt.InputType = NumEdit.NumEditType.Integer; numericInt.Top = currentTop; numericInt.Left = gap * 4; numericInt.Name = string.Format("numericInt_{0}", i); numericInt.TextChanged += new EventHandler(numericInt_TextChanged); panel1.Controls.Add(numericInt); break; case "double": NumEdit numericDouble = new NumEdit(); numericDouble.BackColor = InvalidColor; numericDouble.InputType = NumEdit.NumEditType.Double; numericDouble.Top = currentTop; numericDouble.Left = gap * 4; numericDouble.Name = string.Format("numericDouble_{0}", i); numericDouble.TextChanged += new EventHandler(numericDouble_TextChanged); panel1.Controls.Add(numericDouble); break; case "string": TextBox txt2 = new TextBox(); txt2.BackColor = InvalidColor; txt2.Text = "Not set"; txt2.Top = currentTop; txt2.Left = gap * 4; txt2.Name = string.Format("txt2_{0}", i); txt2.TextChanged += new EventHandler(txt2_TextChanged); panel1.Controls.Add(txt2); break; default: MessageBox.Show(this, "Data type not handled yet: " + param.DataType.Name, "Unexpected Data-Type", MessageBoxButtons.OK, MessageBoxIcon.Warning); break; } } } //if (parametersMatch) //{ // Run(); //} }