OSDN Git Service

Merge branch 'feature/37178_プロジェクトとソリューションファイルの英語化' into develop
[dtxmania/dtxmania.git] / DTXCreatorプロジェクト / コード / 02.WAV_BMP_AVI / CWAVリスト管理.cs
diff --git a/DTXCreatorプロジェクト/コード/02.WAV_BMP_AVI/CWAVリスト管理.cs b/DTXCreatorプロジェクト/コード/02.WAV_BMP_AVI/CWAVリスト管理.cs
deleted file mode 100644 (file)
index 754e7ce..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Windows.Forms;\r
-using System.IO;\r
-using System.Threading;\r
-using System.Diagnostics;\r
-using DTXCreator.UndoRedo;\r
-using DTXCreator.譜面;\r
-using FDK;\r
-\r
-namespace DTXCreator.WAV_BMP_AVI\r
-{\r
-       internal class CWAVリスト管理\r
-       {\r
-               public int n現在選択中のItem番号0to1294 = -1;\r
-\r
-               internal delegate void DGサウンドを再生する( int nWAV番号1to1295 );\r
-\r
-               public CWAVリスト管理( Cメインフォーム pメインフォーム, ListView pListViewWAVリスト )\r
-               {\r
-                       this._Form = pメインフォーム;\r
-                       this.listViewWAVリスト = pListViewWAVリスト;\r
-                       tDirectSoundの初期化();\r
-               }\r
-               private void tDirectSoundの初期化()\r
-               {\r
-                       this.sound管理 = new CSound管理( this._Form.Handle );\r
-                       //                      this.sound管理 = new CSound管理( this._Form.Handle, this._Form.appアプリ設定.ViewerInfo.SoundType, 0, 0, this._Form.appアプリ設定.ViewerInfo.ASIODeviceNo );\r
-\r
-                       this.soundPreview = null;\r
-\r
-                       #region [ #26122 2011.8.31 yyagi; ストリーム再生のために、t再生中の処理をする()を定期的に呼び出す処理を追加 ]\r
-                       timerDelegate = new TimerCallback( this.sound管理.t再生中の処理をする );\r
-                       timer = new System.Threading.Timer( timerDelegate, null, 0, 300 );\r
-                       #endregion\r
-               }\r
-\r
-               public ListViewItem tCWAVとListViewItemを生成して返す( int n行番号1to1295 )\r
-               {\r
-                       return this.tWAVをキャッシュから検索して返す_なければ新規生成する( n行番号1to1295 ).t現在の内容から新しいListViewItemを作成して返す();\r
-               }\r
-               public void tDirectSoundの解放()\r
-               {\r
-                       if( this.soundPreview != null )\r
-                       {\r
-                               this.soundPreview.Dispose();\r
-                       }\r
-                       if ( timer != null )\r
-                       {\r
-                               timer.Change( Timeout.Infinite, Timeout.Infinite );\r
-                               timer.Dispose();\r
-                               timer = null;\r
-                       }\r
-                       if ( timerDelegate != null )\r
-                       {\r
-                               timerDelegate = null;\r
-                       }\r
-                       if( this.sound管理 != null )\r
-                       {\r
-                               this.sound管理.Dispose();\r
-                       }\r
-               }\r
-               public void tItemを交換する( int nItem番号1, int nItem番号2 )\r
-               {\r
-                       if( !CUndoRedo管理.bUndoRedoした直後 )\r
-                       {\r
-                               this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<int>( null, new DGUndoを実行する<int>( this.t行交換のUndo ), new DGRedoを実行する<int>( this.t行交換のRedo ), nItem番号1, nItem番号2 ) );\r
-                               this._Form.tUndoRedo用GUIの有効無効を設定する();\r
-                       }\r
-                       CUndoRedo管理.bUndoRedoした直後 = false;\r
-                       this.tItemを交換する_ListViewItem( nItem番号1, nItem番号2 );\r
-                       this.tItemを交換する_WAVキャッシュ( nItem番号1, nItem番号2 );\r
-                       this.tItemを交換する_チップパレット( nItem番号1, nItem番号2 );\r
-                       this.tItemを交換する_譜面上のチップ( nItem番号1, nItem番号2 );\r
-                       this.tItemを交換する_レーン割付チップ( nItem番号1, nItem番号2 );\r
-                       this.tItemを交換する_カーソル移動( nItem番号1, nItem番号2 );\r
-                       this._Form.listViewWAVリスト.Refresh();\r
-                       this._Form.pictureBox譜面パネル.Refresh();\r
-                       this._Form.b未保存 = true;\r
-               }\r
-               public void tItemを選択する( int nItem番号0to1294 )\r
-               {\r
-                       this.n現在選択中のItem番号0to1294 = nItem番号0to1294;\r
-                       this.listViewWAVリスト.Items[ nItem番号0to1294 ].Selected = true;\r
-                       this.listViewWAVリスト.Items[ nItem番号0to1294 ].Focused = true;\r
-               }\r
-               public void tWAVリストにフォーカスを当てる()\r
-               {\r
-                       this.listViewWAVリスト.Focus();\r
-               }\r
-               public CWAV tWAVをキャッシュから検索して返す( int nWAV番号1to1295 )\r
-               {\r
-                       return this.WAVキャッシュ.tWAVをキャッシュから検索して返す( nWAV番号1to1295 );\r
-               }\r
-               public CWAV tWAVをキャッシュから検索して返す_なければ新規生成する( int nWAV番号1to1295 )\r
-               {\r
-                       return this.WAVキャッシュ.tWAVをキャッシュから検索して返す_なければ新規生成する( nWAV番号1to1295 );\r
-               }\r
-               public ListViewItem tWAV番号に対応するListViewItemを返す( int nWAV番号1to1295 )\r
-               {\r
-                       if( ( nWAV番号1to1295 < 1 ) || ( nWAV番号1to1295 > 36 * 36 - 1 ) )\r
-                       {\r
-                               throw new Exception( "WAV番号が範囲外です。--->[" + nWAV番号1to1295 + "]" );\r
-                       }\r
-                       return this.listViewWAVリスト.Items[ nWAV番号1to1295 - 1 ];\r
-               }\r
-               public void tWAV編集のRedo( CWAV wc変更前, CWAV wc変更後 )\r
-               {\r
-                       int num = wc変更後.nWAV番号1to1295;\r
-                       CWAV cwav = this.WAVキャッシュ.tWAVをキャッシュから検索して返す( num );\r
-                       cwav.tコピーfrom( wc変更後 );\r
-                       cwav.tコピーto( this.listViewWAVリスト.Items[ num - 1 ] );\r
-                       this._Form.tWAV_BMP_AVIリストのカーソルを全部同じ行に合わせる( cwav.nWAV番号1to1295 - 1 );\r
-                       this._Form.tタブを選択する( Cメインフォーム.Eタブ種別.WAV );\r
-                       this.listViewWAVリスト.Refresh();\r
-               }\r
-               public void tWAV編集のUndo( CWAV wc変更前, CWAV wc変更後 )\r
-               {\r
-                       int num = wc変更前.nWAV番号1to1295;\r
-                       CWAV cwav = this.WAVキャッシュ.tWAVをキャッシュから検索して返す( num );\r
-                       cwav.tコピーfrom( wc変更前 );\r
-                       cwav.tコピーto( this.listViewWAVリスト.Items[ num - 1 ] );\r
-                       this._Form.tWAV_BMP_AVIリストのカーソルを全部同じ行に合わせる( cwav.nWAV番号1to1295 - 1 );\r
-                       this._Form.tタブを選択する( Cメインフォーム.Eタブ種別.WAV );\r
-                       this.listViewWAVリスト.Refresh();\r
-               }\r
-               public void tサウンドプロパティを開いて編集する( int nWAV番号1to1295, string str相対パスの基本フォルダ )\r
-               {\r
-                       this._Form.dlgチップパレット.t一時的に隠蔽する();\r
-                       CWAV cwav = this.tWAVをキャッシュから検索して返す_なければ新規生成する( nWAV番号1to1295 );\r
-                       ListViewItem item = cwav.t現在の内容から新しいListViewItemを作成して返す();\r
-                       string directoryName = "";\r
-                       if( item.SubItems[ 2 ].Text.Length > 0 )\r
-                       {\r
-                               directoryName = Path.GetDirectoryName( this._Form.strファイルの存在するディレクトリを絶対パスで返す( item.SubItems[ 2 ].Text ) );\r
-                       }\r
-                       Cサウンドプロパティダイアログ cサウンドプロパティダイアログ = new Cサウンドプロパティダイアログ( str相対パスの基本フォルダ, directoryName, new DGサウンドを再生する( this.tプレビュー音を再生する ) );\r
-                       cサウンドプロパティダイアログ.wav = cwav;\r
-                       cサウンドプロパティダイアログ.textBoxラベル.Text = item.SubItems[ 0 ].Text;\r
-                       cサウンドプロパティダイアログ.textBoxWAV番号.Text = item.SubItems[ 1 ].Text;\r
-                       cサウンドプロパティダイアログ.textBoxファイル.Text = item.SubItems[ 2 ].Text;\r
-                       cサウンドプロパティダイアログ.textBox音量.Text = item.SubItems[ 3 ].Text;\r
-                       cサウンドプロパティダイアログ.textBox位置.Text = item.SubItems[ 4 ].Text;\r
-                       cサウンドプロパティダイアログ.hScrollBar音量.Value = cサウンドプロパティダイアログ.wav.n音量0to100;\r
-                       cサウンドプロパティダイアログ.hScrollBar位置.Value = cサウンドプロパティダイアログ.wav.n位置_100to100 + 100;\r
-                       cサウンドプロパティダイアログ.checkBoxBGM.CheckState = cサウンドプロパティダイアログ.wav.bBGMとして使用 ? CheckState.Checked : CheckState.Unchecked;\r
-                       cサウンドプロパティダイアログ.textBoxWAV番号.ForeColor = item.ForeColor;\r
-                       cサウンドプロパティダイアログ.textBoxWAV番号.BackColor = item.BackColor;\r
-                       if( cサウンドプロパティダイアログ.ShowDialog() == DialogResult.OK )\r
-                       {\r
-                               CWAV wav = cサウンドプロパティダイアログ.wav;\r
-                               CWAV cwav3 = new CWAV();\r
-                               cwav3.nWAV番号1to1295 = cサウンドプロパティダイアログ.wav.nWAV番号1to1295;\r
-                               cwav3.strラベル名 = cサウンドプロパティダイアログ.textBoxラベル.Text;\r
-                               cwav3.strファイル名 = cサウンドプロパティダイアログ.textBoxファイル.Text;\r
-                               cwav3.n音量0to100 = cサウンドプロパティダイアログ.hScrollBar音量.Value;\r
-                               cwav3.n位置_100to100 = cサウンドプロパティダイアログ.hScrollBar位置.Value - 100;\r
-                               cwav3.bBGMとして使用 = cサウンドプロパティダイアログ.checkBoxBGM.Checked;\r
-                               cwav3.col文字色 = cサウンドプロパティダイアログ.textBoxWAV番号.ForeColor;\r
-                               cwav3.col背景色 = cサウンドプロパティダイアログ.textBoxWAV番号.BackColor;\r
-                               if( !cwav3.b内容が同じwith( wav ) )\r
-                               {\r
-                                       wav = new CWAV();\r
-                                       wav.tコピーfrom( cサウンドプロパティダイアログ.wav );\r
-                                       this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<CWAV>( null, new DGUndoを実行する<CWAV>( this.tWAV編集のUndo ), new DGRedoを実行する<CWAV>( this.tWAV編集のRedo ), wav, cwav3 ) );\r
-                                       this._Form.tUndoRedo用GUIの有効無効を設定する();\r
-                                       cサウンドプロパティダイアログ.wav.tコピーfrom( cwav3 );\r
-                                       if( this.tWAV番号に対応するListViewItemを返す( nWAV番号1to1295 ) != null )\r
-                                       {\r
-                                               ListViewItem item2 = cサウンドプロパティダイアログ.wav.t現在の内容から新しいListViewItemを作成して返す();\r
-                                               item = this.tWAV番号に対応するListViewItemを返す( nWAV番号1to1295 );\r
-                                               item.SubItems[ 0 ].Text = item2.SubItems[ 0 ].Text;\r
-                                               item.SubItems[ 1 ].Text = item2.SubItems[ 1 ].Text;\r
-                                               item.SubItems[ 2 ].Text = item2.SubItems[ 2 ].Text;\r
-                                               item.SubItems[ 3 ].Text = item2.SubItems[ 3 ].Text;\r
-                                               item.SubItems[ 4 ].Text = item2.SubItems[ 4 ].Text;\r
-                                               item.SubItems[ 5 ].Text = item2.SubItems[ 5 ].Text;\r
-                                               item.ForeColor = item2.ForeColor;\r
-                                               item.BackColor = item2.BackColor;\r
-                                       }\r
-                                       this.listViewWAVリスト.Refresh();\r
-                                       this._Form.b未保存 = true;\r
-                               }\r
-                       }\r
-                       this._Form.dlgチップパレット.t一時的な隠蔽を解除する();\r
-               }\r
-               public void tファイル名の相対パス化( string str基本フォルダ名 )\r
-               {\r
-                       for( int i = 1; i <= 36 * 36 - 1; i++ )\r
-                       {\r
-                               CWAV cwav = this.WAVキャッシュ.tWAVをキャッシュから検索して返す( i );\r
-                               if( ( cwav != null ) && ( cwav.strファイル名.Length > 0 ) )\r
-                               {\r
-                                       try\r
-                                       {\r
-                                               Uri uri = new Uri( str基本フォルダ名 );\r
-                                               cwav.strファイル名 = Uri.UnescapeDataString( uri.MakeRelativeUri( new Uri( cwav.strファイル名 ) ).ToString() ).Replace( '/', '\\' );\r
-                                       }\r
-                                       catch( UriFormatException )\r
-                                       {\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               public string tファイル名を絶対パスで返す( int nWAV番号1to1295 )\r
-               {\r
-                       CWAV wc = this.WAVキャッシュ.tWAVをキャッシュから検索して返す( nWAV番号1to1295 );\r
-                       return this._Form.strファイルの存在するディレクトリを絶対パスで返す( wc.strファイル名 );\r
-               }\r
-               public void tプレビュー音を再生する( CWAV wc )\r
-               {\r
-                       if( ( wc != null ) && ( wc.strファイル名.Length != 0 ) )\r
-                       {\r
-                               string strWavFilenameFullPath = this._Form.strファイルの存在するディレクトリを絶対パスで返す( wc.strファイル名 );\r
-                               try\r
-                               {\r
-                                       bool dtxmProcess = this._Form.DetectDTXManiaProcess();\r
-                                       if ( dtxmProcess != false )     // DTXManiaがViewerとして起動中なら\r
-                                       {\r
-//Debug.WriteLine( "DTXManiaで再生" );\r
-                                               // DTXManiaで再生する\r
-                                               string strDTXViewerのパス = this._Form.strDTXCのあるフォルダ名 + this._Form.appアプリ設定.ViewerInfo.Path;\r
-                                               Process.Start( strDTXViewerのパス,\r
-                                                       "-V" + wc.n音量0to100.ToString() + "," + wc.n位置_100to100 + "," +\r
-                                                       "\"" + strWavFilenameFullPath + "\"" ).WaitForInputIdle( 20 * 1000 );\r
-                                       }\r
-                                       else\r
-                                       {\r
-//Debug.WriteLine( "DTXCで再生" );\r
-                                               // さもなくば、DTXC内で再生する\r
-                                               try\r
-                                               {\r
-                                                       this.tプレビュー音を停止する();\r
-                                               }\r
-                                               catch   // DTXMania終了後はDirectSoundの再初期化が必要\r
-                                               {\r
-                                                       tDirectSoundの解放();\r
-                                                       tDirectSoundの初期化();\r
-                                               }\r
-                                               this.soundPreview = this.sound管理.tサウンドを生成する( strWavFilenameFullPath );\r
-                                               this.soundPreview.n音量 = wc.n音量0to100;\r
-                                               this.soundPreview.n位置 = wc.n位置_100to100;\r
-                                               this.soundPreview.t再生を開始する();\r
-                                       }\r
-                               }\r
-                               catch\r
-                               {\r
-                               }\r
-                       }\r
-               }\r
-               public void tプレビュー音を再生する( int nWAV番号1to1295 )\r
-               {\r
-                       CWAV wc = this.WAVキャッシュ.tWAVをキャッシュから検索して返す( nWAV番号1to1295 );\r
-                       this.tプレビュー音を再生する( wc );\r
-               }\r
-               public void tプレビュー音を停止する()\r
-               {\r
-                       if( this.soundPreview != null )\r
-                       {\r
-                               this.soundPreview.t再生を停止する();\r
-                       }\r
-               }\r
-               public void t行交換のRedo( int n変更前のItem番号0to1294, int n変更後のItem番号0to1294 )\r
-               {\r
-                       CUndoRedo管理.bUndoRedoした直後 = true;\r
-                       this.tItemを交換する( n変更前のItem番号0to1294, n変更後のItem番号0to1294 );\r
-               }\r
-               public void t行交換のUndo( int n変更前のItem番号0to1294, int n変更後のItem番号0to1294 )\r
-               {\r
-                       CUndoRedo管理.bUndoRedoした直後 = true;\r
-                       this.tItemを交換する( n変更前のItem番号0to1294, n変更後のItem番号0to1294 );\r
-               }\r
-               public void t新規生成のRedo( CWAV wc生成前はNull, CWAV wc生成されたWAVの複製 )\r
-               {\r
-                       int num = wc生成されたWAVの複製.nWAV番号1to1295;\r
-                       CWAV cwav = this.WAVキャッシュ.tWAVをキャッシュから検索して返す_なければ新規生成する( num );\r
-                       cwav.tコピーfrom( wc生成されたWAVの複製 );\r
-                       cwav.tコピーto( this.listViewWAVリスト.Items[ num - 1 ] );\r
-                       this._Form.tタブを選択する( Cメインフォーム.Eタブ種別.WAV );\r
-                       this.listViewWAVリスト.Refresh();\r
-               }\r
-               public void t新規生成のUndo( CWAV wc生成前はNull, CWAV wc生成されたWAVの複製 )\r
-               {\r
-                       int num = wc生成されたWAVの複製.nWAV番号1to1295;\r
-                       new CWAV().tコピーto( this.listViewWAVリスト.Items[ num - 1 ] );\r
-                       this.WAVキャッシュ.tWAVをキャッシュから削除する( num );\r
-                       this._Form.tタブを選択する( Cメインフォーム.Eタブ種別.WAV );\r
-                       this.listViewWAVリスト.Refresh();\r
-               }\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private Cメインフォーム _Form;\r
-               private ListView listViewWAVリスト;\r
-               private CSound soundPreview;\r
-               private CSound管理 sound管理 = null;\r
-               private CWAVキャッシュ WAVキャッシュ = new CWAVキャッシュ();\r
-               private TimerCallback timerDelegate;\r
-               private System.Threading.Timer timer;\r
-\r
-               private void tItemを交換する_ListViewItem( int nItem番号1, int nItem番号2 )\r
-               {\r
-                       int num = nItem番号1 + 1;\r
-                       int num2 = nItem番号2 + 1;\r
-                       CWAV cwav = new CWAV();\r
-                       cwav.tコピーfrom( this.listViewWAVリスト.Items[ nItem番号1 ] );\r
-                       cwav.nWAV番号1to1295 = num2;\r
-                       CWAV cwav2 = new CWAV();\r
-                       cwav2.tコピーfrom( this.listViewWAVリスト.Items[ nItem番号2 ] );\r
-                       cwav2.nWAV番号1to1295 = num;\r
-                       cwav2.tコピーto( this.listViewWAVリスト.Items[ nItem番号1 ] );\r
-                       cwav.tコピーto( this.listViewWAVリスト.Items[ nItem番号2 ] );\r
-               }\r
-               private void tItemを交換する_WAVキャッシュ( int nItem番号1, int nItem番号2 )\r
-               {\r
-                       int num = nItem番号1 + 1;\r
-                       int num2 = nItem番号2 + 1;\r
-                       CWAV wc = this.WAVキャッシュ.tWAVをキャッシュから検索して返す( num );\r
-                       CWAV cwav2 = this.WAVキャッシュ.tWAVをキャッシュから検索して返す( num2 );\r
-                       CWAV cwav3 = new CWAV();\r
-                       cwav3.tコピーfrom( wc );\r
-                       wc.tコピーfrom( cwav2 );\r
-                       wc.nWAV番号1to1295 = num;\r
-                       cwav2.tコピーfrom( cwav3 );\r
-                       cwav2.nWAV番号1to1295 = num2;\r
-               }\r
-               private void tItemを交換する_カーソル移動( int nItem番号1, int nItem番号2 )\r
-               {\r
-                       this.tItemを選択する( nItem番号2 );\r
-               }\r
-               private void tItemを交換する_チップパレット( int nItem番号1, int nItem番号2 )\r
-               {\r
-                       this._Form.dlgチップパレット.tパレットセルの番号を置換する( 0, nItem番号1 + 1, nItem番号2 + 1 );\r
-               }\r
-               private void tItemを交換する_レーン割付チップ( int nItem番号1, int nItem番号2 )\r
-               {\r
-                       for( int i = 0; i < this._Form.mgr譜面管理者.listレーン.Count; i++ )\r
-                       {\r
-                               Cレーン cレーン = this._Form.mgr譜面管理者.listレーン[ i ];\r
-                               if( ( ( cレーン.eレーン種別 == Cレーン.E種別.WAV ) || ( cレーン.eレーン種別 == Cレーン.E種別.GtV ) ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsV ) )\r
-                               {\r
-                                       if( cレーン.nレーン割付チップ_表0or1to1295 == ( nItem番号1 + 1 ) )\r
-                                       {\r
-                                               cレーン.nレーン割付チップ_表0or1to1295 = nItem番号2 + 1;\r
-                                       }\r
-                                       else if( cレーン.nレーン割付チップ_表0or1to1295 == ( nItem番号2 + 1 ) )\r
-                                       {\r
-                                               cレーン.nレーン割付チップ_表0or1to1295 = nItem番号1 + 1;\r
-                                       }\r
-                                       if( cレーン.nレーン割付チップ_裏0or1to1295 == ( nItem番号1 + 1 ) )\r
-                                       {\r
-                                               cレーン.nレーン割付チップ_裏0or1to1295 = nItem番号2 + 1;\r
-                                       }\r
-                                       else if( cレーン.nレーン割付チップ_裏0or1to1295 == ( nItem番号2 + 1 ) )\r
-                                       {\r
-                                               cレーン.nレーン割付チップ_裏0or1to1295 = nItem番号1 + 1;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               private void tItemを交換する_譜面上のチップ( int nItem番号1, int nItem番号2 )\r
-               {\r
-                       foreach( KeyValuePair<int, C小節> pair in this._Form.mgr譜面管理者.dic小節 )\r
-                       {\r
-                               C小節 c小節 = pair.Value;\r
-                               for( int i = 0; i < c小節.listチップ.Count; i++ )\r
-                               {\r
-                                       Cチップ cチップ = c小節.listチップ[ i ];\r
-                                       switch( this._Form.mgr譜面管理者.listレーン[ cチップ.nレーン番号0to ].eレーン種別 )\r
-                                       {\r
-                                               case Cレーン.E種別.WAV:\r
-                                               case Cレーン.E種別.GtV:\r
-                                               case Cレーン.E種別.BsV:\r
-                                                       if( cチップ.n値_整数1to1295 == ( nItem番号1 + 1 ) )\r
-                                                       {\r
-                                                               cチップ.n値_整数1to1295 = nItem番号2 + 1;\r
-                                                       }\r
-                                                       else if( cチップ.n値_整数1to1295 == ( nItem番号2 + 1 ) )\r
-                                                       {\r
-                                                               cチップ.n値_整数1to1295 = nItem番号1 + 1;\r
-                                                       }\r
-                                                       break;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               //-----------------\r
-               #endregion\r
-       }\r
-}\r