public FilterFileVersionResult FilterFileVersion(string fileName) { try { FilterFileVersionResult result = FilterFileVersionResult.NotAFilterFile; XmlDocument doc = new XmlDocument(); doc.Load(fileName); XmlNode root = doc.DocumentElement; // for v2 documentelement is filterInfo if (root.Name.ToLower() == "filterinfo") { result = FilterFileVersionResult.Version2; } else if (root.Name.ToLower() == "filters") { result = FilterFileVersionResult.Version1; } if (root.Name.ToLower() != "filters") { foreach (XmlNode node in root.ChildNodes) { if (node.Name.ToLower() == "filters") { root = node; break; } } } if (root.Name.ToLower() != "filters") { // not TextFilter filter result = FilterFileVersionResult.NotAFilterFile; } SetStatus(string.Format("FilterFileVersion: filter: {0} version: {1}", fileName, result.ToString())); return(result); } catch (Exception e) { SetStatus(string.Format("Exception: FilterFileVersion: filter: {0}, {1}", fileName, e)); return(FilterFileVersionResult.NotAFilterFile); } }
public override IFile <FilterFileItem> ReadFile(string fileName) { FilterFile filterFile = new FilterFile(); try { SetStatus("ReadFile:enter: " + fileName); filterFile.FileName = Path.GetFileName(fileName); if (Path.GetExtension(fileName).ToLower().Contains("tat")) { filterFile.ContentItems = new ObservableCollection <FilterFileItem>(ReadTatFile(fileName)); filterFile.IsNew = false; return(filterFile); } FilterFileVersionResult filterFileVersion = FilterFileVersion(fileName); if (filterFileVersion == FilterFileVersionResult.NotAFilterFile) { return(filterFile); } XmlDocument doc = new XmlDocument(); doc.Load(fileName); // see if file is readonly try { doc.Save(fileName); } catch { filterFile.IsReadOnly = true; } XmlNode root = doc.DocumentElement; // for v2 documentelement is filterInfo if (filterFileVersion != FilterFileVersionResult.Version1) { filterFile.FilterVersion = ReadStringNodeItem(root, "filterversion"); filterFile.FilterNotes = ReadStringNodeItem(root, "filternotes"); } if (root.Name.ToLower() != "filters") { foreach (XmlNode node in root.ChildNodes) { if (node.Name.ToLower() == "filters") { root = node; break; } } } filterFile.IsNew = false; filterFile.ContentItems = new ObservableCollection <FilterFileItem>(); for (int i = 0; i < root.ChildNodes.Count; i++) { FilterFileItem fileItem = new FilterFileItem(); fileItem.Count = 0; if (string.IsNullOrEmpty(ReadStringNodeChildItem(root, "backgroundcolor", i)) & string.IsNullOrEmpty(ReadStringNodeChildItem(root, "foregroundcolor", i))) { if (_FilterViewModel != null) { fileItem = SetFilterItemColors(filterFile, fileItem); } } if (!string.IsNullOrEmpty(ReadStringNodeChildItem(root, "backgroundcolor", i))) { fileItem.BackgroundColor = ReadStringNodeChildItem(root, "backgroundcolor", i); } fileItem.CaseSensitive = ReadBoolNodeChildItem(root, "casesensitive", i); fileItem.Enabled = ReadBoolNodeChildItem(root, "enabled", i); fileItem.Exclude = ReadBoolNodeChildItem(root, "exclude", i); fileItem.Regex = ReadBoolNodeChildItem(root, "regex", i); fileItem.Filterpattern = ReadStringNodeChildItem(root, "filterpattern", i); if (!string.IsNullOrEmpty(ReadStringNodeChildItem(root, "foregroundcolor", i))) { fileItem.ForegroundColor = ReadStringNodeChildItem(root, "foregroundcolor", i); } fileItem.Index = ReadIntNodeChildItem(root, "index", i); fileItem.Notes = ReadStringNodeChildItem(root, "notes", i); filterFile.ContentItems.Add(fileItem); } SetStatus("ReadFile:exit: " + fileName); return(filterFile); } catch (Exception e) { SetStatus("Fatal:Readfile:exception" + e.ToString()); return(filterFile); } }