nm-rs 0.1.3

Rust bindings for the libnm library.
Documentation
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir
// from gtk-girs (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT

use crate::{ffi,Setting,Ternary};
use glib::{prelude::*,signal::{connect_raw, SignalHandlerId},translate::*};
use std::{boxed::Box as Box_};

glib::wrapper! {
    /// Hostname settings
    ///
    /// ## Properties
    ///
    ///
    /// #### `from-dhcp`
    ///  Whether the system hostname can be determined from DHCP on
    /// this connection.
    ///
    /// When set to [`Ternary::Default`][crate::Ternary::Default], the value from global configuration
    /// is used. If the property doesn't have a value in the global
    /// configuration, NetworkManager assumes the value to be [`Ternary::True`][crate::Ternary::True].
    ///
    /// Readable | Writeable
    ///
    ///
    /// #### `from-dns-lookup`
    ///  Whether the system hostname can be determined from reverse
    /// DNS lookup of addresses on this device.
    ///
    /// When set to [`Ternary::Default`][crate::Ternary::Default], the value from global configuration
    /// is used. If the property doesn't have a value in the global
    /// configuration, NetworkManager assumes the value to be [`Ternary::True`][crate::Ternary::True].
    ///
    /// Readable | Writeable
    ///
    ///
    /// #### `only-from-default`
    ///  If set to [`Ternary::True`][crate::Ternary::True], NetworkManager attempts to get
    /// the hostname via DHCPv4/DHCPv6 or reverse DNS lookup on this
    /// device only when the device has the default route for the given
    /// address family (IPv4/IPv6).
    ///
    /// If set to [`Ternary::False`][crate::Ternary::False], the hostname can be set from this
    /// device even if it doesn't have the default route.
    ///
    /// When set to [`Ternary::Default`][crate::Ternary::Default], the value from global configuration
    /// is used. If the property doesn't have a value in the global
    /// configuration, NetworkManager assumes the value to be [`Ternary::False`][crate::Ternary::False].
    ///
    /// Readable | Writeable
    ///
    ///
    /// #### `priority`
    ///  The relative priority of this connection to determine the
    /// system hostname. A lower numerical value is better (higher
    /// priority).  A connection with higher priority is considered
    /// before connections with lower priority.
    ///
    /// If the value is zero, it can be overridden by a global value
    /// from NetworkManager configuration. If the property doesn't have
    /// a value in the global configuration, the value is assumed to be
    /// 100.
    ///
    /// Negative values have the special effect of excluding other
    /// connections with a greater numerical priority value; so in
    /// presence of at least one negative priority, only connections
    /// with the lowest priority value will be used to determine the
    /// hostname.
    ///
    /// Readable | Writeable
    /// <details><summary><h4>Setting</h4></summary>
    ///
    ///
    /// #### `name`
    ///  The setting's name, which uniquely identifies the setting within the
    /// connection.  Each setting type has a name unique to that type, for
    /// example "ppp" or "802-11-wireless" or "802-3-ethernet".
    ///
    /// Readable
    /// </details>
    ///
    /// # Implements
    ///
    /// [`SettingExt`][trait@crate::prelude::SettingExt]
    #[doc(alias = "NMSettingHostname")]
    pub struct SettingHostname(Object<ffi::NMSettingHostname, ffi::NMSettingHostnameClass>) @extends Setting;

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

impl SettingHostname {
    /// Creates a new #NMSettingHostname object with default values.
    ///
    /// # Returns
    ///
    /// the new empty #NMSettingHostname object
    #[cfg(feature = "v1_42")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
    #[doc(alias = "nm_setting_hostname_new")]
    pub fn new() -> SettingHostname {
        assert_initialized_main_thread!();
        unsafe {
            Setting::from_glib_full(ffi::nm_setting_hostname_new()).unsafe_cast()
        }
    }

            // rustdoc-stripper-ignore-next
            /// Creates a new builder-pattern struct instance to construct [`SettingHostname`] objects.
            ///
            /// This method returns an instance of [`SettingHostnameBuilder`](crate::builders::SettingHostnameBuilder) which can be used to create [`SettingHostname`] objects.
            pub fn builder() -> SettingHostnameBuilder {
                SettingHostnameBuilder::new()
            }
        

    /// Returns the value contained in the #NMSettingHostname:from-dhcp
    /// property.
    ///
    /// # Returns
    ///
    /// the 'from-dhcp' property value
    #[doc(alias = "nm_setting_hostname_get_from_dhcp")]
    #[doc(alias = "get_from_dhcp")]
    #[doc(alias = "from-dhcp")]
    pub fn from_dhcp(&self) -> Ternary {
        unsafe {
            from_glib(ffi::nm_setting_hostname_get_from_dhcp(self.to_glib_none().0))
        }
    }

    /// Returns the value contained in the #NMSettingHostname:from-dns-lookup
    /// property.
    ///
    /// # Returns
    ///
    /// the 'from-dns-lookup' property value
    #[doc(alias = "nm_setting_hostname_get_from_dns_lookup")]
    #[doc(alias = "get_from_dns_lookup")]
    #[doc(alias = "from-dns-lookup")]
    pub fn from_dns_lookup(&self) -> Ternary {
        unsafe {
            from_glib(ffi::nm_setting_hostname_get_from_dns_lookup(self.to_glib_none().0))
        }
    }

    /// Returns the value contained in the #NMSettingHostname:only-from-default
    /// property.
    ///
    /// # Returns
    ///
    /// the 'only-from-default' property value
    #[doc(alias = "nm_setting_hostname_get_only_from_default")]
    #[doc(alias = "get_only_from_default")]
    #[doc(alias = "only-from-default")]
    pub fn only_from_default(&self) -> Ternary {
        unsafe {
            from_glib(ffi::nm_setting_hostname_get_only_from_default(self.to_glib_none().0))
        }
    }

    /// Returns the value contained in the #NMSettingHostname:priority
    /// property.
    ///
    /// # Returns
    ///
    /// the 'priority' property value
    #[doc(alias = "nm_setting_hostname_get_priority")]
    #[doc(alias = "get_priority")]
    pub fn priority(&self) -> i32 {
        unsafe {
            ffi::nm_setting_hostname_get_priority(self.to_glib_none().0)
        }
    }

    /// Whether the system hostname can be determined from DHCP on
    /// this connection.
    ///
    /// When set to [`Ternary::Default`][crate::Ternary::Default], the value from global configuration
    /// is used. If the property doesn't have a value in the global
    /// configuration, NetworkManager assumes the value to be [`Ternary::True`][crate::Ternary::True].
    #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    #[doc(alias = "from-dhcp")]
    pub fn set_from_dhcp(&self, from_dhcp: Ternary) {
        ObjectExt::set_property(self,"from-dhcp", from_dhcp)
    }

    /// Whether the system hostname can be determined from reverse
    /// DNS lookup of addresses on this device.
    ///
    /// When set to [`Ternary::Default`][crate::Ternary::Default], the value from global configuration
    /// is used. If the property doesn't have a value in the global
    /// configuration, NetworkManager assumes the value to be [`Ternary::True`][crate::Ternary::True].
    #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    #[doc(alias = "from-dns-lookup")]
    pub fn set_from_dns_lookup(&self, from_dns_lookup: Ternary) {
        ObjectExt::set_property(self,"from-dns-lookup", from_dns_lookup)
    }

    /// If set to [`Ternary::True`][crate::Ternary::True], NetworkManager attempts to get
    /// the hostname via DHCPv4/DHCPv6 or reverse DNS lookup on this
    /// device only when the device has the default route for the given
    /// address family (IPv4/IPv6).
    ///
    /// If set to [`Ternary::False`][crate::Ternary::False], the hostname can be set from this
    /// device even if it doesn't have the default route.
    ///
    /// When set to [`Ternary::Default`][crate::Ternary::Default], the value from global configuration
    /// is used. If the property doesn't have a value in the global
    /// configuration, NetworkManager assumes the value to be [`Ternary::False`][crate::Ternary::False].
    #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    #[doc(alias = "only-from-default")]
    pub fn set_only_from_default(&self, only_from_default: Ternary) {
        ObjectExt::set_property(self,"only-from-default", only_from_default)
    }

    /// The relative priority of this connection to determine the
    /// system hostname. A lower numerical value is better (higher
    /// priority).  A connection with higher priority is considered
    /// before connections with lower priority.
    ///
    /// If the value is zero, it can be overridden by a global value
    /// from NetworkManager configuration. If the property doesn't have
    /// a value in the global configuration, the value is assumed to be
    /// 100.
    ///
    /// Negative values have the special effect of excluding other
    /// connections with a greater numerical priority value; so in
    /// presence of at least one negative priority, only connections
    /// with the lowest priority value will be used to determine the
    /// hostname.
    #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    pub fn set_priority(&self, priority: i32) {
        ObjectExt::set_property(self,"priority", priority)
    }

    #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    #[doc(alias = "from-dhcp")]
    pub fn connect_from_dhcp_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
        unsafe extern "C" fn notify_from_dhcp_trampoline<F: Fn(&SettingHostname) + 'static>(this: *mut ffi::NMSettingHostname, _param_spec: glib::ffi::gpointer, f: glib::ffi::gpointer) {
            let f: &F = &*(f as *const F);
            f(&from_glib_borrow(this))
        }
        unsafe {
            let f: Box_<F> = Box_::new(f);
            connect_raw(self.as_ptr() as *mut _, c"notify::from-dhcp".as_ptr() as *const _,
                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(notify_from_dhcp_trampoline::<F> as *const ())), Box_::into_raw(f))
        }
    }

    #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    #[doc(alias = "from-dns-lookup")]
    pub fn connect_from_dns_lookup_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
        unsafe extern "C" fn notify_from_dns_lookup_trampoline<F: Fn(&SettingHostname) + 'static>(this: *mut ffi::NMSettingHostname, _param_spec: glib::ffi::gpointer, f: glib::ffi::gpointer) {
            let f: &F = &*(f as *const F);
            f(&from_glib_borrow(this))
        }
        unsafe {
            let f: Box_<F> = Box_::new(f);
            connect_raw(self.as_ptr() as *mut _, c"notify::from-dns-lookup".as_ptr() as *const _,
                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(notify_from_dns_lookup_trampoline::<F> as *const ())), Box_::into_raw(f))
        }
    }

    #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    #[doc(alias = "only-from-default")]
    pub fn connect_only_from_default_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
        unsafe extern "C" fn notify_only_from_default_trampoline<F: Fn(&SettingHostname) + 'static>(this: *mut ffi::NMSettingHostname, _param_spec: glib::ffi::gpointer, f: glib::ffi::gpointer) {
            let f: &F = &*(f as *const F);
            f(&from_glib_borrow(this))
        }
        unsafe {
            let f: Box_<F> = Box_::new(f);
            connect_raw(self.as_ptr() as *mut _, c"notify::only-from-default".as_ptr() as *const _,
                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(notify_only_from_default_trampoline::<F> as *const ())), Box_::into_raw(f))
        }
    }

    #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    #[doc(alias = "priority")]
    pub fn connect_priority_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
        unsafe extern "C" fn notify_priority_trampoline<F: Fn(&SettingHostname) + 'static>(this: *mut ffi::NMSettingHostname, _param_spec: glib::ffi::gpointer, f: glib::ffi::gpointer) {
            let f: &F = &*(f as *const F);
            f(&from_glib_borrow(this))
        }
        unsafe {
            let f: Box_<F> = Box_::new(f);
            connect_raw(self.as_ptr() as *mut _, c"notify::priority".as_ptr() as *const _,
                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(notify_priority_trampoline::<F> as *const ())), Box_::into_raw(f))
        }
    }
}

