aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/mod.rs')
-rw-r--r--src/widgets/mod.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/widgets/mod.rs b/src/widgets/mod.rs
new file mode 100644
index 0000000..46bfa20
--- /dev/null
+++ b/src/widgets/mod.rs
@@ -0,0 +1,21 @@
+use bevy::prelude::*;
+use downcast_rs::{impl_downcast, DowncastSync};
+use ratatui::{layout::Rect, Frame};
+
+use crate::input::events::TerminalInputEvent;
+
+/// Components for this module
+pub mod components;
+
+/// Systems for this module
+pub(crate) mod systems;
+
+/// Trait which defines an interface for terminal widgets
+pub trait TerminalWidget: DowncastSync {
+ /// Called every frame to render the widget
+ fn render(&mut self, frame: &mut Frame, rect: Rect);
+
+ /// Called when a terminal input event is invoked to update any state accordingly
+ fn handle_events(&mut self, _event: &TerminalInputEvent, _commands: &mut Commands) {}
+}
+impl_downcast!(sync TerminalWidget);