private void GenerateToolbar() { Toolbar l_toolbar = new Toolbar(); Button l_nodeButton = new Button(); //boton para crear un nodo tipo "Room", el clickEvent especifica que debe hacer el boton cuando es clicado l_nodeButton.text = "Create Room"; //nombre del boton l_nodeButton.clickable.clicked += () => m_graphView.createNode("Room"); //evento de clickar -> llamamos a la funcion createNode del graphView l_toolbar.Add(l_nodeButton); //añadimos el boton a la toolbar //campo de texto con el nombre para guardar archivo TextField l_fileNameText = new TextField();//campo para guardar el nombre l_fileNameText.transform.position = new Vector3(60, 0, 0); l_fileNameText.SetValueWithoutNotify(m_ruleFileName); //guardar el valor por defecto l_fileNameText.MarkDirtyRepaint(); //actualizar el nuevo valor en el siguiente frame l_fileNameText.RegisterValueChangedCallback(evt => m_ruleFileName = evt.newValue); //callback para cambiar el nombre del archivo l_toolbar.Add(l_fileNameText); //añadimos la variable donde se cambia el nombre del archivo a la toolbar Button l_saveRuleButton = new Button(); //boton para crear un nodo tipo "Room", el clickEvent especifica que debe hacer el boton cuando es clicado l_saveRuleButton.transform.position = new Vector3(60, 0, 0); l_saveRuleButton.clickable.clicked += () => SaveGrammarData(m_ruleFileName, false); //evento al clickar l_saveRuleButton.text = "Save Rule"; //nombre del boton l_toolbar.Add(l_saveRuleButton); //añadimos el boton a la toolbar Button l_loadRuleButton = new Button(); //boton para crear un nodo tipo "Room", el clickEvent especifica que debe hacer el boton cuando es clicado l_loadRuleButton.transform.position = new Vector3(60, 0, 0); l_loadRuleButton.clickable.clicked += () => LoadGrammarData(m_ruleFileName, false); //evento al clickar l_loadRuleButton.text = "Load Rule"; //nombre del boton l_toolbar.Add(l_loadRuleButton); //añadimos el boton a la toolbar Button l_expandRoomButton = new Button(); //boton para l_expandRoomButton.transform.position = new Vector3(130, 0, 0); l_expandRoomButton.clickable.clicked += () => ExpandNonTerminalNodes(); //evento al clickar l_expandRoomButton.text = "Expand NonTerminal"; //nombre del boton l_toolbar.Add(l_expandRoomButton); //añadimos el boton a la toolbar //campo de texto con el nombre para guardar el grafico final TextField l_finalGraphNameText = new TextField();//campo para guardar el nombre l_finalGraphNameText.transform.position = new Vector3(180, 0, 0); l_finalGraphNameText.SetValueWithoutNotify(m_finalGraphName); //guardar el valor por defecto l_finalGraphNameText.MarkDirtyRepaint(); //actualizar el nuevo valor en el siguiente frame l_finalGraphNameText.RegisterValueChangedCallback(evt => m_finalGraphName = evt.newValue); //callback para cambiar el nombre del archivo l_toolbar.Add(l_finalGraphNameText); //añadimos la variable donde se cambia el nombre del archivo a la toolbar Button l_saveFinalGraphButton = new Button(); l_saveFinalGraphButton.transform.position = new Vector3(180, 0, 0); l_finalGraphNameText.SetValueWithoutNotify(m_finalGraphName); //guardar el valor por defecto l_saveFinalGraphButton.clickable.clicked += () => SaveGrammarData(m_finalGraphName, true); //evento al clickar l_saveFinalGraphButton.text = "Save Final Graph"; //nombre del boton l_toolbar.Add(l_saveFinalGraphButton); //añadimos el boton a la toolbar Button l_loadFinalGraphButton = new Button(); l_loadFinalGraphButton.transform.position = new Vector3(180, 0, 0); l_loadFinalGraphButton.clickable.clicked += () => LoadGrammarData(m_finalGraphName, true); //evento al clickar l_loadFinalGraphButton.text = "Load Final Graph"; //nombre del boton l_toolbar.Add(l_loadFinalGraphButton); //añadimos el boton a la toolbar rootVisualElement.Add(l_toolbar); //finalmente añadimos la toolbar a la ventana del editor }//generar la barra de botones de la ventana del editor