OSDN Git Service

#32661 BGMチップが1つもない場合にエラーダイアログを出すよう修正。
[dtxmania/dtxmania.git] / DTXCreatorプロジェクト / コード / 00.全体 / Cメインフォーム.cs
index e19ef32..11c8653 100644 (file)
@@ -14,6 +14,7 @@ using DTXCreator.譜面;
 using DTXCreator.WAV_BMP_AVI;\r
 using DTXCreator.UndoRedo;\r
 using DTXCreator.オプション関連;\r
+using DTXCreator.MIDIインポート;\r
 using DTXCreator.汎用;\r
 using DTXCreator.Properties;\r
 using FDK;\r
@@ -43,13 +44,14 @@ namespace DTXCreator
                public Cチップパレット dlgチップパレット;\r
                private Cオプション管理 mgrオプション管理者 = null;\r
                private C選択モード管理 mgr選択モード管理者 = null;\r
-               private C編集モード管理 mgr編集モード管理者 = null;\r
+               internal C編集モード管理 mgr編集モード管理者 = null;\r
                internal C譜面管理 mgr譜面管理者 = null;\r
                internal CWAVリスト管理 mgrWAVリスト管理者 = null;\r
                internal CBMPリスト管理 mgrBMPリスト管理者 = null;\r
                internal CAVIリスト管理 mgrAVIリスト管理者 = null;\r
                internal CUndoRedo管理 mgrUndoRedo管理者 = null;\r
                internal Cクリップボード cbクリップボード = null;\r
+               private CMIDIインポート管理 mgrMIDIインポート管理者 = null;\r
 \r
                internal MakeTempDTX makeTempDTX = null;\r
 \r
@@ -82,7 +84,7 @@ namespace DTXCreator
                                return this.numericUpDownBPM.Value;\r
                        }\r
                }\r
-               internal int n現在選択中のWAV・BMP・AVIリストの行番号0to1294;\r
+               internal int n現在選択中のWAV_BMP_AVIリストの行番号0to1294;\r
 \r
                /// <summary>\r
                /// DTXC.exe のあるフォルダの絶対パス。\r
@@ -146,6 +148,11 @@ namespace DTXCreator
                        }\r
                }\r
 \r
+               /// <summary>\r
+               /// 最後にMIDIを読み込んだフォルダ\r
+               /// </summary>\r
+               public string strMIDIインポートフォルダ;\r
+\r
                //-----------------\r
                #endregion\r
 \r
@@ -184,6 +191,7 @@ namespace DTXCreator
                        #region [ 全体を通して必要な管理者オブジェクトを生成する。]\r
                        //-----------------\r
                        this.mgrオプション管理者 = new Cオプション管理( this );\r
+                       this.mgrMIDIインポート管理者 = new CMIDIインポート管理(this);\r
                        //-----------------\r
                        #endregion\r
 \r
@@ -358,7 +366,9 @@ namespace DTXCreator
                        \r
                        if( Directory.Exists( this.str作業フォルダ名 ) )\r
                        {\r
-                               Directory.SetCurrentDirectory( this.str作業フォルダ名 );\r
+                               //Directory.SetCurrentDirectory( this.str作業フォルダ名 );               // #35399: 2015/8/15 カレントディレクトリを変更すると、.NET4以降用にbuildしたDTXMania本体での再生に失敗するため、カレントディレクトリの変更を中止する\r
+                               // #35399: ただし作業フォルダは維持する(書き設定行は不要だが、if分岐は残す必要あり)\r
+                               // this.str作業フォルダ名 = this.appアプリ設定.LastWorkFolder;      \r
                        }\r
                        else\r
                        {\r
@@ -392,6 +402,15 @@ namespace DTXCreator
                                this.t編集モードにする();\r
                        }\r
                        #endregion\r
+                       #region [ MIDIインポートフォルダ ]\r
+                       //-----------------\r
+                       this.strMIDIインポートフォルダ = this.appアプリ設定.LastMIDIImportFolder;\r
+                       \r
+                       if( ! Directory.Exists( this.strMIDIインポートフォルダ ) )\r
+                               this.strMIDIインポートフォルダ = Directory.GetCurrentDirectory();\r
+                       //-----------------\r
+                       #endregion\r
+\r
                }\r
                private void tアプリ設定の保存()\r
                {\r
@@ -464,7 +483,12 @@ namespace DTXCreator
                                this.appアプリ設定.AddLanesInfo( c.strレーン名, c.bIsVisible );\r
                        }\r
                        #endregion\r
-\r
+                       #region [ MIDIインポートフォルダ ]\r
+                       //-----------------\r
+                       this.appアプリ設定.LastMIDIImportFolder =\r
+                               this.strMIDIインポートフォルダ;\r
+                       //-----------------\r
+                       #endregion\r
 \r
                        // 保存する。\r
 \r
@@ -482,7 +506,7 @@ namespace DTXCreator
                #endregion\r
                #region [ 新規作成 ]\r
                //-----------------\r
