1use anyhow::Result;
2use gpui::AssetSource;
3use gpui::{
4 div, px, size, AnyView, Bounds, Div, Render, ViewContext, VisualContext, WindowBounds,
5 WindowOptions,
6};
7use settings::{default_settings, Settings, SettingsStore};
8use std::borrow::Cow;
9use std::sync::Arc;
10use theme::ThemeSettings;
11use ui::{prelude::*, ContextMenuStory};
12
13struct Assets;
14
15impl AssetSource for Assets {
16 fn load(&self, _path: &str) -> Result<Cow<[u8]>> {
17 todo!();
18 }
19
20 fn list(&self, _path: &str) -> Result<Vec<SharedString>> {
21 Ok(vec![])
22 }
23}
24
25fn main() {
26 let asset_source = Arc::new(Assets);
27 gpui::App::production(asset_source).run(move |cx| {
28 let mut store = SettingsStore::default();
29 store
30 .set_default_settings(default_settings().as_ref(), cx)
31 .unwrap();
32 cx.set_global(store);
33 ui::settings::init(cx);
34 theme::init(theme::LoadThemes::JustBase, cx);
35
36 cx.open_window(
37 WindowOptions {
38 bounds: WindowBounds::Fixed(Bounds {
39 origin: Default::default(),
40 size: size(px(1500.), px(780.)).into(),
41 }),
42 ..Default::default()
43 },
44 move |cx| {
45 let ui_font_size = ThemeSettings::get_global(cx).ui_font_size;
46 cx.set_rem_size(ui_font_size);
47
48 cx.build_view(|cx| TestView {
49 story: cx.build_view(|_| ContextMenuStory).into(),
50 })
51 },
52 );
53
54 cx.activate(true);
55 })
56}
57
58struct TestView {
59 story: AnyView,
60}
61
62impl Render for TestView {
63 type Element = Div<Self>;
64
65 fn render(&mut self, _cx: &mut ViewContext<Self>) -> Self::Element {
66 div()
67 .flex()
68 .flex_col()
69 .size_full()
70 .font("Helvetica")
71 .child(self.story.clone())
72 }
73}