2 using System.Collections.Generic;
\r
3 using System.Globalization;
\r
4 using System.Threading;
\r
5 using System.Windows.Forms;
\r
6 using System.Drawing;
\r
7 using System.ComponentModel;
\r
10 using System.Diagnostics;
\r
11 using System.Xml.Serialization;
\r
12 using DTXCreator.チップパレット関連;
\r
13 using DTXCreator.譜面;
\r
14 using DTXCreator.WAV_BMP_AVI;
\r
15 using DTXCreator.UndoRedo;
\r
16 using DTXCreator.オプション関連;
\r
17 using DTXCreator.汎用;
\r
18 using DTXCreator.Properties;
\r
21 namespace DTXCreator
\r
23 public partial class Cメインフォーム : Form
\r
31 this.InitializeComponent();
\r
42 public AppSetting appアプリ設定;
\r
43 public Cチップパレット dlgチップパレット;
\r
44 private Cオプション管理 mgrオプション管理者 = null;
\r
45 private C選択モード管理 mgr選択モード管理者 = null;
\r
46 private C編集モード管理 mgr編集モード管理者 = null;
\r
47 internal C譜面管理 mgr譜面管理者 = null;
\r
48 internal CWAVリスト管理 mgrWAVリスト管理者 = null;
\r
49 internal CBMPリスト管理 mgrBMPリスト管理者 = null;
\r
50 internal CAVIリスト管理 mgrAVIリスト管理者 = null;
\r
51 internal CUndoRedo管理 mgrUndoRedo管理者 = null;
\r
52 internal Cクリップボード cbクリップボード = null;
\r
54 internal MakeTempDTX makeTempDTX = null;
\r
56 public bool b選択モードである
\r
60 if( this.toolStripButton選択モード.CheckState != CheckState.Checked )
\r
67 public bool b編集モードである
\r
71 if( this.toolStripButton編集モード.CheckState != CheckState.Checked )
\r
78 public decimal dc現在のBPM
\r
82 return this.numericUpDownBPM.Value;
\r
85 internal int n現在選択中のWAV・BMP・AVIリストの行番号0to1294;
\r
88 /// DTXC.exe のあるフォルダの絶対パス。
\r
90 public string strDTXCのあるフォルダ名;
\r
93 /// 各種ファイル(WAVなど)の相対パスの基点となるフォルダの絶対パス。
\r
95 public string str作業フォルダ名;
\r
98 /// 現在作成中のDTXファイル名。パスは含まない。(例:"test.dtx")
\r
100 public string strDTXファイル名;
\r
103 /// <para>未保存の場合にtrueとなり、ウィンドウタイトルに[*]が加えられる。</para>
\r
113 // 現状と値が違うときだけ更新する。
\r
115 if( this._b未保存 != value )
\r
117 this._b未保存 = value; // #24133 2011.1.14 yyagi: 「代入後にif文分岐」するよう、代入を頭に移動。
\r
121 string strタイトル = Resources.strデフォルトウィンドウタイトル;
\r
123 if( this.strDTXファイル名.Length > 0 )
\r
124 strタイトル = this.strDTXファイル名;
\r
131 // 変更ありかつ未保存なら「*」を付ける
\r
133 this.Text = "DTXC* [" + strタイトル + "]";
\r
134 this.toolStripMenuItem上書き保存.Enabled = true;
\r
135 this.toolStripButton上書き保存.Enabled = true;
\r
139 // 保存後変更がないなら「*」なない
\r
141 this.Text = "DTXC [" + strタイトル + "]";
\r
142 this.toolStripMenuItem上書き保存.Enabled = false;
\r
143 this.toolStripButton上書き保存.Enabled = false;
\r
149 //-----------------
\r
155 #region [ アプリの起動・初期化、終了 ]
\r
156 //-----------------
\r
157 private void tアプリ起動時に一度だけ行う初期化処理()
\r
161 #region [ アプリ設定オブジェクトを生成する。]
\r
162 //-----------------
\r
163 this.appアプリ設定 = new AppSetting();
\r
164 //-----------------
\r
167 #region [ DTXCreator.exe の存在するフォルダを取得する。 ]
\r
168 //-----------------
\r
169 this.strDTXCのあるフォルダ名 = Directory.GetCurrentDirectory() + @"\";
\r
170 //-----------------
\r
172 #region [ 作業フォルダを取得する。]
\r
173 //-----------------
\r
174 this.str作業フォルダ名 = this.strDTXCのあるフォルダ名;
\r
175 //-----------------
\r
178 #region [ デザイナで設定できないイベントを実装する。]
\r
179 //-----------------
\r
180 this.splitContainerタブと譜面を分割.MouseWheel += new MouseEventHandler( this.splitContainerタブと譜面を分割_MouseWheel );
\r
181 //-----------------
\r
184 #region [ 全体を通して必要な管理者オブジェクトを生成する。]
\r
185 //-----------------
\r
186 this.mgrオプション管理者 = new Cオプション管理( this );
\r
187 //-----------------
\r
190 #region [ クリップボードオブジェクトを生成する。 ]
\r
191 //-----------------
\r
192 this.cbクリップボード = new Cクリップボード( this );
\r
193 //-----------------
\r
196 #region [ Viewer再生用一時DTX生成オブジェクトを生成する。 ]
\r
197 makeTempDTX = new MakeTempDTX();
\r
200 #region [ 譜面を初期化する。]
\r
201 //-----------------
\r
203 //-----------------
\r
206 #region [ アプリ設定ファイル (DTXCreatorSetting.config) を読み込む。]
\r
207 //-----------------
\r
208 this.tアプリ設定の読み込み(); // 譜面の生成後に行うこと。(GUIイベント発生時にmgr各種が使われるため。)
\r
209 //-----------------
\r
212 #region [ チップパレットウィンドウの初期位置を変更する。(読み込んだアプリ設定に合わせる。)]
\r
213 //-----------------
\r
214 this.dlgチップパレット.Left = this.Left + ( ( this.Width - this.dlgチップパレット.Width ) / 2 );
\r
215 this.dlgチップパレット.Top = this.Top + ( ( this.Height - this.dlgチップパレット.Height ) / 2 );
\r
216 //-----------------
\r
219 #region [ [ファイル]メニューに、最近使ったファイルを追加する。]
\r
220 //-----------------
\r
221 this.t最近使ったファイルをFileメニューへ追加する();
\r
222 //-----------------
\r
226 // ファイル指定があればそれを開く。
\r
228 #region [ コマンドライン引数にファイルの指定があるならそれを開く。 ]
\r
229 //-----------------
\r
230 string[] commandLineArgs = Environment.GetCommandLineArgs();
\r
231 if( ( commandLineArgs.Length > 1 ) && File.Exists( commandLineArgs[ 1 ] ) )
\r
232 this.t演奏ファイルを開いて読み込む( commandLineArgs[ 1 ] );
\r
233 //-----------------
\r
236 private void tアプリ終了時に行う終了処理()
\r
238 #region [ アプリ設定ファイル (DTXCreatorSetting.config) を保存する。]
\r
239 //-----------------
\r
241 //-----------------
\r
244 #region [ 各管理者で必要な終了処理を行う。]
\r
245 //-----------------
\r
246 this.mgrWAVリスト管理者.tDirectSoundの解放();
\r
247 //-----------------
\r
250 #region [ Viewer再生用一時DTX生成オブジェクトの終了処理を行う。 ]
\r
251 makeTempDTX.Dispose();
\r
252 makeTempDTX = null;
\r
255 private void tアプリ設定の読み込み()
\r
257 string str設定ファイル名 =
\r
258 this.strDTXCのあるフォルダ名 + @"DTXCreatorSetting.config";
\r
263 #region [ アプリ設定ファイルを読み込む。 → 失敗したら内容リセットして継続する。]
\r
264 //-----------------
\r
265 if( File.Exists( str設定ファイル名 ) )
\r
269 // アプリ設定ファイル(XML形式)を this.appアプリ設定 に読み込む。
\r
271 var serializer = new XmlSerializer( typeof( AppSetting ) );
\r
272 var stream = new FileStream( str設定ファイル名, FileMode.Open );
\r
273 this.appアプリ設定 = (AppSetting) serializer.Deserialize( stream );
\r
278 // 失敗時:内容をリセットして継続する。
\r
280 this.appアプリ設定 = new AppSetting();
\r
284 // 反復要素とか足りなかったりしてもリセットする。
\r
286 if( this.appアプリ設定.SoundListColumnWidth.Length != 5
\r
287 || this.appアプリ設定.GraphicListColumnWidth.Length != 4
\r
288 || this.appアプリ設定.MovieListColumnWidth.Length != 3
\r
289 || !this.appアプリ設定.bSameVersion() )
\r
291 this.appアプリ設定 = new AppSetting();
\r
297 this.appアプリ設定.Confirm();
\r
299 //-----------------
\r
303 // 読み込んだアプリ設定を DTXCreator に反映する。
\r
305 #region [ ウィンドウの位置とサイズ ]
\r
306 //-----------------
\r
307 this.SetDesktopBounds( this.appアプリ設定.X, this.appアプリ設定.Y, this.appアプリ設定.Width, this.appアプリ設定.Height );
\r
308 //-----------------
\r
311 //-----------------
\r
312 if( this.appアプリ設定.Maximized )
\r
313 this.WindowState = FormWindowState.Maximized;
\r
314 //-----------------
\r
316 #region [ タブ(左側)と譜面(右側)の表示幅の割合 ]
\r
317 //-----------------
\r
318 this.splitContainerタブと譜面を分割.SplitterDistance =
\r
319 this.appアプリ設定.SplitterDistance;
\r
320 //-----------------
\r
322 #region [ WAV・BMP・AVIリストの各列の幅 ]
\r
323 //-----------------
\r
324 for( int i = 0; i < 5; i++ )
\r
325 this.listViewWAVリスト.Columns[ i ].Width = this.appアプリ設定.SoundListColumnWidth[ i ];
\r
327 for( int i = 0; i < 4; i++ )
\r
328 this.listViewBMPリスト.Columns[ i ].Width = this.appアプリ設定.GraphicListColumnWidth[ i ];
\r
330 for( int i = 0; i < 3; i++ )
\r
331 this.listViewAVIリスト.Columns[ i ].Width = this.appアプリ設定.MovieListColumnWidth[ i ];
\r
332 //-----------------
\r
335 //-----------------
\r
336 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
337 this.toolStripComboBox譜面拡大率.SelectedIndex =
\r
338 this.appアプリ設定.HViewScaleIndex;
\r
339 //-----------------
\r
342 //-----------------
\r
343 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
344 this.toolStripComboBoxガイド間隔.SelectedIndex =
\r
345 this.appアプリ設定.GuideIndex;
\r
346 //-----------------
\r
349 //-----------------
\r
350 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
351 this.toolStripComboBox演奏速度.SelectedIndex = 5;
\r
352 //-----------------
\r
355 //-----------------
\r
357 this.appアプリ設定.LastWorkFolder;
\r
359 if( Directory.Exists( this.str作業フォルダ名 ) )
\r
361 Directory.SetCurrentDirectory( this.str作業フォルダ名 );
\r
365 // 作業フォルダが既になくなってる場合はカレントフォルダを適用。
\r
367 this.str作業フォルダ名 = Directory.GetCurrentDirectory();
\r
369 //-----------------
\r
371 #region [ レーン表示/非表示の反映 #26005 2011.8.29 yyagi; added ]
\r
372 for ( int i = 0; i < this.appアプリ設定.LanesInfo.Count; i++ )
\r
374 for ( int j = 0; j < this.mgr譜面管理者.listレーン.Count; j++ )
\r
376 if ( this.mgr譜面管理者.listレーン[ j ].strレーン名 == this.appアプリ設定.LanesInfo[ i ].Name )
\r
378 this.mgr譜面管理者.listレーン[ j ].bIsVisible = this.appアプリ設定.LanesInfo[ i ].Checked;
\r
383 this.mgr譜面管理者.tRefreshDisplayLanes();
\r
386 private void tアプリ設定の保存()
\r
388 string str設定ファイル名 =
\r
389 this.strDTXCのあるフォルダ名 + @"DTXCreatorSetting.config";
\r
392 // DTXCreator から保存すべきアプリ設定を取得する。
\r
394 #region [ #23729 2010.11.22 yyagi: to get DTXC's x, y, width & height correctly, set windowstate "normal" if it is "minimized." ]
\r
395 if (this.WindowState == FormWindowState.Minimized)
\r
397 this.WindowState = FormWindowState.Normal;
\r
400 #region [ ウィンドウの位置とサイズ ]
\r
401 //-----------------
\r
402 this.appアプリ設定.X = this.Location.X;
\r
403 this.appアプリ設定.Y = this.Location.Y;
\r
404 this.appアプリ設定.Width = this.Width;
\r
405 this.appアプリ設定.Height = this.Height;
\r
406 //-----------------
\r
409 //-----------------
\r
410 this.appアプリ設定.Maximized =
\r
411 ( this.WindowState == FormWindowState.Maximized ) ? true : false;
\r
412 //-----------------
\r
414 #region [ タブ(左側)と譜面(右側)の表示幅の割合 ]
\r
415 //-----------------
\r
416 this.appアプリ設定.SplitterDistance =
\r
417 this.splitContainerタブと譜面を分割.SplitterDistance;
\r
418 //-----------------
\r
420 #region [ WAV・BMP・AVIリストの各列の幅 ]
\r
421 //-----------------
\r
422 for( int i = 0; i < 5; i++ )
\r
423 this.appアプリ設定.SoundListColumnWidth[ i ] = this.listViewWAVリスト.Columns[ i ].Width;
\r
425 for( int i = 0; i < 4; i++ )
\r
426 this.appアプリ設定.GraphicListColumnWidth[ i ] = this.listViewBMPリスト.Columns[ i ].Width;
\r
428 for( int i = 0; i < 3; i++ )
\r
429 this.appアプリ設定.MovieListColumnWidth[ i ] = this.listViewAVIリスト.Columns[ i ].Width;
\r
430 //-----------------
\r
433 //-----------------
\r
434 this.appアプリ設定.HViewScaleIndex =
\r
435 this.toolStripComboBox譜面拡大率.SelectedIndex;
\r
436 //-----------------
\r
439 //-----------------
\r
440 this.appアプリ設定.GuideIndex =
\r
441 this.toolStripComboBoxガイド間隔.SelectedIndex;
\r
442 //-----------------
\r
445 //-----------------
\r
446 this.appアプリ設定.LastWorkFolder =
\r
448 //-----------------
\r
450 #region [ レーン表示/非表示 #26005 2011.8.29 yyagi; added ]
\r
451 this.appアプリ設定.LanesInfo.Clear();
\r
452 foreach ( DTXCreator.譜面.Cレーン c in this.mgr譜面管理者.listレーン )
\r
454 this.appアプリ設定.AddLanesInfo( c.strレーン名, c.bIsVisible );
\r
461 #region [ アプリ設定をXML形式ファイルで出力する。 ]
\r
462 //-----------------
\r
463 var serializer = new XmlSerializer( typeof( AppSetting ) );
\r
464 var stream = new FileStream( str設定ファイル名, FileMode.Create );
\r
465 serializer.Serialize( (Stream) stream, this.appアプリ設定 );
\r
467 //-----------------
\r
470 //-----------------
\r
473 //-----------------
\r
474 private void tシナリオ・新規作成()
\r
478 #region [ 未保存なら保存する。→ キャンセルされた場合はここで中断。]
\r
479 //-----------------
\r
480 if( this.t未保存なら保存する() == DialogResult.Cancel )
\r
482 //-----------------
\r
488 #region [「初期化中です」ポップアップを表示する。]
\r
489 //-----------------
\r
490 this.dlgチップパレット.t一時的に隠蔽する();
\r
493 = new Cメッセージポップアップ( Resources.str初期化中ですMSG + Environment.NewLine + Resources.strしばらくお待ち下さいMSG );
\r
497 //-----------------
\r
502 #region [「初期化中です」ポップアップを閉じる。]
\r
503 //-----------------
\r
505 this.dlgチップパレット.t一時的な隠蔽を解除する();
\r
507 this.Refresh(); // リスト内容等を消すために再描画
\r
508 //-----------------
\r
511 private void t譜面を初期化する()
\r
513 this.strDTXファイル名 = "";
\r
517 #region [ 基本情報タブの初期化 ]
\r
518 //-----------------
\r
519 CUndoRedo管理.bUndoRedoした直後 = true; this.textBox曲名.Clear();
\r
520 CUndoRedo管理.bUndoRedoした直後 = true; this.textBox製作者.Clear();
\r
521 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxコメント.Clear();
\r
522 CUndoRedo管理.bUndoRedoした直後 = true; this.numericUpDownBPM.Value = 120.0M;
\r
523 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxDLEVEL.Text = "50";
\r
524 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxGLEVEL.Text = "0";
\r
525 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxBLEVEL.Text = "0";
\r
526 CUndoRedo管理.bUndoRedoした直後 = true; this.hScrollBarDLEVEL.Value = 50;
\r
527 CUndoRedo管理.bUndoRedoした直後 = true; this.hScrollBarGLEVEL.Value = 0;
\r
528 CUndoRedo管理.bUndoRedoした直後 = true; this.hScrollBarBLEVEL.Value = 0;
\r
529 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxパネル.Clear();
\r
530 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxPREVIEW.Clear();
\r
531 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxPREIMAGE.Clear();
\r
532 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxSTAGEFILE.Clear();
\r
533 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxBACKGROUND.Clear();
\r
534 CUndoRedo管理.bUndoRedoした直後 = true; this.textBoxRESULTIMAGE.Clear();
\r
535 //-----------------
\r
538 #region [ WAVタブ・BMPタブ・AVIタブの初期化 ]
\r
539 //-----------------
\r
540 this.listViewWAVリスト.Items.Clear();
\r
541 this.mgrWAVリスト管理者 = new CWAVリスト管理( this, this.listViewWAVリスト );
\r
543 this.listViewBMPリスト.Items.Clear();
\r
544 this.mgrBMPリスト管理者 = new CBMPリスト管理( this, this.listViewBMPリスト );
\r
546 this.listViewAVIリスト.Items.Clear();
\r
547 this.mgrAVIリスト管理者 = new CAVIリスト管理( this, this.listViewAVIリスト );
\r
549 this.tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( 0 );
\r
550 //-----------------
\r
553 #region [ 自由入力タブの初期化 ]
\r
554 //-----------------
\r
555 CUndoRedo管理.bUndoRedoした直後 = true; this.textBox自由入力欄.Clear();
\r
556 //-----------------
\r
559 #region [ チップパレットの初期化 ]
\r
560 //-----------------
\r
561 if( this.dlgチップパレット != null )
\r
562 this.dlgチップパレット.Close();
\r
564 this.dlgチップパレット = new Cチップパレット( this );
\r
565 this.dlgチップパレット.Left = this.Left + ( this.Width - this.dlgチップパレット.Width ) / 2;
\r
566 this.dlgチップパレット.Top = this.Top + ( this.Height - this.dlgチップパレット.Height ) / 2;
\r
567 this.dlgチップパレット.Owner = this;
\r
569 if( this.toolStripButtonチップパレット.CheckState == CheckState.Checked )
\r
570 this.dlgチップパレット.t表示する();
\r
571 //-----------------
\r
574 #region [ 譜面の生成・初期化 ]
\r
575 //-----------------
\r
576 if ( this.mgr譜面管理者 == null ) // 初回起動時は、レーン表示有無の構成に初期値を使用(して、後でDTXCreatorConfig.settingsのものに置き換える)
\r
578 this.mgr譜面管理者 = new C譜面管理( this );
\r
579 this.mgr譜面管理者.t初期化();
\r
581 else // 起動後のdtxファイル読み込み等の場合は、直前のレーン表示有無の構成を踏襲する
\r
583 #region [ レーン表示/非表示状態の待避 #26005 2011.8.30 yyagi; added ]
\r
584 List<Cレーン> lc = new List<Cレーン>(this.mgr譜面管理者.listレーン);
\r
587 this.mgr譜面管理者 = new C譜面管理( this );
\r
588 this.mgr譜面管理者.t初期化();
\r
590 #region [ レーン表示/非表示の反映 #26005 2011.8.30 yyagi; added ]
\r
591 for ( int i = 0; i < this.mgr譜面管理者.listレーン.Count; i++ )
\r
593 this.mgr譜面管理者.listレーン[ i ].bIsVisible = lc[ i ].bIsVisible;
\r
595 this.mgr譜面管理者.tRefreshDisplayLanes();
\r
598 //-----------------
\r
601 #region [ DTXViewer 関連 GUI の初期化 ]
\r
602 //-----------------
\r
603 this.tDTXV演奏関連のボタンとメニューのEnabledの設定();
\r
604 //-----------------
\r
607 #region [ ガイド間隔の初期値を設定する。]
\r
608 //-----------------
\r
609 this.tガイド間隔を変更する( 16 );
\r
610 //-----------------
\r
616 #region [ Undo/Redoリストのリセット ]
\r
617 //-----------------
\r
618 this.mgrUndoRedo管理者 = new CUndoRedo管理();
\r
620 CUndoRedo管理.bUndoRedoした直後 = false;
\r
621 this.tUndoRedo用GUIの有効・無効を設定する();
\r
622 //-----------------
\r
625 #region [ 「2大モード」の管理者を生成、初期は編集モードにする。]
\r
626 //-----------------
\r
627 this.mgr選択モード管理者 = new C選択モード管理( this );
\r
628 this.mgr編集モード管理者 = new C編集モード管理( this );
\r
631 //-----------------
\r
635 // 上記のプロパティ変更操作により未保存フラグがtrueになってしまってるので、元に戻す。
\r
637 #region [ 未保存フラグをクリアする。]
\r
638 //-----------------
\r
640 //-----------------
\r
643 //-----------------
\r
646 //-----------------
\r
647 private void tシナリオ・開く()
\r
651 #region [ 未保存なら保存する。→ キャンセルされた場合はここで中断。]
\r
652 //-----------------
\r
653 if( this.t未保存なら保存する() == DialogResult.Cancel )
\r
655 //-----------------
\r
661 #region [ 「ファイルを開く」ダイアログでファイルを選択する。 ]
\r
662 //-----------------
\r
663 this.dlgチップパレット.t一時的に隠蔽する();
\r
665 OpenFileDialog dialog = new OpenFileDialog();
\r
666 dialog.Title = Resources.strDTXファイル選択ダイアログのタイトル;
\r
667 dialog.Filter = Resources.strDTXファイル選択ダイアログのフィルタ;
\r
668 dialog.FilterIndex = 1;
\r
669 dialog.InitialDirectory = this.str作業フォルダ名;
\r
670 DialogResult result = dialog.ShowDialog();
\r
672 this.dlgチップパレット.t一時的な隠蔽を解除する();
\r
673 this.Refresh(); // メインフォームを再描画してダイアログを完全に消す
\r
675 if( result != DialogResult.OK )
\r
677 //-----------------
\r
683 #region [ ファイルを読み込む。]
\r
684 //-----------------
\r
685 this.t演奏ファイルを開いて読み込む( dialog.FileName );
\r
686 //-----------------
\r
689 private void tシナリオ・DragDropされたファイルを開く( string[] DropFiles )
\r
693 #region [ Dropされたファイルが複数個ある → 先頭のファイルだけを有効とする。 ]
\r
694 //-----------------
\r
695 string strファイル名 = DropFiles[ 0 ];
\r
696 //-----------------
\r
702 #region [ 未保存なら保存する。→ キャンセルされた場合はここで中断。]
\r
703 //-----------------
\r
704 if( this.t未保存なら保存する() == DialogResult.Cancel )
\r
706 //-----------------
\r
710 // Drop されたファイルを読み込む。
\r
712 #region [ ファイルを読み込む。]
\r
713 //-----------------
\r
714 this.t演奏ファイルを開いて読み込む( strファイル名 );
\r
715 //-----------------
\r
718 private void t演奏ファイルを開いて読み込む( string strファイル名 )
\r
722 #region [ ファイルの存在を確認する。なかったらその旨を表示して中断する。]
\r
723 //-----------------
\r
724 if( !File.Exists( strファイル名 ) )
\r
727 Resources.strファイルが存在しませんMSG,
\r
728 Resources.str確認ダイアログのタイトル,
\r
729 MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1 );
\r
733 //-----------------
\r
736 #region [ 拡張子からデータ種別を判定する。]
\r
737 //-----------------
\r
739 CDTX入出力.E種別 e種別 = CDTX入出力.E種別.DTX;
\r
741 string str拡張子 = Path.GetExtension( strファイル名 );
\r
743 if( str拡張子.Equals( ".dtx", StringComparison.OrdinalIgnoreCase ) )
\r
745 e種別 = CDTX入出力.E種別.DTX;
\r
747 else if( str拡張子.Equals( ".gda", StringComparison.OrdinalIgnoreCase ) )
\r
749 e種別 = CDTX入出力.E種別.GDA;
\r
751 else if( str拡張子.Equals( ".g2d", StringComparison.OrdinalIgnoreCase ) )
\r
753 e種別 = CDTX入出力.E種別.G2D;
\r
755 else if( str拡張子.Equals( ".bms", StringComparison.OrdinalIgnoreCase ) )
\r
757 e種別 = CDTX入出力.E種別.BMS;
\r
759 else if( str拡張子.Equals( ".bme", StringComparison.OrdinalIgnoreCase ) )
\r
761 e種別 = CDTX入出力.E種別.BME;
\r
766 Resources.strDTXファイルではありませんMSG,
\r
767 Resources.str確認ダイアログのタイトル,
\r
768 MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );
\r
772 //-----------------
\r
775 this.dlgチップパレット.t一時的に隠蔽する();
\r
777 #region [「読み込み中です」ポップアップを表示する。]
\r
778 //-----------------
\r
780 = new Cメッセージポップアップ( Resources.str読み込み中ですMSG + Environment.NewLine + Resources.strしばらくお待ち下さいMSG );
\r
784 //-----------------
\r
793 #region [ DTXファイルを読み込む。]
\r
794 //-----------------
\r
796 // 全部を1つの string として読み込む。
\r
798 StreamReader reader = new StreamReader( strファイル名, Encoding.GetEncoding( 932/*Shift-JIS*/ ) );
\r
799 string str全入力文字列 = reader.ReadToEnd();
\r
803 // その string から DTX データを読み込む。
\r
805 new CDTX入出力( this ).tDTX入力( e種別, ref str全入力文字列 );
\r
808 // ファイル名、作業フォルダ名を更新する。
\r
810 this.strDTXファイル名 = Path.ChangeExtension( Path.GetFileName( strファイル名 ), ".dtx" ); // 拡張子は強制的に .dtx に変更。
\r
811 this.str作業フォルダ名 = Path.GetDirectoryName( strファイル名 ) + @"\"; // 読み込み後、カレントフォルダは、作業ファイルのあるフォルダに移動する。
\r
813 //-----------------
\r
816 #region [ 読み込んだファイルを [ファイル]メニューの最近使ったファイル一覧に追加する。]
\r
817 //-----------------
\r
818 this.appアプリ設定.AddRecentUsedFile( this.str作業フォルダ名 + this.strDTXファイル名 );
\r
819 this.t最近使ったファイルをFileメニューへ追加する();
\r
820 //-----------------
\r
823 #region [ DTX以外を読み込んだ場合は、(DTXに変換されているので)最初から未保存フラグを立てる。]
\r
824 //-----------------
\r
825 if( e種別 != CDTX入出力.E種別.DTX )
\r
827 //-----------------
\r
831 #region [「読み込み中です」ポップアップを閉じる。 ]
\r
832 //-----------------
\r
834 this.Refresh(); // リスト内容等を消すために再描画する。
\r
835 //-----------------
\r
838 #region [ 未保存フラグをクリアする。]
\r
839 //-----------------
\r
840 this.b未保存 = true; // ウィンドウタイトルを書き換えるため、一度未保存フラグをtrueにして b未保存の setter を作動させる。
\r
842 //-----------------
\r
845 //-----------------
\r
847 #region [ 上書き保存/名前をつけて保存 ]
\r
848 //-----------------
\r
849 private void tシナリオ・上書き保存()
\r
853 this.dlgチップパレット.t一時的に隠蔽する();
\r
855 #region [「保存中です」ポップアップを表示する。 ]
\r
856 //-----------------
\r
857 var msg = new Cメッセージポップアップ( Resources.str保存中ですMSG + Environment.NewLine + Resources.strしばらくお待ち下さいMSG );
\r
861 //-----------------
\r
864 #region [ ファイル名がない → 初めての保存と見なし、ファイル保存ダイアログで保存ファイル名を指定させる。 ]
\r
865 //-----------------
\r
866 if( string.IsNullOrEmpty( this.strDTXファイル名 ) )
\r
868 // ダイアログでファイル名を取得する。
\r
870 string str絶対パスファイル名 = this.tファイル保存ダイアログを開いてファイル名を取得する();
\r
872 if( string.IsNullOrEmpty( str絶対パスファイル名 ) )
\r
873 return; // ファイル保存ダイアログがキャンセルされたのならここで打ち切り。
\r
875 //this.str作業フォルダ名 = Directory.GetCurrentDirectory() + @"\"; // ダイアログでディレクトリを変更した場合、カレントディレクトリも変更されている。
\r
876 this.str作業フォルダ名 = Path.GetDirectoryName(str絶対パスファイル名) + @"\";
\r
877 this.strDTXファイル名 = Path.GetFileName( str絶対パスファイル名 );
\r
880 // WAV・BMP・AVIリストにあるすべてのファイル名を、作業フォルダに対する相対パスに変換する。
\r
882 this.mgrWAVリスト管理者.tファイル名の相対パス化( this.str作業フォルダ名 );
\r
883 this.mgrBMPリスト管理者.tファイル名の相対パス化( this.str作業フォルダ名 );
\r
884 this.mgrAVIリスト管理者.tファイル名の相対パス化( this.str作業フォルダ名 );
\r
886 //-----------------
\r
893 #region [ 選択モードだったなら選択を解除する。]
\r
894 //-----------------
\r
895 if( this.b選択モードである )
\r
896 this.mgr選択モード管理者.t全チップの選択を解除する();
\r
897 //-----------------
\r
900 #region [ DTXファイルを出力する。]
\r
901 //-----------------
\r
902 var sw = new StreamWriter( this.str作業フォルダ名 + this.strDTXファイル名, false, Encoding.GetEncoding( 932/*Shift-JIS*/ ) );
\r
903 new CDTX入出力( this ).tDTX出力( sw );
\r
905 //-----------------
\r
908 #region [ 出力したファイルのパスを、[ファイル]メニューの最近使ったファイル一覧に追加する。 ]
\r
909 //-----------------
\r
910 this.appアプリ設定.AddRecentUsedFile( this.str作業フォルダ名 + this.strDTXファイル名 );
\r
911 this.t最近使ったファイルをFileメニューへ追加する();
\r
912 //-----------------
\r
918 #region [「保存中です」ポップアップを閉じる。]
\r
919 //-----------------
\r
921 this.Refresh(); // リスト内容等を消すために再描画する。
\r
922 //-----------------
\r
925 this.dlgチップパレット.t一時的な隠蔽を解除する();
\r
928 private void tシナリオ・名前をつけて保存()
\r
932 #region [ ユーザに保存ファイル名を入力させる。]
\r
933 //-----------------
\r
934 // ファイル保存ダイアログを表示し、出力するファイル名を指定させる。キャンセルされたらここで中断。
\r
936 string str絶対パスファイル名 = this.tファイル保存ダイアログを開いてファイル名を取得する();
\r
937 if( string.IsNullOrEmpty( str絶対パスファイル名 ) )
\r
943 //this.str作業フォルダ名 = Directory.GetCurrentDirectory() + @"\"; // ダイアログでディレクトリを変更した場合は、カレントディレクトリも変更されている。
\r
944 this.str作業フォルダ名 = Path.GetDirectoryName(str絶対パスファイル名) + @"\";
\r
945 this.strDTXファイル名 = Path.GetFileName( str絶対パスファイル名 );
\r
946 //-----------------
\r
949 #region [ WAV・BMP・AVIリストにあるすべてのファイル名を、作業フォルダに対する相対パスに変換する。 ]
\r
950 //-----------------
\r
951 this.mgrWAVリスト管理者.tファイル名の相対パス化( this.str作業フォルダ名 );
\r
952 this.mgrBMPリスト管理者.tファイル名の相対パス化( this.str作業フォルダ名 );
\r
953 this.mgrAVIリスト管理者.tファイル名の相対パス化( this.str作業フォルダ名 );
\r
954 //-----------------
\r
960 this.tシナリオ・上書き保存();
\r
965 this.b未保存 = true; // ウィンドウタイトルに表示されているファイル名を変更するため一度 true にする。
\r
968 private string tファイル保存ダイアログを開いてファイル名を取得する()
\r
972 this.dlgチップパレット.t一時的に隠蔽する();
\r
974 var dialog = new SaveFileDialog() {
\r
975 Title = "名前をつけて保存",
\r
976 Filter = "DTXファイル(*.dtx)|*.dtx",
\r
978 InitialDirectory = this.str作業フォルダ名
\r
980 DialogResult result = dialog.ShowDialog();
\r
982 this.dlgチップパレット.t一時的な隠蔽を解除する();
\r
990 // キャンセルされたら "" を返す。
\r
992 if( result != DialogResult.OK )
\r
996 // ファイルの拡張子を .dtx に変更。
\r
998 string fileName = dialog.FileName;
\r
999 if( Path.GetExtension( fileName ).Length == 0 )
\r
1000 fileName = Path.ChangeExtension( fileName, ".dtx" );
\r
1004 //-----------------
\r
1007 //-----------------
\r
1008 private void tシナリオ・終了()
\r
1014 //-----------------
\r
1017 //-----------------
\r
1018 private void tシナリオ・検索()
\r
1020 this.mgr選択モード管理者.t検索する(); // モードによらず、検索はすべて選択モード管理者が行う。
\r
1022 private void tシナリオ・置換()
\r
1024 this.mgr選択モード管理者.t置換する(); // モードによらず、置換はすべて選択モード管理者が行う。
\r
1026 //-----------------
\r
1028 #region [ 小節長変更/小節の挿入/小節の削除 ]
\r
1029 //-----------------
\r
1030 private void tシナリオ・小節長を変更する( C小節 cs )
\r
1034 #region [ 小節長をユーザに入力させる。]
\r
1035 //-----------------
\r
1037 // 小節長ダイアログを表示し、小節長を取得する。
\r
1039 this.dlgチップパレット.t一時的に隠蔽する();
\r
1041 var dlg = new C小節長変更ダイアログ( cs.n小節番号0to3599 );
\r
1042 dlg.f倍率 = cs.f小節長倍率;
\r
1043 dlg.b後続変更 = false;
\r
1045 this.dlgチップパレット.t一時的な隠蔽を解除する();
\r
1048 // キャンセルされたらここで中断。
\r
1049 if( dlg.ShowDialog() != DialogResult.OK )
\r
1052 //-----------------
\r
1058 #region [ 小節長を変更する。]
\r
1059 //-----------------
\r
1060 int n変更開始小節番号 = cs.n小節番号0to3599;
\r
1061 int n変更終了小節番号 = ( dlg.b後続変更 ) ? this.mgr譜面管理者.n現在の最大の小節番号を返す() : cs.n小節番号0to3599;
\r
1063 for( int i = n変更開始小節番号; i <= n変更終了小節番号; i++ )
\r
1064 this.t小節長を変更する・小節単位( i, dlg.f倍率 );
\r
1066 //-----------------
\r
1074 private void t小節長を変更する・小節単位( int n小節番号, float f倍率 )
\r
1078 #region [ 小節番号から小節オブジェクトを取得する。→ 指定された小節が存在しない場合はここで中断。]
\r
1079 //-----------------
\r
1081 C小節 c小節 = this.mgr譜面管理者.p小節を返す( n小節番号 );
\r
1086 //-----------------
\r
1092 this.mgrUndoRedo管理者.tトランザクション記録を開始する();
\r
1094 #region [ UndoRedo リストにこの操作(小節長変更)を記録する。 ]
\r
1095 //-----------------
\r
1096 var ur変更前 = new C小節用UndoRedo( c小節.n小節番号0to3599, c小節.f小節長倍率 );
\r
1097 var ur変更後 = new C小節用UndoRedo( c小節.n小節番号0to3599, f倍率 );
\r
1099 this.mgrUndoRedo管理者.tノードを追加する(
\r
1100 new CUndoRedoセル<C小節用UndoRedo>(
\r
1102 new DGUndoを実行する<C小節用UndoRedo>( this.mgr譜面管理者.t小節長変更のUndo ),
\r
1103 new DGRedoを実行する<C小節用UndoRedo>( this.mgr譜面管理者.t小節長変更のRedo ),
\r
1105 //-----------------
\r
1111 #region [ 小節長倍率を変更する。]
\r
1112 //-----------------
\r
1114 //-----------------
\r
1117 #region [ 小節からはみ出したチップを削除する。チップの削除操作は Undo/Redo に記録する。]
\r
1118 //-----------------
\r
1119 for( int i = 0; i < c小節.listチップ.Count; i++ )
\r
1121 Cチップ cチップ = c小節.listチップ[ i ];
\r
1123 if( cチップ.n位置grid >= c小節.n小節長倍率を考慮した現在の小節の高さgrid )
\r
1126 #region [ UndoRedo リストにこの操作(チップ削除)を記録する。]
\r
1127 //-----------------
\r
1128 var cc = new Cチップ();
\r
1129 cc.tコピーfrom( cチップ );
\r
1131 var ur = new Cチップ配置用UndoRedo( c小節.n小節番号0to3599, cc );
\r
1133 this.mgrUndoRedo管理者.tノードを追加する(
\r
1134 new CUndoRedoセル<Cチップ配置用UndoRedo>(
\r
1136 new DGUndoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者.tチップ削除のUndo ),
\r
1137 new DGRedoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者.tチップ削除のRedo ),
\r
1139 //-----------------
\r
1143 // チップを小節のチップリストから削除する。
\r
1145 c小節.listチップ.RemoveAt( i );
\r
1148 // リストが更新されたので、最初のチップから見直す。
\r
1153 //-----------------
\r
1159 this.mgrUndoRedo管理者.tトランザクション記録を終了する();
\r
1164 this.tUndoRedo用GUIの有効・無効を設定する();
\r
1166 private void tシナリオ・小節を挿入する( int n挿入位置の小節番号 )
\r
1170 #region [ UndoRedo リストにこの操作(小節挿入)を記録する。]
\r
1171 //-----------------
\r
1172 this.mgrUndoRedo管理者.tノードを追加する(
\r
1173 new CUndoRedoセル<int>(
\r
1175 new DGUndoを実行する<int>( this.mgr譜面管理者.t小節挿入のUndo ),
\r
1176 new DGRedoを実行する<int>( this.mgr譜面管理者.t小節挿入のRedo ),
\r
1177 n挿入位置の小節番号, n挿入位置の小節番号 ) );
\r
1178 //-----------------
\r
1184 #region [ 挿入位置以降の小節を1つずつ後ろにずらす(小節番号を +1 していく)。 ]
\r
1185 //-----------------
\r
1186 for( int i = this.mgr譜面管理者.n現在の最大の小節番号を返す(); i >= n挿入位置の小節番号; i-- )
\r
1188 // ずらす小節オブジェクトを取得する。
\r
1190 C小節 cずらす小節 = this.mgr譜面管理者.p小節を返す( i );
\r
1191 if( cずらす小節 == null )
\r
1197 this.mgr譜面管理者.dic小節.Remove( i ); // 小節番号は Dictionary のキー値であるため、番号が変われば再登録が必要。
\r
1198 cずらす小節.n小節番号0to3599 = i + 1;
\r
1199 this.mgr譜面管理者.dic小節.Add( cずらす小節.n小節番号0to3599, cずらす小節 );
\r
1201 //-----------------
\r
1204 #region [ 新しい小節を作成し、譜面の持つ小節リストに追加する。 ]
\r
1205 //-----------------
\r
1209 this.mgr譜面管理者.dic小節.Add( n挿入位置の小節番号, new C小節( n挿入位置の小節番号 ) );
\r
1214 this.pictureBox譜面パネル.Refresh();
\r
1216 //-----------------
\r
1222 this.tUndoRedo用GUIの有効・無効を設定する();
\r
1225 private void tシナリオ・小節を削除する( int n削除位置の小節番号 )
\r
1229 this.mgrUndoRedo管理者.tトランザクション記録を開始する();
\r
1234 #region [ 最大小節番号を取得する。]
\r
1235 //-----------------
\r
1236 int n最大小節番号 = this.mgr譜面管理者.n現在の最大の小節番号を返す(); // 小節を削除すると数が変わるので、削除前に取得する。
\r
1237 //-----------------
\r
1239 #region [ 削除する小節オブジェクトを取得する。]
\r
1240 //-----------------
\r
1241 C小節 c削除する小節 = this.mgr譜面管理者.p小節を返す( n削除位置の小節番号 );
\r
1242 //-----------------
\r
1245 #region [ その小節が持っているチップを全て削除する。チップの削除作業は、Undo/Redoリストに記録する。]
\r
1246 //-----------------
\r
1248 while( c削除する小節.listチップ.Count > 0 )
\r
1250 #region [ UndoRedo リストにこの操作(チップ削除)を記録する。]
\r
1251 //-----------------
\r
1252 var cc = new Cチップ();
\r
1253 cc.tコピーfrom( c削除する小節.listチップ[ 0 ] );
\r
1254 var redo = new Cチップ配置用UndoRedo( c削除する小節.n小節番号0to3599, cc );
\r
1256 this.mgrUndoRedo管理者.tノードを追加する(
\r
1257 new CUndoRedoセル<Cチップ配置用UndoRedo>(
\r
1259 new DGUndoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者.tチップ削除のUndo ),
\r
1260 new DGRedoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者.tチップ削除のRedo ),
\r
1262 //-----------------
\r
1267 c削除する小節.listチップ.RemoveAt( 0 );
\r
1270 //-----------------
\r
1273 #region [ UndoRedo リストにこの操作(小節削除)を記録する。]
\r
1274 //-----------------
\r
1275 this.mgrUndoRedo管理者.tノードを追加する(
\r
1276 new CUndoRedoセル<int>(
\r
1278 new DGUndoを実行する<int>( this.mgr譜面管理者.t小節削除のUndo ),
\r
1279 new DGRedoを実行する<int>( this.mgr譜面管理者.t小節削除のRedo ),
\r
1280 n削除位置の小節番号, n削除位置の小節番号 ) );
\r
1281 //-----------------
\r
1283 #region [ 該当小節を譜面の小節リストから削除する。]
\r
1284 //-----------------
\r
1285 this.mgr譜面管理者.dic小節.Remove( n削除位置の小節番号 );
\r
1286 //-----------------
\r
1288 #region [ 削除した小節より後方にある小節を1つずつ前にずらす。(小節番号を -1 していく)]
\r
1289 //-----------------
\r
1291 for( int i = n削除位置の小節番号 + 1; i <= n最大小節番号; i++ )
\r
1295 C小節 cずらす小節 = this.mgr譜面管理者.p小節を返す( i );
\r
1296 if( cずらす小節 == null )
\r
1301 this.mgr譜面管理者.dic小節.Remove( i ); // 小節番号は Dictionary のキー値であるため、番号が変われば再登録が必要。
\r
1302 cずらす小節.n小節番号0to3599--;
\r
1303 this.mgr譜面管理者.dic小節.Add( cずらす小節.n小節番号0to3599, cずらす小節 );
\r
1306 // 譜面内の小節が全部無くなったらさすがにまずいので、最低1個の小節は残す。
\r
1308 if( this.mgr譜面管理者.dic小節.Count == 0 )
\r
1309 this.mgr譜面管理者.dic小節.Add( 0, new C小節( 0 ) );
\r
1311 //-----------------
\r
1317 this.mgrUndoRedo管理者.tトランザクション記録を終了する();
\r
1322 this.tUndoRedo用GUIの有効・無効を設定する();
\r
1323 this.pictureBox譜面パネル.Refresh();
\r
1326 //-----------------
\r
1328 #region [ 選択チップの切り取り/コピー/貼り付け/削除 ]
\r
1329 //-----------------
\r
1330 private void tシナリオ・切り取り()
\r
1334 #region [ 譜面にフォーカスが来てないなら何もしない。 ]
\r
1335 //-----------------
\r
1336 if( !this.pictureBox譜面パネル.Focused )
\r
1338 //-----------------
\r
1344 #region [ 切り取り = コピー + 削除 ]
\r
1345 //-----------------
\r
1348 //-----------------
\r
1351 private void tシナリオ・コピー()
\r
1355 #region [ 譜面にフォーカスが来てないなら何もしない。 ]
\r
1356 //-----------------
\r
1357 if( !this.pictureBox譜面パネル.Focused )
\r
1359 //-----------------
\r
1365 this.cbクリップボード.t現在選択されているチップをボードにコピーする();
\r
1370 #region [ 画面を再描画する。]
\r
1371 //-----------------
\r
1372 this.t選択チップの有無に応じて編集用GUIの有効・無効を設定する();
\r
1373 this.pictureBox譜面パネル.Refresh();
\r
1374 //-----------------
\r
1377 private void tシナリオ・貼り付け( int n譜面先頭からの位置grid )
\r
1381 #region [ 譜面にフォーカスが来てないなら何もしない。 ]
\r
1382 //-----------------
\r
1383 if( !this.pictureBox譜面パネル.Focused )
\r
1385 //-----------------
\r
1391 #region [ 貼り付け先の小節と貼り付け開始位置を取得する。]
\r
1392 //-----------------
\r
1393 C小節 c小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );
\r
1397 int n小節先頭からの位置grid =
\r
1398 n譜面先頭からの位置grid - this.mgr譜面管理者.n譜面先頭からみた小節先頭の位置gridを返す( c小節.n小節番号0to3599 );
\r
1399 //-----------------
\r
1402 #region [ クリップボードからチップを貼り付ける。]
\r
1403 //-----------------
\r
1404 this.cbクリップボード.tチップを指定位置から貼り付ける( c小節, n小節先頭からの位置grid );
\r
1405 //-----------------
\r
1411 #region [ 画面を再描画する。]
\r
1412 //-----------------
\r
1413 this.t選択チップの有無に応じて編集用GUIの有効・無効を設定する();
\r
1414 this.pictureBox譜面パネル.Refresh();
\r
1415 //-----------------
\r
1418 private void tシナリオ・削除()
\r
1422 #region [ 譜面にフォーカスが来てないなら何もしない。 ]
\r
1423 //-----------------
\r
1424 if( !this.pictureBox譜面パネル.Focused )
\r
1426 //-----------------
\r
1432 this.mgrUndoRedo管理者.tトランザクション記録を開始する();
\r
1437 #region [ 譜面が持つすべての小節について、選択されているチップがあれば削除する。]
\r
1438 //-----------------
\r
1439 foreach( KeyValuePair<int, C小節> pair in this.mgr譜面管理者.dic小節 )
\r
1441 C小節 c小節 = pair.Value;
\r
1443 bool b削除されたチップがある = false;
\r
1444 bool b削除完了 = false;
\r
1448 #region [ 小節の持つチップのうち、選択されているチップがあれば削除してループする。なくなったら抜ける。]
\r
1449 //-----------------
\r
1453 // 小節が持つすべてのチップについて……
\r
1454 foreach( Cチップ cチップ in c小節.listチップ )
\r
1458 #region [ UndoRedo リストにこの操作(チップ削除)を記録する。]
\r
1459 //-----------------
\r
1460 var cc = new Cチップ();
\r
1461 cc.tコピーfrom( cチップ );
\r
1462 var redo = new Cチップ配置用UndoRedo( c小節.n小節番号0to3599, cc );
\r
1464 this.mgrUndoRedo管理者.tノードを追加する(
\r
1465 new CUndoRedoセル<Cチップ配置用UndoRedo>(
\r
1467 new DGUndoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者.tチップ削除のUndo ),
\r
1468 new DGRedoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者.tチップ削除のRedo ),
\r
1470 //-----------------
\r
1474 // チップオブジェクトを削除する。
\r
1476 c小節.listチップ.Remove( cチップ );
\r
1481 b削除完了 = false; // まだ終わらんよ
\r
1482 b削除されたチップがある = true;
\r
1486 //-----------------
\r
1490 #region [ 1つでもチップを削除したなら、未保存フラグを立てる。 ]
\r
1491 //-----------------
\r
1492 if( b削除されたチップがある )
\r
1494 //-----------------
\r
1497 //-----------------
\r
1503 this.mgrUndoRedo管理者.tトランザクション記録を終了する();
\r
1508 this.tUndoRedo用GUIの有効・無効を設定する();
\r
1509 this.t選択チップの有無に応じて編集用GUIの有効・無効を設定する();
\r
1510 this.pictureBox譜面パネル.Refresh();
\r
1512 //-----------------
\r
1514 #region [ DTXViewer での再生・停止 ]
\r
1515 //-----------------
\r
1516 private void tシナリオ・Viewerで最初から再生する()
\r
1518 this.tViewer用の一時ファイルを出力する( false );
\r
1520 #region [ 再生開始オプション引数に一時ファイルを指定して DTXViewer プロセスを起動する。]
\r
1521 //-----------------
\r
1524 string strDTXViewerのパス = this.strDTXCのあるフォルダ名 + this.appアプリ設定.ViewerInfo.Path;
\r
1526 #region [ DTXViewer が起動していなければ起動する。]
\r
1527 //-----------------
\r
1528 Process.Start( strDTXViewerのパス ).WaitForInputIdle( 20 * 1000 ); // 起動完了まで最大20秒待つ
\r
1529 //-----------------
\r
1532 #region [ 実行中の DTXViewer に再生オプションを渡す。 ]
\r
1533 //-----------------
\r
1534 Process.Start( strDTXViewerのパス,
\r
1535 this.appアプリ設定.ViewerInfo.PlayStartOption + " " + this.strViewer演奏用一時ファイル名 );
\r
1536 //-----------------
\r
1539 catch( Exception )
\r
1541 #region [ 失敗ダイアログを表示する。]
\r
1542 //-----------------
\r
1544 Resources.strプロセスの起動に失敗しましたMSG,
\r
1545 Resources.strエラーダイアログのタイトル,
\r
1546 MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );
\r
1547 //-----------------
\r
1550 //-----------------
\r
1553 private void tシナリオ・Viewerで現在位置から再生する()
\r
1555 this.tViewer用の一時ファイルを出力する( false );
\r
1559 string strDTXViewerのパス = this.strDTXCのあるフォルダ名 + this.appアプリ設定.ViewerInfo.Path;
\r
1561 #region [ DTXViewer が起動していなければ起動する。]
\r
1562 //-----------------
\r
1564 Process.Start( strDTXViewerのパス ).WaitForInputIdle( 20 * 1000 ); // 起動完了まで最大20秒待つ
\r
1566 //-----------------
\r
1569 #region [ 実行中の DTXViewer に再生オプションを渡す。 ]
\r
1570 //-----------------
\r
1573 this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( this.mgr譜面管理者.n現在の譜面表示下辺の譜面先頭からの位置grid );
\r
1575 Process.Start( strDTXViewerのパス,
\r
1576 this.appアプリ設定.ViewerInfo.PlayStartFromOption + c小節.n小節番号0to3599 + " " + this.strViewer演奏用一時ファイル名 );
\r
1578 //-----------------
\r
1581 catch( Exception )
\r
1583 #region [ 失敗ダイアログを表示する。]
\r
1584 //-----------------
\r
1586 Resources.strプロセスの起動に失敗しましたMSG,
\r
1587 Resources.strエラーダイアログのタイトル,
\r
1588 MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );
\r
1589 //-----------------
\r
1593 private void tシナリオ・Viewerで現在位置からBGMのみ再生する()
\r
1595 #region [ DTXViewer 用の一時ファイルを出力する。]
\r
1596 //-----------------
\r
1597 this.tViewer用の一時ファイルを出力する( true );
\r
1598 //-----------------
\r
1603 string strDTXViewerのパス = this.strDTXCのあるフォルダ名 + this.appアプリ設定.ViewerInfo.Path;
\r
1605 #region [ DTXViewer が起動していなければ起動する。]
\r
1606 //-----------------
\r
1607 Process.Start( strDTXViewerのパス ).WaitForInputIdle( 20 * 1000 ); // 起動完了まで最大20秒待つ
\r
1608 //-----------------
\r
1611 #region [ 実行中の DTXViewer に再生オプションを渡す。 ]
\r
1612 //-----------------
\r
1613 C小節 c小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( this.mgr譜面管理者.n現在の譜面表示下辺の譜面先頭からの位置grid );
\r
1614 Process.Start( strDTXViewerのパス,
\r
1615 this.appアプリ設定.ViewerInfo.PlayStartFromOption + c小節.n小節番号0to3599 + " " + this.strViewer演奏用一時ファイル名 );
\r
1616 //-----------------
\r
1619 catch( Exception )
\r
1621 #region [ 失敗ダイアログを表示する。]
\r
1622 //-----------------
\r
1624 Resources.strプロセスの起動に失敗しましたMSG,
\r
1625 Resources.strエラーダイアログのタイトル,
\r
1626 MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );
\r
1627 //-----------------
\r
1631 private void tシナリオ・Viewerを再生停止する()
\r
1635 string strViewerのパス = this.strDTXCのあるフォルダ名 + this.appアプリ設定.ViewerInfo.Path;
\r
1637 #region [ 実行中の DTXViewer に再生停止オプションを渡す。 ]
\r
1638 //-----------------
\r
1640 // 停止のときは1回のプロセス起動で完結(BMSV仕様)
\r
1642 Process.Start( strViewerのパス, this.appアプリ設定.ViewerInfo.PlayStopOption );
\r
1644 //-----------------
\r
1648 catch( Exception )
\r
1650 #region [ 失敗ダイアログを表示する。]
\r
1651 //-----------------
\r
1653 Resources.strプロセスの起動に失敗しましたMSG,
\r
1654 Resources.strエラーダイアログのタイトル,
\r
1655 MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );
\r
1656 //-----------------
\r
1661 private string strViewer演奏用一時ファイル名 = "";
\r
1662 private void tViewer用の一時ファイルを出力する( bool bBGMのみ出力 )
\r
1666 //this.strViewer演奏用一時ファイル名 = Path.GetTempFileName(); //
\r
1667 this.strViewer演奏用一時ファイル名 = makeTempDTX.GetTempFileName(); // #24746 2011.4.1 yyagi add; a countermeasure for temp-flooding
\r
1671 this.mgr譜面管理者.strPATH_WAV = this.str作業フォルダ名;
\r
1675 #region [ もし小数点にコンマを使うcultureなら、一時的に(小数点を使う)"en-GB"に切り替える。(DTXVはピリオドしか使えないため) ]
\r
1676 string currentCultureEnglishName = CultureInfo.CurrentCulture.Name;
\r
1677 bool bSwitchCulture = false;
\r
1678 if (CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == ",")
\r
1680 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB", false); // #24241, #24790 2011.4.8 yyagi: switch culture where the country uses period as the decimal point
\r
1681 bSwitchCulture = true; // I mistook here using CurrentUICulture. Use CurrentCulture to work correctly.
\r
1684 #region [ 一時ファイルにDTXを出力する。 ]
\r
1685 //-----------------
\r
1686 StreamWriter sw = new StreamWriter( this.strViewer演奏用一時ファイル名, false, Encoding.GetEncoding( 0x3a4 ) );
\r
1687 new CDTX入出力( this ).tDTX出力( sw, bBGMのみ出力 );
\r
1689 //-----------------
\r
1691 #region [ cultureを元に戻す。 ]
\r
1692 if (bSwitchCulture)
\r
1694 Thread.CurrentThread.CurrentCulture = new CultureInfo(currentCultureEnglishName, false);
\r
1700 this.mgr譜面管理者.strPATH_WAV = "";
\r
1703 //-----------------
\r
1705 #region [ Undo / Redo ]
\r
1706 //-----------------
\r
1707 private void tシナリオ・Undoする()
\r
1711 #region [ Undo する対象を Undo/Redo リストから取得する。]
\r
1712 //-----------------
\r
1714 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す();
\r
1716 if( oセル仮想 == null )
\r
1719 //-----------------
\r
1722 oセル仮想.tUndoを実行する();
\r
1727 #region [ GUI を再描画する。]
\r
1728 //-----------------
\r
1729 this.tUndoRedo用GUIの有効・無効を設定する();
\r
1730 this.t選択チップの有無に応じて編集用GUIの有効・無効を設定する();
\r
1731 this.pictureBox譜面パネル.Refresh();
\r
1732 //-----------------
\r
1735 private void tシナリオ・Redoする()
\r
1739 #region [ Redo する対象を Undo/Redo リストから取得する。]
\r
1740 //-----------------
\r
1742 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tRedoするノードを取得して返す();
\r
1744 if( oセル仮想 == null )
\r
1747 //-----------------
\r
1750 oセル仮想.tRedoを実行する();
\r
1755 #region [ GUI を再描画する。]
\r
1756 //-----------------
\r
1757 this.tUndoRedo用GUIの有効・無効を設定する();
\r
1758 this.t選択チップの有無に応じて編集用GUIの有効・無効を設定する();
\r
1759 this.pictureBox譜面パネル.Refresh();
\r
1760 //-----------------
\r
1763 //-----------------
\r
1769 public enum Eタブ種別 : int
\r
1778 public void t選択モードにする()
\r
1780 this.toolStripButton選択モード.CheckState = CheckState.Checked;
\r
1781 this.toolStripButton編集モード.CheckState = CheckState.Unchecked;
\r
1782 this.toolStripMenuItem選択モード.CheckState = CheckState.Checked;
\r
1783 this.toolStripMenuItem編集モード.CheckState = CheckState.Unchecked;
\r
1785 public void t編集モードにする()
\r
1787 this.mgr選択モード管理者.t全チップの選択を解除する();
\r
1788 this.pictureBox譜面パネル.Refresh();
\r
1789 this.toolStripButton選択モード.CheckState = CheckState.Unchecked;
\r
1790 this.toolStripButton編集モード.CheckState = CheckState.Checked;
\r
1791 this.toolStripMenuItem選択モード.CheckState = CheckState.Unchecked;
\r
1792 this.toolStripMenuItem編集モード.CheckState = CheckState.Checked;
\r
1794 public void t選択チップの有無に応じて編集用GUIの有効・無効を設定する()
\r
1796 bool b譜面上に選択チップがある = this.b選択チップがある;
\r
1797 bool bクリップボードに選択チップがある = ( this.cbクリップボード != null ) && ( this.cbクリップボード.nセル数 > 0 );
\r
1802 this.toolStripMenuItemコピー.Enabled = b譜面上に選択チップがある;
\r
1803 this.toolStripMenuItem切り取り.Enabled = b譜面上に選択チップがある;
\r
1804 this.toolStripMenuItem貼り付け.Enabled = bクリップボードに選択チップがある;
\r
1805 this.toolStripMenuItem削除.Enabled = b譜面上に選択チップがある;
\r
1810 this.toolStripButtonコピー.Enabled = b譜面上に選択チップがある;
\r
1811 this.toolStripButton切り取り.Enabled = b譜面上に選択チップがある;
\r
1812 this.toolStripButton貼り付け.Enabled = bクリップボードに選択チップがある;
\r
1813 this.toolStripButton削除.Enabled = b譜面上に選択チップがある;
\r
1818 this.toolStripMenuItem選択チップのコピー.Enabled = b譜面上に選択チップがある;
\r
1819 this.toolStripMenuItem選択チップの切り取り.Enabled = b譜面上に選択チップがある;
\r
1820 this.toolStripMenuItem選択チップの貼り付け.Enabled = bクリップボードに選択チップがある;
\r
1821 this.toolStripMenuItem選択チップの削除.Enabled = b譜面上に選択チップがある;
\r
1823 public void t選択モードのコンテクストメニューを表示する( int x, int y )
\r
1825 // メニューの左上隅座標を控えておく。
\r
1827 this.pt選択モードのコンテクストメニューを開いたときのマウスの位置 = new Point( x, y );
\r
1829 #region [ クリックされた箇所のレーン番号を取得する。]
\r
1830 //-----------------
\r
1831 int lane = this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( pt選択モードのコンテクストメニューを開いたときのマウスの位置.X );
\r
1832 string strLane = (lane < 0)? "" : this.mgr譜面管理者.listレーン[ lane ].strレーン名;
\r
1833 //-----------------
\r
1836 #region [ クリックされた箇所の小節番号を取得する。]
\r
1837 //-----------------
\r
1838 int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( pt選択モードのコンテクストメニューを開いたときのマウスの位置.Y );
\r
1839 C小節 csクリックされた小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );
\r
1840 int nPartNo = csクリックされた小節.n小節番号0to3599;
\r
1841 string strPartNo = C変換.str小節番号を文字列3桁に変換して返す( nPartNo );
\r
1842 //-----------------
\r
1845 #region [ コンテクストメニューの[選択]項目に、レーン名と小節番号の情報をを付与する。 ]
\r
1846 int indexMenuLaneSelect = this.contextMenuStrip譜面右メニュー.Items.IndexOfKey( "toolStripMenuItemレーン内のすべてのチップの選択" );
\r
1847 int indexMenuPartSelect = this.contextMenuStrip譜面右メニュー.Items.IndexOfKey( "toolStripMenuItem小節内のすべてのチップの選択" );
\r
1849 string strItemMenuLaneSelect = this.contextMenuStrip譜面右メニュー.Items[ indexMenuLaneSelect ].Text;
\r
1850 strItemMenuLaneSelect = System.Text.RegularExpressions.Regex.Replace(
\r
1851 strItemMenuLaneSelect , @"\[(.*)\]", "[" + strLane + "]" );
\r
1852 this.contextMenuStrip譜面右メニュー.Items[ indexMenuLaneSelect ].Text = strItemMenuLaneSelect;
\r
1854 string strItemMenuPartSelect = this.contextMenuStrip譜面右メニュー.Items[ indexMenuPartSelect ].Text;
\r
1855 strItemMenuPartSelect = System.Text.RegularExpressions.Regex.Replace(
\r
1856 strItemMenuPartSelect, @"\[(.*)\]", "[" + strPartNo + "]" );
\r
1857 this.contextMenuStrip譜面右メニュー.Items[ indexMenuPartSelect ].Text = strItemMenuPartSelect;
\r
1862 this.contextMenuStrip譜面右メニュー.Show( this.pictureBox譜面パネル, x, y );
\r
1864 public void t最近使ったファイルをFileメニューへ追加する()
\r
1866 #region [ [ファイル] メニューから、最近使ったファイルの一覧をクリアする。]
\r
1867 //-----------------
\r
1868 for( int i = 0; i < this.toolStripMenuItemファイル.DropDownItems.Count; i++ )
\r
1870 ToolStripItem item = this.toolStripMenuItemファイル.DropDownItems[ i ];
\r
1872 // ↓削除したくないサブメニューの一覧。これ以外のサブメニュー項目はすべて削除する。
\r
1873 if( item != this.toolStripMenuItem新規 &&
\r
1874 item != this.toolStripMenuItem開く &&
\r
1875 item != this.toolStripMenuItem上書き保存 &&
\r
1876 item != this.toolStripMenuItem名前を付けて保存 &&
\r
1877 item != this.toolStripSeparator1 &&
\r
1878 item != this.toolStripMenuItem終了 )
\r
1880 this.toolStripMenuItemファイル.DropDownItems.Remove( item );
\r
1881 i = -1; // 要素数が変わったので列挙しなおし
\r
1884 //-----------------
\r
1887 #region [ 表示しないオプション設定であるか、履歴が0件ならここで終了する。]
\r
1888 //-----------------
\r
1889 if( !this.appアプリ設定.ShowRecentFiles || this.appアプリ設定.RecentUsedFile.Count == 0 )
\r
1891 //-----------------
\r
1894 #region [ アプリ設定が持つ履歴にそって、[ファイル] メニューにサブメニュー項目リストを追加する(ただし最大表示数まで)。 ]
\r
1895 //-----------------
\r
1897 // [ファイル] のサブメニューリストに項目が1つでもある場合は、履歴サブメニュー項目の追加の前に「終了」の下にセパレータを入れる。手動で。
\r
1899 bool bセパレータの追加がまだ = true;
\r
1902 // すべての「最近使ったファイル」について...
\r
1904 for( int i = 0; i < this.appアプリ設定.RecentUsedFile.Count; i++ )
\r
1906 #region [ 最大表示数を越えたらここで終了。 ]
\r
1907 //-----------------
\r
1908 if( i >= this.appアプリ設定.RecentFilesNum )
\r
1910 //-----------------
\r
1913 #region [ ファイル名を、サブメニュー項目として [ファイル] メニューに追加する。 ]
\r
1914 //-----------------
\r
1915 string path = this.appアプリ設定.RecentUsedFile[ i ];
\r
1917 if( path.Length == 0 )
\r
1920 #region [ セパレータの追加がまだなら追加する。]
\r
1921 //-----------------
\r
1922 if( bセパレータの追加がまだ )
\r
1924 var separator = new ToolStripSeparator();
\r
1925 separator.Size = this.toolStripSeparator1.Size;
\r
1926 this.toolStripMenuItemファイル.DropDownItems.Add( separator );
\r
1927 bセパレータの追加がまだ = false;
\r
1929 //-----------------
\r
1932 #region [ ToolStripMenuItem を手動で作って [ファイル] のサブメニューリストに追加する。]
\r
1933 //-----------------
\r
1934 var item2 = new ToolStripMenuItem() {
\r
1935 Name = "最近使ったファイル" + i,
\r
1936 Size = this.toolStripMenuItem終了.Size,
\r
1937 Text = "&" + i + " " + path,
\r
1939 item2.Click += new EventHandler( this.toolStripMenuItem最近使ったファイル_Click );
\r
1940 this.toolStripMenuItemファイル.DropDownItems.Add( item2 );
\r
1941 //-----------------
\r
1944 #region [ 追加したファイルが既に存在していないなら項目を無効化(グレー表示)する。]
\r
1945 //-----------------
\r
1946 if( !File.Exists( path ) )
\r
1947 item2.Enabled = false;
\r
1948 //-----------------
\r
1951 //-----------------
\r
1954 //-----------------
\r
1957 public void tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( int nIndex番号0to1294 )
\r
1959 if( nIndex番号0to1294 >= 0 && nIndex番号0to1294 <= 1294 )
\r
1961 this.mgrWAVリスト管理者.tItemを選択する( nIndex番号0to1294 );
\r
1962 this.mgrBMPリスト管理者.tItemを選択する( nIndex番号0to1294 );
\r
1963 this.mgrAVIリスト管理者.tItemを選択する( nIndex番号0to1294 );
\r
1965 this.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 = nIndex番号0to1294;
\r
1968 public string strファイルの存在するディレクトリを絶対パスで返す( string strファイル )
\r
1970 string strファイルの絶対パス = strファイル;
\r
1974 // ファイルが絶対パスかどうかを判定する。(new Uri() は相対パスを指定されると例外が発生するので、それを利用する。)
\r
1976 new Uri( strファイル );
\r
1980 // 例外が発生したので相対パスとみなし、絶対パスに直す。
\r
1982 strファイルの絶対パス = this.str作業フォルダ名 + strファイル;
\r
1985 return strファイルの絶対パス;
\r
1987 public Point pt現在のマウス位置を譜面の可視領域相対の座標dotで返す()
\r
1989 Point p = new Point( Cursor.Position.X, Cursor.Position.Y );
\r
1990 return this.splitContainerタブと譜面を分割.Panel2.PointToClient( p );
\r
1992 public Size sz譜面の可視領域の大きさdotを返す()
\r
1994 return new Size( this.splitContainerタブと譜面を分割.Panel2.Width, this.pictureBox譜面パネル.Height );
\r
1996 public void tUndoRedo用GUIの有効・無効を設定する()
\r
1998 this.toolStripMenuItemアンドゥ.Enabled = this.mgrUndoRedo管理者.nUndo可能な回数 > 0;
\r
1999 this.toolStripMenuItemリドゥ.Enabled = this.mgrUndoRedo管理者.nRedo可能な回数 > 0;
\r
2000 this.toolStripButtonアンドゥ.Enabled = this.mgrUndoRedo管理者.nUndo可能な回数 > 0;
\r
2001 this.toolStripButtonリドゥ.Enabled = this.mgrUndoRedo管理者.nRedo可能な回数 > 0;
\r
2003 public void tタブを選択する( Eタブ種別 eタブ種別 )
\r
2005 this.tabControl情報パネル.SelectedIndex = (int) eタブ種別;
\r
2011 #region [ private ]
\r
2012 //-----------------
\r
2013 private bool _b未保存 = true;
\r
2014 private Point pt選択モードのコンテクストメニューを開いたときのマウスの位置;
\r
2015 private int n現在のガイド間隔4to64or0 = 16; // 初期は16分間隔
\r
2016 private bool b選択チップがある
\r
2020 foreach( KeyValuePair<int, C小節> pair in this.mgr譜面管理者.dic小節 )
\r
2022 foreach( Cチップ cチップ in pair.Value.listチップ )
\r
2032 private void tDTXV演奏関連のボタンとメニューのEnabledの設定()
\r
2034 if( File.Exists( this.strDTXCのあるフォルダ名 + this.appアプリ設定.ViewerInfo.Path ) )
\r
2036 // DTXViewer が存在するなら Enable
\r
2038 this.toolStripButton先頭から再生.Enabled = true;
\r
2039 this.toolStripButton現在位置から再生.Enabled = true;
\r
2040 this.toolStripButton現在位置からBGMのみ再生.Enabled = true;
\r
2041 this.toolStripButton再生停止.Enabled = true;
\r
2042 this.toolStripMenuItem先頭から再生.Enabled = true;
\r
2043 this.toolStripMenuItem現在位置から再生.Enabled = true;
\r
2044 this.toolStripMenuItem現在位置からBGMのみ再生.Enabled = true;
\r
2045 this.toolStripMenuItem再生停止.Enabled = true;
\r
2049 // DTXViewer が存在しないなら Disable
\r
2051 this.toolStripButton先頭から再生.Enabled = false;
\r
2052 this.toolStripButton現在位置から再生.Enabled = false;
\r
2053 this.toolStripButton現在位置からBGMのみ再生.Enabled = false;
\r
2054 this.toolStripButton再生停止.Enabled = false;
\r
2055 this.toolStripMenuItem先頭から再生.Enabled = false;
\r
2056 this.toolStripMenuItem現在位置から再生.Enabled = false;
\r
2057 this.toolStripMenuItem現在位置からBGMのみ再生.Enabled = false;
\r
2058 this.toolStripMenuItem再生停止.Enabled = false;
\r
2061 private string tファイル選択ダイアログでファイルを選択し相対パスにして返す( string strタイトル, string strフィルタ, string str初期フォルダ )
\r
2063 string str相対ファイル名 = "";
\r
2065 this.dlgチップパレット.t一時的に隠蔽する();
\r
2067 var dialog = new OpenFileDialog() {
\r
2071 InitialDirectory = str初期フォルダ,
\r
2073 if( dialog.ShowDialog() == DialogResult.OK )
\r
2075 str相対ファイル名 = Cファイル選択・パス変換.str基点からの相対パスに変換して返す( dialog.FileName, this.str作業フォルダ名 );
\r
2076 str相対ファイル名.Replace( '/', '\\' );
\r
2081 this.dlgチップパレット.t一時的な隠蔽を解除する();
\r
2083 return str相対ファイル名;
\r
2085 private DialogResult t未保存なら保存する()
\r
2087 var result = DialogResult.OK;
\r
2093 this.dlgチップパレット.t一時的に隠蔽する();
\r
2094 result = MessageBox.Show( Resources.str編集中のデータを保存しますかMSG, Resources.str確認ダイアログのタイトル, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1 );
\r
2095 this.dlgチップパレット.t一時的な隠蔽を解除する();
\r
2100 if( result == DialogResult.Yes )
\r
2101 this.tシナリオ・上書き保存();
\r
2110 private void t次のプロパティ変更処理がUndoRedoリストに載らないようにする()
\r
2112 CUndoRedo管理.bUndoRedoした直後 = true;
\r
2114 private void t次のプロパティ変更処理がUndoRedoリストに載るようにする()
\r
2116 CUndoRedo管理.bUndoRedoした直後 = false;
\r
2120 /// <para>n分 … 4分間隔なら 4、8分間隔なら 8 など、フリー間隔なら 0 を指定する。</para>
\r
2122 private void tガイド間隔を変更する( int n分 )
\r
2126 #region [ 新しいガイド間隔を設定。 ]
\r
2127 //-----------------
\r
2129 this.n現在のガイド間隔4to64or0 = n分;
\r
2131 this.mgr譜面管理者.n現在のガイド幅grid =
\r
2132 ( n分 == 0 ) ? 1 : ( C小節.n基準の高さgrid / n分 );
\r
2134 //-----------------
\r
2138 // ガイド間隔メニュー GUI を更新。
\r
2140 #region [ 一度すべてのガイド間隔メニューのチェックをはずし、制定された分数のメニューのみチェックする。 ]
\r
2141 //-----------------
\r
2142 this.toolStripMenuItemガイド間隔4分.CheckState = CheckState.Unchecked;
\r
2143 this.toolStripMenuItemガイド間隔8分.CheckState = CheckState.Unchecked;
\r
2144 this.toolStripMenuItemガイド間隔12分.CheckState = CheckState.Unchecked;
\r
2145 this.toolStripMenuItemガイド間隔16分.CheckState = CheckState.Unchecked;
\r
2146 this.toolStripMenuItemガイド間隔24分.CheckState = CheckState.Unchecked;
\r
2147 this.toolStripMenuItemガイド間隔32分.CheckState = CheckState.Unchecked;
\r
2148 this.toolStripMenuItemガイド間隔48分.CheckState = CheckState.Unchecked;
\r
2149 this.toolStripMenuItemガイド間隔64分.CheckState = CheckState.Unchecked;
\r
2150 this.toolStripMenuItemガイド間隔フリー.CheckState = CheckState.Unchecked;
\r
2155 this.toolStripMenuItemガイド間隔8分.CheckState = CheckState.Checked;
\r
2156 this.toolStripComboBoxガイド間隔.SelectedIndex = 1;
\r
2160 this.toolStripMenuItemガイド間隔12分.CheckState = CheckState.Checked;
\r
2161 this.toolStripComboBoxガイド間隔.SelectedIndex = 2;
\r
2165 this.toolStripMenuItemガイド間隔フリー.CheckState = CheckState.Checked;
\r
2166 this.toolStripComboBoxガイド間隔.SelectedIndex = 8;
\r
2170 this.toolStripMenuItemガイド間隔4分.CheckState = CheckState.Checked;
\r
2171 this.toolStripComboBoxガイド間隔.SelectedIndex = 0;
\r
2175 this.toolStripMenuItemガイド間隔16分.CheckState = CheckState.Checked;
\r
2176 this.toolStripComboBoxガイド間隔.SelectedIndex = 3;
\r
2180 this.toolStripMenuItemガイド間隔24分.CheckState = CheckState.Checked;
\r
2181 this.toolStripComboBoxガイド間隔.SelectedIndex = 4;
\r
2185 this.toolStripMenuItemガイド間隔32分.CheckState = CheckState.Checked;
\r
2186 this.toolStripComboBoxガイド間隔.SelectedIndex = 5;
\r
2190 this.toolStripMenuItemガイド間隔48分.CheckState = CheckState.Checked;
\r
2191 this.toolStripComboBoxガイド間隔.SelectedIndex = 6;
\r
2195 this.toolStripMenuItemガイド間隔64分.CheckState = CheckState.Checked;
\r
2196 this.toolStripComboBoxガイド間隔.SelectedIndex = 7;
\r
2199 //-----------------
\r
2205 #region [ 画面を再描画する。]
\r
2206 //-----------------
\r
2207 this.pictureBox譜面パネル.Invalidate();
\r
2208 //-----------------
\r
2215 #region [ GUIイベント:メインフォーム ]
\r
2216 //-----------------
\r
2217 private void Cメインフォーム_DragDrop( object sender, DragEventArgs e )
\r
2219 string[] data = (string[]) e.Data.GetData( DataFormats.FileDrop );
\r
2220 if( data.Length >= 1 )
\r
2222 this.tシナリオ・DragDropされたファイルを開く( data );
\r
2225 private void Cメインフォーム_DragEnter( object sender, DragEventArgs e )
\r
2227 if( e.Data.GetDataPresent( DataFormats.FileDrop ) )
\r
2229 e.Effect = DragDropEffects.Copy;
\r
2233 e.Effect = DragDropEffects.None;
\r
2236 private void Cメインフォーム_FormClosing( object sender, FormClosingEventArgs e )
\r
2238 if( this.t未保存なら保存する() == DialogResult.Cancel )
\r
2244 this.tアプリ終了時に行う終了処理();
\r
2247 private void Cメインフォーム_Load( object sender, EventArgs e )
\r
2249 this.tアプリ起動時に一度だけ行う初期化処理();
\r
2250 // this.t譜面を初期化する(); // 2011.8.29 yyagi; removed this.t譜面を初期化する() because it has already done in this.tアプリ起動時に一度だけ行う初期化処理().
\r
2252 //-----------------
\r
2254 #region [ GUIイベント:pictureBox譜面パネル、Panel2、スクロールバー関連 ]
\r
2255 //-----------------
\r
2256 private void pictureBox譜面パネル_MouseClick( object sender, MouseEventArgs e )
\r
2260 this.pictureBox譜面パネル.Focus();
\r
2263 // 選択・編集のいずれかの管理者へ処理を引き継ぐ。
\r
2265 if( this.b選択モードである )
\r
2267 this.mgr選択モード管理者.MouseClick( e );
\r
2271 this.mgr編集モード管理者.MouseClick( e );
\r
2274 private void pictureBox譜面パネル_MouseDown( object sender, MouseEventArgs e )
\r
2276 if( this.b選択モードである )
\r
2277 this.mgr選択モード管理者.MouseDown( e );
\r
2279 private void pictureBox譜面パネル_MouseEnter( object sender, EventArgs e )
\r
2281 #region [ オートフォーカスが有効の場合、譜面にマウスが入ったら譜面がフォーカスを得る。 ]
\r
2282 //-----------------
\r
2283 if( this.appアプリ設定.AutoFocus )
\r
2284 this.pictureBox譜面パネル.Focus();
\r
2285 //-----------------
\r
2288 private void pictureBox譜面パネル_MouseLeave( object sender, EventArgs e )
\r
2290 if( this.b編集モードである )
\r
2291 this.mgr編集モード管理者.MouseLeave( e );
\r
2293 private void pictureBox譜面パネル_MouseMove( object sender, MouseEventArgs e )
\r
2295 // 選択・編集のいずれかの管理者へ処理を引き継ぐ。
\r
2297 if( this.b選択モードである )
\r
2299 this.mgr選択モード管理者.MouseMove( e );
\r
2303 this.mgr編集モード管理者.MouseMove( e );
\r
2306 private void pictureBox譜面パネル_Paint( object sender, PaintEventArgs e )
\r
2308 if( this.mgr譜面管理者 == null )
\r
2309 return; // まだ初期化が終わってないうちに Paint が呼び出される場合がある。
\r
2311 #region [ 小節数が変わってたら、スクロールバーの値域を調整する。]
\r
2312 //-----------------
\r
2313 int n全譜面の高さgrid = this.mgr譜面管理者.n全小節の高さgridの合計を返す();
\r
2315 if( this.vScrollBar譜面用垂直スクロールバー.Maximum != n全譜面の高さgrid - 1 ) // 小節数が変わっている
\r
2317 // 譜面の高さ(grid)がどれだけ変わったか?
\r
2319 int n増加分grid = ( n全譜面の高さgrid - 1 ) - this.vScrollBar譜面用垂直スクロールバー.Maximum;
\r
2324 #region [ スクロールバーの状態を新しい譜面の高さに合わせる。]
\r
2325 //-----------------
\r
2326 this.vScrollBar譜面用垂直スクロールバー.Maximum = n全譜面の高さgrid - 1;
\r
2328 if( ( this.vScrollBar譜面用垂直スクロールバー.Value + n増加分grid ) < 0 )
\r
2330 this.vScrollBar譜面用垂直スクロールバー.Value = 0;
\r
2334 this.vScrollBar譜面用垂直スクロールバー.Value += n増加分grid;
\r
2336 //-----------------
\r
2342 #region [ 譜面表示下辺の位置を更新する。 ]
\r
2343 //-----------------
\r
2344 this.mgr譜面管理者.n現在の譜面表示下辺の譜面先頭からの位置grid =
\r
2345 ( ( this.vScrollBar譜面用垂直スクロールバー.Maximum - this.vScrollBar譜面用垂直スクロールバー.LargeChange ) + 1 ) - this.vScrollBar譜面用垂直スクロールバー.Value;
\r
2346 //-----------------
\r
2349 //-----------------
\r
2352 #region [ 譜面を描画する。]
\r
2353 //-----------------
\r
2354 int nPicBoxの幅 = this.pictureBox譜面パネル.ClientSize.Width;
\r
2355 int nPanel2の幅 = this.splitContainerタブと譜面を分割.Panel2.Width;
\r
2357 var rc可視領域 = new Rectangle() {
\r
2358 X = -this.pictureBox譜面パネル.Location.X,
\r
2360 Width = ( nPanel2の幅 > nPicBoxの幅 ) ? nPicBoxの幅 : nPanel2の幅,
\r
2361 Height = this.pictureBox譜面パネル.ClientSize.Height,
\r
2364 this.mgr譜面管理者.t譜面を描画する( e.Graphics, this.pictureBox譜面パネル.ClientSize, rc可視領域 );
\r
2365 //-----------------
\r
2368 #region [ 現在のモード管理者の Paint() を呼び出す。]
\r
2369 //-----------------
\r
2370 if( this.b選択モードである )
\r
2372 if( this.mgr選択モード管理者 != null )
\r
2373 this.mgr選択モード管理者.Paint( e );
\r
2377 if( this.mgr編集モード管理者 != null )
\r
2378 this.mgr編集モード管理者.Paint( e );
\r
2380 //-----------------
\r
2383 private void pictureBox譜面パネル_PreviewKeyDown( object sender, PreviewKeyDownEventArgs e )
\r
2385 if( e.KeyCode == Keys.Prior )
\r
2387 #region [ PageUp → 移動量に対応する grid だけ垂直つまみを移動させる。あとはこの移動で生じる ChangedValue イベントで処理。]
\r
2388 //-----------------
\r
2389 int n移動すべき数grid = -C小節.n基準の高さgrid;
\r
2390 int n新しい位置 = this.vScrollBar譜面用垂直スクロールバー.Value + n移動すべき数grid;
\r
2391 int n最小値 = this.vScrollBar譜面用垂直スクロールバー.Minimum;
\r
2392 int n最大値 = ( this.vScrollBar譜面用垂直スクロールバー.Maximum + 1 ) - this.vScrollBar譜面用垂直スクロールバー.LargeChange;
\r
2394 if( n新しい位置 < n最小値 )
\r
2398 else if( n新しい位置 > n最大値 )
\r
2403 this.vScrollBar譜面用垂直スクロールバー.Value = n新しい位置;
\r
2404 //-----------------
\r
2407 else if( e.KeyCode == Keys.Next )
\r
2409 #region [ PageDown → 移動量に対応する grid だけ垂直つまみを移動させる。あとはこの移動で生じる ChangedValue イベントで処理。]
\r
2410 //-----------------
\r
2411 int n移動すべき数grid = C小節.n基準の高さgrid;
\r
2412 int n新しい位置 = this.vScrollBar譜面用垂直スクロールバー.Value + n移動すべき数grid;
\r
2413 int n最小値 = this.vScrollBar譜面用垂直スクロールバー.Minimum;
\r
2414 int n最大値 = ( this.vScrollBar譜面用垂直スクロールバー.Maximum + 1 ) - this.vScrollBar譜面用垂直スクロールバー.LargeChange;
\r
2416 if( n新しい位置 < n最小値 )
\r
2420 else if( n新しい位置 > n最大値 )
\r
2425 this.vScrollBar譜面用垂直スクロールバー.Value = n新しい位置;
\r
2426 //-----------------
\r
2431 private void splitContainerタブと譜面を分割_MouseWheel( object sender, MouseEventArgs e )
\r
2433 if ( ( Control.ModifierKeys & Keys.Shift ) == Keys.Shift )
\r
2435 #region [ Shiftを押しながらホイール操作すると、横スクロール。]
\r
2436 if ( e.Delta == 0 )
\r
2439 // e.Delta は、スクロールバーを下へ動かしたいときに負、上へ動かしたいときに正となる。
\r
2441 int n移動すべき行数 = ( -e.Delta * SystemInformation.MouseWheelScrollLines ) / 120;
\r
2443 // 1行=1レーン とする。(が、実際には適当に設定しただけ。1レーンには設定していない)
\r
2445 int n移動すべき数grid = n移動すべき行数 * 16;
\r
2448 // スクロールバーのつまみを移動。
\r
2450 int n新しい位置 = this.hScrollBar譜面用水平スクロールバー.Value + n移動すべき数grid;
\r
2451 int n最小値 = this.hScrollBar譜面用水平スクロールバー.Minimum;
\r
2452 int n最大値 = ( this.hScrollBar譜面用水平スクロールバー.Maximum + 1 ) - this.hScrollBar譜面用水平スクロールバー.LargeChange;
\r
2454 if ( n新しい位置 < n最小値 )
\r
2458 else if ( n新しい位置 > n最大値 )
\r
2463 this.hScrollBar譜面用水平スクロールバー.Value = n新しい位置;
\r
2464 //-----------------
\r
2469 #region [ 移動量に対応する grid だけ垂直つまみを移動させる。あとはこの移動で生じる ChangedValue イベントで処理する。]
\r
2470 //-----------------
\r
2471 if ( e.Delta == 0 )
\r
2475 // e.Delta は、スクロールバーを下へ動かしたいときに負、上へ動かしたいときに正となる。
\r
2477 int n移動すべき行数 = ( -e.Delta * SystemInformation.MouseWheelScrollLines ) / 120;
\r
2480 // 1行=1拍(64/4=16グリッド)とする。
\r
2482 int n移動すべき数grid = n移動すべき行数 * 16;
\r
2485 // スクロールバーのつまみを移動。
\r
2487 int n新しい位置 = this.vScrollBar譜面用垂直スクロールバー.Value + n移動すべき数grid;
\r
2488 int n最小値 = this.vScrollBar譜面用垂直スクロールバー.Minimum;
\r
2489 int n最大値 = ( this.vScrollBar譜面用垂直スクロールバー.Maximum + 1 ) - this.vScrollBar譜面用垂直スクロールバー.LargeChange;
\r
2491 if ( n新しい位置 < n最小値 )
\r
2495 else if ( n新しい位置 > n最大値 )
\r
2500 this.vScrollBar譜面用垂直スクロールバー.Value = n新しい位置;
\r
2501 //-----------------
\r
2505 private void splitContainerタブと譜面を分割_Panel2_SizeChanged( object sender, EventArgs e )
\r
2507 if( this.mgr譜面管理者 != null ) // 初期化前に呼び出されることがある。
\r
2509 this.mgr譜面管理者.t水平スクロールバーと譜面パネル左右位置の調整();
\r
2510 this.mgr譜面管理者.t垂直スクロールバーと譜面可視領域の上下位置の調整();
\r
2514 private void hScrollBar譜面用水平スクロールバー_ValueChanged( object sender, EventArgs e )
\r
2516 if( this.mgr譜面管理者 != null )
\r
2517 this.mgr譜面管理者.t水平スクロールバーと譜面パネル左右位置の調整();
\r
2519 private void vScrollBar譜面用垂直スクロールバー_ValueChanged( object sender, EventArgs e )
\r
2521 if( mgr譜面管理者 != null )
\r
2522 this.mgr譜面管理者.t垂直スクロールバーと譜面可視領域の上下位置の調整();
\r
2524 //-----------------
\r
2526 #region [ GUIイベント:譜面右メニュー関連 ]
\r
2527 //-----------------
\r
2528 private void toolStripMenuItem選択チップの切り取り_Click( object sender, EventArgs e )
\r
2530 this.tシナリオ・切り取り();
\r
2532 private void toolStripMenuItem選択チップのコピー_Click( object sender, EventArgs e )
\r
2536 private void toolStripMenuItem選択チップの貼り付け_Click( object sender, EventArgs e )
\r
2540 Point ptMenu = new Point( this.contextMenuStrip譜面右メニュー.Left, this.contextMenuStrip譜面右メニュー.Top );
\r
2541 Point ptMenuClient = this.contextMenuStrip譜面右メニュー.SourceControl.PointToClient( ptMenu );
\r
2544 // Y座標から位置gridを得て、そこへ貼り付ける。
\r
2546 this.tシナリオ・貼り付け( this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptMenuClient.Y ) );
\r
2548 private void toolStripMenuItem選択チップの削除_Click( object sender, EventArgs e )
\r
2553 private void toolStripMenuItemすべてのチップの選択_Click( object sender, EventArgs e )
\r
2555 // 編集モードなら強制的に選択モードにする。
\r
2557 if( this.b編集モードである )
\r
2563 this.mgr選択モード管理者.t全チップを選択する();
\r
2565 private void toolStripMenuItemレーン内のすべてのチップの選択_Click( object sender, EventArgs e )
\r
2567 // 編集モードなら強制的に選択モードにする。
\r
2569 if ( this.b編集モードである )
\r
2572 // メニューが開かれたときのマウスの座標を取得。
\r
2573 // ※メニューは必ずマウス位置を左上にして表示されるとは限らないため、
\r
2574 // メニューの表示位置からは取得しないこと。
\r
2576 Point ptマウスの位置 = this.pt選択モードのコンテクストメニューを開いたときのマウスの位置;
\r
2581 #region [ クリックされた箇所のレーン番号を取得する。]
\r
2582 //-----------------
\r
2583 int lane = this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウスの位置.X );
\r
2585 return; // クリックされた箇所にレーンがない
\r
2587 //-----------------
\r
2590 this.mgr選択モード管理者.tレーン上の全チップを選択する( lane );
\r
2594 private void toolStripMenuItem小節内のすべてのチップの選択_Click( object sender, EventArgs e )
\r
2596 // 編集モードなら強制的に選択モードにする。
\r
2598 if ( this.b編集モードである )
\r
2601 // メニューが開かれたときのマウスの座標を取得。
\r
2602 // ※メニューは必ずマウス位置を左上にして表示されるとは限らないため、
\r
2603 // メニューの表示位置からは取得しないこと。
\r
2605 Point ptマウスの位置 = this.pt選択モードのコンテクストメニューを開いたときのマウスの位置;
\r
2607 #region [ クリックされた箇所の小節を取得する。]
\r
2608 //-----------------
\r
2609 if ( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウスの位置.X ) < 0 )
\r
2610 return; // クリックされた箇所にレーンがない
\r
2612 int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptマウスの位置.Y );
\r
2613 C小節 csクリックされた小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );
\r
2614 //-----------------
\r
2617 this.mgr選択モード管理者.t小節上の全チップを選択する( csクリックされた小節.n小節番号0to3599 );
\r
2620 private void toolStripMenuItem小節長変更_Click( object sender, EventArgs e )
\r
2622 // メニューが開かれたときのマウスの座標を取得。
\r
2623 // ※メニューは必ずマウス位置を左上にして表示されるとは限らないため、
\r
2624 // メニューの表示位置からは取得しないこと。
\r
2626 Point ptマウス位置 = this.pt選択モードのコンテクストメニューを開いたときのマウスの位置;
\r
2631 #region [ クリックされた小節を取得する。]
\r
2632 //-----------------
\r
2633 if( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウス位置.X ) < 0 )
\r
2634 return; // クリックされた箇所にレーンがないなら無視。
\r
2636 int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptマウス位置.Y );
\r
2637 C小節 csクリックされた小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );
\r
2638 //-----------------
\r
2641 #region [ 取得した小節の小節長を変更する。]
\r
2642 //-----------------
\r
2643 if( csクリックされた小節 != null )
\r
2644 this.tシナリオ・小節長を変更する( csクリックされた小節 );
\r
2645 //-----------------
\r
2648 private void toolStripMenuItem小節の挿入_Click( object sender, EventArgs e )
\r
2650 // メニューが開かれたときのマウスの座標を取得。
\r
2651 // ※メニューは必ずマウス位置を左上にして表示されるとは限らないため、
\r
2652 // メニューの表示位置からは取得しないこと。
\r
2654 Point ptマウスの位置 = this.pt選択モードのコンテクストメニューを開いたときのマウスの位置;
\r
2659 #region [ クリックされた箇所の小節を取得する。]
\r
2660 //-----------------
\r
2661 if( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウスの位置.X ) < 0 )
\r
2662 return; // クリックされた箇所にレーンがない
\r
2664 int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptマウスの位置.Y );
\r
2665 C小節 csクリックされた小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );
\r
2666 //-----------------
\r
2669 #region [ 該当小節の下へ新しい小節を挿入する。]
\r
2670 //-----------------
\r
2671 if( csクリックされた小節 != null )
\r
2672 this.tシナリオ・小節を挿入する( csクリックされた小節.n小節番号0to3599 );
\r
2673 //-----------------
\r
2676 private void toolStripMenuItem小節の削除_Click( object sender, EventArgs e )
\r
2678 // メニューが開かれたときのマウスの座標を取得。
\r
2679 // ※メニューは必ずマウス位置を左上にして表示されるとは限らないため、
\r
2680 // メニューの表示位置からは取得しないこと。
\r
2682 Point ptマウス位置 = this.pt選択モードのコンテクストメニューを開いたときのマウスの位置;
\r
2687 #region [ クリックされた箇所の小節を取得する。 ]
\r
2688 //-----------------
\r
2689 if( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウス位置.X ) < 0 )
\r
2690 return; // クリックされた箇所にレーンがないなら無視。
\r
2692 int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptマウス位置.Y );
\r
2693 C小節 cs削除する小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );
\r
2694 //-----------------
\r
2697 #region [ 該当小節を削除する。]
\r
2698 //-----------------
\r
2699 if( cs削除する小節 != null )
\r
2700 this.tシナリオ・小節を削除する( cs削除する小節.n小節番号0to3599 );
\r
2701 //-----------------
\r
2704 //-----------------
\r
2707 #region [ GUIイベント:基本情報関連 ]
\r
2708 //-----------------
\r
2709 private string textBox曲名_以前の値 = "";
\r
2710 private void textBox曲名_TextChanged( object sender, EventArgs e )
\r
2712 // Undo/Redo リストを修正する。
\r
2714 #region [ Undo/Redo リストを修正。]
\r
2715 //-----------------
\r
2716 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
2718 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
2720 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBox曲名 ) )
\r
2724 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBox曲名.Text;
\r
2730 this.mgrUndoRedo管理者.tノードを追加する(
\r
2731 new CUndoRedoセル<string>(
\r
2733 new DGUndoを実行する<string>( this.textBox曲名_Undo ),
\r
2734 new DGRedoを実行する<string>( this.textBox曲名_Redo ),
\r
2735 this.textBox曲名_以前の値, this.textBox曲名.Text ) );
\r
2738 // Undo ボタンを有効にする。
\r
2740 this.tUndoRedo用GUIの有効・無効を設定する();
\r
2743 //-----------------
\r
2747 // Undo 用に値を保管しておく。
\r
2749 this.textBox曲名_以前の値 = this.textBox曲名.Text;
\r
2754 CUndoRedo管理.bUndoRedoした直後 = false;
\r
2757 private void textBox曲名_Leave( object sender, EventArgs e )
\r
2759 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
2761 if( oセル仮想 != null )
\r
2762 oセル仮想.t所有権の放棄( this.textBox曲名 );
\r
2764 private void textBox曲名_Undo( string str変更前, string str変更後 )
\r
2768 this.tタブを選択する( Eタブ種別.基本情報 );
\r
2770 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
2771 this.textBox曲名.Text = str変更前;
\r
2773 this.textBox曲名.Focus();
\r
2775 private void textBox曲名_Redo( string str変更前, string str変更後 )
\r
2779 this.tタブを選択する( Eタブ種別.基本情報 );
\r
2781 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
2782 this.textBox曲名.Text = str変更後;
\r
2784 this.textBox曲名.Focus();
\r
2787 private string textBox製作者_以前の値 = "";
\r
2788 private void textBox製作者_TextChanged( object sender, EventArgs e )
\r
2790 // Undo/Redo リストを修正する。
\r
2792 #region [ Undo/Redo リストを修正。]
\r
2793 //-----------------
\r
2794 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
2796 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
2798 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBox製作者 ) )
\r
2802 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBox製作者.Text;
\r
2808 this.mgrUndoRedo管理者.tノードを追加する(
\r
2809 new CUndoRedoセル<string>(
\r
2811 new DGUndoを実行する<string>( this.textBox製作者_Undo ),
\r
2812 new DGRedoを実行する<string>( this.textBox製作者_Redo ),
\r
2813 this.textBox製作者_以前の値, this.textBox製作者.Text ) );
\r
2816 // Undo ボタンを有効にする。
\r
2818 this.tUndoRedo用GUIの有効・無効を設定する();
\r
2821 //-----------------
\r
2825 // Undo 用に値を保管しておく。
\r
2827 this.textBox製作者_以前の値 = this.textBox製作者.Text;
\r
2832 CUndoRedo管理.bUndoRedoした直後 = false;
\r
2835 private void textBox製作者_Leave( object sender, EventArgs e )
\r
2837 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
2839 if( oセル仮想 != null )
\r
2840 oセル仮想.t所有権の放棄( this.textBox製作者 );
\r
2842 private void textBox製作者_Undo( string str変更前, string str変更後 )
\r
2846 this.tタブを選択する( Eタブ種別.基本情報 );
\r
2848 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
2849 this.textBox製作者.Text = str変更前;
\r
2851 this.textBox製作者.Focus();
\r
2853 private void textBox製作者_Redo( string str変更前, string str変更後 )
\r
2857 this.tタブを選択する( Eタブ種別.基本情報 );
\r
2859 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
2860 this.textBox製作者.Text = str変更後;
\r
2862 this.textBox製作者.Focus();
\r
2865 private string textBoxコメント_以前の値 = "";
\r
2866 private void textBoxコメント_TextChanged( object sender, EventArgs e )
\r
2868 // Undo/Redo リストを修正する。
\r
2870 #region [ Undo/Redo リストを修正。]
\r
2871 //-----------------
\r
2872 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
2874 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
2876 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxコメント ) )
\r
2880 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBoxコメント.Text;
\r
2886 this.mgrUndoRedo管理者.tノードを追加する(
\r
2887 new CUndoRedoセル<string>(
\r
2888 this.textBoxコメント,
\r
2889 new DGUndoを実行する<string>( this.textBoxコメント_Undo ),
\r
2890 new DGRedoを実行する<string>( this.textBoxコメント_Redo ),
\r
2891 this.textBoxコメント_以前の値, this.textBoxコメント.Text ) );
\r
2893 // Undo ボタンを有効にする。
\r
2895 this.tUndoRedo用GUIの有効・無効を設定する();
\r
2898 //-----------------
\r
2902 // Undo 用に値を保管しておく。
\r
2904 this.textBoxコメント_以前の値 = this.textBoxコメント.Text;
\r
2909 CUndoRedo管理.bUndoRedoした直後 = false;
\r
2912 private void textBoxコメント_Leave( object sender, EventArgs e )
\r
2914 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
2916 if( oセル仮想 != null )
\r
2917 oセル仮想.t所有権の放棄( this.textBoxコメント );
\r
2919 private void textBoxコメント_Undo( string str変更前, string str変更後 )
\r
2923 this.tタブを選択する( Eタブ種別.基本情報 );
\r
2925 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
2926 this.textBoxコメント.Text = str変更前;
\r
2928 this.textBoxコメント.Focus();
\r
2930 private void textBoxコメント_Redo( string str変更前, string str変更後 )
\r
2934 this.tタブを選択する( Eタブ種別.基本情報 );
\r
2936 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
2937 this.textBoxコメント.Text = str変更後;
\r
2939 this.textBoxコメント.Focus();
\r
2942 private decimal numericUpDownBPM_以前の値 = 120.0M;
\r
2943 private void numericUpDownBPM_ValueChanged( object sender, EventArgs e )
\r
2945 // Undo/Redo リストを修正する。
\r
2947 #region [ Undo/Redo リストの修正。]
\r
2948 //-----------------
\r
2949 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
2951 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
2953 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.numericUpDownBPM ) )
\r
2957 ( (CUndoRedoセル<decimal>) oセル仮想 ).変更後の値 = this.numericUpDownBPM.Value;
\r
2963 this.mgrUndoRedo管理者.tノードを追加する(
\r
2964 new CUndoRedoセル<decimal>(
\r
2965 this.numericUpDownBPM,
\r
2966 new DGUndoを実行する<decimal>( this.numericUpDownBPM_Undo ),
\r
2967 new DGRedoを実行する<decimal>( this.numericUpDownBPM_Redo ),
\r
2968 this.numericUpDownBPM_以前の値, this.numericUpDownBPM.Value ) );
\r
2973 this.tUndoRedo用GUIの有効・無効を設定する();
\r
2976 //-----------------
\r
2980 // Undo 用に値を保管しておく。
\r
2982 this.numericUpDownBPM_以前の値 = this.numericUpDownBPM.Value;
\r
2987 CUndoRedo管理.bUndoRedoした直後 = false;
\r
2990 private void numericUpDownBPM_Leave( object sender, EventArgs e )
\r
2992 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
2994 if( oセル仮想 != null )
\r
2995 oセル仮想.t所有権の放棄( this.numericUpDownBPM );
\r
2997 private void numericUpDownBPM_Undo( decimal dec変更前, decimal dec変更後 )
\r
3001 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3003 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3004 this.numericUpDownBPM.Value = dec変更前;
\r
3006 this.numericUpDownBPM.Focus();
\r
3008 private void numericUpDownBPM_Redo( decimal dec変更前, decimal dec変更後 )
\r
3012 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3014 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3015 this.numericUpDownBPM.Value = dec変更後;
\r
3017 this.numericUpDownBPM.Focus();
\r
3020 private int nDLEVEL_以前の値 = 50;
\r
3021 private void textBoxDLEVEL_TextChanged( object sender, EventArgs e )
\r
3023 // 何もしない。→ 数字以外が入力されていることもあるため、Leaveまで待つ。
\r
3025 private void textBoxDLEVEL_Leave( object sender, EventArgs e )
\r
3027 if( this.textBoxDLEVEL.Text.Length > 0 )
\r
3032 if( !int.TryParse( this.textBoxDLEVEL.Text, out n値 ) )
\r
3040 else if( n値 > 100 )
\r
3046 // 値を水平スクロールバーにも反映。
\r
3048 if( this.hScrollBarDLEVEL.Value != n値 )
\r
3050 this.t次のプロパティ変更処理がUndoRedoリストに載るようにする();
\r
3051 this.hScrollBarDLEVEL.Value = n値; // ここで hScrollBarDLEVEL_ValueChanged が発動 → UndoRedo処理はそちらで。
\r
3055 private void hScrollBarDLEVEL_ValueChanged( object sender, EventArgs e )
\r
3057 // 値をテキストボックスにも反映。
\r
3059 this.textBoxDLEVEL.Text = this.hScrollBarDLEVEL.Value.ToString();
\r
3062 // Undo/Redo リストを修正。
\r
3064 #region [ Undo/Redo リストを修正する。]
\r
3065 //-----------------
\r
3066 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
3068 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3070 if( oセル仮想 != null && oセル仮想.b所有権がある( this.hScrollBarDLEVEL ) )
\r
3074 ( (CUndoRedoセル<int>) oセル仮想 ).変更後の値 = this.hScrollBarDLEVEL.Value;
\r
3080 this.mgrUndoRedo管理者.tノードを追加する(
\r
3081 new CUndoRedoセル<int>(
\r
3082 this.hScrollBarDLEVEL,
\r
3083 new DGUndoを実行する<int>( this.nDLEVEL_Undo ),
\r
3084 new DGRedoを実行する<int>( this.nDLEVEL_Redo ),
\r
3085 this.nDLEVEL_以前の値, this.hScrollBarDLEVEL.Value ) );
\r
3088 // Undo ボタンを有効にする。
\r
3090 this.tUndoRedo用GUIの有効・無効を設定する();
\r
3093 //-----------------
\r
3097 // Undo 用に値を保管しておく。
\r
3099 this.nDLEVEL_以前の値 = this.hScrollBarDLEVEL.Value;
\r
3104 CUndoRedo管理.bUndoRedoした直後 = false;
\r
3107 private void nDLEVEL_Undo( int n変更前, int n変更後 )
\r
3111 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3113 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3114 this.textBoxDLEVEL.Text = n変更前.ToString();
\r
3116 this.textBoxDLEVEL.Focus();
\r
3119 // 値を水平スクロールバーにも反映。
\r
3121 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3122 this.hScrollBarDLEVEL.Value = n変更前;
\r
3124 private void nDLEVEL_Redo( int n変更前, int n変更後 )
\r
3128 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3130 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3131 this.textBoxDLEVEL.Text = n変更後.ToString();
\r
3133 this.textBoxDLEVEL.Focus();
\r
3136 // 値を水平スクロールバーにも反映。
\r
3138 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3139 this.hScrollBarDLEVEL.Value = n変更後;
\r
3142 private int nGLEVEL_以前の値;
\r
3143 private void textBoxGLEVEL_TextChanged( object sender, EventArgs e )
\r
3145 // 何もしない。→ 数字以外が入力されていることもあるため、Leaveまで待つ。
\r
3147 private void textBoxGLEVEL_Leave( object sender, EventArgs e )
\r
3149 if( this.textBoxGLEVEL.Text.Length > 0 )
\r
3154 if( !int.TryParse( this.textBoxGLEVEL.Text, out n値 ) )
\r
3162 else if( n値 > 100 )
\r
3168 // 値を水平スクロールバーにも反映。
\r
3170 if( this.hScrollBarGLEVEL.Value != n値 )
\r
3172 this.t次のプロパティ変更処理がUndoRedoリストに載るようにする();
\r
3173 this.hScrollBarGLEVEL.Value = n値; // ここで hScrollBarGLEVEL_ValueChanged が発動 → UndoRedo処理はそちらで。
\r
3177 private void hScrollBarGLEVEL_ValueChanged( object sender, EventArgs e )
\r
3179 // 値をテキストボックスにも反映。
\r
3181 this.textBoxGLEVEL.Text = this.hScrollBarGLEVEL.Value.ToString();
\r
3183 // Undo/Redo リストを修正。
\r
3185 #region [ Undo/Redo リストを修正する。]
\r
3186 //-----------------
\r
3187 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
3189 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3191 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.hScrollBarGLEVEL ) )
\r
3195 ( (CUndoRedoセル<int>) oセル仮想 ).変更後の値 = this.hScrollBarGLEVEL.Value;
\r
3201 this.mgrUndoRedo管理者.tノードを追加する(
\r
3202 new CUndoRedoセル<int>(
\r
3203 this.hScrollBarGLEVEL,
\r
3204 new DGUndoを実行する<int>( this.nGLEVEL_Undo ),
\r
3205 new DGRedoを実行する<int>( this.nGLEVEL_Redo ),
\r
3206 this.nGLEVEL_以前の値, this.hScrollBarGLEVEL.Value ) );
\r
3209 // Undo ボタンを有効にする。
\r
3211 this.tUndoRedo用GUIの有効・無効を設定する();
\r
3214 //-----------------
\r
3218 // Undo 用に値を保管しておく。
\r
3220 this.nGLEVEL_以前の値 = this.hScrollBarGLEVEL.Value;
\r
3225 CUndoRedo管理.bUndoRedoした直後 = false;
\r
3228 private void nGLEVEL_Undo( int n変更前, int n変更後 )
\r
3232 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3234 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3235 this.textBoxGLEVEL.Text = n変更前.ToString();
\r
3237 this.textBoxGLEVEL.Focus();
\r
3240 // 値を水平スクロールバーにも反映する。
\r
3242 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3243 this.hScrollBarGLEVEL.Value = n変更前;
\r
3245 private void nGLEVEL_Redo( int n変更前, int n変更後 )
\r
3249 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3251 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3252 this.textBoxGLEVEL.Text = n変更後.ToString();
\r
3254 this.textBoxGLEVEL.Focus();
\r
3257 // 値を水平スクロールバーにも反映する。
\r
3259 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3260 this.hScrollBarGLEVEL.Value = n変更後;
\r
3263 private int nBLEVEL_以前の値;
\r
3264 private void textBoxBLEVEL_TextChanged( object sender, EventArgs e )
\r
3266 // 何もしない。→ 数字以外が入力されていることもあるため、Leaveまで待つ。
\r
3268 private void textBoxBLEVEL_Leave( object sender, EventArgs e )
\r
3270 if( this.textBoxBLEVEL.Text.Length > 0 )
\r
3275 if( !int.TryParse( this.textBoxBLEVEL.Text, out n値 ) )
\r
3283 else if( n値 > 100 )
\r
3289 // 値を水平スクロールバーにも反映。
\r
3291 if( this.hScrollBarBLEVEL.Value != n値 )
\r
3293 this.t次のプロパティ変更処理がUndoRedoリストに載るようにする();
\r
3294 this.hScrollBarBLEVEL.Value = n値; // ここで hScrollBarBLEVEL_ValueChanged が発動 → UndoRedo処理はそちらで。
\r
3298 private void hScrollBarBLEVEL_ValueChanged( object sender, EventArgs e )
\r
3300 // 値をテキストボックスにも反映。
\r
3302 this.textBoxBLEVEL.Text = this.hScrollBarBLEVEL.Value.ToString();
\r
3305 // Undo/Redo リストを修正。
\r
3307 #region [ Undo/Redo リストを修正する。]
\r
3308 //-----------------
\r
3309 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
3311 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3313 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.hScrollBarBLEVEL ) )
\r
3317 ( (CUndoRedoセル<int>) oセル仮想 ).変更後の値 = this.hScrollBarBLEVEL.Value;
\r
3323 this.mgrUndoRedo管理者.tノードを追加する(
\r
3324 new CUndoRedoセル<int>(
\r
3325 this.hScrollBarBLEVEL,
\r
3326 new DGUndoを実行する<int>( this.nBLEVEL_Undo ),
\r
3327 new DGRedoを実行する<int>( this.nBLEVEL_Redo ),
\r
3328 this.nBLEVEL_以前の値, this.hScrollBarBLEVEL.Value ) );
\r
3331 // Undo ボタンを有効にする。
\r
3333 this.tUndoRedo用GUIの有効・無効を設定する();
\r
3336 //-----------------
\r
3340 // Undo 用に値を保管しておく。
\r
3342 this.nBLEVEL_以前の値 = this.hScrollBarBLEVEL.Value;
\r
3347 CUndoRedo管理.bUndoRedoした直後 = false;
\r
3350 private void nBLEVEL_Undo( int n変更前, int n変更後 )
\r
3354 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3356 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3357 this.textBoxBLEVEL.Text = n変更前.ToString();
\r
3359 this.textBoxBLEVEL.Focus();
\r
3362 // 値を水平スクロールバーにも反映。
\r
3364 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3365 this.hScrollBarBLEVEL.Value = n変更前;
\r
3367 private void nBLEVEL_Redo( int n変更前, int n変更後 )
\r
3371 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3373 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3374 this.textBoxBLEVEL.Text = n変更後.ToString();
\r
3376 this.textBoxBLEVEL.Focus();
\r
3379 // 値を水平スクロールバーにも反映。
\r
3381 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3382 this.hScrollBarBLEVEL.Value = n変更後;
\r
3385 private string textBoxパネル_以前の値 = "";
\r
3386 private void textBoxパネル_TextChanged( object sender, EventArgs e )
\r
3388 // Undo/Redo リストを修正。
\r
3390 #region [ Undo/Redo リストを修正する。]
\r
3391 //-----------------
\r
3392 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
3394 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3396 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxパネル ) )
\r
3400 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBoxパネル.Text;
\r
3406 this.mgrUndoRedo管理者.tノードを追加する(
\r
3407 new CUndoRedoセル<string>(
\r
3409 new DGUndoを実行する<string>( this.textBoxパネル_Undo ),
\r
3410 new DGRedoを実行する<string>( this.textBoxパネル_Redo ),
\r
3411 this.textBoxパネル_以前の値, this.textBoxパネル.Text ) );
\r
3416 this.tUndoRedo用GUIの有効・無効を設定する();
\r
3419 //-----------------
\r
3423 // Undo 用に値を保管しておく。
\r
3425 this.textBoxパネル_以前の値 = this.textBoxパネル.Text;
\r
3430 CUndoRedo管理.bUndoRedoした直後 = false;
\r
3433 private void textBoxパネル_Leave( object sender, EventArgs e )
\r
3435 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3437 if( oセル仮想 != null )
\r
3438 oセル仮想.t所有権の放棄( this.textBoxパネル );
\r
3440 private void textBoxパネル_Undo( string str変更前, string str変更後 )
\r
3444 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3446 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3447 this.textBoxパネル.Text = str変更前;
\r
3449 this.textBoxパネル.Focus();
\r
3451 private void textBoxパネル_Redo( string str変更前, string str変更後 )
\r
3455 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3457 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3458 this.textBoxパネル.Text = str変更後;
\r
3460 this.textBoxパネル.Focus();
\r
3463 private string textBoxPREVIEW_以前の値 = "";
\r
3464 private void textBoxPREVIEW_TextChanged( object sender, EventArgs e )
\r
3466 // Undo/Redo リストを修正。
\r
3468 #region [ Undo/Redo リストを修正する。]
\r
3469 //-----------------
\r
3470 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
3472 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3474 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxPREVIEW ) )
\r
3478 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBoxPREVIEW.Text;
\r
3484 this.mgrUndoRedo管理者.tノードを追加する(
\r
3485 new CUndoRedoセル<string>(
\r
3486 this.textBoxPREVIEW,
\r
3487 new DGUndoを実行する<string>( this.textBoxPREVIEW_Undo ),
\r
3488 new DGRedoを実行する<string>( this.textBoxPREVIEW_Redo ),
\r
3489 this.textBoxPREVIEW_以前の値, this.textBoxPREVIEW.Text ) );
\r
3492 // Undo ボタンを有効にする。
\r
3494 this.tUndoRedo用GUIの有効・無効を設定する();
\r
3497 //-----------------
\r
3501 // Undo 用に値を保管しておく。
\r
3503 this.textBoxPREVIEW_以前の値 = this.textBoxPREVIEW.Text;
\r
3508 CUndoRedo管理.bUndoRedoした直後 = false;
\r
3511 private void textBoxPREVIEW_Leave( object sender, EventArgs e )
\r
3513 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3515 if( oセル仮想 != null )
\r
3516 oセル仮想.t所有権の放棄( this.textBoxPREVIEW );
\r
3518 private void textBoxPREVIEW_Undo( string str変更前, string str変更後 )
\r
3522 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3524 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3525 this.textBoxPREVIEW.Text = str変更前;
\r
3527 this.textBoxPREVIEW.Focus();
\r
3529 private void textBoxPREVIEW_Redo( string str変更前, string str変更後 )
\r
3533 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3535 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3536 this.textBoxPREVIEW.Text = str変更後;
\r
3538 this.textBoxPREVIEW.Focus();
\r
3541 private string textBoxPREIMAGE_以前の値 = "";
\r
3542 private void textBoxPREIMAGE_TextChanged( object sender, EventArgs e )
\r
3544 // Undo/Redo リストを修正。
\r
3546 #region [ Undo/Redo リストを修正する。]
\r
3547 //-----------------
\r
3548 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
3550 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3552 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxPREIMAGE ) )
\r
3556 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBoxPREIMAGE.Text;
\r
3562 this.mgrUndoRedo管理者.tノードを追加する(
\r
3563 new CUndoRedoセル<string>(
\r
3564 this.textBoxPREIMAGE,
\r
3565 new DGUndoを実行する<string>( this.textBoxPREIMAGE_Undo ),
\r
3566 new DGRedoを実行する<string>( this.textBoxPREIMAGE_Redo ),
\r
3567 this.textBoxPREIMAGE_以前の値, this.textBoxPREIMAGE.Text ) );
\r
3570 // Undo ボタンを有効にする。
\r
3572 this.tUndoRedo用GUIの有効・無効を設定する();
\r
3575 //-----------------
\r
3579 // Undo用に値を保管しておく。]
\r
3581 this.textBoxPREIMAGE_以前の値 = this.textBoxPREIMAGE.Text;
\r
3586 CUndoRedo管理.bUndoRedoした直後 = false;
\r
3589 private void textBoxPREIMAGE_Leave( object sender, EventArgs e )
\r
3591 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3593 if( oセル仮想 != null )
\r
3594 oセル仮想.t所有権の放棄( this.textBoxPREIMAGE );
\r
3596 private void textBoxPREIMAGE_Undo( string str変更前, string str変更後 )
\r
3600 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3602 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3603 this.textBoxPREIMAGE.Text = str変更前;
\r
3605 this.textBoxPREIMAGE.Focus();
\r
3607 private void textBoxPREIMAGE_Redo( string str変更前, string str変更後 )
\r
3611 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3613 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3614 this.textBoxPREIMAGE.Text = str変更後;
\r
3616 this.textBoxPREIMAGE.Focus();
\r
3619 private string textBoxSTAGEFILE_以前の値 = "";
\r
3620 private void textBoxSTAGEFILE_TextChanged( object sender, EventArgs e )
\r
3622 // Undo/Redo リストを修正。
\r
3624 #region [ Undo/Redo リストを修正する。]
\r
3625 //-----------------
\r
3626 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
3628 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3630 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxSTAGEFILE ) )
\r
3634 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBoxSTAGEFILE.Text;
\r
3640 this.mgrUndoRedo管理者.tノードを追加する(
\r
3641 new CUndoRedoセル<string>(
\r
3642 this.textBoxSTAGEFILE,
\r
3643 new DGUndoを実行する<string>( this.textBoxSTAGEFILE_Undo ),
\r
3644 new DGRedoを実行する<string>( this.textBoxSTAGEFILE_Redo ),
\r
3645 this.textBoxSTAGEFILE_以前の値, this.textBoxSTAGEFILE.Text ) );
\r
3648 // Undo ボタンを有効にする。
\r
3650 this.tUndoRedo用GUIの有効・無効を設定する();
\r
3653 //-----------------
\r
3657 // Undo 用に値を保管しておく。
\r
3659 this.textBoxSTAGEFILE_以前の値 = this.textBoxSTAGEFILE.Text;
\r
3664 CUndoRedo管理.bUndoRedoした直後 = false;
\r
3667 private void textBoxSTAGEFILE_Leave( object sender, EventArgs e )
\r
3669 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3671 if( oセル仮想 != null )
\r
3672 oセル仮想.t所有権の放棄( this.textBoxSTAGEFILE );
\r
3674 private void textBoxSTAGEFILE_Undo( string str変更前, string str変更後 )
\r
3678 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3680 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3681 this.textBoxSTAGEFILE.Text = str変更前;
\r
3683 this.textBoxSTAGEFILE.Focus();
\r
3685 private void textBoxSTAGEFILE_Redo( string str変更前, string str変更後 )
\r
3689 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3691 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3692 this.textBoxSTAGEFILE.Text = str変更後;
\r
3694 this.textBoxSTAGEFILE.Focus();
\r
3697 private string textBoxBACKGROUND_以前の値 = "";
\r
3698 private void textBoxBACKGROUND_TextChanged( object sender, EventArgs e )
\r
3700 // Undo/Redo リストを修正。
\r
3702 #region [ Undo/Redo リストを修正する。]
\r
3703 //-----------------
\r
3704 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
3706 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3708 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxBACKGROUND ) )
\r
3712 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBoxBACKGROUND.Text;
\r
3718 this.mgrUndoRedo管理者.tノードを追加する(
\r
3719 new CUndoRedoセル<string>(
\r
3720 this.textBoxBACKGROUND,
\r
3721 new DGUndoを実行する<string>( this.textBoxBACKGROUND_Undo ),
\r
3722 new DGRedoを実行する<string>( this.textBoxBACKGROUND_Redo ),
\r
3723 this.textBoxBACKGROUND_以前の値, this.textBoxBACKGROUND.Text ) );
\r
3726 // Undo ボタンを有効にする。
\r
3728 this.tUndoRedo用GUIの有効・無効を設定する();
\r
3731 //-----------------
\r
3735 // Undo 用の値を保管しておく。
\r
3737 this.textBoxBACKGROUND_以前の値 = this.textBoxBACKGROUND.Text;
\r
3742 CUndoRedo管理.bUndoRedoした直後 = false;
\r
3745 private void textBoxBACKGROUND_Leave( object sender, EventArgs e )
\r
3747 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3749 if( oセル仮想 != null )
\r
3750 oセル仮想.t所有権の放棄( this.textBoxBACKGROUND );
\r
3752 private void textBoxBACKGROUND_Undo( string str変更前, string str変更後 )
\r
3756 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3758 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3759 this.textBoxBACKGROUND.Text = str変更前;
\r
3761 this.textBoxBACKGROUND.Focus();
\r
3763 private void textBoxBACKGROUND_Redo( string str変更前, string str変更後 )
\r
3767 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3769 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3770 this.textBoxBACKGROUND.Text = str変更後;
\r
3772 this.textBoxBACKGROUND.Focus();
\r
3775 private string textBoxRESULTIMAGE_以前の値 = "";
\r
3776 private void textBoxRESULTIMAGE_TextChanged( object sender, EventArgs e )
\r
3778 // Undo/Redo リストを修正。
\r
3780 #region [ Undo/Redo リストを修正する。]
\r
3781 //-----------------
\r
3782 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
3784 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3786 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBoxRESULTIMAGE ) )
\r
3790 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBoxRESULTIMAGE.Text;
\r
3796 this.mgrUndoRedo管理者.tノードを追加する(
\r
3797 new CUndoRedoセル<string>(
\r
3798 this.textBoxRESULTIMAGE,
\r
3799 new DGUndoを実行する<string>( this.textBoxRESULTIMAGE_Undo ),
\r
3800 new DGRedoを実行する<string>( this.textBoxRESULTIMAGE_Redo ),
\r
3801 this.textBoxRESULTIMAGE_以前の値, this.textBoxRESULTIMAGE.Text ) );
\r
3804 // Undo ボタンを有効にする。
\r
3806 this.tUndoRedo用GUIの有効・無効を設定する();
\r
3809 //-----------------
\r
3813 // Undo 用に値を保管しておく。
\r
3815 this.textBoxRESULTIMAGE_以前の値 = this.textBoxRESULTIMAGE.Text;
\r
3820 CUndoRedo管理.bUndoRedoした直後 = false;
\r
3823 private void textBoxRESULTIMAGE_Leave( object sender, EventArgs e )
\r
3825 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
3827 if( oセル仮想 != null )
\r
3828 oセル仮想.t所有権の放棄( this.textBoxRESULTIMAGE );
\r
3830 private void textBoxRESULTIMAGE_Undo( string str変更前, string str変更後 )
\r
3834 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3836 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3837 this.textBoxRESULTIMAGE.Text = str変更前;
\r
3839 this.textBoxRESULTIMAGE.Focus();
\r
3841 private void textBoxRESULTIMAGE_Redo( string str変更前, string str変更後 )
\r
3845 this.tタブを選択する( Eタブ種別.基本情報 );
\r
3847 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
3848 this.textBoxRESULTIMAGE.Text = str変更後;
\r
3850 this.textBoxRESULTIMAGE.Focus();
\r
3853 private void buttonPREVIEW参照_Click( object sender, EventArgs e )
\r
3855 string str初期フォルダ名 = this.str作業フォルダ名;
\r
3857 if( this.textBoxPREVIEW.Text.Length > 0 )
\r
3858 str初期フォルダ名 = this.strファイルの存在するディレクトリを絶対パスで返す( this.textBoxPREVIEW.Text );
\r
3860 string strファイル名 = this.tファイル選択ダイアログでファイルを選択し相対パスにして返す(
\r
3861 Resources.strプレビュー音ファイル選択ダイアログのタイトル,
\r
3862 Resources.strサウンドファイル選択ダイアログのフィルタ,
\r
3865 if( strファイル名.Length > 0 )
\r
3867 this.textBoxPREVIEW.Text = strファイル名;
\r
3871 private void buttonPREIMAGE参照_Click( object sender, EventArgs e )
\r
3873 string str初期フォルダ名 = this.str作業フォルダ名;
\r
3875 if( this.textBoxPREIMAGE.Text.Length > 0 )
\r
3876 str初期フォルダ名 = this.strファイルの存在するディレクトリを絶対パスで返す( this.textBoxPREIMAGE.Text );
\r
3878 string strファイル名 = this.tファイル選択ダイアログでファイルを選択し相対パスにして返す(
\r
3879 Resources.strプレビュー画像ファイル選択ダイアログのタイトル,
\r
3880 Resources.str画像ファイル選択ダイアログのフィルタ,
\r
3883 if( strファイル名.Length > 0 )
\r
3885 this.textBoxPREIMAGE.Text = strファイル名;
\r
3889 private void buttonSTAGEFILE参照_Click( object sender, EventArgs e )
\r
3891 string str初期フォルダ名 = this.str作業フォルダ名;
\r
3893 if( this.textBoxSTAGEFILE.Text.Length > 0 )
\r
3894 str初期フォルダ名 = this.strファイルの存在するディレクトリを絶対パスで返す( this.textBoxSTAGEFILE.Text );
\r
3896 string strファイル名 = this.tファイル選択ダイアログでファイルを選択し相対パスにして返す(
\r
3897 Resources.strステージ画像ファイル選択ダイアログのタイトル,
\r
3898 Resources.str画像ファイル選択ダイアログのフィルタ,
\r
3901 if( strファイル名.Length > 0 )
\r
3903 this.textBoxSTAGEFILE.Text = strファイル名;
\r
3907 private void buttonBACKGROUND参照_Click( object sender, EventArgs e )
\r
3909 string str初期フォルダ名 = this.str作業フォルダ名;
\r
3911 if( this.textBoxBACKGROUND.Text.Length > 0 )
\r
3912 str初期フォルダ名 = this.strファイルの存在するディレクトリを絶対パスで返す( this.textBoxBACKGROUND.Text );
\r
3914 string strファイル名 = this.tファイル選択ダイアログでファイルを選択し相対パスにして返す(
\r
3915 Resources.str背景画像ファイル選択ダイアログのタイトル,
\r
3916 Resources.str画像ファイル選択ダイアログのフィルタ,
\r
3919 if( strファイル名.Length > 0 )
\r
3921 this.textBoxBACKGROUND.Text = strファイル名;
\r
3925 private void buttonRESULTIMAGE参照_Click( object sender, EventArgs e )
\r
3927 string str初期フォルダ名 = this.str作業フォルダ名;
\r
3929 if( this.textBoxRESULTIMAGE.Text.Length > 0 )
\r
3930 str初期フォルダ名 = this.strファイルの存在するディレクトリを絶対パスで返す( this.textBoxRESULTIMAGE.Text );
\r
3932 string strファイル名 = this.tファイル選択ダイアログでファイルを選択し相対パスにして返す(
\r
3933 Resources.str結果画像ファイル選択ダイアログのタイトル,
\r
3934 Resources.str画像ファイル選択ダイアログのフィルタ,
\r
3937 if( strファイル名.Length > 0 )
\r
3939 this.textBoxRESULTIMAGE.Text = strファイル名;
\r
3943 //-----------------
\r
3945 #region [ GUIイベント:WAVリスト関連 ]
\r
3946 //-----------------
\r
3947 private void listViewWAVリスト_Click( object sender, EventArgs e )
\r
3949 #region [ プレビュー音を再生する。]
\r
3950 //-----------------
\r
3951 if( this.listViewWAVリスト.SelectedIndices.Count > 0 && this.toolStripButtonWAVリストプレビュースイッチ.Checked )
\r
3953 ListViewItem item = this.listViewWAVリスト.Items[ this.listViewWAVリスト.SelectedIndices[ 0 ] ];
\r
3954 this.mgrWAVリスト管理者.tプレビュー音を再生する( C変換.n36進数2桁の文字列を数値に変換して返す( item.SubItems[ 1 ].Text ) );
\r
3956 //-----------------
\r
3959 private void listViewWAVリスト_DoubleClick( object sender, EventArgs e )
\r
3961 #region [ サウンドプロパティを開いて編集する。]
\r
3962 //-----------------
\r
3963 if( this.mgrWAVリスト管理者.n現在選択中のItem番号0to1294 < 0 )
\r
3964 return; // 選択されていない
\r
3966 this.mgrWAVリスト管理者.tサウンドプロパティを開いて編集する( this.mgrWAVリスト管理者.n現在選択中のItem番号0to1294 + 1, this.str作業フォルダ名 );
\r
3967 //-----------------
\r
3970 private void listViewWAVリスト_ItemDrag( object sender, ItemDragEventArgs e )
\r
3972 #region [ CWAVデータをDragDrop用データに格納し、DoDragDrop()を呼び出す。]
\r
3973 //-----------------
\r
3974 var item = (ListViewItem) e.Item;
\r
3976 var data = new Cチップパレット向けDragDropデータ() {
\r
3978 strラベル名 = item.SubItems[ 0 ].Text,
\r
3979 n番号1to1295 = C変換.n36進数2桁の文字列を数値に変換して返す( item.SubItems[ 1 ].Text ),
\r
3980 strファイル名 = item.SubItems[ 2 ].Text,
\r
3981 col文字色 = item.ForeColor,
\r
3982 col背景色 = item.BackColor,
\r
3985 this.DoDragDrop( data, DragDropEffects.Copy );
\r
3987 //-----------------
\r
3990 private void listViewWAVリスト_KeyPress( object sender, KeyPressEventArgs e )
\r
3992 #region [ ENTER が押下されたら、サウンドプロパティを開いて編集する。]
\r
3993 //-----------------
\r
3994 if( e.KeyChar == (char) Keys.Return )
\r
3996 if( this.mgrWAVリスト管理者.n現在選択中のItem番号0to1294 < 0 )
\r
3997 return; // 選択されていない
\r
3999 this.mgrWAVリスト管理者.tサウンドプロパティを開いて編集する( this.mgrWAVリスト管理者.n現在選択中のItem番号0to1294 + 1, this.str作業フォルダ名 );
\r
4001 //-----------------
\r
4004 private void listViewWAVリスト_MouseEnter( object sender, EventArgs e )
\r
4006 #region [ WAVリストにフォーカスを移動する。]
\r
4007 //-----------------
\r
4008 if( this.appアプリ設定.AutoFocus )
\r
4009 this.mgrWAVリスト管理者.tWAVリストにフォーカスを当てる();
\r
4010 //-----------------
\r
4013 private void listViewWAVリスト_RetrieveVirtualItem( object sender, RetrieveVirtualItemEventArgs e )
\r
4015 e.Item = this.mgrWAVリスト管理者.tCWAVとListViewItemを生成して返す( e.ItemIndex + 1 );
\r
4017 private void listViewWAVリスト_SelectedIndexChanged( object sender, EventArgs e )
\r
4019 #region [ WAV, BMP, AVI のカーソルを、選択された行に全部合わせる。]
\r
4020 //-----------------
\r
4021 if( this.listViewWAVリスト.SelectedIndices.Count > 0 )
\r
4022 this.tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( this.listViewWAVリスト.SelectedIndices[ 0 ] );
\r
4023 //-----------------
\r
4027 private void toolStripButtonWAVリストプレビュースイッチ_CheckStateChanged( object sender, EventArgs e )
\r
4029 #region [ 再生ボタンと停止ボタンの有効・無効を設定する。]
\r
4030 //-----------------
\r
4031 bool b再生有効 = ( this.toolStripButtonWAVリストプレビュースイッチ.CheckState == CheckState.Checked ) ? true : false;
\r
4032 this.toolStripButtonWAVリストプレビュー再生開始.Enabled = b再生有効;
\r
4033 this.toolStripButtonWAVリストプレビュー再生停止.Enabled = b再生有効;
\r
4034 //-----------------
\r
4037 #region [ 無効かつ再生中ならプレビュー音を停止する。]
\r
4038 //-----------------
\r
4040 this.mgrWAVリスト管理者.tプレビュー音を停止する();
\r
4041 //-----------------
\r
4044 private void toolStripButtonWAVリストプレビュー再生開始_Click( object sender, EventArgs e )
\r
4046 #region [ 現在選択中のWAVのプレビュー音を再生する。]
\r
4047 //-----------------
\r
4048 if( this.listViewWAVリスト.SelectedIndices.Count <= 0 )
\r
4049 return; // 選択されてない
\r
4051 bool b再生有効 = ( this.toolStripButtonWAVリストプレビュースイッチ.CheckState == CheckState.Checked ) ? true : false;
\r
4055 int nWAV番号1to1295 = this.mgrWAVリスト管理者.n現在選択中のItem番号0to1294 + 1;
\r
4056 this.mgrWAVリスト管理者.tプレビュー音を再生する( nWAV番号1to1295 );
\r
4058 //-----------------
\r
4061 private void toolStripButtonWAVリストプレビュー再生停止_Click( object sender, EventArgs e )
\r
4063 this.mgrWAVリスト管理者.tプレビュー音を停止する();
\r
4065 private void toolStripButtonWAVリスト上移動_Click( object sender, EventArgs e )
\r
4067 #region [ 上の行とWAVを交換する。]
\r
4068 //-----------------
\r
4069 if( this.listViewWAVリスト.SelectedIndices.Count <= 0 )
\r
4070 return; // 選択されていない
\r
4072 int n選択されたItem番号0to1294 = this.listViewWAVリスト.SelectedIndices[ 0 ];
\r
4074 if( n選択されたItem番号0to1294 == 0 )
\r
4075 return; // 最上行なので無視
\r
4077 this.mgrWAVリスト管理者.tItemを交換する( n選択されたItem番号0to1294, n選択されたItem番号0to1294 - 1 );
\r
4078 //-----------------
\r
4081 private void toolStripButtonWAVリスト下移動_Click( object sender, EventArgs e )
\r
4083 if( this.listViewWAVリスト.SelectedIndices.Count <= 0 )
\r
4084 return; // 選択されていない
\r
4086 int n選択されたItem番号0to1294 = this.listViewWAVリスト.SelectedIndices[ 0 ];
\r
4088 if( n選択されたItem番号0to1294 >= 1294 )
\r
4089 return; // 最下行なので無視
\r
4091 this.mgrWAVリスト管理者.tItemを交換する( n選択されたItem番号0to1294, n選択されたItem番号0to1294 + 1 );
\r
4093 //-----------------
\r
4095 #region [ GUIイベント:BMPリスト関連 ]
\r
4096 //-----------------
\r
4097 private void listViewBMPリスト_Click( object sender, EventArgs e )
\r
4101 private void listViewBMPリスト_DoubleClick( object sender, EventArgs e )
\r
4103 #region [ 画像プロパティを開いて編集する。]
\r
4104 //-----------------
\r
4105 if( this.mgrBMPリスト管理者.n現在選択中のItem番号0to1294 < 0 )
\r
4106 return; // 選択されていない
\r
4108 this.mgrBMPリスト管理者.t画像プロパティを開いて編集する( this.mgrBMPリスト管理者.n現在選択中のItem番号0to1294 + 1, this.str作業フォルダ名 );
\r
4109 //-----------------
\r
4112 private void listViewBMPリスト_ItemDrag( object sender, ItemDragEventArgs e )
\r
4114 #region [ CBMPデータをDragDrop用データに格納し、DoDragDrop()を呼び出す。]
\r
4115 //-----------------
\r
4116 var item = (ListViewItem) e.Item;
\r
4118 var data = new Cチップパレット向けDragDropデータ() {
\r
4120 strラベル名 = item.SubItems[ 1 ].Text,
\r
4121 n番号1to1295 = C変換.n36進数2桁の文字列を数値に変換して返す( item.SubItems[ 2 ].Text ),
\r
4122 strファイル名 = item.SubItems[ 3 ].Text,
\r
4123 col文字色 = item.ForeColor,
\r
4124 col背景色 = item.BackColor,
\r
4127 this.DoDragDrop( data, DragDropEffects.Copy );
\r
4128 //-----------------
\r
4131 private void listViewBMPリスト_KeyPress( object sender, KeyPressEventArgs e )
\r
4133 #region [ ENTER が押下されたら、画像プロパティを開いて編集する。]
\r
4134 //-----------------
\r
4135 if( e.KeyChar == (char) Keys.Return )
\r
4137 if( this.mgrBMPリスト管理者.n現在選択中のItem番号0to1294 < 0 )
\r
4138 return; // 選択されていない
\r
4140 this.mgrBMPリスト管理者.t画像プロパティを開いて編集する( this.mgrBMPリスト管理者.n現在選択中のItem番号0to1294 + 1, this.str作業フォルダ名 );
\r
4142 //-----------------
\r
4145 private void listViewBMPリスト_MouseEnter( object sender, EventArgs e )
\r
4147 #region [ BMPリストにフォーカスを移動する。]
\r
4148 //-----------------
\r
4149 if( this.appアプリ設定.AutoFocus )
\r
4150 this.mgrBMPリスト管理者.tBMPリストにフォーカスを当てる();
\r
4151 //-----------------
\r
4154 private void listViewBMPリスト_RetrieveVirtualItem( object sender, RetrieveVirtualItemEventArgs e )
\r
4156 e.Item = this.mgrBMPリスト管理者.tCBMPとListViewItemを生成して返す( e.ItemIndex + 1 );
\r
4158 private void listViewBMPリスト_SelectedIndexChanged( object sender, EventArgs e )
\r
4160 #region [ WAV, BMP, AVI のカーソルを、選択された行に全部合わせる。]
\r
4161 //-----------------
\r
4162 if( this.listViewBMPリスト.SelectedIndices.Count > 0 )
\r
4163 this.tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( this.listViewBMPリスト.SelectedIndices[ 0 ] );
\r
4164 //-----------------
\r
4168 private void toolStripButtonBMPリスト上移動_Click( object sender, EventArgs e )
\r
4170 #region [ 上の行とBMPを交換する。]
\r
4171 //-----------------
\r
4172 if( this.listViewBMPリスト.SelectedIndices.Count <= 0 )
\r
4173 return; // 選択されていない
\r
4175 int n選択されたItem番号0to1294 = this.listViewBMPリスト.SelectedIndices[ 0 ];
\r
4177 if( n選択されたItem番号0to1294 != 0 )
\r
4178 this.mgrBMPリスト管理者.tItemを交換する( n選択されたItem番号0to1294, n選択されたItem番号0to1294 - 1 );
\r
4179 //-----------------
\r
4182 private void toolStripButtonBMPリスト下移動_Click( object sender, EventArgs e )
\r
4184 #region [ 下の行とBMPを交換する。]
\r
4185 //-----------------
\r
4186 if( this.listViewBMPリスト.SelectedIndices.Count <= 0 )
\r
4187 return; // 選択されていない
\r
4189 int n選択されたItem番号0to1294 = this.listViewBMPリスト.SelectedIndices[ 0 ];
\r
4191 if( n選択されたItem番号0to1294 >= 1294 )
\r
4192 return; // 最下行なので無視
\r
4194 this.mgrBMPリスト管理者.tItemを交換する( n選択されたItem番号0to1294, n選択されたItem番号0to1294 + 1 );
\r
4195 //-----------------
\r
4198 //-----------------
\r
4200 #region [ GUIイベント:AVIリスト関連 ]
\r
4201 //-----------------
\r
4202 private void listViewAVIリスト_Click( object sender, EventArgs e )
\r
4206 private void listViewAVIリスト_DoubleClick( object sender, EventArgs e )
\r
4208 #region [ 動画プロパティを開いて編集する。]
\r
4209 //-----------------
\r
4210 if( this.mgrAVIリスト管理者.n現在選択中のItem番号0to1294 < 0 )
\r
4211 return; // 選択されていない
\r
4213 this.mgrAVIリスト管理者.t動画プロパティを開いて編集する( this.mgrAVIリスト管理者.n現在選択中のItem番号0to1294 + 1, this.str作業フォルダ名 );
\r
4214 //-----------------
\r
4217 private void listViewAVIリスト_ItemDrag( object sender, ItemDragEventArgs e )
\r
4219 #region [ CAVIデータをDragDrop用データに格納してDoDragDrop()を呼び出す。]
\r
4220 //-----------------
\r
4221 var item = (ListViewItem) e.Item;
\r
4223 var data = new Cチップパレット向けDragDropデータ() {
\r
4225 strラベル名 = item.SubItems[ 0 ].Text,
\r
4226 n番号1to1295 = C変換.n36進数2桁の文字列を数値に変換して返す( item.SubItems[ 1 ].Text ),
\r
4227 strファイル名 = item.SubItems[ 2 ].Text,
\r
4228 col文字色 = item.ForeColor,
\r
4229 col背景色 = item.BackColor,
\r
4232 this.DoDragDrop( data, DragDropEffects.Copy );
\r
4233 //-----------------
\r
4236 private void listViewAVIリスト_KeyPress( object sender, KeyPressEventArgs e )
\r
4238 #region [ ENTER が押下されたら、動画プロパティを開いて編集する。]
\r
4239 //-----------------
\r
4240 if( e.KeyChar == (char) Keys.Return )
\r
4242 if( this.mgrAVIリスト管理者.n現在選択中のItem番号0to1294 < 0 )
\r
4243 return; // 選択されてない
\r
4245 this.mgrAVIリスト管理者.t動画プロパティを開いて編集する( this.mgrAVIリスト管理者.n現在選択中のItem番号0to1294 + 1, this.str作業フォルダ名 );
\r
4247 //-----------------
\r
4250 private void listViewAVIリスト_MouseEnter( object sender, EventArgs e )
\r
4252 #region [ AVIリストにフォーカスを移動する。]
\r
4253 //-----------------
\r
4254 if( this.appアプリ設定.AutoFocus )
\r
4255 this.mgrAVIリスト管理者.tAVIリストにフォーカスを当てる();
\r
4256 //-----------------
\r
4259 private void listViewAVIリスト_RetrieveVirtualItem( object sender, RetrieveVirtualItemEventArgs e )
\r
4261 e.Item = this.mgrAVIリスト管理者.tCAVIとListViewItemを生成して返す( e.ItemIndex + 1 );
\r
4263 private void listViewAVIリスト_SelectedIndexChanged( object sender, EventArgs e )
\r
4265 #region [ WAV, BMP, AVI のカーソルを、選択された行に全部合わせる。]
\r
4266 //-----------------
\r
4267 if( this.listViewAVIリスト.SelectedIndices.Count > 0 )
\r
4268 this.tWAV・BMP・AVIリストのカーソルを全部同じ行に合わせる( this.listViewAVIリスト.SelectedIndices[ 0 ] );
\r
4269 //-----------------
\r
4273 private void toolStripButtonAVIリスト上移動_Click( object sender, EventArgs e )
\r
4275 #region [ 上の行とAVIを交換する。]
\r
4276 //-----------------
\r
4277 if( this.listViewAVIリスト.SelectedIndices.Count <= 0 )
\r
4278 return; // 選択されていない
\r
4280 int n選択されたItem番号0to1294 = this.listViewAVIリスト.SelectedIndices[ 0 ];
\r
4282 if( n選択されたItem番号0to1294 == 0 )
\r
4283 return; // 最上行なので無視
\r
4285 this.mgrAVIリスト管理者.tItemを交換する( n選択されたItem番号0to1294, n選択されたItem番号0to1294 - 1 );
\r
4286 //-----------------
\r
4289 private void toolStripButtonAVIリスト下移動_Click( object sender, EventArgs e )
\r
4291 #region [ 下の行とAVIを交換する。]
\r
4292 //-----------------
\r
4293 if( this.listViewAVIリスト.SelectedIndices.Count <= 0 )
\r
4294 return; // 選択されていない
\r
4296 int n選択されたItem番号0to1294 = this.listViewAVIリスト.SelectedIndices[ 0 ];
\r
4298 if( n選択されたItem番号0to1294 >= 1294 )
\r
4299 return; // 最下行なので無視
\r
4301 this.mgrAVIリスト管理者.tItemを交換する( n選択されたItem番号0to1294, n選択されたItem番号0to1294 + 1 );
\r
4302 //-----------------
\r
4305 //-----------------
\r
4307 #region [ GUIイベント:自由入力関連 ]
\r
4308 //-----------------
\r
4309 private string textBox自由入力欄_以前の値 = "";
\r
4310 private void textBox自由入力欄_TextChanged( object sender, EventArgs e )
\r
4312 // Undo/Redo リストを修正。
\r
4314 #region [ Undo/Redo リストを修正する。]
\r
4315 //-----------------
\r
4316 if( !CUndoRedo管理.bUndoRedoした直後 )
\r
4318 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
4320 if( ( oセル仮想 != null ) && oセル仮想.b所有権がある( this.textBox自由入力欄 ) )
\r
4324 ( (CUndoRedoセル<string>) oセル仮想 ).変更後の値 = this.textBox自由入力欄.Text;
\r
4330 this.mgrUndoRedo管理者.tノードを追加する(
\r
4331 new CUndoRedoセル<string>(
\r
4332 this.textBox自由入力欄,
\r
4333 new DGUndoを実行する<string>( this.textBox自由入力欄_Undo ),
\r
4334 new DGRedoを実行する<string>( this.textBox自由入力欄_Redo ),
\r
4335 this.textBox自由入力欄_以前の値, this.textBox自由入力欄.Text ) );
\r
4340 this.tUndoRedo用GUIの有効・無効を設定する();
\r
4343 //-----------------
\r
4347 // Undo 用に値を保管しておく。
\r
4349 this.textBox自由入力欄_以前の値 = this.textBox自由入力欄.Text;
\r
4354 CUndoRedo管理.bUndoRedoした直後 = false;
\r
4357 private void textBox自由入力欄_Leave( object sender, EventArgs e )
\r
4359 CUndoRedoセル仮想 oセル仮想 = this.mgrUndoRedo管理者.tUndoするノードを取得して返す・見るだけ();
\r
4361 if( oセル仮想 != null )
\r
4362 oセル仮想.t所有権の放棄( this.textBox自由入力欄 );
\r
4364 private void textBox自由入力欄_Undo( string str変更前, string str変更後 )
\r
4368 this.tタブを選択する( Eタブ種別.自由入力 );
\r
4370 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
4371 this.textBox自由入力欄.Text = str変更前;
\r
4373 this.textBox自由入力欄.Focus();
\r
4375 private void textBox自由入力欄_Redo( string str変更前, string str変更後 )
\r
4379 this.tタブを選択する( Eタブ種別.自由入力 );
\r
4381 this.t次のプロパティ変更処理がUndoRedoリストに載らないようにする();
\r
4382 this.textBox自由入力欄.Text = str変更後;
\r
4384 this.textBox自由入力欄.Focus();
\r
4386 //-----------------
\r
4389 #region [ GUIイベント:メニューバー [ファイル] ]
\r
4390 //-----------------
\r
4391 private void toolStripMenuItem新規_Click( object sender, EventArgs e )
\r
4393 this.tシナリオ・新規作成();
\r
4395 private void toolStripMenuItem開く_Click( object sender, EventArgs e )
\r
4399 private void toolStripMenuItem上書き保存_Click( object sender, EventArgs e )
\r
4401 this.tシナリオ・上書き保存();
\r
4403 private void toolStripMenuItem名前を付けて保存_Click( object sender, EventArgs e )
\r
4405 this.tシナリオ・名前をつけて保存();
\r
4407 private void toolStripMenuItem終了_Click( object sender, EventArgs e )
\r
4411 private void toolStripMenuItem最近使ったファイル_Click( object sender, EventArgs e )
\r
4413 // ※このイベントハンドラに対応する「toolStripMenuItem最近使ったファイル」というアイテムはデザイナにはないので注意。
\r
4414 // this.t最近使ったファイルをFileメニューへ追加する() の中で、手動で作って追加したアイテムに対するハンドラである。
\r
4416 if( this.t未保存なら保存する() == DialogResult.Cancel )
\r
4419 this.t演奏ファイルを開いて読み込む( ( (ToolStripMenuItem) sender ).Text.Substring( 3 ) );
\r
4421 //-----------------
\r
4423 #region [ GUIイベント:メニューバー [編集] ]
\r
4424 //-----------------
\r
4425 private void toolStripMenuItemアンドゥ_Click( object sender, EventArgs e )
\r
4427 this.tシナリオ・Undoする();
\r
4429 private void toolStripMenuItemリドゥ_Click( object sender, EventArgs e )
\r
4431 this.tシナリオ・Redoする();
\r
4433 private void toolStripMenuItem切り取り_Click( object sender, EventArgs e )
\r
4435 this.tシナリオ・切り取り();
\r
4437 private void toolStripMenuItemコピー_Click( object sender, EventArgs e )
\r
4441 private void toolStripMenuItem貼り付け_Click( object sender, EventArgs e )
\r
4443 // マウスが譜面上にあるならそこから貼り付ける。
\r
4445 Point ptマウス位置 = this.pt現在のマウス位置を譜面の可視領域相対の座標dotで返す();
\r
4446 Size sz譜面の可視サイズ = this.sz譜面の可視領域の大きさdotを返す();
\r
4449 if( ( ( ptマウス位置.X < 0 ) || ( ptマウス位置.Y < 0 ) ) || ( ( ptマウス位置.X > sz譜面の可視サイズ.Width ) || ( ptマウス位置.Y > sz譜面の可視サイズ.Height ) ) )
\r
4451 // マウスが譜面上になかった → 表示領域下辺から貼り付ける
\r
4453 this.tシナリオ・貼り付け( this.mgr譜面管理者.n現在の譜面表示下辺の譜面先頭からの位置grid );
\r
4459 this.tシナリオ・貼り付け( this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptマウス位置.Y ) );
\r
4462 private void toolStripMenuItem削除_Click( object sender, EventArgs e )
\r
4466 private void toolStripMenuItemすべて選択_Click( object sender, EventArgs e )
\r
4468 // 編集モードなら強制的に選択モードにする。
\r
4470 if( this.b編集モードである )
\r
4476 this.mgr選択モード管理者.t全チップを選択する();
\r
4478 private void toolStripMenuItem選択モード_Click( object sender, EventArgs e )
\r
4482 private void toolStripMenuItem編集モード_Click( object sender, EventArgs e )
\r
4486 private void toolStripMenuItemモード切替_Click( object sender, EventArgs e )
\r
4488 if( this.b選択モードである )
\r
4497 private void toolStripMenuItem検索_Click( object sender, EventArgs e )
\r
4501 private void toolStripMenuItem置換_Click( object sender, EventArgs e )
\r
4505 //-----------------
\r
4507 #region [ GUIイベント:メニューバー [表示] ]
\r
4508 //-----------------
\r
4509 private void toolStripMenuItemチップパレット_Click( object sender, EventArgs e )
\r
4511 if( this.toolStripMenuItemチップパレット.CheckState == CheckState.Checked )
\r
4513 this.dlgチップパレット.t表示する();
\r
4517 this.dlgチップパレット.t隠す();
\r
4520 private void toolStripMenuItemガイド間隔4分_Click( object sender, EventArgs e )
\r
4522 this.tガイド間隔を変更する( 4 );
\r
4524 private void toolStripMenuItemガイド間隔8分_Click( object sender, EventArgs e )
\r
4526 this.tガイド間隔を変更する( 8 );
\r
4528 private void toolStripMenuItemガイド間隔12分_Click( object sender, EventArgs e )
\r
4530 this.tガイド間隔を変更する( 12 );
\r
4532 private void toolStripMenuItemガイド間隔16分_Click( object sender, EventArgs e )
\r
4534 this.tガイド間隔を変更する( 0x10 );
\r
4536 private void toolStripMenuItemガイド間隔24分_Click( object sender, EventArgs e )
\r
4538 this.tガイド間隔を変更する( 0x18 );
\r
4540 private void toolStripMenuItemガイド間隔32分_Click( object sender, EventArgs e )
\r
4542 this.tガイド間隔を変更する( 0x20 );
\r
4544 private void toolStripMenuItemガイド間隔48分_Click( object sender, EventArgs e )
\r
4546 this.tガイド間隔を変更する( 0x30 );
\r
4548 private void toolStripMenuItemガイド間隔64分_Click( object sender, EventArgs e )
\r
4550 this.tガイド間隔を変更する( 0x40 );
\r
4552 private void toolStripMenuItemガイド間隔フリー_Click( object sender, EventArgs e )
\r
4554 this.tガイド間隔を変更する( 0 );
\r
4556 private void toolStripMenuItemガイド間隔拡大_Click( object sender, EventArgs e )
\r
4558 switch( this.n現在のガイド間隔4to64or0 )
\r
4561 case 8: this.tガイド間隔を変更する( 4 ); break;
\r
4562 case 12: this.tガイド間隔を変更する( 8 ); break;
\r
4563 case 16: this.tガイド間隔を変更する( 12 ); break;
\r
4564 case 24: this.tガイド間隔を変更する( 16 ); break;
\r
4565 case 32: this.tガイド間隔を変更する( 24 ); break;
\r
4566 case 48: this.tガイド間隔を変更する( 32 ); break;
\r
4567 case 64: this.tガイド間隔を変更する( 48 ); break;
\r
4568 case 0: this.tガイド間隔を変更する( 64 ); break;
\r
4571 private void toolStripMenuItemガイド間隔縮小_Click( object sender, EventArgs e )
\r
4573 switch( this.n現在のガイド間隔4to64or0 )
\r
4575 case 4: this.tガイド間隔を変更する( 8 ); break;
\r
4576 case 8: this.tガイド間隔を変更する( 12 ); break;
\r
4577 case 12: this.tガイド間隔を変更する( 16 ); break;
\r
4578 case 16: this.tガイド間隔を変更する( 24 ); break;
\r
4579 case 24: this.tガイド間隔を変更する( 32 ); break;
\r
4580 case 32: this.tガイド間隔を変更する( 48 ); break;
\r
4581 case 48: this.tガイド間隔を変更する( 64 ); break;
\r
4582 case 64: this.tガイド間隔を変更する( 0 ); break;
\r
4586 //-----------------
\r
4588 #region [ GUIイベント:メニューバー [再生] ]
\r
4589 //-----------------
\r
4590 private void toolStripMenuItem先頭から再生_Click( object sender, EventArgs e )
\r
4592 this.tシナリオ・Viewerで最初から再生する();
\r
4594 private void toolStripMenuItem現在位置から再生_Click( object sender, EventArgs e )
\r
4596 this.tシナリオ・Viewerで現在位置から再生する();
\r
4598 private void toolStripMenuItem現在位置からBGMのみ再生_Click( object sender, EventArgs e )
\r
4600 this.tシナリオ・Viewerで現在位置からBGMのみ再生する();
\r
4602 private void toolStripMenuItem再生停止_Click( object sender, EventArgs e )
\r
4604 this.tシナリオ・Viewerを再生停止する();
\r
4606 //-----------------
\r
4608 #region [ GUIイベント:メニューバー [ツール] ]
\r
4609 //-----------------
\r
4610 private void toolStripMenuItemオプション_Click( object sender, EventArgs e )
\r
4612 this.mgrオプション管理者.tオプションダイアログを開いて編集し結果をアプリ設定に格納する();
\r
4613 this.mgr譜面管理者.tRefreshDisplayLanes(); // レーンの表示/非表示切り替えに備えて追加
\r
4615 //-----------------
\r
4617 #region [ GUIイベント:メニューバー [ヘルプ] ]
\r
4618 //-----------------
\r
4619 private void toolStripMenuItemDTXCreaterマニュアル_Click( object sender, EventArgs e )
\r
4623 // マニュアルを別プロセスとして開く。
\r
4625 Process.Start( this.strDTXCのあるフォルダ名 + @"\Manual.chm" );
\r
4629 this.toolStripMenuItemDTXCreaterマニュアル.Enabled = false;
\r
4632 private void toolStripMenuItemバージョン_Click( object sender, EventArgs e )
\r
4634 this.dlgチップパレット.t一時的に隠蔽する();
\r
4636 Cバージョン情報 cバージョン情報 = new Cバージョン情報();
\r
4637 cバージョン情報.ShowDialog();
\r
4638 cバージョン情報.Dispose();
\r
4640 this.dlgチップパレット.t一時的な隠蔽を解除する();
\r
4642 //-----------------
\r
4645 #region [ GUIイベント:ツールバー ]
\r
4646 //-----------------
\r
4647 private void toolStripButton新規作成_Click( object sender, EventArgs e )
\r
4649 this.tシナリオ・新規作成();
\r
4651 private void toolStripButton開く_Click( object sender, EventArgs e )
\r
4655 private void toolStripButton上書き保存_Click( object sender, EventArgs e )
\r
4657 this.tシナリオ・上書き保存();
\r
4659 private void toolStripButton切り取り_Click( object sender, EventArgs e )
\r
4661 this.tシナリオ・切り取り();
\r
4663 private void toolStripButtonコピー_Click( object sender, EventArgs e )
\r
4667 private void toolStripButton貼り付け_Click( object sender, EventArgs e )
\r
4669 // マウスが譜面上にあるならそこから貼り付ける。
\r
4671 Point ptマウスの位置 = this.pt現在のマウス位置を譜面の可視領域相対の座標dotで返す();
\r
4672 Size sz譜面の可視サイズ = this.sz譜面の可視領域の大きさdotを返す();
\r
4675 if( ( ( ptマウスの位置.X < 0 ) || ( ptマウスの位置.Y < 0 ) ) || ( ( ptマウスの位置.X > sz譜面の可視サイズ.Width ) || ( ptマウスの位置.Y > sz譜面の可視サイズ.Height ) ) )
\r
4677 // マウスが譜面上になかった → 表示領域下辺から貼り付ける
\r
4679 this.tシナリオ・貼り付け( this.mgr譜面管理者.n現在の譜面表示下辺の譜面先頭からの位置grid );
\r
4685 this.tシナリオ・貼り付け( this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptマウスの位置.Y ) );
\r
4688 private void toolStripButton削除_Click( object sender, EventArgs e )
\r
4692 private void toolStripButtonアンドゥ_Click( object sender, EventArgs e )
\r
4694 this.tシナリオ・Undoする();
\r
4696 private void toolStripButtonリドゥ_Click( object sender, EventArgs e )
\r
4698 this.tシナリオ・Redoする();
\r
4700 private void toolStripButtonチップパレット_Click( object sender, EventArgs e )
\r
4702 if( this.toolStripButtonチップパレット.CheckState == CheckState.Checked )
\r
4704 this.dlgチップパレット.t表示する();
\r
4708 this.dlgチップパレット.t隠す();
\r
4711 private void toolStripComboBox譜面拡大率_SelectedIndexChanged( object sender, EventArgs e )
\r
4713 C小節.n基準の高さdot = 192 * ( this.toolStripComboBox譜面拡大率.SelectedIndex + 1 );
\r
4715 this.pictureBox譜面パネル.Refresh();
\r
4717 private void toolStripComboBoxガイド間隔_SelectedIndexChanged( object sender, EventArgs e )
\r
4719 switch( this.toolStripComboBoxガイド間隔.SelectedIndex )
\r
4722 this.tガイド間隔を変更する( 4 );
\r
4726 this.tガイド間隔を変更する( 8 );
\r
4730 this.tガイド間隔を変更する( 12 );
\r
4734 this.tガイド間隔を変更する( 16 );
\r
4738 this.tガイド間隔を変更する( 24 );
\r
4742 this.tガイド間隔を変更する( 32 );
\r
4746 this.tガイド間隔を変更する( 48 );
\r
4750 this.tガイド間隔を変更する( 64 );
\r
4754 this.tガイド間隔を変更する( 0 );
\r
4758 private void toolStripButton選択モード_Click( object sender, EventArgs e )
\r
4762 private void toolStripButton編集モード_Click( object sender, EventArgs e )
\r
4766 private void toolStripButton先頭から再生_Click( object sender, EventArgs e )
\r
4768 this.tシナリオ・Viewerで最初から再生する();
\r
4770 private void toolStripButton現在位置から再生_Click( object sender, EventArgs e )
\r
4772 this.tシナリオ・Viewerで現在位置から再生する();
\r
4774 private void toolStripButton現在位置からBGMのみ再生_Click( object sender, EventArgs e )
\r
4776 this.tシナリオ・Viewerで現在位置からBGMのみ再生する();
\r
4778 private void toolStripButton再生停止_Click( object sender, EventArgs e )
\r
4780 this.tシナリオ・Viewerを再生停止する();
\r
4782 //-----------------
\r
4785 //-----------------
\r