1use crate::ffi;
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9 #[doc(alias = "GIcon")]
10 pub struct Icon(Interface<ffi::GIcon, ffi::GIconIface>);
11
12 match fn {
13 type_ => || ffi::g_icon_get_type(),
14 }
15}
16
17impl Icon {
18 pub const NONE: Option<&'static Icon> = None;
19
20 #[doc(alias = "g_icon_deserialize")]
21 pub fn deserialize(value: &glib::Variant) -> Option<Icon> {
22 unsafe { from_glib_full(ffi::g_icon_deserialize(value.to_glib_none().0)) }
23 }
24
25 #[doc(alias = "g_icon_new_for_string")]
26 #[doc(alias = "new_for_string")]
27 pub fn for_string(str: &str) -> Result<Icon, glib::Error> {
28 unsafe {
29 let mut error = std::ptr::null_mut();
30 let ret = ffi::g_icon_new_for_string(str.to_glib_none().0, &mut error);
31 if error.is_null() {
32 Ok(from_glib_full(ret))
33 } else {
34 Err(from_glib_full(error))
35 }
36 }
37 }
38}
39
40pub trait IconExt: IsA<Icon> + 'static {
41 #[doc(alias = "g_icon_equal")]
42 fn equal(&self, icon2: Option<&impl IsA<Icon>>) -> bool {
43 unsafe {
44 from_glib(ffi::g_icon_equal(
45 self.as_ref().to_glib_none().0,
46 icon2.map(|p| p.as_ref()).to_glib_none().0,
47 ))
48 }
49 }
50
51 #[doc(alias = "g_icon_hash")]
52 fn hash(&self) -> u32 {
53 unsafe {
54 ffi::g_icon_hash(
55 ToGlibPtr::<*mut ffi::GIcon>::to_glib_none(self.as_ref()).0
56 as glib::ffi::gconstpointer,
57 )
58 }
59 }
60
61 #[doc(alias = "g_icon_serialize")]
62 fn serialize(&self) -> Option<glib::Variant> {
63 unsafe { from_glib_full(ffi::g_icon_serialize(self.as_ref().to_glib_none().0)) }
64 }
65
66 #[doc(alias = "g_icon_to_string")]
67 fn to_string(&self) -> Option<glib::GString> {
68 unsafe { from_glib_full(ffi::g_icon_to_string(self.as_ref().to_glib_none().0)) }
69 }
70}
71
72impl<O: IsA<Icon>> IconExt for O {}