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 crate::EventController; 6 use crate::PadActionType; 7 use crate::PropagationPhase; 8 use crate::Widget; 9 use crate::Window; 10 use glib::object::Cast; 11 use glib::object::IsA; 12 use glib::object::ObjectType as ObjectType_; 13 use glib::translate::*; 14 use glib::StaticType; 15 use glib::ToValue; 16 use std::fmt; 17 18 glib::wrapper! { 19 #[doc(alias = "GtkPadController")] 20 pub struct PadController(Object<ffi::GtkPadController, ffi::GtkPadControllerClass>) @extends EventController; 21 22 match fn { 23 type_ => || ffi::gtk_pad_controller_get_type(), 24 } 25 } 26 27 impl PadController { 28 #[doc(alias = "gtk_pad_controller_new")] new<P: IsA<Window>, Q: IsA<gio::ActionGroup>>( window: &P, group: &Q, pad: Option<&gdk::Device>, ) -> PadController29 pub fn new<P: IsA<Window>, Q: IsA<gio::ActionGroup>>( 30 window: &P, 31 group: &Q, 32 pad: Option<&gdk::Device>, 33 ) -> PadController { 34 skip_assert_initialized!(); 35 unsafe { 36 from_glib_full(ffi::gtk_pad_controller_new( 37 window.as_ref().to_glib_none().0, 38 group.as_ref().to_glib_none().0, 39 pad.to_glib_none().0, 40 )) 41 } 42 } 43 44 // rustdoc-stripper-ignore-next 45 /// Creates a new builder-pattern struct instance to construct [`PadController`] objects. 46 /// 47 /// This method returns an instance of [`PadControllerBuilder`] which can be used to create [`PadController`] objects. builder() -> PadControllerBuilder48 pub fn builder() -> PadControllerBuilder { 49 PadControllerBuilder::default() 50 } 51 52 #[doc(alias = "gtk_pad_controller_set_action")] set_action( &self, type_: PadActionType, index: i32, mode: i32, label: &str, action_name: &str, )53 pub fn set_action( 54 &self, 55 type_: PadActionType, 56 index: i32, 57 mode: i32, 58 label: &str, 59 action_name: &str, 60 ) { 61 unsafe { 62 ffi::gtk_pad_controller_set_action( 63 self.to_glib_none().0, 64 type_.into_glib(), 65 index, 66 mode, 67 label.to_glib_none().0, 68 action_name.to_glib_none().0, 69 ); 70 } 71 } 72 73 #[doc(alias = "action-group")] action_group(&self) -> Option<gio::ActionGroup>74 pub fn action_group(&self) -> Option<gio::ActionGroup> { 75 unsafe { 76 let mut value = glib::Value::from_type(<gio::ActionGroup as StaticType>::static_type()); 77 glib::gobject_ffi::g_object_get_property( 78 self.as_ptr() as *mut glib::gobject_ffi::GObject, 79 b"action-group\0".as_ptr() as *const _, 80 value.to_glib_none_mut().0, 81 ); 82 value 83 .get() 84 .expect("Return Value for property `action-group` getter") 85 } 86 } 87 pad(&self) -> Option<gdk::Device>88 pub fn pad(&self) -> Option<gdk::Device> { 89 unsafe { 90 let mut value = glib::Value::from_type(<gdk::Device as StaticType>::static_type()); 91 glib::gobject_ffi::g_object_get_property( 92 self.as_ptr() as *mut glib::gobject_ffi::GObject, 93 b"pad\0".as_ptr() as *const _, 94 value.to_glib_none_mut().0, 95 ); 96 value.get().expect("Return Value for property `pad` getter") 97 } 98 } 99 } 100 101 #[derive(Clone, Default)] 102 // rustdoc-stripper-ignore-next 103 /// A [builder-pattern] type to construct [`PadController`] objects. 104 /// 105 /// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html 106 pub struct PadControllerBuilder { 107 action_group: Option<gio::ActionGroup>, 108 pad: Option<gdk::Device>, 109 propagation_phase: Option<PropagationPhase>, 110 widget: Option<Widget>, 111 } 112 113 impl PadControllerBuilder { 114 // rustdoc-stripper-ignore-next 115 /// Create a new [`PadControllerBuilder`]. new() -> Self116 pub fn new() -> Self { 117 Self::default() 118 } 119 120 // rustdoc-stripper-ignore-next 121 /// Build the [`PadController`]. build(self) -> PadController122 pub fn build(self) -> PadController { 123 let mut properties: Vec<(&str, &dyn ToValue)> = vec![]; 124 if let Some(ref action_group) = self.action_group { 125 properties.push(("action-group", action_group)); 126 } 127 if let Some(ref pad) = self.pad { 128 properties.push(("pad", pad)); 129 } 130 if let Some(ref propagation_phase) = self.propagation_phase { 131 properties.push(("propagation-phase", propagation_phase)); 132 } 133 if let Some(ref widget) = self.widget { 134 properties.push(("widget", widget)); 135 } 136 glib::Object::new::<PadController>(&properties) 137 .expect("Failed to create an instance of PadController") 138 } 139 action_group<P: IsA<gio::ActionGroup>>(mut self, action_group: &P) -> Self140 pub fn action_group<P: IsA<gio::ActionGroup>>(mut self, action_group: &P) -> Self { 141 self.action_group = Some(action_group.clone().upcast()); 142 self 143 } 144 pad(mut self, pad: &gdk::Device) -> Self145 pub fn pad(mut self, pad: &gdk::Device) -> Self { 146 self.pad = Some(pad.clone()); 147 self 148 } 149 propagation_phase(mut self, propagation_phase: PropagationPhase) -> Self150 pub fn propagation_phase(mut self, propagation_phase: PropagationPhase) -> Self { 151 self.propagation_phase = Some(propagation_phase); 152 self 153 } 154 widget<P: IsA<Widget>>(mut self, widget: &P) -> Self155 pub fn widget<P: IsA<Widget>>(mut self, widget: &P) -> Self { 156 self.widget = Some(widget.clone().upcast()); 157 self 158 } 159 } 160 161 impl fmt::Display for PadController { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result162 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 163 f.write_str("PadController") 164 } 165 } 166