Skip to main content

aviutl2\generic\binding/
mod.rs

1/// 汎用プラグインの情報を表す構造体。
2#[derive(Debug, Clone)]
3pub struct GenericPluginTable {
4    /// プラグインの名前。
5    pub name: String,
6    /// プラグインの情報。
7    /// 「プラグイン情報」ダイアログで表示されます。
8    pub information: String,
9}
10
11/// 汎用プラグインのトレイト。
12/// このトレイトを実装し、[`crate::register_generic_plugin!`] マクロを使用してプラグインを登録します。
13pub trait GenericPlugin: Send + Sync + Sized {
14    /// プラグインを初期化する。
15    fn new(info: crate::common::AviUtl2Info) -> crate::common::AnyResult<Self>;
16
17    /// プラグインの情報を返す。
18    fn plugin_info(&self) -> crate::generic::GenericPluginTable;
19
20    /// プラグインをホストに登録する。
21    fn register(&mut self, registry: &mut crate::generic::HostAppHandle);
22
23    /// プロジェクトファイルのロードを処理する。
24    ///
25    /// プロジェクトの初期化時にも呼ばれます。
26    fn on_project_load(&mut self, project: &mut crate::generic::ProjectFile) {
27        let _ = project;
28    }
29
30    /// プロジェクトファイルをセーブする直前に呼ばれる。
31    fn on_project_save(&mut self, project: &mut crate::generic::ProjectFile) {
32        let _ = project;
33    }
34
35    /// 「キャッシュを破棄」が呼ばれたときに呼ばれる。
36    fn on_clear_cache(&mut self, edit_section: &crate::generic::EditSection) {
37        let _ = edit_section;
38    }
39
40    /// シーンを変更した直後に呼ばれる。
41    fn on_change_scene(&mut self, edit_section: &crate::generic::EditSection) {
42        let _ = edit_section;
43    }
44
45    /// シングルトンインスタンスを参照するためのヘルパーメソッド。
46    ///
47    /// # Panics
48    ///
49    /// プラグインが初期化されていない場合や、二重に呼び出された場合にパニックします。
50    fn with_instance<R>(f: impl FnOnce(&Self) -> R) -> R
51    where
52        Self: crate::generic::__bridge::GenericSingleton,
53    {
54        <Self as crate::generic::__bridge::GenericSingleton>::with_instance(f)
55    }
56
57    /// シングルトンインスタンスを可変参照するためのヘルパーメソッド。
58    ///
59    /// # Panics
60    ///
61    /// プラグインが初期化されていない場合や、二重に呼び出された場合にパニックします。
62    fn with_instance_mut<R>(f: impl FnOnce(&mut Self) -> R) -> R
63    where
64        Self: crate::generic::__bridge::GenericSingleton,
65    {
66        <Self as crate::generic::__bridge::GenericSingleton>::with_instance_mut(f)
67    }
68}
69
70mod project;
71pub use project::*;
72mod edit_section;
73pub use edit_section::*;
74mod host_app;
75pub use host_app::*;
76mod edit_handle;
77pub use edit_handle::*;