Florian Dehau
4f728d363f
fix(widgets/list): stop highlighting blank placeholders
2020-04-14 18:40:59 +02:00
Florian Dehau
e81af75427
fix(examples): improve input handling in crossterm demo
...
* avoid stacking events
* ensure tick events are sent at the given tick rate (and not everytime a key is pressed).
2020-04-14 18:00:52 +02:00
Florian Dehau
c98002eb76
feat: add an option to run the examples without all unicode symbols
2020-04-14 02:17:22 +02:00
Florian Dehau
584e1b0500
refactor(widgets/canvas): allow canvas to render with a simple dot character instead of braille patterns
...
This change allows developers to gracefully degrade the output if the targeted
terminal does not support the full range of unicode symbols.
2020-04-14 02:17:22 +02:00
Stephan Dilly
7676d3c7df
add clear widget and popup example utilizing it
2020-04-12 15:16:24 +02:00
Florian Dehau
3f62ce9c19
chore: remove unecessary dependencies
...
* Remove log, stderrlog, structopt
* Add argh
2020-03-13 02:07:13 +01:00
Florian Dehau
ae677099d6
feat(widgets/table): allow one row to be selected
2020-03-13 00:36:19 +01:00
Florian Dehau
140db9b2e2
refactor(canvas): update shape drawing strategy
...
* Update the `Shape` trait. Instead of returning an iterator of point, all
shapes are now aware of the surface they will be drawn to through a `Painter`.
In order to draw themselves, they paint points of the "braille grid".
* Rewrite how lines are drawn using a common line drawing algorithm (Bresenham).
2020-03-12 23:14:46 +01:00
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.
2020-02-23 19:23:37 +01:00
Florian Dehau
67dd1ac608
fix: remove array_into_iter warnings
2020-02-23 16:20:54 +01:00
Florian Dehau
d50327548b
style: run rustfmt
2020-01-19 18:44:00 +01:00
Florian Dehau
e6ce0ab9a7
refactor(examples): add input modes to user input examples
2020-01-19 18:41:00 +01:00
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.
2020-01-19 15:44:03 +01:00
Matthew Stevenson
682349c03e
update block example; add BorderType to exposed widgets API
2020-01-19 15:17:59 +01:00
Matthew Stevenson
f1bc00b67f
add rounded corners and double borders to block example
2020-01-19 15:17:59 +01:00
Timon
60b99cfc66
feat: bump crossterm to 0.14
2019-12-15 23:03:02 +01:00
Timon
e4873e4da9
feat(backend): bump crossterm to 0.13
...
* removed flush calls because execute already calls flush under the hood.
* moved some static functions into From traits
* removed useless clone in demo
* upgrade to crossterm 0.13
* map all errors
2019-11-29 09:06:59 +01:00
Jeffas
94877f4e7e
Use constraints for table column widths
...
This allows table column widths to be adapted more and scale with the
UI.
The constraints are solved using the Cassowary solver. An added
constraint for fitting them all in the width is added.
2019-10-31 09:18:24 +01:00
Florian Dehau
3747ddbefb
feat(backend): Refactor crossterm backend
...
* Remove compilation warnings
* Fix rendering artifacts in the crossterm demo. In particular, the bold modifier
was leaking on most of the terminal screen because the old logic was not
properly unsetting the bold modifier after use (took inspiration of the termion
backend implementation)
2019-10-31 09:17:47 +01:00
Timon_Post
a0f6605f59
Implemented command api crossterm, for better perfomance.
2019-08-04 13:18:03 +02:00
Joe Ardent
85f74dd802
Fix typo in table example.
2019-07-16 06:16:14 +02:00
Florian Dehau
9a73ead88d
Improve crossterm demo
...
* Use AlternateScreen
* Handle input events
2019-06-16 23:03:36 +02:00
Sebastian Thiel
2dfe9c1663
[example: user_input] Assure the cursor responds immediatel when hitting backspace
...
This was discovered with the termion backend in alacritty on OSX.
2019-06-03 20:12:10 +02:00
timonpost@hotmail.nl
567cf7b8e5
update 0.9.2
2019-05-17 14:25:55 +02:00
Florian Dehau
d83baab433
Add modifiers in demo
...
As several modifiers are now supported on the same `Style` struct, make sure
that this feature is illustrated in some places of the demo.
2019-03-10 17:43:56 +01:00
David Flemström
b079d4da4c
Fix some examples that accidentally changed color
2019-03-10 15:56:56 +01:00
David Flemström
b7664a4108
Support several modifiers and indexed colors at once
2019-03-10 15:56:56 +01:00
Florian Dehau
7f5af46300
style: fmt
2019-02-26 08:12:43 +01:00
defiori
4a1f3cd61f
feat: curses instance can be passed to backend
2019-02-26 07:49:59 +01:00
defiori
7c4a3d2b02
fix(examples): bring in line with demo organization
2019-02-26 07:49:59 +01:00
defiori
d75198a8ee
feat: add pancurses backend
2019-02-26 07:49:59 +01:00
defiori
cadb41c9e3
fix: unified crossterm backend
2019-02-26 07:45:19 +01:00
Florian Dehau
f20512b599
feat: add rustbox and crossterm demo
2019-02-10 23:28:31 +01:00
Florian Dehau
0168442c22
chore: remove typos
2019-02-03 22:42:09 +01:00
Florian Dehau
09c09d2fd1
fix(examples): remove logging in layout example
2019-02-03 22:42:09 +01:00
Florian Dehau
b669cf9ce7
style: fix clippy warnings
2019-02-03 22:42:09 +01:00
Florian Dehau
ec6b46324e
feat(examples): add cmd line args to the demo
2019-02-03 22:42:09 +01:00
Sven-Hendrik Haase
a78fa73b34
Add new shape: Rectangle
2019-01-15 15:47:05 +00:00
Sven-Hendrik Haase
144bfb71cf
Upgrade to 2018 edition
2019-01-13 14:35:51 +00:00
Karoline Pauls
10642d0e04
Paragraph: word wrapping
2018-12-22 15:38:51 +01:00
Karoline Pauls
063ab2f87d
Improve the Paragraph example
2018-12-22 15:38:51 +01:00
Karoline Pauls
228816f5f8
Frame: provide consistent size for rendering
2018-12-07 21:32:00 +01:00
Karoline Pauls
8522e028f1
Run cargo fmt
with the new Rust stable toolchain (1.31.0)
2018-12-07 19:54:13 +01:00
Karoline Pauls
cc95c8cfb0
Gauge: use f64 internally and allow to set any f64 between 0 and 1
2018-12-05 21:20:12 +01:00
Karoline Pauls
8cdfc883b9
Feature: Autoresize
...
It basically never makes sense to render without syncing the size.
Without resizing, if shrinking, we get artefacts. If growing, we may get
panics (before this change the Rustbox sample (the only one which didn't
handle resizing on its own) panicked because the widget would get an
updated size, while the terminal would not).
2018-12-04 08:39:32 +01:00
Florian Dehau
b3689eceb7
feat: update outdated dependencies
2018-11-25 21:49:37 +01:00
Karoline Pauls
50fef0fb26
Fix rustbox example
2018-11-25 19:59:12 +01:00
Florian Dehau
37aa06f508
style(examples): rustfmt
2018-11-04 19:04:51 +01:00
Florian Dehau
f6d2f8f929
feat(examples): use generic backend in draw functions
2018-11-04 18:49:30 +01:00
Florian Dehau
32947669d5
feat(examples): show how to move the cursor
2018-11-04 18:32:31 +01:00
Karoline Pauls
03bfcde147
[widgets][paragraph]: Truncate long lines when wrap is false
2018-10-14 16:11:28 +02:00
Florian Dehau
7b4d35d224
feat: restore the cursor state on terminal drop
2018-09-24 08:03:52 +02:00
Florian Dehau
08ab92da80
refactor: clean examples
...
* Introduce a common event handler in order to focus on the drawing part
* Remove deprecated custom termion backends
2018-09-23 20:59:51 +02:00
Florian Dehau
e14190ae4b
fix: update crossterm example
2018-09-09 08:54:12 +02:00
Antoine Büsch
f795173886
Unify Item and Text
2018-09-08 08:41:57 +02:00
Antoine Büsch
0544c023f5
Rename Text::{Data -> Raw, StyledData -> Styled}
2018-09-08 08:41:57 +02:00
Antoine Büsch
ff47f9480b
Introduce builder methods for Text to make it more ergonomic
2018-09-08 08:41:57 +02:00
Antoine Büsch
70561b7c54
Fix examples and doctests
2018-09-08 08:41:57 +02:00
Antoine Büsch
559c9c75f3
Make Text accept both borrowed and owned strings
2018-09-08 08:41:57 +02:00
Florian Dehau
6c69160d6b
feat: remove unecessary borrows of Style
2018-09-07 22:24:52 +02:00
Florian Dehau
bcd1e30376
refactor: update List select behavior
...
* allow a selectable list to have no selected item
* show highlight_symbol only when something is selected
2018-09-04 22:23:44 +02:00
Florian Dehau
40bad7a718
feat: add initial support for crossterm
2018-09-04 22:23:44 +02:00
Florian Dehau
13e194cd26
refactor: update widgets
...
* all widgets use the consumable builder pattern
* `draw` on terminal expect a closure that take a frame as only arg
2018-09-04 22:23:44 +02:00
Florian Dehau
d6016788ef
refactor: clippy + rustfmt
2018-09-04 22:23:44 +02:00
Florian Dehau
ad602a54bf
refactor(widgets): replace text rendering in Paragraph
...
* remove custom markup language
* add Text container for both raw and styled strings
2018-09-04 22:23:44 +02:00
Florian Dehau
7181970a32
feat: split layout from rendering
...
* remove layout logic from Terminal
* replace Group with Layout
* add Frame intermediate object
2018-09-04 22:23:44 +02:00
Florian Dehau
df7493fd33
style: Run rustfmt
2018-06-09 11:26:59 +02:00
Florian Dehau
5de571fb03
feat(widgets): Add start_corner option to List
2018-06-09 11:26:59 +02:00
Robin Nehls
597e219257
[examples] update paragraph example to show text alignment
2018-05-25 21:09:27 +02:00
Florian Dehau
36146d970a
[style] rustfmt
2018-05-25 07:57:00 +02:00
Florian Dehau
36a5eb2110
Format code
2018-05-06 15:54:47 +02:00
Florian Dehau
24dc73912b
[examples] Update table example
...
Modify example to use variables outside of the closure scope
2018-05-06 11:49:32 +02:00
Florian Dehau
169dc43565
[examples] Add layout example
2018-04-01 18:28:17 +02:00
Florian Dehau
f620af1455
[examples][list] Change style of first list
2018-04-01 12:36:11 +02:00
Florian Dehau
d53ecaeade
[examples] Clean user input example
2018-01-27 10:46:58 +01:00
Florian Dehau
299279dc2d
[examples] Add user input example
2018-01-27 10:46:58 +01:00
Florian Dehau
c3c5109c5a
[src] Fix build and tests
2017-12-26 21:45:46 +01:00
Florian Dehau
151d7e8a1c
[src] Update dependencies
...
* Update all dependencies to their latest versions
* Change border to Borders to match v1.0 of bitflags
2017-12-26 21:45:46 +01:00
Florian Dehau
af16518650
[src] Run rustfmt
2017-12-26 21:45:46 +01:00
Florian Dehau
e675d6735c
[dependencies] Replace log4rs by stderrlog
2017-10-31 00:08:29 +01:00
Florian Dehau
f24517bc5a
[examples] Run cargo fmt
2017-10-30 23:14:57 +01:00
talha
3045ac4124
Minor codestyle fixes
2017-10-30 17:15:28 +01:00
Florian Dehau
71545a0aa8
Run cargo fmt
2017-09-11 08:15:39 +02:00
Florian Dehau
d008892e04
[examples] Fix Demo example
2017-09-11 07:43:19 +02:00
Florian Dehau
af6d589459
[examples] Fix Table example
2017-09-11 07:43:19 +02:00
Florian Dehau
d6a91d1865
Fix List lifetime issues
...
Add a new lifetime for the items inside the list
2017-09-10 21:38:17 +02:00
Florian Dehau
7749e5ee35
Fix custom_widget example
2017-09-10 21:38:17 +02:00
Florian Dehau
b8fd4a8685
Fix List example
2017-09-10 21:38:17 +02:00
Florian Dehau
41eac2aa4e
Refactor demo example
2017-09-10 21:38:17 +02:00
Florian Dehau
bb61028e0c
Fix examples
2017-09-07 08:32:08 +02:00
Florian Dehau
fd1e1f22af
Add specification for all examples in Cargo.toml
2017-06-15 08:57:07 +02:00
Florian Dehau
b2bb24b9d2
Fix rustfmt and clippy errors
2017-05-21 12:49:12 +02:00
Sebastian Woetzel
7652cc440d
fixes panic when terminal was resized
2017-05-08 21:34:41 +02:00
Florian Dehau
feefa5d54f
Convert backends to conditionnal features for compilation
2016-11-28 09:52:51 +01:00
Florian Dehau
f025cb0221
Update README and examples
2016-11-08 10:19:28 +01:00
Florian Dehau
42fb0803af
Add examples and demo
2016-11-08 00:35:46 +01:00
Florian Dehau
75d5efa443
Update demo
2016-11-07 15:57:46 +01:00
Florian Dehau
ad239ef23c
Update list and table to be more flexible
...
* Move List to SelectableList
* Create a more generic List
* Change the way to pass items to the table widget
* Update demo
2016-11-07 11:56:08 +01:00
Florian Dehau
d70e2d1678
Add README, LICENSE and update demo
2016-11-07 01:07:53 +01:00
Florian Dehau
662e2dd102
Fix examples
2016-11-06 21:41:32 +01:00
Florian Dehau
224eb2d8e0
Add support for text styling
2016-11-06 18:49:57 +01:00
Florian Dehau
0b950de09f
Update demo
2016-11-05 19:20:04 +01:00
Florian Dehau
e00639fab1
Update demo
2016-11-04 17:54:12 +01:00
Florian Dehau
93cc237007
Documentation
2016-11-03 23:59:04 +01:00
Florian Dehau
9e5195096a
More work on the widgets API
...
* Change slice to vecs in table and canvas to ease the interaction with data
constructed on the fly
* Add a legend to charts based on datasets' names and colors
* Update demo to reflect previous updates
2016-11-03 12:20:39 +01:00
Florian Dehau
dce4bf15b7
Add a way to disable logging in the demo
2016-11-03 00:11:06 +01:00
Florian Dehau
d42dfaa710
Add example for implementing a custom widget
2016-11-02 19:17:18 +01:00
Florian Dehau
a36e20f217
Add background_color support for all existing wigets
2016-11-02 17:08:52 +01:00
Florian Dehau
d038b283db
Fix chart and canvas widgets
2016-11-01 22:54:16 +01:00
Florian Dehau
cd919e69f5
Fix some display errors
2016-11-01 15:59:33 +01:00
Florian Dehau
654be037be
Redefine canvas widget and add shapes
...
* Give the canvas widget a proper modules and define a standard way to
draw to it (Shape trait)
* Add Points, Line, Rectangle and Map shapes
2016-11-01 12:09:14 +01:00
Florian Dehau
c862fa9ce3
Add Map widget
2016-10-27 22:55:24 +02:00
Florian Dehau
659a1e05dc
Update prototype
2016-10-27 19:37:06 +02:00
Florian Dehau
95a160cf50
Add braille mode for the chart widget
2016-10-27 12:35:56 +02:00
Florian Dehau
85bd76e17d
Small improvements
2016-10-26 19:19:46 +02:00
Florian Dehau
c91436baee
Change rendering method and adapt widget trait accordingly
2016-10-26 14:32:45 +02:00
Florian Dehau
ea485b5439
Simpler layout and cleanup api
2016-10-23 14:14:43 +02:00
Florian Dehau
b411690fdd
Update prototype
2016-10-22 19:25:17 +02:00
Florian Dehau
063bde8764
Add bar chart prototype
2016-10-22 12:51:41 +02:00
Florian Dehau
85ca4f6b19
Add features to the list widgets
2016-10-22 11:26:46 +02:00
Florian Dehau
7a427c06d4
Update chart widget and fix colors in all widgets
2016-10-21 19:02:19 +02:00
Florian Dehau
15c3471f0b
Fix clippy warnings
2016-10-20 17:17:35 +02:00
Florian Dehau
d7131ead11
Cache layout and performance fixes
2016-10-20 16:26:34 +02:00
Florian Dehau
07ff2b08eb
Improve Chart Widget, safer buffer and unicode width
2016-10-20 12:01:09 +02:00
Florian Dehau
fde0ba95dd
Remove cache system and add unicode segmentation
2016-10-16 00:38:20 +02:00
Florian Dehau
bd404f0238
Cleanup code and add chart widget
2016-10-14 19:44:52 +02:00
Florian Dehau
2ffb63363c
Update prototype according to previous change
2016-10-13 17:58:09 +02:00
Florian Dehau
86ae92b489
Add color support to the gauge widget
2016-10-13 17:30:18 +02:00
Florian Dehau
9816ccd4e3
Change layout properties and improve gauge and sparkline
2016-10-13 16:27:33 +02:00
Florian Dehau
275b210fd4
Change layout algorithm
2016-10-13 13:56:27 +02:00
Florian Dehau
d11dedd864
Add sparkline widget and fix warnings
2016-10-12 19:43:39 +02:00
Florian Dehau
5b5d37ee69
Add gauge, fix rendering and cleanup code
2016-10-12 16:12:42 +02:00
Florian Dehau
93f3263e2b
Fix redraw for disappearing widgets
2016-10-12 11:36:39 +02:00
Florian Dehau
13f6a5a98b
Add list widget and improve rendering
2016-10-11 19:54:35 +02:00
Florian Dehau
459201bc65
First commit
2016-10-09 19:46:53 +02:00