use crate::{Core,Iterator,ObjectFeatures,ObjectInterest};
use glib::{prelude::*,signal::{connect_raw, SignalHandlerId},translate::*};
use std::{boxed::Box as Box_};
glib::wrapper! {
#[doc(alias = "WpObjectManager")]
pub struct ObjectManager(Object<ffi::WpObjectManager, ffi::WpObjectManagerClass>);
match fn {
type_ => || ffi::wp_object_manager_get_type(),
}
}
impl ObjectManager {
#[doc(alias = "wp_object_manager_new")]
pub fn new() -> ObjectManager {
unsafe {
from_glib_full(ffi::wp_object_manager_new())
}
}
#[doc(alias = "wp_object_manager_add_interest_full")]
#[allow(dead_code)] pub(crate) fn add_interest_full(&self, interest: ObjectInterest) {
unsafe {
ffi::wp_object_manager_add_interest_full(self.to_glib_none().0, interest.into_glib_ptr());
}
}
#[doc(alias = "wp_object_manager_get_n_objects")]
#[doc(alias = "get_n_objects")]
pub fn n_objects(&self) -> u32 {
unsafe {
ffi::wp_object_manager_get_n_objects(self.to_glib_none().0)
}
}
#[doc(alias = "wp_object_manager_is_installed")]
pub fn is_installed(&self) -> bool {
unsafe {
from_glib(ffi::wp_object_manager_is_installed(self.to_glib_none().0))
}
}
#[doc(alias = "wp_object_manager_lookup_full")]
#[doc(alias = "lookup_full")]
pub fn lookup_object(&self, interest: ObjectInterest) -> Option<glib::Object> {
unsafe {
from_glib_full(ffi::wp_object_manager_lookup_full(self.to_glib_none().0, interest.into_glib_ptr()))
}
}
#[doc(alias = "wp_object_manager_new_filtered_iterator_full")]
#[doc(alias = "new_filtered_iterator_full")]
#[allow(dead_code)] pub(crate) fn filtered_iterator(&self, interest: ObjectInterest) -> Option<Iterator> {
unsafe {
from_glib_full(ffi::wp_object_manager_new_filtered_iterator_full(self.to_glib_none().0, interest.into_glib_ptr()))
}
}
#[doc(alias = "wp_object_manager_new_iterator")]
#[doc(alias = "new_iterator")]
#[allow(dead_code)] pub(crate) fn objects_iterator(&self) -> Option<Iterator> {
unsafe {
from_glib_full(ffi::wp_object_manager_new_iterator(self.to_glib_none().0))
}
}
#[doc(alias = "wp_object_manager_request_object_features")]
pub fn request_object_features(&self, object_type: glib::types::Type, wanted_features: ObjectFeatures) {
unsafe {
ffi::wp_object_manager_request_object_features(self.to_glib_none().0, object_type.into_glib(), wanted_features.into_glib());
}
}
pub fn core(&self) -> Option<Core> {
ObjectExt::property(self, "core")
}
#[doc(alias = "installed")]
pub fn connect_installed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn installed_trampoline<F: Fn(&ObjectManager) + 'static>(this: *mut ffi::WpObjectManager, f: glib::ffi::gpointer) {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(self.as_ptr() as *mut _, b"installed\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(installed_trampoline::<F> as *const ())), Box_::into_raw(f))
}
}
#[doc(alias = "object-added")]
pub fn connect_object_added<F: Fn(&Self, &glib::Object) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn object_added_trampoline<F: Fn(&ObjectManager, &glib::Object) + 'static>(this: *mut ffi::WpObjectManager, object: *mut glib::gobject_ffi::GObject, f: glib::ffi::gpointer) {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this), &from_glib_borrow(object))
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(self.as_ptr() as *mut _, b"object-added\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(object_added_trampoline::<F> as *const ())), Box_::into_raw(f))
}
}
#[doc(alias = "object-removed")]
pub fn connect_object_removed<F: Fn(&Self, &glib::Object) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn object_removed_trampoline<F: Fn(&ObjectManager, &glib::Object) + 'static>(this: *mut ffi::WpObjectManager, object: *mut glib::gobject_ffi::GObject, f: glib::ffi::gpointer) {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this), &from_glib_borrow(object))
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(self.as_ptr() as *mut _, b"object-removed\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(object_removed_trampoline::<F> as *const ())), Box_::into_raw(f))
}
}
#[doc(alias = "objects-changed")]
pub fn connect_objects_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn objects_changed_trampoline<F: Fn(&ObjectManager) + 'static>(this: *mut ffi::WpObjectManager, f: glib::ffi::gpointer) {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(self.as_ptr() as *mut _, b"objects-changed\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(objects_changed_trampoline::<F> as *const ())), Box_::into_raw(f))
}
}
#[doc(alias = "core")]
pub fn connect_core_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_core_trampoline<F: Fn(&ObjectManager) + 'static>(this: *mut ffi::WpObjectManager, _param_spec: glib::ffi::gpointer, f: glib::ffi::gpointer) {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(self.as_ptr() as *mut _, b"notify::core\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(notify_core_trampoline::<F> as *const ())), Box_::into_raw(f))
}
}
}
impl Default for ObjectManager {
fn default() -> Self {
Self::new()
}
}