summaryrefslogtreecommitdiffstats
path: root/src/miller_columns.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-02-21 21:41:52 +0100
committerrabite <rabite@posteo.de>2019-02-22 00:46:41 +0100
commit3b38143f9bc758b10d76ebae39bca5a15350622b (patch)
tree687dfb1df38bb46d775623579e90ef00f46076ed /src/miller_columns.rs
parentfe542047c231cff6c1959fe05cb51e177ddfbcc6 (diff)
added on_ready support
Diffstat (limited to 'src/miller_columns.rs')
-rw-r--r--src/miller_columns.rs46
1 files changed, 28 insertions, 18 deletions
diff --git a/src/miller_columns.rs b/src/miller_columns.rs
index 6351e8d..3c9bc8b 100644
--- a/src/miller_columns.rs
+++ b/src/miller_columns.rs
@@ -1,9 +1,12 @@
use termion::event::Key;
+use std::sync::{Arc, Mutex};
+
use crate::coordinates::{Coordinates, Position, Size};
use crate::preview::Previewer;
use crate::widget::Widget;
use crate::hbox::HBox;
+use crate::fail::{HError, HResult};
#[derive(PartialEq)]
pub struct MillerColumns<T> where T: Widget {
@@ -80,25 +83,27 @@ where
(left_coords, main_coords, preview_coords)
}
- pub fn get_left_widget(&self) -> Option<&T> {
+ pub fn get_left_widget(&self) -> HResult<&T> {
let len = self.widgets.widgets.len();
if len < 2 {
- return None;
+ return Err(HError::NoWidgetError);
}
- self.widgets.widgets.get(len - 2)
+ Ok(self.widgets.widgets.get(len - 2)?)
}
- pub fn get_left_widget_mut(&mut self) -> Option<&mut T> {
+ pub fn get_left_widget_mut(&mut self) -> HResult<&mut T> {
let len = self.widgets.widgets.len();
if len < 2 {
- return None;
+ return Err(HError::NoWidgetError);
}
- self.widgets.widgets.get_mut(len - 2)
+ Ok(self.widgets.widgets.get_mut(len - 2)?)
}
- pub fn get_main_widget(&self) -> &T {
- self.widgets.widgets.last().unwrap()
+ pub fn get_main_widget(&self) -> HResult<&T> {
+ let widget = self.widgets.widgets.last()?;
+ Ok(widget)
}
- pub fn get_main_widget_mut(&mut self) -> &mut T {
- self.widgets.widgets.last_mut().unwrap()
+ pub fn get_main_widget_mut(&mut self) -> HResult<&mut T> {
+ let widget = self.widgets.widgets.last_mut()?;
+ Ok(widget)
}
}
@@ -123,11 +128,11 @@ where
fn refresh(&mut self) {
let (left_coords, main_coords, preview_coords) = self.calculate_coordinates();
- if let Some(left_widget) = self.get_left_widget_mut() {
+ if let Ok(left_widget) = self.get_left_widget_mut() {
left_widget.set_coordinates(&left_coords);
}
- if let Some(main_widget) = self.widgets.widgets.last_mut() {
+ if let Ok(main_widget) = self.get_main_widget_mut() {
main_widget.set_coordinates(&main_coords);
}
@@ -137,15 +142,20 @@ where
fn get_drawlist(&self) -> String {
let left_widget = match self.get_left_widget() {
- Some(widget) => widget.get_drawlist(),
- None => "".into(),
+ Ok(widget) => widget.get_drawlist(),
+ Err(_) => "".into(),
};
- let main_widget = self.get_main_widget().get_drawlist();
- let preview = self.preview.get_drawlist();
- format!("{}{}{}", main_widget, left_widget, preview)
+ let main_widget = self.get_main_widget();
+ match main_widget {
+ Ok(main_widget) => {
+ let preview = self.preview.get_drawlist();
+ format!("{}{}{}", main_widget.get_drawlist(), left_widget, preview)
+ }
+ Err(_) => "".to_string()
+ }
}
fn on_key(&mut self, key: Key) {
- self.get_main_widget_mut().on_key(key);
+ self.get_main_widget_mut().unwrap().on_key(key);
}
}