using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.ComponentModel; using DTXCreator.Properties; using FDK; namespace DTXCreator.譜面 { public partial class C検索ダイアログ : Form { public static bool b前回値_チップ範囲指定 = true; public static bool[] b前回値_レーンリストチェック = null; public static bool b前回値_レーン指定 = false; public static bool b前回値_小節範囲指定 = false; public static bool b前回値_表チップ = true; public static bool b前回値_裏チップ = true; public static string[] str前回値_レーンリスト = null; public bool bチップ範囲指定CheckBoxがチェックされている { get { return this.checkBoxチップ範囲指定.Checked; } } public bool bレーンリストの内訳が生成済みである { get { if( str前回値_レーンリスト == null ) { return false; } return true; } } public bool bレーン指定CheckBoxがチェックされている { get { return this.checkBoxレーン指定.Checked; } } public bool b小節範囲指定CheckBoxがチェックされている { get { return this.checkBox小節範囲指定.Checked; } } public bool b表チップCheckBoxがチェックされている { get { return this.checkBox表チップ.Checked; } } public bool b裏チップCheckBoxがチェックされている { get { return this.checkBox裏チップ.Checked; } } public int nチップ範囲開始番号 { get { if( this.textBoxチップ範囲開始.Text.Length > 0 ) { string num = this.textBoxチップ範囲開始.Text; if( num.Length == 1 ) { num = "0" + num; } return C変換.n36進数2桁の文字列を数値に変換して返す( num ); } if( this.textBoxチップ範囲終了.Text.Length <= 0 ) { return -1; } string text = this.textBoxチップ範囲終了.Text; if( text.Length == 1 ) { text = "0" + text; } return C変換.n36進数2桁の文字列を数値に変換して返す( text ); } } public int nチップ範囲終了番号 { get { if( this.textBoxチップ範囲終了.Text.Length > 0 ) { string num = this.textBoxチップ範囲終了.Text; if( num.Length == 1 ) { num = "0" + num; } return C変換.n36進数2桁の文字列を数値に変換して返す( num ); } if( this.textBoxチップ範囲開始.Text.Length <= 0 ) { return -1; } string text = this.textBoxチップ範囲開始.Text; if( text.Length == 1 ) { text = "0" + text; } return C変換.n36進数2桁の文字列を数値に変換して返す( text ); } } public int n小節範囲開始番号 { get { int num2; if( this.textBox小節範囲開始.Text.Length > 0 ) { int num; if( !int.TryParse( this.textBox小節範囲開始.Text, out num ) ) { num = -1; } return num; } if( this.textBox小節範囲終了.Text.Length <= 0 ) { return -1; } if( !int.TryParse( this.textBox小節範囲終了.Text, out num2 ) ) { num2 = -1; } return num2; } } public int n小節範囲終了番号 { get { int num2; if( this.textBox小節範囲終了.Text.Length > 0 ) { int num; if( !int.TryParse( this.textBox小節範囲終了.Text, out num ) ) { num = -1; } return num; } if( this.textBox小節範囲開始.Text.Length <= 0 ) { return -1; } if( !int.TryParse( this.textBox小節範囲開始.Text, out num2 ) ) { num2 = -1; } return num2; } } public C検索ダイアログ() { this.InitializeComponent(); this.checkBoxレーン指定.CheckState = b前回値_レーン指定 ? CheckState.Checked : CheckState.Unchecked; this.checkBoxチップ範囲指定.CheckState = b前回値_チップ範囲指定 ? CheckState.Checked : CheckState.Unchecked; this.checkBox小節範囲指定.CheckState = b前回値_小節範囲指定 ? CheckState.Checked : CheckState.Unchecked; this.checkBox表チップ.CheckState = b前回値_表チップ ? CheckState.Checked : CheckState.Unchecked; this.checkBox裏チップ.CheckState = b前回値_裏チップ ? CheckState.Checked : CheckState.Unchecked; if( ( str前回値_レーンリスト != null ) && ( str前回値_レーンリスト.Length > 0 ) ) { for( int i = 0; i < str前回値_レーンリスト.Length; i++ ) { this.checkedListBoxレーン選択リスト.Items.Add( str前回値_レーンリスト[ i ], b前回値_レーンリストチェック[ i ] ); } } this.tチェックに連動して有効無効が決まるパーツについてEnabledを設定する(); } public bool bレーンが検索対象である( int nレーン番号 ) { if( ( nレーン番号 < 0 ) || ( nレーン番号 >= this.checkedListBoxレーン選択リスト.Items.Count ) ) { return false; } if( this.checkedListBoxレーン選択リスト.GetItemCheckState( nレーン番号 ) != CheckState.Checked ) { return false; } return true; } public void tレーンリストの内訳を生成する( string[] strリスト要素 ) { b前回値_レーンリストチェック = new bool[ strリスト要素.Length ]; for( int i = 0; i < strリスト要素.Length; i++ ) { this.checkedListBoxレーン選択リスト.Items.Add( strリスト要素[ i ] ); b前回値_レーンリストチェック[ i ] = false; } str前回値_レーンリスト = strリスト要素; } private void tチェックに連動して有効無効が決まるパーツについてEnabledを設定する() { bool flag = this.checkBoxレーン指定.Checked; this.buttonALL.Enabled = flag; this.buttonNONE.Enabled = flag; this.checkedListBoxレーン選択リスト.Enabled = flag; flag = this.checkBoxチップ範囲指定.Checked; this.textBoxチップ範囲開始.Enabled = flag; this.textBoxチップ範囲終了.Enabled = flag; flag = this.checkBox小節範囲指定.Checked; this.textBox小節範囲開始.Enabled = flag; this.textBox小節範囲終了.Enabled = flag; } private void C検索ダイアログ_FormClosing( object sender, FormClosingEventArgs e ) { if( base.DialogResult == DialogResult.OK ) { string text = this.textBoxチップ範囲開始.Text; if( text.Length == 1 ) { text = "0" + text; } if( ( text.Length > 0 ) && ( ( text.Length > 2 ) || ( C変換.n36進数2桁の文字列を数値に変換して返す( text ) == -1 ) ) ) { MessageBox.Show( Resources.strチップ番号に誤りがありますMSG + Environment.NewLine + "'" + text + "'", Resources.strエラーダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 ); this.textBoxチップ範囲開始.Focus(); this.textBoxチップ範囲開始.SelectAll(); e.Cancel = true; } else { text = this.textBoxチップ範囲終了.Text; if( text.Length == 1 ) { text = "0" + text; } if( ( text.Length > 0 ) && ( ( text.Length > 2 ) || ( C変換.n36進数2桁の文字列を数値に変換して返す( text ) == -1 ) ) ) { MessageBox.Show( Resources.strチップ番号に誤りがありますMSG + Environment.NewLine + "'" + text + "'", Resources.strエラーダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 ); this.textBoxチップ範囲終了.Focus(); this.textBoxチップ範囲終了.SelectAll(); e.Cancel = true; } else { int num; text = this.textBox小節範囲開始.Text; if( ( text.Length > 0 ) && ( !int.TryParse( text, out num ) || ( num < 0 ) ) ) { MessageBox.Show( Resources.str小節番号に誤りがありますMSG + Environment.NewLine + "'" + text + "'", Resources.strエラーダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 ); this.textBox小節範囲開始.Focus(); this.textBox小節範囲開始.SelectAll(); e.Cancel = true; } else { text = this.textBox小節範囲終了.Text; if( ( text.Length > 0 ) && ( !int.TryParse( text, out num ) || ( num < 0 ) ) ) { MessageBox.Show( Resources.str小節番号に誤りがありますMSG + Environment.NewLine + "'" + text + "'", Resources.strエラーダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 ); this.textBox小節範囲終了.Focus(); this.textBox小節範囲終了.SelectAll(); e.Cancel = true; } else { b前回値_レーン指定 = this.checkBoxレーン指定.Checked; b前回値_チップ範囲指定 = this.checkBoxチップ範囲指定.Checked; b前回値_小節範囲指定 = this.checkBox小節範囲指定.Checked; b前回値_表チップ = this.checkBox表チップ.Checked; b前回値_裏チップ = this.checkBox裏チップ.Checked; for( int i = 0; i < this.checkedListBoxレーン選択リスト.Items.Count; i++ ) { b前回値_レーンリストチェック[ i ] = this.checkedListBoxレーン選択リスト.GetItemCheckState( i ) == CheckState.Checked; } } } } } } } private void C検索ダイアログ_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void textBoxチップ範囲開始_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void textBoxチップ範囲終了_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void textBox小節範囲開始_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void textBox小節範囲終了_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void checkBox小節範囲指定_CheckStateChanged( object sender, EventArgs e ) { this.tチェックに連動して有効無効が決まるパーツについてEnabledを設定する(); } private void checkBox小節範囲指定_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void checkBoxチップ範囲指定_CheckStateChanged( object sender, EventArgs e ) { this.tチェックに連動して有効無効が決まるパーツについてEnabledを設定する(); } private void checkBoxチップ範囲指定_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void checkBoxレーン指定_CheckStateChanged( object sender, EventArgs e ) { this.tチェックに連動して有効無効が決まるパーツについてEnabledを設定する(); } private void checkBoxレーン指定_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void checkedListBoxレーン選択リスト_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void checkBox表チップ_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void checkBox裏チップ_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Return ) { this.buttonOK.PerformClick(); } else if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void buttonNONE_Click( object sender, EventArgs e ) { for( int i = 0; i < this.checkedListBoxレーン選択リスト.Items.Count; i++ ) { this.checkedListBoxレーン選択リスト.SetItemCheckState( i, CheckState.Unchecked ); } } private void buttonNONE_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } private void buttonALL_Click( object sender, EventArgs e ) { for( int i = 0; i < this.checkedListBoxレーン選択リスト.Items.Count; i++ ) { this.checkedListBoxレーン選択リスト.SetItemChecked( i, true ); } } private void buttonALL_KeyDown( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Escape ) { this.buttonキャンセル.PerformClick(); } } } }