zed/crates/gpui/playground/src/playground.rs

115 lines
2.7 KiB
Rust
Raw Normal View History

2023-08-11 06:26:58 +00:00
#![allow(dead_code, unused_variables)]
2023-08-23 15:08:05 +00:00
use crate::{
color::black,
2023-08-23 22:17:45 +00:00
components::button,
2023-08-23 22:02:56 +00:00
element::ParentElement,
2023-08-23 15:08:05 +00:00
style::{StyleHelpers, Styleable},
};
2023-08-22 15:07:45 +00:00
use element::Element;
use gpui::{
geometry::{rect::RectF, vector::vec2f},
platform::WindowOptions,
};
use log::LevelFilter;
use simplelog::SimpleLogger;
2023-08-22 15:07:45 +00:00
use themes::{rose_pine, ThemeColors};
use view::view;
2023-07-25 05:27:14 +00:00
2023-08-14 03:20:41 +00:00
mod adapter;
2023-08-11 06:26:58 +00:00
mod color;
2023-08-16 01:29:57 +00:00
mod components;
mod div;
2023-08-14 01:47:49 +00:00
mod element;
mod hoverable;
mod interactive;
2023-08-20 01:51:17 +00:00
mod layout_context;
2023-08-16 19:52:42 +00:00
mod paint_context;
mod pressable;
2023-08-13 23:29:07 +00:00
mod style;
2023-08-16 12:22:47 +00:00
mod text;
2023-08-11 06:26:58 +00:00
mod themes;
2023-08-14 15:26:35 +00:00
mod view;
2023-08-11 06:26:58 +00:00
fn main() {
SimpleLogger::init(LevelFilter::Info, Default::default()).expect("could not initialize logger");
2023-08-11 06:26:58 +00:00
gpui::App::new(()).unwrap().run(|cx| {
2023-08-22 15:07:45 +00:00
cx.add_window(
WindowOptions {
bounds: gpui::platform::WindowBounds::Fixed(RectF::new(
vec2f(0., 0.),
vec2f(400., 300.),
)),
center: true,
..Default::default()
},
|_| view(|_| playground(&rose_pine::moon())),
);
cx.platform().activate(true);
});
2023-07-25 05:27:14 +00:00
}
2023-08-22 15:07:45 +00:00
fn playground<V: 'static>(theme: &ThemeColors) -> impl Element<V> {
use div::div;
div()
.text_color(black())
.h_full()
2023-08-22 15:16:05 +00:00
.w_1_2()
2023-08-22 15:07:45 +00:00
.fill(theme.success(0.5))
.hovered()
2023-08-23 15:08:05 +00:00
.fill(theme.error(0.5))
.pressed()
.fill(theme.warning(0.5))
2023-08-23 22:02:56 +00:00
.child(
div()
.h_6()
.w_6()
.absolute()
.bottom_0()
.fill(theme.success(0.)),
)
2023-08-23 22:17:45 +00:00
.child(
button()
.label("Click me")
.data(1_usize)
.on_click(|_, data, _| {
dbg!(*data);
}),
)
.child(
button()
.label("And me")
.data(2_usize)
.on_click(|_, data, _| {
dbg!(*data);
}),
)
2023-08-22 15:07:45 +00:00
}
2023-08-13 07:40:05 +00:00
// todo!()
// // column()
// // .size(auto())
// // .fill(theme.base(0.5))
// // .text_color(theme.text(0.5))
// // .child(title_bar(theme))
// // .child(stage(theme))
// // .child(status_bar(theme))
// }
2023-08-12 07:11:12 +00:00
// fn title_bar<V: 'static>(theme: &ThemeColors) -> impl Element<V> {
// row()
// .fill(theme.base(0.2))
// .justify(0.)
// .width(auto())
// .child(text("Zed Playground"))
2023-08-11 06:26:58 +00:00
// }
2023-08-12 07:11:12 +00:00
// fn stage<V: 'static>(theme: &ThemeColors) -> impl Element<V> {
// row().fill(theme.surface(0.9))
2023-08-11 06:26:58 +00:00
// }
2023-08-12 07:11:12 +00:00
// fn status_bar<V: 'static>(theme: &ThemeColors) -> impl Element<V> {
// row().fill(theme.surface(0.1))
2023-08-11 06:26:58 +00:00
// }