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
// 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::object::IsA; use glib::translate::*; use glib::GString; use std::fmt; use std::ptr; use MenuModel; glib_wrapper! { /// `MenuLinkIter` is an opaque structure type. You must access it using /// the functions below. /// /// # Implements /// /// [`MenuLinkIterExt`](trait.MenuLinkIterExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html) pub struct MenuLinkIter(Object<gio_sys::GMenuLinkIter, gio_sys::GMenuLinkIterClass, MenuLinkIterClass>); match fn { get_type => || gio_sys::g_menu_link_iter_get_type(), } } pub const NONE_MENU_LINK_ITER: Option<&MenuLinkIter> = None; /// Trait containing all `MenuLinkIter` methods. /// /// # Implementors /// /// [`MenuLinkIter`](struct.MenuLinkIter.html) pub trait MenuLinkIterExt: 'static { /// Gets the name of the link at the current iterator position. /// /// The iterator is not advanced. /// /// # Returns /// /// the type of the link fn get_name(&self) -> Option<GString>; /// This function combines `MenuLinkIterExt::next` with /// `MenuLinkIterExt::get_name` and `MenuLinkIterExt::get_value`. /// /// First the iterator is advanced to the next (possibly first) link. /// If that fails, then `false` is returned and there are no other effects. /// /// If successful, `out_link` and `value` are set to the name and `MenuModel` /// of the link that has just been advanced to. At this point, /// `MenuLinkIterExt::get_name` and `MenuLinkIterExt::get_value` will return the /// same values again. /// /// The value returned in `out_link` remains valid for as long as the iterator /// remains at the current position. The value returned in `value` must /// be unreffed using `gobject::ObjectExt::unref` when it is no longer in use. /// ## `out_link` /// the name of the link /// ## `value` /// the linked `MenuModel` /// /// # Returns /// /// `true` on success, or `false` if there is no additional link fn get_next(&self) -> Option<(GString, MenuModel)>; /// Gets the linked `MenuModel` at the current iterator position. /// /// The iterator is not advanced. /// /// # Returns /// /// the `MenuModel` that is linked to fn get_value(&self) -> Option<MenuModel>; /// Attempts to advance the iterator to the next (possibly first) /// link. /// /// `true` is returned on success, or `false` if there are no more links. /// /// You must call this function when you first acquire the iterator to /// advance it to the first link (and determine if the first link exists /// at all). /// /// # Returns /// /// `true` on success, or `false` when there are no more links fn next(&self) -> bool; } impl<O: IsA<MenuLinkIter>> MenuLinkIterExt for O { fn get_name(&self) -> Option<GString> { unsafe { from_glib_none(gio_sys::g_menu_link_iter_get_name( self.as_ref().to_glib_none().0, )) } } fn get_next(&self) -> Option<(GString, MenuModel)> { unsafe { let mut out_link = ptr::null(); let mut value = ptr::null_mut(); let ret = from_glib(gio_sys::g_menu_link_iter_get_next( self.as_ref().to_glib_none().0, &mut out_link, &mut value, )); if ret { Some((from_glib_none(out_link), from_glib_full(value))) } else { None } } } fn get_value(&self) -> Option<MenuModel> { unsafe { from_glib_full(gio_sys::g_menu_link_iter_get_value( self.as_ref().to_glib_none().0, )) } } fn next(&self) -> bool { unsafe { from_glib(gio_sys::g_menu_link_iter_next( self.as_ref().to_glib_none().0, )) } } } impl fmt::Display for MenuLinkIter { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "MenuLinkIter") } }