Esempio n. 1
0
        /// <summary>
        /// 某个类更新了一个函数属性的通知
        /// </summary>
        /// <param name="page">类</param>
        /// <param name="fun">函数</param>
        public void UpdatePicFunctionToPicData(PicTabPage page, PicFunctionTabPage fun)
        {
            MyXTreeItem delpicitem = null;
            MyXTreeItem delfunitem = null;

            foreach (MyXTreeItem item in DataSource)
            {
                if (item.XName == page.Title)
                {
                    delpicitem = item;
                    foreach (MyXTreeItem funitem in item.ChildrenItem)
                    {
                        if (funitem.XName == fun.Title)
                        {
                            delfunitem = funitem;
                        }
                    }
                }
            }
            if (delpicitem == null || delfunitem == null)
            {
                return;
            }
            delpicitem.ChildrenItem.Remove(delfunitem);
            ///重新添加函数信息
            AddPicFunctionToPicData(page, fun);
        }
 /// <summary>
 /// 删除按钮的点击事件
 /// </summary>
 /// <param name="sender">信息发送对象</param>
 /// <param name="e">事件信息</param>
 private void DelFunction_Click(object sender, RoutedEventArgs e)
 {
     if (FunctionListBox.SelectedIndex != -1)
     {
         PicFunctionTabPage fun = FunctionListBox.SelectedItem as PicFunctionTabPage;
         if (fun != null)
         {
             picPage.DelPicFunctionPage(fun);
         }
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 资源数回调
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="ms"></param>
        /// <param name="data"></param>
        public object ChileEventCallBack(Object sender, MouseState ms, XObjectData data = null)
        {
            switch (ms)
            {
            case MouseState.XSelectObjectToDir:
                BindingPropertiesWindow(data.data);
                break;

            case MouseState.XOpenFunction:
                PicFunctionTabPage fun = data.data as PicFunctionTabPage;
                if (fun != null)
                {
                    ///将代码图添加到tab页
                    AddLayoutDocument(ContentPanel, fun);
                }
                break;
            }
            return(null);
        }
Esempio n. 4
0
 /// <summary>
 /// 将函数写入文件
 /// </summary>
 /// <param name="writer">写入文件的对象</param>
 /// <param name="func">要写入的函数</param>
 public static void WriteFunction(XmlTextWriter writer, PicFunctionTabPage func)
 {
     ///写入标识
     writer.WriteStartElement("Function");
     writer.WriteAttributeString("Title", func.Title);
     writer.WriteAttributeString("ID", func.Id.ToString());
     writer.WriteAttributeString("OpenType", func.MyOpenType.ToString());
     writer.WriteAttributeString("OverrideType", func.MyOverride.ToString());
     ///循环所有代码块
     foreach (CodeBox box in func.ListCodeBoxChild.Values)
     {
         DataWriteFunction.WriteCodeBoxAribute(writer, box);
     }
     ///循环所有贝塞尔曲线
     foreach (BezierLine line in func.GetBezierLines.Values)
     {
         DataWriteFunction.WriteBezierLine(writer, line);
     }
     ///结束函数的存储的标识
     writer.WriteEndElement();
 }
Esempio n. 5
0
        /// <summary>
        /// 读取函数内容
        /// </summary>
        /// <param name="picnode">代码图节点</param>
        /// <param name="pic">代码图(类)</param>
        public static void ReadFunction(XmlNode functionnode, PicTabPage pic)
        {
            XmlElement functionElement = (XmlElement)functionnode;
            string     Title           = functionElement.GetAttribute("Title");
            int        ID = int.Parse(functionElement.GetAttribute("ID"));

            XObject.OpenType myOpenType     = XObject.OpenTypeMapping(functionElement.GetAttribute("OpenType"));
            OverrideType     myOverrideType = XObject.OverrideTypeMapping(functionElement.GetAttribute("OverrideType"));

            PicFunctionTabPage functionpage = pic.LoadFunctionPage(Title, ID, myOpenType, myOverrideType);

            ///查找CodeBox节点
            foreach (XmlNode node in functionnode.SelectNodes("CodeBox"))
            {
                DataWriteFunction.ReadCodeBoxObject(node, functionpage);
            }
            ///查找BezierLine节点
            foreach (XmlNode node in functionnode.SelectNodes("BezierLine"))
            {
                DataWriteFunction.ReadBezierLine(node, functionpage);
            }
        }
        /// <summary>
        /// 点击选中事件
        /// </summary>
        /// <param name="sender">信息源</param>
        /// <param name="e">信息</param>
        private void StackPanel_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            Panel panel = sender as StackPanel;

            if (panel == null)
            {
                return;
            }
            TextBlock box = panel.Children[1] as TextBlock;

            if (box == null)
            {
                return;
            }
            if (FunctionListBox.SelectedIndex != -1)
            {
                PicFunctionTabPage fun = FunctionListBox.SelectedItem as PicFunctionTabPage;
                if (fun != null && box.Text == fun.Title)
                {
                    ///如果算是第二次点击
                    if (fun.Title == ClickTitle)
                    {
                        ///主页面打开函数页面去编辑
                        XObjectData data = new XObjectData(fun);
                        ToCallFunctionParentControl(MouseState.XOpenFunction, data);
                    }
                    else
                    {
                        ///设置第一次点击
                        ClickTitle = fun.Title;
                        XObjectData data = new XObjectData(fun);
                        ToCallFunctionParentControl(MouseState.XSelectObjectToDir, data);
                    }
                }
            }
        }
Esempio n. 7
0
        /// <summary>
        /// 某个类添加了一个函数更新通知
        /// </summary>
        ///  <param name="page">添加了函数的类</param>
        /// <param name="fun">被添加的函数</param>
        public void AddPicFunctionToPicData(PicTabPage page, PicFunctionTabPage fun)
        {
            ///新建项
            MyXTreeItem item = new MyXTreeItem();

            item.ChildrenItem  = null;
            item.MyCodeBoxType = CodeBox.XAType.XFunction;
            item.MyHitText     = fun.Hint;
            item.TypeImagePath = "";
            item.XName         = fun.Title;
            List <XAributeItem> xaitem = new List <XAributeItem>();

            ///如果是C#则要加上函数的所属
            if (Language == LanguageType.CSharp.ToString())
            {
                XAributeItem buteitem = new XAributeItem();
                buteitem.MyXPositonStyle  = XAribute.XPositonStyle.Left;
                buteitem.Parameter_name   = "Target";
                buteitem.MyCanLinkType    = XAribute.CanLinkType.One;
                buteitem.MyXAttributeSpec = XAribute.XAttributeSpec.XNone;
                buteitem.MyXAttributeType = XAribute.XAttributeType.XTarget;
                buteitem.MyHittext        = "函数所属的类";
                buteitem.MyLastExText     = page.Title;
                xaitem.Add(buteitem);
            }
            //else if (Language == LanguageType.C.ToString())
            //{

            //}
            ///循环参数
            foreach (XAribute bute in fun.FunctionEnterBox.RightAribute.Children)
            {
                if (bute.SelectType != XAribute.XAttributeType.XEnter)
                {
                    ///填装信息
                    XAributeItem buteitem = new XAributeItem(bute);
                    //buteitem.Parameter_name = bute.Title;
                    //buteitem.MyCanLinkType = bute.CanLinkNum;
                    //buteitem.MyXAttributeSpec = bute.SelectSpc;
                    //buteitem.MyXAttributeType = bute.SelectType;
                    buteitem.MyXPositonStyle = XAribute.XPositonStyle.Left;
                    //buteitem.MyHittext = bute.Hint;
                    //buteitem.MyLastExText = bute.ExName;
                    ///加入列表
                    xaitem.Add(buteitem);
                }
            }
            ///组成函数的右半边属性
            foreach (XAribute bute in fun.FunctionExcBox.LeftAribute.Children)
            {
                if (bute.SelectType != XAribute.XAttributeType.XExc)
                {
                    XAributeItem buteitem = new XAributeItem(bute);
                    buteitem.MyXPositonStyle = XAribute.XPositonStyle.right;
                    xaitem.Add(buteitem);
                }
            }
            item.MyXaributeChildren = xaitem;
            bool        isExect      = false; ///是否已经存在类
            MyXTreeItem UserTreeItem = null;

            foreach (MyXTreeItem myitem in DataSource)
            {
                if (myitem.XName == page.Title)
                {
                    isExect = true;
                    myitem.ChildrenItem.Add(item);
                    return;
                }
            }
            if (!isExect && UserTreeItem == null)
            {
                UserTreeItem       = new MyXTreeItem();
                UserTreeItem.XName = page.Title;
                UserTreeItem.ChildrenItem.Add(item);
                ///添加信息和修改信息
                DataSource.Add(UserTreeItem);
            }
            //ModityPicTabPageFunction();
        }
Esempio n. 8
0
        /// <summary>
        /// 更新函数
        /// </summary>
        /// <param name="update">更新节点</param>
        /// <param name="Functionfather">要更新的函数父节点</param>
        /// <param name="Function">函数的内容</param>
        public static void UpdateFunction(XmlDocument update, XmlElement Functionfather, PicFunctionTabPage func)
        {
            ///写入标识
            XmlElement function = update.CreateElement("Function");

            function.SetAttribute("Title", func.Title);
            function.SetAttribute("ID", func.Id.ToString());
            function.SetAttribute("OpenType", func.MyOpenType.ToString());
            function.SetAttribute("OverrideType", func.MyOverride.ToString());
            ///循环所有代码块
            foreach (CodeBox box in func.ListCodeBoxChild.Values)
            {
                DataWriteFunction.UpdateCodeBoxAribute(update, function, box);
            }
            ///循环所有贝塞尔曲线
            foreach (BezierLine line in func.GetBezierLines.Values)
            {
                DataWriteFunction.UpdateBezierLine(update, function, line);
            }
            ///加入子节点
            Functionfather.AppendChild(function);
        }