-               private void tシナリオ・新規作成()\r
+               public void tシナリオ_新規作成()\r
                {\r
                        // 作成前の保存確認。\r
 \r
@@ -544,6 +568,7 @@ namespace DTXCreator
                        CUndoRedo管理.bUndoRedoした直後 = true;   this.textBoxSTAGEFILE.Clear();\r
                        CUndoRedo管理.bUndoRedoした直後 = true;   this.textBoxBACKGROUND.Clear();\r
                        CUndoRedo管理.bUndoRedoした直後 = true;   this.textBoxRESULTIMAGE.Clear();\r
+                       CUndoRedo管理.bUndoRedoした直後 = true; this.check556x710BGAAVI.Checked = false;\r
                        //-----------------\r
                        #endregion\r
                        \r
@@ -558,7 +583,7 @@ namespace DTXCreator
                        this.listViewAVIリスト.Items.Clear();\r
                        this.mgrAVIリスト管理者 = new CAVIリスト管理( this, this.listViewAVIリスト );\r
 \r
-                       this.tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( 0 );\r
+                       this.tWAV_BMP_AVIリストのカーソルを全部同じ行に合わせる( 0 );\r
                        //-----------------\r
                        #endregion\r
                        \r
@@ -630,7 +655,7 @@ namespace DTXCreator
                        this.mgrUndoRedo管理者 = new CUndoRedo管理();\r
 \r
                        CUndoRedo管理.bUndoRedoした直後 = false;\r
-                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                       this.tUndoRedo用GUIの有効無効を設定する();\r
                        //-----------------\r
                        #endregion\r
 \r
@@ -668,7 +693,7 @@ namespace DTXCreator
                #endregion\r
                #region [ 開く ]\r
                //-----------------\r
-               private void tシナリオ開く()\r
+               private void tシナリオ_開く()\r
                {\r
                        // 作成前の保存確認。\r
 \r
@@ -710,7 +735,7 @@ namespace DTXCreator
                        //-----------------\r
                        #endregion\r
                }\r
-               private void tシナリオDragDropされたファイルを開く( string[] DropFiles )\r
+               private void tシナリオ_DragDropされたファイルを開く( string[] DropFiles )\r
                {\r
                        // 開くファイルを決定する。\r
 \r
@@ -735,7 +760,26 @@ namespace DTXCreator
 \r
                        #region [ ファイルを読み込む。]\r
                        //-----------------\r
-                       this.t演奏ファイルを開いて読み込む( strファイル名 );\r
+                       string strExt = Path.GetExtension( strファイル名 ).ToLower();\r
+\r
+                       if ( strExt.Equals(".dtx") )\r
+                       {\r
+                               this.t演奏ファイルを開いて読み込む( strファイル名 );\r
+                       }\r
+                       else if (strExt.Equals(".smf") || strExt.Equals(".mid"))\r
+                       {\r
+                               this.mgrMIDIインポート管理者.tMIDIインポート管理を開く( strファイル名 );\r
+                               this.mgr譜面管理者.tRefreshDisplayLanes(); // レーンの表示/非表示切り替えに備えて追加\r
+                       }\r
+                       else\r
+                       {\r
+                               MessageBox.Show(\r
+                                       Resources.strDTXファイルではありませんMSG,\r
+                                       Resources.str確認ダイアログのタイトル,\r
+                                       MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );\r
+\r
+                               return; // 中断\r
+                       }\r
                        //-----------------\r
                        #endregion\r
                }\r
@@ -833,7 +877,7 @@ namespace DTXCreator
 \r
                        this.strDTXファイル名 = Path.ChangeExtension( Path.GetFileName( strファイル名 ), ".dtx" );            // 拡張子は強制的に .dtx に変更。\r
                        this.str作業フォルダ名 = Path.GetDirectoryName( strファイル名 ) + @"\";             // 読み込み後、カレントフォルダは、作業ファイルのあるフォルダに移動する。\r
-\r
+                                                                                                                                                                               // #35399: カレントディレクトリの変更はしない。.NET4以降でbuildしたDTXMania本体で再生できなくなるため。\r
                        //-----------------\r
                        #endregion\r
 \r
@@ -870,9 +914,10 @@ namespace DTXCreator
                #endregion\r
                #region [ 上書き保存/名前をつけて保存 ]\r
                //-----------------\r
-               private void tシナリオ上書き保存()\r
+               private void tシナリオ_上書き保存()\r
                {\r
                        // 前処理。\r
+                       bool bDoSave = true;\r
 \r
                        this.dlgチップパレット.t一時的に隠蔽する();\r
 \r
@@ -893,51 +938,58 @@ namespace DTXCreator
 \r
                                string str絶対パスファイル名 = this.tファイル保存ダイアログを開いてファイル名を取得する();\r
 \r
-                               if( string.IsNullOrEmpty( str絶対パスファイル名 ) )\r
-                                       return; // ファイル保存ダイアログがキャンセルされたのならここで打ち切り。\r
-\r
-                               //this.str作業フォルダ名 = Directory.GetCurrentDirectory() + @"\";       // ダイアログでディレクトリを変更した場合、カレントディレクトリも変更されている。\r
-                               this.str作業フォルダ名 = Path.GetDirectoryName(str絶対パスファイル名) + @"\";\r
-                               this.strDTXファイル名 = Path.GetFileName( str絶対パスファイル名 );\r
-\r
-\r
-                               // WAV・BMP・AVIリストにあるすべてのファイル名を、作業フォルダに対する相対パスに変換する。\r
-\r
-                               this.mgrWAVリスト管理者.tファイル名の相対パス化( this.str作業フォルダ名 );\r
-                               this.mgrBMPリスト管理者.tファイル名の相対パス化( this.str作業フォルダ名 );\r
-                               this.mgrAVIリスト管理者.tファイル名の相対パス化( this.str作業フォルダ名 );\r
+                               if (string.IsNullOrEmpty(str絶対パスファイル名))\r
+                               {\r
+                                       bDoSave = false;\r
+                               }\r
+                               else\r
+                               {\r
+                                       //this.str作業フォルダ名 = Directory.GetCurrentDirectory() + @"\";       // ダイアログでディレクトリを変更した場合、カレントディレクトリも変更されている。\r
+                                       this.str作業フォルダ名 = Path.GetDirectoryName(str絶対パスファイル名) + @"\";\r
+                                       this.strDTXファイル名 = Path.GetFileName(str絶対パスファイル名);\r
+\r
+                                       // WAV・BMP・AVIリストにあるすべてのファイル名を、作業フォルダに対する相対パスに変換する。\r
+                                       this.mgrWAVリスト管理者.tファイル名の相対パス化(this.str作業フォルダ名);\r
+                                       this.mgrBMPリスト管理者.tファイル名の相対パス化(this.str作業フォルダ名);\r
+                                       this.mgrAVIリスト管理者.tファイル名の相対パス化(this.str作業フォルダ名);\r
+                               }\r
                        }\r
                        //-----------------\r
                        #endregion\r
 \r
-\r
                        // DTXファイルへ出力。\r
+                       if (bDoSave)\r
+                       {\r
 \r
+                               #region [ 選択モードだったなら選択を解除する。]\r
+                               //-----------------\r
+                               if (this.b選択モードである)\r
+                                       this.mgr選択モード管理者.t全チップの選択を解除する();\r
+                               //-----------------\r
+                               #endregion\r
 \r
-                       #region [ 選択モードだったなら選択を解除する。]\r
-                       //-----------------\r
-                       if( this.b選択モードである )\r
-                               this.mgr選択モード管理者.t全チップの選択を解除する();\r
-                       //-----------------\r
-                       #endregion\r
-\r
-                       #region [ DTXファイルを出力する。]\r
-                       //-----------------\r
-                       var sw = new StreamWriter( this.str作業フォルダ名 + this.strDTXファイル名, false, Encoding.GetEncoding( "utf-16" ) );\r
-                       new CDTX入出力( this ).tDTX出力( sw );\r
-                       sw.Close();\r
-                       //-----------------\r
-                       #endregion\r
+                               #region [ DTXファイルを出力する。]\r
+                               //-----------------\r
+                               var sw = new StreamWriter(this.str作業フォルダ名 + this.strDTXファイル名, false, Encoding.GetEncoding("utf-16"));\r
+                               new CDTX入出力(this).tDTX出力(sw);\r
+                               sw.Close();\r
+                               //-----------------\r
+                               #endregion\r
 \r
-                       #region [ 出力したファイルのパスを、[ファイル]メニューの最近使ったファイル一覧に追加する。 ]\r
-                       //-----------------\r
-                       this.appアプリ設定.AddRecentUsedFile( this.str作業フォルダ名 + this.strDTXファイル名 );\r
-                       this.t最近使ったファイルをFileメニューへ追加する();\r
-                       //-----------------\r
-                       #endregion\r
+                               #region [ 出力したファイルのパスを、[ファイル]メニューの最近使ったファイル一覧に追加する。 ]\r
+                               //-----------------\r
+                               this.appアプリ設定.AddRecentUsedFile(this.str作業フォルダ名 + this.strDTXファイル名);\r
+                               this.t最近使ったファイルをFileメニューへ追加する();\r
+                               //-----------------\r
+                               #endregion\r
 \r
+                               #region [ Viewer用の一時ファイルを削除する (修正+保存、直後のViewer再生時に、直前の修正が反映されなくなることへの対応) ]\r
+                               tViewer用の一時ファイルを削除する();\r
+                               #endregion\r
 \r
-                       // 後処理。\r
+                               // 後処理。\r
+                               this.b未保存 = false;\r
+                       }\r
 \r
                        #region [「保存中です」ポップアップを閉じる。]\r
                        //-----------------\r
@@ -947,9 +999,8 @@ namespace DTXCreator
                        #endregion\r
 \r
                        this.dlgチップパレット.t一時的な隠蔽を解除する();\r
-                       this.b未保存 = false;\r
                }\r
