示例#1
0
文件: MainForm.cs 项目: DerXu/TeX2img
 public static void ImportImageFile(string path, out string preamble, out string body)
 {
     preamble = null; body = null;
     try {
         var text = TeXSource.ReadEmbededSource(path);
         if (text != null)
         {
             using (var sr = new StringReader(text)) {
                 if (!TeXSource.ParseTeXSourceFile(sr, out preamble, out body))
                 {
                     MessageBox.Show(Properties.Resources.ANALYZESOURCEERROR, "TeX2img");
                 }
             }
         }
         else
         {
             throw new IOException();
         }
     }
     catch (NotImplementedException) {
         MessageBox.Show(Properties.Resources.EMBED_IS_ONLY_NTFS);
     }
     catch (Exception) {
         if (File.Exists(path))
         {
             MessageBox.Show(String.Format(Properties.Resources.NO_EMBEDDED_SOURCE, path), "TeX2img");
         }
         else
         {
             MessageBox.Show(String.Format(Properties.Resources.FAIL_OPEN, path), "TeX2img");
         }
     }
 }
示例#2
0
文件: MainForm.cs 项目: DerXu/TeX2img
        public void ImportFile(string path)
        {
            string preamble, body;

            ImportFile(path, out preamble, out body);
            if (preamble != null)
            {
                myPreambleForm.PreambleTextBox.Text = TeXSource.ChangeReturnCode(preamble);
            }
            if (body != null)
            {
                sourceTextBox.Text = TeXSource.ChangeReturnCode(body);
            }
        }
示例#3
0
文件: MainForm.cs 项目: DerXu/TeX2img
 private void ExportToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (TeXsourceSaveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
     {
         var encoding = Converter.GetInputEncoding();
         if (encoding.CodePage == Encoding.UTF8.CodePage)
         {
             encoding = new System.Text.UTF8Encoding(false);
         }
         try {
             using (var file = new StreamWriter(TeXsourceSaveFileDialog.FileName, false, encoding)) {
                 TeXSource.WriteTeXSourceFile(file, myPreambleForm.PreambleTextBox.Text, sourceTextBox.Text);
             }
         }
         catch (UnauthorizedAccessException) {
             MessageBox.Show(String.Format(Properties.Resources.AUTHORIZEDERROR, TeXsourceSaveFileDialog.FileName));
         }
     }
 }
