1 use glib::translate::{from_glib, FromGlib, ToGlib, ToGlibPtr, ToGlibPtrMut}; 2 use glib::value::{FromValue, FromValueOptional, SetValue}; 3 use glib::{StaticType, Type, Value}; 4 use gobject_sys; 5 use gtk_sys; 6 use std::fmt; 7 8 #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] 9 pub 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)] 27 impl ToGlib for ResponseType { 28 type GlibType = gtk_sys::GtkResponseType; 29 to_glib(&self) -> gtk_sys::GtkResponseType30 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)] 50 impl FromGlib<gtk_sys::GtkResponseType> for ResponseType { from_glib(value: gtk_sys::GtkResponseType) -> Self51 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 73 impl fmt::Display for ResponseType { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result74 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 97 impl StaticType for ResponseType { static_type() -> Type98 fn static_type() -> Type { 99 unsafe { from_glib(gtk_sys::gtk_response_type_get_type()) } 100 } 101 } 102 103 impl<'a> FromValueOptional<'a> for ResponseType { from_value_optional(value: &Value) -> Option<Self>104 unsafe fn from_value_optional(value: &Value) -> Option<Self> { 105 Some(FromValue::from_value(value)) 106 } 107 } 108 109 impl<'a> FromValue<'a> for ResponseType { from_value(value: &Value) -> Self110 unsafe fn from_value(value: &Value) -> Self { 111 from_glib(gobject_sys::g_value_get_enum(value.to_glib_none().0)) 112 } 113 } 114 115 impl SetValue for ResponseType { set_value(value: &mut Value, this: &Self)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 } 120