Expand description
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
Cursiveobject. 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 a &mut Cursive argument, allowing
them to modify the view tree at will.
Examples
extern crate cursive;
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 do 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 vec::Vec2;Modules
Macros
FnMut with 1 argument into a Fn.FnMut with 2 arguments into a Fn.FnMut with 3 arguments into a Fn.View in
ViewWrapper.ViewWrapper trait.