Example #1
0
            /// <summary>
            /// Devuelve todos los nodos, a partir del nodo actual, cuya palabra clave y parámetro son los indicados como parámetro.
            /// </summary>
            /// <param name="keyword">Palabra clave buscada.</param>
            /// <param name="param">Parámetro buscado.</param>
            /// <returns>Colección de nodos, a partir del nodo actual, cuya palabra clave y parámetro son los indicados como parámetro.</returns>
            public RtfNodeCollection SelectNodes(string keyword, int param)
            {
                RtfNodeCollection nodes = new RtfNodeCollection();

                foreach (RtfTreeNode node in children)
                {
                    if (node.key == keyword && node.param == param)
                    {
                        nodes.Add(node);
                    }

                    nodes.AddRange(node.SelectNodes(keyword, param));
                }

                return(nodes);
            }
Example #2
0
            /// <summary>
            /// Devuelve todos los nodos, a partir del nodo actual, cuyo tipo es el indicado como parámetro.
            /// </summary>
            /// <param name="nodeType">Tipo del nodo buscado.</param>
            /// <returns>Colección de nodos, a partir del nodo actual, cuyo tipo es la indicado como parámetro.</returns>
            public RtfNodeCollection SelectNodes(RtfNodeType nodeType)
            {
                RtfNodeCollection nodes = new RtfNodeCollection();

                foreach (RtfTreeNode node in children)
                {
                    if (node.type == nodeType)
                    {
                        nodes.Add(node);
                    }

                    nodes.AddRange(node.SelectNodes(nodeType));
                }

                return(nodes);
            }
Example #3
0
        public void PopulateCollection()
        {
            RtfNodeCollection list1 = new RtfNodeCollection();
            RtfNodeCollection list2 = new RtfNodeCollection();

            RtfTreeNode node = new RtfTreeNode(RtfNodeType.Keyword, "b", true, 2);

            list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "a", true, 1));
            list1.Add(node);
            list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "c", true, 3));
            list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "d", true, 4));
            list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "e", true, 5));

            list2.Add(node);
            list2.Add(new RtfTreeNode(RtfNodeType.Keyword, "g", true, 7));

            Assert.That(list1.Count, Is.EqualTo(5));
            Assert.That(list2.Count, Is.EqualTo(2));

            Assert.That(list1[1], Is.SameAs(node));
            Assert.That(list2[0], Is.SameAs(node));

            list1.AddRange(list2);

            Assert.That(list1.Count, Is.EqualTo(7));

            Assert.That(list1[5], Is.SameAs(list2[0]));
            Assert.That(list1[6], Is.SameAs(list2[1]));

            Assert.That(list1[6].NodeKey, Is.EqualTo("g"));
            Assert.That(list2[0], Is.SameAs(node));

            RtfTreeNode node1 = new RtfTreeNode(RtfNodeType.Keyword, "h", false, 8);

            list1.Insert(5, node1);

            Assert.That(list1.Count, Is.EqualTo(8));
            Assert.That(list1[5], Is.SameAs(node1));

            RtfTreeNode node2 = new RtfTreeNode(RtfNodeType.Keyword, "i", false, 9);

            list1[1] = node2;

            Assert.That(list1.Count, Is.EqualTo(8));
            Assert.That(list1[1], Is.SameAs(node2));
        }
