/// <summary>
        /// 初始化
        /// </summary>
        public void Init()
        {
            if (source != null)
            {
                return;
            }
            source = this.DataContext as IParatItem;
            if (source == null)
            {
                return;
            }
            if (IsAsInput)
            {
                IParaItemForEnum forenum = IParaItemForEnum.GetInstance();
                IReflexui        iref    = forenum.GetControlType(source.PIEnum);
                if (iref != null)
                {
                    iref.Bind(source, "Value");
                    this.content.Child = iref as Control;
                }
            }

            this.propertyCombox.ItemsSource       = ScriptLayout.IPropertys;
            this.propertyCombox.DisplayMemberPath = "Name";
            if ((source as ParatItem) != null &&
                (source as ParatItem).LinkIProperty != null)
            {
                isopen.IsChecked = true;
            }
            else
            {
                isopen.IsChecked = false;
            }
        }
コード例 #2
0
 public void Bind(IParatItem Source, string PropertyName)
 {
     this.paraItem            = Source;
     this.propertyName        = PropertyName;
     this.content.ItemsSource = Source.EnumDatas;
     Tools.Bind(Source, this.content, PropertyName, ComboBox.SelectedItemProperty, mode: BindingMode.TwoWay);
 }
コード例 #3
0
 /// <summary>
 /// 添加输出参数
 /// </summary>
 /// <param name="ipt"></param>
 public override void AddOutputData(IParatItem ipt)
 {
     //StackOutput si = new StackOutput();
     //si.SetOrigValues(iPropertys, ipt);
     //si.Margin = new Thickness(2);
     //si.Height = 25;
     //right.Children.Add(si);
 }
コード例 #4
0
        /// <summary>
        /// 在内存管理中设置属性的值
        /// </summary>
        /// <param name="item"></param>
        protected override void SetValue(IParatItem item)
        {
            ParatItem ipt = item as ParatItem;

            if (ipt.LinkIProperty != null)
            {
                manager.GetValue(ipt.LinkIProperty.Id).SetValue(ipt.LinkIProperty.Name, ipt.Value);
            }
        }
コード例 #5
0
        /// <summary>
        /// 取消MLParatItemLayout上所有的连线
        /// </summary>
        /// <param name="mpl"></param>
        protected void removeMLParamitemBezierLine(MLParatItemLayout mpl)
        {
            List <BezierLine> bs = mpl.CancleLink();

            foreach (var item in bs)
            {
                Del(item);
            }
            IParatItem ip = mpl.DataContext as IParatItem;

            ip.LinkIParatItem = null;
            bs.Clear();
        }
コード例 #6
0
 /// <summary>
 /// 设置数据源
 /// </summary>
 /// <param name="ips"></param>
 public void SetOrigValues(ObservableCollection <IPropertyIt> ips, IParatItem ip)
 {
     propertyCombox.ItemsSource       = ips;
     propertyCombox.DisplayMemberPath = "Name";
     //output.DataContext = ip;
     //output.InitParatItemLayout();
     this.DataContext = ip;
     paramter         = ip as ParatItem;
     if (paramter.LinkIProperty != null)
     {
         this.isopen.IsChecked = true;
     }
 }
コード例 #7
0
        /// <summary>
        /// 获取属性的值
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        protected override object GetValue(IParatItem item)
        {
            ParatItem ipt = item as ParatItem;

            if (ipt.LinkIProperty != null)
            {
                return(manager.GetValue(ipt.LinkIProperty.Id).GetValue(ipt.LinkIProperty.Name));
            }
            else
            {
                return(ipt.Value);
            }
        }
コード例 #8
0
        /// <summary>
        /// 设置数据源
        /// </summary>
        /// <param name="fbs"></param>
        public void SetOrigValues(ObservableCollection <IPropertyIt> ips, IParatItem ip)
        {
            this.propertyCombox.ItemsSource       = ips;
            this.propertyCombox.DisplayMemberPath = "Name";
            if (ips.Count > 0)
            {
                propertyCombox.SelectedIndex = 0;
            }

            //input.DataContext = ip;
            //input.InitParatItemLayout();
            this.DataContext = ip;
            paramter         = ip as ParatItem;
        }
