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
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from
// from gir-files (https://github.com/gtk-rs/gir-files.git)
// DO NOT EDIT
#![allow(deprecated)]

use crate::Swipeable;
use glib::{prelude::*, translate::*};
use std::fmt;

glib::wrapper! {
    /// An object for syncing swipeable widgets.
    ///
    /// The [`SwipeGroup`][crate::SwipeGroup] object can be used to sync multiple swipeable widgets
    /// that implement the [`Swipeable`][crate::Swipeable] interface, such as [`Carousel`][crate::Carousel], so
    /// that animating one of them also animates all the other widgets in the group.
    ///
    /// This can be useful for syncing widgets between a window's titlebar and
    /// content area.
    ///
    /// ## HdySwipeGroup as GtkBuildable
    ///
    /// [`SwipeGroup`][crate::SwipeGroup] can be created in an UI definition. The list of swipeable
    /// widgets is specified with a <swipeables> element containing multiple
    /// <swipeable> elements with their ”name” attribute specifying the id of
    /// the widgets.
    ///
    /// ```xml
    /// <object class="HdySwipeGroup">
    ///   <swipeables>
    ///     <swipeable name="carousel1"/>
    ///     <swipeable name="carousel2"/>
    ///   </swipeables>
    /// </object>
    /// ```
    ///
    /// [`SwipeGroup`][crate::SwipeGroup] has been deprecated, [`Window`][crate::Window] and
    /// [`ApplicationWindow`][crate::ApplicationWindow] allow using a single leaflet for both content and
    /// header bar, without the need to sync them.
    ///
    /// # Implements
    ///
    /// [`trait@glib::ObjectExt`], [`trait@gtk::prelude::BuildableExt`]
    #[doc(alias = "HdySwipeGroup")]
    pub struct SwipeGroup(Object<ffi::HdySwipeGroup, ffi::HdySwipeGroupClass>) @implements gtk::Buildable;

    match fn {
        type_ => || ffi::hdy_swipe_group_get_type(),
    }
}

impl SwipeGroup {
    /// Creates a new [`SwipeGroup`][crate::SwipeGroup].
    ///
    /// # Deprecated since 1.4
    ///
    ///
    /// # Returns
    ///
    /// the newly created [`SwipeGroup`][crate::SwipeGroup]
    #[cfg_attr(feature = "v1_4", deprecated = "Since 1.4")]
    #[allow(deprecated)]
    #[doc(alias = "hdy_swipe_group_new")]
    pub fn new() -> SwipeGroup {
        assert_initialized_main_thread!();
        unsafe { from_glib_full(ffi::hdy_swipe_group_new()) }
    }

    /// Adds a swipeable to @self.
    ///
    /// When the widget is destroyed or no longer referenced elsewhere, it will be
    /// removed from the swipe group.
    ///
    /// # Deprecated since 1.4
    ///
    /// ## `swipeable`
    /// the [`Swipeable`][crate::Swipeable] to add
    #[cfg_attr(feature = "v1_4", deprecated = "Since 1.4")]
    #[allow(deprecated)]
    #[doc(alias = "hdy_swipe_group_add_swipeable")]
    pub fn add_swipeable(&self, swipeable: &impl IsA<Swipeable>) {
        unsafe {
            ffi::hdy_swipe_group_add_swipeable(
                self.to_glib_none().0,
                swipeable.as_ref().to_glib_none().0,
            );
        }
    }

    /// Gets the list of swipeables associated with @self.
    ///
    /// # Deprecated since 1.4
    ///
    ///
    /// # Returns
    ///
    /// a list of swipeables
    #[cfg_attr(feature = "v1_4", deprecated = "Since 1.4")]
    #[allow(deprecated)]
    #[doc(alias = "hdy_swipe_group_get_swipeables")]
    #[doc(alias = "get_swipeables")]
    pub fn swipeables(&self) -> Vec<Swipeable> {
        unsafe {
            FromGlibPtrContainer::from_glib_none(ffi::hdy_swipe_group_get_swipeables(
                self.to_glib_none().0,
            ))
        }
    }

    /// Removes a widget from a [`SwipeGroup`][crate::SwipeGroup].
    ///
    /// # Deprecated since 1.4
    ///
    /// ## `swipeable`
    /// the [`Swipeable`][crate::Swipeable] to remove
    #[cfg_attr(feature = "v1_4", deprecated = "Since 1.4")]
    #[allow(deprecated)]
    #[doc(alias = "hdy_swipe_group_remove_swipeable")]
    pub fn remove_swipeable(&self, swipeable: &impl IsA<Swipeable>) {
        unsafe {
            ffi::hdy_swipe_group_remove_swipeable(
                self.to_glib_none().0,
                swipeable.as_ref().to_glib_none().0,
            );
        }
    }
}

impl Default for SwipeGroup {
    fn default() -> Self {
        Self::new()
    }
}

impl fmt::Display for SwipeGroup {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        f.write_str("SwipeGroup")
    }
}