atk/auto/
value.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5use atk_sys;
6use glib;
7use glib::object::Cast;
8use glib::object::IsA;
9use glib::signal::connect_raw;
10use glib::signal::SignalHandlerId;
11use glib::translate::*;
12use glib::GString;
13use glib_sys;
14use libc;
15use std::boxed::Box as Box_;
16use std::fmt;
17use std::mem;
18use std::mem::transmute;
19use std::ptr;
20use Range;
21
22glib_wrapper! {
23    pub struct Value(Interface<atk_sys::AtkValue>);
24
25    match fn {
26        get_type => || atk_sys::atk_value_get_type(),
27    }
28}
29
30pub const NONE_VALUE: Option<&Value> = None;
31
32pub trait ValueExt: 'static {
33    fn get_current_value(&self) -> glib::Value;
34
35    fn get_increment(&self) -> f64;
36
37    fn get_maximum_value(&self) -> glib::Value;
38
39    fn get_minimum_increment(&self) -> glib::Value;
40
41    fn get_minimum_value(&self) -> glib::Value;
42
43    fn get_range(&self) -> Option<Range>;
44
45    fn get_sub_ranges(&self) -> Vec<Range>;
46
47    fn get_value_and_text(&self) -> (f64, GString);
48
49    fn set_current_value(&self, value: &glib::Value) -> bool;
50
51    fn set_value(&self, new_value: f64);
52
53    fn connect_value_changed<F: Fn(&Self, f64, &str) + 'static>(&self, f: F) -> SignalHandlerId;
54}
55
56impl<O: IsA<Value>> ValueExt for O {
57    fn get_current_value(&self) -> glib::Value {
58        unsafe {
59            let mut value = glib::Value::uninitialized();
60            atk_sys::atk_value_get_current_value(
61                self.as_ref().to_glib_none().0,
62                value.to_glib_none_mut().0,
63            );
64            value
65        }
66    }
67
68    fn get_increment(&self) -> f64 {
69        unsafe { atk_sys::atk_value_get_increment(self.as_ref().to_glib_none().0) }
70    }
71
72    fn get_maximum_value(&self) -> glib::Value {
73        unsafe {
74            let mut value = glib::Value::uninitialized();
75            atk_sys::atk_value_get_maximum_value(
76                self.as_ref().to_glib_none().0,
77                value.to_glib_none_mut().0,
78            );
79            value
80        }
81    }
82
83    fn get_minimum_increment(&self) -> glib::Value {
84        unsafe {
85            let mut value = glib::Value::uninitialized();
86            atk_sys::atk_value_get_minimum_increment(
87                self.as_ref().to_glib_none().0,
88                value.to_glib_none_mut().0,
89            );
90            value
91        }
92    }
93
94    fn get_minimum_value(&self) -> glib::Value {
95        unsafe {
96            let mut value = glib::Value::uninitialized();
97            atk_sys::atk_value_get_minimum_value(
98                self.as_ref().to_glib_none().0,
99                value.to_glib_none_mut().0,
100            );
101            value
102        }
103    }
104
105    fn get_range(&self) -> Option<Range> {
106        unsafe { from_glib_full(atk_sys::atk_value_get_range(self.as_ref().to_glib_none().0)) }
107    }
108
109    fn get_sub_ranges(&self) -> Vec<Range> {
110        unsafe {
111            FromGlibPtrContainer::from_glib_full(atk_sys::atk_value_get_sub_ranges(
112                self.as_ref().to_glib_none().0,
113            ))
114        }
115    }
116
117    fn get_value_and_text(&self) -> (f64, GString) {
118        unsafe {
119            let mut value = mem::uninitialized();
120            let mut text = ptr::null_mut();
121            atk_sys::atk_value_get_value_and_text(
122                self.as_ref().to_glib_none().0,
123                &mut value,
124                &mut text,
125            );
126            (value, from_glib_full(text))
127        }
128    }
129
130    fn set_current_value(&self, value: &glib::Value) -> bool {
131        unsafe {
132            from_glib(atk_sys::atk_value_set_current_value(
133                self.as_ref().to_glib_none().0,
134                value.to_glib_none().0,
135            ))
136        }
137    }
138
139    fn set_value(&self, new_value: f64) {
140        unsafe {
141            atk_sys::atk_value_set_value(self.as_ref().to_glib_none().0, new_value);
142        }
143    }
144
145    fn connect_value_changed<F: Fn(&Self, f64, &str) + 'static>(&self, f: F) -> SignalHandlerId {
146        unsafe extern "C" fn value_changed_trampoline<P, F: Fn(&P, f64, &str) + 'static>(
147            this: *mut atk_sys::AtkValue,
148            value: libc::c_double,
149            text: *mut libc::c_char,
150            f: glib_sys::gpointer,
151        ) where
152            P: IsA<Value>,
153        {
154            let f: &F = &*(f as *const F);
155            f(
156                &Value::from_glib_borrow(this).unsafe_cast(),
157                value,
158                &GString::from_glib_borrow(text),
159            )
160        }
161        unsafe {
162            let f: Box_<F> = Box_::new(f);
163            connect_raw(
164                self.as_ptr() as *mut _,
165                b"value-changed\0".as_ptr() as *const _,
166                Some(transmute(value_changed_trampoline::<Self, F> as usize)),
167                Box_::into_raw(f),
168            )
169        }
170    }
171}
172
173impl fmt::Display for Value {
174    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
175        write!(f, "Value")
176    }
177}