private async void ShowUI() { await LoadDictionary(Settings.Engine); nIcon.Icon = ConvertZZ.Properties.Resources.icon; nIcon.Visible = true; if (Settings.CheckVersion) { new Thread(new ThreadStart(() => { var versionReport = UpdateChecker.ChecktVersion(); if (versionReport != null && versionReport.HaveNew) { if (MessageBox.Show(String.Format("發現新版本{0}(目前版本:{1})\r\n前往官網下載更新?", versionReport.Newst.ToString(), versionReport.Current.ToString()), "發現更新", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { Process.Start("https://github.com/flier268/ConvertZZ/releases"); } } })).Start(); } MainWindow window = new MainWindow(); MainWindow = window; window.Show(); }
public App() { App.Reload(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ConvertZZ.json")); Task.Run(() => { foreach (string p in System.IO.Directory.GetFiles(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Dictionary"))) { ChineseConverter.Load(p); } ChineseConverter.ReloadFastReplaceDic(); DicLoaded = true; }); nIcon.Icon = ConvertZZ.Properties.Resources.icon; nIcon.Visible = true; if (Settings.CheckVersion) { Task.Run(() => { var versionReport = UpdateChecker.ChecktVersion(); if (versionReport != null && versionReport.HaveNew) { if (MessageBox.Show(String.Format("發現新版本{0}(目前版本:{1})\r\n前往官網下載更新?", versionReport.Newst.ToString(), versionReport.Current.ToString()), "發現更新", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { Process.Start("https://github.com/flier268/ConvertZZ/releases"); } } }); } }
private void Application_Startup(object sender, StartupEventArgs e) { App.Reload(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ConvertZZ.json")); Task.Run(() => { foreach (string p in System.IO.Directory.GetFiles(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Dictionary"))) { ChineseConverter.Load(p); } ChineseConverter.ReloadFastReplaceDic(); DicLoaded = true; }); ShutdownMode = ShutdownMode.OnMainWindowClose; if (e.Args.Length > 0) { Encoding[] encoding = new Encoding[2]; bool EncodingSetted = false; int ToChinese = 0; string path1 = null, path2 = null; Regex Regex_path1 = null; int VocabularyCorrection = -1; for (int i = 0; i < e.Args.Length; i++) { switch (e.Args[i]) { case "/i:ule": encoding[0] = Encoding.Unicode; EncodingSetted = true; break; case "/i:ube": encoding[0] = Encoding.BigEndianUnicode; EncodingSetted = true; break; case "/i:utf8": encoding[0] = Encoding.UTF8; EncodingSetted = true; break; case "/i:gbk": encoding[0] = Encoding.GetEncoding("GBK"); EncodingSetted = true; break; case "/i:big5": encoding[0] = Encoding.GetEncoding("Big5"); EncodingSetted = true; break; case "/o:ule": encoding[1] = Encoding.Unicode; break; case "/o:ube": encoding[1] = Encoding.BigEndianUnicode; break; case "/o:utf8": encoding[1] = Encoding.UTF8; break; case "/o:gbk": encoding[1] = Encoding.GetEncoding("GBK"); break; case "/o:big5": encoding[1] = Encoding.GetEncoding("Big5"); break; case "/f:t": ToChinese = 1; break; case "/f:s": ToChinese = 2; break; case "/f:d": ToChinese = 0; break; case "/d:t": VocabularyCorrection = 1; break; case "/d:f": VocabularyCorrection = 0; break; case "/d:s": VocabularyCorrection = -1; break; default: if (path1 == null) { path1 = e.Args[i]; Regex_path1 = new Regex(Regex.Replace(path1.Replace("*", "(.*?)"), "[\\/]", "[\\\\/]") + "$"); } else { path2 = e.Args[i]; } break; } } string s = ""; List <string> file = new List <string>(); bool ModeIsOneFile = true; if (path1.Contains("*")) { ModeIsOneFile = false; Directory.GetFiles(Path.GetDirectoryName(path1), Path.GetFileName(path1)).ToList().ForEach(x => file.Add(x) ); } else { if (File.Exists(path1)) { file.Add(path1); } else { Console.WriteLine($"檔案\"{path1}\" 不存在"); Console.Read(); Shutdown(1); return; } } if (encoding[1] == null || string.IsNullOrWhiteSpace(path1)) { Console.WriteLine("參數錯誤(目標編碼為空或來源檔案路徑未填寫)"); Console.Read(); Shutdown(1); return; } if (string.IsNullOrWhiteSpace(path2)) { path2 = path1; } if (path1.Count(x => x == '*') != path2.Count(x => x == '*') && path2.Contains("*")) { Console.WriteLine("參數錯誤(輸出路徑的萬用字元術與輸入路徑不同)"); Console.Read(); Shutdown(1); return; } if (path1.Contains("*") && !path2.Contains("*") && File.Exists(path2)) { Console.WriteLine("參數錯誤(輸入路徑具有萬用字元,但輸出路徑卻指向一個檔案)"); Console.Read(); Shutdown(1); return; } foreach (var f in file) { using (Stream stream = new FileStream(f, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (StreamReader streamReader = new StreamReader(stream, encoding[0], false)) { s = streamReader.ReadToEnd(); } } if (!EncodingSetted) { switch (EncodingAnalyzer.Analyze(s)) { case -1: encoding[0] = Encoding.Default; break; case 0: case 1: encoding[0] = Encoding.GetEncoding("BIG5"); break; case 2: case 3: encoding[0] = Encoding.GetEncoding("GBK"); break; } } s = ConvertHelper.FileConvert(s, encoding, ToChinese, VocabularyCorrection); if (ModeIsOneFile) { using (StreamWriter streamWriter = new StreamWriter(path2, false, encoding[1] == Encoding.UTF8 ? new UTF8Encoding(App.Settings.FileConvert.UnicodeAddBom) : encoding[1])) { streamWriter.Write(s); streamWriter.Flush(); } } else { var m1 = Regex_path1.Match(f); if (m1.Success) { if (path2.Contains("*")) { var array = path2.Split('*'); string @string = ""; for (int i = 0; i < array.Length; i++) { @string += array[i]; if (i + 1 <= m1.Groups.Count - 1) { @string += m1.Groups[i + 1].Value; } } Directory.CreateDirectory(Path.GetDirectoryName(@string)); using (StreamWriter streamWriter = new StreamWriter(@string, false, encoding[1] == Encoding.UTF8 ? new UTF8Encoding(App.Settings.FileConvert.UnicodeAddBom) : encoding[1])) { streamWriter.Write(s); streamWriter.Flush(); } } else { Directory.CreateDirectory(Path.GetDirectoryName(path2)); using (StreamWriter streamWriter = new StreamWriter(Path.Combine(Path.GetDirectoryName(path2), Path.GetFileName(f)), false, encoding[1] == Encoding.UTF8 ? new UTF8Encoding(App.Settings.FileConvert.UnicodeAddBom) : encoding[1])) { streamWriter.Write(s); streamWriter.Flush(); } } } } } Shutdown(1); return; } else { if ((Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1)) { MessageBox.Show("應用程式 " + Process.GetCurrentProcess().ProcessName + " 己在執行中,請先關閉舊視窗。", "警告", MessageBoxButton.OK, MessageBoxImage.Warning); Shutdown(1); return; } nIcon.Icon = ConvertZZ.Properties.Resources.icon; nIcon.Visible = true; if (Settings.CheckVersion) { Task.Run(() => { var versionReport = UpdateChecker.ChecktVersion(); if (versionReport != null && versionReport.HaveNew) { if (MessageBox.Show(String.Format("發現新版本{0}(目前版本:{1})\r\n前往官網下載更新?", versionReport.Newst.ToString(), versionReport.Current.ToString()), "發現更新", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { Process.Start("https://github.com/flier268/ConvertZZ/releases"); } } }); } MainWindow window = new MainWindow(); MainWindow = window; window.Show(); } }