use glib::translate::{ToGlib, ToGlibPtr};
use gtk;
use gtk::{IsA, PackType, Value, Widget};
use gtk_sys;
pub trait BoxExtManual {
fn set_child_expand<T: IsA<Widget>>(&self, child: &T, expand: bool);
fn set_child_fill<T: IsA<Widget>>(&self, child: &T, fill: bool);
fn set_child_pack_type<T: IsA<Widget>>(&self, child: &T, pack_type: PackType);
fn set_child_padding<T: IsA<Widget>>(&self, child: &T, padding: u32);
fn set_child_position<T: IsA<Widget>>(&self, child: &T, position: i32);
}
impl BoxExtManual for gtk::Box {
fn set_child_expand<T: IsA<Widget>>(&self, child: &T, expand: bool) {
let expand = Value::from(&expand);
unsafe { gtk_sys::gtk_container_child_set_property(self.to_glib_none().0, child.to_glib_none().0,
"expand".to_glib_none().0, expand.to_glib_none().0) }
}
fn set_child_fill<T: IsA<Widget>>(&self, child: &T, fill: bool) {
let fill = Value::from(&fill);
unsafe { gtk_sys::gtk_container_child_set_property(self.to_glib_none().0, child.to_glib_none().0,
"fill".to_glib_none().0, fill.to_glib_none().0) }
}
fn set_child_pack_type<T: IsA<Widget>>(&self, child: &T, pack_type: PackType) {
let pack_type = Value::from(&(pack_type.to_glib() as i32));
unsafe { gtk_sys::gtk_container_child_set_property(self.to_glib_none().0, child.to_glib_none().0,
"pack-type".to_glib_none().0, pack_type.to_glib_none().0) }
}
fn set_child_padding<T: IsA<Widget>>(&self, child: &T, padding: u32) {
let padding = Value::from(&padding);
unsafe { gtk_sys::gtk_container_child_set_property(self.to_glib_none().0, child.to_glib_none().0,
"padding".to_glib_none().0, padding.to_glib_none().0) }
}
fn set_child_position<T: IsA<Widget>>(&self, child: &T, position: i32) {
let position = Value::from(&position);
unsafe { gtk_sys::gtk_container_child_set_property(self.to_glib_none().0, child.to_glib_none().0,
"position".to_glib_none().0, position.to_glib_none().0) }
}
}