1use crate::{Buffer, GutterLines, GutterRendererAlignmentMode, View, ffi};
7use glib::{
8 object::ObjectType as _,
9 prelude::*,
10 signal::{SignalHandlerId, connect_raw},
11 translate::*,
12};
13use std::boxed::Box as Box_;
14
15glib::wrapper! {
16 #[doc(alias = "GtkSourceGutterRenderer")]
17 pub struct GutterRenderer(Object<ffi::GtkSourceGutterRenderer, ffi::GtkSourceGutterRendererClass>) @extends gtk::Widget, @implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget;
18
19 match fn {
20 type_ => || ffi::gtk_source_gutter_renderer_get_type(),
21 }
22}
23
24impl GutterRenderer {
25 pub const NONE: Option<&'static GutterRenderer> = None;
26}
27
28pub trait GutterRendererExt: IsA<GutterRenderer> + 'static {
29 #[doc(alias = "gtk_source_gutter_renderer_activate")]
30 fn activate(
31 &self,
32 iter: >k::TextIter,
33 area: &gdk::Rectangle,
34 button: u32,
35 state: gdk::ModifierType,
36 n_presses: i32,
37 ) {
38 unsafe {
39 ffi::gtk_source_gutter_renderer_activate(
40 self.as_ref().to_glib_none().0,
41 iter.to_glib_none().0,
42 area.to_glib_none().0,
43 button,
44 state.into_glib(),
45 n_presses,
46 );
47 }
48 }
49
50 #[doc(alias = "gtk_source_gutter_renderer_align_cell")]
51 fn align_cell(&self, line: u32, width: f32, height: f32) -> (f32, f32) {
52 unsafe {
53 let mut x = std::mem::MaybeUninit::uninit();
54 let mut y = std::mem::MaybeUninit::uninit();
55 ffi::gtk_source_gutter_renderer_align_cell(
56 self.as_ref().to_glib_none().0,
57 line,
58 width,
59 height,
60 x.as_mut_ptr(),
61 y.as_mut_ptr(),
62 );
63 (x.assume_init(), y.assume_init())
64 }
65 }
66
67 #[doc(alias = "gtk_source_gutter_renderer_get_alignment_mode")]
68 #[doc(alias = "get_alignment_mode")]
69 #[doc(alias = "alignment-mode")]
70 fn alignment_mode(&self) -> GutterRendererAlignmentMode {
71 unsafe {
72 from_glib(ffi::gtk_source_gutter_renderer_get_alignment_mode(
73 self.as_ref().to_glib_none().0,
74 ))
75 }
76 }
77
78 #[doc(alias = "gtk_source_gutter_renderer_get_buffer")]
79 #[doc(alias = "get_buffer")]
80 fn buffer(&self) -> Option<Buffer> {
81 unsafe {
82 from_glib_none(ffi::gtk_source_gutter_renderer_get_buffer(
83 self.as_ref().to_glib_none().0,
84 ))
85 }
86 }
87
88 #[doc(alias = "gtk_source_gutter_renderer_get_view")]
89 #[doc(alias = "get_view")]
90 fn view(&self) -> View {
91 unsafe {
92 from_glib_none(ffi::gtk_source_gutter_renderer_get_view(
93 self.as_ref().to_glib_none().0,
94 ))
95 }
96 }
97
98 #[doc(alias = "gtk_source_gutter_renderer_get_xalign")]
99 #[doc(alias = "get_xalign")]
100 fn xalign(&self) -> f32 {
101 unsafe { ffi::gtk_source_gutter_renderer_get_xalign(self.as_ref().to_glib_none().0) }
102 }
103
104 #[doc(alias = "gtk_source_gutter_renderer_get_xpad")]
105 #[doc(alias = "get_xpad")]
106 fn xpad(&self) -> i32 {
107 unsafe { ffi::gtk_source_gutter_renderer_get_xpad(self.as_ref().to_glib_none().0) }
108 }
109
110 #[doc(alias = "gtk_source_gutter_renderer_get_yalign")]
111 #[doc(alias = "get_yalign")]
112 fn yalign(&self) -> f32 {
113 unsafe { ffi::gtk_source_gutter_renderer_get_yalign(self.as_ref().to_glib_none().0) }
114 }
115
116 #[doc(alias = "gtk_source_gutter_renderer_get_ypad")]
117 #[doc(alias = "get_ypad")]
118 fn ypad(&self) -> i32 {
119 unsafe { ffi::gtk_source_gutter_renderer_get_ypad(self.as_ref().to_glib_none().0) }
120 }
121
122 #[doc(alias = "gtk_source_gutter_renderer_query_activatable")]
123 fn query_activatable(&self, iter: >k::TextIter, area: &gdk::Rectangle) -> bool {
124 unsafe {
125 from_glib(ffi::gtk_source_gutter_renderer_query_activatable(
126 self.as_ref().to_glib_none().0,
127 iter.to_glib_none().0,
128 area.to_glib_none().0,
129 ))
130 }
131 }
132
133 #[doc(alias = "gtk_source_gutter_renderer_set_alignment_mode")]
134 #[doc(alias = "alignment-mode")]
135 fn set_alignment_mode(&self, mode: GutterRendererAlignmentMode) {
136 unsafe {
137 ffi::gtk_source_gutter_renderer_set_alignment_mode(
138 self.as_ref().to_glib_none().0,
139 mode.into_glib(),
140 );
141 }
142 }
143
144 #[doc(alias = "gtk_source_gutter_renderer_set_xalign")]
145 #[doc(alias = "xalign")]
146 fn set_xalign(&self, xalign: f32) {
147 unsafe {
148 ffi::gtk_source_gutter_renderer_set_xalign(self.as_ref().to_glib_none().0, xalign);
149 }
150 }
151
152 #[doc(alias = "gtk_source_gutter_renderer_set_xpad")]
153 #[doc(alias = "xpad")]
154 fn set_xpad(&self, xpad: i32) {
155 unsafe {
156 ffi::gtk_source_gutter_renderer_set_xpad(self.as_ref().to_glib_none().0, xpad);
157 }
158 }
159
160 #[doc(alias = "gtk_source_gutter_renderer_set_yalign")]
161 #[doc(alias = "yalign")]
162 fn set_yalign(&self, yalign: f32) {
163 unsafe {
164 ffi::gtk_source_gutter_renderer_set_yalign(self.as_ref().to_glib_none().0, yalign);
165 }
166 }
167
168 #[doc(alias = "gtk_source_gutter_renderer_set_ypad")]
169 #[doc(alias = "ypad")]
170 fn set_ypad(&self, ypad: i32) {
171 unsafe {
172 ffi::gtk_source_gutter_renderer_set_ypad(self.as_ref().to_glib_none().0, ypad);
173 }
174 }
175
176 fn lines(&self) -> Option<GutterLines> {
177 ObjectExt::property(self.as_ref(), "lines")
178 }
179
180 #[doc(alias = "activate")]
181 fn connect_activate<
182 F: Fn(&Self, >k::TextIter, &gdk::Rectangle, u32, gdk::ModifierType, i32) + 'static,
183 >(
184 &self,
185 f: F,
186 ) -> SignalHandlerId {
187 unsafe extern "C" fn activate_trampoline<
188 P: IsA<GutterRenderer>,
189 F: Fn(&P, >k::TextIter, &gdk::Rectangle, u32, gdk::ModifierType, i32) + 'static,
190 >(
191 this: *mut ffi::GtkSourceGutterRenderer,
192 iter: *mut gtk::ffi::GtkTextIter,
193 area: *mut gdk::ffi::GdkRectangle,
194 button: std::ffi::c_uint,
195 state: gdk::ffi::GdkModifierType,
196 n_presses: std::ffi::c_int,
197 f: glib::ffi::gpointer,
198 ) {
199 unsafe {
200 let f: &F = &*(f as *const F);
201 f(
202 GutterRenderer::from_glib_borrow(this).unsafe_cast_ref(),
203 &from_glib_borrow(iter),
204 &from_glib_borrow(area),
205 button,
206 from_glib(state),
207 n_presses,
208 )
209 }
210 }
211 unsafe {
212 let f: Box_<F> = Box_::new(f);
213 connect_raw(
214 self.as_ptr() as *mut _,
215 c"activate".as_ptr(),
216 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
217 activate_trampoline::<Self, F> as *const (),
218 )),
219 Box_::into_raw(f),
220 )
221 }
222 }
223
224 #[doc(alias = "query-activatable")]
225 fn connect_query_activatable<
226 F: Fn(&Self, >k::TextIter, &gdk::Rectangle) -> bool + 'static,
227 >(
228 &self,
229 f: F,
230 ) -> SignalHandlerId {
231 unsafe extern "C" fn query_activatable_trampoline<
232 P: IsA<GutterRenderer>,
233 F: Fn(&P, >k::TextIter, &gdk::Rectangle) -> bool + 'static,
234 >(
235 this: *mut ffi::GtkSourceGutterRenderer,
236 iter: *mut gtk::ffi::GtkTextIter,
237 area: *mut gdk::ffi::GdkRectangle,
238 f: glib::ffi::gpointer,
239 ) -> glib::ffi::gboolean {
240 unsafe {
241 let f: &F = &*(f as *const F);
242 f(
243 GutterRenderer::from_glib_borrow(this).unsafe_cast_ref(),
244 &from_glib_borrow(iter),
245 &from_glib_borrow(area),
246 )
247 .into_glib()
248 }
249 }
250 unsafe {
251 let f: Box_<F> = Box_::new(f);
252 connect_raw(
253 self.as_ptr() as *mut _,
254 c"query-activatable".as_ptr(),
255 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
256 query_activatable_trampoline::<Self, F> as *const (),
257 )),
258 Box_::into_raw(f),
259 )
260 }
261 }
262
263 #[doc(alias = "query-data")]
264 fn connect_query_data<F: Fn(&Self, &glib::Object, u32) + 'static>(
265 &self,
266 f: F,
267 ) -> SignalHandlerId {
268 unsafe extern "C" fn query_data_trampoline<
269 P: IsA<GutterRenderer>,
270 F: Fn(&P, &glib::Object, u32) + 'static,
271 >(
272 this: *mut ffi::GtkSourceGutterRenderer,
273 object: *mut glib::gobject_ffi::GObject,
274 p0: std::ffi::c_uint,
275 f: glib::ffi::gpointer,
276 ) {
277 unsafe {
278 let f: &F = &*(f as *const F);
279 f(
280 GutterRenderer::from_glib_borrow(this).unsafe_cast_ref(),
281 &from_glib_borrow(object),
282 p0,
283 )
284 }
285 }
286 unsafe {
287 let f: Box_<F> = Box_::new(f);
288 connect_raw(
289 self.as_ptr() as *mut _,
290 c"query-data".as_ptr(),
291 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
292 query_data_trampoline::<Self, F> as *const (),
293 )),
294 Box_::into_raw(f),
295 )
296 }
297 }
298
299 #[doc(alias = "alignment-mode")]
300 fn connect_alignment_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
301 unsafe extern "C" fn notify_alignment_mode_trampoline<
302 P: IsA<GutterRenderer>,
303 F: Fn(&P) + 'static,
304 >(
305 this: *mut ffi::GtkSourceGutterRenderer,
306 _param_spec: glib::ffi::gpointer,
307 f: glib::ffi::gpointer,
308 ) {
309 unsafe {
310 let f: &F = &*(f as *const F);
311 f(GutterRenderer::from_glib_borrow(this).unsafe_cast_ref())
312 }
313 }
314 unsafe {
315 let f: Box_<F> = Box_::new(f);
316 connect_raw(
317 self.as_ptr() as *mut _,
318 c"notify::alignment-mode".as_ptr(),
319 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
320 notify_alignment_mode_trampoline::<Self, F> as *const (),
321 )),
322 Box_::into_raw(f),
323 )
324 }
325 }
326
327 #[doc(alias = "lines")]
328 fn connect_lines_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
329 unsafe extern "C" fn notify_lines_trampoline<
330 P: IsA<GutterRenderer>,
331 F: Fn(&P) + 'static,
332 >(
333 this: *mut ffi::GtkSourceGutterRenderer,
334 _param_spec: glib::ffi::gpointer,
335 f: glib::ffi::gpointer,
336 ) {
337 unsafe {
338 let f: &F = &*(f as *const F);
339 f(GutterRenderer::from_glib_borrow(this).unsafe_cast_ref())
340 }
341 }
342 unsafe {
343 let f: Box_<F> = Box_::new(f);
344 connect_raw(
345 self.as_ptr() as *mut _,
346 c"notify::lines".as_ptr(),
347 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
348 notify_lines_trampoline::<Self, F> as *const (),
349 )),
350 Box_::into_raw(f),
351 )
352 }
353 }
354
355 #[doc(alias = "view")]
356 fn connect_view_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
357 unsafe extern "C" fn notify_view_trampoline<P: IsA<GutterRenderer>, F: Fn(&P) + 'static>(
358 this: *mut ffi::GtkSourceGutterRenderer,
359 _param_spec: glib::ffi::gpointer,
360 f: glib::ffi::gpointer,
361 ) {
362 unsafe {
363 let f: &F = &*(f as *const F);
364 f(GutterRenderer::from_glib_borrow(this).unsafe_cast_ref())
365 }
366 }
367 unsafe {
368 let f: Box_<F> = Box_::new(f);
369 connect_raw(
370 self.as_ptr() as *mut _,
371 c"notify::view".as_ptr(),
372 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
373 notify_view_trampoline::<Self, F> as *const (),
374 )),
375 Box_::into_raw(f),
376 )
377 }
378 }
379
380 #[doc(alias = "xalign")]
381 fn connect_xalign_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
382 unsafe extern "C" fn notify_xalign_trampoline<
383 P: IsA<GutterRenderer>,
384 F: Fn(&P) + 'static,
385 >(
386 this: *mut ffi::GtkSourceGutterRenderer,
387 _param_spec: glib::ffi::gpointer,
388 f: glib::ffi::gpointer,
389 ) {
390 unsafe {
391 let f: &F = &*(f as *const F);
392 f(GutterRenderer::from_glib_borrow(this).unsafe_cast_ref())
393 }
394 }
395 unsafe {
396 let f: Box_<F> = Box_::new(f);
397 connect_raw(
398 self.as_ptr() as *mut _,
399 c"notify::xalign".as_ptr(),
400 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
401 notify_xalign_trampoline::<Self, F> as *const (),
402 )),
403 Box_::into_raw(f),
404 )
405 }
406 }
407
408 #[doc(alias = "xpad")]
409 fn connect_xpad_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
410 unsafe extern "C" fn notify_xpad_trampoline<P: IsA<GutterRenderer>, F: Fn(&P) + 'static>(
411 this: *mut ffi::GtkSourceGutterRenderer,
412 _param_spec: glib::ffi::gpointer,
413 f: glib::ffi::gpointer,
414 ) {
415 unsafe {
416 let f: &F = &*(f as *const F);
417 f(GutterRenderer::from_glib_borrow(this).unsafe_cast_ref())
418 }
419 }
420 unsafe {
421 let f: Box_<F> = Box_::new(f);
422 connect_raw(
423 self.as_ptr() as *mut _,
424 c"notify::xpad".as_ptr(),
425 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
426 notify_xpad_trampoline::<Self, F> as *const (),
427 )),
428 Box_::into_raw(f),
429 )
430 }
431 }
432
433 #[doc(alias = "yalign")]
434 fn connect_yalign_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
435 unsafe extern "C" fn notify_yalign_trampoline<
436 P: IsA<GutterRenderer>,
437 F: Fn(&P) + 'static,
438 >(
439 this: *mut ffi::GtkSourceGutterRenderer,
440 _param_spec: glib::ffi::gpointer,
441 f: glib::ffi::gpointer,
442 ) {
443 unsafe {
444 let f: &F = &*(f as *const F);
445 f(GutterRenderer::from_glib_borrow(this).unsafe_cast_ref())
446 }
447 }
448 unsafe {
449 let f: Box_<F> = Box_::new(f);
450 connect_raw(
451 self.as_ptr() as *mut _,
452 c"notify::yalign".as_ptr(),
453 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
454 notify_yalign_trampoline::<Self, F> as *const (),
455 )),
456 Box_::into_raw(f),
457 )
458 }
459 }
460
461 #[doc(alias = "ypad")]
462 fn connect_ypad_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
463 unsafe extern "C" fn notify_ypad_trampoline<P: IsA<GutterRenderer>, F: Fn(&P) + 'static>(
464 this: *mut ffi::GtkSourceGutterRenderer,
465 _param_spec: glib::ffi::gpointer,
466 f: glib::ffi::gpointer,
467 ) {
468 unsafe {
469 let f: &F = &*(f as *const F);
470 f(GutterRenderer::from_glib_borrow(this).unsafe_cast_ref())
471 }
472 }
473 unsafe {
474 let f: Box_<F> = Box_::new(f);
475 connect_raw(
476 self.as_ptr() as *mut _,
477 c"notify::ypad".as_ptr(),
478 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
479 notify_ypad_trampoline::<Self, F> as *const (),
480 )),
481 Box_::into_raw(f),
482 )
483 }
484 }
485}
486
487impl<O: IsA<GutterRenderer>> GutterRendererExt for O {}