sourceview5/auto/
region.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from
3// from gir-files (https://github.com/gtk-rs/gir-files.git)
4// DO NOT EDIT
5
6use crate::{ffi, RegionIter};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10    #[doc(alias = "GtkSourceRegion")]
11    pub struct Region(Object<ffi::GtkSourceRegion, ffi::GtkSourceRegionClass>);
12
13    match fn {
14        type_ => || ffi::gtk_source_region_get_type(),
15    }
16}
17
18impl Region {
19    pub const NONE: Option<&'static Region> = None;
20
21    #[doc(alias = "gtk_source_region_new")]
22    pub fn new(buffer: &impl IsA<gtk::TextBuffer>) -> Region {
23        assert_initialized_main_thread!();
24        unsafe { from_glib_full(ffi::gtk_source_region_new(buffer.as_ref().to_glib_none().0)) }
25    }
26
27    // rustdoc-stripper-ignore-next
28    /// Creates a new builder-pattern struct instance to construct [`Region`] objects.
29    ///
30    /// This method returns an instance of [`RegionBuilder`](crate::builders::RegionBuilder) which can be used to create [`Region`] objects.
31    pub fn builder() -> RegionBuilder {
32        RegionBuilder::new()
33    }
34}
35
36impl Default for Region {
37    fn default() -> Self {
38        glib::object::Object::new::<Self>()
39    }
40}
41
42// rustdoc-stripper-ignore-next
43/// A [builder-pattern] type to construct [`Region`] objects.
44///
45/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
46#[must_use = "The builder must be built to be used"]
47pub struct RegionBuilder {
48    builder: glib::object::ObjectBuilder<'static, Region>,
49}
50
51impl RegionBuilder {
52    fn new() -> Self {
53        Self {
54            builder: glib::object::Object::builder(),
55        }
56    }
57
58    pub fn buffer(self, buffer: &impl IsA<gtk::TextBuffer>) -> Self {
59        Self {
60            builder: self.builder.property("buffer", buffer.clone().upcast()),
61        }
62    }
63
64    // rustdoc-stripper-ignore-next
65    /// Build the [`Region`].
66    #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
67    pub fn build(self) -> Region {
68        self.builder.build()
69    }
70}
71
72mod sealed {
73    pub trait Sealed {}
74    impl<T: super::IsA<super::Region>> Sealed for T {}
75}
76
77pub trait RegionExt: IsA<Region> + sealed::Sealed + 'static {
78    #[doc(alias = "gtk_source_region_add_region")]
79    fn add_region(&self, region_to_add: Option<&impl IsA<Region>>) {
80        unsafe {
81            ffi::gtk_source_region_add_region(
82                self.as_ref().to_glib_none().0,
83                region_to_add.map(|p| p.as_ref()).to_glib_none().0,
84            );
85        }
86    }
87
88    #[doc(alias = "gtk_source_region_add_subregion")]
89    fn add_subregion(&self, _start: &gtk::TextIter, _end: &gtk::TextIter) {
90        unsafe {
91            ffi::gtk_source_region_add_subregion(
92                self.as_ref().to_glib_none().0,
93                _start.to_glib_none().0,
94                _end.to_glib_none().0,
95            );
96        }
97    }
98
99    #[doc(alias = "gtk_source_region_get_bounds")]
100    #[doc(alias = "get_bounds")]
101    fn bounds(&self) -> Option<(gtk::TextIter, gtk::TextIter)> {
102        unsafe {
103            let mut start = gtk::TextIter::uninitialized();
104            let mut end = gtk::TextIter::uninitialized();
105            let ret = from_glib(ffi::gtk_source_region_get_bounds(
106                self.as_ref().to_glib_none().0,
107                start.to_glib_none_mut().0,
108                end.to_glib_none_mut().0,
109            ));
110            if ret {
111                Some((start, end))
112            } else {
113                None
114            }
115        }
116    }
117
118    #[doc(alias = "gtk_source_region_get_buffer")]
119    #[doc(alias = "get_buffer")]
120    fn buffer(&self) -> Option<gtk::TextBuffer> {
121        unsafe {
122            from_glib_none(ffi::gtk_source_region_get_buffer(
123                self.as_ref().to_glib_none().0,
124            ))
125        }
126    }
127
128    #[doc(alias = "gtk_source_region_get_start_region_iter")]
129    #[doc(alias = "get_start_region_iter")]
130    fn start_region_iter(&self) -> RegionIter {
131        unsafe {
132            let mut iter = RegionIter::uninitialized();
133            ffi::gtk_source_region_get_start_region_iter(
134                self.as_ref().to_glib_none().0,
135                iter.to_glib_none_mut().0,
136            );
137            iter
138        }
139    }
140
141    #[doc(alias = "gtk_source_region_intersect_region")]
142    #[must_use]
143    fn intersect_region(&self, region2: Option<&impl IsA<Region>>) -> Option<Region> {
144        unsafe {
145            from_glib_full(ffi::gtk_source_region_intersect_region(
146                self.as_ref().to_glib_none().0,
147                region2.map(|p| p.as_ref()).to_glib_none().0,
148            ))
149        }
150    }
151
152    #[doc(alias = "gtk_source_region_intersect_subregion")]
153    #[must_use]
154    fn intersect_subregion(&self, _start: &gtk::TextIter, _end: &gtk::TextIter) -> Option<Region> {
155        unsafe {
156            from_glib_full(ffi::gtk_source_region_intersect_subregion(
157                self.as_ref().to_glib_none().0,
158                _start.to_glib_none().0,
159                _end.to_glib_none().0,
160            ))
161        }
162    }
163
164    #[doc(alias = "gtk_source_region_is_empty")]
165    fn is_empty(&self) -> bool {
166        unsafe {
167            from_glib(ffi::gtk_source_region_is_empty(
168                self.as_ref().to_glib_none().0,
169            ))
170        }
171    }
172
173    #[doc(alias = "gtk_source_region_subtract_region")]
174    fn subtract_region(&self, region_to_subtract: Option<&impl IsA<Region>>) {
175        unsafe {
176            ffi::gtk_source_region_subtract_region(
177                self.as_ref().to_glib_none().0,
178                region_to_subtract.map(|p| p.as_ref()).to_glib_none().0,
179            );
180        }
181    }
182
183    #[doc(alias = "gtk_source_region_subtract_subregion")]
184    fn subtract_subregion(&self, _start: &gtk::TextIter, _end: &gtk::TextIter) {
185        unsafe {
186            ffi::gtk_source_region_subtract_subregion(
187                self.as_ref().to_glib_none().0,
188                _start.to_glib_none().0,
189                _end.to_glib_none().0,
190            );
191        }
192    }
193
194    #[doc(alias = "gtk_source_region_to_string")]
195    #[doc(alias = "to_string")]
196    fn to_str(&self) -> Option<glib::GString> {
197        unsafe {
198            from_glib_full(ffi::gtk_source_region_to_string(
199                self.as_ref().to_glib_none().0,
200            ))
201        }
202    }
203}
204
205impl<O: IsA<Region>> RegionExt for O {}