gdk/auto/
display_manager.rs1use gdk_sys;
6use glib::object::ObjectType as ObjectType_;
7use glib::signal::connect_raw;
8use glib::signal::SignalHandlerId;
9use glib::translate::*;
10use glib_sys;
11use std::boxed::Box as Box_;
12use std::fmt;
13use std::mem::transmute;
14use Display;
15
16glib_wrapper! {
17 pub struct DisplayManager(Object<gdk_sys::GdkDisplayManager, DisplayManagerClass>);
18
19 match fn {
20 get_type => || gdk_sys::gdk_display_manager_get_type(),
21 }
22}
23
24impl DisplayManager {
25 pub fn get_default_display(&self) -> Option<Display> {
26 unsafe {
27 from_glib_none(gdk_sys::gdk_display_manager_get_default_display(
28 self.to_glib_none().0,
29 ))
30 }
31 }
32
33 pub fn list_displays(&self) -> Vec<Display> {
34 unsafe {
35 FromGlibPtrContainer::from_glib_container(gdk_sys::gdk_display_manager_list_displays(
36 self.to_glib_none().0,
37 ))
38 }
39 }
40
41 pub fn open_display(&self, name: &str) -> Option<Display> {
42 unsafe {
43 from_glib_none(gdk_sys::gdk_display_manager_open_display(
44 self.to_glib_none().0,
45 name.to_glib_none().0,
46 ))
47 }
48 }
49
50 pub fn set_default_display(&self, display: &Display) {
51 unsafe {
52 gdk_sys::gdk_display_manager_set_default_display(
53 self.to_glib_none().0,
54 display.to_glib_none().0,
55 );
56 }
57 }
58
59 pub fn get() -> DisplayManager {
60 assert_initialized_main_thread!();
61 unsafe { from_glib_none(gdk_sys::gdk_display_manager_get()) }
62 }
63
64 pub fn connect_display_opened<F: Fn(&DisplayManager, &Display) + 'static>(
65 &self,
66 f: F,
67 ) -> SignalHandlerId {
68 unsafe extern "C" fn display_opened_trampoline<
69 F: Fn(&DisplayManager, &Display) + 'static,
70 >(
71 this: *mut gdk_sys::GdkDisplayManager,
72 display: *mut gdk_sys::GdkDisplay,
73 f: glib_sys::gpointer,
74 ) {
75 let f: &F = &*(f as *const F);
76 f(&from_glib_borrow(this), &from_glib_borrow(display))
77 }
78 unsafe {
79 let f: Box_<F> = Box_::new(f);
80 connect_raw(
81 self.as_ptr() as *mut _,
82 b"display-opened\0".as_ptr() as *const _,
83 Some(transmute(display_opened_trampoline::<F> as usize)),
84 Box_::into_raw(f),
85 )
86 }
87 }
88
89 pub fn connect_property_default_display_notify<F: Fn(&DisplayManager) + 'static>(
90 &self,
91 f: F,
92 ) -> SignalHandlerId {
93 unsafe extern "C" fn notify_default_display_trampoline<F: Fn(&DisplayManager) + 'static>(
94 this: *mut gdk_sys::GdkDisplayManager,
95 _param_spec: glib_sys::gpointer,
96 f: glib_sys::gpointer,
97 ) {
98 let f: &F = &*(f as *const F);
99 f(&from_glib_borrow(this))
100 }
101 unsafe {
102 let f: Box_<F> = Box_::new(f);
103 connect_raw(
104 self.as_ptr() as *mut _,
105 b"notify::default-display\0".as_ptr() as *const _,
106 Some(transmute(notify_default_display_trampoline::<F> as usize)),
107 Box_::into_raw(f),
108 )
109 }
110 }
111}
112
113impl fmt::Display for DisplayManager {
114 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
115 write!(f, "DisplayManager")
116 }
117}