private void cmbFunction_SelectedIndexChanged(object sender, EventArgs e) { IronPython.Runtime.PythonFunction pf = (IronPython.Runtime.PythonFunction)AppGlobals.PyGetVar(cmbFunction.SelectedItem.ToString()); lstInputs.Items.Clear(); if (pf.__doc__ != null) { lblDesc.Text = "Description: \n" + pf.__doc__.ToString(); } else { lblDesc.Text = "Description: N/A"; } int var_count = 0; foreach (var item in pf.func_code.co_varnames) { lstInputs.Items.Add(item.ToString()); var_count++; if (var_count >= pf.func_code.co_argcount) { break; } } }
public override void Execute(EventDescription token) { if (code == "") { code = "None"; } for (int i = 0; i < input_count; i++) { AppGlobals.PySetVar("in" + (i + 1).ToString(), InputNodes[i].Object); } object result = null; AppGlobals.PyExecute(code, Microsoft.Scripting.SourceCodeKind.Statements); for (int i = 0; i < output_count; i++) { var name = "out" + (i + 1).ToString(); if (AppGlobals.PyVarExists(name)) { result = AppGlobals.PyGetVar(name); if (result.GetType() == typeof(IronPython.Runtime.List)) { IronPython.Runtime.List lst = (IronPython.Runtime.List)result; //var tmp = new List<object>(); //foreach (var item in lst) //{ // tmp.Add(item); //} result = lst;// tmp.ToArray(); } var tmp = PyToNET(result); if (tmp != null) { OutputNodes[i].Object = (double[])tmp; } else { OutputNodes[i].Object = result; } } AppGlobals.PyRemVar(name); } for (int i = 0; i < input_count; i++) { AppGlobals.PyRemVar("in" + (i + 1).ToString()); } }