mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-28 01:07:09 +00:00
82 lines
2.3 KiB
Rust
82 lines
2.3 KiB
Rust
#![allow(dead_code, unused_variables)]
|
|
use crate::theme::Theme;
|
|
use ::theme as legacy_theme;
|
|
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;
|
|
use workspace::workspace;
|
|
|
|
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);
|
|
|
|
cx.add_window(
|
|
gpui2::WindowOptions {
|
|
bounds: WindowBounds::Fixed(RectF::new(vec2f(0., 0.), vec2f(400., 300.))),
|
|
center: true,
|
|
..Default::default()
|
|
},
|
|
|_| view(|cx| storybook(cx)),
|
|
);
|
|
cx.platform().activate(true);
|
|
});
|
|
}
|
|
|
|
fn storybook<V: 'static>(cx: &mut ViewContext<V>) -> impl Element<V> {
|
|
workspace().themed(current_theme(cx))
|
|
}
|
|
|
|
// Nathan: During the transition, we will include the base theme on the legacy Theme struct.
|
|
fn current_theme<V: 'static>(cx: &mut ViewContext<V>) -> Theme {
|
|
settings::get::<ThemeSettings>(cx)
|
|
.theme
|
|
.deserialized_base_theme
|
|
.lock()
|
|
.get_or_insert_with(|| {
|
|
let theme: Theme =
|
|
serde_json::from_value(settings::get::<ThemeSettings>(cx).theme.base_theme.clone())
|
|
.unwrap();
|
|
Box::new(theme)
|
|
})
|
|
.downcast_ref::<Theme>()
|
|
.unwrap()
|
|
.clone()
|
|
}
|
|
|
|
use anyhow::{anyhow, Result};
|
|
use gpui2::AssetSource;
|
|
use rust_embed::RustEmbed;
|
|
|
|
#[derive(RustEmbed)]
|
|
#[folder = "../../assets"]
|
|
#[include = "themes/**/*"]
|
|
#[exclude = "*.DS_Store"]
|
|
pub struct Assets;
|
|
|
|
impl AssetSource for Assets {
|
|
fn load(&self, path: &str) -> Result<std::borrow::Cow<[u8]>> {
|
|
Self::get(path)
|
|
.map(|f| f.data)
|
|
.ok_or_else(|| anyhow!("could not find asset at path \"{}\"", path))
|
|
}
|
|
|
|
fn list(&self, path: &str) -> Vec<std::borrow::Cow<'static, str>> {
|
|
Self::iter().filter(|p| p.starts_with(path)).collect()
|
|
}
|
|
}
|