use gtk4::prelude::*;
pub trait SetProps<'a> {
type SetterType: 'a;
fn set_props(&self, setter: &Self::SetterType);
}
pub trait GetProps {
type GetterType;
fn get_props(&self) -> Self::GetterType;
}
impl<'a> SetProps<'a> for gtk4::Label {
type SetterType = &'a str;
fn set_props(&self, setter: &Self::SetterType) {
self.set_text(setter);
}
}
impl<'a> SetProps<'a> for gtk4::Entry {
type SetterType = &'a str;
fn set_props(&self, setter: &Self::SetterType) {
self.set_text(setter);
}
}
impl GetProps for gtk4::Entry {
type GetterType = String;
fn get_props(&self) -> Self::GetterType {
self.text().to_string()
}
}
impl<'a> SetProps<'a> for gtk4::CheckButton {
type SetterType = bool;
fn set_props(&self, setter: &Self::SetterType) {
self.set_active(*setter);
}
}
impl GetProps for gtk4::CheckButton {
type GetterType = bool;
fn get_props(&self) -> Self::GetterType {
self.is_active()
}
}