#cursive #tui #terminal #align #view

bin+lib cursive-aligned-view

A view wrapper for gyscos/cursive views which aligns child views

5 releases

✓ Uses Rust 2018 edition

0.1.4 Sep 10, 2019
0.1.3 Sep 9, 2019
0.1.2 Sep 9, 2019
0.1.1 Sep 3, 2019
0.1.0 Sep 3, 2019

#54 in Command-line interface

BSD-3-Clause

37KB
391 lines

Welcome to cursive-aligned-view 👋

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


This project provides an AlignedView for gyscos/cursive views which makes it possible to align the child view (center, left, right, top, bottom). The AlignedView uses the required_size reported by the child view and fills the rest of the available space with the views background color.

How does it look like? demo terminalizer

Expand to view aligned-view demo

Usage

Simply add to your Cargo.toml

[dependencies]
cursive-aligned-view = "^0"

Aligning a child view

The easiest way to align a view is via the Alignable trait:

use cursive_aligned_view::Alignable;

let aligned = child_view.align_center();

This is the preferred way as it is chainable and consistent with cursive's Boxable and Identifiable traits.

As an alternative you can use the AlignedView constructors directly:

use cursive_aligned_view::AlignedView;

let aligned = AlignedView::with_center(child_view);

Look into the documentation for a detailed explanation on the API.

Supported Alignments

Alignment Construction method
top left align_top_left
top center align_top_center
top right align_top_right
center left align_center_left
center align_center
center right align_center_right
bottom left align_bottom_left
bottom center align_bottom_center
bottom right align_bottom_right

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.

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
~91K SLoC