Exemplo n.º 1
0
        private void Button_AddPin_Click(object sender, RoutedEventArgs e)
        {
            var param = CSParam as MethodInvoke_DelegateControlConstructionParams;

            if (param.DelegateMethodInfo == null)
            {
                InitDelegateMethodInfo();
            }

            var paramInfo = new MethodParamInfoAssist();

            paramInfo.FieldDirection = System.CodeDom.FieldDirection.In;
            paramInfo.IsParamsArray  = false;
            paramInfo.ParameterType  = typeof(object);
            paramInfo.ParamName      = "";
            param.InputParmas.Add(paramInfo);

            var inputParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams()
            {
                CSType             = param.CSType,
                HostNodesContainer = param.HostNodesContainer,
                ConstructParam     = "",
                ConstructType      = MethodInvokeNode.enParamConstructType.Delegate,
                ParamInfo          = paramInfo,
            };
            var child = new MethodInvokeParameterControl(inputParam);

            child.RemoveButton.Click += (object removeBtnSender, RoutedEventArgs removeBtnE) =>
            {
                var noUse = RemoveInParam(child);
            };
            AddChildNode(child, StackPanel_InputPins);
        }
Exemplo n.º 2
0
        protected void SetParameters(List <MethodParamInfoAssist> paramInfos)
        {
            if (paramInfos == null)
            {
                return;
            }

            mParamsPanel?.Children.Clear();
            foreach (var paramInfo in paramInfos)
            {
                CodeGenerateSystem.Base.BaseNodeControl pc = null;
                if (paramInfo.ParameterType.IsSubclassOf(typeof(System.Delegate)))
                {
                    var csParam = new MethodInvoke_DelegateControl.MethodInvoke_DelegateControlConstructionParams()
                    {
                        CSType             = mCSParam.CSType,
                        HostNodesContainer = mCSParam.HostNodesContainer,
                        ConstructParam     = this.NodeName,
                        ConstructType      = MethodInvokeNode.enParamConstructType.MethodOverride,
                        ParamInfo          = paramInfo,
                    };
                    pc = new MethodInvoke_DelegateControl(csParam);
                }
                else
                {
                    if (paramInfo.IsParamsArray)
                    {
                        var csParam = new ParamParameterControl.ParamParameterConstructionParams()
                        {
                            CSType             = mCSParam.CSType,
                            HostNodesContainer = mCSParam.HostNodesContainer,
                            ConstructParam     = "",
                            ConstructType      = MethodInvokeNode.enParamConstructType.MethodOverride,
                            ParamInfo          = paramInfo,
                        };
                        pc = new ParamParameterControl(csParam);
                    }
                    else
                    {
                        var csParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams()
                        {
                            CSType             = mCSParam.CSType,
                            HostNodesContainer = mCSParam.HostNodesContainer,
                            ConstructParam     = "",
                            ConstructType      = MethodInvokeNode.enParamConstructType.MethodOverride,
                            ParamInfo          = paramInfo,
                        };
                        pc = new MethodInvokeParameterControl(csParam);
                    }
                }

                //pc.SetToolTip(EngineNS.Rtti.AttributeHelper.GetCustomAttributePropertyValue(paramInfo, typeof(DescriptionAttribute).FullName, "Description", false));
                AddChildNode(pc, mParamsPanel);
            }
        }
Exemplo n.º 3
0
        protected void SetParameters(string[] paramInfos, EngineNS.ECSType csType)
        {
            foreach (var info in paramInfos)
            {
                var tempSplits = info.Split(':');
                if (tempSplits.Length > 2)
                {
                    switch (tempSplits[2])
                    {
                    case "Ref":
                    case "Out":
                        tempSplits[1] += "&";
                        break;
                    }
                }
                CodeGenerateSystem.Base.BaseNodeControl pc = null;
                var type = EngineNS.Rtti.RttiHelper.GetTypeFromSaveString(tempSplits[1]);
                if (type != null && type.IsSubclassOf(typeof(System.Delegate)))
                {
                    var csParam = new MethodInvoke_DelegateControl.MethodInvoke_DelegateControlConstructionParams()
                    {
                        CSType             = csType,
                        HostNodesContainer = this.HostNodesContainer,
                        ConstructParam     = info + ":" + this.NodeName,
                        ConstructType      = MethodInvokeNode.enParamConstructType.MethodOverride,
                    };
                    pc = new MethodInvoke_DelegateControl(csParam);
                }
                else
                {
                    var csParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams()
                    {
                        CSType             = csType,
                        HostNodesContainer = this.HostNodesContainer,
                        ConstructParam     = info,
                        ConstructType      = MethodInvokeNode.enParamConstructType.MethodOverride,
                    };
                    pc = new MethodInvokeParameterControl(csParam);
                }

                AddChildNode(pc, mParamsPanel);
            }
        }
