starting on #3

This commit is contained in:
Oliver Atkinson 2025-05-16 11:25:44 -06:00
parent 9c756f3550
commit 46e4030f46

View File

@ -12,6 +12,8 @@ use iced::{
},
};
use std::fs::{File, OpenOptions};
use std::io::{BufWriter, Write};
use std::{env, fs, path::PathBuf};
use texts::*;
@ -69,6 +71,7 @@ enum Message {
SetErrorMessage(usize, String),
RecievedEvent(Event),
NoteInput(usize, text_editor::Action),
Save,
}
impl Message {
@ -197,10 +200,49 @@ impl State {
}
// match normal messages
match msg {
Message::Save => {
let opt = OpenOptions::new()
// create if doesn't already exist
.create(true)
.append(false)
// clear existing file
.truncate(true)
.write(true)
.open("save.md")
;
match opt {
Ok(file) => {
let mut buffer = BufWriter::new(file);
for col in &self.states {
// start code block
let _ = buffer.write_all("```\n".as_bytes());
// write header
if let Some(bible) = &col.bible_selected {
let translation = &bible.translation_name;
let location = &col.bible_search;
let _ = buffer.write_all(format!("{translation} {location}\n").as_bytes());
}
if let Some(scripture) = &col.scripture_body {
let _ = buffer.write_all(parse(scripture).as_bytes());
}
// end code block
let _ = buffer.write_all("```\n".as_bytes());
let _ = buffer.write_all(&col.notes.text().as_bytes());
}
let _ = buffer.flush();
},
Err(err) => {
eprintln!("{err}");
}
}
},
Message::NoteInput(i, action) => {
let notes = &mut self.states[i].notes;
notes.perform(action);
}
},
Message::CycleTheme => {
let len = self.themes.len();
let i = &mut self.theme_idx;
@ -344,10 +386,17 @@ impl State {
fn view(&self) -> Element<Message> {
// Header bar, static, doesn't scroll
column![
button("Cycle Themes")
.on_press(Message::CycleTheme)
.style(button::secondary),
scrollable(
row![
button("Cycle Themes")
.on_press(Message::CycleTheme)
.style(button::secondary)
,
button("Save")
.on_press(Message::Save)
.style(button::secondary)
,
],
scrollable(
row![
row((0..self.states.len()).map(|col_index| {
column![