Skip to main content

PluginHandler

Struct PluginHandler 

Source
pub struct PluginHandler<A: PluginApp> { /* private fields */ }
Expand description

§Example

PluginHandler::builder()
    .name("Test Plugin")
    .description("A test plugin for Everything")
    .author("Chaoses-Ib")
    .version("0.1.0")
    .link("https://github.com/Chaoses-Ib/IbEverythingLib")
    .options_pages(vec![
        OptionsPage::builder()
            .name("Test Plugin")
            .load(ui::winio::spawn::<options::MainModel>)
            .build(),
    ])
    .build()

§Design

  • Config may be accessed from multiple threads, and options pages need to modify it. To avoid race conditions, either config is cloned when modifying, and then PluginApp is reloaded with it, i.e. [arc_swap::ArcSwap]; or PluginApp is shutdown before modifying and then restarted.
  • User defined static to work around generic static limit.
    • Interior mutability to make it easy to use with static. But UnsafeCell to avoid cost.

Config lifetime:

Implementations§

Source§

impl<A: PluginApp> PluginHandler<A>

Source§

impl<A: PluginApp> PluginHandler<A>

Source

pub fn load_settings(&self, data: *mut c_void) -> Option<A::Config>

Source

pub fn save_settings(&self, data: *mut c_void) -> *mut c_void

Source§

impl<A: PluginApp> PluginHandler<A>

Source

pub fn add_options_pages(&self, data: *mut c_void) -> *mut c_void

Source

pub fn load_options_page(&self, data: *mut c_void) -> *mut c_void

Evertyhing only loads a options page when the user selects it

TODO: tooltip_hwnd

Source

pub fn load_options_page_winio<'a, T: OptionsPageComponent<'a>>( &self, data: *mut c_void, ) -> *mut c_void

Available on crate feature winio only.
Source

pub fn save_options_page(&self, data: *mut c_void) -> *mut c_void

Source

pub fn get_options_page_minmax(&self, _data: *mut c_void) -> *mut c_void

Source

pub fn size_options_page(&self, _data: *mut c_void) -> *mut c_void

Source

pub fn options_page_proc(&self, data: *mut c_void) -> *mut c_void

Source

pub fn kill_options_page(&self, data: *mut c_void) -> *mut c_void

Source§

impl<A: PluginApp> PluginHandler<A>

Source

pub fn builder() -> PluginHandlerBuilder<A>

Create an instance of PluginHandler using the builder syntax

Source§

impl<A: PluginApp> PluginHandler<A>

Source

pub fn init_start(&self)

Panics if already initialized.

Source

pub fn init_start_with_config(&self, config: A::Config)

Panics if already initialized.

Source

pub fn stop_kill(&self)

Panics if not initialized or already stopped.

Source

pub fn get_host(&self) -> Option<&PluginHost>

None before handling EVERYTHING_PLUGIN_PM_INIT

Source

pub fn host(&self) -> &PluginHost

Not available before handling EVERYTHING_PLUGIN_PM_INIT

Source

pub fn handle_init_i18n(_msg: u32, _data: *mut c_void)

Should be called before PluginHandler is created, as some fields may depend on the locale.

Already called in the plugin_main! macro. (Requiring manually calling is a footgun: IbEverythingExt #100)

Source

pub fn handle(&self, msg: u32, data: *mut c_void) -> *mut c_void

You shouldn’t and unlikely need to call this function from multiple threads.

Source

pub fn instance_name(&self) -> Option<&str>

Source

pub unsafe fn app(&self) -> &A

Not available during saving config and recreated afterwards. Use Self::with_app instead when possible.

Source

pub fn with_app<T>(&self, f: impl FnOnce(&A) -> T) -> T

Not available during saving config.

Trait Implementations§

Auto Trait Implementations§

§

impl<A> !Freeze for PluginHandler<A>

§

impl<A> !RefUnwindSafe for PluginHandler<A>

§

impl<A> Unpin for PluginHandler<A>
where A: Unpin,

§

impl<A> UnsafeUnpin for PluginHandler<A>
where A: UnsafeUnpin,

§

impl<A> !UnwindSafe for PluginHandler<A>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Src, Dest> IntoTuple<Dest> for Src
where Dest: FromTuple<Src>,

Source§

fn into_tuple(self) -> Dest

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more