gtk/tree_view_column.rs
1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use crate::{prelude::TreeViewColumnExt, CellRenderer, TreeViewColumn};
4use glib::object::IsA;
5
6impl TreeViewColumn {
7 /// Creates a new [`TreeViewColumn`][crate::TreeViewColumn] with a number of default values.
8 /// This is equivalent to calling [`TreeViewColumnExt::set_title()`][crate::prelude::TreeViewColumnExt::set_title()],
9 /// [`TreeViewColumnExt::pack_start()`][crate::prelude::TreeViewColumnExt::pack_start()], and
10 /// `gtk_tree_view_column_set_attributes()` on the newly created [`TreeViewColumn`][crate::TreeViewColumn].
11 ///
12 /// Here’s a simple example:
13 ///
14 ///
15 /// **⚠️ The following code is in C ⚠️**
16 ///
17 /// ```C
18 /// enum { TEXT_COLUMN, COLOR_COLUMN, N_COLUMNS };
19 /// // ...
20 /// {
21 /// GtkTreeViewColumn *column;
22 /// GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
23 ///
24 /// column = gtk_tree_view_column_new_with_attributes ("Title",
25 /// renderer,
26 /// "text", TEXT_COLUMN,
27 /// "foreground", COLOR_COLUMN,
28 /// NULL);
29 /// }
30 /// ```
31 /// ## `title`
32 /// The title to set the header to
33 /// ## `cell`
34 /// The [`CellRenderer`][crate::CellRenderer]
35 ///
36 /// # Returns
37 ///
38 /// A newly created [`TreeViewColumn`][crate::TreeViewColumn].
39 #[doc(alias = "gtk_tree_view_column_new_with_attributes")]
40 pub fn with_attributes(
41 title: &str,
42 cell_renderer: &impl IsA<CellRenderer>,
43 attributes: &[(&str, i32)],
44 ) -> Self {
45 assert_initialized_main_thread!();
46 let tree_view_column = TreeViewColumn::new();
47 tree_view_column.set_title(title);
48 tree_view_column.pack_start(cell_renderer, true);
49 tree_view_column.set_attributes(cell_renderer, attributes);
50
51 tree_view_column
52 }
53
54 #[doc(alias = "gtk_tree_view_column_set_attributes")]
55 pub fn set_attributes(
56 &self,
57 cell_renderer: &impl IsA<CellRenderer>,
58 attributes: &[(&str, i32)],
59 ) {
60 self.clear_attributes(cell_renderer);
61 attributes.iter().for_each(|(attribute, column)| {
62 self.add_attribute(cell_renderer, attribute, *column);
63 });
64 }
65}