generated from luke-else/egui-template
Working on building out async functionality
This commit is contained in:
parent
3e724cf340
commit
1cef80b8b8
@ -10,4 +10,5 @@ egui = "0.28.1"
|
||||
eframe = "0.28.1"
|
||||
tracing-subscriber = "0.3.16"
|
||||
strum = { version = "0.26.3", features = ["derive"] }
|
||||
tokio = "1.39.2"
|
||||
tokio = { version = "1.39.2", features = ["full"] }
|
||||
tokio-macros = { version = "2.4.0" }
|
||||
|
@ -1 +1,12 @@
|
||||
use super::req::Requests;
|
||||
|
||||
#[derive(PartialEq, Eq, Debug)]
|
||||
pub struct Metar {
|
||||
pub api: Requests,
|
||||
}
|
||||
|
||||
impl Default for Metar {
|
||||
fn default() -> Self {
|
||||
Metar { api: Requests{} }
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,28 @@
|
||||
use std::error::Error;
|
||||
|
||||
use tokio::{io::AsyncReadExt, net::TcpStream};
|
||||
|
||||
#[derive(PartialEq, Eq, Debug)]
|
||||
pub struct Requests {}
|
||||
|
||||
impl Requests {
|
||||
pub async fn make_request(&self, target: String) -> Result<String, Box<dyn Error>> {
|
||||
|
||||
let tasks = tokio::spawn(async {
|
||||
let mut buf: String = String::from("");
|
||||
|
||||
let mut stream = match TcpStream::connect(target).await {
|
||||
Ok(stream) => stream,
|
||||
Err(err) => return Err(Box::new(err)),
|
||||
};
|
||||
// Buffer to read HTTP request into
|
||||
let _ = stream.read_to_string(&mut buf);
|
||||
|
||||
Ok(buf)
|
||||
});
|
||||
|
||||
let buf = tasks.await??;
|
||||
|
||||
Ok(buf)
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,14 @@
|
||||
use egui::Key;
|
||||
|
||||
use crate::app::metar::Metar;
|
||||
|
||||
use super::Tab;
|
||||
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
pub struct MetarTab {
|
||||
pub icaos: Vec<String>,
|
||||
pub metars: Vec<String>,
|
||||
pub metar: Metar
|
||||
}
|
||||
|
||||
impl Default for MetarTab {
|
||||
@ -13,12 +16,13 @@ impl Default for MetarTab {
|
||||
Self {
|
||||
icaos: vec!["".to_string()],
|
||||
metars: vec![],
|
||||
metar: Metar::default()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Tab for MetarTab {
|
||||
fn display_tab(&mut self, ctx: &egui::Context, frame: &egui::Frame) {
|
||||
async fn display_tab(&mut self, ctx: &egui::Context, frame: &egui::Frame) {
|
||||
egui::CentralPanel::default().frame(*frame).show(ctx, |ui| {
|
||||
// Given Key pressed, place focus on next item
|
||||
let new_icao_focus: bool = ui.input(|i| i.key_pressed(Key::Space));
|
||||
@ -29,6 +33,7 @@ impl Tab for MetarTab {
|
||||
|
||||
if ui.button("Add More").clicked() || new_icao_focus {
|
||||
self.icaos.push("".to_string());
|
||||
self.metar.api.make_request(String::from("google.com"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ impl TabState {
|
||||
|
||||
/// Tab traits that allow tab display on the main application window
|
||||
pub trait Tab {
|
||||
fn display_tab(&mut self, ctx: &egui::Context, frame: &egui::Frame);
|
||||
async fn display_tab(&mut self, ctx: &egui::Context, frame: &egui::Frame);
|
||||
}
|
||||
|
||||
/// Function to draw main set of tabs on the window
|
||||
|
10
src/error.rs
Normal file
10
src/error.rs
Normal file
@ -0,0 +1,10 @@
|
||||
use strum::Display;
|
||||
|
||||
|
||||
#[derive(Debug, Display)]
|
||||
pub enum AvBagError {
|
||||
UIError,
|
||||
RequestNotAvailable
|
||||
}
|
||||
|
||||
impl std::error::Error for AvBagError {}
|
@ -1,10 +1,12 @@
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
|
||||
mod app;
|
||||
mod error;
|
||||
mod theme;
|
||||
use app::App;
|
||||
use egui::ViewportBuilder;
|
||||
|
||||
fn main() -> Result<(), eframe::Error> {
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
// Log to stdout (if you run with `RUST_LOG=debug`).
|
||||
tracing_subscriber::fmt::init();
|
||||
|
||||
@ -18,5 +20,5 @@ fn main() -> Result<(), eframe::Error> {
|
||||
let app = Box::new(App::default());
|
||||
|
||||
//Start rendering and run the application
|
||||
eframe::run_native(app.name, options, Box::new(|_cc| Ok(app)))
|
||||
Ok(eframe::run_native(app.name, options, Box::new(|_cc| Ok(app)))?)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user