Ejemplo n.º 1
0
        void WriteTo(XmlWriter writer, ExtensibleTreeView.TreeOptions parentOptions)
        {
            writer.WriteStartElement(Node);
            if (NodeName != null)
            {
                writer.WriteAttributeString(nameAttribute, NodeName);
            }
            if (Expanded)
            {
                writer.WriteAttributeString(expandedAttribute, bool.TrueString);
            }
            if (Selected)
            {
                writer.WriteAttributeString(selectedAttribute, bool.TrueString);
            }

            ExtensibleTreeView.TreeOptions ops = Options;
            if (ops != null)
            {
                foreach (DictionaryEntry de in ops)
                {
                    object parentVal = parentOptions != null ? parentOptions [de.Key] : null;
                    if (parentVal != null && !parentVal.Equals(de.Value) || (parentVal == null && de.Value != null) || parentOptions == null)
                    {
                        writer.WriteStartElement("Option");
                        writer.WriteAttributeString("id", de.Key.ToString());
                        writer.WriteAttributeString("value", de.Value.ToString());
                        writer.WriteEndElement();                          // Option
                    }
                }
            }

            if (ChildrenState != null)
            {
                foreach (NodeState ces in ChildrenState)
                {
                    ces.WriteTo(writer, Options != null ? Options : parentOptions);
                }
            }

            writer.WriteEndElement();              // NodeState
        }
Ejemplo n.º 2
0
        static NodeState SaveStateRec(ExtensibleTreeView pad, ITreeNavigator nav)
        {
            List <NodeState> childrenState = null;

            if (nav.Filled && nav.MoveToFirstChild())
            {
                do
                {
                    NodeState cs = SaveStateRec(pad, nav);
                    if (cs != null)
                    {
                        cs.NodeName = nav.NodeName;
                        if (childrenState == null)
                        {
                            childrenState = new List <NodeState> ();
                        }
                        childrenState.Add(cs);
                    }
                } while (nav.MoveNext());
                nav.MoveToParent();
            }

            ExtensibleTreeView.TreeOptions ops = pad.GetNodeOptions(nav);

            if (ops != null || nav.Expanded || childrenState != null || nav.Selected)
            {
                NodeState es = new NodeState();
                es.Expanded      = nav.Expanded;
                es.Selected      = nav.Selected;
                es.Options       = ops;
                es.ChildrenState = childrenState;
                return(es);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 3
0
        ICustomXmlSerializer ReadFrom(XmlReader reader, ExtensibleTreeView.TreeOptions parentOptions)
        {
            NodeState result = new NodeState();

            result.NodeName = reader.GetAttribute(nameAttribute);
            if (!String.IsNullOrEmpty(reader.GetAttribute(expandedAttribute)))
            {
                result.Expanded = Boolean.Parse(reader.GetAttribute(expandedAttribute));
            }
            if (!String.IsNullOrEmpty(reader.GetAttribute(selectedAttribute)))
            {
                result.Selected = Boolean.Parse(reader.GetAttribute(selectedAttribute));
            }

            XmlReadHelper.ReadList(reader, reader.LocalName, delegate() {
                switch (reader.LocalName)
                {
                case "Option":
                    if (result.Options == null)
                    {
                        result.Options = parentOptions != null ? parentOptions.CloneOptions(Gtk.TreeIter.Zero) : new ExtensibleTreeView.TreeOptions();
                    }
                    result.Options [reader.GetAttribute("id")]   = bool.Parse(reader.GetAttribute("value"));
                    return(true);

                case "Node":
                    if (result.ChildrenState == null)
                    {
                        result.ChildrenState = new List <NodeState> ();
                    }
                    result.ChildrenState.Add((NodeState)ReadFrom(reader, result.Options != null ? result.Options : parentOptions));
                    return(true);
                }
                return(false);
            });
            return(result);
        }