Struct gtk::TreeModelSort 
source · [−]#[repr(transparent)]pub struct TreeModelSort { /* private fields */ }Expand description
The TreeModelSort is a model which implements the TreeSortable
interface. It does not hold any data itself, but rather is created with
a child model and proxies its data. It has identical column types to
this child model, and the changes in the child are propagated. The
primary purpose of this model is to provide a way to sort a different
model without modifying it. Note that the sort function used by
TreeModelSort is not guaranteed to be stable.
The use of this is best demonstrated through an example. In the
following sample code we create two TreeView widgets each with a
view of the same data. As the model is wrapped here by a
TreeModelSort, the two GtkTreeViews can each sort their
view of the data without affecting the other. By contrast, if we
simply put the same model in each widget, then sorting the first would
sort the second.
Using a TreeModelSort
⚠️ The following code is in C ⚠️
{
  GtkTreeView *tree_view1;
  GtkTreeView *tree_view2;
  GtkTreeModel *sort_model1;
  GtkTreeModel *sort_model2;
  GtkTreeModel *child_model;
  // get the child model
  child_model = get_my_model ();
  // Create the first tree
  sort_model1 = gtk_tree_model_sort_new_with_model (child_model);
  tree_view1 = gtk_tree_view_new_with_model (sort_model1);
  // Create the second tree
  sort_model2 = gtk_tree_model_sort_new_with_model (child_model);
  tree_view2 = gtk_tree_view_new_with_model (sort_model2);
  // Now we can sort the two models independently
  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model1),
                                        COLUMN_1, GTK_SORT_ASCENDING);
  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model2),
                                        COLUMN_1, GTK_SORT_DESCENDING);
}To demonstrate how to access the underlying child model from the sort
model, the next example will be a callback for the TreeSelection
signal::TreeSelection::changed signal. In this callback, we get a string
from COLUMN_1 of the model. We then modify the string, find the same
selected row on the child model, and change the row there.
Accessing the child model of in a selection changed callback
⚠️ The following code is in C ⚠️
void
selection_changed (GtkTreeSelection *selection, gpointer data)
{
  GtkTreeModel *sort_model = NULL;
  GtkTreeModel *child_model;
  GtkTreeIter sort_iter;
  GtkTreeIter child_iter;
  char *some_data = NULL;
  char *modified_data;
  // Get the current selected row and the model.
  if (! gtk_tree_selection_get_selected (selection,
                                         &sort_model,
                                         &sort_iter))
    return;
  // Look up the current value on the selected row and get
  // a new value to change it to.
  gtk_tree_model_get (GTK_TREE_MODEL (sort_model), &sort_iter,
                      COLUMN_1, &some_data,
                      -1);
  modified_data = change_the_data (some_data);
  g_free (some_data);
  // Get an iterator on the child model, instead of the sort model.
  gtk_tree_model_sort_convert_iter_to_child_iter (GTK_TREE_MODEL_SORT (sort_model),
                                                  &child_iter,
                                                  &sort_iter);
  // Get the child model and change the value of the row. In this
  // example, the child model is a GtkListStore. It could be any other
  // type of model, though.
  child_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model));
  gtk_list_store_set (GTK_LIST_STORE (child_model), &child_iter,
                      COLUMN_1, &modified_data,
                      -1);
  g_free (modified_data);
}Implements
TreeModelSortExt, glib::ObjectExt, TreeDragSourceExt, TreeModelExt, TreeSortableExt, TreeSortableExtManual
Implementations
sourceimpl TreeModelSort
 
impl TreeModelSort
pub const NONE: Option<&'static TreeModelSort> = None
sourcepub fn new(child_model: &impl IsA<TreeModel>) -> TreeModelSort
 
pub fn new(child_model: &impl IsA<TreeModel>) -> TreeModelSort
Creates a new TreeModelSort, with child_model as the child model.
child_model
Returns
A new TreeModelSort.
Trait Implementations
sourceimpl Clone for TreeModelSort
 
impl Clone for TreeModelSort
sourceimpl Debug for TreeModelSort
 
impl Debug for TreeModelSort
sourceimpl Display for TreeModelSort
 
impl Display for TreeModelSort
sourceimpl Hash for TreeModelSort
 
impl Hash for TreeModelSort
sourceimpl Ord for TreeModelSort
 
impl Ord for TreeModelSort
1.21.0 · sourceconst fn max(self, other: Self) -> Self
 
const fn max(self, other: Self) -> Self
1.21.0 · sourceconst fn min(self, other: Self) -> Self
 
