1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// (C) 2025 - Enzo Lombardi
//! Views module containing all UI components and widgets.
//!
//! This module provides the building blocks for creating text-based user interfaces,
//! including windows, dialogs, buttons, input fields, and more. All widgets implement
//! the [`View`] trait which provides a consistent interface for drawing, event handling,
//! and focus management.
//!
//! # Widget Categories
//!
//! ## Core Components
//! - [`View`] - Base trait for all UI components
//! - [`Group`](group::Group) - Container for organizing child views
//! - [`Window`](window::Window) - Movable, resizable window with frame
//! - [`Dialog`](dialog::Dialog) - Modal dialog with standard button handling
//! - [`Desktop`](desktop::Desktop) - Root container managing all windows
//!
//! ## Input Widgets
//! - [`InputLine`](input_line::InputLine) - Single-line text input with validation
//! - [`Editor`](editor::Editor) - Multi-line text editor with syntax highlighting
//! - [`Button`](button::Button) - Clickable button that emits commands
//! - [`CheckBox`](checkbox::CheckBox) - Binary on/off checkbox
//! - [`RadioButton`](radiobutton::RadioButton) - Mutually exclusive radio buttons
//!
//! ## Display Widgets
//! - [`StaticText`](static_text::StaticText) - Non-interactive text label
//! - [`TextViewer`](text_viewer::TextViewer) - Scrollable read-only text viewer
//! - [`ListBox`](listbox::ListBox) - Scrollable list of selectable items
//! - [`Memo`](memo::Memo) - Multi-line read-only text display
//!
//! ## Menus and Status
//! - [`MenuBar`](menu_bar::MenuBar) - Top menu bar with pull-down menus
//! - [`StatusLine`](status_line::StatusLine) - Bottom status line with key hints
//!
//! ## Dialogs and Utilities
//! - [`FileDialog`](file_dialog::FileDialog) - File selection dialog
//! - [`msgbox`] - Message boxes and confirmation dialogs
//! - [`HelpWindow`](help_window::HelpWindow) - Context-sensitive help system
//!
//! # Examples
//!
//! Creating a simple window with a button:
//!
//! ```rust,no_run
//! use turbo_vision::views::{Window, Button};
//! use turbo_vision::core::geometry::Rect;
//! use turbo_vision::core::command::CM_OK;
//!
//! let mut window = Window::new(Rect::new(10, 5, 50, 15), "My Window");
//! let button = Button::new(Rect::new(15, 5, 25, 7), "OK", CM_OK);
//! window.add(Box::new(button));
//! ```
pub use ;
pub use ;
pub use ;
pub use MenuBox;
pub use ;
pub use Label;