#[filter_config_items]filter only.Expand description
FilterConfigItems を自動で実装するためのマクロ。
このマクロは他のderiveなどのマクロより先に適用する必要があります。
§Attributes
- structのフィールドはすべてちょうど1つの属性を持つ必要があります。
§track
#[track(name = "サンプル整数", range = 0..=100, default = 50, step = 1.0)]
int_field: i32,
#[track(name = "サンプル小数", range = 0.0..=1.0, default = 0.5, step = 0.01)]
float_field: f64,-
name: トラックバーの名前。省略した場合、フィールド名が使用されます。 -
range: トラックバーの範囲。閉区間で指定します(例:0.0..=1.0)。 -
default: トラックバーの初期値。 -
step: トラックバーのステップ値。1.0,0.1,0.01,0.001のいずれかを指定します。 -
range、defaultはstepで割り切れる値である必要があります。 -
値の型はプリミティブ、厳密には
value as _で変換可能な型である必要があります。
§check
#[check(name = "サンプルチェックボックス", default = true)]
bool_field: bool,-
name: チェックボックスの名前。省略した場合、フィールド名が使用されます。 -
default: チェックボックスの初期値。 -
値の型は
boolである必要があります。
§color
#[color(name = "サンプルカラー", default = 0x48b0d5)]
color_field: aviutl2::filter::FilterConfigColorValue,
#[color(name = "サンプルカラー2", default = "#48b0d5")]
color_field2: aviutl2::filter::FilterConfigColorValue,
#[color(name = "サンプルカラー3", default = (72, 176, 213))]
color_field3: aviutl2::filter::FilterConfigColorValue,-
name: 色選択の名前。省略した場合、フィールド名が使用されます。 -
default: 色の初期値。0xRRGGBB形式の整数、"#RRGGBB"形式の文字列、または(R, G, B)形式のタプルで指定します。 -
値の型は
From<aviutl2::filter::FilterConfigColorValue>を実装している必要があります。
§select
#[select(
name = "サンプルセレクトボックス",
items = ["オプション1", "オプション2", "オプション3"],
default = 0
)]
select_field: usize,#[derive(aviutl2::filter::FilterConfigSelectItems)]
enum MySelectItem {
#[item(name = "Hoge")]
Hoge,
#[item(name = "Fuga")]
Fuga,
}
#[aviutl2_macros::filter_config_items]
struct MyConfig {
#[select(
name = "サンプルセレクトボックス",
items = MySelectItem,
default = MySelectItem::Hoge
)]
select_field: MySelectItem,
}-
name: セレクトボックスの名前。省略した場合、フィールド名が使用されます。 -
items: セレクトボックスの項目のリスト、またはaviutl2::filter::FilterConfigSelectItemsを実装したenumの名前。 -
default: セレクトボックスの初期値。itemsのインデックス、またはenumのVariantを指定します。 -
値の型は
defaultがitemsのインデックスの場合はusize、defaultがenumのVariantの場合はそのenumである必要があります。
§file
#[file(name = "サンプルファイル", filters = {
"テキストファイル" => ["txt"],
"すべてのファイル" => []
})]
file_field: std::path::PathBuf,-
name: ファイル選択の名前。省略した場合、フィールド名が使用されます。 -
filters: ファイルフィルタのリスト。キーがフィルタ名、値が拡張子のリストです。 -
値の型は
std::path::PathBufである必要があります。
§string
#[string(name = "サンプル文字列", default = "初期値")]
string_field: String,-
name: 文字列項目の名前。省略した場合、フィールド名が使用されます。 -
default: 文字列の初期値。省略した場合、空文字列になります。 -
値の型は
Stringである必要があります。
§text
#[text(name = "サンプルテキスト", default = "複数行テキスト")]
text_field: String,-
name: テキスト項目の名前。省略した場合、フィールド名が使用されます。 -
default: テキストの初期値。省略した場合、空文字列になります。 -
値の型は
Stringである必要があります。
§folder
#[folder(name = "サンプルフォルダ", default = "C:\\\\")]
folder_field: String,-
name: フォルダ選択の名前。省略した場合、フィールド名が使用されます。 -
default: フォルダの初期値。省略した場合、空文字列になります。 -
値の型は
Stringである必要があります。
§data
#[data(name = "サンプルデータ", default = MyData { value: 0 })]
data_field: FilterConfigDataHandle<MyData>,-
name: データの名前。省略した場合、フィールド名が使用されます。 -
default: データの初期値。省略した場合、Default::default()が使用されます。 -
値の型は
aviutl2::filter::FilterConfigDataHandle<T>である必要があります。
§group
#[group(name = "サンプルグループ", opened = true)]
group: group! {
// ...
},グループとしてフィールドをまとめます。
-
name: グループの名前。省略した場合、フィールド名が使用されます。 -
opened: グループが初期状態で開いているかどうか。省略した場合、trueになります。 -
型には
group! { ... }と記述する必要があります。group! { ... }の中には他のフィールドを同様に記述します。
-
このフィールドは削除されます。
§button
#[button(name = "サンプルボタン")]
button: on_button_pressed,aviutl2::filter::FilterConfigItem::Buttonを挿入します。
name: ボタンの名前。省略した場合、フィールド名が使用されます。- 型には関数名を指定します。また、関数名とフィールド名が同じ場合は
fn()と省略できます。 - 関数のシグネチャは以下のようになります。
fn on_button_pressed(handle: &mut aviutl2::generic::EditSection) { /* ... */ }- このフィールドは削除されます。
§Example
use aviutl2::filter::FilterConfigDataHandle;
#[derive(Debug, Default, Clone, Copy)]
struct MyData {
value: i32,
}
fn my_button_handler(handle: &mut aviutl2::generic::EditSection) {
// ボタンが押されたときの処理
}
#[aviutl2_macros::filter_config_items]
#[derive(Debug)]
struct FilterConfig {
#[group(name = "サンプルグループ", opened = true)]
sample_group: group! {
#[track(name = "サンプル整数", range = -100..=100, default = 0, step = 1.0)]
sample_integer: i32,
#[track(name = "サンプル小数", range = -1.0..=1.0, default = 0.0, step = 0.01)]
sample_float: f64,
},
#[check(name = "サンプルチェックボックス", default = true)]
sample_checkbox: bool,
#[select(
name = "サンプルセレクトボックス",
items = ["オプション1", "オプション2", "オプション3"],
default = 0
)]
sample_select: usize,
#[color(name = "サンプルカラー", default = 0x48b0d5)]
sample_color: aviutl2::filter::FilterConfigColorValue,
#[file(name = "サンプルファイル", filters = {
"テキストファイル" => ["txt"],
"すべてのファイル" => [],
})]
sample_file: std::path::PathBuf,
#[data(name = "サンプルデータ")]
sample_data: FilterConfigDataHandle<MyData>,
#[button(name = "サンプルボタン")]
on_button_pressed: my_button_handler,
}