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);
21
22 fn image_store(&self) -> crate::ImageStore;
24
25 fn set_paste_handler(&mut self, handler: crate::PasteHandler);
28
29 fn set_slash_items(&mut self, items: Vec<crate::SlashItem>);
32
33 fn set_block_menu_items(&mut self, items: Vec<crate::SlashItem>);
36
37 fn set_handles(&mut self, handles: crate::Handles);
40
41 fn set_mention_source(&mut self, trigger: char, source: crate::MentionSource);
45
46 fn adjust_editor_text_size(&mut self, points: f32);
48
49 fn reset_editor_text_size(&mut self);
51
52 fn editor_text_size_adjustment(&self) -> f32;
54}
55
56impl AppExt for App {
57 fn editor_layout(&self) -> crate::Layout {
58 crate::layout::Layout::of(self)
59 }
60
61 fn editor_text_size(&self) -> crate::TextSize {
62 crate::text_size::TextSize::of(self)
63 }
64
65 fn set_editor_layout(&mut self, layout: crate::Layout) {
66 crate::layout::set_layout(self, layout)
67 }
68
69 fn set_editor_text_size(&mut self, text_size: crate::TextSize) {
70 crate::text_size::set_text_size(self, text_size)
71 }
72
73 fn set_image_store(&mut self, store: crate::ImageStore) {
74 crate::editor::image::set_image_store(self, store)
75 }
76
77 fn image_store(&self) -> crate::ImageStore {
78 crate::editor::image::store(self)
79 }
80
81 fn set_paste_handler(&mut self, handler: crate::PasteHandler) {
82 self.set_global(crate::paste::Installed(handler));
83 }
84
85 fn set_mention_source(&mut self, trigger: char, source: crate::MentionSource) {
86 let installed = &mut self.default_global::<crate::mention::Installed>().0;
87 installed.retain(|(installed, _)| *installed != trigger);
88 installed.push((trigger, source));
89 }
90
91 fn set_slash_items(&mut self, items: Vec<crate::SlashItem>) {
92 self.set_global(crate::slash::Installed(items));
93 }
94
95 fn set_block_menu_items(&mut self, items: Vec<crate::SlashItem>) {
96 self.set_global(crate::block_menu::Installed(items));
97 }
98
99 fn set_handles(&mut self, handles: crate::Handles) {
100 self.set_global(crate::handles::Installed(handles));
101 }
102
103 fn adjust_editor_text_size(&mut self, points: f32) {
104 crate::text_size::adjust_text_size(self, points)
105 }
106
107 fn reset_editor_text_size(&mut self) {
108 crate::text_size::reset_text_size(self)
109 }
110
111 fn editor_text_size_adjustment(&self) -> f32 {
112 crate::text_size::text_size_adjustment(self)
113 }
114}