private void UpdateTask(ConEmuTask task, XmlDocument doc, ConEmuTask newTask) { XmlNodeList tasksNode = doc.SelectNodes("//key[@name='Tasks']/key"); XmlNode tasksRootNode = doc.SelectSingleNode("//key[@name='Tasks']"); Debug.Assert(tasksNode != null, nameof(tasksNode) + " != null"); Debug.Assert(tasksRootNode != null, nameof(tasksRootNode) + " != null"); string xpath = $"//value[@name='Name' and @type='string' and @data='{task.Name}']"; foreach (XmlNode n in tasksNode) { XmlNode targetNode = n.SelectSingleNode(xpath)?.ParentNode; if (targetNode == null) { continue; } XmlNode keyElem = CreateTaskNode(doc, newTask, targetNode); tasksRootNode.InsertAfter(keyElem, targetNode.PreviousSibling); tasksRootNode.RemoveChild(targetNode); doc.Save(view.ConEmuXmlPath); view.Refresh(); break; } }
public void LoadConEmuXmlFile(string path) { view.TasksListBox.Clear(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(path); XmlNodeList tasksNode = xmlDoc.SelectNodes("//key[@name='Tasks']/key"); Debug.Assert(tasksNode != null, "ARGGGGGGHHH NULL tasksNode"); foreach (XmlNode taskNode in tasksNode) { List <XmlNode> cmdNodes = taskNode.Where(c => c.Attributes["name"].Value.StartsWith("Cmd")).ToList(); List <XmlNode> otherNodes = taskNode.Where(c => !c.Attributes["name"].Value.StartsWith("Cmd")).ToList(); ConEmuTask task = new ConEmuTask(); otherNodes.ForEach(n => InitializeTaskFields(n, task)); cmdNodes.ForEach(c => task.AddCommand(new Command(c.Attributes["data"].Value))); tasks.Add(task); view.TasksListBox.Add(task); } }
private void BtnSave_Click(object sender, EventArgs e) { ConEmuTask modifiedTask = task.Clone(); modifiedTask.Name = tbxName.Text; modifiedTask.GuiArgs = tbxGuiArgs.Text; modifiedTask.Commands.Clear(); string[] lines = rtbCommands.Lines; string tmpCmd = String.Empty; foreach (string line in lines) { if (String.IsNullOrEmpty(line)) { continue; } tmpCmd += line.Trim() + " && "; } string cmd = tmpCmd.Remove(tmpCmd.Length - 4, 4); modifiedTask.Commands.Add(new Command(cmd)); ((MainWindow)Owner).OnChildClosed(this, new ConEmuArgs(CloseReason.Save, modifiedTask)); Close(); }
private static XmlElement CreateTaskNode(XmlDocument doc, ConEmuTask newTask, XmlNode targetNode) { Debug.Assert(targetNode.Attributes != null, "targetNode.Attributes != null"); XmlElement keyElem = doc.CreateElement("key"); keyElem.SetAttribute("name", targetNode.Attributes["name"].Value); keyElem.SetAttribute("modified", targetNode.Attributes["modified"].Value); keyElem.SetAttribute("build", targetNode.Attributes["build"].Value); // Child elements XmlElement elem1 = doc.CreateElement("value"); XmlElement elem2 = doc.CreateElement("value"); XmlElement elem3 = doc.CreateElement("value"); XmlElement elem4 = doc.CreateElement("value"); XmlElement elem5 = doc.CreateElement("value"); XmlElement elem6 = doc.CreateElement("value"); XmlElement elem7 = doc.CreateElement("value"); elem1.SetAttribute("name", "Name"); elem1.SetAttribute("type", "string"); elem1.SetAttribute("data", newTask.Name); elem2.SetAttribute("name", "Flags"); elem2.SetAttribute("type", "dword"); elem2.SetAttribute("data", newTask.Flags); elem3.SetAttribute("name", "Hotkey"); elem3.SetAttribute("type", "dword"); elem3.SetAttribute("data", newTask.Hotkey); elem4.SetAttribute("name", "GuiArgs"); elem4.SetAttribute("type", "string"); elem4.SetAttribute("data", newTask.GuiArgs); elem5.SetAttribute("name", "Cmd1"); elem5.SetAttribute("type", "string"); elem5.SetAttribute("data", newTask.Commands.First()); elem6.SetAttribute("name", "Active"); elem6.SetAttribute("type", "long"); elem6.SetAttribute("data", newTask.Active ? "1" : "0"); // > mark for active tabs. elem7.SetAttribute("name", "Count"); elem7.SetAttribute("type", "long"); elem7.SetAttribute("data", newTask.Count.ToString()); keyElem.AppendChild(elem1); keyElem.AppendChild(elem2); keyElem.AppendChild(elem3); keyElem.AppendChild(elem4); keyElem.AppendChild(elem5); keyElem.AppendChild(elem6); keyElem.AppendChild(elem7); return(keyElem); }
public void InitializeTaskFields(XmlNode other, ConEmuTask task) { Debug.Assert(other != null, "InitializeTaskFields giving XmlNode was null."); Debug.Assert(other.Attributes != null, "other.Attributes != null"); string option = other.Attributes["name"].Value; string dataOption = other.Attributes["data"].Value; switch (option) { case "Name": task.Name = dataOption; break; case "GuiArgs": task.GuiArgs = dataOption; break; case "Active": task.Active = dataOption == "1"; break; case "Count": task.Count = dataOption.ToInt32(); break; case "Hotkey": task.Hotkey = dataOption; break; case "Flags": task.Flags = dataOption; break; default: Console.WriteLine($"### Option not implemented -> {dataOption} ###"); break; } }
public EditTaskWindow(ConEmuTask task) { InitializeComponent(); this.task = task; }