const fn min(self, other: Self) -> Self
1.50.0 · sourceconst fn clamp(self, min: Self, max: Self) -> Selfwhere
    Self: PartialOrd<Self>,
 
const fn clamp(self, min: Self, max: Self) -> Selfwhere
    Self: PartialOrd<Self>,
sourceimpl ParentClassIs for TreeModelSort
 
impl ParentClassIs for TreeModelSort
sourceimpl<OT: ObjectType> PartialEq<OT> for TreeModelSort
 
impl<OT: ObjectType> PartialEq<OT> for TreeModelSort
sourceimpl<OT: ObjectType> PartialOrd<OT> for TreeModelSort
 
impl<OT: ObjectType> PartialOrd<OT> for TreeModelSort
sourcefn partial_cmp(&self, other: &OT) -> Option<Ordering>
 
fn partial_cmp(&self, other: &OT) -> Option<Ordering>
1.0.0 · sourceconst fn le(&self, other: &Rhs) -> bool
 
const fn le(&self, other: &Rhs) -> bool
self and other) and is used by the <=
operator. Read moresourceimpl StaticType for TreeModelSort
 
impl StaticType for TreeModelSort
sourcefn static_type() -> Type
 
fn static_type() -> Type
Self.impl Eq for TreeModelSort
impl IsA<TreeDragSource> for TreeModelSort
impl IsA<TreeModel> for TreeModelSort
impl IsA<TreeSortable> for TreeModelSort
Auto Trait Implementations
impl RefUnwindSafe for TreeModelSort
impl !Send for TreeModelSort
impl !Sync for TreeModelSort
impl Unpin for TreeModelSort
impl UnwindSafe for TreeModelSort
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
sourceimpl<T> Cast for Twhere
    T: ObjectType,
 
impl<T> Cast for Twhere
    T: ObjectType,
sourcefn upcast<T>(self) -> Twhere
    T: ObjectType,
    Self: IsA<T>,
 
fn upcast<T>(self) -> Twhere
    T: ObjectType,
    Self: IsA<T>,
T. Read moresourcefn upcast_ref<T>(&self) -> &Twhere
    T: ObjectType,
    Self: IsA<T>,
 
fn upcast_ref<T>(&self) -> &Twhere
    T: ObjectType,
    Self: IsA<T>,
T. Read moresourcefn downcast<T>(self) -> Result<T, Self>where
    T: ObjectType,
    Self: CanDowncast<T>,
 
fn downcast<T>(self) -> Result<T, Self>where
    T: ObjectType,
    Self: CanDowncast<T>,
T. Read moresourcefn downcast_ref<T>(&self) -> Option<&T>where
    T: ObjectType,
    Self: CanDowncast<T>,
 
fn downcast_ref<T>(&self) -> Option<&T>where
    T: ObjectType,
    Self: CanDowncast<T>,
T. Read moresourcefn dynamic_cast<T>(self) -> Result<T, Self>where
    T: ObjectType,
 
fn dynamic_cast<T>(self) -> Result<T, Self>where
    T: ObjectType,
T. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while downcast and upcast will do many checks at compile-time already. Read moresourcefn dynamic_cast_ref<T>(&self) -> Option<&T>where
    T: ObjectType,
 
fn dynamic_cast_ref<T>(&self) -> Option<&T>where
    T: ObjectType,
T. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while downcast and upcast will do many checks at compile-time already. Read moresourceunsafe fn unsafe_cast<T>(self) -> Twhere
    T: ObjectType,
 
unsafe fn unsafe_cast<T>(self) -> Twhere
    T: ObjectType,
T unconditionally. Read moresourceunsafe fn unsafe_cast_ref<T>(&self) -> &Twhere
    T: ObjectType,
 
unsafe fn unsafe_cast_ref<T>(&self) -> &Twhere
    T: ObjectType,
&T unconditionally. Read moresourceimpl<U> IsSubclassableExt for Uwhere
    U: IsClass + ParentClassIs,
 
impl<U> IsSubclassableExt for Uwhere
    U: IsClass + ParentClassIs,
fn parent_class_init<T>(class: &mut Class<U>)where
    T: ObjectSubclass,
    <U as ParentClassIs>::Parent: IsSubclassable<T>,
fn parent_instance_init<T>(instance: &mut InitializingObject<T>)where
    T: ObjectSubclass,
    <U as ParentClassIs>::Parent: IsSubclassable<T>,
sourceimpl<T> ObjectExt for Twhere
    T: ObjectType,
 
impl<T> ObjectExt for Twhere
    T: ObjectType,
sourcefn is<U>(&self) -> boolwhere
    U: StaticType,
 
fn is<U>(&self) -> boolwhere
    U: StaticType,
