internal async Task FindPropertyCustomBindFunc(EngineNS.UISystem.UIElement uiElement, string propertyName) { string funcName; if (uiElement.PropertyBindFunctions.TryGetValue(propertyName, out funcName)) { Macross.Category category = Macross_Client.GetCategory(MacrossPanel.UIBindFuncCategoryName); var item = category.FindItem(funcName); if (item != null) { await Macross_Client.ShowNodesContainer(item); HostControl.ChangeToLogic(); } } }
internal void DelPropertyCustomBindFunc(EngineNS.UISystem.UIElement uiElement, string propertyName) { string funcName; if (uiElement.PropertyBindFunctions.TryGetValue(propertyName, out funcName)) { Macross.Category category = Macross_Client.GetCategory(MacrossPanel.UIBindFuncCategoryName); var item = category.FindItem(funcName); if (item != null) { category.RemoveItem(funcName); Macross_Client.RemoveNodesContainer(item); var fileName = Macross_Client.GetGraphFileName(item.Name); EngineNS.CEngine.Instance.FileManager.DeleteFile(fileName); } uiElement.PropertyBindFunctions.Remove(propertyName); } }
internal async Task SetPropertyCustomBindOperation(EngineNS.UISystem.UIElement uiElement, string bindPropertyName, Type bindPropertyType) { Macross.Category category = Macross_Client.GetCategory(MacrossPanel.UIBindFuncCategoryName); var item = new Macross.CategoryItem(null, category); item.CategoryItemType = Macross.CategoryItem.enCategoryItemType.Unknow; item.CanDrag = false; item.InitTypeStr = "UI_UIElement_PropertyCustomBind"; var data = new UIElementPropertyCustomBindCategoryitemInitData(); data.Reset(); data.UIElement = uiElement; data.UIElementId = uiElement.Id; data.PropertyName = bindPropertyName; data.PropertyType = bindPropertyType; data.FunctionName = $"UIBindFunc_{bindPropertyName}_{uiElement.Id.ToString().Replace("-","_")}_{item.Id.ToString().Replace("-", "_")}";// bindFunctionName; item.Initialize(Macross_Client, data); category.Items.Add(item); uiElement.PropertyBindFunctions[bindPropertyName] = data.FunctionName; var varItemPro = item.PropertyShowItem as UIElementPropertyCustomBindCategoryItemPropertys; var nodesContainer = await Macross_Client.CreateNodesContainer(item); var nodeType = typeof(CodeDomNode.MethodCustom); var csParam = new CodeDomNode.MethodCustom.MethodCustomConstructParam() { CSType = Macross_Client.CSType, HostNodesContainer = nodesContainer.NodesControl, ConstructParam = "", MethodInfo = varItemPro.MethodInfo, IsShowProperty = false, }; var node = nodesContainer.NodesControl.AddOrigionNode(nodeType, csParam, 0, 0); node.IsDeleteable = false; node.NodeNameAddShowNodeName = false; nodesContainer.Save(); await Macross_Client.ShowNodesContainer(item); }
internal async Task SetEventFunction(EngineNS.UISystem.UIElement element, string functionName, Type eventType) { Macross.Category category = Macross_Client.GetCategory(MacrossPanel.UIEventFuncCategoryName); var item = new Macross.CategoryItem(null, category); item.CategoryItemType = Macross.CategoryItem.enCategoryItemType.Unknow; item.CanDrag = true; item.InitTypeStr = "UI_UIElement_Event"; var data = new UIElementEventCategoryItemInitData(); data.Reset(); data.UIElement = element; data.UIElementId = element.Id; data.FunctionName = functionName; data.EventType = eventType; item.Initialize(Macross_Client, data); category.Items.Add(item); string dicValue; var key = new UIResourceInfo.UIEventDicKey(element.Id, functionName); if (!HostControl.CurrentResInfo.UIEventsDic.TryGetValue(key, out dicValue)) { HostControl.CurrentResInfo.UIEventsDic[key] = item.Name; } // 创建NodesContainer var varItemPro = item.PropertyShowItem as UIElementEventCategoryItemPorpertys; var nodesContainer = await Macross_Client.CreateNodesContainer(item); var nodeType = typeof(CodeDomNode.MethodCustom); var csParam = new CodeDomNode.MethodCustom.MethodCustomConstructParam() { CSType = Macross_Client.CSType, HostNodesContainer = nodesContainer.NodesControl, ConstructParam = "", MethodInfo = varItemPro.MethodInfo, IsShowProperty = false, }; var node = nodesContainer.NodesControl.AddOrigionNode(nodeType, csParam, 0, 0); node.IsDeleteable = false; node.NodeNameAddShowNodeName = false; // 有输出参数时才默认添加return if (varItemPro.MethodInfo.OutParams.Count > 0) { var retNodeType = typeof(CodeDomNode.ReturnCustom); var retParam = new CodeDomNode.ReturnCustom.ReturnCustomConstructParam() { CSType = Macross_Client.CSType, HostNodesContainer = nodesContainer.NodesControl, ConstructParam = "", MethodInfo = varItemPro.MethodInfo, ShowPropertyType = CodeDomNode.ReturnCustom.ReturnCustomConstructParam.enShowPropertyType.ReturnValue, }; var retNode = nodesContainer.NodesControl.AddOrigionNode(retNodeType, retParam, 300, 0) as CodeDomNode.ReturnCustom; retNode.IsDeleteable = false; } nodesContainer.Save(); await Macross_Client.ShowNodesContainer(item); }