diff --git a/.idea/bibliofile.iml b/.idea/bibliofile.iml
new file mode 100644
index 0000000..633cf01
--- /dev/null
+++ b/.idea/bibliofile.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..7b8c306
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 33dc3e9..d01780a 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -49,28 +49,28 @@
- {
- "keyToString": {
- "RunOnceActivity.OpenProjectViewOnStart": "true",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "RunOnceActivity.cidr.known.project.marker": "true",
- "WebServerToolWindowFactoryState": "false",
- "cf.first.check.clang-format": "false",
- "cidr.known.project.marker": "true",
- "git-widget-placeholder": "master",
- "ignore.virus.scanning.warn.message": "true",
- "last_opened_file_path": "/home/dan/CLionProjects/bibliofile",
- "node.js.detected.package.eslint": "true",
- "node.js.detected.package.tslint": "true",
- "node.js.selected.package.eslint": "(autodetect)",
- "node.js.selected.package.tslint": "(autodetect)",
- "org.rust.cargo.project.model.PROJECT_DISCOVERY": "true",
- "org.rust.disableDetachedFileInspectionD:/bibliofile/src/html_module.rs": "true",
- "org.rust.disableDetachedFileInspectionD:/bibliofile/src/main.rs": "true",
- "settings.editor.selected.configurable": "preferences.pluginManager",
- "vue.rearranger.settings.migration": "true"
+
+}]]>
@@ -139,6 +139,7 @@
+
1687972565061
@@ -196,6 +197,11 @@
+
diff --git a/meditations.epub:Zone.Identifier b/meditations.epub:Zone.Identifier
new file mode 100644
index 0000000..053d112
--- /dev/null
+++ b/meditations.epub:Zone.Identifier
@@ -0,0 +1,3 @@
+[ZoneTransfer]
+ZoneId=3
+HostUrl=about:internet
diff --git a/src/main.rs b/src/main.rs
index de08c88..5e47db8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -9,16 +9,14 @@ Last edited: 10/14/23
mod html_module;
use cursive::views::{Dialog, TextView};
-use cursive::backends::termion::termion;
-use cursive::event;
+use cursive::Cursive;
+use cursive::view::Scrollable;
use epub::doc::EpubDoc; //library for navigating epubs
use std::*;
use std::i32;
-use std::io::stdin;
use std::path::Path;
-use termion::event::{Event, Key};
-use termion::input::TermRead;
-use termion::scroll;
+
+
@@ -56,38 +54,34 @@ fn main() {
//this function manages the screen
fn screen_func(epub_file: &str){
+
let mut page_num = 1;
- let textinfo = get_text(epub_file, &page_num, "next");
+ let mut siv = cursive::default();
+ let textinfo = get_init_text(epub_file, &page_num, "next");
let text = textinfo.0;
let title = textinfo.1;
page_num = textinfo.2;
+
+
// Creates the cursive root - required for every application.
let mut siv = cursive::default();
+ siv.add_global_callback('q', |s| s.quit());
// Creates a dialog with a single "Quit" button
siv.add_layer(Dialog::around(TextView::new(text))
.title(title)
- .button("Quit", |s| s.quit()));
+ .scrollable()
+ .scroll_x(true),
+ );
// Starts the event loop.
siv.run();
-
- let c = stdin();
- for c in stdin().events() {
- let evt = c.unwrap();
- match evt {
- Event::Key(Key::Up) => scroll::Up(1),
-
- _ => {}
- }
- }
-
}
-fn get_text(epub_file: &str, mut page_num: &i32, direction: &str) -> (String, String, i32){
+fn get_text(s: &mut Cursive, epub_file: &str, mut page_num: &i32, direction: &str) -> (String, String, i32) {
let doc = EpubDoc::new(&epub_file);
assert!(doc.is_ok());
let mut doc = doc.unwrap();
@@ -123,7 +117,44 @@ fn get_text(epub_file: &str, mut page_num: &i32, direction: &str) -> (String, St
(text, title.unwrap(), usize_num as i32)
}
+}
+ fn get_init_text(epub_file: &str, mut page_num: &i32, direction: &str) -> (String, String, i32){
+ let doc = EpubDoc::new(&epub_file);
+ assert!(doc.is_ok());
+ let mut doc = doc.unwrap();
+ let mut usize_num = *page_num as usize;
+
+ return if direction == "next" {
+ usize_num = usize_num + 1;
+ let title = doc.mdata("title");
+
+ doc.set_current_page(usize_num);
+ let content = doc.get_current_str();
+ let str_content = content.unwrap();
+ let text = html_module::main(str_content.0);
+
+ (text, title.unwrap(), usize_num as i32)
+ } else if direction == "last" {
+ usize_num = usize_num - 1;
+ let title = doc.mdata("title");
+
+ doc.set_current_page(usize_num);
+ let content = doc.get_current_str();
+ let str_content = content.unwrap();
+ let text = html_module::main(str_content.0);
+
+ (text, title.unwrap(), usize_num as i32)
+ } else {
+ let title = doc.mdata("title");
+
+ doc.set_current_page(usize_num);
+ let content = doc.get_current_str();
+ let str_content = content.unwrap();
+ let text = html_module::main(str_content.0);
+
+ (text, title.unwrap(), usize_num as i32)
+ }
}