//--------------------------------------------------------------------------------- void pedirValorAlCrearEdge(Edge edge) { deseleccionar(); var inputbox = new CEditorInputBox(); if (edge != null) { if (!inputbox.EstablecerOpcionesSegunNodo(edge.SourceNode)) { removerEdge(edge); return; } var result = inputbox.ShowDialog(); if (result == DialogResult.OK) { removerEdge(edge); var arco = grafico.AddEdge(edge.Source, inputbox.Valor, edge.Target); arco.Label.FontSize = 9; switch (((edge.SourceNode as Node).UserData as CEditorVariable).Variable.tipo_variable) { case Variable.BOOLEANO: arco.UserData = inputbox.ValorBooleano; break; case Variable.LISTA: arco.UserData = inputbox.ValorLista; break; case Variable.NUMERICO: arco.UserData = inputbox.ValorNumerico; break; } } else { removerEdge(edge); } } timerAddEdge.Enabled = true; }
//--------------------------------------------------------------------------------- void GViewerDoubleClick(object sender, EventArgs e) { var sel = obtenerObjetoSelecionado(); deseleccionar(); if (sel == null) { return; } var inputbox = new CEditorInputBox(); //--click en un nodo ------------ var dNodo = sel as DNode; if (dNodo != null) { var cev = dNodo.Node.UserData as CEditorVariable; if (cev.Variable.id_variable.Equals(consecuente.id_variable)) { inputbox.EstablecerOpcionesSegunNodo(dNodo.Node, true); var result = inputbox.ShowDialog(); if (result == DialogResult.OK) { dNodo.Node.LabelText = cev.Variable.nombre_variable + " ES " + inputbox.Valor; switch (cev.Variable.tipo_variable) { case Variable.BOOLEANO: cev.Valor = inputbox.ValorBooleano; break; case Variable.LISTA: cev.Condicion = inputbox.ValorLista[0]; cev.Valor = inputbox.ValorLista[1]; break; case Variable.NUMERICO: var valorNumerico = inputbox.ValorNumerico as CValorNumerico; cev.Condicion = valorNumerico.Comparador; cev.ValorNum = valorNumerico.Valor; break; } cev.EsConsecuente = true; } } } //--click en un arco ------------ var edge = sel as DEdge; if (edge != null) { var source = edge.Edge.Source; var target = edge.Edge.Target; if (edge.Label != null) { inputbox.ValorActual = edge.Edge.LabelText; } inputbox.EstablecerOpcionesSegunNodo(edge.Edge.SourceNode as Node); var result = inputbox.ShowDialog(); if (result == DialogResult.OK) { var viewerEdge = sel as IViewerEdge; gViewer.RemoveEdge(viewerEdge, false); var arco = grafico.AddEdge(source, inputbox.Valor.ToString(), target); arco.Label.FontSize = 9; switch (((edge.Edge.SourceNode as Node).UserData as CEditorVariable).Variable.tipo_variable) { case Variable.BOOLEANO: arco.UserData = inputbox.ValorBooleano; break; case Variable.LISTA: arco.UserData = inputbox.ValorLista; break; case Variable.NUMERICO: arco.UserData = inputbox.ValorNumerico; break; } } } actualizar(); }