/// <summary> /// Split up dot-separated namespaces to child namespaces. /// </summary> public static void Diverge(this TreeNodeCollection items) { for (int i = 0; i < items.Count; ++i) { MemberNode item = (MemberNode)items[i]; if (item.Kind != Element.Namespaces) { continue; } int dot = item.Name.IndexOf('.'); if (dot >= 0) { string namespaceName = item.Name.Substring(0, dot); MemberNode parentNamespace = MemberNode.MakeNamespace(namespaceName); parentNamespace.NodeFont = item.NodeFont; item.Text = item.name = item.Name = item.Name.Substring(dot + 1); parentNamespace.SwapWith(item); item.Nodes.Add(parentNamespace); } Diverge(item.Nodes); } }
/// <summary> /// Load code from a directory. /// </summary> /// <param name="path">Directory path</param> /// <param name="defines">Defined constants</param> void LoadFrom(string path, string defines) { if (task.IsOperationRunning) { MessageBox.Show("Another operation is already running.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!Directory.Exists(path)) { MessageBox.Show("The selected directory does not exist.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } lastLoaded = path; currentDefines.Text = "Code loaded with: " + (defines.Equals(string.Empty) ? "-" : defines); sourceInfo.BeginUpdate(); sourceInfo.Nodes.Clear(); import = MemberNode.MakeNamespace(path.Substring(path.LastIndexOf('\\') + 1)); sourceInfo.Nodes.Add(import); Parser parser = new Parser(path, import, sourceInfo, defines, task); task.Run(parser.Process); }