Use GTK dialog (requires zenity)
This commit is contained in:
parent
90aea947e1
commit
908c14a5bc
2 changed files with 25 additions and 18 deletions
|
@ -7,6 +7,7 @@ edition = "2018"
|
|||
[dependencies]
|
||||
bubblebabble = "0.1"
|
||||
derive_more = "0.99"
|
||||
dialog = "0.2.1"
|
||||
dirs = "2.0"
|
||||
env_logger = "0.7"
|
||||
futures = "0.3"
|
||||
|
|
|
@ -13,10 +13,10 @@
|
|||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
use crate::Config;
|
||||
use dialog::{backends::Zenity, DialogBox};
|
||||
use std::{
|
||||
io::{Error, ErrorKind, Result},
|
||||
path::{PathBuf, MAIN_SEPARATOR},
|
||||
process::Command,
|
||||
};
|
||||
use tokio::{
|
||||
fs::{remove_file, File},
|
||||
|
@ -119,6 +119,29 @@ pub(crate) async fn run(config: Config) -> Result<()> {
|
|||
return;
|
||||
}
|
||||
|
||||
// Print dialog
|
||||
if !dont_ask {
|
||||
let mut zenity = Zenity::new();
|
||||
zenity.set_icon("question");
|
||||
zenity.set_width(360);
|
||||
let choice = dialog::Question::new(&format!(
|
||||
"Do you want to accept\n{}\n({} bytes)?",
|
||||
filename.display(),
|
||||
file_size
|
||||
))
|
||||
.title("Yodle!")
|
||||
.show_with(&zenity)
|
||||
.expect("Could not display dialog box");
|
||||
if choice != dialog::Choice::Yes {
|
||||
info!(
|
||||
"{} failed: rejected {}",
|
||||
peer_addr,
|
||||
filename.file_name().as_ref().unwrap().to_string_lossy()
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
debug!(
|
||||
"{} status: receiving {} ({} bytes)",
|
||||
peer_addr,
|
||||
|
@ -126,23 +149,6 @@ pub(crate) async fn run(config: Config) -> Result<()> {
|
|||
file_size
|
||||
);
|
||||
|
||||
if !dont_ask {
|
||||
match Command::new("ssh-askpass")
|
||||
.arg(&format!(
|
||||
"Yo! Do you want to accept {} ({} bytes)?",
|
||||
filename.display(),
|
||||
file_size
|
||||
))
|
||||
.output()
|
||||
{
|
||||
Ok(output) if output.status.success() => {}
|
||||
_ => {
|
||||
info!("{} failed: rejected file", peer_addr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create output file
|
||||
let file = match File::create(&filename).await {
|
||||
Ok(f) => f,
|
||||
|
|
Loading…
Reference in a new issue