8 releases

✓ Uses Rust 2018 edition

0.2.5 Sep 10, 2019
0.2.4 Sep 10, 2019
0.1.1 Sep 1, 2019

#53 in Command-line interface

22 downloads per month

BSD-3-Clause

225KB
859 lines

Welcome to cursive-tabs 👋

stable build nightly build crates.io Docs.rs GitHub PRs Welcome
A tab view wrapper for gyscos/cursive views


This project is work-in-progress

This project provides a wrapper view to be able to easily handle multiple tabs that can be switched to at any time without having to change the order of the views for gyscos/cursive views.

How does it look like? demo terminalizer

Expand to view tabs demo

Usage

Simply add to your Cargo.toml

[dependencies]
cursive-tabs = "^0"

Creating your TabView and add tabs

This crate provides a struct TabView you can use to add tabs and switch between them.

use cursive::{views::TextView, Cursive};
use cursive_tabs::TabView;

let mut siv = Cursive::default();
let tabs = TabView::new().with_tab(0, TextView::new("Our first tab!"));
// We can continue to add as many tabs as we want!

siv.add_layer(tabs);
siv.run();

Look into the documentation for more examples and a detailed explanation.

Troubleshooting

If you find any bugs/unexpected behaviour or you have a proposition for future changes open an issue describing the current behaviour and what you expected.

Development cargo test shellshot

Running the tests

‼️ CAUTION ‼️ This crate uses Tmux for end2end testing and will kill your Tmux server during testing!

Preparing integration tests

In order to run the integration tests, you first need to install a recent version of >=npm-10 and >=tmux-2.6!

After npm and tmux are installed, install required dependencies:

$ ./scripts/prepare-end2end-tests.sh

This will use npm to install jest and shellshot in the tests folder.

Running all test suites

Just run

$ cargo test

to execute all available tests.

shields.io endpoints

shields.io endpoints are generated inside the ./target/shields folder. They are used in this README.

Public API naming

The current public API of this crate is not consistent with RFC 344. This is due to cursive itself not being consistent with RFC 344. This crate tries to implement a smooth user experience for cursive users. Therefore, the cursive naming convention was adapted. When cursive upstream converts their API to a RFC 344 consistent naming scheme, this crate will adapt to the changes.

Authors

Fin Christensen

:octocat: @fin-ger
🐘 @fin_ger@mastodon.social
🐦 @fin_ger_github


Johannes Wünsche

:octocat: @jwuensche
🐘 @fredowald@mastodon.social
🐦 @Fredowald

Show your support

Give a ⭐️ if this project helped you!

Dependencies

~5MB
~96K SLoC