use gpui::App;
pub trait AppExt {
fn editor_layout(&self) -> crate::Layout;
fn editor_text_size(&self) -> crate::TextSize;
fn set_editor_layout(&mut self, layout: crate::Layout);
fn set_editor_text_size(&mut self, text_size: crate::TextSize);
fn set_image_store(&mut self, store: crate::ImageStore);
fn image_store(&self) -> crate::ImageStore;
fn set_paste_handler(&mut self, handler: crate::PasteHandler);
fn set_slash_items(&mut self, items: Vec<crate::SlashItem>);
fn set_block_menu_items(&mut self, items: Vec<crate::BlockMenuItem>);
fn set_handles(&mut self, handles: crate::Handles);
fn set_mention_source(&mut self, trigger: char, source: crate::MentionSource);
fn adjust_editor_text_size(&mut self, points: f32);
fn reset_editor_text_size(&mut self);
fn editor_text_size_adjustment(&self) -> f32;
}
impl AppExt for App {
fn editor_layout(&self) -> crate::Layout {
crate::layout::Layout::of(self)
}
fn editor_text_size(&self) -> crate::TextSize {
crate::text_size::TextSize::of(self)
}
fn set_editor_layout(&mut self, layout: crate::Layout) {
crate::layout::set_layout(self, layout)
}
fn set_editor_text_size(&mut self, text_size: crate::TextSize) {
crate::text_size::set_text_size(self, text_size)
}
fn set_image_store(&mut self, store: crate::ImageStore) {
crate::editor::image::set_image_store(self, store)
}
fn image_store(&self) -> crate::ImageStore {
crate::editor::image::store(self)
}
fn set_paste_handler(&mut self, handler: crate::PasteHandler) {
self.set_global(crate::paste::Installed(handler));
}
fn set_mention_source(&mut self, trigger: char, source: crate::MentionSource) {
let installed = &mut self.default_global::<crate::mention::Installed>().0;
installed.retain(|(installed, _)| *installed != trigger);
installed.push((trigger, source));
}
fn set_slash_items(&mut self, items: Vec<crate::SlashItem>) {
self.set_global(crate::slash::Installed(items));
}
fn set_block_menu_items(&mut self, items: Vec<crate::BlockMenuItem>) {
self.set_global(crate::block_menu::Installed(items));
}
fn set_handles(&mut self, handles: crate::Handles) {
self.set_global(crate::handles::Installed(handles));
}
fn adjust_editor_text_size(&mut self, points: f32) {
crate::text_size::adjust_text_size(self, points)
}
fn reset_editor_text_size(&mut self) {
crate::text_size::reset_text_size(self)
}
fn editor_text_size_adjustment(&self) -> f32 {
crate::text_size::text_size_adjustment(self)
}
}