Example #1
0
        //-----------------------------------
        // ヒストリーデータの初期化
        //-----------------------------------
        private void InitHistoryData()
        {
            // ヒストリーデータがない場合のみ初期値をセット
            if (Instance.ArrayHistoryEditedFiles.Count > 0)
            {
                foreach (AppHistory data in Instance.ArrayHistoryEditedFiles)
                {
                    // どうやらXMLファイルを読んだときに空の要素が1つ作られてしまうため
                    // 最初の1つの要素の内容を精査する。
                    if (File.Exists(data.md) == true)
                    {
                        return;
                    }
                }
            }

            //初期CSSディレクトリ
            string CssDirPath = Path.Combine(AppDataPath, "css");

            Instance.ArrayHistoryEditedFiles.Clear();
            AppHistory histroy = new AppHistory();

            histroy.md  = Path.Combine(AppDataPath, "help.md");
            histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
            Instance.ArrayHistoryEditedFiles.Add(histroy);

            histroy     = new AppHistory();
            histroy.md  = Path.Combine(AppDataPath, "sample.md");
            histroy.css = Path.Combine(CssDirPath, "github.css");
            Instance.ArrayHistoryEditedFiles.Add(histroy);
        }
        //-----------------------------------
        // ヒストリーデータの初期化
        // Initialize history data
        //-----------------------------------
        private void InitHistoryData()
        {
            // ヒストリーデータがない場合のみ初期値をセット
            // Set default data when history data do no exists
            if (Instance.ArrayHistoryEditedFiles.Count > 0)
            {
                foreach (AppHistory data in Instance.ArrayHistoryEditedFiles)
                {
                    // どうやらXMLファイルを読んだときに空の要素が1つ作られてしまうため、最初の1つの要素の内容を精査する
                    // Inspect first element because blank element is created when XML file is read.
                    if (File.Exists(data.md) == true)
                    {
                        return;
                    }
                }
            }

            //初期CSSディレクトリ
            //Initial directory of CSS files.
            string CssDirPath = Path.Combine(AppDataPath, "css");

            Instance.ArrayHistoryEditedFiles.Clear();
            AppHistory histroy = new AppHistory();

            // Check culture
            if (Thread.CurrentThread.CurrentCulture.Name.StartsWith("ja") == true)
            {                   //Japanese first
                histroy     = new AppHistory();
                histroy.md  = Path.Combine(AppDataPath, "help-ja.md");
                histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
                Instance.ArrayHistoryEditedFiles.Add(histroy);

                histroy     = new AppHistory();
                histroy.md  = Path.Combine(AppDataPath, "help.md");
                histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
                Instance.ArrayHistoryEditedFiles.Add(histroy);
            }
            else
            {                   //Default English
                histroy     = new AppHistory();
                histroy.md  = Path.Combine(AppDataPath, "help.md");
                histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
                Instance.ArrayHistoryEditedFiles.Add(histroy);

                histroy     = new AppHistory();
                histroy.md  = Path.Combine(AppDataPath, "help-ja.md");
                histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
                Instance.ArrayHistoryEditedFiles.Add(histroy);
            }

            histroy     = new AppHistory();
            histroy.md  = Path.Combine(AppDataPath, "sample.md");
            histroy.css = Path.Combine(CssDirPath, "github.css");
            Instance.ArrayHistoryEditedFiles.Add(histroy);
        }
        //-----------------------------------
        // ヒストリーデータの整理(重複削除)
        // Remove history data if there is a duplicate data.
        //-----------------------------------
        public void OptimizeHistoryData()
        {
            int ArrayHistoryFilesLimit = 20;

            for (int i = 0; i < Instance.ArrayHistoryEditedFiles.Count; i++)
            {
                AppHistory HistoryData = (AppHistory)Instance.ArrayHistoryEditedFiles[i];
                for (int c = i + 1; c < Instance.ArrayHistoryEditedFiles.Count; c++)
                {
                    AppHistory item = (AppHistory)Instance.ArrayHistoryEditedFiles[c];
                    if (HistoryData.md == item.md)
                    {
                        Instance.ArrayHistoryEditedFiles.RemoveAt(c);
                    }
                }
            }
            // 制限数を超えたペアは古いものから削除する
            // Remove older data when limit of history data is over.
            if (Instance.ArrayHistoryEditedFiles.Count > ArrayHistoryFilesLimit)
            {
                Instance.ArrayHistoryEditedFiles.RemoveRange(
                    ArrayHistoryFilesLimit, Instance.ArrayHistoryEditedFiles.Count - ArrayHistoryFilesLimit - 1);
            }
        }
Example #4
0
        //-----------------------------------
        // ヒストリーデータの整理(重複削除)
        //-----------------------------------
        public void OptimizeHistoryData()
        {
            int ArrayHistoryFilesLimit = 20;

            //重複データがあれば削除する
            for (int i = 0; i < Instance.ArrayHistoryEditedFiles.Count; i++)
            {
                AppHistory HistoryData = (AppHistory)Instance.ArrayHistoryEditedFiles[i];
                for (int c = i + 1; c < Instance.ArrayHistoryEditedFiles.Count; c++)
                {
                    AppHistory item = (AppHistory)Instance.ArrayHistoryEditedFiles[c];
                    if (HistoryData.md == item.md)
                    {
                        Instance.ArrayHistoryEditedFiles.RemoveAt(c);
                    }
                }
            }
            // 制限数を超えたペアは古いものから削除する
            if (Instance.ArrayHistoryEditedFiles.Count > ArrayHistoryFilesLimit)
            {
                Instance.ArrayHistoryEditedFiles.RemoveRange(
                    ArrayHistoryFilesLimit, Instance.ArrayHistoryEditedFiles.Count - 1);
            }
        }
