36 lines
1.1 KiB
Rust
36 lines
1.1 KiB
Rust
use std::sync::mpsc::channel;
|
|
use crate::application::{LANToolkit, Messages, WINDOW_HEIGHT, WINDOW_WIDTH};
|
|
use iced::Theme::TokyoNight;
|
|
use iced::Size;
|
|
use crate::config::Config;
|
|
use crate::worker::WorkerState;
|
|
|
|
mod application;
|
|
mod worker;
|
|
mod config;
|
|
|
|
fn main() {
|
|
let (tx,rx) = channel::<Messages>();
|
|
let state = WorkerState {
|
|
tx: tx.clone()
|
|
};
|
|
let cfg = Config::default();
|
|
let res = std::thread::Builder::new()
|
|
.name("Worker Thread".to_string())
|
|
.spawn(worker::worker_main(state.clone(), rx));
|
|
if res.is_err() {
|
|
println!("Failed to start worker thread: {}", res.err().unwrap());
|
|
return;
|
|
}
|
|
// 我发现这个库真的很tm喜欢把函数当参数传来传去:(
|
|
let res = iced::application(LANToolkit::boot(state.clone(), cfg.clone()), LANToolkit::update, LANToolkit::view)
|
|
.title(|state: &LANToolkit| state.cfg.window_name.clone())
|
|
.window_size(Size::new(WINDOW_WIDTH as f32,WINDOW_HEIGHT as f32))
|
|
.theme(TokyoNight)
|
|
.run();
|
|
if res.is_err() {
|
|
println!("Failed to start main window: {}", res.err().unwrap());
|
|
return;
|
|
}
|
|
}
|