コード例 #1
0
		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;
			}
		}
コード例 #2
0
        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;
            }
        }
コード例 #3
0
ファイル: CoderTest.cs プロジェクト: TechnoLingua/NeoEdit
        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]);
            }
        }
コード例 #4
0
ファイル: TextData.cs プロジェクト: xyandro/NeoEdit
		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);
		}
コード例 #5
0
 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;
 }
コード例 #6
0
        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);
        }
コード例 #7
0
        public static Result Run(Window parent, Coder.CodePage codePage)
        {
            var dialog = new EditDataSignDialog(codePage)
            {
                Owner = parent
            };

            return(dialog.ShowDialog() == true ? dialog.result : null);
        }
コード例 #8
0
        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;
        }
コード例 #9
0
		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;
		}
コード例 #10
0
		InsertFilesDialog()
		{
			InitializeComponent();

			CodePage = Coder.CodePage.AutoByBOM;

			codePage.ItemsSource = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page));
			codePage.SelectedValuePath = "Key";
			codePage.DisplayMemberPath = "Value";
		}
コード例 #11
0
        FilesInsertDialog()
        {
            InitializeComponent();

            CodePage = Coder.CodePage.AutoByBOM;

            codePage.ItemsSource       = Coder.GetAllCodePages().ToDictionary(page => page, page => Coder.GetDescription(page));
            codePage.SelectedValuePath = "Key";
            codePage.DisplayMemberPath = "Value";
        }
コード例 #12
0
        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";
        }
コード例 #13
0
        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;
        }
コード例 #14
0
        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);
        }
コード例 #15
0
        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,
                }
            }
コード例 #16
0
		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;
		}
コード例 #17
0
        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;
        }
コード例 #18
0
		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);
			}
		}
コード例 #19
0
        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));
            }
        }
コード例 #20
0
ファイル: UnicodeTest.cs プロジェクト: TechnoLingua/NeoEdit
        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);
        }
コード例 #21
0
        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);
            }
        }
コード例 #22
0
        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));
        }
コード例 #23
0
		public CodePageCheckBox() { CodePage = Coder.CodePage.None; }
コード例 #24
0
 public CodePageCheckBox()
 {
     CodePage = Coder.CodePage.None;
 }
コード例 #25
0
        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);
        }
コード例 #26
0
ファイル: TextData.cs プロジェクト: TechnoLingua/NeoEdit
 public bool CanEncode(Coder.CodePage codePage) => Coder.CanEncode(Data, codePage);
コード例 #27
0
ファイル: TextData.cs プロジェクト: TechnoLingua/NeoEdit
 public byte[] GetBytes(Coder.CodePage codePage) => Coder.StringToBytes(Data, codePage, true);
コード例 #28
0
			public CodePageItem(Coder.CodePage codePage)
			{
				CodePage = codePage;
				Content = Coder.GetDescription(CodePage);
			}
コード例 #29
0
ファイル: TextData.cs プロジェクト: xyandro/NeoEdit
		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);
		}
コード例 #30
0
        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);
        }