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 5 use gdk; 6 use glib::object::Cast; 7 use glib::object::IsA; 8 use glib::object::ObjectType as ObjectType_; 9 use glib::signal::connect_raw; 10 use glib::signal::SignalHandlerId; 11 use glib::translate::*; 12 use glib::StaticType; 13 use glib::ToValue; 14 use glib_sys; 15 use gtk_sys; 16 use libc; 17 use std::boxed::Box as Box_; 18 use std::fmt; 19 use std::mem::transmute; 20 use EventController; 21 use Gesture; 22 use PropagationPhase; 23 use Widget; 24 25 glib_wrapper! { 26 pub struct GestureRotate(Object<gtk_sys::GtkGestureRotate, gtk_sys::GtkGestureRotateClass, GestureRotateClass>) @extends Gesture, EventController; 27 28 match fn { 29 get_type => || gtk_sys::gtk_gesture_rotate_get_type(), 30 } 31 } 32 33 impl GestureRotate { new<P: IsA<Widget>>(widget: &P) -> GestureRotate34 pub fn new<P: IsA<Widget>>(widget: &P) -> GestureRotate { 35 skip_assert_initialized!(); 36 unsafe { 37 Gesture::from_glib_full(gtk_sys::gtk_gesture_rotate_new( 38 widget.as_ref().to_glib_none().0, 39 )) 40 .unsafe_cast() 41 } 42 } 43 get_angle_delta(&self) -> f6444 pub fn get_angle_delta(&self) -> f64 { 45 unsafe { gtk_sys::gtk_gesture_rotate_get_angle_delta(self.to_glib_none().0) } 46 } 47 connect_angle_changed<F: Fn(&GestureRotate, f64, f64) + 'static>( &self, f: F, ) -> SignalHandlerId48 pub fn connect_angle_changed<F: Fn(&GestureRotate, f64, f64) + 'static>( 49 &self, 50 f: F, 51 ) -> SignalHandlerId { 52 unsafe extern "C" fn angle_changed_trampoline<F: Fn(&GestureRotate, f64, f64) + 'static>( 53 this: *mut gtk_sys::GtkGestureRotate, 54 angle: libc::c_double, 55 angle_delta: libc::c_double, 56 f: glib_sys::gpointer, 57 ) { 58 let f: &F = &*(f as *const F); 59 f(&from_glib_borrow(this), angle, angle_delta) 60 } 61 unsafe { 62 let f: Box_<F> = Box_::new(f); 63 connect_raw( 64 self.as_ptr() as *mut _, 65 b"angle-changed\0".as_ptr() as *const _, 66 Some(transmute(angle_changed_trampoline::<F> as usize)), 67 Box_::into_raw(f), 68 ) 69 } 70 } 71 } 72 73 #[derive(Clone, Default)] 74 pub struct GestureRotateBuilder { 75 n_points: Option<u32>, 76 window: Option<gdk::Window>, 77 propagation_phase: Option<PropagationPhase>, 78 widget: Option<Widget>, 79 } 80 81 impl GestureRotateBuilder { new() -> Self82 pub fn new() -> Self { 83 Self::default() 84 } 85 build(self) -> GestureRotate86 pub fn build(self) -> GestureRotate { 87 let mut properties: Vec<(&str, &dyn ToValue)> = vec![]; 88 if let Some(ref n_points) = self.n_points { 89 properties.push(("n-points", n_points)); 90 } 91 if let Some(ref window) = self.window { 92 properties.push(("window", window)); 93 } 94 if let Some(ref propagation_phase) = self.propagation_phase { 95 properties.push(("propagation-phase", propagation_phase)); 96 } 97 if let Some(ref widget) = self.widget { 98 properties.push(("widget", widget)); 99 } 100 glib::Object::new(GestureRotate::static_type(), &properties) 101 .expect("object new") 102 .downcast() 103 .expect("downcast") 104 } 105 n_points(mut self, n_points: u32) -> Self106 pub fn n_points(mut self, n_points: u32) -> Self { 107 self.n_points = Some(n_points); 108 self 109 } 110 window<P: IsA<gdk::Window>>(mut self, window: &P) -> Self111 pub fn window<P: IsA<gdk::Window>>(mut self, window: &P) -> Self { 112 self.window = Some(window.clone().upcast()); 113 self 114 } 115 propagation_phase(mut self, propagation_phase: PropagationPhase) -> Self116 pub fn propagation_phase(mut self, propagation_phase: PropagationPhase) -> Self { 117 self.propagation_phase = Some(propagation_phase); 118 self 119 } 120 widget<P: IsA<Widget>>(mut self, widget: &P) -> Self121 pub fn widget<P: IsA<Widget>>(mut self, widget: &P) -> Self { 122 self.widget = Some(widget.clone().upcast()); 123 self 124 } 125 } 126 127 impl fmt::Display for GestureRotate { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result128 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 129 write!(f, "GestureRotate") 130 } 131 } 132