コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }