Exemplo n.º 1
0
        //---------------------------------------------------------------------------------
        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;
        }
Exemplo n.º 2
0
        //---------------------------------------------------------------------------------
        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();
        }