1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
#[macro_export] macro_rules! impl_drop_for_web_node { ($name:ident) => { impl Drop for $name { fn drop(&mut self) { self.widget .parent_node() .unwrap() .remove_child(&self.widget) .unwrap(); } } }; } #[macro_export] macro_rules! generate_on_func { ($name:ident $event:literal) => { #[allow(non_snake_case)] #[allow(dead_code)] #[inline] fn $name<F: Fn() + 'static>(&self, f: F) { self.on($event, f); } }; } #[macro_export] macro_rules! generate_attr { ($name:ident) => { #[allow(non_snake_case)] #[allow(dead_code)] #[inline] fn $name(&self, value: &str) { self.get_widget() .set_attribute(stringify!($name), value) .unwrap(); } }; } #[macro_export] macro_rules! generate_pub_attr { ($name:ident) => { generate_pub_attr!($name &str ; stringify!($name)); }; ($name:ident $typ:ty) => { generate_pub_attr!($name $typ ; stringify!($name)); }; ($name:ident $typ:ty ; $key:expr) => { #[allow(non_snake_case)] #[allow(dead_code)] #[inline] pub fn $name(&self, value: $typ) { self.get_widget() .set_attribute($key, &format!("{}",value)[..]) .unwrap(); } }; } #[macro_export] macro_rules! generate_pub_bool_attr { ($name:ident) => { generate_pub_bool_attr!($name stringify!($name)); }; ($name:ident $key:expr) => { #[allow(non_snake_case)] #[allow(dead_code)] #[inline] pub fn $name(&self, value: bool) { if value { self.get_widget().set_attribute($key, "").unwrap(); } else { self.get_widget().remove_attribute($key).unwrap(); } } }; } #[macro_export] macro_rules! impl_add_for_web_node { () => { #[inline] fn add(&mut self, child: NodeRc) { self.widget .append_child(&child.as_ref().borrow().get_widget()) .unwrap(); } }; }