+++ /dev/null
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Windows.Forms;\r
-using System.IO;\r
-using DTXCreator.譜面;\r
-using DTXCreator.UndoRedo;\r
-\r
-namespace DTXCreator.WAV_BMP_AVI\r
-{\r
- internal class CAVIリスト管理\r
- {\r
- public int n現在選択中のItem番号0to1294 = -1;\r
-\r
- public CAVIリスト管理( Cメインフォーム pメインフォーム, ListView pListViewAVIリスト )\r
- {\r
- this._Form = pメインフォーム;\r
- this.listViewAVIリスト = pListViewAVIリスト;\r
- }\r
- public void tAVIリストにフォーカスを当てる()\r
- {\r
- this.listViewAVIリスト.Focus();\r
- }\r
- public CAVI tAVIをキャッシュから検索して返す( int nAVI番号1to1295 )\r
- {\r
- return this.AVIキャッシュ.tAVIをキャッシュから検索して返す( nAVI番号1to1295 );\r
- }\r
- public CAVI tAVIをキャッシュから検索して返す_なければ新規生成する( int nAVI番号1to1295 )\r
- {\r
- return this.AVIキャッシュ.tAVIをキャッシュから検索して返す_なければ新規生成する( nAVI番号1to1295 );\r
- }\r
- public ListViewItem tAVI番号に対応するListViewItemを返す( int nAVI番号1to1295 )\r
- {\r
- if( ( nAVI番号1to1295 < 1 ) || ( nAVI番号1to1295 > 36 * 36 - 1 ) )\r
- {\r
- throw new Exception( "AVI番号が範囲外です。--->[" + nAVI番号1to1295 + "]" );\r
- }\r
- return this.listViewAVIリスト.Items[ nAVI番号1to1295 - 1 ];\r
- }\r
- public void tAVI編集のRedo( CAVI ac変更前, CAVI ac変更後 )\r
- {\r
- int num = ac変更後.nAVI番号1to1295;\r
- CAVI cavi = this.AVIキャッシュ.tAVIをキャッシュから検索して返す( num );\r
- cavi.tコピーfrom( ac変更後 );\r
- cavi.tコピーto( this.listViewAVIリスト.Items[ num - 1 ] );\r
- this._Form.tWAV_BMP_AVIリストのカーソルを全部同じ行に合わせる( cavi.nAVI番号1to1295 - 1 );\r
- this._Form.tタブを選択する( Cメインフォーム.Eタブ種別.AVI );\r
- this.listViewAVIリスト.Refresh();\r
- }\r
- public void tAVI編集のUndo( CAVI ac変更前, CAVI ac変更後 )\r
- {\r
- int num = ac変更前.nAVI番号1to1295;\r
- CAVI cavi = this.AVIキャッシュ.tAVIをキャッシュから検索して返す( num );\r
- cavi.tコピーfrom( ac変更前 );\r
- cavi.tコピーto( this.listViewAVIリスト.Items[ num - 1 ] );\r
- this._Form.tWAV_BMP_AVIリストのカーソルを全部同じ行に合わせる( cavi.nAVI番号1to1295 - 1 );\r
- this._Form.tタブを選択する( Cメインフォーム.Eタブ種別.AVI );\r
- this.listViewAVIリスト.Refresh();\r
- }\r
- public ListViewItem tCAVIとListViewItemを生成して返す( int n行番号1to1295 )\r
- {\r
- return this.tAVIをキャッシュから検索して返す_なければ新規生成する( n行番号1to1295 ).t現在の内容から新しいListViewItemを作成して返す();\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を交換する_AVIキャッシュ( 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.listViewAVIリスト.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.listViewAVIリスト.Items[ nItem番号0to1294 ].Selected = true;\r
- this.listViewAVIリスト.Items[ nItem番号0to1294 ].Focused = true;\r
- }\r
- public void tファイル名の相対パス化( string str基本フォルダ名 )\r
- {\r
- for( int i = 1; i <= 36 * 36 - 1; i++ )\r
- {\r
- CAVI cavi = this.AVIキャッシュ.tAVIをキャッシュから検索して返す( i );\r
- if( ( cavi != null ) && ( cavi.strファイル名.Length > 0 ) )\r
- {\r
- try\r
- {\r
- Uri uri = new Uri( str基本フォルダ名 );\r
- cavi.strファイル名 = Uri.UnescapeDataString( uri.MakeRelativeUri( new Uri( cavi.strファイル名 ) ).ToString() ).Replace( '/', '\\' );\r
- }\r
- catch( UriFormatException )\r
- {\r
- }\r
- }\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( CAVI ac生成前はNull, CAVI ac生成されたAVIの複製 )\r
- {\r
- int num = ac生成されたAVIの複製.nAVI番号1to1295;\r
- CAVI cavi = this.AVIキャッシュ.tAVIをキャッシュから検索して返す_なければ新規生成する( num );\r
- cavi.tコピーfrom( ac生成されたAVIの複製 );\r
- cavi.tコピーto( this.listViewAVIリスト.Items[ num - 1 ] );\r
- this._Form.tタブを選択する( Cメインフォーム.Eタブ種別.AVI );\r
- this.listViewAVIリスト.Refresh();\r
- }\r
- public void t新規生成のUndo( CAVI ac生成前はNull, CAVI ac生成されたAVIの複製 )\r
- {\r
- int num = ac生成されたAVIの複製.nAVI番号1to1295;\r
- new CAVI().tコピーto( this.listViewAVIリスト.Items[ num - 1 ] );\r
- this.AVIキャッシュ.tAVIをキャッシュから削除する( num );\r
- this._Form.tタブを選択する( Cメインフォーム.Eタブ種別.AVI );\r
- this.listViewAVIリスト.Refresh();\r
- }\r
- public void t動画プロパティを開いて編集する( int nAVI番号1to1295, string str相対パスの基本フォルダ )\r
- {\r
- this._Form.dlgチップパレット.t一時的に隠蔽する();\r
- CAVI cavi = this.tAVIをキャッシュから検索して返す_なければ新規生成する( nAVI番号1to1295 );\r
- ListViewItem item = cavi.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 );\r
- c動画プロパティダイアログ.avi = cavi;\r
- c動画プロパティダイアログ.textBoxラベル.Text = item.SubItems[ 0 ].Text;\r
- c動画プロパティダイアログ.textBoxAVI番号.Text = item.SubItems[ 1 ].Text;\r
- c動画プロパティダイアログ.textBoxファイル.Text = item.SubItems[ 2 ].Text;\r
- c動画プロパティダイアログ.textBoxAVI番号.ForeColor = item.ForeColor;\r
- c動画プロパティダイアログ.textBoxAVI番号.BackColor = item.BackColor;\r
- if( c動画プロパティダイアログ.ShowDialog() == DialogResult.OK )\r
- {\r
- CAVI avi = c動画プロパティダイアログ.avi;\r
- CAVI cavi3 = new CAVI();\r
- cavi3.nAVI番号1to1295 = c動画プロパティダイアログ.avi.nAVI番号1to1295;\r
- cavi3.strラベル名 = c動画プロパティダイアログ.textBoxラベル.Text;\r
- cavi3.strファイル名 = c動画プロパティダイアログ.textBoxファイル.Text;\r
- cavi3.col文字色 = c動画プロパティダイアログ.textBoxAVI番号.ForeColor;\r
- cavi3.col背景色 = c動画プロパティダイアログ.textBoxAVI番号.BackColor;\r
- if( !cavi3.b内容が同じwith( avi ) )\r
- {\r
- avi = new CAVI();\r
- avi.tコピーfrom( c動画プロパティダイアログ.avi );\r
- this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<CAVI>( null, new DGUndoを実行する<CAVI>( this.tAVI編集のUndo ), new DGRedoを実行する<CAVI>( this.tAVI編集のRedo ), avi, cavi3 ) );\r
- this._Form.tUndoRedo用GUIの有効無効を設定する();\r
- c動画プロパティダイアログ.avi.tコピーfrom( cavi3 );\r
- if( this.tAVI番号に対応するListViewItemを返す( nAVI番号1to1295 ) != null )\r
- {\r
- ListViewItem item2 = c動画プロパティダイアログ.avi.t現在の内容から新しいListViewItemを作成して返す();\r
- item = this.tAVI番号に対応するListViewItemを返す( nAVI番号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.ForeColor = item2.ForeColor;\r
- item.BackColor = item2.BackColor;\r
- }\r
- this.listViewAVIリスト.Refresh();\r
- this._Form.b未保存 = true;\r
- }\r
- }\r
- this._Form.dlgチップパレット.t一時的な隠蔽を解除する();\r
- }\r
-\r
- #region [ private ]\r
- //-----------------\r
- private Cメインフォーム _Form;\r
- private CAVIキャッシュ AVIキャッシュ = new CAVIキャッシュ();\r
- private ListView listViewAVIリスト;\r
-\r
- private void tItemを交換する_AVIキャッシュ( int nItem番号1, int nItem番号2 )\r
- {\r
- int num = nItem番号1 + 1;\r
- int num2 = nItem番号2 + 1;\r
- CAVI ac = this.AVIキャッシュ.tAVIをキャッシュから検索して返す( num );\r
- CAVI cavi2 = this.AVIキャッシュ.tAVIをキャッシュから検索して返す( num2 );\r
- CAVI cavi3 = new CAVI();\r
- cavi3.tコピーfrom( ac );\r
- ac.tコピーfrom( cavi2 );\r
- ac.nAVI番号1to1295 = num;\r
- cavi2.tコピーfrom( cavi3 );\r
- cavi2.nAVI番号1to1295 = num2;\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
- CAVI cavi = new CAVI();\r
- cavi.tコピーfrom( this.listViewAVIリスト.Items[ nItem番号1 ] );\r
- cavi.nAVI番号1to1295 = num2;\r
- CAVI cavi2 = new CAVI();\r
- cavi2.tコピーfrom( this.listViewAVIリスト.Items[ nItem番号2 ] );\r
- cavi2.nAVI番号1to1295 = num;\r
- cavi2.tコピーto( this.listViewAVIリスト.Items[ nItem番号1 ] );\r
- cavi.tコピーto( this.listViewAVIリスト.Items[ nItem番号2 ] );\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パレットセルの番号を置換する( 2, 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種別.AVI )\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
- if( this._Form.mgr譜面管理者.listレーン[ cチップ.nレーン番号0to ].eレーン種別 == Cレーン.E種別.AVI )\r
- {\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
- }\r
- }\r
- }\r
- }\r
- //-----------------\r
- #endregion\r
- }\r
-}\r