#![allow(dead_code, unused_variables)] use crate::theme::Theme; use ::theme as legacy_theme; use collab_panel::collab_panel; use element_ext::ElementExt; use gpui2::{serde_json, vec2f, view, Element, RectF, ViewContext, WindowBounds}; use legacy_theme::ThemeSettings; use log::LevelFilter; use settings::{default_settings, SettingsStore}; use simplelog::SimpleLogger; mod collab_panel; mod components; mod element_ext; mod theme; mod workspace; fn main() { SimpleLogger::init(LevelFilter::Info, Default::default()).expect("could not initialize logger"); gpui2::App::new(()).unwrap().run(|cx| { let mut store = SettingsStore::default(); store .set_default_settings(default_settings().as_ref(), cx) .unwrap(); cx.set_global(store); legacy_theme::init(Assets, cx); // load_embedded_fonts(cx.platform().as_ref()); cx.add_window( gpui2::WindowOptions { bounds: WindowBounds::Fixed(RectF::new(vec2f(0., 0.), vec2f(260., 800.))), center: true, ..Default::default() }, |_| view(|cx| storybook(cx)), ); cx.platform().activate(true); }); } fn storybook(cx: &mut ViewContext) -> impl Element { collab_panel().themed(current_theme(cx)) } // Nathan: During the transition, we will include the base theme on the legacy Theme struct. fn current_theme(cx: &mut ViewContext) -> Theme { settings::get::(cx) .theme .deserialized_base_theme .lock() .get_or_insert_with(|| { let theme: Theme = serde_json::from_value(settings::get::(cx).theme.base_theme.clone()) .unwrap(); Box::new(theme) }) .downcast_ref::() .unwrap() .clone() } use anyhow::{anyhow, Result}; use gpui2::AssetSource; use rust_embed::RustEmbed; #[derive(RustEmbed)] #[folder = "../../assets"] #[include = "themes/**/*"] #[include = "fonts/**/*"] #[exclude = "*.DS_Store"] pub struct Assets; impl AssetSource for Assets { fn load(&self, path: &str) -> Result> { Self::get(path) .map(|f| f.data) .ok_or_else(|| anyhow!("could not find asset at path \"{}\"", path)) } fn list(&self, path: &str) -> Vec> { Self::iter().filter(|p| p.starts_with(path)).collect() } } // fn load_embedded_fonts(platform: &dyn gpui2::Platform) { // let font_paths = Assets.list("fonts"); // let mut embedded_fonts = Vec::new(); // for font_path in &font_paths { // if font_path.ends_with(".ttf") { // let font_path = &*font_path; // let font_bytes = Assets.load(font_path).unwrap().to_vec(); // embedded_fonts.push(Arc::from(font_bytes)); // } // } // platform.fonts().add_fonts(&embedded_fonts).unwrap(); // }