[−][src]Crate cursive
Cursive
Cursive is a TUI library - it lets you easily build rich interfaces for use in a terminal.
Getting started
- Every application should start with a
Cursive
object. It is the main entry-point to the library. - A declarative phase then describes the structure of the UI by adding views and configuring their behaviours.
- Finally, the event loop is started by calling
Cursive::run(&mut self)
.
Views
Views are the main components of a cursive interface.
The views
module contains many views to use in your
application; if you don't find what you need, you may also implement the
View
trait and build your own.
Callbacks
Cursive is callback-driven: it reacts to events generated by user input.
During the declarative phase, callbacks are set to trigger on specific
events. These functions usually take an &mut Cursive
argument, allowing
them to modify the view tree at will.
Examples
use cursive::Cursive; use cursive::views::TextView; fn main() { let mut siv = Cursive::dummy(); siv.add_layer(TextView::new("Hello World!\nPress q to quit.")); siv.add_global_callback('q', |s| s.quit()); siv.run(); }
Debugging
The Cursive
root initializes the terminal on creation, and does cleanups
on drop. While it is alive, printing to the terminal will not work
as expected, making debugging a bit harder.
One solution is to redirect stderr to a file when running the application, and log to it instead of stdout.
Or you can use gdb as usual.
Re-exports
pub use self::vec::Vec2; |
Modules
align | Tools to control view alignment. |
backend | Define backends using common libraries. |
direction | Direction-related structures. |
event | User-input events and their effects. |
logger | Logging utilities |
menu | Build menu trees. |
theme | Handle colors and themes in the UI. |
traits | Commonly used traits bundled for easy import. |
utils | Toolbox to make text layout easier. |
vec | Points on the 2D character grid. |
view | Base elements required to build views. |
views | Various views to use when creating the layout. |
Macros
immut1 | Macro to wrap a |
immut2 | Macro to wrap a |
immut3 | Macro to wrap a |
inner_getters | Convenient macro to implement the getters for inner |
wrap_impl | Convenient macro to implement the |
Structs
Cursive | Central part of the cursive library. |
Printer | Convenient interface to draw on a subset of the screen. |
Rect | A non-empty rectangle on the 2D grid. |
XY | A generic structure with a value for each axis. |
Traits
With | Generic trait to enable chainable API |
Type Definitions
CbSink | Convenient alias to the result of |
ScreenId | Identifies a screen in the cursive root. |