Example #5
0
        //----------------------------------------------------------------------
        // OpenFile [ .mdファイルを開く ]
        //----------------------------------------------------------------------
        private bool OpenFile(string FilePath, bool fOpenDialog = false)
        {
            //引数 FilePath = "" の場合は「無題」編集で開始する
            // Argument "FilePath" = "" => Start editing in 'no title'

            if (FilePath == "")
            {
                _fNoTitle = true;  // No title flag
            }
            else
            {
                _fNoTitle = false;
            }

            //-----------------------------------
            //編集中のファイルがある
            if (richTextBox1.Modified == true)
            {
                //"問い合わせ"
                //"編集中のファイルがあります。保存してから終了しますか?"
                //"Question"
                //"This file being edited. Do you wish to save before exiting?"
                DialogResult ret = MessageBox.Show(Resources.MsgSaveFileToEnd,
                Resources.DialogTitleQuestion, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                if (ret == DialogResult.Yes)
                {
                    if (SaveToEditingFile() == false)
                    {
                        //キャンセルで抜けてきた
                        //Cancel
                        return (false);
                    }
                }
                else if (ret == DialogResult.Cancel)
                {
                    return (false);
                }

                //編集履歴に残す
                //Save file path to editing history
                foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
                {
                    if (data.md == _MarkDownTextFilePath)
                    {   //いったん削除して ( delete once ... )
                        MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Remove(data);
                        break;
                    }
                }
                AppHistory HistroyData = new AppHistory();
                HistroyData.md = _MarkDownTextFilePath;
                HistroyData.css = _SelectedCssFilePath;
                MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Insert(0, HistroyData);	//先頭に挿入 ( Insert at the top )
            }

            //-----------------------------------
            //オープンダイアログ表示
            //View open file dialog
            if (fOpenDialog == true)
            {
                if (File.Exists(_MarkDownTextFilePath) == true)
                {	//編集中のファイルがあればそのディレクトリを初期フォルダーに
                    //Set parent directory of editing file to initial folder
                    openFileDialog1.InitialDirectory = Path.GetDirectoryName(_MarkDownTextFilePath);
                    //テンポラリファイルがあればここで削除
                    //Delete it if temporary file exists
                    Delete_TemporaryHtmlFilePath();
                }
                openFileDialog1.FileName = "";
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    FilePath = openFileDialog1.FileName;
                }
                else
                {
                    return (false);
                }
            }

            //編集中のファイルパスとする
            //Set this file to 'editing file' path
            _MarkDownTextFilePath = FilePath;

            //-----------------------------------
            //文字コードを調査するためにテキストファイルを開く
            //Detect encoding
            if (_fNoTitle == false)
            {
                byte[] bs;
                using (FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read))
                {
                    bs = new byte[fs.Length];
                    fs.Read(bs, 0, bs.Length);
                }
                //文字コードを取得する
                //Get charcter encoding
                _EditingFileEncoding = GetCode(bs);
            }
            else
            {
                //「無題」はデフォルトのエンコーディング
                // Set this file to default encoding in 'No title'
                _EditingFileEncoding = Encoding.UTF8;
            }

            //ステータスバーに表示
            //View in statusbar
            toolStripStatusLabelTextEncoding.Text = _EditingFileEncoding.EncodingName;
            //編集中のエンコーディングを使用する(&D)か
            //Use encoding of editing file
            if (MarkDownSharpEditor.AppSettings.Instance.HtmlEncodingOption == 0)
            {
                toolStripStatusLabelHtmlEncoding.Text = _EditingFileEncoding.EncodingName;
            }

            //-----------------------------------
            //ペアとなるCSSファイルがあるか探索してあれば適用する
            //Apply that the pair CSS file to this file exists
            foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
            {
                if (data.md == _MarkDownTextFilePath)
                {
                    if (File.Exists(data.css) == true)
                    {
                        _SelectedCssFilePath = data.css;
                        break;
                    }
                }
            }

            //選択中のCSSファイル名をステータスバーに表示
            //View selected CSS file name to stausbar
            if (File.Exists(_SelectedCssFilePath) == true)
            {
                toolStripStatusLabelCssFileName.Text = Path.GetFileName(_SelectedCssFilePath);
            }
            else
            {
                toolStripStatusLabelCssFileName.Text = Resources.toolTipCssFileName; //"CSSファイル指定なし"; ( not selected CSS file)
            }

            _fConstraintChange = true;
            richTextBox1.Clear();

            //RichEditBoxの「フォント」設定
            // richTextBox1 font name setting
            var obj = MarkDownSharpEditor.AppSettings.Instance;
            FontConverter fc = new FontConverter();
            try { richTextBox1.Font = (Font)fc.ConvertFromString(obj.FontFormat); }
            catch { }
            //RichEditBoxの「フォントカラー」設定
            // richTextBox1 font color setting
            richTextBox1.ForeColor = Color.FromArgb(obj.richEditForeColor);
            //View them in statusbar
            toolStripStatusLabelFontInfo.Text = richTextBox1.Font.Name + "," + richTextBox1.Font.Size.ToString() + "pt";

            //-----------------------------------
            //テキストファイルの読み込み
            //Read text file
            if (File.Exists(FilePath) == true)
            {
                richTextBox1.Text = File.ReadAllText(FilePath, _EditingFileEncoding);
            }
            richTextBox1.BeginUpdate();
            richTextBox1.SelectionStart = richTextBox1.Text.Length;
            richTextBox1.ScrollToCaret();
            //richTextBox1の全高さを求める
            //Get height of richTextBox1 ( for webBrowser sync )
            _richEditBoxInternalHeight = richTextBox1.VerticalPosition;
            //カーソル位置を戻す
            //Restore cursor position
            richTextBox1.SelectionStart = 0;
            richTextBox1.EndUpdate();

            //変更フラグOFF
            richTextBox1.Modified = false;

            //Undoバッファに追加
            //Add all text to undo buffer
            UndoBuffer.Clear();
            UndoBuffer.Add(richTextBox1.Rtf);
            undoCounter = UndoBuffer.Count;

            //プレビュー更新
            PreviewToBrowser();

            _fConstraintChange = false;
            FormTextChange();

            return (true);
        }