-               private void tシナリオ名前をつけて保存()\r
+               private void tシナリオ_名前をつけて保存()\r
                {\r
                        // 前処理。\r
 \r
@@ -981,7 +1032,7 @@ namespace DTXCreator
 \r
                        // 保存する。\r
                        \r
-                       this.tシナリオ上書き保存();\r
+                       this.tシナリオ_上書き保存();\r
 \r
 \r
                        // 後処理。\r
@@ -1029,7 +1080,7 @@ namespace DTXCreator
                #endregion\r
                #region [ 終了 ]\r
                //-----------------\r
-               private void tシナリオ終了()\r
+               private void tシナリオ_終了()\r
                {\r
                        // ウィンドウを閉じる。\r
 \r
@@ -1039,11 +1090,11 @@ namespace DTXCreator
                #endregion\r
                #region [ 検索/置換 ]\r
                //-----------------\r
-               private void tシナリオ検索()\r
+               private void tシナリオ_検索()\r
                {\r
                        this.mgr選択モード管理者.t検索する();       // モードによらず、検索はすべて選択モード管理者が行う。\r
                }\r
-               private void tシナリオ置換()\r
+               private void tシナリオ_置換()\r
                {\r
                        this.mgr選択モード管理者.t置換する();       // モードによらず、置換はすべて選択モード管理者が行う。\r
                }\r
@@ -1051,7 +1102,7 @@ namespace DTXCreator
                #endregion\r
                #region [ 小節長変更/小節の挿入/小節の削除 ]\r
                //-----------------\r
-               private void tシナリオ小節長を変更する( C小節 cs )\r
+               private void tシナリオ_小節長を変更する( C小節 cs )\r
                {\r
                        // 前処理。\r
 \r
@@ -1114,7 +1165,7 @@ namespace DTXCreator
                                int n新Grid数 = (int) ( dlg.f倍率 * 192 + 0.5 );\r
                                int nGrid増減 = n旧Grid数 - n新Grid数;\r
 \r
-                               this.t小節長を変更する小節単位( n小節番号, dlg.f倍率 );\r
+                               this.t小節長を変更する_小節単位( n小節番号, dlg.f倍率 );\r
 \r
                                // そして、Gridの増減があった分だけ、コピーしたBEATチップのGridを増減する\r
                                int nGrid_BAR = this.mgr譜面管理者.n譜面先頭からみた小節先頭の位置gridを返す( n変更開始小節番号 );\r
@@ -1182,7 +1233,7 @@ namespace DTXCreator
                        #region [ コピーしておいた(そして、nGridを更新した))BEATチップを、BEATレーンに戻す ]\r
                        foreach ( Cチップ cチップ in listBEATチップ )\r
                        {\r
-                               this.mgr編集モード管理者.tBeatチップを配置する( cチップ.n位置grid, cチップ.n値・整数1to1295, cチップ.f値・浮動小数, cチップ.b裏 );\r
+                               this.mgr編集モード管理者.tBeatチップを配置する( cチップ.n位置grid, cチップ.n値_整数1to1295, cチップ.f値_浮動小数, cチップ.b裏 );\r
                        }\r
                        #endregion\r
 \r
@@ -1193,10 +1244,10 @@ namespace DTXCreator
                        listBEATチップ = null;\r
 \r
                        // 画面を再描画。\r
-                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                       this.tUndoRedo用GUIの有効無効を設定する();\r
 \r
                }\r
-               private void t小節長を変更する・小節単位( int n小節番号, float f倍率 )\r
+               public void t小節長を変更する_小節単位( int n小節番号, float f倍率 )\r
                {\r
                        // 対象の小節を取得。\r
 \r
@@ -1287,9 +1338,9 @@ namespace DTXCreator
 \r
                        // 画面を再描画。\r
 \r
-                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                       this.tUndoRedo用GUIの有効無効を設定する();\r
                }\r
-               private void tシナリオ小節を挿入する( int n挿入位置の小節番号 )\r
+               private void tシナリオ_小節を挿入する( int n挿入位置の小節番号 )\r
                {\r
                        // 作業を記録。\r
 \r
@@ -1345,10 +1396,10 @@ namespace DTXCreator
 \r
                        // 後処理。\r
 \r
-                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                       this.tUndoRedo用GUIの有効無効を設定する();\r
                        this.b未保存 = true;\r
                }\r
-               private void tシナリオ小節を削除する( int n削除位置の小節番号 )\r
+               private void tシナリオ_小節を削除する( int n削除位置の小節番号 )\r
                {\r
                        // 作業記録開始。\r
 \r
@@ -1445,7 +1496,7 @@ namespace DTXCreator
        \r
                        // 後処理。\r
 \r
-                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                       this.tUndoRedo用GUIの有効無効を設定する();\r
                        this.pictureBox譜面パネル.Refresh();\r
                        this.b未保存 = true;\r
                }\r
@@ -1453,7 +1504,7 @@ namespace DTXCreator
                #endregion\r
                #region [ 選択チップの切り取り/コピー/貼り付け/削除 ]\r
                //-----------------\r
-               private void tシナリオ切り取り()\r
+               private void tシナリオ_切り取り()\r
                {\r
                        // 事前チェック。\r
 \r
@@ -1469,12 +1520,12 @@ namespace DTXCreator
 \r
                        #region [ 切り取り = コピー + 削除 ]\r
                        //-----------------\r
-                       this.tシナリオコピー();\r
-                       this.tシナリオ削除();\r
+                       this.tシナリオ_コピー();\r
+                       this.tシナリオ_削除();\r
                        //-----------------\r
                        #endregion\r
                }\r
-               private void tシナリオコピー()\r
+               private void tシナリオ_コピー()\r
                {\r
                        // 事前チェック。\r
 \r
@@ -1495,12 +1546,12 @@ namespace DTXCreator
 \r
                        #region [ 画面を再描画する。]\r
                        //-----------------\r
-                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
+                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
                        this.pictureBox譜面パネル.Refresh();\r
                        //-----------------\r
                        #endregion\r
                }\r
-               private void tシナリオ貼り付け( int n譜面先頭からの位置grid )\r
+               private void tシナリオ_貼り付け( int n譜面先頭からの位置grid )\r
                {\r
                        // 事前チェック。\r
 \r
@@ -1536,12 +1587,12 @@ namespace DTXCreator
 \r
                        #region [ 画面を再描画する。]\r
                        //-----------------\r
-                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
+                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
                        this.pictureBox譜面パネル.Refresh();\r
                        //-----------------\r
                        #endregion\r
                }\r
-               private void tシナリオ削除()\r
+               private void tシナリオ_削除()\r
                {\r
                        // 事前チェック。\r
 \r
@@ -1652,20 +1703,20 @@ namespace DTXCreator
 \r
                        // 画面を再描画する。\r
 \r
-                       this.tUndoRedo用GUIの有効無効を設定する();\r
-                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
+                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
                        this.pictureBox譜面パネル.Refresh();\r
                }\r
                //-----------------\r
                #endregion\r
                #region [ DTXViewer での再生・停止 ]\r
                //-----------------\r
-               private void tシナリオViewerで最初から再生する()\r
+               private void tシナリオ_Viewerで最初から再生する()\r
                {\r
                        #region [ DTXViewer 用の一時ファイルを出力する。]\r
                        //-----------------\r
-                       this.tViewer用の一時ファイルを出力する( false, this.b未保存 | !this.bBGMありで再生した | this.b再生速度を変更した | this.bDTXファイルを開いた );\r
-                       this.bBGMありで再生した = true;\r
+                       this.tViewer用の一時ファイルを出力する( false, this.b未保存 | !this.b前回BGMありで再生した | this.b再生速度を変更した | this.bDTXファイルを開いた );\r
+                       this.b前回BGMありで再生した = true;\r
                        //-----------------\r
                        #endregion\r
 \r
@@ -1703,12 +1754,12 @@ namespace DTXCreator
                        //-----------------\r
                        #endregion\r
                }\r
-               private void tシナリオViewerで現在位置から再生する()\r
+               private void tシナリオ_Viewerで現在位置から再生する()\r
                {\r
                        #region [ DTXViewer 用の一時ファイルを出力する。]\r
                        //-----------------\r
-                       this.tViewer用の一時ファイルを出力する( false, this.b未保存 | !this.bBGMありで再生した | this.b再生速度を変更した | this.bDTXファイルを開いた );\r
-                       this.bBGMありで再生した = true;\r
+                       this.tViewer用の一時ファイルを出力する( false, this.b未保存 | !this.b前回BGMありで再生した | this.b再生速度を変更した | this.bDTXファイルを開いた );\r
+                       this.b前回BGMありで再生した = true;\r
                        //-----------------\r
                        #endregion\r
 \r
@@ -1747,12 +1798,12 @@ namespace DTXCreator
                                #endregion\r
                        }\r
                }\r
-               private void tシナリオViewerで現在位置からBGMのみ再生する()\r
+               private void tシナリオ_Viewerで現在位置からBGMのみ再生する()\r
                {\r
                        #region [ DTXViewer 用の一時ファイルを出力する。]\r
                        //-----------------\r
-                       this.tViewer用の一時ファイルを出力する( true, this.b未保存 | this.bBGMありで再生した | this.b再生速度を変更した | this.bDTXファイルを開いた );\r
-                       this.bBGMありで再生した = false;\r
+                       this.tViewer用の一時ファイルを出力する( true, this.b未保存 | this.b前回BGMありで再生した | this.b再生速度を変更した | this.bDTXファイルを開いた );\r
+                       this.b前回BGMありで再生した = false;\r
                        //-----------------\r
                        #endregion\r
 \r
@@ -1787,7 +1838,7 @@ namespace DTXCreator
                                #endregion\r
                        }\r
                }\r
