use glib::{prelude::*,translate::*};
use std::{fmt};
glib::wrapper! {
#[doc(alias = "DbusmenuGtkClient")]
pub struct Client(Object<ffi::DbusmenuGtkClient, ffi::DbusmenuGtkClientClass>) @extends dbusmenu_glib::Client;
match fn {
type_ => || ffi::dbusmenu_gtkclient_get_type(),
}
}
impl Client {
pub const NONE: Option<&'static Client> = None;
#[doc(alias = "dbusmenu_gtkclient_new")]
pub fn new(dbus_name: &str, dbus_object: &str) -> Client {
assert_initialized_main_thread!();
unsafe {
from_glib_full(ffi::dbusmenu_gtkclient_new(dbus_name.to_glib_none().0, dbus_object.to_glib_none().0))
}
}
}
pub trait ClientExt: 'static {
#[doc(alias = "dbusmenu_gtkclient_get_accel_group")]
#[doc(alias = "get_accel_group")]
fn accel_group(&self) -> Option<gtk::AccelGroup>;
#[doc(alias = "dbusmenu_gtkclient_menuitem_get")]
fn menuitem_get(&self, item: &impl IsA<dbusmenu_glib::Menuitem>) -> Option<gtk::MenuItem>;
#[doc(alias = "dbusmenu_gtkclient_menuitem_get_submenu")]
fn menuitem_get_submenu(&self, item: &impl IsA<dbusmenu_glib::Menuitem>) -> Option<gtk::Menu>;
#[doc(alias = "dbusmenu_gtkclient_newitem_base")]
fn newitem_base(&self, item: &impl IsA<dbusmenu_glib::Menuitem>, gmi: &impl IsA<gtk::MenuItem>, parent: Option<&impl IsA<dbusmenu_glib::Menuitem>>);
#[doc(alias = "dbusmenu_gtkclient_set_accel_group")]
fn set_accel_group(&self, agroup: &impl IsA<gtk::AccelGroup>);
}
impl<O: IsA<Client>> ClientExt for O {
fn accel_group(&self) -> Option<gtk::AccelGroup> {
unsafe {
from_glib_none(ffi::dbusmenu_gtkclient_get_accel_group(self.as_ref().to_glib_none().0))
}
}
fn menuitem_get(&self, item: &impl IsA<dbusmenu_glib::Menuitem>) -> Option<gtk::MenuItem> {
unsafe {
from_glib_none(ffi::dbusmenu_gtkclient_menuitem_get(self.as_ref().to_glib_none().0, item.as_ref().to_glib_none().0))
}
}
fn menuitem_get_submenu(&self, item: &impl IsA<dbusmenu_glib::Menuitem>) -> Option<gtk::Menu> {
unsafe {
from_glib_none(ffi::dbusmenu_gtkclient_menuitem_get_submenu(self.as_ref().to_glib_none().0, item.as_ref().to_glib_none().0))
}
}
fn newitem_base(&self, item: &impl IsA<dbusmenu_glib::Menuitem>, gmi: &impl IsA<gtk::MenuItem>, parent: Option<&impl IsA<dbusmenu_glib::Menuitem>>) {
unsafe {
ffi::dbusmenu_gtkclient_newitem_base(self.as_ref().to_glib_none().0, item.as_ref().to_glib_none().0, gmi.as_ref().to_glib_none().0, parent.map(|p| p.as_ref()).to_glib_none().0);
}
}
fn set_accel_group(&self, agroup: &impl IsA<gtk::AccelGroup>) {
unsafe {
ffi::dbusmenu_gtkclient_set_accel_group(self.as_ref().to_glib_none().0, agroup.as_ref().to_glib_none().0);
}
}
}
impl fmt::Display for Client {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("Client")
}
}