use baseview::{Size, WindowOpenOptions, WindowScalePolicy};
use egui::{CentralPanel, Context, Ui};
use egui_baseview::{EguiWindow, GraphicsConfig, Queue};
fn main() {
let settings = WindowOpenOptions {
title: String::from("egui-baseview simple demo"),
size: Size::new(400.0, 200.0),
scale: WindowScalePolicy::SystemScaleFactor,
gl_config: None,
};
let state = State::new();
EguiWindow::open_blocking(
settings,
GraphicsConfig::default(),
state,
|_egui_ctx: &Context, _queue: &mut Queue, _state: &mut State| {},
|ui: &mut Ui, queue: &mut Queue, state: &mut State| {
CentralPanel::default().show_inside(ui, |ui| {
ui.heading("My Egui Application");
ui.horizontal(|ui| {
ui.label("Your name: ");
ui.text_edit_singleline(&mut state.name);
});
ui.add(egui::Slider::new(&mut state.age, 0..=120).text("age"));
if ui.button("Click each year").clicked() {
state.age += 1;
}
ui.label(format!("Hello '{}', age {}", state.name, state.age));
if ui.button("close window").clicked() {
queue.close_window();
}
ui.hyperlink_to("free crouton", "https://crouton.net");
});
},
);
}
struct State {
pub name: String,
pub age: u32,
}
impl State {
pub fn new() -> State {
State {
name: String::from(""),
age: 30,
}
}
}
impl Drop for State {
fn drop(&mut self) {
println!("Window is closing!");
}
}