Example #6
0
        //======================================================================
        //-----------------------------------
        //「新しいファイルを開く」メニュー
        // "New file" menu
        //-----------------------------------
        private void menuNewFile_Click(object sender, EventArgs e)
        {
            if (richTextBox1.Modified == true)
            {
                //"問い合わせ"
                //"編集中のファイルがあります。保存してから新しいファイルを開きますか?"
                //"Question"
                //"This file being edited. Do you wish to save before starting new file?"
                DialogResult ret = MessageBox.Show(Resources.MsgSaveFileToNewFile,
                Resources.DialogTitleQuestion, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

                if (ret == DialogResult.Yes)
                {
                    if (SaveToEditingFile() == true)
                    {
                        _fNoTitle = false;	//無題フラグOFF
                    }
                    else
                    {
                        //キャンセルで抜けてきた
                        //Cancel
                        return;
                    }
                }
                else if (ret == DialogResult.Cancel)
                {
                    return;
                }
            }

            //前の編集していたテンポラリを削除する
            //Delete edited temporary file before
            Delete_TemporaryHtmlFilePath();

            //無題ファイルのまま編集しているのなら削除
            //Delete it if the file is no title
            if (_fNoTitle == true)
            {
                if (File.Exists(_MarkDownTextFilePath) == true)
                {
                    try
                    {
                        File.Delete(_MarkDownTextFilePath);
                    }
                    catch
                    {
                    }
                }
            }

            //編集履歴に残す
            //Add editing history
            if (File.Exists(_MarkDownTextFilePath) == true)
            {
                foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
                {
                    if (data.md == _MarkDownTextFilePath)
                    { //いったん削除して ( delete once ... )
                        MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Remove(data);
                        break;
                    }
                }
                AppHistory HistroyData = new AppHistory();
                HistroyData.md = _MarkDownTextFilePath;
                HistroyData.css = _SelectedCssFilePath;
                MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Insert(0, HistroyData);	//先頭に挿入
            }

            _fConstraintChange = true;

            //ブラウザを空白にする
            //Be blank in browser
            webBrowser1.Navigate("about:blank");

            //テンポラリファイルがあれば削除
            //Delete it if temporary file exists
            Delete_TemporaryHtmlFilePath();
            //編集中のファイル情報をクリア
            //Clear the infomation of editing file
            _MarkDownTextFilePath = "";
            //「無題」編集開始
            //Start to edit in no title
            _fNoTitle = true;
            richTextBox1.Text = "";
            richTextBox1.Modified = false;
            FormTextChange();
            _fConstraintChange = false;
        }
Example #7
0
        //----------------------------------------------------------------------
        // フォームを表示
        // View Main form
        //----------------------------------------------------------------------
        private void Form1_Shown(object sender, EventArgs e)
        {
            string DirPath = MarkDownSharpEditor.AppSettings.GetAppDataLocalPath();

            ArrayList FileArray = new ArrayList();

            //TODO: 「新しいウィンドウで開く」="/new"などの引数も含まれるので、
            //       その辺りの処理も将来的に入れる。

            //コマンドラインでファイルが投げ込まれてきている
            //Launch with arguments
            string[] cmds = System.Environment.GetCommandLineArgs();
            for (int i = 1; i < cmds.Count(); i++)
            {
                if (File.Exists(cmds[i]) == true)
                {
                    FileArray.Add(cmds[i]);
                }
            }

            try
            {
                if (FileArray.Count > 1)
                {	//"問い合わせ"
                    //"複数のファイルが読み込まれました。\n現在の設定内容でHTMLファイルへの一括変換を行いますか?
                    //「いいえ」を選択するとそのまますべてのファイル開きます。"
                    //"Question"
                    //"More than one were read.\nDo you wish to convert all files to HTML files on this options?\n
                    // if you select 'No', all files will be opend without converting."
                    DialogResult ret = MessageBox.Show(Resources.MsgConvertAllFilesToHTML,
                    Resources.DialogTitleQuestion, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);

                    if (ret == DialogResult.Yes)
                    { //一括でHTMLファイル出力
                        //Output HTML files in batch process
                        BatchOutputToHtmlFiles((String[])FileArray.ToArray(typeof(string)));
                        return;

                    }
                    else if (ret == DialogResult.Cancel)
                    {	//キャンセル
                        //Cancel
                        return;
                    }
                    else
                    {	//「いいえ」
                        // "NO" button
                        bool fOpen = false;
                        foreach (string FilePath in FileArray)
                        {	//最初のファイルだけ、このウィンドウだけ開く
                            //First file open in this window
                            if (fOpen == false)
                            {
                                richTextBox1.Modified = false;
                                OpenFile(FilePath);
                                fOpen = true;
                            }
                            else
                            {	//他の複数ファイルは順次新しいウィンドウで開く
                                //Other files open in new windows
                                System.Diagnostics.Process.Start(
                                    Application.ExecutablePath, string.Format("{0}", FilePath));
                            }
                        }
                    }
                }
                else if (FileArray.Count == 1)
                {
                    richTextBox1.Modified = false;
                    OpenFile((string)FileArray[0]);
                }
                else
                { //前に編集していたファイルがあればそれを開く
                    //Open it if there is editing file before
                    if (MarkDownSharpEditor.AppSettings.Instance.fOpenEditFileBefore == true)
                    {
                        if (MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Count > 0)
                        {
                            AppHistory EditedFilePath = new AppHistory();
                            EditedFilePath = (AppHistory)MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles[0];
                            if (File.Exists(EditedFilePath.md) == true)
                            {
                                _TemporaryHtmlFilePath = "";
                                richTextBox1.Modified = false;
                                OpenFile(EditedFilePath.md);
                                return;
                            }
                        }
                    }
                    if (_MarkDownTextFilePath == "")
                    {	//無ければ「無題」ファイル
                        // "No title" if no file exists
                        richTextBox1.Modified = false;
                        OpenFile("");
                    }
                }
            }
            finally
            {
                _fConstraintChange = false;
                //SyntaxHighlighter
                if (backgroundWorker2.IsBusy == false)
                {
                    //backgroundWorker2.WorkerReportsProgress = true;
                    backgroundWorker2.RunWorkerAsync(richTextBox1.Text);
                }
                richTextBox1.Modified = false;
                //フォームタイトル更新 / Refresh form caption
                FormTextChange();
            }
        }
Example #8
0
        //----------------------------------------------------------------------
        // フォームを表示
        //----------------------------------------------------------------------
        private void Form1_Shown(object sender, EventArgs e)
        {
            string DirPath = MarkDownSharpEditor.AppSettings.GetAppDataLocalPath();

            ArrayList FileArray = new ArrayList();

            //TODO: 「新しいウィンドウで開く」="/new"などの引数も含まれるので、
            //       その辺りの処理も将来的に入れる。

            //コマンドラインでファイルが投げ込まれてきている
            string[] cmds = System.Environment.GetCommandLineArgs();
            for ( int i = 1; i < cmds.Count(); i++ )
            {
                if (File.Exists(cmds[i]) == true)
                {
                    FileArray.Add(cmds[i]);
                }
            }

            try
            {
                if (FileArray.Count > 1)
                {
                    DialogResult ret = MessageBox.Show("複数のファイルが読み込まれました。\n" +
                                                        "現在の設定内容でHTMLファイルへの一括変換を行いますか?",
                    "問い合わせ", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);

                    if (ret == DialogResult.Yes)
                    {
                        //一括でHTMLファイル出力
                        BatchOutputToHtmlFiles((String[])FileArray.ToArray(typeof(string)));
                        return;

                    }
                    else if (ret == DialogResult.Cancel)
                    {
                        //キャンセル
                        return;
                    }
                    else
                    {	//「いいえ」
                        bool fOpen = false;
                        foreach (string FilePath in FileArray)
                        {
                            //最初のファイルだけ、このウィンドウだけ開く
                            if (fOpen == false)
                            {
                                OpenFile(FilePath);
                                fOpen = true;
                            }
                            else
                            {
                                //他の複数ファイルは順次新しいウィンドウで開く
                                System.Diagnostics.Process.Start(
                                    Application.ExecutablePath, string.Format("{0}", FilePath));
                            }
                        }
                    }
                }
                else if ( FileArray.Count == 1 )
                {
                    OpenFile((string)FileArray[0]);
                }
                else
                {
                    //前に編集していたファイルがあればそれを開く
                    if (MarkDownSharpEditor.AppSettings.Instance.fOpenEditFileBefore == true)
                    {
                        if (MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Count > 0)
                        {
                            AppHistory EditedFilePath = new AppHistory();
                            EditedFilePath = (AppHistory)MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles[0];
                            if (File.Exists(EditedFilePath.md) == true)
                            {
                                TemporaryHtmlFilePath = "";
                                OpenFile(EditedFilePath.md);
                                return;
                            }
                        }
                    }
                    if (MarkDownTextFilePath == "")
                    {
                        //無ければ「無題」ファイル
                        OpenFile(CreateNoTitleFilePath());
                    }
                }
            }
            finally
            {
                fConstraintChange = false;
                //エディター側のSyntaxHighlighter反映
                SyntaxHightlighterWidthRegex(0);
                richTextBox1.Modified = false;
                //フォームタイトル更新
                FormTextChange();
            }
        }
Example #9
0
        //----------------------------------------------------------------------
        //フォームを閉じる前イベント
        //----------------------------------------------------------------------
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (richTextBox1.Modified == true)
            {
                DialogResult ret = MessageBox.Show("編集中のファイルがあります。保存してから終了しますか?",
                "問い合わせ", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);

                if (ret == DialogResult.Yes)
                {
                    if (SaveToEditingFile() == true )
                    {
                        fNoTitle = false;
                    }
                    else{
                        //キャンセルで抜けてきた
                        e.Cancel = true;
                        return;
                    }

                }
                else if (ret == DialogResult.Cancel)
                {
                    e.Cancel = true;
                    return;
                }
            }

            fConstraintChange = true;

            //無題ファイルのまま編集しているのなら削除
            if (fNoTitle == true)
            {
                if (File.Exists(MarkDownTextFilePath) == true)
                {
                    try
                    {
                        File.Delete(MarkDownTextFilePath);
                    }
                    catch
                    {
                    }
                }
            }

            //データバージョン
            System.Reflection.Assembly asmbly =	System.Reflection.Assembly.GetExecutingAssembly();
            System.Version ver = asmbly.GetName().Version;
            MarkDownSharpEditor.AppSettings.Instance.Version = ver.Major*1000+ver.Minor*100+ver.Build*10+ver.Revision;

            //フォーム位置・サイズ
            MarkDownSharpEditor.AppSettings.Instance.FormPos = new Point(this.Left, this.Top);
            MarkDownSharpEditor.AppSettings.Instance.FormSize = new Size(this.Width, this.Height);
            MarkDownSharpEditor.AppSettings.Instance.richEditWidth = this.richTextBox1.Width;
            FontConverter fc = new FontConverter();
            MarkDownSharpEditor.AppSettings.Instance.FontFormat = fc.ConvertToString(richTextBox1.Font);
            MarkDownSharpEditor.AppSettings.Instance.richEditForeColor = richTextBox1.ForeColor.ToArgb();

            //表示オプションなど
            MarkDownSharpEditor.AppSettings.Instance.fViewToolBar = this.menuViewToolBar.Checked;
            MarkDownSharpEditor.AppSettings.Instance.fViewStatusBar = this.menuViewStatusBar.Checked;
            MarkDownSharpEditor.AppSettings.Instance.fSplitBarWidthEvenly = this.menuViewWidthEvenly.Checked;

            if (File.Exists(MarkDownTextFilePath) == true)
            {
                //編集中のファイルパス
                foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
                {
                    if (data.md == MarkDownTextFilePath)
                    {   //いったん削除して
                        MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Remove(data);
                        break;
                    }
                }
                AppHistory HistroyData = new AppHistory();
                HistroyData.md = MarkDownTextFilePath;
                HistroyData.css = SelectedCssFilePath;
                MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Insert(0, HistroyData);	//先頭に挿入
            }

            //設定の保存
            MarkDownSharpEditor.AppSettings.Instance.SaveToXMLFile();
            //MarkDownSharpEditor.AppSettings.Instance.SaveToJsonFile();

            //ブラウザを空白にする
            webBrowser1.Navigate("about:blank");
        }
