Merge Interface branch onto development branch #5
91
src/main.rs
91
src/main.rs
|
|
@ -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)]
|
||||
|
|
|
|||
Loading…
Reference in New Issue