mirror of
https://codeberg.org/unspeaker/perch.git
synced 2025-12-06 09:36:42 +01:00
try to write to file (os error 22)
This commit is contained in:
parent
576725a949
commit
0d1d4b6e9a
4 changed files with 15 additions and 9 deletions
|
|
@ -33,8 +33,8 @@ impl Handle<TuiIn> for Perch {
|
|||
match &self.mode {
|
||||
Some(Mode::Edit { .. }) => self.handle_edit(event),
|
||||
Some(Mode::Help { page }) => self.handle_help(event, *page),
|
||||
Some(Mode::Save { choice }) => self.handle_save(event, *choice),
|
||||
Some(Mode::Quit { choice }) => self.handle_quit(input, *choice),
|
||||
Some(Mode::Save { choice }) => self.handle_save(event, *choice)?,
|
||||
Some(Mode::Quit { choice }) => self.handle_quit(input, *choice)?,
|
||||
None => match event {
|
||||
press!(F(1)) => { self.help_begin() },
|
||||
press!(Char('q')) => { self.quit_begin(&input) },
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use crate::*;
|
||||
|
||||
impl Perch {
|
||||
pub fn handle_quit (&mut self, input: &TuiIn, choice: u8) {
|
||||
pub fn handle_quit (&mut self, input: &TuiIn, choice: u8) -> Usually<()> {
|
||||
match &*input.event() {
|
||||
press!(Esc) => { self.mode = None },
|
||||
press!(Left) => { self.mode = Some(Mode::Quit {
|
||||
|
|
@ -18,13 +18,14 @@ impl Perch {
|
|||
self.mode = None
|
||||
},
|
||||
2 => {
|
||||
self.save_all();
|
||||
self.save_all()?;
|
||||
input.done()
|
||||
},
|
||||
_ => unreachable!(),
|
||||
},
|
||||
_ => {}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
pub fn quit_begin (&mut self, input: &TuiIn) {
|
||||
if self.changes == 0 {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use crate::*;
|
||||
|
||||
impl Perch {
|
||||
pub fn handle_save (&mut self, event: &Event, choice: u8) {
|
||||
pub fn handle_save (&mut self, event: &Event, choice: u8) -> Usually<()> {
|
||||
match event {
|
||||
press!(Esc) => { self.mode = None }
|
||||
press!(Left) => { self.mode = Some(Mode::Save {
|
||||
|
|
@ -19,13 +19,14 @@ impl Perch {
|
|||
self.mode = None;
|
||||
},
|
||||
2 => {
|
||||
self.save_all();
|
||||
self.save_all()?;
|
||||
self.mode = None
|
||||
},
|
||||
_ => unreachable!(),
|
||||
},
|
||||
_ => {}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
pub fn save_begin (&mut self) {
|
||||
if self.changes > 0 {
|
||||
|
|
|
|||
10
src/model.rs
10
src/model.rs
|
|
@ -87,14 +87,18 @@ impl Perch {
|
|||
self.changes = 0;
|
||||
}
|
||||
/// Write all modified tags
|
||||
pub(crate) fn save_all (&mut self) {
|
||||
pub(crate) fn save_all (&mut self) -> Usually<()> {
|
||||
use lofty::{tag::TagExt, config::WriteOptions};
|
||||
for entry in self.entries.iter_mut() {
|
||||
if let Metadata::Music {
|
||||
original_tag, modified_tag, ..
|
||||
modified_tag: Some(modified_tag), ..
|
||||
} = &mut *entry.info.write().unwrap() {
|
||||
todo!("save {:?}", entry.path);
|
||||
let tag = modified_tag.read().unwrap();
|
||||
let mut file = std::fs::File::open(entry.path.as_path())?;
|
||||
tag.save_to(&mut file, WriteOptions::default())?;
|
||||
}
|
||||
}
|
||||
self.changes = 0;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue