Пример #1
0
        private void Wrapper_FilenameChanged(object sender, EventArgs e)
        {
            //Prepare...
            IndexEntryWrapper wrapper = sender as IndexEntryWrapper;
            TreeNode          node    = tagTreeView.SelectedNode;

            //Check
            if (wrapper != null && node != null)
            {
                //Set filename...
                map.IndexEntries[wrapper.ID].Filename = wrapper.Filename;

                //Prepare
                TreeNodeCollection collection = tagTreeView.Nodes;
                TreeNode           parent     = null;

                //Loop
                while (node.Parent != null)
                {
                    //Get Parent
                    parent     = node.Parent;
                    collection = parent.Nodes;

                    //Remove
                    if (node.Nodes.Count == 0)
                    {
                        collection.Remove(node);
                    }

                    //Set
                    node = parent;
                }

                //Remove from tree...
                if (node.Nodes.Count == 0)
                {
                    tagTreeView.Nodes.Remove(node);
                }

                //Build
                node = entry_BuildTagTree(map.IndexEntries[wrapper.ID]);

                //Re-sort...
                tagTreeView.BeginUpdate();
                tagTreeView.Sort();
                tagTreeView.EndUpdate();

                //Select
                tagTreeView.SelectedNode = node;
                node.EnsureVisible();
            }
        }
Пример #2
0
        private TreeNode entry_BuildTagTree(IndexEntry entry)
        {
            //Prepare
            TreeNodeCollection collection = null;
            IndexEntryWrapper  wrapper    = null;
            TreeNode           node       = null;

            //Get or create wrapper...
            if (entries.ContainsKey(entry.Id))
            {
                wrapper = entries[entry.Id];
            }
            else
            {
                wrapper = IndexEntryWrapper.FromEntry(entry, map); wrapper.FilenameChanged += Wrapper_FilenameChanged; entries.Add(entry.Id, wrapper);
            }

            //Get Path Parts
            string[] parts = entry.Filename.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
            string   last  = parts[parts.Length - 1];

            //Check...
            if ((!string.IsNullOrEmpty(tagSearchBox.Text) && string.Join(".", last, entry.Root).ToLower().Contains(tagSearchBox.Text.ToLower())) || string.IsNullOrEmpty(tagSearchBox.Text))
            {
                //Prepare
                collection = tagTreeView.Nodes;

                //Loop
                for (int i = 0; i < parts.Length - 1; i++)
                {
                    //Create or get node
                    if (collection.ContainsKey(parts[i]))
                    {
                        node = collection[parts[i]];
                    }
                    else
                    {
                        node = collection.Add(parts[i], parts[i]);
                    }

                    //Setup...
                    node.ImageIndex = 0; node.SelectedImageIndex = 0;
                    collection      = node.Nodes;
                }

                //Create Node
                string name = $"{parts[parts.Length - 1]}.{entry.Root}";
                node = new TreeNode(name, 1, 1)
                {
                    Name = name,
                    Tag  = entry.Id
                };

                //Add
                collection.Add(node);

                //Return
                return(node);
            }
            else
            {
                return(null);
            }
        }
Пример #3
0
 /// <summary>
 /// Initializes a new <see cref="MapFileWrapper"/> instance.
 /// </summary>
 /// <param name="mapName">The name of the map.</param>
 /// <param name="strings">The map's strings.</param>
 /// <param name="scenario">The map's scenario ID.</param>
 public MapFileWrapper(string mapName, MapFile.StringList strings, IndexEntryWrapper scenario)
 {
     this.name     = mapName;
     this.strings  = strings;
     this.scenario = scenario;
 }