GUI Progress counter
This commit is contained in:
+12
-3
@@ -302,9 +302,10 @@ fn main() {
|
||||
}
|
||||
drop(s);
|
||||
|
||||
let total = asc_paths.len();
|
||||
if let Some(w) = window_weak.upgrade() {
|
||||
w.set_busy(true);
|
||||
w.set_status("Decoding...".into());
|
||||
w.set_status(format!("Decoding... 0/{}", total).into());
|
||||
}
|
||||
|
||||
let window_weak = window_weak.clone();
|
||||
@@ -314,10 +315,18 @@ fn main() {
|
||||
.map_err(|e| format!("Failed to read DBC: {}", e))?;
|
||||
let dbc = Dbc::try_from(data.as_str())
|
||||
.map_err(|e| format!("Failed to parse DBC: {:?}", e))?;
|
||||
let mut out = Vec::with_capacity(asc_paths.len());
|
||||
for asc in &asc_paths {
|
||||
let mut out = Vec::with_capacity(total);
|
||||
for (i, asc) in asc_paths.iter().enumerate() {
|
||||
let info = libsvld::decode(&dbc, asc, &output_dir);
|
||||
out.push(build_file_result(asc, info));
|
||||
let done = i + 1;
|
||||
let w = window_weak.clone();
|
||||
slint::invoke_from_event_loop(move || {
|
||||
if let Some(w) = w.upgrade() {
|
||||
w.set_status(format!("Decoding... {}/{}", done, total).into());
|
||||
}
|
||||
})
|
||||
.ok();
|
||||
}
|
||||
Ok(out)
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user