gtk/
response_type.rs

1use glib::translate::{from_glib, FromGlib, ToGlib, ToGlibPtr, ToGlibPtrMut};
2use glib::value::{FromValue, FromValueOptional, SetValue};
3use glib::{StaticType, Type, Value};
4use gobject_sys;
5use gtk_sys;
6use std::fmt;
7
8#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
9pub enum ResponseType {
10    None,
11    Reject,
12    Accept,
13    DeleteEvent,
14    Ok,
15    Cancel,
16    Close,
17    Yes,
18    No,
19    Apply,
20    Help,
21    Other(u16),
22    #[doc(hidden)]
23    __Unknown(i32),
24}
25
26#[doc(hidden)]
27impl ToGlib for ResponseType {
28    type GlibType = gtk_sys::GtkResponseType;
29
30    fn to_glib(&self) -> gtk_sys::GtkResponseType {
31        match *self {
32            ResponseType::None => gtk_sys::GTK_RESPONSE_NONE,
33            ResponseType::Reject => gtk_sys::GTK_RESPONSE_REJECT,
34            ResponseType::Accept => gtk_sys::GTK_RESPONSE_ACCEPT,
35            ResponseType::DeleteEvent => gtk_sys::GTK_RESPONSE_DELETE_EVENT,
36            ResponseType::Ok => gtk_sys::GTK_RESPONSE_OK,
37            ResponseType::Cancel => gtk_sys::GTK_RESPONSE_CANCEL,
38            ResponseType::Close => gtk_sys::GTK_RESPONSE_CLOSE,
39            ResponseType::Yes => gtk_sys::GTK_RESPONSE_YES,
40            ResponseType::No => gtk_sys::GTK_RESPONSE_NO,
41            ResponseType::Apply => gtk_sys::GTK_RESPONSE_APPLY,
42            ResponseType::Help => gtk_sys::GTK_RESPONSE_HELP,
43            ResponseType::Other(value) => value as gtk_sys::GtkResponseType,
44            ResponseType::__Unknown(value) => value,
45        }
46    }
47}
48
49#[doc(hidden)]
50impl FromGlib<gtk_sys::GtkResponseType> for ResponseType {
51    fn from_glib(value: gtk_sys::GtkResponseType) -> Self {
52        skip_assert_initialized!();
53        match value {
54            -1 => ResponseType::None,
55            -2 => ResponseType::Reject,
56            -3 => ResponseType::Accept,
57            -4 => ResponseType::DeleteEvent,
58            -5 => ResponseType::Ok,
59            -6 => ResponseType::Cancel,
60            -7 => ResponseType::Close,
61            -8 => ResponseType::Yes,
62            -9 => ResponseType::No,
63            -10 => ResponseType::Apply,
64            -11 => ResponseType::Help,
65            value if value >= 0 && value <= ::std::u16::MAX as i32 => {
66                ResponseType::Other(value as u16)
67            }
68            value => ResponseType::__Unknown(value),
69        }
70    }
71}
72
73impl fmt::Display for ResponseType {
74    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
75        write!(
76            f,
77            "ResponseType::{}",
78            match *self {
79                ResponseType::None => "None",
80                ResponseType::Reject => "Reject",
81                ResponseType::Accept => "Accept",
82                ResponseType::DeleteEvent => "DeleteEvent",
83                ResponseType::Ok => "Ok",
84                ResponseType::Cancel => "Cancel",
85                ResponseType::Close => "Close",
86                ResponseType::Yes => "Yes",
87                ResponseType::No => "No",
88                ResponseType::Apply => "Apply",
89                ResponseType::Help => "Help",
90                ResponseType::Other(_) => "Other",
91                ResponseType::__Unknown(_) => "Unknown",
92            }
93        )
94    }
95}
96
97impl StaticType for ResponseType {
98    fn static_type() -> Type {
99        unsafe { from_glib(gtk_sys::gtk_response_type_get_type()) }
100    }
101}
102
103impl<'a> FromValueOptional<'a> for ResponseType {
104    unsafe fn from_value_optional(value: &Value) -> Option<Self> {
105        Some(FromValue::from_value(value))
106    }
107}
108
109impl<'a> FromValue<'a> for ResponseType {
110    unsafe fn from_value(value: &Value) -> Self {
111        from_glib(gobject_sys::g_value_get_enum(value.to_glib_none().0))
112    }
113}
114
115impl SetValue for ResponseType {
116    unsafe fn set_value(value: &mut Value, this: &Self) {
117        gobject_sys::g_value_set_enum(value.to_glib_none_mut().0, this.to_glib())
118    }
119}