use crate::{ffi, ControlKind, DisplaySideKind, RelationCompare, RelationItemKind, RelationKind};
use glib::{prelude::*, translate::*};
glib::wrapper! {
#[doc(alias = "AsRelation")]
pub struct Relation(Object<ffi::AsRelation, ffi::AsRelationClass>);
match fn {
type_ => || ffi::as_relation_get_type(),
}
}
impl Relation {
pub const NONE: Option<&'static Relation> = None;
#[doc(alias = "as_relation_new")]
pub fn new() -> Relation {
assert_initialized_main_thread!();
unsafe { from_glib_full(ffi::as_relation_new()) }
}
}
impl Default for Relation {
fn default() -> Self {
Self::new()
}
}
pub trait RelationExt: IsA<Relation> + 'static {
#[doc(alias = "as_relation_get_compare")]
#[doc(alias = "get_compare")]
fn compare(&self) -> RelationCompare {
unsafe { from_glib(ffi::as_relation_get_compare(self.as_ref().to_glib_none().0)) }
}
#[doc(alias = "as_relation_get_display_side_kind")]
#[doc(alias = "get_display_side_kind")]
fn display_side_kind(&self) -> DisplaySideKind {
unsafe {
from_glib(ffi::as_relation_get_display_side_kind(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_relation_get_item_kind")]
#[doc(alias = "get_item_kind")]
fn item_kind(&self) -> RelationItemKind {
unsafe {
from_glib(ffi::as_relation_get_item_kind(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_relation_get_kind")]
#[doc(alias = "get_kind")]
fn kind(&self) -> RelationKind {
unsafe { from_glib(ffi::as_relation_get_kind(self.as_ref().to_glib_none().0)) }
}
#[doc(alias = "as_relation_get_value_control_kind")]
#[doc(alias = "get_value_control_kind")]
fn value_control_kind(&self) -> ControlKind {
unsafe {
from_glib(ffi::as_relation_get_value_control_kind(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_relation_get_value_int")]
#[doc(alias = "get_value_int")]
fn value_int(&self) -> i32 {
unsafe { ffi::as_relation_get_value_int(self.as_ref().to_glib_none().0) }
}
#[doc(alias = "as_relation_get_value_internet_bandwidth")]
#[doc(alias = "get_value_internet_bandwidth")]
fn value_internet_bandwidth(&self) -> u32 {
unsafe { ffi::as_relation_get_value_internet_bandwidth(self.as_ref().to_glib_none().0) }
}
#[doc(alias = "as_relation_get_value_px")]
#[doc(alias = "get_value_px")]
fn value_px(&self) -> i32 {
unsafe { ffi::as_relation_get_value_px(self.as_ref().to_glib_none().0) }
}
#[doc(alias = "as_relation_get_value_str")]
#[doc(alias = "get_value_str")]
fn value_str(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::as_relation_get_value_str(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_relation_get_version")]
#[doc(alias = "get_version")]
fn version(&self) -> Option<glib::GString> {
unsafe { from_glib_none(ffi::as_relation_get_version(self.as_ref().to_glib_none().0)) }
}
#[doc(alias = "as_relation_set_compare")]
fn set_compare(&self, compare: RelationCompare) {
unsafe {
ffi::as_relation_set_compare(self.as_ref().to_glib_none().0, compare.into_glib());
}
}
#[doc(alias = "as_relation_set_display_side_kind")]
fn set_display_side_kind(&self, kind: DisplaySideKind) {
unsafe {
ffi::as_relation_set_display_side_kind(
self.as_ref().to_glib_none().0,
kind.into_glib(),
);
}
}
#[doc(alias = "as_relation_set_item_kind")]
fn set_item_kind(&self, kind: RelationItemKind) {
unsafe {
ffi::as_relation_set_item_kind(self.as_ref().to_glib_none().0, kind.into_glib());
}
}
#[doc(alias = "as_relation_set_kind")]
fn set_kind(&self, kind: RelationKind) {
unsafe {
ffi::as_relation_set_kind(self.as_ref().to_glib_none().0, kind.into_glib());
}
}
#[doc(alias = "as_relation_set_value_control_kind")]
fn set_value_control_kind(&self, kind: ControlKind) {
unsafe {
ffi::as_relation_set_value_control_kind(
self.as_ref().to_glib_none().0,
kind.into_glib(),
);
}
}
#[doc(alias = "as_relation_set_value_int")]
fn set_value_int(&self, value: i32) {
unsafe {
ffi::as_relation_set_value_int(self.as_ref().to_glib_none().0, value);
}
}
#[doc(alias = "as_relation_set_value_internet_bandwidth")]
fn set_value_internet_bandwidth(&self, bandwidth_mbitps: u32) {
unsafe {
ffi::as_relation_set_value_internet_bandwidth(
self.as_ref().to_glib_none().0,
bandwidth_mbitps,
);
}
}
#[doc(alias = "as_relation_set_value_px")]
fn set_value_px(&self, logical_px: i32) {
unsafe {
ffi::as_relation_set_value_px(self.as_ref().to_glib_none().0, logical_px);
}
}
#[doc(alias = "as_relation_set_value_str")]
fn set_value_str(&self, value: &str) {
unsafe {
ffi::as_relation_set_value_str(self.as_ref().to_glib_none().0, value.to_glib_none().0);
}
}
#[doc(alias = "as_relation_set_version")]
fn set_version(&self, version: &str) {
unsafe {
ffi::as_relation_set_version(self.as_ref().to_glib_none().0, version.to_glib_none().0);
}
}
#[doc(alias = "as_relation_version_compare")]
fn version_compare(&self, version: &str) -> Result<(), glib::Error> {
unsafe {
let mut error = std::ptr::null_mut();
let is_ok = ffi::as_relation_version_compare(
self.as_ref().to_glib_none().0,
version.to_glib_none().0,
&mut error,
);
debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
if error.is_null() {
Ok(())
} else {
Err(from_glib_full(error))
}
}
}
}
impl<O: IsA<Relation>> RelationExt for O {}