[−]Struct gtk::WidgetPath
WidgetPath is a boxed type that represents a widget hierarchy from
the topmost widget, typically a toplevel, to any child. This widget
path abstraction is used in StyleContext on behalf of the real
widget in order to query style information.
If you are using GTK+ widgets, you probably will not need to use
this API directly, as there is WidgetExt::get_path, and the style
context returned by WidgetExt::get_style_context will be automatically
updated on widget hierarchy changes.
The widget path generation is generally simple:
Defining a button within a window
{
GtkWidgetPath *path;
path = gtk_widget_path_new ();
gtk_widget_path_append_type (path, GTK_TYPE_WINDOW);
gtk_widget_path_append_type (path, GTK_TYPE_BUTTON);
}
Although more complex information, such as widget names, or different classes (property that may be used by other widget types) and intermediate regions may be included:
Defining the first tab widget in a notebook
{
GtkWidgetPath *path;
guint pos;
path = gtk_widget_path_new ();
pos = gtk_widget_path_append_type (path, GTK_TYPE_NOTEBOOK);
gtk_widget_path_iter_add_region (path, pos, "tab", GTK_REGION_EVEN | GTK_REGION_FIRST);
pos = gtk_widget_path_append_type (path, GTK_TYPE_LABEL);
gtk_widget_path_iter_set_name (path, pos, "first tab label");
}
All this information will be used to match the style information that applies to the described widget.
Implementations
impl WidgetPath[src]
pub fn new() -> WidgetPath[src]
pub fn append_for_widget<P: IsA<Widget>>(&self, widget: &P) -> i32[src]
Appends the data from widget to the widget hierarchy represented
by self. This function is a shortcut for adding information from
widget to the given self. This includes setting the name or
adding the style classes from widget.
widget
the widget to append to the widget path
Returns
the position where the data was inserted
pub fn append_type(&self, type_: Type) -> i32[src]
Appends a widget type to the widget hierarchy represented by self.
type_
widget type to append
Returns
the position where the element was inserted
pub fn append_with_siblings(
&self,
siblings: &WidgetPath,
sibling_index: u32
) -> i32[src]
&self,
siblings: &WidgetPath,
sibling_index: u32
) -> i32
Appends a widget type with all its siblings to the widget hierarchy
represented by self. Using this function instead of
WidgetPath::append_type will allow the CSS theming to use
sibling matches in selectors and apply :nth-child pseudo classes.
In turn, it requires a lot more care in widget implementations as
widgets need to make sure to call WidgetExt::reset_style on all
involved widgets when the siblings path changes.
siblings
a widget path describing a list of siblings. This path may not contain any siblings itself and it must not be modified afterwards.
sibling_index
index into siblings for where the added element is
positioned.
Returns
the position where the element was inserted.
pub fn copy(&self) -> Option<WidgetPath>[src]
pub fn get_object_type(&self) -> Type[src]
Returns the topmost object type, that is, the object type this path is representing.
Returns
The object type
pub fn has_parent(&self, type_: Type) -> bool[src]
Returns true if any of the parents of the widget represented
in self is of type type_, or any subtype of it.
type_
widget type to check in parents
Returns
true if any parent is of type type_
pub fn is_type(&self, type_: Type) -> bool[src]
Returns true if the widget type represented by this path
is type_, or a subtype of it.
type_
widget type to match
Returns
true if the widget represented by self is of type type_
pub fn iter_add_class(&self, pos: i32, name: &str)[src]
Adds the class name to the widget at position pos in
the hierarchy defined in self. See
StyleContextExt::add_class.
pos
position to modify, -1 for the path head
name
a class name
pub fn iter_clear_classes(&self, pos: i32)[src]
Removes all classes from the widget at position pos in the
hierarchy defined in self.
pos
position to modify, -1 for the path head
pub fn iter_get_name(&self, pos: i32) -> Option<GString>[src]
Returns the name corresponding to the widget found at
the position pos in the widget hierarchy defined by
self
pos
position to get the widget name for, -1 for the path head
Returns
The widget name, or None if none was set.
pub fn iter_get_object_name(&self, pos: i32) -> Option<GString>[src]
Returns the object name that is at position pos in the widget
hierarchy defined in self.
Feature: v3_20
pos
position to get the object name for, -1 for the path head
Returns
the name or None
pub fn iter_get_object_type(&self, pos: i32) -> Type[src]
Returns the object glib::Type that is at position pos in the widget
hierarchy defined in self.
pos
position to get the object type for, -1 for the path head
Returns
a widget type
pub fn iter_get_sibling_index(&self, pos: i32) -> u32[src]
Returns the index into the list of siblings for the element at pos as
returned by WidgetPath::iter_get_siblings. If that function would
return None because the element at pos has no siblings, this function
will return 0.
pos
position to get the sibling index for, -1 for the path head
Returns
0 or the index into the list of siblings for the element at pos.
pub fn iter_get_siblings(&self, pos: i32) -> Option<WidgetPath>[src]
Returns the list of siblings for the element at pos. If the element
was not added with siblings, None is returned.
pos
position to get the siblings for, -1 for the path head
Returns
None or the list of siblings for the element at pos.
pub fn iter_get_state(&self, pos: i32) -> StateFlags[src]
Returns the state flags corresponding to the widget found at
the position pos in the widget hierarchy defined by
self
pos
position to get the state for, -1 for the path head
Returns
The state flags
pub fn iter_has_class(&self, pos: i32, name: &str) -> bool[src]
Returns true if the widget at position pos has the class name
defined, false otherwise.
pos
position to query, -1 for the path head
name
class name
Returns
true if the class name is defined for the widget at pos
pub fn iter_has_name(&self, pos: i32, name: &str) -> bool[src]
Returns true if the widget at position pos has the name name,
false otherwise.
pos
position to query, -1 for the path head
name
a widget name
Returns
true if the widget at pos has this name
pub fn iter_has_qclass(&self, pos: i32, qname: Quark) -> bool[src]
See WidgetPath::iter_has_class. This is a version that operates
with GQuarks.
pos
position to query, -1 for the path head
qname
class name as a glib::Quark
Returns
true if the widget at pos has the class defined.
pub fn iter_has_qname(&self, pos: i32, qname: Quark) -> bool[src]
See WidgetPath::iter_has_name. This is a version
that operates on GQuarks.
pos
position to query, -1 for the path head
qname
widget name as a glib::Quark
Returns
true if the widget at pos has this name
pub fn iter_list_classes(&self, pos: i32) -> Vec<GString>[src]
Returns a list with all the class names defined for the widget
at position pos in the hierarchy defined in self.
pos
position to query, -1 for the path head
Returns
The list of
classes, This is a list of strings, the glib::SList contents
are owned by GTK+, but you should use glib::SList::free to
free the list itself.
pub fn iter_remove_class(&self, pos: i32, name: &str)[src]
Removes the class name from the widget at position pos in
the hierarchy defined in self.
pos
position to modify, -1 for the path head
name
class name
pub fn iter_set_name(&self, pos: i32, name: &str)[src]
Sets the widget name for the widget found at position pos
in the widget hierarchy defined by self.
pos
position to modify, -1 for the path head
name
widget name
pub fn iter_set_object_name(&self, pos: i32, name: Option<&str>)[src]
Sets the object name for a given position in the widget hierarchy
defined by self.
When set, the object name overrides the object type when matching CSS.
Feature: v3_20
pos
position to modify, -1 for the path head
name
object name to set or None to unset
pub fn iter_set_object_type(&self, pos: i32, type_: Type)[src]
Sets the object type for a given position in the widget hierarchy
defined by self.
pos
position to modify, -1 for the path head
type_
object type to set
pub fn iter_set_state(&self, pos: i32, state: StateFlags)[src]
Sets the widget name for the widget found at position pos
in the widget hierarchy defined by self.
If you want to update just a single state flag, you need to do this manually, as this function updates all state flags.
Setting a flag
gtk_widget_path_iter_set_state (path, pos, gtk_widget_path_iter_get_state (path, pos) | flag);
Unsetting a flag
gtk_widget_path_iter_set_state (path, pos, gtk_widget_path_iter_get_state (path, pos) & ~flag);
pos
position to modify, -1 for the path head
state
state flags
pub fn length(&self) -> i32[src]
Returns the number of Widget GTypes between the represented
widget and its topmost container.
Returns
the number of elements in the path
pub fn prepend_type(&self, type_: Type)[src]
Trait Implementations
impl Clone for WidgetPath
fn clone(&self) -> WidgetPath
fn clone_from(&mut self, source: &Self)1.0.0[src]
impl Debug for WidgetPath[src]
impl Default for WidgetPath[src]
impl Display for WidgetPath[src]
impl Eq for WidgetPath[src]
impl Hash for WidgetPath[src]
fn hash<__H: Hasher>(&self, state: &mut __H)[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
impl Ord for WidgetPath[src]
fn cmp(&self, other: &WidgetPath) -> Ordering[src]
#[must_use]fn max(self, other: Self) -> Self1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self1.21.0[src]
#[must_use]fn clamp(self, min: Self, max: Self) -> Self[src]
impl PartialEq<WidgetPath> for WidgetPath[src]
fn eq(&self, other: &WidgetPath) -> bool[src]
fn ne(&self, other: &WidgetPath) -> bool[src]
impl PartialOrd<WidgetPath> for WidgetPath[src]
fn partial_cmp(&self, other: &WidgetPath) -> Option<Ordering>[src]
fn lt(&self, other: &WidgetPath) -> bool[src]
fn le(&self, other: &WidgetPath) -> bool[src]
fn gt(&self, other: &WidgetPath) -> bool[src]
fn ge(&self, other: &WidgetPath) -> bool[src]
impl StaticType for WidgetPath
fn static_type() -> Type
impl StructuralEq for WidgetPath[src]
impl StructuralPartialEq for WidgetPath[src]
Auto Trait Implementations
impl RefUnwindSafe for WidgetPath
impl !Send for WidgetPath
impl !Sync for WidgetPath
impl Unpin for WidgetPath
impl UnwindSafe for WidgetPath
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<'a, T> ToGlibContainerFromSlice<'a, *const GList> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
type Storage = (Option<List>, Vec<Stash<'a, <T as GlibPtrDefault>::GlibType, T>>)
fn to_glib_none_from_slice(
t: &'a [T]
) -> (*const GList, <T as ToGlibContainerFromSlice<'a, *const GList>>::Storage)
t: &'a [T]
) -> (*const GList, <T as ToGlibContainerFromSlice<'a, *const GList>>::Storage)
fn to_glib_container_from_slice(
_t: &'a [T]
) -> (*const GList, <T as ToGlibContainerFromSlice<'a, *const GList>>::Storage)
_t: &'a [T]
) -> (*const GList, <T as ToGlibContainerFromSlice<'a, *const GList>>::Storage)
fn to_glib_full_from_slice(_t: &[T]) -> *const GList
impl<'a, T> ToGlibContainerFromSlice<'a, *const GPtrArray> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
type Storage = (Option<PtrArray>, Vec<Stash<'a, <T as GlibPtrDefault>::GlibType, T>>)
fn to_glib_none_from_slice(
t: &'a [T]
) -> (*const GPtrArray, <T as ToGlibContainerFromSlice<'a, *const GPtrArray>>::Storage)
t: &'a [T]
) -> (*const GPtrArray, <T as ToGlibContainerFromSlice<'a, *const GPtrArray>>::Storage)
fn to_glib_container_from_slice(
_t: &'a [T]
) -> (*const GPtrArray, <T as ToGlibContainerFromSlice<'a, *const GPtrArray>>::Storage)
_t: &'a [T]
) -> (*const GPtrArray, <T as ToGlibContainerFromSlice<'a, *const GPtrArray>>::Storage)
fn to_glib_full_from_slice(_t: &[T]) -> *const GPtrArray
impl<'a, T> ToGlibContainerFromSlice<'a, *mut GArray> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
type Storage = (Option<Array>, Vec<Stash<'a, <T as GlibPtrDefault>::GlibType, T>>)
fn to_glib_none_from_slice(
t: &'a [T]
) -> (*mut GArray, <T as ToGlibContainerFromSlice<'a, *mut GArray>>::Storage)
t: &'a [T]
) -> (*mut GArray, <T as ToGlibContainerFromSlice<'a, *mut GArray>>::Storage)
fn to_glib_container_from_slice(
t: &'a [T]
) -> (*mut GArray, <T as ToGlibContainerFromSlice<'a, *mut GArray>>::Storage)
t: &'a [T]
) -> (*mut GArray, <T as ToGlibContainerFromSlice<'a, *mut GArray>>::Storage)
fn to_glib_full_from_slice(t: &[T]) -> *mut GArray
impl<'a, T> ToGlibContainerFromSlice<'a, *mut GList> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
type Storage = (Option<List>, Vec<Stash<'a, <T as GlibPtrDefault>::GlibType, T>>)
fn to_glib_none_from_slice(
t: &'a [T]
) -> (*mut GList, <T as ToGlibContainerFromSlice<'a, *mut GList>>::Storage)
t: &'a [T]
) -> (*mut GList, <T as ToGlibContainerFromSlice<'a, *mut GList>>::Storage)
fn to_glib_container_from_slice(
t: &'a [T]
) -> (*mut GList, <T as ToGlibContainerFromSlice<'a, *mut GList>>::Storage)
t: &'a [T]
) -> (*mut GList, <T as ToGlibContainerFromSlice<'a, *mut GList>>::Storage)
fn to_glib_full_from_slice(t: &[T]) -> *mut GList
impl<'a, T> ToGlibContainerFromSlice<'a, *mut GPtrArray> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
type Storage = (Option<PtrArray>, Vec<Stash<'a, <T as GlibPtrDefault>::GlibType, T>>)
fn to_glib_none_from_slice(
t: &'a [T]
) -> (*mut GPtrArray, <T as ToGlibContainerFromSlice<'a, *mut GPtrArray>>::Storage)
t: &'a [T]
) -> (*mut GPtrArray, <T as ToGlibContainerFromSlice<'a, *mut GPtrArray>>::Storage)
fn to_glib_container_from_slice(
t: &'a [T]
) -> (*mut GPtrArray, <T as ToGlibContainerFromSlice<'a, *mut GPtrArray>>::Storage)
t: &'a [T]
) -> (*mut GPtrArray, <T as ToGlibContainerFromSlice<'a, *mut GPtrArray>>::Storage)
fn to_glib_full_from_slice(t: &[T]) -> *mut GPtrArray
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T[src]
fn clone_into(&self, target: &mut T)[src]
impl<T> ToSendValue for T where
T: ToValue + SetValue + Send + ?Sized,
T: ToValue + SetValue + Send + ?Sized,
fn to_send_value(&self) -> SendValue
impl<T> ToString for T where
T: Display + ?Sized, [src]
T: Display + ?Sized,
impl<T> ToValue for T where
T: SetValue + ?Sized,
T: SetValue + ?Sized,
fn to_value(&self) -> Value
fn to_value_type(&self) -> Type
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,