[go: up one dir, main page]

gtk4/
notebook.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use glib::translate::*;
4use libc::c_int;
5
6use crate::{ffi, prelude::*, Notebook, Widget};
7
8impl Notebook {
9    #[doc(alias = "gtk_notebook_append_page")]
10    pub fn append_page(
11        &self,
12        child: &impl IsA<Widget>,
13        tab_label: Option<&impl IsA<Widget>>,
14    ) -> u32 {
15        unsafe {
16            let ret = ffi::gtk_notebook_append_page(
17                self.to_glib_none().0,
18                child.as_ref().to_glib_none().0,
19                tab_label.map(|p| p.as_ref()).to_glib_none().0,
20            );
21            debug_assert!(ret >= 0);
22            ret as u32
23        }
24    }
25
26    #[doc(alias = "gtk_notebook_append_page_menu")]
27    pub fn append_page_menu(
28        &self,
29        child: &impl IsA<Widget>,
30        tab_label: Option<&impl IsA<Widget>>,
31        menu_label: Option<&impl IsA<Widget>>,
32    ) -> u32 {
33        unsafe {
34            let ret = ffi::gtk_notebook_append_page_menu(
35                self.to_glib_none().0,
36                child.as_ref().to_glib_none().0,
37                tab_label.map(|p| p.as_ref()).to_glib_none().0,
38                menu_label.map(|p| p.as_ref()).to_glib_none().0,
39            );
40            debug_assert!(ret >= 0);
41            ret as u32
42        }
43    }
44
45    #[doc(alias = "gtk_notebook_get_current_page")]
46    #[doc(alias = "get_current_page")]
47    pub fn current_page(&self) -> Option<u32> {
48        unsafe {
49            let ret = ffi::gtk_notebook_get_current_page(self.to_glib_none().0);
50            if ret >= 0 {
51                Some(ret as u32)
52            } else {
53                None
54            }
55        }
56    }
57
58    #[doc(alias = "gtk_notebook_get_n_pages")]
59    #[doc(alias = "get_n_pages")]
60    pub fn n_pages(&self) -> u32 {
61        unsafe {
62            let ret = ffi::gtk_notebook_get_n_pages(self.to_glib_none().0);
63            debug_assert!(ret >= 0);
64            ret as u32
65        }
66    }
67
68    #[doc(alias = "gtk_notebook_get_nth_page")]
69    #[doc(alias = "get_nth_page")]
70    pub fn nth_page(&self, page_num: Option<u32>) -> Option<Widget> {
71        unsafe {
72            from_glib_none(ffi::gtk_notebook_get_nth_page(
73                self.to_glib_none().0,
74                page_num.map_or(-1, |n| n as c_int),
75            ))
76        }
77    }
78
79    #[doc(alias = "gtk_notebook_insert_page")]
80    pub fn insert_page(
81        &self,
82        child: &impl IsA<Widget>,
83        tab_label: Option<&impl IsA<Widget>>,
84        position: Option<u32>,
85    ) -> u32 {
86        unsafe {
87            let ret = ffi::gtk_notebook_insert_page(
88                self.to_glib_none().0,
89                child.as_ref().to_glib_none().0,
90                tab_label.map(|p| p.as_ref()).to_glib_none().0,
91                position.map_or(-1, |n| n as c_int),
92            );
93            debug_assert!(ret >= 0);
94            ret as u32
95        }
96    }
97
98    #[doc(alias = "gtk_notebook_insert_page_menu")]
99    pub fn insert_page_menu(
100        &self,
101        child: &impl IsA<Widget>,
102        tab_label: Option<&impl IsA<Widget>>,
103        menu_label: Option<&impl IsA<Widget>>,
104        position: Option<u32>,
105    ) -> u32 {
106        unsafe {
107            let ret = ffi::gtk_notebook_insert_page_menu(
108                self.to_glib_none().0,
109                child.as_ref().to_glib_none().0,
110                tab_label.map(|p| p.as_ref()).to_glib_none().0,
111                menu_label.map(|p| p.as_ref()).to_glib_none().0,
112                position.map_or(-1, |n| n as c_int),
113            );
114            debug_assert!(ret >= 0);
115            ret as u32
116        }
117    }
118    #[doc(alias = "gtk_notebook_page_num")]
119    pub fn page_num(&self, child: &impl IsA<Widget>) -> Option<u32> {
120        unsafe {
121            let ret =
122                ffi::gtk_notebook_page_num(self.to_glib_none().0, child.as_ref().to_glib_none().0);
123            if ret >= 0 {
124                Some(ret as u32)
125            } else {
126                None
127            }
128        }
129    }
130    #[doc(alias = "gtk_notebook_prepend_page")]
131    pub fn prepend_page(
132        &self,
133        child: &impl IsA<Widget>,
134        tab_label: Option<&impl IsA<Widget>>,
135    ) -> u32 {
136        unsafe {
137            let ret = ffi::gtk_notebook_prepend_page(
138                self.to_glib_none().0,
139                child.as_ref().to_glib_none().0,
140                tab_label.map(|p| p.as_ref()).to_glib_none().0,
141            );
142            debug_assert!(ret >= 0);
143            ret as u32
144        }
145    }
146
147    #[doc(alias = "gtk_notebook_prepend_page_menu")]
148    pub fn prepend_page_menu(
149        &self,
150        child: &impl IsA<Widget>,
151        tab_label: Option<&impl IsA<Widget>>,
152        menu_label: Option<&impl IsA<Widget>>,
153    ) -> u32 {
154        unsafe {
155            let ret = ffi::gtk_notebook_prepend_page_menu(
156                self.to_glib_none().0,
157                child.as_ref().to_glib_none().0,
158                tab_label.map(|p| p.as_ref()).to_glib_none().0,
159                menu_label.map(|p| p.as_ref()).to_glib_none().0,
160            );
161            debug_assert!(ret >= 0);
162            ret as u32
163        }
164    }
165
166    #[doc(alias = "gtk_notebook_remove_page")]
167    pub fn remove_page(&self, page_num: Option<u32>) {
168        unsafe {
169            ffi::gtk_notebook_remove_page(
170                self.to_glib_none().0,
171                page_num.map_or(-1, |n| n as c_int),
172            );
173        }
174    }
175
176    #[doc(alias = "gtk_notebook_reorder_child")]
177    pub fn reorder_child(&self, child: &impl IsA<Widget>, position: Option<u32>) {
178        unsafe {
179            ffi::gtk_notebook_reorder_child(
180                self.to_glib_none().0,
181                child.as_ref().to_glib_none().0,
182                position.map_or(-1, |n| n as c_int),
183            );
184        }
185    }
186
187    #[doc(alias = "gtk_notebook_set_current_page")]
188    pub fn set_current_page(&self, page_num: Option<u32>) {
189        unsafe {
190            ffi::gtk_notebook_set_current_page(
191                self.to_glib_none().0,
192                page_num.map_or(-1, |n| n as c_int),
193            );
194        }
195    }
196}