https://github.com/deinstapel/cursive-aligned-view
A view wrapper for gyscos/cursive views which aligns child views 🖥️
https://github.com/deinstapel/cursive-aligned-view
align alignment cursive cursive-views terminal
Last synced: 4 months ago
JSON representation
A view wrapper for gyscos/cursive views which aligns child views 🖥️
- Host: GitHub
- URL: https://github.com/deinstapel/cursive-aligned-view
- Owner: deinstapel
- License: bsd-3-clause
- Created: 2019-09-02T13:47:27.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-08-12T17:55:42.000Z (over 1 year ago)
- Last Synced: 2025-09-13T00:27:15.749Z (5 months ago)
- Topics: align, alignment, cursive, cursive-views, terminal
- Language: Rust
- Homepage:
- Size: 158 KB
- Stars: 18
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Welcome to cursive-aligned-view 👋
A view wrapper for
gyscos/cursive
views which aligns child views
---
This project provides an `AlignedView` for [gyscos/cursive](https://github.com/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` [](https://github.com/faressoft/terminalizer)
Expand to view

## Usage
Simply add to your `Cargo.toml`
```toml
[dependencies]
cursive-aligned-view = "^0"
```
### Aligning a child view
The easiest way to align a view is via the `Alignable` trait:
```rust
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:
```rust
use cursive_aligned_view::AlignedView;
let aligned = AlignedView::with_center(child_view);
```
Look into the [documentation](https://docs.rs/cursive-aligned-view) 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 [](https://github.com/deinstapel/cursive-aligned-view/actions)
### Running the tests
#### Preparing integration tests
To perform the test it's advisable to install [`cargo-insta`](https://github.com/mitsuhiko/insta) in case your tests fail and you want to inspect the received output.
```
$ cargo install cargo-insta
```
You will also need insta to validate new tests you add or update older ones.
#### Running all test suites
Just run
```
$ cargo test
```
to execute all available tests.
---
Or if you want to interactively inspect failed tests
```
$ cargo insta test
```
#### shields.io endpoints
[shields.io](https://shields.io) endpoints are generated inside the `./target/shields` folder. They are used in this README.
## Authors
**Fin Christensen**
> [:octocat: `@fin-ger`](https://github.com/fin-ger)
> [:elephant: `@fin_ger@weirder.earth`](https://weirder.earth/@fin_ger)
> [:bird: `@fin_ger_github`](https://twitter.com/fin_ger_github)
**Johannes Wünsche**
> [:octocat: `@jwuensche`](https://github.com/jwuensche)
> [:elephant: `@fredowald@mastodon.social`](https://mastodon.social/web/accounts/843376)
> [:bird: `@Fredowald`](https://twitter.com/fredowald)
## Show your support
Give a :star: if this project helped you!