true if the object is an instance of (can be cast to) T.sourcefn object_class(&self) -> &Class<Object>
 
fn object_class(&self) -> &Class<Object>
ObjectClass of the object. Read moresourcefn class_of<U>(&self) -> Option<&Class<U>>where
    U: IsClass,
 
fn class_of<U>(&self) -> Option<&Class<U>>where
    U: IsClass,
T. Read moresourcefn interface<U>(&self) -> Option<InterfaceRef<'_, U>>where
    U: IsInterface,
 
fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>where
    U: IsInterface,
T of the object. Read moresourcefn set_property<V>(&self, property_name: &str, value: V)where
    V: ToValue,
 
fn set_property<V>(&self, property_name: &str, value: V)where
    V: ToValue,
sourcefn set_property_from_value(&self, property_name: &str, value: &Value)
 
fn set_property_from_value(&self, property_name: &str, value: &Value)
sourcefn set_properties(&self, property_values: &[(&str, &dyn ToValue)])
 
fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])
sourcefn set_properties_from_value(&self, property_values: &[(&str, Value)])
 
fn set_properties_from_value(&self, property_values: &[(&str, Value)])
sourcefn property<V>(&self, property_name: &str) -> Vwhere
    V: 'static + for<'b> FromValue<'b>,
 
fn property<V>(&self, property_name: &str) -> Vwhere
    V: 'static + for<'b> FromValue<'b>,
property_name of the object and cast it to the type V. Read moresourcefn property_value(&self, property_name: &str) -> Value
 
fn property_value(&self, property_name: &str) -> Value
property_name of the object. Read moresourcefn property_type(&self, property_name: &str) -> Option<Type>
 
fn property_type(&self, property_name: &str) -> Option<Type>
property_name of this object. Read moresourcefn find_property(&self, property_name: &str) -> Option<ParamSpec>
 
fn find_property(&self, property_name: &str) -> Option<ParamSpec>
ParamSpec of the property property_name of this object.sourcefn list_properties(&self) -> PtrSlice<ParamSpec>
 
fn list_properties(&self) -> PtrSlice<ParamSpec>
ParamSpec of the properties of this object.sourcefn freeze_notify(&self) -> PropertyNotificationFreezeGuard
 
fn freeze_notify(&self) -> PropertyNotificationFreezeGuard
sourceunsafe fn set_qdata<QD>(&self, key: Quark, value: QD)where
    QD: 'static,
 
unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)where
    QD: 'static,
key. Read moresourceunsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>where
    QD: 'static,
 
unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>where
    QD: 'static,
key. Read moresourceunsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>where
    QD: 'static,
 
unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>where
    QD: 'static,
key. Read moresourceunsafe fn set_data<QD>(&self, key: &str, value: QD)where
    QD: 'static,
 
unsafe fn set_data<QD>(&self, key: &str, value: QD)where
    QD: 'static,
key. Read moresourceunsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>where
    QD: 'static,
 
unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>where
    QD: 'static,
key. Read moresourceunsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>where
    QD: 'static,
 
unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>where
    QD: 'static,
key. Read moresourcefn block_signal(&self, handler_id: &SignalHandlerId)
 
fn block_signal(&self, handler_id: &SignalHandlerId)
sourcefn unblock_signal(&self, handler_id: &SignalHandlerId)
 
fn unblock_signal(&self, handler_id: &SignalHandlerId)
sourcefn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)
 
fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)
sourcefn stop_signal_emission_by_name(&self, signal_name: &str)
 
