use super::{ConnectionHandle, GenericSignal};
use std::collections::HashMap;
#[derive(Default)]
pub struct CustomSignalHub {
signals: HashMap<String, GenericSignal>,
}
impl CustomSignalHub {
pub fn define(&mut self, name: impl Into<String>) {
self.signals.entry(name.into()).or_default();
}
pub fn emit(&self, name: &str) {
if let Some(signal) = self.signals.get(name) {
signal.emit();
}
}
pub fn connect<F>(&mut self, name: impl Into<String>, slot: F) -> ConnectionHandle
where
F: FnMut() + Send + Sync + 'static,
{
self.signals.entry(name.into()).or_default().connect(slot)
}
}