starting on #3
This commit is contained in:
		
							
								
								
									
										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 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![
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user