Exemplo n.º 4
0
        //void ReturnCustom_AddParam(CustomMethodInfo.FunctionParam funcParam)
        public async Task OnAddedOutParam(CodeDomNode.CustomMethodInfo.FunctionParam funcParam)
        {
            await EngineNS.Thread.AsyncDummyClass.DummyFunc();

            var csParam = CSParam as ReturnCustomConstructParam;
            MethodParamInfoAssist retValue;

            if (funcParam.ParamType.Type.IsByRef)
            {
                var typefullname = funcParam.ParamType.Type.FullName.Substring(0, funcParam.ParamType.Type.FullName.Length - 1);
                var type         = funcParam.ParamType.Type.Assembly.GetType(typefullname);
                //funcParam.ParamType = new VariableType(type, funcParam.ParamType.CSType);
                retValue = new MethodParamInfoAssist();
                retValue.FieldDirection = System.CodeDom.FieldDirection.Out;
                retValue.IsParamsArray  = false;
                retValue.ParameterType  = type;
                retValue.ParamName      = funcParam.ParamName;
                BindingOperations.SetBinding(this, CodeDomNode.CustomMethodInfo.FunctionParam.ParamNameProperty, new Binding("ParamName")
                {
                    Source = retValue, Mode = BindingMode.TwoWay
                });
            }
            else
            {
                retValue = funcParam.CreateParamInfoAssist(System.CodeDom.FieldDirection.Out);
            }

            var pm = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams()
            {
                CSType             = CSParam.CSType,
                HostNodesContainer = CSParam.HostNodesContainer,
                ConstructParam     = "",
                ConstructType      = MethodInvokeNode.enParamConstructType.ReturnCustom,
                ParamInfo          = retValue,
            };
            var pc = new MethodInvokeParameterControl(pm);

            funcParam.OnParamTypeChanged -= pc.UpdateParamType;
            funcParam.OnParamTypeChanged += pc.UpdateParamType;
            pc.OnUpdateParamTypeAction    = OnUpdateChildParamType;
            AddChildNode(pc, mParamsPanel);
        }
Exemplo n.º 5
0
        public async Task OnInsertOutParam(int index, CodeDomNode.CustomMethodInfo.FunctionParam funcParam)
        {
            await EngineNS.Thread.AsyncDummyClass.DummyFunc();

            var csParam = CSParam as ReturnCustomConstructParam;
            var pm      = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams()
            {
                CSType             = CSParam.CSType,
                HostNodesContainer = CSParam.HostNodesContainer,
                ConstructParam     = "",
                ConstructType      = MethodInvokeNode.enParamConstructType.ReturnCustom,
                ParamInfo          = funcParam.CreateParamInfoAssist(System.CodeDom.FieldDirection.Out),
            };
            var pc = new MethodInvokeParameterControl(pm);

            funcParam.OnParamTypeChanged -= pc.UpdateParamType;
            funcParam.OnParamTypeChanged += pc.UpdateParamType;
            pc.OnUpdateParamTypeAction    = OnUpdateChildParamType;
            InsertChildNode(index, pc, mParamsPanel);
        }
Exemplo n.º 6
0
        // 这里不做参数在PropertyGrid中的显示设置,防止类似Ref参数被无意设置
        protected void SetParameters(MethodInfoAssist methodInfo)
        {
            var cpInfos = new List <CustomPropertyInfo>();

            mParamsPanel?.Children.Clear();
            var param = CSParam as ReturnConstructParam;

            // return
            if ((param.MethodInfo.ReturnType != typeof(void)) && (param.MethodInfo.ReturnType != typeof(System.Threading.Tasks.Task)))
            {
                var csParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams()
                {
                    CSType             = CSParam.CSType,
                    HostNodesContainer = CSParam.HostNodesContainer,
                    ConstructParam     = "",
                    ConstructType      = MethodInvokeNode.enParamConstructType.Return,
                    ParamInfo          = new MethodParamInfoAssist()
                    {
                        FieldDirection = System.CodeDom.FieldDirection.Out,
                        IsParamsArray  = false,
                        ParameterType  = param.MethodInfo.ReturnType,
                        ParamName      = "Return",
                    },
                };
                var ctrl = new MethodInvokeParameterControl(csParam);
                AddChildNode(ctrl, mParamsPanel);

                if (Program.IsTypeValidInPropertyGridShow(param.MethodInfo.ReturnType))
                {
                    var cpInfo = Program.GetFromParamInfo(csParam.ParamInfo);
                    cpInfos.Add(cpInfo);
                }
            }

            foreach (var methodParam in methodInfo.Params)
            {
                if (methodParam.FieldDirection != System.CodeDom.FieldDirection.Out)
                {
                    continue;
                }

                CodeGenerateSystem.Base.BaseNodeControl pc = null;
                if (methodParam.ParameterType.IsSubclassOf(typeof(System.Delegate)))
                {
                    var csParam = new MethodInvoke_DelegateControl.MethodInvoke_DelegateControlConstructionParams()
                    {
                        CSType             = CSParam.CSType,
                        HostNodesContainer = CSParam.HostNodesContainer,
                        ConstructParam     = this.NodeName,
                        ConstructType      = MethodInvokeNode.enParamConstructType.Return,
                        ParamInfo          = methodParam,
                    };
                    pc = new MethodInvoke_DelegateControl(csParam);
                }
                else
                {
                    if (methodParam.IsParamsArray)
                    {
                        var csParam = new ParamParameterControl.ParamParameterConstructionParams()
                        {
                            CSType             = CSParam.CSType,
                            HostNodesContainer = CSParam.HostNodesContainer,
                            ConstructParam     = "",
                            ConstructType      = MethodInvokeNode.enParamConstructType.Return,
                            ParamInfo          = methodParam,
                        };
                        pc = new ParamParameterControl(csParam);
                    }
                    else
                    {
                        var csParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams()
                        {
                            CSType             = CSParam.CSType,
                            HostNodesContainer = CSParam.HostNodesContainer,
                            ConstructParam     = "",
                            ConstructType      = MethodInvokeNode.enParamConstructType.Return,
                            ParamInfo          = methodParam,
                        };
                        pc = new MethodInvokeParameterControl(csParam);

                        if (Program.IsTypeValidInPropertyGridShow(methodParam.ParameterType))
                        {
                            var cpInfo = Program.GetFromParamInfo(methodParam);
                            cpInfos.Add(cpInfo);
                        }
                    }
                }
                AddChildNode(pc, mParamsPanel);
            }

            CreateTemplateClass(cpInfos);
        }