示例#1
0
        string GetNameFromType(Constant.NodeTypeDefine type)
        {
            string name = "";

            switch (type)
            {
            case Constant.NodeTypeDefine.dict:
                name = "dict";
                break;

            case Constant.NodeTypeDefine.text:
                name = "string";
                break;

            case Constant.NodeTypeDefine.number:
                name = "number";
                break;

            case Constant.NodeTypeDefine.boolean:
                name = "bool";
                break;

            case Constant.NodeTypeDefine.array:
                name = "array";
                break;

            case Constant.NodeTypeDefine.datetime:
                name = "datetime";
                break;

            default:
                break;
            }
            return(name);
        }
示例#2
0
        private void btnApplyType_Click(object sender, EventArgs e)
        {
            if (cmbBoxNodeType.SelectedIndex < 0)
            {
                return;
            }
            if (treeViewAdvControl.SelectedNode == null)
            {
                ShowErrorMsg(CDefines.GetDStr("NothingSelected"));
                return;
            }
            Constant.NodeTypeDefine newtype = GetTypeFromName(cmbBoxNodeType.SelectedItem.ToString());
            PlistNodeData           data    = GetNodeData(treeViewAdvControl.SelectedNode);

            if (data.nodeType == newtype)
            {
                return;
            }
            object oldvalue = data.GetOldValue();

            data.nodeType = newtype;
            data.SetNewValue(oldvalue);
            RefreshEditPanel();
            RefreshTreeIcon(newtype);
        }
示例#3
0
        Node AddNodeAndValue(Node parent, string nodename, object nodevalue)
        {
            if (string.IsNullOrEmpty(nodename))
            {
                new Exception("node name can not be empty!");
            }
            Node nodeAdded = null;

            if (parent != null)
            {
                PlistNodeData data = parent.Tag as PlistNodeData;
                if (!CheckAddNodePossible(data.nodeType))
                {
                    ShowErrorMsg(CDefines.GetDStr("AddChildFailure"));
                    return(null);
                }
                nodeAdded = AddChild(parent, nodename);
            }
            else
            {
                nodeAdded = AddRoot(nodename);
            }

            Constant.NodeTypeDefine itemtype = GetItemTypeByValue(nodevalue);
            PlistNodeData           nodedata = InitNodeData(itemtype, nodename);

            nodedata.SetNewValue(nodevalue);
            nodeAdded.Tag      = nodedata;
            nodeAdded.Image    = imageListToolbar.Images[nodedata.nodeType.ToString()];
            haveUnsavedChanges = true;
            return(nodeAdded);
        }
示例#4
0
        private PlistNodeData InitNodeData(Constant.NodeTypeDefine nodetype, string key)
        {
            PlistNodeData data = new PlistNodeData();

            data.nodeType = nodetype;
            data.key      = key;
            return(data);
        }
示例#5
0
 bool CheckAddNodePossible(Constant.NodeTypeDefine selectedType)
 {
     if (selectedType == Constant.NodeTypeDefine.dict || selectedType == Constant.NodeTypeDefine.array)
     {
         return(true);
     }
     return(false);
 }
示例#6
0
        private void treeViewAdvControl_DragDrop(object sender, DragEventArgs e)
        {
            TreeViewAdv _tree = treeViewAdvControl;

            _tree.BeginUpdate();

            TreeNodeAdv[] nodes    = (TreeNodeAdv[])e.Data.GetData(typeof(TreeNodeAdv[]));
            Node          dropNode = _tree.DropPosition.Node.Tag as Node;

            if (_tree.DropPosition.Position == NodePosition.Inside)
            {
                Constant.NodeTypeDefine nodetype = (dropNode.Tag as PlistNodeData).nodeType;
                if (nodetype == Constant.NodeTypeDefine.array ||
                    nodetype == Constant.NodeTypeDefine.dict)
                {
                    foreach (TreeNodeAdv n in nodes)
                    {
                        (n.Tag as Node).Parent = dropNode;
                    }
                    _tree.DropPosition.Node.IsExpanded = true;
                }
            }
            else
            {
                Node parent   = dropNode.Parent;
                Node nextItem = dropNode;
                if (_tree.DropPosition.Position == NodePosition.After)
                {
                    nextItem = dropNode.NextNode;
                }

                foreach (TreeNodeAdv node in nodes)
                {
                    (node.Tag as Node).Parent = null;
                }

                int index = -1;
                index = parent.Nodes.IndexOf(nextItem);
                foreach (TreeNodeAdv node in nodes)
                {
                    Node item = node.Tag as Node;
                    if (index == -1)
                    {
                        parent.Nodes.Add(item);
                    }
                    else
                    {
                        parent.Nodes.Insert(index, item);
                        index++;
                    }
                }
            }

            _tree.EndUpdate();
        }