コード例 #9
0
        /// <summary>
        /// 添加一个输入
        /// </summary>
        /// <param name="ipt"></param>
        public override void AddInputData(IParatItem ipt)
        {
            InputParaItemLayout ipl = new InputParaItemLayout();

            ipl.Margin      = new Thickness(4, 4, 4, 4);
            ipl.MouseDown  += ParaItemLayout_MouseDown;
            ipl.MouseUp    += ParaItemLayout_MouseUp;
            ipl.MouseMove  += ParaItemLayout_MouseMove;
            ipl.MouseEnter += ParaItemLayout_MouseEnter;
            ipl.MouseLeave += ParaItemLayout_MouseLeave;
            ipl.Height      = 25;
            ipl.DataContext = ipt;
            ipl.UIMain      = this.UIMain;
            ipl.InitParatItemLayout();
            left.Children.Add(ipl);
        }
コード例 #10
0
        /// <summary>
        /// 添加一个输出
        /// </summary>
        /// <param name="ipt"></param>
        public override void AddOutputData(IParatItem ipt)
        {
            OutputParaItemLayout opl = new OutputParaItemLayout();

            opl.Margin              = new Thickness(4, 4, 4, 4);
            opl.MouseDown          += ParaItemLayout_MouseDown;
            opl.MouseUp            += ParaItemLayout_MouseUp;
            opl.MouseMove          += ParaItemLayout_MouseMove;
            opl.MouseEnter         += ParaItemLayout_MouseEnter;
            opl.MouseLeave         += ParaItemLayout_MouseLeave;
            opl.Height              = 25;
            opl.DataContext         = ipt;
            opl.HorizontalAlignment = HorizontalAlignment.Right;
            opl.UIMain              = this.UIMain;
            opl.InitParatItemLayout();
            right.Children.Add(opl);
        }
コード例 #11
0
        /// <summary>
        /// 获取iitembox
        /// </summary>
        /// <typeparam name="IBox"></typeparam>
        /// <typeparam name="IParat"></typeparam>
        /// <param name="tdfather"></param>
        /// <param name="attribute"></param>
        /// <returns></returns>
        public static IItemBox GetIItemboxByScriptMeth <IBox, IParat>(TreeData tdfather, ScriptMethAttribute attribute)
        {
            IBox     box    = (IBox)Activator.CreateInstance(typeof(IBox));
            IItemBox opitem = box as IItemBox;

            if (attribute != null)
            {
                opitem.Name      = attribute.Name;
                opitem.ScriptUrl = attribute.Url;
                opitem.BoxType   = attribute.ItemBoxEnum;
                opitem.TipText   = attribute.Describe;
                if (attribute.InputData.Count > 0)
                {
                    foreach (var item in attribute.InputData)
                    {
                        IParat     ipa = (IParat)Activator.CreateInstance(typeof(IParat));
                        IParatItem op  = ipa as IParatItem;
                        //ParatItem op = new ParatItem(item.Name, LogLib.TClassOption.GetEnumTypeByString<ParaItemEnum>(item.Type), item.EnumDatas)
                        op.Name      = item.Name;
                        op.PIEnum    = LogLib.TClassOption.GetEnumTypeByString <ParaItemEnum>(item.Type);
                        op.EnumDatas = item.EnumDatas;
                        op.Value     = item.DefultValue;
                        opitem.AddInput(op);
                        op.TipText = item.TipText;
                    }
                }
                if (attribute.OutputData.Count > 0)
                {
                    foreach (var item in attribute.OutputData)
                    {
                        IParat ipa = (IParat)Activator.CreateInstance(typeof(IParat));

                        IParatItem op = ipa as IParatItem;
                        op.Name      = item.Name;
                        op.PIEnum    = LogLib.TClassOption.GetEnumTypeByString <ParaItemEnum>(item.Type);
                        op.EnumDatas = item.EnumDatas;
                        op.Value     = item.DefultValue;
                        opitem.AddOutput(op);
                        op.TipText = item.TipText;
                    }
                }
                tdfather.Children.Add(new TreeData(opitem));
            }
            return(opitem);
        }
コード例 #12
0
        /// <summary>
        /// 连接贝塞尔曲线到2个点
        /// </summary>
        /// <param name="bz"></param>
        /// <param name="mlp1"></param>
        /// <param name="mlp2"></param>
        public void LinkBezier(BezierLine bz, MLParatItemLayout mlp1, MLParatItemLayout mlp2, bool isAddtoCanvas = true)
        {
            if (bz == null || mlp1 == null || mlp2 == null)
            {
                return;
            }
            BezierLine ol = mlp1.SetLink(bz);

            if (ol != null)
            {
                Del(ol);
            }
            ol = mlp2.SetLink(bz);
            if (ol != null)
            {
                Del(ol);
            }
            bz.ClearStartBind();
            bz.ClearEndBind();
            if (mlp1 as BezierLinkLayout.ScriptIParameterLayout.InputParaItemLayout != null)
            {
                bz.BindPointStart(mlp2, "LinkPosition");
                bz.BindPointEnd(mlp1, "LinkPosition");
            }
            else
            {
                bz.BindPointStart(mlp1, "LinkPosition");
                bz.BindPointEnd(mlp2, "LinkPosition");
            }

            IParatItem ipl = (bz.LeftElement.DataContext as IParatItem);
            IParatItem ipr = (bz.RightElement.DataContext as IParatItem);

            ipl.LinkIParatItem = ipr;
            ipr.LinkIParatItem = ipl;
            bz.Color           = ipl.Color;
            if (isAddtoCanvas)
            {
                Add(bz);
            }
        }