-               private void tシナリオViewerを再生停止する()\r
+               private void tシナリオ_Viewerを再生停止する()\r
                {\r
                        try\r
                        {\r
@@ -1870,11 +1921,15 @@ namespace DTXCreator
                                this.mgr譜面管理者.strPATH_WAV = "";\r
                        }\r
                }\r
+               private void tViewer用の一時ファイルを削除する()\r
+               {\r
+                       this.strViewer演奏用一時ファイル名 = "";              // #35351 2015.7.23 yyagi add; to fix viewer plyback correctly just after save.\r
+               }\r
                //-----------------\r
                #endregion\r
                #region [ Undo / Redo ]\r
                //-----------------\r
-               private void tシナリオUndoする()\r
+               private void tシナリオ_Undoする()\r
                {\r
                        // Undo を実行する。\r
 \r
@@ -1896,13 +1951,13 @@ namespace DTXCreator
 \r
                        #region [ GUI を再描画する。]\r
                        //-----------------\r
-                       this.tUndoRedo用GUIの有効無効を設定する();\r
-                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
+                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
                        this.pictureBox譜面パネル.Refresh();\r
                        //-----------------\r
                        #endregion\r
                }\r
-               private void tシナリオRedoする()\r
+               private void tシナリオ_Redoする()\r
                {\r
                        // Redo を実行する。\r
 \r
@@ -1924,8 +1979,8 @@ namespace DTXCreator
 \r
                        #region [ GUI を再描画する。]\r
                        //-----------------\r
-                       this.tUndoRedo用GUIの有効無効を設定する();\r
-                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
+                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                       this.t選択チップの有無に応じて編集用GUIの有効無効を設定する();\r
                        this.pictureBox譜面パネル.Refresh();\r
                        //-----------------\r
                        #endregion\r
@@ -1961,7 +2016,7 @@ namespace DTXCreator
                        this.toolStripMenuItem選択モード.CheckState = CheckState.Unchecked;\r
                        this.toolStripMenuItem編集モード.CheckState = CheckState.Checked;\r
                }\r
-               public void t選択チップの有無に応じて編集用GUIの有効無効を設定する()\r
+               public void t選択チップの有無に応じて編集用GUIの有効無効を設定する()\r
                {\r
                        bool b譜面上に選択チップがある = this.b選択チップがある;\r
                        bool bクリップボードに選択チップがある = ( this.cbクリップボード != null ) && ( this.cbクリップボード.nセル数 > 0 );\r
@@ -2005,7 +2060,7 @@ namespace DTXCreator
 \r
                        #region [ クリックされた箇所の小節番号を取得する。]\r
                        //-----------------\r
-                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返すガイド幅単位( pt選択モードのコンテクストメニューを開いたときのマウスの位置.Y );\r
+                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す_ガイド幅単位( pt選択モードのコンテクストメニューを開いたときのマウスの位置.Y );\r
                        C小節 csクリックされた小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );\r
                        if ( csクリックされた小節 == null ) return;            // 小節が生成されていないところで右クリックした場合は何もしない(NullReferenceException回避)\r
                        int nPartNo = csクリックされた小節.n小節番号0to3599;\r
@@ -2108,10 +2163,12 @@ namespace DTXCreator
 \r
                                #region [ ToolStripMenuItem を手動で作って [ファイル] のサブメニューリストに追加する。]\r
                                //-----------------\r
+                               string strShotenPath = AdjustPathString( path );        // #35890 2016.1.3 yyagi; shorten "RecentFiles" text if needed\r
                                var item2 = new ToolStripMenuItem() {\r
                                        Name = "最近使ったファイル" + i,\r
                                        Size = this.toolStripMenuItem終了.Size,\r
-                                       Text = "&" + i + " " + path,\r
+                                       Text = "&" + i + " " + strShotenPath,\r
+                                       ToolTipText = path,\r
                                };\r
                                item2.Click += new EventHandler( this.toolStripMenuItem最近使ったファイル_Click );\r
                                this.toolStripMenuItemファイル.DropDownItems.Add( item2 );\r
@@ -2131,7 +2188,54 @@ namespace DTXCreator
                        //-----------------\r
                        #endregion\r
                }\r
-               public void tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( int nIndex番号0to1294 )\r
+               // 参考: http://gushwell.ldblog.jp/archives/50815731.html\r
+               private string AdjustPathString( string text )\r
+               {\r
+                       int nTargetWidth = (int)(this.Width * 0.8f);\r
+                       Bitmap bmp = new Bitmap(nTargetWidth, this.Height);\r
+                       Graphics g = Graphics.FromImage( bmp );\r
+                       var item = new ToolStripMenuItem();\r
+                       SizeF size = g.MeasureString( text, item.Font );\r
+//Debug.WriteLine( "WinWidth"+ this.Width + ", now=" + size.Width + ", font=" + this.Font.ToString());\r
+                       while ( nTargetWidth < size.Width )\r
+                       {\r
+                               string text2 = ShortenPathString( text );\r
+                               if ( text == text2 )\r
+                                       break;\r
+                               size = g.MeasureString( text2, this.Font );\r
+                               text = text2;\r
+//Debug.WriteLine( "winWidth" + this.Width + ", now=" + size.Width + ", font=" + this.Font.ToString() );\r
+                       }\r
+                       item.Dispose();\r
+                       g.Dispose();\r
+                       bmp.Dispose();\r
+                       return text;\r
+               }\r
+               private string ShortenPathString( string text )\r
+               {\r
+                       int nWidth = this.Width;\r
+                       List<string> list = new List<string>(text.Split('\\'));\r
+                       int i = list.Count / 2;\r
+               if ( list[i] != "..." )\r
+                       {\r
+                           list[i] = "...";\r
+               }\r
+                       else\r
+                       {\r
+                   if ( list.Count % 2 == 0 && i > 1 )\r
+                           list.RemoveAt(i - 1);\r
+                           else if ( list.Count % 2 == 1 && i < list.Count - 2 )\r
+                                   list.RemoveAt(i + 1);\r
+               }\r
+               StringBuilder sb = new StringBuilder(list[0]);\r
+                   for ( int n = 1; n < list.Count; n++ ) {\r
+                           sb.Append('\\').Append(list[n]);\r
+               }\r
+//Debug.WriteLine( "org:" + text );\r
+//Debug.WriteLine( "now:" + sb );\r
+                       return sb.ToString();\r
+           }\r
+               public void tWAV_BMP_AVIリストのカーソルを全部同じ行に合わせる( int nIndex番号0to1294 )\r
                {\r
                        if( nIndex番号0to1294 >= 0 && nIndex番号0to1294 <= 1294 )\r
                        {\r
@@ -2139,7 +2243,7 @@ namespace DTXCreator
                                this.mgrBMPリスト管理者.tItemを選択する( nIndex番号0to1294 );\r
                                this.mgrAVIリスト管理者.tItemを選択する( nIndex番号0to1294 );\r
 \r
-                               this.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 = nIndex番号0to1294;\r
+                               this.n現在選択中のWAV_BMP_AVIリストの行番号0to1294 = nIndex番号0to1294;\r
                        }\r
                }\r
                public string strファイルの存在するディレクトリを絶対パスで返す( string strファイル )\r
@@ -2175,7 +2279,7 @@ namespace DTXCreator
                {\r
                        return new Size( this.splitContainerタブと譜面を分割.Panel2.Width, this.pictureBox譜面パネル.Height );\r
                }\r
