XSIのプラグインでダイアログを使用する3
今回はダイアログに数値入力、カラー選択、
ファイル、フォルダ選択を追加してみたいと思います。
まずは数値入力です。
前の2件の記事を見ていただければ分かると思いますが、
CustomProperty::AddParameter()とPPGLayout::AddItem()を使用します。
cpset.AddParameter( L"test_number_int", CValue::siInt4, siPersistable, L"", L"", 50, param ); item = layout.AddItem( L"test_number_int", L"Number Int", siControlNumber );
これを実行すると以下のようになります。
デフォルトでは0~100までの数値をスライダーで調整できます。
直接入力ならばパラメータの型の最大値まで扱うことが出来ます。(siInt2なら-32768~32767まで)
AddParameterの第2引数にsiFloat、siDoubleなどを指定すれば小数点まで調整することが出来ます。
スライダーで0~100の範囲外の数値を扱うには、
AddParameterのオーバーロードされた引数の多い方を使用します。
cpset.AddParameter( L"test_number_int", CValue::siInt4, siPersistable, L"", L"", 0, -500, 500, -300, 300, param ); item = layout.AddItem( L"test_number_int", L"Number Int", siControlNumber );
この例では、スライダーで-300~300の間、直接入力で-500~500の数値を扱うことが出来ます。
9,10番目の引数がスライダーの調整範囲、7,8番目の引数が直接入力の範囲制限になります。
ちなみに6番目の引数がデフォルト値です。
次にカラー選択です。
カラー選択を追加するにはRGBならパラメータを3つ、RGBAならパラメータを4つ、
あらかじめ追加しておかなくてはなりません。
コードは以下のようになります。
// siControlRGBにはパラメータが3つ必要 cpset.AddParameter( L"test_rgb_r", CValue::siDouble, siPersistable, L"", L"", 0.0, param ); cpset.AddParameter( L"test_rgb_g", CValue::siDouble, siPersistable, L"", L"", 0.0, param ); cpset.AddParameter( L"test_rgb_b", CValue::siDouble, siPersistable, L"", L"", 0.0, param ); item = layout.AddItem( L"test_rgb_r", L"RGB", siControlRGB ); // siControlRGBAにはパラメータが4つ必要 cpset.AddParameter( L"test_rgba_r", CValue::siDouble, siPersistable, L"", L"", 0.0, param ); cpset.AddParameter( L"test_rgba_g", CValue::siDouble, siPersistable, L"", L"", 0.0, param ); cpset.AddParameter( L"test_rgba_b", CValue::siDouble, siPersistable, L"", L"", 0.0, param ); cpset.AddParameter( L"test_rgba_a", CValue::siDouble, siPersistable, L"", L"", 0.0, param ); item = layout.AddItem( L"test_rgba_r", L"RGBA", siControlRGBA );
これを実行すると以下のようになります。
次にファイル選択です。
ファイルの選択のコードは以下のようになります。
// ファイルの選択 cpset.AddParameter( L"test_path", CValue::siString, siPersistable, L"", L"", L"", param ); item = layout.AddItem( L"test_path", L"File Path", siControlFilePath );
これを実行すると以下のようになります。
ファイル選択はデフォルトのままだと、上書きの確認入ります。
読み込みアクセスにしたい場合は、この後に以下のようなコードを追加します。
item.PutAttribute( siUIOpenFile, true ); item.PutAttribute( siUIFileMustExist, true );
siUIOpenFileをtrueに設定する事で上書き確認を解除します。
siUIFileMustExistをtrueにすると、ファイルが存在しない場合にはエラーになります。
siUIFileMustExistは特に設定する必要はありませんが、読み込み専用にするなら必要でしょう。
ついでに拡張子でフィルターをかけるコードです。
CString filter; filter += L"Source files (*.cpp *.c *.h)|*.cpp:*.c:*.h|"; filter += L"Text files (*.txt)|*.txt|"; filter += L"All Files (*.*)|*.*||"; item.PutAttribute( siUIFileFilter, filter );
CStringにこのように追加して、siUIFileFilterを設定します。
この辺はWindowsAPIの仕様と同じ様なので、詳しいことはそちらの資料を探してみてください。
最後にフォルダ選択です。
フォルダの選択のコードは以下のようになります。
// フォルダの選択 cpset.AddParameter( L"test_folder", CValue::siString, siPersistable, L"", L"", L"", param ); item = layout.AddItem( L"test_folder", L"Folder", siControlFolder );
これを実行すると以下のようになります。
ダイアログのアイテムに関しては今回でひとまず終わりします。
まだ他にもファンクションカーブやらグリッドやらありますが、
とりあえず自分で使う予定が無いのと結構面倒っぽいので省きます。
使用することになったら改めてしらべて記事を書こうと思います。
コメントする
トラックバックする
トラックバック用URL: