Skip to main content

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}