Example #4
0
        public void PopulateCollection()
        {
            RtfNodeCollection list1 = new RtfNodeCollection();
            RtfNodeCollection list2 = new RtfNodeCollection();

            RtfTreeNode node = new RtfTreeNode(RtfNodeType.Keyword, "b", true, 2);

            list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "a", true, 1));
            list1.Add(node);
            list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "c", true, 3));
            list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "d", true, 4));
            list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "e", true, 5));

            list2.Add(node);
            list2.Add(new RtfTreeNode(RtfNodeType.Keyword, "g", true, 7));

            Assert.That(list1.Count, Is.EqualTo(5));
            Assert.That(list2.Count, Is.EqualTo(2));

            Assert.That(list1[1], Is.SameAs(node));
            Assert.That(list2[0], Is.SameAs(node));

            list1.AddRange(list2);

            Assert.That(list1.Count, Is.EqualTo(7));

            Assert.That(list1[5], Is.SameAs(list2[0]));
            Assert.That(list1[6], Is.SameAs(list2[1]));

            Assert.That(list1[6].NodeKey, Is.EqualTo("g"));
            Assert.That(list2[0], Is.SameAs(node));

            RtfTreeNode node1 = new RtfTreeNode(RtfNodeType.Keyword, "h", false, 8);

            list1.Insert(5, node1);

            Assert.That(list1.Count, Is.EqualTo(8));
            Assert.That(list1[5], Is.SameAs(node1));

            RtfTreeNode node2 = new RtfTreeNode(RtfNodeType.Keyword, "i", false, 9);

            list1[1] = node2;

            Assert.That(list1.Count, Is.EqualTo(8));
            Assert.That(list1[1], Is.SameAs(node2));
        }
Example #5
0
            /// <summary>
            /// Constructor de la clase ImageNode.
            /// </summary>
            /// <param name="node">Nodo RTF del que se obtendrán los datos de la imagen.</param>
            public ImageNode(RtfTreeNode node)
            {
                if (node != null)
                {
                    //Asignamos todos los campos del nodo
                    NodeKey      = node.NodeKey;
                    HasParameter = node.HasParameter;
                    Parameter    = node.Parameter;
                    ParentNode   = node.ParentNode;
                    RootNode     = node.RootNode;
                    NodeType     = node.NodeType;

                    ChildNodes = new RtfNodeCollection();
                    ChildNodes.AddRange(node.ChildNodes);

                    //Obtenemos los datos de la imagen como un array de bytes
                    getImageData();
                }
            }
Example #6
0
            /// <summary>
            /// Constructor de la clase ImageNode.
            /// </summary>
            /// <param name="node">Nodo RTF del que se obtendrán los datos de la imagen.</param>
            public ImageNode(RtfTreeNode node)
            {
                if(node != null)
                {
                    //Asignamos todos los campos del nodo
                    NodeKey = node.NodeKey;
                    HasParameter = node.HasParameter;
                    Parameter = node.Parameter;
                    ParentNode = node.ParentNode;
                    RootNode = node.RootNode;
                    NodeType = node.NodeType;

                    ChildNodes = new RtfNodeCollection();
                    ChildNodes.AddRange(node.ChildNodes);

                    //Obtenemos los datos de la imagen como un array de bytes
                    getImageData();
                }
            }
Example #7
0
            /// <summary>
            /// Devuelve todos los nodos, a partir del nodo actual, cuyo tipo es el indicado como parámetro.
            /// </summary>
            /// <param name="nodeType">Tipo del nodo buscado.</param>
            /// <returns>Colección de nodos, a partir del nodo actual, cuyo tipo es la indicado como parámetro.</returns>
            public RtfNodeCollection SelectNodesByType(RtfNodeType nodeType)
            {
                RtfNodeCollection nodes = new RtfNodeCollection();

                foreach (RtfTreeNode node in children)
                {
                    if (node.type == nodeType)
                    {
                        nodes.Add(node);
                    }

                    nodes.AddRange(node.SelectNodesByType(nodeType));
                }

                return nodes;
            }
Example #8
0
            /// <summary>
            /// Devuelve todos los nodos, a partir del nodo actual, cuya palabra clave es la indicada como parámetro.
            /// </summary>
            /// <param name="keyword">Palabra clave buscada.</param>
            /// <returns>Colección de nodos, a partir del nodo actual, cuya palabra clave es la indicada como parámetro.</returns>
            public RtfNodeCollection SelectNodes(string keyword)
            {
                RtfNodeCollection nodes = new RtfNodeCollection();

                foreach (RtfTreeNode node in children)
                {
                    if (node.key == keyword)
                    {
                        nodes.Add(node);
                    }

                    nodes.AddRange(node.SelectNodes(keyword));
                }

                return nodes;
            }
