Skip to main content

gtk4/
tree_view_column.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use glib::translate::*;
4
5use crate::{CellRenderer, TreeViewColumn, ffi, prelude::*};
6
7impl TreeViewColumn {
8    /// s a simple example:
9    ///
10    /// **⚠️ The following code is in c ⚠️**
11    ///
12    /// ```c
13    ///  enum { TEXT_COLUMN, COLOR_COLUMN, N_COLUMNS };
14    ///  // ...
15    ///  {
16    ///    GtkTreeViewColumn *column;
17    ///    GtkCellRenderer   *renderer = gtk_cell_renderer_text_new ();
18    ///
19    ///    column = gtk_tree_view_column_new_with_attributes ("Title",
20    ///                                                       renderer,
21    ///                                                       "text", TEXT_COLUMN,
22    ///                                                       "foreground", COLOR_COLUMN,
23    ///                                                       NULL);
24    ///  }
25    /// ```
26    ///
27    /// # Deprecated since 4.10
28    ///
29    /// Use GtkColumnView instead
30    /// ## `title`
31    /// The title to set the header to
32    /// ## `cell`
33    /// The [`CellRenderer`][crate::CellRenderer]
34    ///
35    /// # Returns
36    ///
37    /// A newly created [`TreeViewColumn`][crate::TreeViewColumn].
38    #[doc(alias = "gtk_tree_view_column_new_with_attributes")]
39    #[doc(alias = "new_with_attributes")]
40    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
41    #[allow(deprecated)]
42    pub fn with_attributes(
43        title: &str,
44        cell_renderer: &impl IsA<CellRenderer>,
45        attributes: &[(&str, i32)],
46    ) -> Self {
47        assert_initialized_main_thread!();
48        let tree_view_column = TreeViewColumn::new();
49        tree_view_column.set_title(title);
50        tree_view_column.pack_start(cell_renderer, true);
51        tree_view_column.set_attributes(cell_renderer, attributes);
52
53        tree_view_column
54    }
55
56    /// Sets the attributes in the list as the attributes of @self.
57    ///
58    /// The attributes should be in attribute/column order, as in
59    /// gtk_tree_view_column_add_attribute(). All existing attributes
60    /// are removed, and replaced with the new attributes.
61    ///
62    /// # Deprecated since 4.10
63    ///
64    /// Use GtkColumnView instead
65    /// ## `cell_renderer`
66    /// re setting the attributes of
67    #[doc(alias = "gtk_tree_view_column_set_attributes")]
68    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
69    #[allow(deprecated)]
70    pub fn set_attributes(
71        &self,
72        cell_renderer: &impl IsA<CellRenderer>,
73        attributes: &[(&str, i32)],
74    ) {
75        self.clear_attributes(cell_renderer);
76        attributes.iter().for_each(|(attribute, column)| {
77            self.add_attribute(cell_renderer, attribute, *column);
78        });
79    }
80
81    #[doc(alias = "gtk_tree_view_column_set_cell_data_func")]
82    #[doc(alias = "set_cell_data_func")]
83    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
84    #[allow(deprecated)]
85    pub fn unset_cell_data_func(&self, cell_renderer: &impl IsA<CellRenderer>) {
86        unsafe {
87            ffi::gtk_tree_view_column_set_cell_data_func(
88                self.to_glib_none().0,
89                cell_renderer.as_ref().to_glib_none().0,
90                None,
91                std::ptr::null_mut(),
92                None,
93            );
94        }
95    }
96}