Compare commits

..

No commits in common. "1753203c7d5a60e491b61381343d849325c3af39" and "e35b45a79299939fd4a59e8d3bb74843ecc49921" have entirely different histories.

4 changed files with 10 additions and 4 deletions

View File

@ -1,4 +1,4 @@
use crossterm::event::KeyEvent; use crossterm::event::{KeyEvent, MouseEvent};
use std::fmt; use std::fmt;
use std::sync::mpsc; use std::sync::mpsc;
@ -36,6 +36,8 @@ impl From<mpsc::RecvError> for EventError {
#[derive(Clone, Copy, Debug)] #[derive(Clone, Copy, Debug)]
pub enum Event { pub enum Event {
Key(KeyEvent), Key(KeyEvent),
Mouse(MouseEvent),
Resize(u16, u16),
} }
pub struct EventChannel { pub struct EventChannel {

View File

@ -41,6 +41,8 @@ impl<APP: IAppInteract> IEventHandler<APP> for EventHandler {
fn handle_next_event(&self, mut app: APP) -> Result<APP, EventError> { fn handle_next_event(&self, mut app: APP) -> Result<APP, EventError> {
match self.events.recv()? { match self.events.recv()? {
Event::Key(key_event) => app = Self::handle_key_event(app, key_event), Event::Key(key_event) => app = Self::handle_key_event(app, key_event),
Event::Mouse(_) => {}
Event::Resize(_, _) => {}
}; };
Ok(app) Ok(app)
} }

View File

@ -33,7 +33,9 @@ impl IEventListener for EventListener {
Ok(event) => { Ok(event) => {
if let Err(err) = match event { if let Err(err) = match event {
CrosstermEvent::Key(e) => self.events.send(Event::Key(e)), CrosstermEvent::Key(e) => self.events.send(Event::Key(e)),
_ => Ok(()), CrosstermEvent::Mouse(e) => self.events.send(Event::Mouse(e)),
CrosstermEvent::Resize(w, h) => self.events.send(Event::Resize(w, h)),
_ => unimplemented!(),
} { } {
return err; return err;
} }

View File

@ -231,13 +231,13 @@ impl<'a> ArtistOverlay<'a> {
let indent = format!("\n{item_indent}"); let indent = format!("\n{item_indent}");
let list = vec let list = vec
.iter() .iter()
.map(|(k, v)| format!("{k}: {}", Self::slice_to_string(v, list_indent))) .map(|(k, v)| format!("{k}: {}", Self::vec_to_string(v, list_indent)))
.collect::<Vec<String>>() .collect::<Vec<String>>()
.join(&indent); .join(&indent);
format!("{indent}{list}") format!("{indent}{list}")
} }
fn slice_to_string<S: AsRef<str>>(vec: &[S], indent: &str) -> String { fn vec_to_string<S: AsRef<str>>(vec: &Vec<S>, indent: &str) -> String {
if vec.len() < 2 { if vec.len() < 2 {
vec.first() vec.first()
.map(|item| item.as_ref()) .map(|item| item.as_ref())