-               public void tUndoRedo用GUIの有効無効を設定する()\r
+               public void tUndoRedo用GUIの有効無効を設定する()\r
                {\r
                        this.toolStripMenuItemアンドゥ.Enabled = this.mgrUndoRedo管理者.nUndo可能な回数 > 0;\r
                        this.toolStripMenuItemリドゥ.Enabled = this.mgrUndoRedo管理者.nRedo可能な回数 > 0;\r
@@ -2193,7 +2297,7 @@ namespace DTXCreator
                #region [ private ]\r
                //-----------------\r
                private bool _b未保存 = true;\r
-               private bool bBGMありで再生した = true;\r
+               private bool b前回BGMありで再生した = true;\r
                private bool b再生速度を変更した = false;\r
                private bool bDTXファイルを開いた = false;\r
                private Point pt選択モードのコンテクストメニューを開いたときのマウスの位置;\r
@@ -2257,7 +2361,7 @@ namespace DTXCreator
                        };\r
                        if( dialog.ShowDialog() == DialogResult.OK )\r
                        {\r
-                               str相対ファイル名 = Cファイル選択パス変換.str基点からの相対パスに変換して返す( dialog.FileName, this.str作業フォルダ名 );\r
+                               str相対ファイル名 = Cファイル選択_パス変換.str基点からの相対パスに変換して返す( dialog.FileName, this.str作業フォルダ名 );\r
                                str相対ファイル名.Replace( '/', '\\' );\r
                        }\r
                        else\r
@@ -2267,7 +2371,7 @@ namespace DTXCreator
 \r
                        return str相対ファイル名;\r
                }\r
-               private DialogResult t未保存なら保存する()\r
+               public DialogResult t未保存なら保存する()\r
                {\r
                        var result = DialogResult.OK;\r
 \r
@@ -2283,7 +2387,7 @@ namespace DTXCreator
                                // YES なら上書き保存。\r
 \r
                                if( result == DialogResult.Yes )\r
-                                       this.tシナリオ上書き保存();\r
+                                       this.tシナリオ_上書き保存();\r
 \r
 \r
                                // 画面を再描画。\r
@@ -2404,7 +2508,7 @@ namespace DTXCreator
                        string[] data = (string[]) e.Data.GetData( DataFormats.FileDrop );\r
                        if( data.Length >= 1 )\r
                        {\r
-                               this.tシナリオDragDropされたファイルを開く( data );\r
+                               this.tシナリオ_DragDropされたファイルを開く( data );\r
                        }\r
                }\r
                private void Cメインフォーム_DragEnter( object sender, DragEventArgs e )\r
@@ -2712,11 +2816,11 @@ namespace DTXCreator
                //-----------------\r
                private void toolStripMenuItem選択チップの切り取り_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ切り取り();\r
+                       this.tシナリオ_切り取り();\r
                }\r
                private void toolStripMenuItem選択チップのコピー_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオコピー();\r
+                       this.tシナリオ_コピー();\r
                }\r
                private void toolStripMenuItem選択チップの貼り付け_Click( object sender, EventArgs e )\r
                {\r
@@ -2728,11 +2832,11 @@ namespace DTXCreator
 \r
                        // Y座標から位置gridを得て、そこへ貼り付ける。\r
 \r
-                       this.tシナリオ・貼り付け( this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptMenuClient.Y ) );\r
+                       this.tシナリオ_貼り付け( this.mgr譜面管理者.nY座標dotが位置するgridを返す_ガイド幅単位( ptMenuClient.Y ) );\r
                }\r
                private void toolStripMenuItem選択チップの削除_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ削除();\r
+                       this.tシナリオ_削除();\r
                }\r
 \r
                private void toolStripMenuItemすべてのチップの選択_Click( object sender, EventArgs e )\r
@@ -2801,7 +2905,7 @@ namespace DTXCreator
                        if ( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウスの位置.X ) < 0 )\r
                                return;         // クリックされた箇所にレーンがない\r
 \r
-                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返すガイド幅単位( ptマウスの位置.Y );\r
+                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す_ガイド幅単位( ptマウスの位置.Y );\r
 \r
                        C小節 csクリックされた小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );\r
                        //-----------------\r
@@ -2828,7 +2932,7 @@ namespace DTXCreator
                        if ( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウスの位置.X ) < 0 )\r
                                return;         // クリックされた箇所にレーンがない\r
 \r
-                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返すガイド幅単位( ptマウスの位置.Y );\r
+                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す_ガイド幅単位( ptマウスの位置.Y );\r
                        C小節 csクリックされた小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );\r
                        //-----------------\r
                        #endregion\r
@@ -2852,7 +2956,7 @@ namespace DTXCreator
                        if( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウス位置.X ) < 0 )\r
                                return;         // クリックされた箇所にレーンがないなら無視。\r
 \r
-                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返すガイド幅単位( ptマウス位置.Y );\r
+                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す_ガイド幅単位( ptマウス位置.Y );\r
                        C小節 csクリックされた小節 =  this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );\r
                        //-----------------\r
                        #endregion\r
@@ -2860,7 +2964,7 @@ namespace DTXCreator
                        #region [ 取得した小節の小節長を変更する。]\r
                        //-----------------\r
                        if( csクリックされた小節 != null )\r
-                               this.tシナリオ小節長を変更する( csクリックされた小節 );\r
+                               this.tシナリオ_小節長を変更する( csクリックされた小節 );\r
                        //-----------------\r
                        #endregion\r
                }\r
@@ -2880,7 +2984,7 @@ namespace DTXCreator
                        if( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウスの位置.X ) < 0 )\r
                                return;         // クリックされた箇所にレーンがない\r
 \r
-                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返すガイド幅単位( ptマウスの位置.Y );\r
+                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す_ガイド幅単位( ptマウスの位置.Y );\r
                        C小節 csクリックされた小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );\r
                        //-----------------\r
                        #endregion\r
@@ -2888,7 +2992,7 @@ namespace DTXCreator
                        #region [ 該当小節の下へ新しい小節を挿入する。]\r
                        //-----------------\r
                        if( csクリックされた小節 != null )\r
-                               this.tシナリオ小節を挿入する( csクリックされた小節.n小節番号0to3599 );\r
+                               this.tシナリオ_小節を挿入する( csクリックされた小節.n小節番号0to3599 );\r
                        //-----------------\r
                        #endregion\r
                }\r
@@ -2908,7 +3012,7 @@ namespace DTXCreator
                        if( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウス位置.X ) < 0 )\r
                                return;         // クリックされた箇所にレーンがないなら無視。\r
 \r
-                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返すガイド幅単位( ptマウス位置.Y );\r
+                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す_ガイド幅単位( ptマウス位置.Y );\r
                        C小節 cs削除する小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );\r
                        //-----------------\r
                        #endregion\r
@@ -2916,7 +3020,7 @@ namespace DTXCreator
                        #region [ 該当小節を削除する。]\r
                        //-----------------\r
                        if( cs削除する小節 != null )\r
-                               this.tシナリオ小節を削除する( cs削除する小節.n小節番号0to3599 );\r
+                               this.tシナリオ_小節を削除する( cs削除する小節.n小節番号0to3599 );\r
                        //-----------------\r
                        #endregion\r
                }\r
@@ -2935,7 +3039,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBox曲名 ) )\r
                                {\r
@@ -2957,7 +3061,7 @@ namespace DTXCreator
 \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -2976,7 +3080,7 @@ namespace DTXCreator
                }\r
                private void textBox曲名_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBox曲名 );\r
@@ -3014,7 +3118,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBox製作者 ) )\r
                                {\r
@@ -3036,7 +3140,7 @@ namespace DTXCreator
 \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3055,7 +3159,7 @@ namespace DTXCreator
                }\r
                private void textBox製作者_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
                \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBox製作者 );\r
@@ -3093,7 +3197,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxコメント ) )\r
                                {\r
@@ -3114,7 +3218,7 @@ namespace DTXCreator
 \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3133,7 +3237,7 @@ namespace DTXCreator
                }\r
                private void textBoxコメント_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
                \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBoxコメント );\r