Example #10
0
        //-----------------------------------
        // TODO:ファイルのドラッグ&ドロップ
        //-----------------------------------
        private void richTextBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
        {
            string[] FileArray = (string[])e.Data.GetData(DataFormats.FileDrop, false);
            if (FileArray.Length > 1)
            {
                if (FileArray.Length > 0)
                {
                    DialogResult ret = MessageBox.Show("複数のファイルが読み込まれました。\n" +
                                                        "現在の設定内容でHTMLファイルへの一括変換を行いますか?\n"+
                                                        "「いいえ」を選択するとそのまますべてのファイル開きます。",
                    "問い合わせ", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);

                    if (ret == DialogResult.Yes)
                    {
                        //一括でHTMLファイル出力
                        BatchOutputToHtmlFiles(FileArray);
                        return;

                    }
                    else if (ret == DialogResult.Cancel)
                    {
                        //キャンセル
                        return;
                    }
                    else
                    {	//「いいえ」
                        bool fOpen = false;
                        foreach (string FilePath in FileArray)
                        {
                            //最初のファイルだけ、このウィンドウだけ開く
                            if (fOpen == false)
                            {
                                OpenFile(FilePath);
                                fOpen = true;
                            }
                            else
                            {
                                //他の複数ファイルは順次新しいウィンドウで開く
                                System.Diagnostics.Process.Start(
                                    Application.ExecutablePath, string.Format("{0}", FilePath));
                            }
                        }
                    }
                }
                else
                {
                    //前に編集していたファイルがあればそれを開く
                    if (MarkDownSharpEditor.AppSettings.Instance.fOpenEditFileBefore == true)
                    {
                        if (MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Count > 0)
                        {
                            AppHistory EditedFilePath = new AppHistory();
                            EditedFilePath = (AppHistory)MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles[0];

                            if (File.Exists(EditedFilePath.md) == true)
                            {
                                OpenFile(EditedFilePath.md);
                            }
                        }
                    }
                }
                fConstraintChange = false;
                //フォームタイトル更新
                FormTextChange();

                ArrayList ArrayFileList = new ArrayList();
                foreach (string FilePath in FileArray)
                {
                    ArrayFileList.Add(FilePath);
                }

                BatchOutputToHtmlFiles((String[])ArrayFileList.ToArray(typeof(string)));

            }
            else if ( FileArray.Count() == 1 )
            {
                //ファイルが一個の場合は編集中のウィンドウで開く
                OpenFile(FileArray[0]);
            }
        }
