public static CFFFileSpecification TraceFiles()
        {
            CFFFileSpecification ret = new CFFFileSpecification();

            ret.Description = "Text files";
            //
            StringBuilder extensions = new StringBuilder();

            foreach (string extn in CISource.KExtensionsTrace)
            {
                extensions.Append("*" + extn + ";");
            }

            // Remove last trailing semi-colon
            extensions.Remove(extensions.Length - 1, 1);
            ret.Extensions = extensions.ToString();
            return(ret);
        }
        public string GetSupportedCrashFileTypes()
        {
            StringBuilder ret = new StringBuilder();

            // First get a list of all supported extensions
            List <CFFFileSpecification> initialList = new List <CFFFileSpecification>();

            foreach (CFFPlugin plugin in this)
            {
                plugin.GetSupportedFileTypes(initialList);
            }

            // Identify duplicate entries and filter them out
            Dictionary <string, CFFFileSpecification> finalList = new Dictionary <string, CFFFileSpecification>();

            foreach (CFFFileSpecification entry in initialList)
            {
                if (!finalList.ContainsKey(entry.Description))
                {
                    finalList.Add(entry.Description, entry);
                }
            }

            // Convert each entry into dialog-like format list specification.
            foreach (KeyValuePair <string, CFFFileSpecification> kvp in finalList)
            {
                CFFFileSpecification spec = kvp.Value;
                //
                ret.AppendFormat("{0} ({1})|{2}", spec.Description, spec.Extensions, spec.Extensions);
                ret.Append("|");
            }

            // Remove last trailing pipe
            if (ret.Length > 0)
            {
                ret.Remove(ret.Length - 1, 1);
            }

            string finalVal = ret.ToString();

            return(finalVal);
        }