示例#4
0
文件: MainForm.cs 项目: DerXu/TeX2img
        public static void ImportTeXFile(string path, out string preamble, out string body)
        {
            preamble = null; body = null;
            var extension = Path.GetExtension(path).ToLower();

            byte[] buf;
            using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read)) {
                buf = new byte[fs.Length];
                fs.Read(buf, 0, (int)fs.Length);
            }

            var  GuessedEncoding = KanjiEncoding.CheckBOM(buf);
            bool bom             = false;

            if (GuessedEncoding != null)
            {
                bom = true;
                buf = KanjiEncoding.DeleteBOM(buf, GuessedEncoding);
            }
            else
            {
                var guessed = KanjiEncoding.GuessKajiEncoding(buf);
                if (guessed.Length == 0)
                {
                    GuessedEncoding = null;
                }
                else
                {
                    GuessedEncoding = guessed[0];
                }
            }
            Encoding encoding;

            switch (Properties.Settings.Default.encode)
            {
            case "euc": encoding = Encoding.GetEncoding("euc-jp"); break;

            case "jis": encoding = Encoding.GetEncoding("iso-2022-jp"); break;

            case "utf8": encoding = Encoding.UTF8; break;

            case "sjis": encoding = Encoding.GetEncoding("shift_jis"); break;

            case "_utf8":
                if (GuessedEncoding != null)
                {
                    encoding = GuessedEncoding;
                }
                else
                {
                    encoding = Encoding.UTF8;
                }
                break;

            case "_sjis":
            default:
                if (GuessedEncoding != null)
                {
                    encoding = GuessedEncoding;
                }
                else
                {
                    encoding = Encoding.GetEncoding("shift_jis");
                }
                break;
            }
            if (encoding.CodePage != GuessedEncoding.CodePage)
            {
                if (bom || MessageBox.Show(String.Format(Properties.Resources.CHECK_ENCODEMSG, encoding.EncodingName, GuessedEncoding.EncodingName, GuessedEncoding.EncodingName), "TeX2img", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                {
                    encoding = GuessedEncoding;
                }
            }
            using (var sr = new StringReader(encoding.GetString(buf))) {
                if (!TeXSource.ParseTeXSourceFile(sr, out preamble, out body))
                {
                    MessageBox.Show(Properties.Resources.ANALYZESOURCEERROR, "TeX2img");
                }
            }
        }
示例#5
0
文件: MainForm.cs 项目: DerXu/TeX2img
        Converter converter = null;// 実行中でなければnull
        private void convertWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            Properties.Settings.SetCurrentLanguage();
            try {
                Directory.CreateDirectory(Path.GetTempPath());
            }
            catch (Exception) {
                MessageBox.Show(String.Format(Properties.Resources.FAIL_TMPFOLDER, Path.GetTempPath()));
                return;
            }

            if (FirstFiles != null)
            {
                for (int i = 0; i < FirstFiles.Count / 2; ++i)
                {
                    string file = FirstFiles[2 * i];
                    string workdir;
                    if (Properties.Settings.Default.workingDirectory == "file")
                    {
                        workdir = Path.GetDirectoryName(file);
                    }
                    else if (Properties.Settings.Default.workingDirectory == "current")
                    {
                        workdir = Directory.GetCurrentDirectory();
                    }
                    else
                    {
                        workdir = Path.GetTempPath();
                    }
                    string tmppath;
                    try {
                        string inputextension = Path.GetExtension(file);
                        tmppath = Path.Combine(workdir, TempFilesDeleter.GetTempFileName(inputextension));
                        File.Delete(tmppath);
                        File.Copy(file, tmppath, true);
                    }
                    catch (Exception) {
                        MessageBox.Show(String.Format(Properties.Resources.FAIL_TMPFILE, workdir));
                        continue;
                    }
                    var output = Path.GetFullPath(FirstFiles[2 * i + 1]);
                    converter = new Converter(this, tmppath, output);
                    converter.Convert();
                }
                FirstFiles = null;
                converter  = null;
                return;
            }

            try {
                string outputFilePath = outputFileNameTextBox.Text;

                if (InputFromFileRadioButton.Checked)
                {
                    string inputTeXFilePath = inputFileNameTextBox.Text;
                    if (!File.Exists(inputTeXFilePath))
                    {
                        MessageBox.Show(String.Format(Properties.Resources.NOTEXIST, inputTeXFilePath), Properties.Resources.ERROR, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }

                string extension = Path.GetExtension(outputFilePath).ToLower();
                string tmpTeXFileName;
                string tmpDir;
                if (InputFromFileRadioButton.Checked)
                {
                    if (Properties.Settings.Default.workingDirectory == "file")
                    {
                        tmpDir = Path.GetDirectoryName(inputFileNameTextBox.Text);
                    }
                    else if (Properties.Settings.Default.workingDirectory == "current")
                    {
                        tmpDir = Directory.GetCurrentDirectory();
                    }
                    else
                    {
                        tmpDir = Path.GetTempPath();
                    }
                    tmpTeXFileName = TempFilesDeleter.GetTempFileName(Path.GetExtension(inputFileNameTextBox.Text), tmpDir);
                }
                else
                {
                    if (Properties.Settings.Default.workingDirectory == "current")
                    {
                        tmpDir = Directory.GetCurrentDirectory();
                    }
                    else
                    {
                        tmpDir = Path.GetTempPath();
                    }
                    tmpTeXFileName = TempFilesDeleter.GetTempFileName();
                }

                if (tmpTeXFileName == null)
                {
                    MessageBox.Show(String.Format(Properties.Resources.FAIL_TMPFILE, tmpDir));
                    return;
                }
                string tmpFileBaseName = Path.GetFileNameWithoutExtension(tmpTeXFileName);

                using (converter = new Converter(this, Path.Combine(tmpDir, tmpTeXFileName), outputFileNameTextBox.Text)) {
                    if (!converter.CheckFormat())
                    {
                        return;
                    }
                    if (!converter.CheckInputFormat())
                    {
                        return;
                    }

                    #region TeX ソースファイルの準備
                    // 外部ファイルから入力する場合はテンポラリディレクトリにコピー
                    if (InputFromFileRadioButton.Checked)
                    {
                        string inputTeXFilePath = inputFileNameTextBox.Text;
                        string tmpfile          = Path.Combine(tmpDir, tmpTeXFileName);
                        File.Copy(inputTeXFilePath, tmpfile, true);
                        // 読み取り専用の場合解除しておく(後でFile.Deleteに失敗するため)。
                        (new FileInfo(tmpfile)).Attributes = FileAttributes.Normal;
                        converter.AddInputPath(Path.GetDirectoryName(inputTeXFilePath));
                    }

                    // 直接入力の場合 tex ソースを出力
                    if (InputFromTextboxRadioButton.Checked)
                    {
                        using (StreamWriter sw = new StreamWriter(Path.Combine(tmpDir, tmpTeXFileName), false, Converter.GetInputEncoding())) {
                            try {
                                TeXSource.WriteTeXSourceFile(sw, myPreambleForm.PreambleTextBox.Text, sourceTextBox.Text);
                            }
                            catch { }
                        }
                    }
                    #endregion

                    if (converter.Convert())
                    {
                        if (Properties.Settings.Default.setFileToClipBoard)
                        {
                            if (converter.OutputFileNames.Count > 0)
                            {
                                Invoke(new Action(() => {
                                    var flist = new System.Collections.Specialized.StringCollection();
                                    foreach (var f in converter.OutputFileNames)
                                    {
                                        flist.Add(f);
                                    }
                                    Clipboard.SetFileDropList(flist);
                                }));
                            }
                        }
                    }
                }
            }
            finally {
                converter = null;
            }
        }