Example #11
0
        //======================================================================
        //-----------------------------------
        //「新しいファイルを開く」メニュー
        //-----------------------------------
        private void menuNewFile_Click(object sender, EventArgs e)
        {
            if (richTextBox1.Modified == true )
            {
                DialogResult ret = MessageBox.Show("編集中のファイルがあります。保存してから新しいファイルを開きますか?",
                "問い合わせ",  MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);

                if (ret == DialogResult.Yes)
                {
                    if (SaveToEditingFile() == true)
                    {
                        fNoTitle = false;	//無題フラグOFF
                    }
                    else
                    {
                        //キャンセルで抜けてきた
                        return;
                    }
                }
                else if (ret == DialogResult.Cancel)
                {
                    return;
                }
            }

            //前の編集していたテンポラリを削除する
            DeleteTemporaryHtmlFilePath();

            //無題ファイルのまま編集しているのなら削除
            if (fNoTitle == true)
            {
                if (File.Exists(MarkDownTextFilePath) == true)
                {
                    try
                    {
                        File.Delete(MarkDownTextFilePath);
                    }
                    catch
                    {
                    }
                }
            }

            //編集履歴に残す
            if (File.Exists(MarkDownTextFilePath) == true)
            {
                foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
                {
                    if (data.md == MarkDownTextFilePath)
                    { //いったん削除して
                        MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Remove(data);
                        break;
                    }
                }
                AppHistory HistroyData = new AppHistory();
                HistroyData.md = MarkDownTextFilePath;
                HistroyData.css = SelectedCssFilePath;
                MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Insert(0, HistroyData);	//先頭に挿入
            }

            fConstraintChange = true;

            //ブラウザを空白にする
            webBrowser1.Navigate("about:blank");
            //テンポラリファイルがあれば削除
            DeleteTemporaryHtmlFilePath();
            //編集中のファイル情報をクリア
            MarkDownTextFilePath = CreateNoTitleFilePath();

            fNoTitle = true;
            richTextBox1.Text = "";
            richTextBox1.Modified = false;
            FormTextChange();
            fConstraintChange = false;
        }
