Interface #6

Merged
michael-bailey merged 53 commits from Interface into Development 2021-02-08 21:12:11 +00:00
1 changed files with 0 additions and 91 deletions
Showing only changes of commit e9d7dc3091 - Show all commits

View File

@ -58,97 +58,6 @@ fn main() -> Result<(), ErrorKind> {
}
fn gen_ui() {
// MARK: - setup the server.
info!("Main: init Server");
let server = Server::new("Server-01", "0.0.0.0:6000", "noreply@email.com");
let server_arc = Arc::new(Mutex::new(server));
info!("Main: init display");
let mut display = Cursive::default();
info!("Main: init cursive logger");
cursive::logger::init();
info!("Main: setting user data");
display.set_user_data(server_arc);
// MARK: - setup callbacks
info!("Main: setting up callbacks");
display.add_global_callback(Key::Backspace, |s| s.quit());
display.add_global_callback(Key::Tab, |s| s.toggle_debug_console());
display.add_global_callback(Key::Esc, |s| s.select_menubar());
display.set_autohide_menu(false);
display.add_global_callback(Event::WindowResize, |s| {
info!("Display: resized!");
std::process::Command::new("open").args(&["-a","Terminal"]).output().expect("not on mac os");
let _ = s.pop_layer();
let p = control_panel(s.screen_size(), s.user_data::<Arc<Mutex<Server>>>().unwrap().clone());
s.add_layer(p);
s.refresh();
});
display.set_autorefresh(true);
info!("Main: getting sender and pushing events");
let mut sender = display.cb_sink();
sender.send(Box::new(|s| {
menu_bar(s.menubar());
s.add_layer(launch_screen());
}));
info!("Main: entering loop");
display.run();
}
fn about() -> Dialog {
Dialog::new()
.content(TextView::new("Rust-Chat-Server\nmade by\n Mitchell Hardie\nMichael Bailey\nMit Licence")
.align(Align::center()))
.button("Close", |s| {
let _ = s.pop_layer();
})
}
#[allow(dead_code)]
fn launch_screen() -> Dialog {
Dialog::new()
.content(TextView::new("\
Welcome.
--- Controls ---
* press <ESC> for menu bar
* press <TAB> for debug (FIXME)
* press <DEL> to exit.
").align(Align::top_left()))
.button("ok", |s| {
s.pop_layer();
let p = control_panel(s.screen_size(), s.user_data::<Arc<Mutex<Server>>>().unwrap().clone());
s.add_layer(p);
})
}
fn control_panel(screen_size: XY<usize>, server_arc: Arc<Mutex<Server>>) -> ResizedView<Panel<LinearLayout>> {
let mut root = LinearLayout::horizontal();
let mut left = LinearLayout::vertical();
let mut right = ListView::new();
right.add_child("test", TextView::new(""));
right.add_delimiter();
right.add_child("test", TextView::new(""));
right.add_child("test", TextView::new(""));
left.add_child(TextView::new("---| Server |---"));
left.add_child(TextView::new(format!("name: {}", server_arc.lock().unwrap().name)));
left.add_child(TextView::new(format!("owner: {}", server_arc.lock().unwrap().author)));
left.add_child(TextView::new(format!("host: {}", server_arc.lock().unwrap().address)));
left.add_child(TextView::new(format!("running: {}", server_arc.lock().unwrap().running)));
left.add_child(TextView::new(format!("screen size: {:?}", screen_size)));
root.add_child(ResizedView::new(SizeConstraint::AtLeast(30), SizeConstraint::Full, Panel::new(left)));
root.add_child(ResizedView::new(SizeConstraint::Full, SizeConstraint::Full, Panel::new(right)));
ResizedView::new(SizeConstraint::Fixed(screen_size.x-4), SizeConstraint::Fixed(screen_size.y-4), Panel::new(root))
}
// MARK: - general testing zone
#[cfg(test)]