Commit Graph

43 Commits (a346704cdc3c176bbfbe57bac7b004301e3a6dbf)

Author SHA1 Message Date
Oleks (オレクス) a346704cdc
feat(block): add option to center and right align the title (#462)
* Added ability to set title alignment, added tests, modified blocks example to show the feature

* Added test for inner with title in block

* Updated block example to show center alignment

* Formatting fixed

* Updated tests to use lamdas and be more concise. Updated title alignmnet code to be more straightforward and have correct behavior when placing title in the center without left border
3 years ago
Florian Dehau eb1e3be722 fix(widgets/block): make Block::inner return more accurate results on small areas 4 years ago
Florian Dehau 5ea54792c0 refactor(widgets/table): more flexible table
- control over the style of each cell and its content using the styling capabilities of Text.
- rows with multiple lines.
- fix panics on small areas.
- less generic type parameters.
4 years ago
Florian Dehau 8a27036a54 fix(widgets/block): allow Block to render on small areas 4 years ago
Florian Dehau 0ffea495b1 refactor: implement cascading styles
- merge `Style` and `StyleDiff` together. `Style` now is used to activate or deactivate certain
style rules not to overidden all of them.
- update all impacted widgets, examples and tests.
4 years ago
Florian Dehau 88c4b191fb feat(text): add new text primitives 4 years ago
Florian Dehau bc2a512101 feat: add missing `Clone` and `Copy` on types 4 years ago
Loïc Girault d987225ac8 Add thick lines and line::Set struct
Add a new style of line and use a struct to avoid duplication of
matching
4 years ago
Florian Dehau 6cb57f5d2a feat: add stateful widgets
Most widgets can be drawn directly based on the input parameters. However, some
features may require some kind of associated state to be implemented.

For example, the `List` widget can highlight the item currently selected. This
can be translated in an offset, which is the number of elements to skip in
order to have the selected item within the viewport currently allocated to this
widget. The widget can therefore only provide the following behavior: whenever
the selected item is out of the viewport scroll to a predefined position (make
the selected item the last viewable item or the one in the middle).
Nonetheless, if the widget has access to the last computed offset then it can
implement a natural scrolling experience where the last offset is reused until
the selected item is out of the viewport.

To allow such behavior within the widgets, this commit introduces the following
changes:
- Add a `StatefulWidget` trait with an associated `State` type. Widgets that
can take advantage of having a "memory" between two draw calls needs to
implement this trait.
- Add a `render_stateful_widget` method on `Frame` where the associated
state is given as a parameter.

The chosen approach is thus to let the developers manage their widgets' states
themselves as they are already responsible for the lifecycle of the wigets
(given that the crate exposes an immediate mode api).

The following changes were also introduced:

- `Widget::render` has been deleted. Developers should use `Frame::render_widget`
instead.
- `Widget::background` has been deleted. Developers should use `Buffer::set_background`
instead.
- `SelectableList` has been deleted. Developers can directly use `List` where
`SelectableList` features have been back-ported.
4 years ago
Florian Dehau ea43413507 fix: remove clippy warnings 4 years ago
Florian Dehau 9085c81e76 refactor: clean up border type for blocks
* Merge line symbols in a single module.
* Replace set_border_type with border_type to match other builder methods.
* Remove unecessary branching.
4 years ago
Matthew Stevenson a72389b28c revert to single Block struct; add set_border_type method and BorderType enum 4 years ago
Matthew Stevenson 06d159fb7b add RoundedBlock and DoubleBlock structs that impl From Block; add Block::rounded() and Block::double_border() 4 years ago
Florian Dehau b669cf9ce7 style: fix clippy warnings 5 years ago
Sven-Hendrik Haase 144bfb71cf Upgrade to 2018 edition 6 years ago
Florian Dehau 6c69160d6b feat: remove unecessary borrows of Style 6 years ago
Florian Dehau d6016788ef refactor: clippy + rustfmt 6 years ago
Florian Dehau 36a5eb2110 Format code 6 years ago
Florian Dehau c3c5109c5a [src] Fix build and tests 7 years ago
Florian Dehau 151d7e8a1c [src] Update dependencies
* Update all dependencies to their latest versions
* Change border to Borders to match v1.0 of bitflags
7 years ago
Florian Dehau 1f285fbac0 [src] Run cargo fmt 7 years ago
Florian Dehau 71545a0aa8 Run cargo fmt 7 years ago
Florian Dehau b1737ce667 Update Widget Trait
The draw function now take a &mut reference to the widget, allowing the
widget to modify itself when drawn. This change the semantic of the draw
call since the widget should now be considered "consumed" after it.
7 years ago
Florian Dehau 662e2dd102 Fix examples 8 years ago
Florian Dehau 224eb2d8e0 Add support for text styling 8 years ago
Florian Dehau fcac19d6c5 Documentation 8 years ago
Florian Dehau a5b632aeb0 Cleanup API 8 years ago
Florian Dehau a36e20f217 Add background_color support for all existing wigets 8 years ago
Florian Dehau cd919e69f5 Fix some display errors 8 years ago
Florian Dehau bcb3d751bf Rename buffer methods 8 years ago
Florian Dehau c91436baee Change rendering method and adapt widget trait accordingly 8 years ago
Florian Dehau 7a427c06d4 Update chart widget and fix colors in all widgets 8 years ago
Florian Dehau 15c3471f0b Fix clippy warnings 8 years ago
Florian Dehau 07ff2b08eb Improve Chart Widget, safer buffer and unicode width 8 years ago
Florian Dehau fde0ba95dd Remove cache system and add unicode segmentation 8 years ago
Florian Dehau bd404f0238 Cleanup code and add chart widget 8 years ago
Florian Dehau 6ed19df342 Update color support for block, gauge, list and sparkline 8 years ago
Florian Dehau 9816ccd4e3 Change layout properties and improve gauge and sparkline 8 years ago
Florian Dehau 275b210fd4 Change layout algorithm 8 years ago
Florian Dehau d11dedd864 Add sparkline widget and fix warnings 8 years ago
Florian Dehau 5b5d37ee69 Add gauge, fix rendering and cleanup code 8 years ago
Florian Dehau 13f6a5a98b Add list widget and improve rendering 8 years ago
Florian Dehau 459201bc65 First commit 8 years ago