Example #12
0
        //----------------------------------------------------------------------
        // TODO: OpenFile [ .mdファイルを開く ]
        //----------------------------------------------------------------------
        private bool OpenFile(string FilePath)
        {
            //引数 FilePath = "" の場合は「無題」編集で開始する

            if (FilePath == "")
            {
                fNoTitle = true;  //無題フラグON
            }
            else
            {
                fNoTitle = false;
            }

            //-----------------------------------
            //編集中のファイルがある
            if (richTextBox1.Modified == true)
            {
                DialogResult ret = MessageBox.Show(
                    "編集中のファイルがあります。保存してか らファイルを開きますか?",
                    "問い合わせ", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

                if (ret == DialogResult.Yes)
                {
                    if (SaveToEditingFile() == false)
                    {
                        //キャンセルで抜けてきた
                        return (false);
                    }
                }
                else if (ret == DialogResult.Cancel)
                {
                    return (false);
                }

                //編集履歴に残す
                foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
                {
                    if (data.md == MarkDownTextFilePath)
                    {   //いったん削除して
                        MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Remove(data);
                        break;
                    }
                }
                AppHistory HistroyData = new AppHistory();
                HistroyData.md = MarkDownTextFilePath;
                HistroyData.css = SelectedCssFilePath;
                MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Insert(0, HistroyData);	//先頭に挿入
            }

            //-----------------------------------
            //オープンダイアログ表示
            if (fNoTitle == false && File.Exists(FilePath) == false)
            {
                if (File.Exists(MarkDownTextFilePath) == true)
                {	//編集中のファイルがあればそのディレクトリを初期フォルダーに
                    openFileDialog1.InitialDirectory = Path.GetDirectoryName(MarkDownTextFilePath);
                    //テンポラリファイルがあればここで削除
                    DeleteTemporaryHtmlFilePath();
                }
                openFileDialog1.FileName = "";
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    FilePath = openFileDialog1.FileName;
                }
                else
                {
                    return (false);
                }
            }

            //編集中のファイルパスとする
            MarkDownTextFilePath = FilePath;

            //-----------------------------------
            //文字コードを調査するためにテキストファイルを開く
            if (fNoTitle ==  false)
            {
                byte[] bs;
                using (FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read))
                {
                    bs = new byte[fs.Length];
                    fs.Read(bs, 0, bs.Length);
                }
                //文字コードを取得する
                EditingFileEncoding = GetCode(bs);
            }
            else
            {
                //「無題」はデフォルトのエンコーディング
                EditingFileEncoding = Encoding.UTF8;
            }

            //ステータスバーに表示
            toolStripStatusLabelTextEncoding.Text = EditingFileEncoding.EncodingName;
            //編集中のエンコーディングを使用する(&D)か
            if (MarkDownSharpEditor.AppSettings.Instance.HtmlEncodingOption == 0)
            {
                toolStripStatusLabelHtmlEncoding.Text = EditingFileEncoding.EncodingName;
            }

            //-----------------------------------
            //ペアとなるCSSファイルがあるか探索してあれば適用する
            foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
            {
                if (data.md == MarkDownTextFilePath)
                {
                    if (File.Exists(data.css) == true)
                    {
                        SelectedCssFilePath = data.css;
                        break;
                    }
                }
            }

            //選択中のCSSファイル名をステータスバーに表示
            if (File.Exists(SelectedCssFilePath) == true)
            {
                toolStripStatusLabelCssFileName.Text = Path.GetFileName(SelectedCssFilePath);
            }
            else
            {
                toolStripStatusLabelCssFileName.Text = "CSSファイル指定なし";
            }

            //-----------------------------------
            //RichEditBoxに表示
            fConstraintChange = true;
            richTextBox1.Clear();

            //RichEditBoxの「フォント」設定
            var obj = MarkDownSharpEditor.AppSettings.Instance;
            FontConverter fc = new FontConverter();
            try { richTextBox1.Font = (Font)fc.ConvertFromString(obj.FontFormat); }
            catch { }
            //RichEditBoxの「フォントカラー」設定
            richTextBox1.ForeColor = Color.FromArgb(obj.richEditForeColor);
            //ステータスバーに表示
            toolStripStatusLabelFontInfo.Text =	richTextBox1.Font.Name + "," + richTextBox1.Font.Size.ToString() + "pt";

            //-----------------------------------
            //テキストファイルの読み込み
            if (fNoTitle == false)
            {
                richTextBox1.Text = File.ReadAllText(FilePath, EditingFileEncoding);
            }
            richTextBox1.BeginUpdate();
            richTextBox1.SelectionStart = richTextBox1.Text.Length;
            richTextBox1.ScrollToCaret();
            //richTextBox1の全高さを求める
            richEditBoxInternalHeight = richTextBox1.VerticalPosition;
            //カーソル位置を戻す
            richTextBox1.SelectionStart = 0;
            richTextBox1.EndUpdate();

            //変更フラグOFF
            richTextBox1.Modified = false;

            //Undoバッファに追加
            undoCounter = 0;
            UndoBuffer.Clear();
            UndoBuffer.Add(richTextBox1.Text.ToString());

            //シンタックスハイライター
            SyntaxHightlighterWidthRegex();
            //プレビュー更新
            PreviewToBrowser();

            fConstraintChange = false;
            FormTextChange();

            return (true);
        }
		//-----------------------------------
		// ヒストリーデータの初期化
		// Initialize history data
		//-----------------------------------
		private void InitHistoryData()
		{
			// ヒストリーデータがない場合のみ初期値をセット
			// Set default data when history data do no exists
			if (Instance.ArrayHistoryEditedFiles.Count > 0)
			{
				foreach (AppHistory data in Instance.ArrayHistoryEditedFiles)
				{
					// どうやらXMLファイルを読んだときに空の要素が1つ作られてしまうため、最初の1つの要素の内容を精査する
					// Inspect first element because blank element is created when XML file is read. 
					if (File.Exists(data.md) == true)
					{
						return;
					}
				}
			}

			//初期CSSディレクトリ
			//Initial directory of CSS files.
			string CssDirPath = Path.Combine(AppDataPath, "css");

			Instance.ArrayHistoryEditedFiles.Clear();
			AppHistory histroy = new AppHistory();

			// Check culture
			if (Thread.CurrentThread.CurrentCulture.Name.StartsWith("ja") == true)
			{	//Japanese first
				histroy = new AppHistory();
				histroy.md = Path.Combine(AppDataPath, "help-ja.md");
				histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
				Instance.ArrayHistoryEditedFiles.Add(histroy);

				histroy = new AppHistory();
				histroy.md = Path.Combine(AppDataPath, "help.md");
				histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
				Instance.ArrayHistoryEditedFiles.Add(histroy);
			}
			else
			{	//Default English
				histroy = new AppHistory();
				histroy.md = Path.Combine(AppDataPath, "help.md");
				histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
				Instance.ArrayHistoryEditedFiles.Add(histroy);

				histroy = new AppHistory();
				histroy.md = Path.Combine(AppDataPath, "help-ja.md");
				histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
				Instance.ArrayHistoryEditedFiles.Add(histroy);
			}

			histroy = new AppHistory();
			histroy.md = Path.Combine(AppDataPath, "sample.md");
			histroy.css = Path.Combine(CssDirPath, "github.css");
			Instance.ArrayHistoryEditedFiles.Add(histroy);

		}
Example #14
0
        //-----------------------------------
        // ヒストリーデータの初期化
        //-----------------------------------
        private void InitHistoryData()
        {
            // ヒストリーデータがない場合のみ初期値をセット
            if (Instance.ArrayHistoryEditedFiles.Count > 0)
            {
                foreach (AppHistory data in Instance.ArrayHistoryEditedFiles)
                {
                    // どうやらXMLファイルを読んだときに空の要素が1つ作られてしまうため
                    // 最初の1つの要素の内容を精査する。
                    if (File.Exists(data.md) == true)
                    {
                        return;
                    }
                }
            }

            //初期CSSディレクトリ
            string CssDirPath = Path.Combine(AppDataPath, "css");

            Instance.ArrayHistoryEditedFiles.Clear();
            AppHistory histroy = new AppHistory();
            histroy.md = Path.Combine(AppDataPath, "help.md");
            histroy.css = Path.Combine(CssDirPath, "hibara.org.css");
            Instance.ArrayHistoryEditedFiles.Add(histroy);

            histroy = new AppHistory();
            histroy.md = Path.Combine(AppDataPath, "sample.md");
            histroy.css = Path.Combine(CssDirPath, "github.css");
            Instance.ArrayHistoryEditedFiles.Add(histroy);
        }
