CompressDataDialog(Coder.CodePage _codePage, bool compress) { InitializeComponent(); Title = compress ? "Compress Data" : "Decompress Data"; inputCodePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); inputCodePage.SelectedValuePath = "Key"; inputCodePage.DisplayMemberPath = "Value"; compressorType.ItemsSource = Enum.GetValues(typeof(Compressor.Type)).Cast<Compressor.Type>().Where(type => type != Compressor.Type.None).ToList(); outputCodePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); outputCodePage.SelectedValuePath = "Key"; outputCodePage.DisplayMemberPath = "Value"; if (compress) { InputCodePage = _codePage; CompressorType = Compressor.Type.GZip; OutputCodePage = Coder.CodePage.Hex; } else { InputCodePage = Coder.CodePage.Hex; CompressorType = Compressor.Type.GZip; OutputCodePage = _codePage; } }
EditDataCompressDialog(Coder.CodePage _codePage, bool compress) { InitializeComponent(); Title = compress ? "Compress Data" : "Decompress Data"; inputCodePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); inputCodePage.SelectedValuePath = "Key"; inputCodePage.DisplayMemberPath = "Value"; compressorType.ItemsSource = Enum.GetValues(typeof(Compressor.Type)).Cast <Compressor.Type>().Where(type => type != Compressor.Type.None).ToList(); outputCodePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); outputCodePage.SelectedValuePath = "Key"; outputCodePage.DisplayMemberPath = "Value"; if (compress) { InputCodePage = _codePage; CompressorType = Compressor.Type.GZip; OutputCodePage = Coder.CodePage.Hex; } else { InputCodePage = Coder.CodePage.Hex; CompressorType = Compressor.Type.GZip; OutputCodePage = _codePage; } }
void VerifyCoder(Coder.CodePage codePage, string value, byte[] expected, bool bom, string reverse = null) { if (reverse == null) { reverse = value; } var result = Coder.TryStringToBytes(value, codePage, bom); Assert.AreEqual(result != null, expected != null); if (expected == null) { return; } var str = Coder.BytesToString(result, codePage, bom); Assert.AreEqual(str, reverse); Assert.AreEqual(expected.Length, result.Length); for (var ctr = 0; ctr < result.Length; ctr++) { Assert.AreEqual(expected[ctr], result[ctr]); } }
TextData(string filename) { FileName = filename; file = File.OpenRead(FileName); Size = file.Length; var header = Read(0, (int)Math.Min(4, Size)); codePage = Coder.CodePageFromBOM(header); }
FilesOperationsEncodingDialog() { InitializeComponent(); inputCodePage.ItemsSource = outputCodePage.ItemsSource = Coder.GetAllCodePages().Select(codePage => Tuple.Create(codePage, Coder.GetDescription(codePage))); inputCodePage.SelectedValuePath = outputCodePage.SelectedValuePath = "Item1"; inputCodePage.DisplayMemberPath = outputCodePage.DisplayMemberPath = "Item2"; InputCodePage = Coder.CodePage.AutoByBOM; OutputCodePage = Coder.CodePage.UTF8; }
public static Result Run(Window parent, NEVariables variables, Coder.CodePage codePage) { var dialog = new FilesCreateFromExpressionsDialog(variables, codePage) { Owner = parent }; return(dialog.ShowDialog() ? dialog.result : null); }
public static Result Run(Window parent, Coder.CodePage codePage) { var dialog = new EditDataSignDialog(codePage) { Owner = parent }; return(dialog.ShowDialog() == true ? dialog.result : null); }
EditDataSignDialog(Coder.CodePage codePage) { InitializeComponent(); CodePages = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); CryptorTypes = Enum.GetValues(typeof(Cryptor.Type)).Cast <Cryptor.Type>().Where(type => type != Cryptor.Type.None).Where(type => type.SigningHashes().Any()).ToList(); CryptorType = CryptorTypes.First(); CodePage = codePage; }
ChangeEncodingDialog() { InitializeComponent(); var encodings = new List<Coder.CodePage> { Coder.CodePage.Default, Coder.CodePage.UTF8, Coder.CodePage.UTF16LE, Coder.CodePage.UTF16BE, Coder.CodePage.UTF32LE, Coder.CodePage.UTF32BE }; var encodingsList = encodings.Select(codePage => Tuple.Create(codePage, Coder.GetDescription(codePage))); outputCodePage.ItemsSource = encodingsList; outputCodePage.SelectedValuePath = "Item1"; outputCodePage.DisplayMemberPath = "Item2"; OutputCodePage = Coder.CodePage.UTF8; }
InsertFilesDialog() { InitializeComponent(); CodePage = Coder.CodePage.AutoByBOM; codePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); codePage.SelectedValuePath = "Key"; codePage.DisplayMemberPath = "Value"; }
FilesInsertDialog() { InitializeComponent(); CodePage = Coder.CodePage.AutoByBOM; codePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); codePage.SelectedValuePath = "Key"; codePage.DisplayMemberPath = "Value"; }
FilesCreateFromExpressionsDialog(NEVariables variables, Coder.CodePage defaultCodePage) { Variables = variables; InitializeComponent(); FileName = Data = "x"; CodePage = defaultCodePage; codePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); codePage.SelectedValuePath = "Key"; codePage.DisplayMemberPath = "Value"; }
EditDataHashDialog(Coder.CodePage _codePage) { InitializeComponent(); codePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); codePage.SelectedValuePath = "Key"; codePage.DisplayMemberPath = "Value"; hashType.ItemsSource = Enum.GetValues(typeof(Hasher.Type)).Cast <Hasher.Type>().Where(type => type != Hasher.Type.None).ToList(); CodePage = _codePage; HashType = Hasher.Type.SHA1; }
public static Result Run(Window parent, Coder.CodePage?codePage = null, Coder.CodePage detected = Coder.CodePage.None) { var dialog = new EncodingDialog(codePage ?? Coder.DefaultCodePage, detected) { Owner = parent }; if (!dialog.ShowDialog()) { return(null); } return(dialog.result); }
void Command_Network_Fetch(Coder.CodePage codePage = Coder.CodePage.None) { var urls = GetSelectionStrings(); var results = Task.Run(() => GetURLs(urls, codePage).Result).Result; if (results.Any(result => result.Item3)) { new Message(WindowParent) { Title = "Error", Text = $"Failed to fetch the URLs:\n{string.Join("\n", results.Where(result => result.Item3).Select(result => result.Item1))}", Options = MessageOptions.Ok, } }
EncryptDataDialog(Coder.CodePage _codePage, bool encrypt) { this.encrypt = encrypt; InitializeComponent(); Title = encrypt ? "Encrypt Data" : "Decrypt Data"; CodePages = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); CryptorTypes = Enum.GetValues(typeof(Cryptor.Type)).Cast<Cryptor.Type>().Where(type => type != Cryptor.Type.None).ToList(); CryptorType = Cryptor.Type.AES; InputCodePage = encrypt ? _codePage : Coder.CodePage.Hex; OutputCodePage = encrypt ? Coder.CodePage.Hex : _codePage; }
EditDataEncryptDialog(Coder.CodePage _codePage, bool encrypt) { this.encrypt = encrypt; InitializeComponent(); Title = encrypt ? "Encrypt Data" : "Decrypt Data"; CodePages = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); CryptorTypes = Enum.GetValues(typeof(Cryptor.Type)).Cast <Cryptor.Type>().Where(type => type != Cryptor.Type.None).ToList(); CryptorType = Cryptor.Type.AES; InputCodePage = encrypt ? _codePage : Coder.CodePage.Hex; OutputCodePage = encrypt ? Coder.CodePage.Hex : _codePage; }
EncodingDialog(Coder.CodePage _CodePage, Coder.CodePage _Detected) { InitializeComponent(); codePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); codePage.SelectedValuePath = "Key"; codePage.DisplayMemberPath = "Value"; CodePage = _CodePage; if (_Detected == Coder.CodePage.None) content.Children.Cast<UIElement>().Where(child => Grid.GetRow(child) == Grid.GetRow(setDetected)).ToList().ForEach(child => child.Visibility = Visibility.Collapsed); else { Detected = _Detected; DetectedStr = Coder.GetDescription(Detected); } }
static async Task <string> GetURL(string url, Coder.CodePage codePage = Coder.CodePage.None) { using (var client = new WebClient()) { client.Headers["User-Agent"] = "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)"; client.Encoding = Encoding.UTF8; var uri = new Uri(url); if (codePage == Coder.CodePage.None) { return(await client.DownloadStringTaskAsync(uri)); } var data = await client.DownloadDataTaskAsync(uri); return(Coder.BytesToString(data, codePage)); } }
string GetText(Coder.CodePage codePage, bool bom, Endings ending) { var text = new List <string> { "BEGIN", "Encoding: <Encoding>", "BOM: <BOM>", "Ending: <Ending>", "", "This is my example text.", "", "↖↑↗", "←↕↔↕→", "↙↓↘", "", "END", }; string result; if (ending != Endings.Mixed) { result = string.Join(GetEnding(ending), text); } else { result = ""; ending = 0; foreach (var line in text) { result += line + GetEnding(ending); if (++ending == Endings.Mixed) { ending = 0; } } } result = result.Replace("<Encoding>", codePage.ToString()).Replace("<BOM>", bom.ToString()).Replace("<Ending>", ending.ToString()); if (bom) { result = $"\ufeff{result}"; } return(result); }
EncodingDialog(Coder.CodePage _CodePage, Coder.CodePage _Detected) { InitializeComponent(); codePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page)); codePage.SelectedValuePath = "Key"; codePage.DisplayMemberPath = "Value"; CodePage = _CodePage; if (_Detected == Coder.CodePage.None) { content.Children.Cast <UIElement>().Where(child => Grid.GetRow(child) == Grid.GetRow(setDetected)).ToList().ForEach(child => child.Visibility = Visibility.Collapsed); } else { Detected = _Detected; DetectedStr = Coder.GetDescription(Detected); } }
public Window AddDiff(string fileName1 = null, string displayName1 = null, byte[] bytes1 = null, Coder.CodePage codePage1 = Coder.CodePage.AutoByBOM, ParserType contentType1 = ParserType.None, bool?modified1 = null, int?line1 = null, int?column1 = null, ShutdownData shutdownData1 = null, string fileName2 = null, string displayName2 = null, byte[] bytes2 = null, Coder.CodePage codePage2 = Coder.CodePage.AutoByBOM, ParserType contentType2 = ParserType.None, bool?modified2 = null, int?line2 = null, int?column2 = null, ShutdownData shutdownData2 = null) { var te1 = new TextEditor(fileName1, displayName1, bytes1, codePage1, contentType1, modified1, line1, column1, shutdownData1); var te2 = new TextEditor(fileName2, displayName2, bytes2, codePage2, contentType2, modified2, line2, column2, shutdownData2); return(AddDiff(te1, te2)); }
public CodePageCheckBox() { CodePage = Coder.CodePage.None; }
async Task <List <Tuple <string, string, bool> > > GetURLs(List <string> urls, Coder.CodePage codePage = Coder.CodePage.None) { var tasks = urls.Select(url => GetURL(url, codePage)).ToList(); var results = new List <Tuple <string, string, bool> >(); for (var ctr = 0; ctr < tasks.Count; ++ctr) { string data; bool error = false; try { data = await tasks[ctr]; } catch (Exception ex) { error = true; data = $"<error>{Data.DefaultEnding}"; data += $"\t<url>{urls[ctr]}</url>{Data.DefaultEnding}"; data += $"\t<data>{Data.DefaultEnding}"; for (; ex != null; ex = ex.InnerException) { data += $"\t\t{ex.Message}{Data.DefaultEnding}"; } data += $"\t</data>{Data.DefaultEnding}"; data += $"</error>{Data.DefaultEnding}"; } results.Add(Tuple.Create(urls[ctr], data, error)); } return(results); }
public bool CanEncode(Coder.CodePage codePage) => Coder.CanEncode(Data, codePage);
public byte[] GetBytes(Coder.CodePage codePage) => Coder.StringToBytes(Data, codePage, true);
public CodePageItem(Coder.CodePage codePage) { CodePage = codePage; Content = Coder.GetDescription(CodePage); }
public static void CombineFiles(string outputFile, List<string> files, Action finished) { var names = new List<string> { outputFile }; names.AddRange(files); names = names.Select(file => Path.GetFileName(file)).ToList(); MultiProgressDialog.Run("Combining files...", names, (progress, cancel) => { var fileStreams = new Dictionary<string, FileStream>(); try { Coder.CodePage? codePage = null; byte[] header = null; var fileLengths = new Dictionary<string, long>(); foreach (var file in files) { if (fileStreams.ContainsKey(file)) continue; fileStreams[file] = File.OpenRead(file); fileLengths[file] = fileStreams[file].Length; var fileHeader = Read(fileStreams[file], 0, (int)Math.Min(fileStreams[file].Length, 4)); var fileCodePage = Coder.CodePageFromBOM(fileHeader); if (codePage == null) codePage = fileCodePage; if (codePage != fileCodePage) throw new Exception("All files must have the same encoding to combine them."); if (header == null) { header = new byte[Coder.PreambleSize(fileCodePage)]; Array.Copy(fileHeader, header, header.Length); } } var buffer = new byte[65536]; long written = 0; long total = files.Select(file => fileLengths[file]).Sum() - header.Length * files.Count + header.Length; using (var output = File.Create(outputFile)) { output.Write(header, 0, header.Length); written += header.Length; for (var ctr = 0; ctr < files.Count; ++ctr) { var file = files[ctr]; long filePosition = header.Length; while (filePosition < fileLengths[file]) { if (cancel()) return; var block = (int)Math.Min(buffer.Length, fileLengths[file] - filePosition); Read(fileStreams[file], filePosition, block, buffer); filePosition += block; progress(ctr + 1, filePosition, fileLengths[file]); output.Write(buffer, 0, block); written += block; progress(0, written, total); } } } } finally { var close = fileStreams.Values.ToList(); foreach (var file in close) try { file.Dispose(); } catch { } } }, finished); }
public TextEditor Add(string fileName = null, string displayName = null, byte[] bytes = null, Coder.CodePage codePage = Coder.CodePage.AutoByBOM, ParserType contentType = ParserType.None, bool?modified = null, int?line = null, int?column = null, ShutdownData shutdownData = null, int?index = null) { var textEditor = new TextEditor(fileName, displayName, bytes, codePage, contentType, modified, line, column, shutdownData); Add(textEditor, index); return(textEditor); }