1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
#![allow(deprecated)]
use crate::TreeModel;
use glib::{
prelude::*,
signal::{connect_raw, SignalHandlerId},
translate::*,
};
use std::{boxed::Box as Box_, fmt, mem::transmute};
glib::wrapper! {
/// There is no replacement for this interface. You should
/// use [`SortListModel`][crate::SortListModel] to wrap your list model instead
/// The interface for sortable models used by GtkTreeView
///
/// [`TreeSortable`][crate::TreeSortable] is an interface to be implemented by tree models which
/// support sorting. The [`TreeView`][crate::TreeView] uses the methods provided by this interface
/// to sort the model.
///
/// ## Signals
///
///
/// #### `sort-column-changed`
/// The ::sort-column-changed signal is emitted when the sort column
/// or sort order of @sortable is changed. The signal is emitted before
/// the contents of @sortable are resorted.
///
///
/// <details><summary><h4>TreeModel</h4></summary>
///
///
/// #### `row-changed`
/// This signal is emitted when a row in the model has changed.
///
///
///
///
/// #### `row-deleted`
/// This signal is emitted when a row has been deleted.
///
/// Note that no iterator is passed to the signal handler,
/// since the row is already deleted.
///
/// This should be called by models after a row has been removed.
/// The location pointed to by @path should be the location that
/// the row previously was at. It may not be a valid location anymore.
///
///
///
///
/// #### `row-has-child-toggled`
/// This signal is emitted when a row has gotten the first child
/// row or lost its last child row.
///
///
///
///
/// #### `row-inserted`
/// This signal is emitted when a new row has been inserted in
/// the model.
///
/// Note that the row may still be empty at this point, since
/// it is a common pattern to first insert an empty row, and
/// then fill it with the desired values.
///
///
///
///
/// #### `rows-reordered`
/// This signal is emitted when the children of a node in the
/// [`TreeModel`][crate::TreeModel] have been reordered.
///
/// Note that this signal is not emitted
/// when rows are reordered by DND, since this is implemented
/// by removing and then reinserting the row.
///
///
/// </details>
///
/// # Implements
///
/// [`TreeSortableExt`][trait@crate::prelude::TreeSortableExt], [`TreeModelExt`][trait@crate::prelude::TreeModelExt], [`TreeSortableExtManual`][trait@crate::prelude::TreeSortableExtManual], [`TreeModelExtManual`][trait@crate::prelude::TreeModelExtManual]
#[doc(alias = "GtkTreeSortable")]
pub struct TreeSortable(Interface<ffi::GtkTreeSortable, ffi::GtkTreeSortableIface>) @requires TreeModel;
match fn {
type_ => || ffi::gtk_tree_sortable_get_type(),
}
}
impl TreeSortable {
pub const NONE: Option<&'static TreeSortable> = None;
}
mod sealed {
pub trait Sealed {}
impl<T: super::IsA<super::TreeSortable>> Sealed for T {}
}
/// Trait containing all [`struct@TreeSortable`] methods.
///
/// # Implementors
///
/// [`ListStore`][struct@crate::ListStore], [`TreeModelSort`][struct@crate::TreeModelSort], [`TreeSortable`][struct@crate::TreeSortable], [`TreeStore`][struct@crate::TreeStore]
pub trait TreeSortableExt: IsA<TreeSortable> + sealed::Sealed + 'static {
/// Returns [`true`] if the model has a default sort function. This is used
/// primarily by GtkTreeViewColumns in order to determine if a model can
/// go back to the default state, or not.
///
/// # Deprecated since 4.10
///
///
/// # Returns
///
/// [`true`], if the model has a default sort function
#[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
#[allow(deprecated)]
#[doc(alias = "gtk_tree_sortable_has_default_sort_func")]
fn has_default_sort_func(&self) -> bool {
unsafe {
from_glib(ffi::gtk_tree_sortable_has_default_sort_func(
self.as_ref().to_glib_none().0,
))
}
}
/// Emits a `GtkTreeSortable::sort-column-changed` signal on @self.
///
/// # Deprecated since 4.10
///
#[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
#[allow(deprecated)]
#[doc(alias = "gtk_tree_sortable_sort_column_changed")]
fn sort_column_changed(&self) {
unsafe {
ffi::gtk_tree_sortable_sort_column_changed(self.as_ref().to_glib_none().0);
}
}
/// The ::sort-column-changed signal is emitted when the sort column
/// or sort order of @sortable is changed. The signal is emitted before
/// the contents of @sortable are resorted.
#[doc(alias = "sort-column-changed")]
fn connect_sort_column_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn sort_column_changed_trampoline<
P: IsA<TreeSortable>,
F: Fn(&P) + 'static,
>(
this: *mut ffi::GtkTreeSortable,
f: glib::ffi::gpointer,
) {
let f: &F = &*(f as *const F);
f(TreeSortable::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"sort-column-changed\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
sort_column_changed_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
}
impl<O: IsA<TreeSortable>> TreeSortableExt for O {}
impl fmt::Display for TreeSortable {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("TreeSortable")
}
}