private void CustomParameterListRefresh() { var item = TemplateNodeItemRoot?.GetAllChildren().FirstOrDefault(p => p.Name.EndsWith(".vstemplate")); if (item == null) { return; } var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(item.FileContent); var nsm = new XmlNamespaceManager(xmlDocument.NameTable); nsm.AddNamespace("x", "http://schemas.microsoft.com/developer/vstemplate/2005"); var lst = new ObservableCollection <NameValue>(); foreach (XmlNode xmlNode in xmlDocument.SelectNodes("//x:CustomParameters/x:CustomParameter", nsm)) { var nameValue = new NameValue { Name = xmlNode.SelectSingleNode("@Name", nsm).Value, Value = xmlNode.SelectSingleNode("@Value", nsm).Value }; nameValue.PropertyChanged += NameValue_PropertyChanged; lst.Add(nameValue); } CustomParameterList = lst; CustomParameterList.CollectionChanged += CustomParameterList_CollectionChanged; }
private void Watcher_Changed(object sender, FileSystemEventArgs e) { if (e.ChangeType == WatcherChangeTypes.Changed) { var nodeItem = TemplateNodeItemRoot.GetAllChildren().FirstOrDefault(p => p.FullName == e.FullPath); TemplatePreviewFileCommand.ExecuteIfCan(nodeItem); } else if (e.ChangeType == WatcherChangeTypes.Deleted) { var nodeItem = TemplateNodeItemRoot.GetAllChildren().FirstOrDefault(p => p.FullName == e.FullPath); _dispatcher.Invoke(() => TemplateNodeItemDeleteCommand.ExecuteIfCan(nodeItem)); } else if (e.ChangeType == WatcherChangeTypes.Created) { _dispatcher.Invoke(() => TemplateNodeItemAddCommand.ExecuteIfCan(e.FullPath)); } else if (e.ChangeType == WatcherChangeTypes.Renamed) { var e2 = (RenamedEventArgs)e; var nodeItem = TemplateNodeItemRoot.GetAllChildren().FirstOrDefault(p => p.FullName == e2.OldFullPath); if (nodeItem != null) { TemplateNodeItemRename(nodeItem, e2.Name, false); } } }
private void UpdateCustomParameters() { var item = TemplateNodeItemRoot?.GetAllChildren().FirstOrDefault(p => p.Name.EndsWith(".vstemplate")); if (item == null) { return; } var xmlDocument = new XmlDocument(); xmlDocument.PreserveWhitespace = true; xmlDocument.LoadXml(item.FileContent); var nsm = new XmlNamespaceManager(xmlDocument.NameTable); nsm.AddNamespace("x", "http://schemas.microsoft.com/developer/vstemplate/2005"); var lst = new ObservableCollection <NameValue>(); var cpList = xmlDocument.SelectNodes("//x:CustomParameters", nsm); XmlNode cpsNode; if (cpList.Count == 1) { cpsNode = cpList[0]; } else { cpsNode = xmlDocument.SelectSingleNode("//x:TemplateContent", nsm).AppendChild(xmlDocument.CreateNode(XmlNodeType.Element, "CustomParameters", string.Empty)); } cpsNode.RemoveAll(); foreach (var cp in CustomParameterList) { var na = xmlDocument.CreateAttribute("Name"); na.Value = cp.Name; var va = xmlDocument.CreateAttribute("Value"); va.Value = cp.Value; cpsNode.AppendChild(xmlDocument.CreateWhitespace("\n ")); var cpNode = cpsNode.AppendChild(xmlDocument.CreateNode(XmlNodeType.Element, "CustomParameter", "http://schemas.microsoft.com/developer/vstemplate/2005")); cpNode.Attributes.Append(na); cpNode.Attributes.Append(va); } cpsNode.AppendChild(xmlDocument.CreateWhitespace("\n ")); item.FileContent = xmlDocument.InnerXml; }
private void TemplateSave() { foreach (var node in TemplateNodeItemRoot.GetAllChildren()) { if (node.IsModifed) { TemplatePreviewSaveCommand.ExecuteIfCan(node); } } if (File.Exists(TemplatePath)) { File.Delete(TemplatePath); } ZipFile.CreateFromDirectory(TemplateTempDir, TemplatePath); TemplateNodeItemRoot.IsModifed = false; }
public NodeItem GetParentNodeItem(NodeItem nodeItem) { var parent = TemplateNodeItemRoot.GetAllChildren().FirstOrDefault(p => p.FullName == nodeItem.ParentFullName); if (parent == null) { if (TemplateNodeItemRoot.FullName == nodeItem.ParentFullName) { parent = TemplateNodeItemRoot; } else { return(null); } } return(parent); }
private void TemplateClose() { if (TemplateNodeItemRoot.IsModifed) { var result = MessageBox.Show("Save changes?", "Confirm", MessageBoxButton.YesNoCancel); if (result == MessageBoxResult.Yes) { TemplateSaveCommand.ExecuteIfCan(); } else if (result == MessageBoxResult.Cancel) { return; } } _watcher.EnableRaisingEvents = false; TemplateNodeItemRoot.GetAllChildren().ForEach(p => p.PropertyChanged -= NodeItem_PropertyChanged); TemplateNodeItemRoot.PropertyChanged -= NodeItem_PropertyChanged; Directory.Delete(TemplateTempDir, true); TemplateTempDir = null; TemplatePath = null; TemplateNodeItemList = null; TemplateNodeItemRoot = null; }
private void TemplateNodeItemAdd(string param) { var parentDir = Path.GetDirectoryName(param); var isDir = Directory.Exists(param); if (isDir) { if (!Directory.Exists(param)) { _watcher.EnableRaisingEvents = false; Directory.CreateDirectory(param); _watcher.EnableRaisingEvents = true; } } else { if (!File.Exists(param)) { _watcher.EnableRaisingEvents = false; File.WriteAllText(param, string.Empty); _watcher.EnableRaisingEvents = true; } } var parentNode = TemplateNodeItemRoot.FullName == parentDir ? TemplateNodeItemRoot : TemplateNodeItemRoot.GetAllChildren().Where(p => p.FullName == parentDir).Single(); parentNode.Children.Add(new NodeItem { IsDir = isDir, FullName = param, Name = Path.GetFileName(param), ParentFullName = parentNode.FullName, PreviewType = isDir ? string.Empty : GetPreviewType(param) }); }