pub mod cmdline;
pub mod cursor;
pub mod panel;
pub mod window;
#[cfg(test)]
mod window_tests;
use crate::hl::ColorSchemeManagerArc;
use crate::syntax::SyntaxManagerArc;
use crate::ui::canvas::Canvas;
#[derive(Debug)]
pub struct WidgetContext {
pub syntax_manager: SyntaxManagerArc,
pub colorscheme_manager: ColorSchemeManagerArc,
}
impl WidgetContext {
pub fn new(
syntax_manager: SyntaxManagerArc,
colorscheme_manager: ColorSchemeManagerArc,
) -> Self {
Self {
syntax_manager,
colorscheme_manager,
}
}
}
pub trait Widgetable {
fn draw(&self, _canvas: &mut Canvas, _context: &WidgetContext) {
}
}
#[macro_export]
macro_rules! widgetable_enum_impl {
($enum:ident, $($variant:tt),*) => {
impl Widgetable for $enum {
fn draw(&self, canvas: &mut Canvas, context: &WidgetContext) {
match self {
$(
$enum::$variant(w) => w.draw(canvas, context),
)*
}
}
}
}
}