/// <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); } } }
/// <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); }
/// <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(); }
/// <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); } } } }
/// <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(); }
/// <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); }