1use atk_sys;
6use glib::object::Cast;
7use glib::object::IsA;
8use glib::translate::*;
9use glib::GString;
10use std::fmt;
11use Component;
12use Object;
13
14glib_wrapper! {
15 pub struct Plug(Object<atk_sys::AtkPlug, atk_sys::AtkPlugClass, PlugClass>) @extends Object, @implements Component;
16
17 match fn {
18 get_type => || atk_sys::atk_plug_get_type(),
19 }
20}
21
22impl Plug {
23 pub fn new() -> Plug {
24 assert_initialized_main_thread!();
25 unsafe { Object::from_glib_full(atk_sys::atk_plug_new()).unsafe_cast() }
26 }
27}
28
29impl Default for Plug {
30 fn default() -> Self {
31 Self::new()
32 }
33}
34
35pub const NONE_PLUG: Option<&Plug> = None;
36
37pub trait AtkPlugExt: 'static {
38 fn get_id(&self) -> Option<GString>;
39}
40
41impl<O: IsA<Plug>> AtkPlugExt for O {
42 fn get_id(&self) -> Option<GString> {
43 unsafe { from_glib_full(atk_sys::atk_plug_get_id(self.as_ref().to_glib_none().0)) }
44 }
45}
46
47impl fmt::Display for Plug {
48 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
49 write!(f, "Plug")
50 }
51}