starting on #3
This commit is contained in:
parent
9c756f3550
commit
46e4030f46
59
src/main.rs
59
src/main.rs
@ -12,6 +12,8 @@ use iced::{
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use std::fs::{File, OpenOptions};
|
||||||
|
use std::io::{BufWriter, Write};
|
||||||
use std::{env, fs, path::PathBuf};
|
use std::{env, fs, path::PathBuf};
|
||||||
use texts::*;
|
use texts::*;
|
||||||
|
|
||||||
@ -69,6 +71,7 @@ enum Message {
|
|||||||
SetErrorMessage(usize, String),
|
SetErrorMessage(usize, String),
|
||||||
RecievedEvent(Event),
|
RecievedEvent(Event),
|
||||||
NoteInput(usize, text_editor::Action),
|
NoteInput(usize, text_editor::Action),
|
||||||
|
Save,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Message {
|
impl Message {
|
||||||
@ -197,10 +200,49 @@ impl State {
|
|||||||
}
|
}
|
||||||
// match normal messages
|
// match normal messages
|
||||||
match msg {
|
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) => {
|
Message::NoteInput(i, action) => {
|
||||||
let notes = &mut self.states[i].notes;
|
let notes = &mut self.states[i].notes;
|
||||||
notes.perform(action);
|
notes.perform(action);
|
||||||
}
|
},
|
||||||
Message::CycleTheme => {
|
Message::CycleTheme => {
|
||||||
let len = self.themes.len();
|
let len = self.themes.len();
|
||||||
let i = &mut self.theme_idx;
|
let i = &mut self.theme_idx;
|
||||||
@ -344,10 +386,17 @@ impl State {
|
|||||||
fn view(&self) -> Element<Message> {
|
fn view(&self) -> Element<Message> {
|
||||||
// Header bar, static, doesn't scroll
|
// Header bar, static, doesn't scroll
|
||||||
column![
|
column![
|
||||||
button("Cycle Themes")
|
row![
|
||||||
.on_press(Message::CycleTheme)
|
button("Cycle Themes")
|
||||||
.style(button::secondary),
|
.on_press(Message::CycleTheme)
|
||||||
scrollable(
|
.style(button::secondary)
|
||||||
|
,
|
||||||
|
button("Save")
|
||||||
|
.on_press(Message::Save)
|
||||||
|
.style(button::secondary)
|
||||||
|
,
|
||||||
|
],
|
||||||
|
scrollable(
|
||||||
row![
|
row![
|
||||||
row((0..self.states.len()).map(|col_index| {
|
row((0..self.states.len()).map(|col_index| {
|
||||||
column![
|
column![
|
||||||
|
Loading…
x
Reference in New Issue
Block a user