-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add IosevkaAile fonts, update chars.txt and assets, refactor dashboar…
…d UI and logging, adjust main window size and fonts setup, improve client error handling
- Loading branch information
1 parent
99834f5
commit 460487e
Showing
11 changed files
with
96 additions
and
91 deletions.
There are no files selected for viewing
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file renamed
BIN
+73.3 KB
...es/geph5-client-gui/src/assets/subset.ttf → ...s/geph5-client-gui/src/assets/chinese.ttf
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
#!/bin/bash | ||
find ../ -type f -name '*.rs' -o -name '*.csv' | xargs cat | grep -o . | sort -u > chars.txt | ||
pyftsubset SarasaUiSC-Regular.ttf --text-file=chars.txt --output-file=subset.ttf | ||
pyftsubset IosevkaAile-Regular.ttf --text-file=chars.txt --output-file=normal.ttf | ||
pyftsubset SarasaUiSC-Regular.ttf --text-file=chars.txt --output-file=chinese.ttf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
use egui::mutex::Mutex; | ||
use once_cell::sync::Lazy; | ||
|
||
pub static DAEMON: Lazy<Mutex<Option<geph5_client::Client>>> = Lazy::new(|| Mutex::new(None)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,81 +1,42 @@ | ||
use std::time::Duration; | ||
use crate::{daemon::DAEMON, l10n::l10n, settings::get_config}; | ||
|
||
use anyhow::Context as _; | ||
use futures_util::{future::Shared, FutureExt}; | ||
use geph5_broker_protocol::{BrokerClient, ExitList}; | ||
|
||
use smol::Task; | ||
use smol_timeout::TimeoutExt as _; | ||
|
||
use crate::{l10n::l10n, settings::get_config}; | ||
|
||
pub struct Dashboard { | ||
selected_server: Option<(String, String)>, | ||
server_list: Shared<Task<ExitList>>, | ||
} | ||
pub struct Dashboard {} | ||
|
||
impl Dashboard { | ||
pub fn new() -> Self { | ||
Self { | ||
selected_server: None, | ||
server_list: smolscale::spawn(get_server_list()).shared(), | ||
} | ||
Self {} | ||
} | ||
pub fn render(&mut self, ui: &mut egui::Ui) -> anyhow::Result<()> { | ||
ui.label(l10n("selected_server")); | ||
egui::ComboBox::from_label("") | ||
.selected_text(render_exit_selection(&self.selected_server)) | ||
.show_ui(ui, |ui| { | ||
if let Some(list) = self.server_list.peek() { | ||
} else { | ||
ui.label(l10n("loading_exit_list")); | ||
} | ||
// ui.selectable_value(&mut self.selected_server, "Apple".to_string(), "Apple"); | ||
// ui.selectable_value(&mut self.selected_server, "Pear".to_string(), "Pear"); | ||
// ui.selectable_value(&mut self.selected_server, "Orange".to_string(), "Orange"); | ||
}); | ||
anyhow::Ok(()) | ||
} | ||
} | ||
let mut daemon = DAEMON.lock(); | ||
|
||
fn render_exit_selection(selection: &Option<(String, String)>) -> String { | ||
if let Some((country, city)) = selection.as_ref() { | ||
format!("{country}/{city}") | ||
} else { | ||
"Auto".into() | ||
} | ||
} | ||
ui.columns(2, |columns| { | ||
columns[0].label(l10n("status")); | ||
if daemon.is_none() { | ||
columns[1].colored_label(egui::Color32::DARK_RED, l10n("disconnected")); | ||
} | ||
columns[0].label(l10n("connection_time")); | ||
columns[0].label(l10n("data_used")); | ||
}); | ||
ui.add_space(10.); | ||
ui.vertical_centered(|ui| { | ||
if daemon.is_none() { | ||
if ui.button(l10n("connect")).clicked() { | ||
tracing::warn!("connect clicked"); | ||
*daemon = Some(geph5_client::Client::start(get_config()?)); | ||
} | ||
} else if ui.button(l10n("disconnect")).clicked() { | ||
tracing::warn!("disconnect clicked"); | ||
*daemon = None; | ||
} | ||
anyhow::Ok(()) | ||
}) | ||
.inner?; | ||
|
||
async fn get_server_list() -> ExitList { | ||
loop { | ||
let fallible = async { | ||
let broker_client = get_broker_client() | ||
.await? | ||
.context("no broker client available")?; | ||
let exits = broker_client | ||
.get_exits() | ||
.timeout(Duration::from_secs(10)) | ||
.await | ||
.context("timeout")?? | ||
.map_err(|e| anyhow::anyhow!(e))? | ||
.inner; | ||
anyhow::Ok(exits) | ||
}; | ||
match fallible.await { | ||
Ok(res) => return res, | ||
Err(err) => { | ||
tracing::warn!(err = debug(err), "error getting server list"); | ||
smol::Timer::after(Duration::from_secs(1)).await; | ||
if let Some(daemon) = daemon.as_ref() { | ||
if let Err(err) = daemon.check_dead() { | ||
ui.colored_label(egui::Color32::RED, format!("{:?}", err)); | ||
} | ||
} | ||
} | ||
} | ||
|
||
async fn get_broker_client() -> anyhow::Result<Option<BrokerClient>> { | ||
let config = get_config()?; | ||
if let Some(src) = config.broker { | ||
Ok(Some(BrokerClient::from(src.rpc_transport()))) | ||
} else { | ||
Ok(None) | ||
Ok(()) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters