[tui] Remove AppComponent data.

It just seems to be simpler this way.
This commit is contained in:
2026-01-24 10:47:29 -05:00
parent a3c1065f96
commit 029e0b2952
6 changed files with 142 additions and 222 deletions

View File

@@ -1,4 +1,3 @@
use crate::tui::app::{AppComponents, ComponentOf};
use crate::tui::component::{Action, Component, ComponentState, Focus};
use ratatui::buffer::Buffer;
use ratatui::crossterm::event::{Event, KeyCode, KeyEvent};
@@ -14,27 +13,16 @@ pub struct Logger {
pub(crate) component_state: ComponentState,
}
impl<'a> ComponentOf<Logger> for AppComponents<'a> {
fn as_ref(&self) -> Option<&Logger> {
if let AppComponents::AppLogger(ref e) = *self {
return Some(e);
}
None
}
fn as_mut(&mut self) -> Option<&mut Logger> {
if let AppComponents::AppLogger(ref mut e) = *self {
return Some(e);
}
None
}
}
impl Logger {
pub fn id() -> &'static str {
"Logger"
}
pub fn new() -> Self {
Self {
state: TuiWidgetState::new(),
component_state: ComponentState::default().with_help_text(concat!(
"Q: Quit | Tab: Switch state | ↑/↓: Select target | f: Focus target",
"Q: Quit | ↑/↓: Select target | f: Focus target",
" | ←/→: Display level | +/-: Filter level | Space: Toggle hidden targets",
" | h: Hide target selector | PageUp/Down: Scroll | Esc: Cancel scroll"
)),
@@ -47,7 +35,6 @@ impl Widget for &Logger {
where
Self: Sized,
{
// TODO: Use output_file?
TuiLoggerSmartWidget::default()
.style_error(Style::default().fg(Color::Red))
.style_debug(Style::default().fg(Color::Green))
@@ -66,14 +53,6 @@ impl Widget for &Logger {
}
impl Component for Logger {
fn id(&self) -> &str {
"Logger"
}
fn is_active(&self) -> bool {
self.component_state.focus == Focus::Active
}
fn handle_event(&mut self, event: Event) -> anyhow::Result<Action> {
if let Some(key_event) = event.as_key_event() {
return self.handle_key_events(key_event);
@@ -99,4 +78,8 @@ impl Component for Logger {
}
Ok(Action::Pass)
}
fn is_active(&self) -> bool {
self.component_state.focus == Focus::Active
}
}