static bool ParseFileTemplates(DirectoryInfo folder, out TreeNode node) { var files = folder.GetFiles(); node = null; if (files.Length == 0) { return(false); } List <CodeTemplateInfo> list = new List <CodeTemplateInfo>(2); List <TreeNode> listNodes = new List <TreeNode>(2); foreach (DirectoryInfo fold in folder.GetDirectories()) { TreeNode n; if (ParseFileTemplates(fold, out n)) { listNodes.Add(n); } } foreach (var file in files) { XmlDocument xml = new XmlDocument(); xml.Load(file.FullName); CodeTemplateInfo codeTemplateInfo = new CodeTemplateInfo(); foreach (XmlNode i in xml.ChildNodes[1].ChildNodes) { string name = i.Name.ToLower(); if (name == "ex") { codeTemplateInfo.ex = i.InnerText; } else if (name == "type") { codeTemplateInfo.type = i.InnerText; } else if (name == "descr") { codeTemplateInfo.desct = i.InnerText; } else if (name == "code") { codeTemplateInfo.code = i.InnerText; } } codeTemplateInfo.fileName = file.Name; list.Add(codeTemplateInfo); } node = new TreeNode(folder.Name); node.Nodes.AddRange(listNodes.ToArray()); node.Tag = list; return(true); }
void CreateTab(string pathArg, CodeTemplateInfo codeTemplateInfo) { if (IsOpened(pathArg)) { return; } TabCodeInfo codeInfo = new TabCodeInfo(pathArg, codeTemplateInfo); codeInfo.tab.TextChanged += delegate(object s, System.EventArgs args) { AddOrRemAsteriksToName(); void AddOrRemAsteriksToName() { if (tabControl.SelectedIndex != -1) { if (tabCodeInfo[tabControl.SelectedIndex].name[tabCodeInfo[tabControl.SelectedIndex].name.Length - 1] != '*') { tabCodeInfo[tabControl.SelectedIndex].name += "*"; tabCodeInfo[tabControl.SelectedIndex].isSaved = false; } } SetTabTextToRichBoxNames(); } }; tabCodeInfo.Add(codeInfo); TreeNode solutionNode = new TreeNode(codeInfo.name) { Tag = codeInfo }; solutionNode.Tag = codeInfo; codeInfo.solutionExprorerNode = solutionNode; CrateTabInTAbControl(codeInfo); tabControl.SelectedIndex = tabControl.TabCount - 1; Singletones.rightWindow.Explorer.Nodes.Add(solutionNode); codeInfo.syntaxChecker?.HighlightText(codeInfo.tab); }
public FileCreator() { InitializeComponent(); foreach (TreeNode i in treeNodeInstalled.Nodes) { treeView1.Nodes.Add(i); } treeView1.AfterSelect += delegate(object send, TreeViewEventArgs args) { listView.Items.Clear(); if (args.Node.Tag is List <CodeTemplateInfo> ) { List <CodeTemplateInfo> info = args.Node.Tag as List <CodeTemplateInfo>; foreach (var i in info) { this.listView.Items.Add(new ListViewItem(i.fileName.Substring(0, i.fileName.LastIndexOf('.'))) { Tag = i }); } } if (textBox1.Text != "") { textBox1.Text = ""; } button1.Enabled = false; }; listView.SelectedIndexChanged += delegate(object sender, EventArgs ar) { if ((sender as ListView).SelectedItems.Count != 0) { CodeTemplateInfo i = ((sender as ListView).SelectedItems[0].Tag as CodeTemplateInfo); textBox1.Text = "Type: " + i.type + Environment.NewLine + Environment.NewLine + "Description: " + i.desct; button1.Enabled = true; } }; Reload(); }
public TabCodeInfo(string Path, CodeTemplateInfo codeTemplateInfo) { SetTabWidth(tab, Singletones.settings.TabLength); isDefault = false; tab.AutoWordSelection = false; tab.BackColor = Singletones.settings.DefaultBackgroundText; tab.ForeColor = Singletones.settings.DefaultForeground; if (Path != null) { isNew = false; isSaved = true; path = Path; name = Path.Substring(Path.LastIndexOf('\\') + 1); ReadLinkedFile(); } else { isNew = true; isSaved = false; path = name = "New File"; } if (codeTemplateInfo != null) { name = "New Code." + codeTemplateInfo.ex; tab.Text = codeTemplateInfo.code; extensions = codeTemplateInfo.ex + " file" + "|*." + codeTemplateInfo.ex; isDefault = true; string standartText = tab.Text; tab.KeyUp += delegate(object sender, KeyEventArgs args) { if (!(args.KeyCode == Keys.Space || args.KeyCode == Keys.Tab || args.KeyCode == Keys.Enter || args.KeyCode == Keys.Up || args.KeyCode == Keys.Left || args.KeyCode == Keys.Right || args.KeyCode == Keys.Down || (args.KeyCode == Keys.C && args.Control) || (args.KeyCode == Keys.X && args.Control) || args.KeyCode == Keys.ShiftKey || args.KeyCode == Keys.ControlKey)) { if (isDefault && standartText != tab.Text) { isDefault = false; } else if (!isDefault && standartText == tab.Text) { isDefault = true; } } }; } if (name.Substring(name.LastIndexOf('.') + 1) == "cs") { syntaxChecker = Singletones.syntaxChekers.CSharp; } if (syntaxChecker != null) { tab.KeyUp += delegate(object sender, KeyEventArgs args) { if (args.KeyCode == Keys.V && args.Control) { syntaxChecker.HighlightText(tab); return; } if (args.KeyCode == Keys.Up || args.KeyCode == Keys.Left || args.KeyCode == Keys.Right || args.KeyCode == Keys.Down || (args.KeyCode == Keys.C && args.Control) || (args.KeyCode == Keys.X && args.Control) || args.KeyCode == Keys.ShiftKey || args.KeyCode == Keys.ControlKey) { return; } //Singletones.codeStudioMain.Text = (args.KeyData.ToString() + " :: " + KeyToChar(args).ToString()); bool isSep = false; foreach (var i in syntaxChecker.separators) { if (KeyToChar(args) == i) { isSep = true; break; } } if (!isSep) { syntaxChecker.HighlightThisLine(tab); } else { int SELECTION_START = tab.SelectionStart, SELECTION_LENGTH = tab.SelectionLength; tab.SelectionStart -= 1; tab.SelectionLength = 1; if (tab.SelectedText.IndexOfAny(syntaxChecker.separators) != -1) { syntaxChecker.HighlightThisLine(tab); } tab.SelectionStart = SELECTION_START; tab.SelectionLength = SELECTION_LENGTH; ++tab.SelectionStart; tab.SelectionLength = 1; //if (tab.SelectedText.IndexOfAny(syntaxChecker.separators) != -1) { tab.SelectionLength = 0; syntaxChecker.HighlightThisLine(tab); //} tab.SelectionStart = SELECTION_START; tab.SelectionLength = SELECTION_LENGTH; } }; } var EvenSymbols1 = new char[] { '[', '{', '(', '\"', '\'' }; var EvenSymbols2 = new char[] { ']', '}', ')', '\"', '\'' }; bool prevIsEven = false; char prevEven = '\0'; byte prevEvenId = 0; tab.KeyDown += delegate(object sender, KeyEventArgs args) { if (args.KeyCode == Keys.ShiftKey || args.KeyCode == Keys.ControlKey) { return; } if (prevIsEven) { if (args.KeyCode == Keys.Back) { tab.SelectionLength = 1; tab.SelectedText = ""; if (prevEven == '{') { tab.SelectionLength = 1; tab.SelectedText = ""; } tab.SelectionLength = 0; } if (KeyToChar(args) == EvenSymbols2[prevEvenId]) { ++tab.SelectionStart; if (prevEven == '{') { ++tab.SelectionStart; } args.Handled = true; args.SuppressKeyPress = true; } } prevIsEven = false; for (byte i = 0; i < EvenSymbols1.Length; ++i) { if (EvenSymbols1[i] == KeyToChar(args)) { prevEven = EvenSymbols1[i]; prevIsEven = true; prevEvenId = i; break; } } }; SetAutoComplete(); }
public void AddNewFile(CodeTemplateInfo codeTemplateInfo) { CreateTab(null, codeTemplateInfo); }