コード例 #13
0
        /// <summary>
        /// 在tdfather子内容中添加一个对象的方法作为itembox
        /// </summary>
        /// <param name="tdfather"></param>
        /// <param name="obj"></param>
        /// <param name="medthname"></param>
        public static IItemBox AddMeodthToItemBox <IBox, IParat>(TreeData tdfather, ScriptFunction sf)
        {
            string   medthname = sf.GetMethodInfo().Name;
            IBox     box       = (IBox)Activator.CreateInstance(typeof(IBox));
            IItemBox opitem    = box as IItemBox;

            if (opitem == null)
            {
                throw new Exception("IBox, 不是一个有效的实现于IItemBox的类");
            }
            opitem.BoxType = ItemBoxEnum.FUNCTION;
            MethodInfo minfo = sf.GetMethodInfo();

            if (minfo != null)
            {
                ScriptMethAttribute attribute = minfo.GetCustomAttribute(typeof(ScriptMethAttribute), false) as ScriptMethAttribute;
                if (attribute != null)
                {
                    if (attribute.Name != "")
                    {
                        opitem.Name = attribute.Name;
                    }
                    else
                    {
                        opitem.Name = medthname;
                    }
                    opitem.BoxType = attribute.ItemBoxEnum;
                    opitem.TipText = attribute.Describe;
                    if (attribute.InputData.Count > 0)
                    {
                        foreach (var item in attribute.InputData)
                        {
                            IParat     ipa = (IParat)Activator.CreateInstance(typeof(IParat));
                            IParatItem op  = ipa as IParatItem;
                            //ParatItem op = new ParatItem(item.Name, LogLib.TClassOption.GetEnumTypeByString<ParaItemEnum>(item.Type), item.EnumDatas)
                            op.Name      = item.Name;
                            op.PIEnum    = LogLib.TClassOption.GetEnumTypeByString <ParaItemEnum>(item.Type);
                            op.EnumDatas = item.EnumDatas;
                            op.Value     = item.DefultValue;
                            opitem.AddInput(op);
                            op.TipText = item.TipText;
                        }
                    }
                    if (attribute.OutputData.Count > 0)
                    {
                        foreach (var item in attribute.OutputData)
                        {
                            IParat ipa = (IParat)Activator.CreateInstance(typeof(IParat));

                            IParatItem op = ipa as IParatItem;
                            op.Name      = item.Name;
                            op.PIEnum    = LogLib.TClassOption.GetEnumTypeByString <ParaItemEnum>(item.Type);
                            op.EnumDatas = item.EnumDatas;
                            op.Value     = item.DefultValue;
                            opitem.AddOutput(op);
                            op.TipText = item.TipText;
                        }
                    }
                    tdfather.Children.Add(new TreeData(opitem));
                }
            }
            //opitem = null;
            return(opitem);
        }
コード例 #14
0
 /// <summary>
 /// 绑定数据
 /// </summary>
 /// <param name="ipt"></param>
 public override void SetValueBind(IParatItem ipt)
 {
     Tools.Bind(ipt, value, "Value", ComboBox.SelectedItemProperty);
 }
コード例 #15
0
 public virtual void SetValueBind(IParatItem ipt)
 {
 }
コード例 #16
0
 public void Bind(IParatItem Source, string PropertyName)
 {
     this.paraItem     = Source;
     this.propertyName = PropertyName;
     Tools.Bind(Source, this.content, PropertyName, TextBox.TextProperty, mode: BindingMode.TwoWay);
 }
コード例 #17
0
 /// <summary>
 /// 绑定数据
 /// </summary>
 /// <param name="ipt"></param>
 public override void SetValueBind(IParatItem ipt)
 {
     Tools.Bind(ipt, value, "Value", TextBox.TextProperty);
 }