Skip to content

Commit

Permalink
working updates
Browse files Browse the repository at this point in the history
  • Loading branch information
Redhawk18 committed Oct 1, 2023
1 parent d14d935 commit 216f381
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 54 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,5 @@ Cargo.lock
/target

# editors
.idea
.vscode
73 changes: 25 additions & 48 deletions tui/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@ use blaze_core::data::Tab;
use cursive::{event::Key, Cursive, CursiveRunnable};

pub fn start_tui() {
let mut application = Blaze::new();
application.run()
let mut siv = CursiveRunnable::default();
siv.set_user_data(Blaze);
run(&mut siv)
}

pub(crate) struct Blaze {
siv: CursiveRunnable,
}
pub(crate) struct Blaze;

pub(crate) enum Message {
// menu bar
Expand All @@ -22,60 +21,38 @@ pub(crate) enum Message {
OpenFolder,
Save,
SaveAs,
Quit,

//tabs
TabNew(Tab),
TabSelected(usize),
TabClosed(usize),
}

impl Blaze {
fn new() -> Self {
Self {
siv: cursive::default(),
}
}

fn global_callbacks(&mut self) {
self.siv.add_global_callback('q', Cursive::quit);
}

fn menu_bar(&mut self) {
menu_bar(&mut self.siv);
self.siv
.add_global_callback(Key::Esc, |s| s.select_menubar());
}

pub fn run(&mut self) {
self.global_callbacks();
self.menu_bar();
self.theme();
self.view();
self.siv.run()
}

fn theme(&mut self) {
let theme = theme(self.siv.current_theme().clone());
self.siv.set_theme(theme);
}

pub fn update(&mut self, message: Message) {
match message {
Message::NewFile => todo!(),
Message::OpenFile => todo!(),
Message::OpenFolder => todo!(),
Message::Save => todo!(),
Message::SaveAs => todo!(),
Message::Quit => todo!(),
Message::TabNew(_) => todo!(),
Message::TabSelected(_) => todo!(),
Message::TabClosed(_) => todo!(),
}
}
}

fn view(&mut self) {
let theme = self.siv.current_theme().clone();
self.siv.add_layer(tab_bar(theme));
}
fn custom_theme(siv: &mut CursiveRunnable) {
let theme = theme(siv.current_theme().clone());
siv.set_theme(theme);
}

fn global_callbacks(siv: &mut CursiveRunnable) {
siv.add_global_callback('q', Cursive::quit);
}

fn run(siv: &mut CursiveRunnable) {
global_callbacks(siv);
menu_bar(siv);
custom_theme(siv);
view(siv);
siv.run()
}

fn view(siv: &mut CursiveRunnable) {
let theme = siv.current_theme().clone();
siv.add_layer(tab_bar(theme));
}
15 changes: 9 additions & 6 deletions tui/src/views/menu_bar.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
use cursive::{menu::Tree, Cursive};
use crate::{Message, Blaze};

use cursive::{event::Key, menu::Tree, Cursive};

/// Due to how to part of the ui is designed, It's not possible to return the view created.
/// A mut reference is required to add a menubar.
pub fn menu_bar(siv: &mut Cursive) {
siv.menubar().add_subtree("File", file());
siv.set_autohide_menu(false);
siv.add_global_callback(Key::Esc, |s| s.select_menubar());
}

fn file() -> Tree {
Tree::new()
.leaf("New File", |_| {})
.leaf("Open File", |_| {})
.leaf("Open Folder", |_| {})
.leaf("Save", |_| {})
.leaf("Save As", |_| {})
.leaf("New File", |s| {s.user_data::<Blaze>().unwrap().update(Message::NewFile)})
.leaf("Open File", |s| {s.user_data::<Blaze>().unwrap().update(Message::OpenFile)})
.leaf("Open Folder", |s| {s.user_data::<Blaze>().unwrap().update(Message::OpenFolder)})
.leaf("Save", |s| {s.user_data::<Blaze>().unwrap().update(Message::Save)})
.leaf("Save As", |s| {s.user_data::<Blaze>().unwrap().update(Message::SaveAs)})
.leaf("Quit", |s| s.quit())
}

0 comments on commit 216f381

Please sign in to comment.