Example #15
0
        //-----------------------------------
        // richTextBox1 Drag and Drop event
        //-----------------------------------
        private void richTextBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
        {
            string[] FileArray = (string[])e.Data.GetData(DataFormats.FileDrop, false);
            if (FileArray.Length > 1)
            {
                if (FileArray.Length > 0)
                {
                    //"問い合わせ"
                    //"複数のファイルが読み込まれました。\n現在の設定内容でHTMLファイルへの一括変換を行いますか?
                    //「いいえ」を選択するとそのまますべてのファイル開きます。"
                    //"Question"
                    //"More than one were read.\nDo you wish to convert all files to HTML files on this options?\n
                    // if you select 'No', all files will be opend without converting."
                    DialogResult ret = MessageBox.Show("MsgConvertAllFilesToHTML",
                    Resources.DialogTitleQuestion, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);

                    if (ret == DialogResult.Yes)
                    {
                        //一括でHTMLファイル出力
                        //Output HTML files in batch process
                        BatchOutputToHtmlFiles(FileArray);
                        return;

                    }
                    else if (ret == DialogResult.Cancel)
                    {
                        //キャンセル
                        //Cancel
                        return;
                    }
                    else
                    {	//「いいえ」
                        // "No" button
                        bool fOpen = false;
                        foreach (string FilePath in FileArray)
                        {
                            //最初のファイルだけ、このウィンドウだけ開く
                            //First file open in this window
                            if (fOpen == false)
                            {
                                OpenFile(FilePath);
                                fOpen = true;
                            }
                            else
                            {
                                //他の複数ファイルは順次新しいウィンドウで開く
                                //Other files open in new windows
                                System.Diagnostics.Process.Start(
                                    Application.ExecutablePath, string.Format("{0}", FilePath));
                            }
                        }
                    }
                }
                else
                {
                    //前に編集していたファイルがあればそれを開く
                    //Open it if there is editing file before
                    if (MarkDownSharpEditor.AppSettings.Instance.fOpenEditFileBefore == true)
                    {
                        if (MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Count > 0)
                        {
                            AppHistory EditedFilePath = new AppHistory();
                            EditedFilePath = (AppHistory)MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles[0];

                            if (File.Exists(EditedFilePath.md) == true)
                            {
                                OpenFile(EditedFilePath.md);
                            }
                        }
                    }
                }
                _fConstraintChange = false;
                //フォームタイトル更新
                //Refresh form caption
                FormTextChange();

                ArrayList ArrayFileList = new ArrayList();
                foreach (string FilePath in FileArray)
                {
                    ArrayFileList.Add(FilePath);
                }

                BatchOutputToHtmlFiles((String[])ArrayFileList.ToArray(typeof(string)));

            }
            else if (FileArray.Count() == 1)
            {
                //ファイルが一個の場合は編集中のウィンドウで開く
                //Open it in this window if file is one
                OpenFile(FileArray[0]);
            }
        }
Example #16
0
        //----------------------------------------------------------------------
        // Form Closing event
        //----------------------------------------------------------------------
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (richTextBox1.Modified == true)
            {
                //"問い合わせ"
                //"編集中のファイルがあります。保存してから終了しますか?"
                //"Question"
                //"This file being edited. Do you wish to save before exiting?"
                DialogResult ret = MessageBox.Show(Resources.MsgSaveFileToEnd,
                Resources.DialogTitleQuestion, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

                if (ret == DialogResult.Yes)
                {
                    if (SaveToEditingFile() == true)
                    {
                        _fNoTitle = false;
                    }
                    else
                    {
                        //キャンセルで抜けてきた
                        //user cancel
                        e.Cancel = true;
                        return;
                    }
                }
                else if (ret == DialogResult.Cancel)
                {
                    e.Cancel = true;
                    return;
                }
            }

            _fConstraintChange = true;

            //無題ファイルのまま編集しているのなら削除
            //Delete file if the file is no title
            if (_fNoTitle == true)
            {
                if (File.Exists(_MarkDownTextFilePath) == true)
                {
                    try
                    {
                        File.Delete(_MarkDownTextFilePath);
                    }
                    catch
                    {
                    }
                }
            }

            //データバージョン
            //Data version
            System.Reflection.Assembly asmbly = System.Reflection.Assembly.GetExecutingAssembly();
            System.Version ver = asmbly.GetName().Version;
            MarkDownSharpEditor.AppSettings.Instance.Version = ver.Major * 1000 + ver.Minor * 100 + ver.Build * 10 + ver.Revision;

            //フォーム位置・サイズ ( Form position & size )
            if (this.WindowState == FormWindowState.Minimized)
            {	//最小化 ( Minimize )
                MarkDownSharpEditor.AppSettings.Instance.FormState = 1;
                //一時記憶していた位置・サイズを保存 ( Save temporary position & size value )
                MarkDownSharpEditor.AppSettings.Instance.FormPos = new Point(_preFormPos.X, _preFormPos.Y);
                MarkDownSharpEditor.AppSettings.Instance.FormSize = new Size(_preFormSize.Width, _preFormSize.Height);
            }
            else if (this.WindowState == FormWindowState.Maximized)
            {	//最大化 ( Maximize )
                MarkDownSharpEditor.AppSettings.Instance.FormState = 2;
                //一時記憶していた位置・サイズを保存 ( Save temporary position & size value )
                MarkDownSharpEditor.AppSettings.Instance.FormPos = new Point(_preFormPos.X, _preFormPos.Y);
                MarkDownSharpEditor.AppSettings.Instance.FormSize = new Size(_preFormSize.Width, _preFormSize.Height);
            }
            else
            {	//通常 ( Normal window )
                MarkDownSharpEditor.AppSettings.Instance.FormState = 0;
                MarkDownSharpEditor.AppSettings.Instance.FormPos = new Point(this.Left, this.Top);
                MarkDownSharpEditor.AppSettings.Instance.FormSize = new Size(this.Width, this.Height);
            }

            MarkDownSharpEditor.AppSettings.Instance.richEditWidth = this.richTextBox1.Width;
            FontConverter fc = new FontConverter();
            MarkDownSharpEditor.AppSettings.Instance.FontFormat = fc.ConvertToString(richTextBox1.Font);
            MarkDownSharpEditor.AppSettings.Instance.richEditForeColor = richTextBox1.ForeColor.ToArgb();

            //表示オプションなど
            //Save view options etc
            MarkDownSharpEditor.AppSettings.Instance.fViewToolBar = this.menuViewToolBar.Checked;
            MarkDownSharpEditor.AppSettings.Instance.fViewStatusBar = this.menuViewStatusBar.Checked;
            MarkDownSharpEditor.AppSettings.Instance.fSplitBarWidthEvenly = this.menuViewWidthEvenly.Checked;

            //検索オプション
            //Save search options
            MarkDownSharpEditor.AppSettings.Instance.fSearchOptionIgnoreCase = chkOptionCase.Checked ? false : true;

            if (File.Exists(_MarkDownTextFilePath) == true)
            {
                //編集中のファイルパス
                //Save editing file path
                foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
                {
                    if (data.md == _MarkDownTextFilePath)
                    { //いったん削除して ( delete once ... )
                        MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Remove(data);
                        break;
                    }
                }
                AppHistory HistroyData = new AppHistory();
                HistroyData.md = _MarkDownTextFilePath;
                HistroyData.css = _SelectedCssFilePath;
                MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Insert(0, HistroyData);	//先頭に挿入 ( Insert at the top )
            }

            //設定の保存
            //Save settings
            MarkDownSharpEditor.AppSettings.Instance.SaveToXMLFile();
            //MarkDownSharpEditor.AppSettings.Instance.SaveToJsonFile();

            timer1.Enabled = false;

            //webBrowser1.Navigate("about:blank");
            //クリック音対策
            //Constraint click sounds
            if (webBrowser1.Document != null)
            {
                webBrowser1.Document.OpenNew(true);
                webBrowser1.Document.Write("");
            }
        }
