1use gpui::App;
4
5pub trait AppExt {
7 fn editor_layout(&self) -> crate::Layout;
9
10 fn editor_text_size(&self) -> crate::TextSize;
12
13 fn set_editor_layout(&mut self, layout: crate::Layout);
15
16 fn set_editor_text_size(&mut self, text_size: crate::TextSize);
18
19 fn set_image_store(&mut self, store: crate::ImageStore);
22
23 fn image_store(&self) -> crate::ImageStore;
25
26 fn set_paste_handler(&mut self, handler: crate::PasteHandler);
29
30 fn set_slash_items(&mut self, items: Vec<crate::SlashItem>);
33
34 fn set_block_menu_items(&mut self, items: Vec<crate::SlashItem>);
37
38 fn set_handles(&mut self, handles: crate::Handles);
41
42 fn set_mention_source(&mut self, trigger: char, source: crate::MentionSource);
46
47 fn adjust_editor_text_size(&mut self, points: f32);
49
50 fn reset_editor_text_size(&mut self);
52
53 fn editor_text_size_adjustment(&self) -> f32;
55}
56
57impl AppExt for App {
58 fn editor_layout(&self) -> crate::Layout {
59 crate::layout::Layout::of(self)
60 }
61
62 fn editor_text_size(&self) -> crate::TextSize {
63 crate::text_size::TextSize::of(self)
64 }
65
66 fn set_editor_layout(&mut self, layout: crate::Layout) {
67 crate::layout::set_layout(self, layout)
68 }
69
70 fn set_editor_text_size(&mut self, text_size: crate::TextSize) {
71 crate::text_size::set_text_size(self, text_size)
72 }
73
74 fn set_image_store(&mut self, store: crate::ImageStore) {
75 crate::editor::image::set_image_store(self, store)
76 }
77
78 fn image_store(&self) -> crate::ImageStore {
79 crate::editor::image::store(self)
80 }
81
82 fn set_paste_handler(&mut self, handler: crate::PasteHandler) {
83 self.set_global(crate::paste::Installed(handler));
84 }
85
86 fn set_mention_source(&mut self, trigger: char, source: crate::MentionSource) {
87 let installed = &mut self.default_global::<crate::mention::Installed>().0;
88 installed.retain(|(installed, _)| *installed != trigger);
89 installed.push((trigger, source));
90 }
91
92 fn set_slash_items(&mut self, items: Vec<crate::SlashItem>) {
93 self.set_global(crate::slash::Installed(items));
94 }
95
96 fn set_block_menu_items(&mut self, items: Vec<crate::SlashItem>) {
97 self.set_global(crate::block_menu::Installed(items));
98 }
99
100 fn set_handles(&mut self, handles: crate::Handles) {
101 self.set_global(crate::handles::Installed(handles));
102 }
103
104 fn adjust_editor_text_size(&mut self, points: f32) {
105 crate::text_size::adjust_text_size(self, points)
106 }
107
108 fn reset_editor_text_size(&mut self) {
109 crate::text_size::reset_text_size(self)
110 }
111
112 fn editor_text_size_adjustment(&self) -> f32 {
113 crate::text_size::text_size_adjustment(self)
114 }
115}