1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
// This file was generated by gir (https://github.com/gtk-rs/gir) // from gir-files (https://github.com/gtk-rs/gir-files) // DO NOT EDIT use gio_sys; use glib; use glib::object::IsA; use glib::translate::*; use glib::GString; use std::fmt; use std::ptr; glib_wrapper! { /// `MenuAttributeIter` is an opaque structure type. You must access it /// using the functions below. /// /// # Implements /// /// [`MenuAttributeIterExt`](trait.MenuAttributeIterExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html) pub struct MenuAttributeIter(Object<gio_sys::GMenuAttributeIter, gio_sys::GMenuAttributeIterClass, MenuAttributeIterClass>); match fn { get_type => || gio_sys::g_menu_attribute_iter_get_type(), } } pub const NONE_MENU_ATTRIBUTE_ITER: Option<&MenuAttributeIter> = None; /// Trait containing all `MenuAttributeIter` methods. /// /// # Implementors /// /// [`MenuAttributeIter`](struct.MenuAttributeIter.html) pub trait MenuAttributeIterExt: 'static { /// Gets the name of the attribute at the current iterator position, as /// a string. /// /// The iterator is not advanced. /// /// # Returns /// /// the name of the attribute fn get_name(&self) -> Option<GString>; /// This function combines `MenuAttributeIterExt::next` with /// `MenuAttributeIterExt::get_name` and `MenuAttributeIterExt::get_value`. /// /// First the iterator is advanced to the next (possibly first) attribute. /// If that fails, then `false` is returned and there are no other /// effects. /// /// If successful, `name` and `value` are set to the name and value of the /// attribute that has just been advanced to. At this point, /// `MenuAttributeIterExt::get_name` and `MenuAttributeIterExt::get_value` will /// return the same values again. /// /// The value returned in `name` remains valid for as long as the iterator /// remains at the current position. The value returned in `value` must /// be unreffed using `glib::Variant::unref` when it is no longer in use. /// ## `out_name` /// the type of the attribute /// ## `value` /// the attribute value /// /// # Returns /// /// `true` on success, or `false` if there is no additional /// attribute fn get_next(&self) -> Option<(GString, glib::Variant)>; /// Gets the value of the attribute at the current iterator position. /// /// The iterator is not advanced. /// /// # Returns /// /// the value of the current attribute fn get_value(&self) -> Option<glib::Variant>; /// Attempts to advance the iterator to the next (possibly first) /// attribute. /// /// `true` is returned on success, or `false` if there are no more /// attributes. /// /// You must call this function when you first acquire the iterator /// to advance it to the first attribute (and determine if the first /// attribute exists at all). /// /// # Returns /// /// `true` on success, or `false` when there are no more attributes fn next(&self) -> bool; } impl<O: IsA<MenuAttributeIter>> MenuAttributeIterExt for O { fn get_name(&self) -> Option<GString> { unsafe { from_glib_none(gio_sys::g_menu_attribute_iter_get_name( self.as_ref().to_glib_none().0, )) } } fn get_next(&self) -> Option<(GString, glib::Variant)> { unsafe { let mut out_name = ptr::null(); let mut value = ptr::null_mut(); let ret = from_glib(gio_sys::g_menu_attribute_iter_get_next( self.as_ref().to_glib_none().0, &mut out_name, &mut value, )); if ret { Some((from_glib_none(out_name), from_glib_full(value))) } else { None } } } fn get_value(&self) -> Option<glib::Variant> { unsafe { from_glib_full(gio_sys::g_menu_attribute_iter_get_value( self.as_ref().to_glib_none().0, )) } } fn next(&self) -> bool { unsafe { from_glib(gio_sys::g_menu_attribute_iter_next( self.as_ref().to_glib_none().0, )) } } } impl fmt::Display for MenuAttributeIter { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "MenuAttributeIter") } }