@@ -3171,7 +3275,7 @@ namespace DTXCreator
                        //-----------------\r
                        if ( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if ( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxGenre ) )\r
                                {\r
@@ -3188,11 +3292,11 @@ namespace DTXCreator
                                                        this.textBoxGenre,\r
                                                        new DGUndoを実行する<string>( this.textBoxGenre_Undo ),\r
                                                        new DGRedoを実行する<string>( this.textBoxGenre_Redo ),\r
-                                                       this.textBoxコメント_以前の値, this.textBoxGenre.Text ) );\r
+                                                       this.textBoxGenre_以前の値, this.textBoxGenre.Text ) );\r
 \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3211,7 +3315,7 @@ namespace DTXCreator
                }\r
                private void textBoxGenre_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                        if ( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBoxGenre );\r
@@ -3250,7 +3354,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.numericUpDownBPM ) )\r
                                {\r
@@ -3272,7 +3376,7 @@ namespace DTXCreator
 \r
                                        // Undoボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3291,7 +3395,7 @@ namespace DTXCreator
                }\r
                private void numericUpDownBPM_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
                \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.numericUpDownBPM );\r
@@ -3369,7 +3473,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( oセル仮想 != null && oセル仮想.b所有権がある( this.hScrollBarDLEVEL ) )\r
                                {\r
@@ -3391,7 +3495,7 @@ namespace DTXCreator
 \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3491,7 +3595,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.hScrollBarGLEVEL ) )\r
                                {\r
@@ -3513,7 +3617,7 @@ namespace DTXCreator
 \r
                                        // Undo ボタンを有効にする。\r
                                        \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3614,7 +3718,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.hScrollBarBLEVEL ) )\r
                                {\r
@@ -3636,7 +3740,7 @@ namespace DTXCreator
                \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3699,7 +3803,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxパネル ) )\r
                                {\r
@@ -3721,7 +3825,7 @@ namespace DTXCreator
 \r
                                        // Undoボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3740,7 +3844,7 @@ namespace DTXCreator
                }\r
                private void textBoxパネル_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBoxパネル );\r
@@ -3778,7 +3882,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxPREVIEW ) )\r
                                {\r
@@ -3800,7 +3904,7 @@ namespace DTXCreator
                                        \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3819,7 +3923,7 @@ namespace DTXCreator
                }\r
                private void textBoxPREVIEW_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBoxPREVIEW );\r
@@ -3857,7 +3961,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxPREIMAGE ) )\r
                                {\r
@@ -3879,7 +3983,7 @@ namespace DTXCreator
 \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3898,7 +4002,7 @@ namespace DTXCreator
                }\r
                private void textBoxPREIMAGE_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBoxPREIMAGE );\r
@@ -3936,7 +4040,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxSTAGEFILE ) )\r
                                {\r
@@ -3958,7 +4062,7 @@ namespace DTXCreator
 \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -3977,7 +4081,7 @@ namespace DTXCreator
                }\r
                private void textBoxSTAGEFILE_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBoxSTAGEFILE );\r
@@ -4015,7 +4119,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxBACKGROUND ) )\r
                                {\r
@@ -4037,7 +4141,7 @@ namespace DTXCreator
 \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -4056,7 +4160,7 @@ namespace DTXCreator
                }\r
                private void textBoxBACKGROUND_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBoxBACKGROUND );\r
@@ -4094,7 +4198,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxRESULTIMAGE ) )\r
                                {\r
@@ -4116,7 +4220,7 @@ namespace DTXCreator
 \r
                                        // Undo ボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -4135,7 +4239,7 @@ namespace DTXCreator
                }\r
                private void textBoxRESULTIMAGE_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
                \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBoxRESULTIMAGE );\r
@@ -4264,6 +4368,84 @@ namespace DTXCreator
                        }\r
                }\r
                #endregion\r
+               #region [ Use 556 x 710 BGA/AVI ]\r
+               private bool check556x710BGAAVI_以前の値 = false;\r
+               private void check556x710BGAAVI_CheckedChanged(object sender, EventArgs e)\r
+               {\r
+                       // Undo/Redo リストを修正する。\r
+\r
+                       #region [ Undo/Redo リストを修正。]\r
+                       //-----------------\r
+                       if (!CUndoRedo管理.bUndoRedoした直後)\r
+                       {\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
+\r
+                               if ((oセル仮想 != null) && oセル仮想.b所有権がある(this.check556x710BGAAVI))\r
+                               {\r
+                                       // 既存のセルの値を更新。\r
+\r
+                                       ((CUndoRedoセル<bool>)oセル仮想).変更後の値 = this.check556x710BGAAVI.Checked;\r
+                               }\r
+                               else\r
+                               {\r
+                                       // 新しいセルを追加。\r
+\r
+                                       this.mgrUndoRedo管理者.tノードを追加する(\r
+                                               new CUndoRedoセル<bool>(\r
+                                                       this.check556x710BGAAVI.Checked,\r
+                                                       new DGUndoを実行する<bool>(this.check556x710BGAAVI_Undo),\r
+                                                       new DGRedoを実行する<bool>(this.check556x710BGAAVI_Redo),\r
+                                                       this.check556x710BGAAVI_以前の値, this.check556x710BGAAVI.Checked));\r
+\r
+                                       // Undo ボタンを有効にする。\r
+\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                               }\r
+                       }\r
+                       //-----------------\r
+                       #endregion\r
+\r
+\r
+                       // Undo 用に値を保管しておく。\r
+\r
+                       this.check556x710BGAAVI_以前の値 = this.check556x710BGAAVI.Checked;\r
+                       \r
+\r
+                       // 完了。\r
+\r
+                       CUndoRedo管理.bUndoRedoした直後 = false;\r
+                       this.b未保存 = true;\r
+               }\r
+               private void check556x710BGAAVI_Leave(object sender, EventArgs e)\r
+               {\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
+\r
+                       if (oセル仮想 != null)\r
+                               oセル仮想.t所有権の放棄(this.check556x710BGAAVI);\r
+               }\r
+               private void check556x710BGAAVI_Undo(bool b変更前, bool b変更後)\r
+               {\r
+                       // 変更前の値に戻す。\r
+\r
+                       this.tタブを選択する(Eタブ種別.基本情報);\r
+\r
+                       this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();\r
+                       this.check556x710BGAAVI.Checked = b変更前;\r
+\r
+                       this.check556x710BGAAVI.Focus();\r
+               }\r
+               private void check556x710BGAAVI_Redo(bool b変更前, bool b変更後)\r
+               {\r
+                       // 変更後の値に戻す。\r
+\r
+                       this.tタブを選択する(Eタブ種別.基本情報);\r
+\r
+                       this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();\r
+                       this.check556x710BGAAVI.Checked = b変更後;\r
+\r
+                       this.check556x710BGAAVI.Focus();\r
+               }\r
+               #endregion\r
                //-----------------\r
                #endregion\r
                #region [ GUIイベント:WAVリスト関連 ]\r
@@ -4343,7 +4525,7 @@ namespace DTXCreator
                        #region [ WAV, BMP, AVI のカーソルを、選択された行に全部合わせる。]\r
                        //-----------------\r
                        if( this.listViewWAVリスト.SelectedIndices.Count > 0 )\r
-                               this.tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( this.listViewWAVリスト.SelectedIndices[ 0 ] );\r
+                               this.tWAV_BMP_AVIリストのカーソルを全部同じ行に合わせる( this.listViewWAVリスト.SelectedIndices[ 0 ] );\r
                        //-----------------\r
                        #endregion\r
                }\r
@@ -4484,7 +4666,7 @@ namespace DTXCreator
                        #region [ WAV, BMP, AVI のカーソルを、選択された行に全部合わせる。]\r
                        //-----------------\r
                        if( this.listViewBMPリスト.SelectedIndices.Count > 0 )\r
