From 551f8bc097547179376803e8cd3dc1b041b7b1a3 Mon Sep 17 00:00:00 2001 From: ayabusa Date: Sun, 10 Mar 2024 10:47:57 +0100 Subject: [PATCH] fixed multiple bugs, and made a few tweaks --- src-tauri/src/main.rs | 17 ++++++++++++++--- src-tauri/tauri.conf.json | 4 ++-- src/event_handler.js | 12 +++++++----- src/index.html | 8 ++++---- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 3dc6eeb..83090de 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -3,7 +3,10 @@ use native_dialog::FileDialog; use tauri::{Manager, PhysicalSize, Size}; -use std::{env, io::{Error, ErrorKind}, path::PathBuf, sync::Mutex}; +use std::{env, fmt::Display, io::{Error, ErrorKind}, path::PathBuf, sync::Mutex}; + +#[cfg(target_os = "windows")] +use std::os::windows::process::CommandExt; #[macro_use] extern crate lazy_static; @@ -53,9 +56,9 @@ async fn slice_button(app: tauri::AppHandle, chapter: String, fileformat: String // Try to format the chapters and panic if it was not able to let formated_chapters = match format_chapter(&chapter) { Ok(res) => res, - Err(_error) => { + Err(error) => { println!("error formating chapters, slicing aborted"); - app.emit_all("backend_error", Payload { message: "formating_issue".to_owned() }).unwrap(); + app.emit_all("formatting_error", Payload { message: error.to_string() }).unwrap(); return; }, }; @@ -149,6 +152,7 @@ fn format_chapter(chapter: &str) -> Result<(Vec, Vec), Error>{ for l in lines.iter(){ if l.is_empty() { break; } + if l.len() > 200 { return Err(Error::new(ErrorKind::Other, "Line is too big")); } let splited_line = l.split(" - ").collect::>(); if splited_line.len()<2 || splited_line[1] == "" { // To avoid blank title return Err(Error::new(ErrorKind::Other, "No title associated with the time code")); @@ -208,6 +212,13 @@ fn launch_ffmpeg(app: tauri::AppHandle, args: Vec) { println!("using ffmpeg binary : {}\nwith the following argument : {:?}", resource_path.display(), args); // launch the command + #[cfg(target_os = "windows")] + let output = std::process::Command::new(resource_path.as_os_str()) + .args(args) + .creation_flags(0x08000000) // avoid the terminal from showing up + .output() + .expect("failed to execute process"); + #[cfg(not (target_os = "windows"))] let output = std::process::Command::new(resource_path.as_os_str()) .args(args) .output() diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 0d5074e..aa6ab26 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -24,8 +24,8 @@ "fullscreen": false, "resizable": true, "title": "Rusty slicer", - "width": 400, - "height": 880 + "width": 450, + "height": 950 } ], "security": { diff --git a/src/event_handler.js b/src/event_handler.js index f9555b2..4c0d25b 100644 --- a/src/event_handler.js +++ b/src/event_handler.js @@ -27,9 +27,11 @@ const unlistenerror = await listen('backend_error', (event) => { document.getElementById("folderLocation").innerHTML = "please select an output folder" console.log("please select an output folder"); break; - case "formating_issue": - document.getElementById("errorLabel").innerHTML = "error: wrong chapter format. use 0:13 - my title" - console.log("error: wrong chapter format. use \n0:00 - first song title \n2:13 - second song title \n3:45 - third song title \n..."); - break; } -}) \ No newline at end of file +}) + +// listen for f0rmating issue from rust backend +const unlistenformattinginssie = await listen('formatting_error', (event) => { + document.getElementById("errorLabel").innerHTML = "error: wrong chapter format. "+ event.payload.message; + console.log("error: wrong chapter format. \n"+event.payload.message+"\nuse \n0:00 - first song title \n2:13 - second song title \n3:45 - third song title \n...");z +}) diff --git a/src/index.html b/src/index.html index 1d05135..4b17d47 100644 --- a/src/index.html +++ b/src/index.html @@ -18,17 +18,17 @@

Welcome to the Rusty slicer!

-

Input file

+

Input file

no location choosen

- +13:37 - one more time - Daft punk">