#[cfg(feature = "v1_42")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
impl Default for SettingHostname {
                     fn default() -> Self {
                         Self::new()
                     }
                 }

// rustdoc-stripper-ignore-next
        /// A [builder-pattern] type to construct [`SettingHostname`] objects.
        ///
        /// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
#[must_use = "The builder must be built to be used"]
pub struct SettingHostnameBuilder {
            builder: glib::object::ObjectBuilder<'static, SettingHostname>,
        }

        impl SettingHostnameBuilder {
        fn new() -> Self {
            Self { builder: glib::object::Object::builder() }
        }

                            /// Whether the system hostname can be determined from DHCP on
                            /// this connection.
                            ///
                            /// When set to [`Ternary::Default`][crate::Ternary::Default], the value from global configuration
                            /// is used. If the property doesn't have a value in the global
                            /// configuration, NetworkManager assumes the value to be [`Ternary::True`][crate::Ternary::True].
                            #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    pub fn from_dhcp(self, from_dhcp: Ternary) -> Self {
                            Self { builder: self.builder.property("from-dhcp", from_dhcp), }
                        }

                            /// Whether the system hostname can be determined from reverse
                            /// DNS lookup of addresses on this device.
                            ///
                            /// When set to [`Ternary::Default`][crate::Ternary::Default], the value from global configuration
                            /// is used. If the property doesn't have a value in the global
                            /// configuration, NetworkManager assumes the value to be [`Ternary::True`][crate::Ternary::True].
                            #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    pub fn from_dns_lookup(self, from_dns_lookup: Ternary) -> Self {
                            Self { builder: self.builder.property("from-dns-lookup", from_dns_lookup), }
                        }

                            /// If set to [`Ternary::True`][crate::Ternary::True], NetworkManager attempts to get
                            /// the hostname via DHCPv4/DHCPv6 or reverse DNS lookup on this
                            /// device only when the device has the default route for the given
                            /// address family (IPv4/IPv6).
                            ///
                            /// If set to [`Ternary::False`][crate::Ternary::False], the hostname can be set from this
                            /// device even if it doesn't have the default route.
                            ///
                            /// When set to [`Ternary::Default`][crate::Ternary::Default], the value from global configuration
                            /// is used. If the property doesn't have a value in the global
                            /// configuration, NetworkManager assumes the value to be [`Ternary::False`][crate::Ternary::False].
                            #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    pub fn only_from_default(self, only_from_default: Ternary) -> Self {
                            Self { builder: self.builder.property("only-from-default", only_from_default), }
                        }

                            /// The relative priority of this connection to determine the
                            /// system hostname. A lower numerical value is better (higher
                            /// priority).  A connection with higher priority is considered
                            /// before connections with lower priority.
                            ///
                            /// If the value is zero, it can be overridden by a global value
                            /// from NetworkManager configuration. If the property doesn't have
                            /// a value in the global configuration, the value is assumed to be
                            /// 100.
                            ///
                            /// Negative values have the special effect of excluding other
                            /// connections with a greater numerical priority value; so in
                            /// presence of at least one negative priority, only connections
                            /// with the lowest priority value will be used to determine the
                            /// hostname.
                            #[cfg(feature = "v1_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
    pub fn priority(self, priority: i32) -> Self {
                            Self { builder: self.builder.property("priority", priority), }
                        }

    // rustdoc-stripper-ignore-next
    /// Build the [`SettingHostname`].
    #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
    pub fn build(self) -> SettingHostname {
assert_initialized_main_thread!();
    self.builder.build() }
}