sourceview5/auto/
region.rs1use 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 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#[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 #[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: >k::TextIter, _end: >k::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: >k::TextIter, _end: >k::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: >k::TextIter, _end: >k::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 {}