use std::sync::Arc;
use gtk::{
gio::SimpleAction,
glib::{gformat, uuid_string_random, GString},
prelude::ActionExt,
};
pub struct Action {
group: GString,
simple: Arc<SimpleAction>,
}
impl Action {
pub fn new(group: &str, is_enabled: bool) -> Self {
let simple = Arc::new(SimpleAction::new(&uuid_string_random(), None));
simple.set_enabled(is_enabled);
let group = GString::from(group);
Self { group, simple }
}
pub fn detailed_name(&self) -> GString {
gformat!("{}.{}", self.group, self.simple.name()) }
pub fn simple(&self) -> Arc<SimpleAction> {
self.simple.clone()
}
}