fn stop_signal_emission_by_name(&self, signal_name: &str)
sourcefn connect<F>(
    &self,
    signal_name: &str,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: 'static + Fn(&[Value]) -> Option<Value> + Send + Sync,
 
fn connect<F>(
    &self,
    signal_name: &str,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: 'static + Fn(&[Value]) -> Option<Value> + Send + Sync,
signal_name on this object. Read moresourcefn connect_id<F>(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: 'static + Fn(&[Value]) -> Option<Value> + Send + Sync,
 
fn connect_id<F>(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: 'static + Fn(&[Value]) -> Option<Value> + Send + Sync,
signal_id on this object. Read moresourcefn connect_local<F>(
    &self,
    signal_name: &str,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: 'static + Fn(&[Value]) -> Option<Value>,
 
fn connect_local<F>(
    &self,
    signal_name: &str,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: 'static + Fn(&[Value]) -> Option<Value>,
signal_name on this object. Read moresourcefn connect_local_id<F>(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: 'static + Fn(&[Value]) -> Option<Value>,
 
fn connect_local_id<F>(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: 'static + Fn(&[Value]) -> Option<Value>,
signal_id on this object. Read moresourceunsafe fn connect_unsafe<F>(
    &self,
    signal_name: &str,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: Fn(&[Value]) -> Option<Value>,
 
unsafe fn connect_unsafe<F>(
    &self,
    signal_name: &str,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: Fn(&[Value]) -> Option<Value>,
signal_name on this object. Read moresourceunsafe fn connect_unsafe_id<F>(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: Fn(&[Value]) -> Option<Value>,
 
unsafe fn connect_unsafe_id<F>(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    callback: F
) -> SignalHandlerIdwhere
    F: Fn(&[Value]) -> Option<Value>,
signal_id on this object. Read moresourcefn connect_closure(
    &self,
    signal_name: &str,
    after: bool,
    closure: RustClosure
) -> SignalHandlerId
 
fn connect_closure(
    &self,
    signal_name: &str,
    after: bool,
    closure: RustClosure
) -> SignalHandlerId
signal_name on this object. Read moresourcefn connect_closure_id(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    closure: RustClosure
) -> SignalHandlerId
 
fn connect_closure_id(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    closure: RustClosure
) -> SignalHandlerId
signal_id on this object. Read moresourcefn watch_closure(&self, closure: &impl AsRef<Closure>)
 
fn watch_closure(&self, closure: &impl AsRef<Closure>)
closure to the lifetime of the object. When
the object’s reference count drops to zero, the closure will be
invalidated. An invalidated closure will ignore any calls to
invoke_with_values, or
invoke when using Rust closures. Read moresourcefn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> Rwhere
    R: TryFromClosureReturnValue,
 
fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> Rwhere
    R: TryFromClosureReturnValue,
sourcefn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>
 
fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>
Self::emit but takes Value for the arguments.sourcefn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> Rwhere
    R: TryFromClosureReturnValue,
 
fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> Rwhere
    R: TryFromClosureReturnValue,
sourcefn emit_by_name_with_values(
    &self,
    signal_name: &str,
    args: &[Value]
) -> Option<Value>
 
fn emit_by_name_with_values(
    &self,
    signal_name: &str,
    args: &[Value]
) -> Option<Value>
sourcefn emit_by_name_with_details<R>(
    &self,
    signal_name: &str,
    details: Quark,
    args: &[&dyn ToValue]
) -> Rwhere
    R: TryFromClosureReturnValue,
 
fn emit_by_name_with_details<R>(
    &self,
    signal_name: &str,
    details: Quark,
    args: &[&dyn ToValue]
) -> Rwhere
    R: TryFromClosureReturnValue,
sourcefn emit_by_name_with_details_and_values(
    &self,
    signal_name: &str,
    details: Quark,
    args: &[Value]
) -> Option<Value>
 
fn emit_by_name_with_details_and_values(
    &self,
    signal_name: &str,
    details: Quark,
    args: &[Value]
) -> Option<Value>
sourcefn emit_with_details<R>(
    &self,
    signal_id: SignalId,
    details: Quark,
    args: &[&dyn ToValue]
) -> Rwhere
    R: TryFromClosureReturnValue,
 
fn emit_with_details<R>(
    &self,
    signal_id: SignalId,
    details: Quark,
    args: &[&dyn ToValue]
) -> Rwhere
    R: TryFromClosureReturnValue,
sourcefn emit_with_details_and_values(
    &self,
    signal_id: SignalId,
    details: Quark,
    args: &[Value]
) -> Option<Value>
 
fn emit_with_details_and_values(
    &self,
    signal_id: SignalId,
    details: Quark,
    args: &[Value]
) -> Option<Value>
sourcefn disconnect(&self, handler_id: SignalHandlerId)
 
fn disconnect(&self, handler_id: SignalHandlerId)
sourcefn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerIdwhere
    F: 'static + Fn(&T, &ParamSpec) + Send + Sync,
 
fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerIdwhere
    F: 'static + Fn(&T, &ParamSpec) + Send + Sync,
notify signal of the object. Read moresourcefn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerIdwhere
    F: 'static + Fn(&T, &ParamSpec),
 
fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerIdwhere
    F: 'static + Fn(&T, &ParamSpec),
notify signal of the object. Read moresourceunsafe fn connect_notify_unsafe<F>(
    &self,
    name: Option<&str>,
    f: F
) -> SignalHandlerIdwhere
    F: Fn(&T, &ParamSpec),
 
unsafe fn connect_notify_unsafe<F>(
    &self,
    name: Option<&str>,
    f: F
) -> SignalHandlerIdwhere
    F: Fn(&T, &ParamSpec),
notify signal of the object. Read more