1 // Take a look at the license at the top of the repository in the LICENSE file. 2 3 use crate::Notebook; 4 use crate::Widget; 5 use glib::translate::*; 6 use glib::IsA; 7 use libc::c_int; 8 9 pub trait NotebookExtManual: 'static { 10 #[doc(alias = "gtk_notebook_append_page")] append_page<T: IsA<Widget>, U: IsA<Widget>>(&self, child: &T, tab_label: Option<&U>) -> u3211 fn append_page<T: IsA<Widget>, U: IsA<Widget>>(&self, child: &T, tab_label: Option<&U>) -> u32; 12 13 #[doc(alias = "gtk_notebook_append_page_menu")] append_page_menu<T, U, V>( &self, child: &T, tab_label: Option<&U>, menu_label: Option<&V>, ) -> u32 where T: IsA<Widget>, U: IsA<Widget>, V: IsA<Widget>14 fn append_page_menu<T, U, V>( 15 &self, 16 child: &T, 17 tab_label: Option<&U>, 18 menu_label: Option<&V>, 19 ) -> u32 20 where 21 T: IsA<Widget>, 22 U: IsA<Widget>, 23 V: IsA<Widget>; 24 25 #[doc(alias = "gtk_notebook_get_current_page")] 26 #[doc(alias = "get_current_page")] current_page(&self) -> Option<u32>27 fn current_page(&self) -> Option<u32>; 28 29 #[doc(alias = "gtk_notebook_get_n_pages")] 30 #[doc(alias = "get_n_pages")] n_pages(&self) -> u3231 fn n_pages(&self) -> u32; 32 33 #[doc(alias = "gtk_notebook_get_nth_page")] 34 #[doc(alias = "get_nth_page")] nth_page(&self, page_num: Option<u32>) -> Option<Widget>35 fn nth_page(&self, page_num: Option<u32>) -> Option<Widget>; 36 37 #[doc(alias = "gtk_notebook_insert_page")] insert_page<T, U>(&self, child: &T, tab_label: Option<&U>, position: Option<u32>) -> u32 where T: IsA<Widget>, U: IsA<Widget>38 fn insert_page<T, U>(&self, child: &T, tab_label: Option<&U>, position: Option<u32>) -> u32 39 where 40 T: IsA<Widget>, 41 U: IsA<Widget>; 42 43 #[doc(alias = "gtk_notebook_insert_page_menu")] insert_page_menu<T, U, V>( &self, child: &T, tab_label: Option<&U>, menu_label: Option<&V>, position: Option<u32>, ) -> u32 where T: IsA<Widget>, U: IsA<Widget>, V: IsA<Widget>44 fn insert_page_menu<T, U, V>( 45 &self, 46 child: &T, 47 tab_label: Option<&U>, 48 menu_label: Option<&V>, 49 position: Option<u32>, 50 ) -> u32 51 where 52 T: IsA<Widget>, 53 U: IsA<Widget>, 54 V: IsA<Widget>; 55 56 #[doc(alias = "gtk_notebook_page_num")] page_num<T: IsA<Widget>>(&self, child: &T) -> Option<u32>57 fn page_num<T: IsA<Widget>>(&self, child: &T) -> Option<u32>; 58 59 #[doc(alias = "gtk_notebook_prepend_page")] prepend_page<T, U>(&self, child: &T, tab_label: Option<&U>) -> u32 where T: IsA<Widget>, U: IsA<Widget>60 fn prepend_page<T, U>(&self, child: &T, tab_label: Option<&U>) -> u32 61 where 62 T: IsA<Widget>, 63 U: IsA<Widget>; 64 65 #[doc(alias = "gtk_notebook_prepend_page_menu")] prepend_page_menu<T, U, V>( &self, child: &T, tab_label: Option<&U>, menu_label: Option<&V>, ) -> u32 where T: IsA<Widget>, U: IsA<Widget>, V: IsA<Widget>66 fn prepend_page_menu<T, U, V>( 67 &self, 68 child: &T, 69 tab_label: Option<&U>, 70 menu_label: Option<&V>, 71 ) -> u32 72 where 73 T: IsA<Widget>, 74 U: IsA<Widget>, 75 V: IsA<Widget>; 76 77 #[doc(alias = "gtk_notebook_remove_page")] remove_page(&self, page_num: Option<u32>)78 fn remove_page(&self, page_num: Option<u32>); 79 80 #[doc(alias = "gtk_notebook_reorder_child")] reorder_child<T: IsA<Widget>>(&self, child: &T, position: Option<u32>)81 fn reorder_child<T: IsA<Widget>>(&self, child: &T, position: Option<u32>); 82 83 #[doc(alias = "gtk_notebook_set_current_page")] set_current_page(&self, page_num: Option<u32>)84 fn set_current_page(&self, page_num: Option<u32>); 85 } 86 87 impl<O: IsA<Notebook>> NotebookExtManual for O { append_page<T: IsA<Widget>, U: IsA<Widget>>(&self, child: &T, tab_label: Option<&U>) -> u3288 fn append_page<T: IsA<Widget>, U: IsA<Widget>>(&self, child: &T, tab_label: Option<&U>) -> u32 { 89 unsafe { 90 let ret = ffi::gtk_notebook_append_page( 91 self.as_ref().to_glib_none().0, 92 child.as_ref().to_glib_none().0, 93 tab_label.map(|p| p.as_ref()).to_glib_none().0, 94 ); 95 assert!(ret >= 0); 96 ret as u32 97 } 98 } 99 append_page_menu<T, U, V>( &self, child: &T, tab_label: Option<&U>, menu_label: Option<&V>, ) -> u32 where T: IsA<Widget>, U: IsA<Widget>, V: IsA<Widget>,100 fn append_page_menu<T, U, V>( 101 &self, 102 child: &T, 103 tab_label: Option<&U>, 104 menu_label: Option<&V>, 105 ) -> u32 106 where 107 T: IsA<Widget>, 108 U: IsA<Widget>, 109 V: IsA<Widget>, 110 { 111 unsafe { 112 let ret = ffi::gtk_notebook_append_page_menu( 113 self.as_ref().to_glib_none().0, 114 child.as_ref().to_glib_none().0, 115 tab_label.map(|p| p.as_ref()).to_glib_none().0, 116 menu_label.map(|p| p.as_ref()).to_glib_none().0, 117 ); 118 assert!(ret >= 0); 119 ret as u32 120 } 121 } 122 current_page(&self) -> Option<u32>123 fn current_page(&self) -> Option<u32> { 124 unsafe { 125 let ret = ffi::gtk_notebook_get_current_page(self.as_ref().to_glib_none().0); 126 if ret >= 0 { 127 Some(ret as u32) 128 } else { 129 None 130 } 131 } 132 } 133 n_pages(&self) -> u32134 fn n_pages(&self) -> u32 { 135 unsafe { 136 let ret = ffi::gtk_notebook_get_n_pages(self.as_ref().to_glib_none().0); 137 assert!(ret >= 0); 138 ret as u32 139 } 140 } 141 nth_page(&self, page_num: Option<u32>) -> Option<Widget>142 fn nth_page(&self, page_num: Option<u32>) -> Option<Widget> { 143 unsafe { 144 from_glib_none(ffi::gtk_notebook_get_nth_page( 145 self.as_ref().to_glib_none().0, 146 page_num.map_or(-1, |n| n as c_int), 147 )) 148 } 149 } 150 insert_page<T, U>(&self, child: &T, tab_label: Option<&U>, position: Option<u32>) -> u32 where T: IsA<Widget>, U: IsA<Widget>,151 fn insert_page<T, U>(&self, child: &T, tab_label: Option<&U>, position: Option<u32>) -> u32 152 where 153 T: IsA<Widget>, 154 U: IsA<Widget>, 155 { 156 unsafe { 157 let ret = ffi::gtk_notebook_insert_page( 158 self.as_ref().to_glib_none().0, 159 child.as_ref().to_glib_none().0, 160 tab_label.map(|p| p.as_ref()).to_glib_none().0, 161 position.map_or(-1, |n| n as c_int), 162 ); 163 assert!(ret >= 0); 164 ret as u32 165 } 166 } 167 insert_page_menu<T, U, V>( &self, child: &T, tab_label: Option<&U>, menu_label: Option<&V>, position: Option<u32>, ) -> u32 where T: IsA<Widget>, U: IsA<Widget>, V: IsA<Widget>,168 fn insert_page_menu<T, U, V>( 169 &self, 170 child: &T, 171 tab_label: Option<&U>, 172 menu_label: Option<&V>, 173 position: Option<u32>, 174 ) -> u32 175 where 176 T: IsA<Widget>, 177 U: IsA<Widget>, 178 V: IsA<Widget>, 179 { 180 unsafe { 181 let ret = ffi::gtk_notebook_insert_page_menu( 182 self.as_ref().to_glib_none().0, 183 child.as_ref().to_glib_none().0, 184 tab_label.map(|p| p.as_ref()).to_glib_none().0, 185 menu_label.map(|p| p.as_ref()).to_glib_none().0, 186 position.map_or(-1, |n| n as c_int), 187 ); 188 assert!(ret >= 0); 189 ret as u32 190 } 191 } 192 page_num<T: IsA<Widget>>(&self, child: &T) -> Option<u32>193 fn page_num<T: IsA<Widget>>(&self, child: &T) -> Option<u32> { 194 unsafe { 195 let ret = ffi::gtk_notebook_page_num( 196 self.as_ref().to_glib_none().0, 197 child.as_ref().to_glib_none().0, 198 ); 199 if ret >= 0 { 200 Some(ret as u32) 201 } else { 202 None 203 } 204 } 205 } 206 prepend_page<T, U>(&self, child: &T, tab_label: Option<&U>) -> u32 where T: IsA<Widget>, U: IsA<Widget>,207 fn prepend_page<T, U>(&self, child: &T, tab_label: Option<&U>) -> u32 208 where 209 T: IsA<Widget>, 210 U: IsA<Widget>, 211 { 212 unsafe { 213 let ret = ffi::gtk_notebook_prepend_page( 214 self.as_ref().to_glib_none().0, 215 child.as_ref().to_glib_none().0, 216 tab_label.map(|p| p.as_ref()).to_glib_none().0, 217 ); 218 assert!(ret >= 0); 219 ret as u32 220 } 221 } 222 prepend_page_menu<T, U, V>( &self, child: &T, tab_label: Option<&U>, menu_label: Option<&V>, ) -> u32 where T: IsA<Widget>, U: IsA<Widget>, V: IsA<Widget>,223 fn prepend_page_menu<T, U, V>( 224 &self, 225 child: &T, 226 tab_label: Option<&U>, 227 menu_label: Option<&V>, 228 ) -> u32 229 where 230 T: IsA<Widget>, 231 U: IsA<Widget>, 232 V: IsA<Widget>, 233 { 234 unsafe { 235 let ret = ffi::gtk_notebook_prepend_page_menu( 236 self.as_ref().to_glib_none().0, 237 child.as_ref().to_glib_none().0, 238 tab_label.map(|p| p.as_ref()).to_glib_none().0, 239 menu_label.map(|p| p.as_ref()).to_glib_none().0, 240 ); 241 assert!(ret >= 0); 242 ret as u32 243 } 244 } 245 remove_page(&self, page_num: Option<u32>)246 fn remove_page(&self, page_num: Option<u32>) { 247 unsafe { 248 ffi::gtk_notebook_remove_page( 249 self.as_ref().to_glib_none().0, 250 page_num.map_or(-1, |n| n as c_int), 251 ); 252 } 253 } 254 reorder_child<T: IsA<Widget>>(&self, child: &T, position: Option<u32>)255 fn reorder_child<T: IsA<Widget>>(&self, child: &T, position: Option<u32>) { 256 unsafe { 257 ffi::gtk_notebook_reorder_child( 258 self.as_ref().to_glib_none().0, 259 child.as_ref().to_glib_none().0, 260 position.map_or(-1, |n| n as c_int), 261 ); 262 } 263 } 264 set_current_page(&self, page_num: Option<u32>)265 fn set_current_page(&self, page_num: Option<u32>) { 266 unsafe { 267 ffi::gtk_notebook_set_current_page( 268 self.as_ref().to_glib_none().0, 269 page_num.map_or(-1, |n| n as c_int), 270 ); 271 } 272 } 273 } 274