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
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
use crate::Initable;
use glib::{
prelude::*,
signal::{connect_raw, SignalHandlerId},
translate::*,
};
use std::{boxed::Box as Box_, fmt, mem::transmute};
glib::wrapper! {
/// [`DebugController`][crate::DebugController] is an interface to expose control of debugging features and
/// debug output.
///
/// It is implemented on Linux using [`DebugControllerDBus`][crate::DebugControllerDBus], which exposes a D-Bus
/// interface to allow authenticated peers to control debug features in this
/// process.
///
/// Whether debug output is enabled is exposed as
/// [`debug-enabled`][struct@crate::DebugController#debug-enabled]. This controls `g_log_set_debug_enabled()` by
/// default. Application code may connect to the [`notify`][struct@crate::glib::Object#notify] signal for it
/// to control other parts of its debug infrastructure as necessary.
///
/// If your application or service is using the default GLib log writer function,
/// creating one of the built-in implementations of [`DebugController`][crate::DebugController] should be
/// all that’s needed to dynamically enable or disable debug output.
///
/// ## Properties
///
///
/// #### `debug-enabled`
/// [`true`] if debug output should be exposed (for example by forwarding it to
/// the journal), [`false`] otherwise.
///
/// Readable | Writeable
///
/// # Implements
///
/// [`DebugControllerExt`][trait@crate::prelude::DebugControllerExt], [`InitableExt`][trait@crate::prelude::InitableExt]
#[doc(alias = "GDebugController")]
pub struct DebugController(Interface<ffi::GDebugController, ffi::GDebugControllerInterface>) @requires Initable;
match fn {
type_ => || ffi::g_debug_controller_get_type(),
}
}
impl DebugController {
pub const NONE: Option<&'static DebugController> = None;
}
/// Trait containing all [`struct@DebugController`] methods.
///
/// # Implementors
///
/// [`DebugControllerDBus`][struct@crate::DebugControllerDBus], [`DebugController`][struct@crate::DebugController]
pub trait DebugControllerExt: 'static {
/// Get the value of [`debug-enabled`][struct@crate::DebugController#debug-enabled].
///
/// # Returns
///
/// [`true`] if debug output should be exposed, [`false`] otherwise
#[doc(alias = "g_debug_controller_get_debug_enabled")]
#[doc(alias = "get_debug_enabled")]
fn is_debug_enabled(&self) -> bool;
/// Set the value of [`debug-enabled`][struct@crate::DebugController#debug-enabled].
/// ## `debug_enabled`
/// [`true`] if debug output should be exposed, [`false`] otherwise
#[doc(alias = "g_debug_controller_set_debug_enabled")]
fn set_debug_enabled(&self, debug_enabled: bool);
#[cfg(any(feature = "v2_72", feature = "dox"))]
#[cfg_attr(feature = "dox", doc(cfg(feature = "v2_72")))]
#[doc(alias = "debug-enabled")]
fn connect_debug_enabled_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
}
impl<O: IsA<DebugController>> DebugControllerExt for O {
fn is_debug_enabled(&self) -> bool {
unsafe {
from_glib(ffi::g_debug_controller_get_debug_enabled(
self.as_ref().to_glib_none().0,
))
}
}
fn set_debug_enabled(&self, debug_enabled: bool) {
unsafe {
ffi::g_debug_controller_set_debug_enabled(
self.as_ref().to_glib_none().0,
debug_enabled.into_glib(),
);
}
}
#[cfg(any(feature = "v2_72", feature = "dox"))]
#[cfg_attr(feature = "dox", doc(cfg(feature = "v2_72")))]
fn connect_debug_enabled_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_debug_enabled_trampoline<
P: IsA<DebugController>,
F: Fn(&P) + 'static,
>(
this: *mut ffi::GDebugController,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
let f: &F = &*(f as *const F);
f(DebugController::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::debug-enabled\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_debug_enabled_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
}
impl fmt::Display for DebugController {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("DebugController")
}
}