示例#7
0
        Constant.NodeTypeDefine GetTypeFromName(string name)
        {
            Constant.NodeTypeDefine nodetype = Constant.NodeTypeDefine.unknown;
            switch (name)
            {
            case "dict":
                nodetype = Constant.NodeTypeDefine.dict;
                break;

            case "string":
                nodetype = Constant.NodeTypeDefine.text;
                break;

            case "number":
            case "integer":
            case "real":
                nodetype = Constant.NodeTypeDefine.number;
                break;

            case "bool":
                nodetype = Constant.NodeTypeDefine.boolean;
                break;

            case "array":
                nodetype = Constant.NodeTypeDefine.array;
                break;

            case "datetime":
            case "date":
                nodetype = Constant.NodeTypeDefine.datetime;
                break;

            default:
                nodetype = Constant.NodeTypeDefine.unknown;
                break;
            }
            return(nodetype);
        }
示例#8
0
        private Node DataParser(string key, XElement xe, Node parent = null)
        {
            Node nodeAdded = parent == null?AddRoot(key) : AddChild(parent, key);

            Constant.NodeTypeDefine nodetype = GetTypeFromName(xe.Name.LocalName);
            string temp = xe.Name.LocalName.ToLower();

            if (temp == "true" || temp == "false")
            {
                nodetype = Constant.NodeTypeDefine.boolean;
            }
            PlistNodeData data = InitNodeData(nodetype, key);

            switch (nodetype)
            {
            case Constant.NodeTypeDefine.boolean:
                data.value_bool = Convert.ToBoolean(xe.Name.LocalName);
                break;

            case Constant.NodeTypeDefine.number:
                data.value_number = Convert.ToDouble(xe.Value);
                break;

            case Constant.NodeTypeDefine.text:
                data.value_string = xe.Value;
                break;

            case Constant.NodeTypeDefine.datetime:
                data.value_date = Convert.ToDateTime(xe.Value);
                break;

            default:
                break;
            }
            nodeAdded.Tag   = data;
            nodeAdded.Image = imageListToolbar.Images[data.nodeType.ToString()];
            return(nodeAdded);
        }
示例#9
0
        private void ImportCSV(Node parent, Constant.NodeTypeDefine parenttype)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter = "(CSV 逗号分隔文件)|*.csv";
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                CsvLib.CsvStreamReader csvreader = new CsvLib.CsvStreamReader(dlg.FileName, Encoding.Default);
                if (parent == null)
                {
                    ImportCSVAsDict(csvreader);
                    return;
                }
                if (parenttype == Constant.NodeTypeDefine.array)
                {
                    ImportCSVAsArray(csvreader, parent);
                }
                else if (parenttype == Constant.NodeTypeDefine.dict)
                {
                    ImportCSVAsDict(csvreader);
                }
            }
        }
示例#10
0
        private PlistNodeData InitNodeData(string nodename)
        {
            Constant.NodeTypeDefine nodetype = GetTypeFromName(nodename);

            return(InitNodeData(nodetype, nodename));
        }
示例#11
0
        private void RefreshTreeIcon(Constant.NodeTypeDefine nodeType)
        {
            Node nodeSelected = (treeViewAdvControl.SelectedNode.Tag as Node);

            nodeSelected.Image = imageListToolbar.Images[nodeType.ToString()];
        }