Example #9
0
            /// <summary>
            /// Busca todos los nodos de tipo Texto que contengan el texto buscado.
            /// </summary>
            /// <param name="text">Texto buscado en el documento.</param>
            /// <returns>Lista de nodos, a partir del actual, que contienen el texto buscado.</returns>
            public RtfNodeCollection FindText(string text)
            {
                RtfNodeCollection list = new RtfNodeCollection();

                //Si el nodo actual tiene hijos
                if (children != null)
                {
                    foreach (RtfTreeNode node in children)
                    {
                        if (node.NodeType == RtfNodeType.Text && node.NodeKey.IndexOf(text) != -1)
                            list.Add(node);
                        else if(node.NodeType == RtfNodeType.Group)
                            list.AddRange(node.FindText(text));
                    }
                }

                return list;
            }
Example #10
0
            /// <summary>
            /// Devuelve todos los nodos, a partir del nodo actual, cuya palabra clave y parámetro son los indicados como parámetro.
            /// </summary>
            /// <param name="keyword">Palabra clave buscada.</param>
            /// <param name="param">Parámetro buscado.</param>
            /// <returns>Colección de nodos, a partir del nodo actual, cuya palabra clave y parámetro son los indicados como parámetro.</returns>
            public RtfNodeCollection SelectNodes(string keyword, int param)
            {
                RtfNodeCollection nodes = new RtfNodeCollection();

                if (children != null)
                {
                    foreach (RtfTreeNode node in children)
                    {
                        if (node.key == keyword && node.param == param)
                        {
                            nodes.Add(node);
                        }

                        nodes.AddRange(node.SelectNodes(keyword, param));
                    }
                }

                return nodes;
            }
Example #11
0
            /// <summary>
            /// Devuelve todos los nodos grupo, a partir del nodo actual, cuya primera palabra clave es la indicada como parámetro.
            /// </summary>
            /// <param name="keyword">Palabra clave buscada.</param>
            /// <returns>Colección de nodos grupo, a partir del nodo actual, cuya primera palabra clave es la indicada como parámetro.</returns>
            public RtfNodeCollection SelectGroups(string keyword)
            {
                RtfNodeCollection nodes = new RtfNodeCollection();

                if (children != null)
                {
                    foreach (RtfTreeNode node in children)
                    {
                        if (node.NodeType == RtfNodeType.Group &&
                            node.HasChildNodes() &&
                            node.FirstChild.NodeKey == keyword)
                        {
                            nodes.Add(node);
                        }

                        nodes.AddRange(node.SelectGroups(keyword));
                    }
                }

                return nodes;
            }
Example #12
0
            /// <summary>
            /// Devuelve todos los nodos grupo, a partir del nodo actual, cuya primera palabra clave es la indicada como parámetro.
            /// </summary>
            /// <param name="keyword">Palabra clave buscada.</param>
            /// <param name="ignoreSpecial">Si está activo se ignorarán los nodos de control '\*' previos a algunas palabras clave.</param>
            /// <returns>Colección de nodos grupo, a partir del nodo actual, cuya primera palabra clave es la indicada como parámetro.</returns>
            public RtfNodeCollection SelectGroups(string keyword, bool ignoreSpecial)
            {
                RtfNodeCollection nodes = new RtfNodeCollection();

                if (children != null)
                {
                    foreach (RtfTreeNode node in children)
                    {
                        if (node.NodeType == RtfNodeType.Group && node.HasChildNodes() &&
                            (
                             (node.FirstChild.NodeKey == keyword) ||
                             (ignoreSpecial && node.ChildNodes[0].NodeKey == "*" && node.ChildNodes[1].NodeKey == keyword))
                            )
                        {
                            nodes.Add(node);
                        }

                        nodes.AddRange(node.SelectGroups(keyword, ignoreSpecial));
                    }
                }

                return nodes;
            }