You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
gui/src/app.rs

272 lines
13 KiB

use eframe::egui;
use egui::FontFamily::Proportional;
use egui::FontId;
use egui::TextStyle::*;
use crate::node::Node;
pub struct App {
pub node: Node,
pub node_running: bool,
pub show_node_logs: bool,
pub node_log: String
}
impl Default for App {
fn default() -> Self {
Self {
node: Node::default(),
node_running: false,
show_node_logs: false,
node_log: "".to_owned()
}
}
}
fn show_boolmoji(b: bool) -> String {
if b { return "✔".to_owned() } else { return "☠".to_owned() }
}
impl eframe::App for App {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
let mut style = (*ctx.style()).clone();
style.text_styles = [
(Heading, FontId::new(30.0, Proportional)),
(Name("Heading2".into()), FontId::new(25.0, Proportional)),
(Name("Context".into()), FontId::new(23.0, Proportional)),
(Body, FontId::new(18.0, Proportional)),
(Monospace, FontId::new(14.0, Proportional)),
(Button, FontId::new(14.0, Proportional)),
(Small, FontId::new(10.0, Proportional)),
].into();
ctx.set_style(style);
ctx.set_visuals(egui::Visuals::dark());
egui::TopBottomPanel::top("top").show(ctx, |ui| {
ui.heading("Wownero Node Center");
ui.label("Made by ya boi, lza_menace");
ui.hyperlink("https://lzahq.tech");
});
egui::CentralPanel::default().show(ctx, |ui| {
// Tor
// if self.tor_required {
// if self.node_running {
// ui.label(
// egui::RichText::new(
// format!(
// "Tor Started: {} Tor Connected: {} Proxy Up: {}",
// show_boolmoji(self.node_running),
// show_boolmoji(self.tor_connected),
// show_boolmoji(self.tor_connected)
// )
// )
// );
// } else {
// }
// }
// node
if self.node_running {
ui.label(
egui::RichText::new(
format!(
"Node Started: {}",
show_boolmoji(self.node_running)
)
)
);
ui.horizontal(|ui| {
ui.checkbox(&mut self.show_node_logs, "Show Node Logs");
});
if self.show_node_logs {
egui::ScrollArea::vertical().stick_to_bottom(true).show(ui, |ui| {
self.node_log = self.node.read_log();
ui.horizontal(|ui| {
// ui.text_edit_singleline(&mut self.node_log);
ui.label(&self.node_log.clone());
});
// if ui.button("Clear IRC Log").clicked() {
// let _ = std::fs::File::create(crate::IRC_LOG);
// }
// if self.irc_last_ping.elapsed().unwrap() > Duration::from_secs(60) {
// let _ = crate::nodev2::send_cmd(&self.irc_stream.as_ref().unwrap(), "PING", format!(""));
// self.irc_last_ping = SystemTime::now();
// }
});
}
} else {
if ui.button("Start the node").clicked() {
self.node.start();
self.node_running = true;
}
ui.separator();
}
// WOW!Radio
// if self.show_radio {
// ui.heading(egui::RichText::new("WOW!Radio").color(egui::Color32::WHITE));
// ui.label(egui::RichText::new("Your home for the most diabolical playlist of the century, made by the skeevers, scallywags, chupacabras, snails, and whores of the Wownero community. Join da chat to peep da scoop.\n").color(egui::Color32::WHITE));
// ui.horizontal(|ui| {
// if self.player.playing {
// if ui.button("⏸").clicked() {
// let _ = self.player.sink.pause();
// self.player.playing = false;
// }
// // if ui.button("⏹").clicked() {
// // let _ = self.player.sink.stop();
// // self.player.playing = false;
// // let _ = std::fs::remove_file(crate::RADIO_STREAM);
// // }
// } else {
// if ! self.tor_connected && self.tor_required {
// ui.label("Connect to the Tor network first.");
// } else {
// if ui.button("▶").clicked() {
// if ! self.tor_connected && self.tor_required {
// return ();
// }
// // If stream thread is done, start again
// if self.player.stream_thread.is_finished() {
// self.player.stream_thread = self.player.start_radio_stream(self.tor_required);
// }
// let _ = self.player.sink.play();
// self.player.playing = true;
// }
// }
// }
// });
// // Show spinner when downloading, along with file size
// // if ! self.player.stream_thread.is_finished() {
// // ui.horizontal(|ui| {
// // ui.spinner();
// // let size: u64 = self.player.get_radio_size();
// // ui.label(format!(
// // "{:?} -> {} ({} bytes)",
// // self.player.stream_source,
// // crate::RADIO_STREAM,
// // size
// // ));
// // });
// // }
// // Show exif metadata when radio file available to read
// // if self.player.playing && self.player.get_radio_size() > 0 {
// // let rt = egui::RichText::new(
// // format!("\n{:?}", self.player.stream_exif))
// // .color(egui::Color32::WHITE)
// // .size(18.0);
// // ui.label(rt);
// // let dur = self.player.exif_date.elapsed().unwrap();
// // if dur > Duration::from_secs(15) {
// // self.player.exif_date = SystemTime::now();
// // self.player.stream_exif = self.player.get_song_meta().unwrap();
// // }
// // if ui.button(" +1 ").clicked() {
// // let _ = self.irc.send_tune();
// // }
// // }
// ui.separator();
// }
// // IRC
// if self.show_node_logs && ! self.irc_connected {
// let i = self.irc.run();
// if i.is_ok() {
// self.irc_stream = Some(i.unwrap());
// self.irc_connected = true;
// }
// } else if self.show_node_logs {
// egui::ScrollArea::vertical().stick_to_bottom(true).show(ui, |ui| {
// ui.label(self.irc.read_irc_log(self.irc_active_channel.clone()));
// ui.horizontal(|ui| {
// egui::ComboBox::from_label("")
// .selected_text(format!("{}", self.irc_active_channel))
// .show_ui(ui, |ui| {
// ui.selectable_value(&mut self.irc_active_channel, "".to_owned(), "system");
// ui.selectable_value(&mut self.irc_active_channel, "#wownero-music".to_owned(), "#wownero-music");
// ui.selectable_value(&mut self.irc_active_channel, "#wownero".to_owned(), "#wownero");
// }
// );
// ui.text_edit_singleline(&mut self.node_log);
// if ui.button("> Send <").clicked() {
// let res = crate::nodev2::send_cmd(&self.irc_stream.as_ref().unwrap(), "PRIVMSG", format!("{} :{}\r\n", self.irc_active_channel, self.node_log));
// if res.is_ok() {
// println!("wrote {} bytes to IRC: {}", res.unwrap(), self.node_log);
// let _ = crate::nodev2::write_log(format!("PRIVMSG {} :{}\r\n", self.irc_active_channel, self.node_log).as_str(), false);
// } else {
// eprintln!("error: {:?}", res.err());
// }
// self.node_log = "".to_owned();
// }
// });
// if ui.button("Clear IRC Log").clicked() {
// let _ = std::fs::File::create(crate::IRC_LOG);
// }
// if self.irc_last_ping.elapsed().unwrap() > Duration::from_secs(60) {
// let _ = crate::nodev2::send_cmd(&self.irc_stream.as_ref().unwrap(), "PING", format!(""));
// self.irc_last_ping = SystemTime::now();
// }
// });
// }
// // Market
// if self.show_market_data {
// egui::ComboBox::from_label("Pick currency base.")
// .selected_text(format!("{}", self.market.denomination))
// .show_ui(ui, |ui| {
// ui.selectable_value(&mut self.market.denomination, "sats".to_owned(), "sats");
// ui.selectable_value(&mut self.market.denomination, "usd".to_owned(), "usd");
// ui.selectable_value(&mut self.market.denomination, "eth".to_owned(), "eth");
// }
// );
// if self.market.last_check_time.elapsed().unwrap() > Duration::from_secs(120) {
// println!("[+] Refreshing WOW market data.");
// self.market.store_market_data(self.tor_required);
// self.market.last_check_time = SystemTime::now();
// }
// if self.market.last_check_time.elapsed().unwrap() < Duration::from_secs(30) && self.market.read_json_from_file().len() == 0 {
// ui.horizontal(|ui| {
// ui.spinner();
// ui.label("Fetching market data...");
// });
// }
// self.market.last_cg_data = self.market.read_json_from_file();
// let m = &self.market.last_cg_data;
// let md = &m["market_data"];
// ui.horizontal_wrapped(|ui| {
// ui.vertical(|ui| {
// ui.label("Current Price");
// ui.heading(egui::RichText::new(md["current_price"][&self.market.denomination].to_string()).strong());
// ui.label("All-Time High");
// ui.heading(egui::RichText::new(md["ath"][&self.market.denomination].to_string()).strong());
// ui.label("All-Time Low");
// ui.heading(egui::RichText::new(md["atl"][&self.market.denomination].to_string()).strong());
// ui.label("Total Volume");
// ui.heading(egui::RichText::new(md["total_volume"][&self.market.denomination].to_string()).strong());
// ui.label("Market Cap");
// ui.heading(egui::RichText::new(md["market_cap"][&self.market.denomination].to_string()).strong());
// });
// ui.vertical(|ui| {
// ui.label("PriceChg% (~24hrs)");
// ui.heading(egui::RichText::new(md["price_change_percentage_24h_in_currency"][&self.market.denomination].to_string()).strong());
// ui.label("PriceChg% (~7d)");
// ui.heading(egui::RichText::new(md["price_change_percentage_7d_in_currency"][&self.market.denomination].to_string()).strong());
// ui.label("PriceChg% (~14d)");
// ui.heading(egui::RichText::new(md["price_change_percentage_14d_in_currency"][&self.market.denomination].to_string()).strong());
// ui.label("PriceChg% (~30d)");
// ui.heading(egui::RichText::new(md["price_change_percentage_30d_in_currency"][&self.market.denomination].to_string()).strong());
// });
// });
// }
});
}
}