Example #17
0
        //----------------------------------------------------------------------
        // TODO: .mdファイルを開く(OpenFile)
        //----------------------------------------------------------------------
        private bool OpenFile(string FilePath)
        {
            if (richTextBox1.Modified == true)
            {
                DialogResult ret = MessageBox.Show(
                    "編集中のファイルがあります。保存してか らファイルを開きますか?",
                    "問い合わせ", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

                if (ret == DialogResult.Yes)
                {
                    if (SaveToEditingFile() == false)
                    {
                        //キャンセルで抜けてきた
                        return (false);
                    }
                }
                else if (ret == DialogResult.Cancel)
                {
                    return (false);
                }

                //編集履歴に残す
                foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
                {
                    if (data.md == MarkDownTextFilePath)
                    {   //いったん削除して
                        MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Remove(data);
                        break;
                    }
                }
                AppHistory HistroyData = new AppHistory();
                HistroyData.md = MarkDownTextFilePath;
                HistroyData.css = SelectedCssFilePath;
                MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles.Insert(0, HistroyData);	//先頭に挿入
            }

            //ファイル名指定で来ている(ドラッグ&ドロップされた等)
            if (File.Exists(FilePath) == true)
            {
            }
            else
            {
                //オープンダイアログ表示
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    FilePath = openFileDialog1.FileName;
                }
                else
                {
                    return (false);
                }
            }

            //テンポラリファイルがあればここで削除
            DeleteTemporaryHtmlFilePath();

            //テキストファイルを開く
            byte[] bs;
            using (FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read))
            {
                bs = new byte[fs.Length];
                fs.Read(bs, 0, bs.Length);
            }

            //文字コードを取得する
            EditingFileEncoding = GetCode(bs);

            //ステータスバーに表示
            toolStripStatusLabelTextEncoding.Text = EditingFileEncoding.EncodingName;

            //編集中のエンコーディングを使用する(&D)か
            if (MarkDownSharpEditor.AppSettings.Instance.HtmlEncodingOption == 0)
            {
                toolStripStatusLabelHtmlEncoding.Text = EditingFileEncoding.EncodingName;
            }

            fConstraintChange = true;
            MarkDownTextFilePath = FilePath;	//編集中のファイルパスとする
            fNoTitle = false;                   //無題フラグOFF

            //ペアとなるCSSファイルがあるか探索してあれば適用する
            foreach (AppHistory data in MarkDownSharpEditor.AppSettings.Instance.ArrayHistoryEditedFiles)
            {
                if (data.md == MarkDownTextFilePath)
                {
                    if (File.Exists(data.css) == true)
                    {
                        SelectedCssFilePath = data.css;
                        break;
                    }
                }

            }

            //選択中のCSSファイル名をステータスバーに表示
            if (File.Exists(SelectedCssFilePath) == true)
            {
                toolStripStatusLabelCssFileName.Text = Path.GetFileName(SelectedCssFilePath);
            }
            else
            {
                toolStripStatusLabelCssFileName.Text = "CSSファイル指定なし";
            }

            //RichEditBoxに表示
            fConstraintChange = true;
            richTextBox1.Clear();

            //RichEditBoxの「フォント」設定
            var obj = MarkDownSharpEditor.AppSettings.Instance;
            FontConverter fc = new FontConverter();
            try { richTextBox1.Font = (Font)fc.ConvertFromString(obj.FontFormat); }
            catch { }
            //RichEditBoxの「フォントカラー」設定
            richTextBox1.ForeColor = Color.FromArgb(obj.richEditForeColor);
            //ステータスバーに表示
            toolStripStatusLabelFontInfo.Text =	richTextBox1.Font.Name + "," + richTextBox1.Font.Size.ToString() + "pt";

            //テキストファイルの読み込み
            richTextBox1.Text = File.ReadAllText(FilePath, EditingFileEncoding);
            richTextBox1.Modified = false;

            //Undoバッファに追加
            undoCount = 0;
            UndoBuffer.Clear();
            UndoBuffer.Add(richTextBox1.Text.ToString());

            fConstraintChange = false;
            FormTextChange();

            //シンタックスハイライター
            SyntaxHightlighterWidthRegex();

            //PreviewToBrowser();
            if (timer1.Enabled == false)
            {
                timer1.Enabled = true;
            }

            return (true);
        }