-                               this.tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( this.listViewBMPリスト.SelectedIndices[ 0 ] );\r
+                               this.tWAV_BMP_AVIリストのカーソルを全部同じ行に合わせる( this.listViewBMPリスト.SelectedIndices[ 0 ] );\r
                        //-----------------\r
                        #endregion\r
                }\r
@@ -4589,7 +4771,7 @@ namespace DTXCreator
                        #region [ WAV, BMP, AVI のカーソルを、選択された行に全部合わせる。]\r
                        //-----------------\r
                        if( this.listViewAVIリスト.SelectedIndices.Count > 0 )\r
-                               this.tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( this.listViewAVIリスト.SelectedIndices[ 0 ] );\r
+                               this.tWAV_BMP_AVIリストのカーソルを全部同じ行に合わせる( this.listViewAVIリスト.SelectedIndices[ 0 ] );\r
                        //-----------------\r
                        #endregion\r
                }\r
@@ -4639,7 +4821,7 @@ namespace DTXCreator
                        //-----------------\r
                        if( !CUndoRedo管理.bUndoRedoした直後 )\r
                        {\r
-                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                               CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                                if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBox自由入力欄 ) )\r
                                {\r
@@ -4661,7 +4843,7 @@ namespace DTXCreator
 \r
                                        // Undoボタンを有効にする。\r
 \r
-                                       this.tUndoRedo用GUIの有効無効を設定する();\r
+                                       this.tUndoRedo用GUIの有効無効を設定する();\r
                                }\r
                        }\r
                        //-----------------\r
@@ -4680,7 +4862,7 @@ namespace DTXCreator
                }\r
                private void textBox自由入力欄_Leave( object sender, EventArgs e )\r
                {\r
-                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す見るだけ();\r
+                       CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す_見るだけ();\r
 \r
                        if( oセル仮想 != null )\r
                                oセル仮想.t所有権の放棄( this.textBox自由入力欄 );\r
@@ -4714,23 +4896,23 @@ namespace DTXCreator
                //-----------------\r
                private void toolStripMenuItem新規_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ新規作成();\r
+                       this.tシナリオ_新規作成();\r
                }\r
                private void toolStripMenuItem開く_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ開く();\r
+                       this.tシナリオ_開く();\r
                }\r
                private void toolStripMenuItem上書き保存_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ上書き保存();\r
+                       this.tシナリオ_上書き保存();\r
                }\r
                private void toolStripMenuItem名前を付けて保存_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ名前をつけて保存();\r
+                       this.tシナリオ_名前をつけて保存();\r
                }\r
                private void toolStripMenuItem終了_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ終了();\r
+                       this.tシナリオ_終了();\r
                }\r
                private void toolStripMenuItem最近使ったファイル_Click( object sender, EventArgs e )\r
                {\r
@@ -4748,19 +4930,19 @@ namespace DTXCreator
                //-----------------\r
                private void toolStripMenuItemアンドゥ_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオUndoする();\r
+                       this.tシナリオ_Undoする();\r
                }\r
                private void toolStripMenuItemリドゥ_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオRedoする();\r
+                       this.tシナリオ_Redoする();\r
                }\r
                private void toolStripMenuItem切り取り_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ切り取り();\r
+                       this.tシナリオ_切り取り();\r
                }\r
                private void toolStripMenuItemコピー_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオコピー();\r
+                       this.tシナリオ_コピー();\r
                }\r
                private void toolStripMenuItem貼り付け_Click( object sender, EventArgs e )\r
                {\r
@@ -4774,18 +4956,18 @@ namespace DTXCreator
                        {\r
                                // マウスが譜面上になかった → 表示領域下辺から貼り付ける\r
 \r
-                               this.tシナリオ貼り付け( this.mgr譜面管理者.n現在の譜面表示下辺の譜面先頭からの位置grid );\r
+                               this.tシナリオ_貼り付け( this.mgr譜面管理者.n現在の譜面表示下辺の譜面先頭からの位置grid );\r
                        }\r
                        else\r
                        {\r
                                // マウスが譜面上にあった\r
 \r
-                               this.tシナリオ・貼り付け( this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptマウス位置.Y ) );\r
+                               this.tシナリオ_貼り付け( this.mgr譜面管理者.nY座標dotが位置するgridを返す_ガイド幅単位( ptマウス位置.Y ) );\r
                        }\r
                }\r
                private void toolStripMenuItem削除_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ削除();\r
+                       this.tシナリオ_削除();\r
                }\r
                private void toolStripMenuItemすべて選択_Click( object sender, EventArgs e )\r
                {\r
@@ -4820,11 +5002,11 @@ namespace DTXCreator
                }\r
                private void toolStripMenuItem検索_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ検索();\r
+                       this.tシナリオ_検索();\r
                }\r
                private void toolStripMenuItem置換_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ置換();\r
+                       this.tシナリオ_置換();\r
                }\r
                //-----------------\r
                #endregion\r
@@ -4913,19 +5095,19 @@ namespace DTXCreator
                //-----------------\r
                private void toolStripMenuItem先頭から再生_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオViewerで最初から再生する();\r
+                       this.tシナリオ_Viewerで最初から再生する();\r
                }\r
                private void toolStripMenuItem現在位置から再生_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオViewerで現在位置から再生する();\r
+                       this.tシナリオ_Viewerで現在位置から再生する();\r
                }\r
                private void toolStripMenuItem現在位置からBGMのみ再生_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオViewerで現在位置からBGMのみ再生する();\r
+                       this.tシナリオ_Viewerで現在位置からBGMのみ再生する();\r
                }\r
                private void toolStripMenuItem再生停止_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオViewerを再生停止する();\r
+                       this.tシナリオ_Viewerを再生停止する();\r
                }\r
                //-----------------\r
                #endregion\r
@@ -4936,6 +5118,11 @@ namespace DTXCreator
                        this.mgrオプション管理者.tオプションダイアログを開いて編集し結果をアプリ設定に格納する();\r
                        this.mgr譜面管理者.tRefreshDisplayLanes(); // レーンの表示/非表示切り替えに備えて追加\r
                }\r
+               private void toolStripMenuItemMIDIImport_Click( object sender, EventArgs e)\r
+        {\r
+            this.mgrMIDIインポート管理者.tMIDIインポート管理を開く();\r
+            this.mgr譜面管理者.tRefreshDisplayLanes();    // レーンの表示/非表示切り替えに備えて追加\r
+        }\r
                //-----------------\r
                #endregion\r
                #region [ GUIイベント:メニューバー [ヘルプ] ]\r
@@ -4970,23 +5157,23 @@ namespace DTXCreator
                //-----------------\r
                private void toolStripButton新規作成_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ新規作成();\r
+                       this.tシナリオ_新規作成();\r
                }\r
                private void toolStripButton開く_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ開く();\r
+                       this.tシナリオ_開く();\r
                }\r
                private void toolStripButton上書き保存_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ上書き保存();\r
+                       this.tシナリオ_上書き保存();\r
                }\r
                private void toolStripButton切り取り_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ切り取り();\r
+                       this.tシナリオ_切り取り();\r
                }\r
                private void toolStripButtonコピー_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオコピー();\r
+                       this.tシナリオ_コピー();\r
                }\r
                private void toolStripButton貼り付け_Click( object sender, EventArgs e )\r
                {\r
@@ -5000,26 +5187,26 @@ namespace DTXCreator
                        {\r
                                // マウスが譜面上になかった → 表示領域下辺から貼り付ける\r
 \r
-                               this.tシナリオ貼り付け( this.mgr譜面管理者.n現在の譜面表示下辺の譜面先頭からの位置grid );\r
+                               this.tシナリオ_貼り付け( this.mgr譜面管理者.n現在の譜面表示下辺の譜面先頭からの位置grid );\r
                        }\r
                        else\r
                        {\r
                                // マウスが譜面上にあった\r
 \r
-                               this.tシナリオ・貼り付け( this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptマウスの位置.Y ) );\r
+                               this.tシナリオ_貼り付け( this.mgr譜面管理者.nY座標dotが位置するgridを返す_ガイド幅単位( ptマウスの位置.Y ) );\r
                        }\r
                }\r
                private void toolStripButton削除_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオ削除();\r
