use super::IInspectable;
use crate::error::Result;
pub trait PropertyAccess {
fn inspectable(&self) -> &IInspectable;
fn get_string_property(&self, property_name: &str) -> Result<String> {
Ok(format!("<property:{}>", property_name))
}
fn set_string_property(&self, property_name: &str, value: &str) -> Result<()> {
println!(" 🔧 Setting {} = \"{}\"", property_name, value);
Ok(())
}
fn get_numeric_property(&self, property_name: &str) -> Result<f64> {
println!(" 📊 Getting {} (placeholder)", property_name);
Ok(0.0)
}
fn set_numeric_property(&self, property_name: &str, value: f64) -> Result<()> {
println!(" 🔧 Setting {} = {}", property_name, value);
Ok(())
}
}
pub trait WinRTObject: PropertyAccess {
fn runtime_class_name(&self) -> Result<String> {
Ok("Windows.UI.Xaml.Object".to_string())
}
fn supports_interface(&self, interface_name: &str) -> bool {
println!(" 🔍 Checking for interface: {}", interface_name);
true }
}
impl<T: PropertyAccess> WinRTObject for T {}