pytauri_core/plugins/single_instance/
mod.rs1use pyo3::prelude::*;
2use tauri_plugin_single_instance::{self as plugin};
3
4use crate::{
5 ext_mod::{plugin::Plugin, PyAppHandleExt as _},
6 tauri_runtime::Runtime,
7 utils::PyResultExt as _,
8};
9
10#[pyfunction]
12#[pyo3(signature = (callback, /))]
13pub fn init(callback: Option<PyObject>) -> PyResult<Plugin> {
14 let plugin = Plugin::new(Box::new(move || {
15 Box::new(match callback {
16 Some(callback) => plugin::init::<Runtime, _>(move |app_handle, args, cwd| {
17 Python::with_gil(|py| {
18 let callback = callback.bind(py);
19 let result = callback.call1((app_handle.py_app_handle(), args, cwd));
20 result.unwrap_unraisable_py_result(py, Some(callback), || {
21 "Python exception occurred in `tauri_plugin_single_instance::init` callback"
22 });
23 })
24 }),
25 None => plugin::init::<Runtime, _>(|_, _, _| {}),
26 })
27 }));
28
29 Ok(plugin)
30}
31
32#[pymodule(submodule, gil_used = false)]
34pub mod single_instance {
35 #[pymodule_export]
36 pub use super::init;
37}