+                       this.tシナリオ_削除();\r
                }\r
                private void toolStripButtonアンドゥ_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオUndoする();\r
+                       this.tシナリオ_Undoする();\r
                }\r
                private void toolStripButtonリドゥ_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオRedoする();\r
+                       this.tシナリオ_Redoする();\r
                }\r
                private void toolStripButtonチップパレット_Click( object sender, EventArgs e )\r
                {\r
@@ -5089,19 +5276,19 @@ namespace DTXCreator
                }\r
                private void toolStripButton先頭から再生_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオViewerで最初から再生する();\r
+                       this.tシナリオ_Viewerで最初から再生する();\r
                }\r
                private void toolStripButton現在位置から再生_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオViewerで現在位置から再生する();\r
+                       this.tシナリオ_Viewerで現在位置から再生する();\r
                }\r
                private void toolStripButton現在位置からBGMのみ再生_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオViewerで現在位置からBGMのみ再生する();\r
+                       this.tシナリオ_Viewerで現在位置からBGMのみ再生する();\r
                }\r
                private void toolStripButton再生停止_Click( object sender, EventArgs e )\r
                {\r
-                       this.tシナリオViewerを再生停止する();\r
+                       this.tシナリオ_Viewerを再生停止する();\r
                }\r
 \r
                //private void ToolStripMenuItemBeatChipsGeneration_Click( object sender, EventArgs e )                 // Beat Detections\r
@@ -5115,24 +5302,12 @@ namespace DTXCreator
                {\r
                        string filename = "";\r
 \r
-                       #region [ マウスカーソルを待機中に変更 (アプリウインドウ外で右クリックメニュー選択していると、効果がない・・・) ]\r
-                       this.Cursor = Cursors.WaitCursor;\r
-                       #endregion\r
-\r
-\r
                        #region [ BGM, BPM, BEATレーンのレーン番号を取得 ]\r
                        int laneBGM = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BGM" );\r
                        int laneBPM = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BPM" );\r
                        int laneBEAT = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BEAT" );\r
                        #endregion\r
 \r
-                       #region [ BPM,BEATレーンの情報を消去 ]\r
-                       this.mgr選択モード管理者.tレーン上の全チップを選択する( laneBPM );\r
-                       this.tシナリオ・削除();\r
-                       this.mgr選択モード管理者.tレーン上の全チップを選択する( laneBEAT );\r
-                       this.tシナリオ・削除();\r
-                       #endregion\r
-\r
                        #region [ BGMレーンにあるチップを抽出して、beat検出する対象のサウンドファイルを決める ]\r
                        // とりあえずBGMチップは1個しかない前提で進める。追々、複数のBGMチップでも動作するようにはしたい。\r
                        #region [ BGMチップ抽出 ]\r
@@ -5150,7 +5325,7 @@ namespace DTXCreator
                                if ( nBGMチップのindex >= 0 )\r
                                {\r
                                        nBGMチップの小節番号 = c小節.n小節番号0to3599;\r
-                                       filename = this.mgrWAVリスト管理者.tファイル名を絶対パスで返す( c小節.listチップ[ nBGMチップのindex ].n値・整数1to1295 );\r
+                                       filename = this.mgrWAVリスト管理者.tファイル名を絶対パスで返す( c小節.listチップ[ nBGMチップのindex ].n値_整数1to1295);\r
                                        Debug.WriteLine( filename );\r
                                        break;  // とりあえず1個見つけたらbreakしちゃう\r
                                }\r
@@ -5165,9 +5340,24 @@ namespace DTXCreator
                                //}\r
                                //}\r
                        }\r
+                       if ( filename == "" )\r
+                       {\r
+                               MessageBox.Show( "BGMチップが配置されていません。BGMチップを1つ配置してください。", "BGMチップ検出エラー", MessageBoxButtons.OK, MessageBoxIcon.Error );\r
+                               return;\r
+                       }\r
                        #endregion\r
                        #endregion\r
 \r
+                       #region [ マウスカーソルを待機中に変更 (アプリウインドウ外で右クリックメニュー選択していると、効果がない・・・) ]\r
+                       this.Cursor = Cursors.WaitCursor;\r
+                       #endregion\r
+\r
+                       #region [ BPM,BEATレーンの情報を消去 ]\r
+                       this.mgr選択モード管理者.tレーン上の全チップを選択する( laneBPM );\r
+                       this.tシナリオ_削除();\r
+                       this.mgr選択モード管理者.tレーン上の全チップを選択する( laneBEAT );\r
+                       this.tシナリオ_削除();\r
+                       #endregion\r
 \r
 \r
                        #region [ BASSFXのBeat detectionを実行する ]\r
@@ -5383,10 +5573,6 @@ namespace DTXCreator
 \r
                        BPMchipsGeneneration_Main();\r
 \r
-                       #region [ マウスカーソルの形を元に戻す ]\r
-                       this.Cursor = Cursors.Default;\r
-                       #endregion\r
-\r
                        cbd.Dispose();\r
                        cbd = null;\r
 \r
@@ -5398,10 +5584,15 @@ namespace DTXCreator
                        this.pictureBox譜面パネル.Invalidate();\r
                        #endregion\r
 \r
+\r
                        #region [ listBeatPositionsの開放 ]\r
                        listBeatPositions.Clear();\r
                        listBeatPositions = null;\r
                        #endregion\r
+\r
+                       #region [ マウスカーソルの形を元に戻す ]\r
+                       this.Cursor = Cursors.Default;\r
+                       #endregion\r
                }\r
 \r
                //private void ToolStripMenuItemBPMChipsGeneration_Click( object sender, EventArgs e )\r
@@ -5414,12 +5605,12 @@ namespace DTXCreator
                        #region [ BPMレーンとHHレーンを消去(0小節目を除く) ]\r
                        int laneBPM = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BPM" );\r
                        this.mgr選択モード管理者.tレーン上の全チップを選択する( laneBPM, 1 );\r
-                       this.tシナリオ削除();\r
+                       this.tシナリオ_削除();\r
 \r
                        #region [ デバッグ用: HHレーンを消去 ]\r
                        int laneHH = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "HH" );\r
                        this.mgr選択モード管理者.tレーン上の全チップを選択する( laneHH, 1 );\r
-                       this.tシナリオ削除();\r
+                       this.tシナリオ_削除();\r
                        #endregion\r
                        #endregion\r
 \r
@@ -5442,7 +5633,7 @@ namespace DTXCreator
                \r
                                                listBeatPositions.Add(\r
                                                        new CBeatDetect.stBeatPos(\r
-                                                               c小節.listチップ[ index ].f値浮動小数,\r
+                                                               c小節.listチップ[ index ].f値_浮動小数,\r
                                                                n小節番号,\r
                                                                this.mgr譜面管理者.n譜面先頭からみた小節先頭の位置gridを返す( n小節番号 ) + c小節.listチップ[ index ].n位置grid,\r
                                                                c小節.listチップ[ index ].n位置grid,\r
@@ -5600,6 +5791,22 @@ if ( (string)mo[ "ExecutablePath" ] == processname )
                        return target;\r
                }\r
 \r
+               private void calcDifficultyToolStripMenuItem_Click(object sender, EventArgs e)\r
+               {\r
+                       DTXCreator.コード._05.譜面.C難易度自動計算マン f = new コード._05.譜面.C難易度自動計算マン(this);\r
+\r
+      Cメッセージポップアップ pop = new Cメッセージポップアップ(Resources.str難易度計算マン計算中);\r
+      pop.Owner = this;\r
+      pop.Show();\r
+      pop.Refresh();\r
+\r
+                       f.Prepare();\r
+      hScrollBarDLEVEL.Value = f.DLevel;\r
+                       hScrollBarGLEVEL.Value = f.GLevel;\r
+                       hScrollBarBLEVEL.Value = f.BLevel;\r
+      pop.Close();\r
+               }\r
+\r
                //-----------------\r
                #endregion\r
 \r