Commit graph

572 commits

Author SHA1 Message Date
Florian Dehau
a74d335cb4 Fix clippy warnings 2019-04-14 11:48:35 +02:00
Florian Dehau
7a5ad3fbdb Fix sparkline panic when max is zero 2019-04-14 11:35:41 +02:00
Florian Dehau
4436110c44 Improve onboarding in documentation 2019-03-24 21:37:55 +01:00
Florian Dehau
f8b3526426 Add code example for Constraint::Ratio 2019-03-10 18:05:27 +01:00
Florian Dehau
43e38ac483 Fix Buffer::merge
Coordinates returned by Buffer::pos_of were interpreted as local coordinates
while they were global. This was resulting in panics due to out of bounds
accesses. Interpreting the coordinates as global and using correct offsets
when computing the new index within the buffer for each cell fix the issue.
2019-03-10 17:36:14 +01:00
David Flemström
21e79ca078 Rebase and include necessary curses changes 2019-03-10 15:56:56 +01:00
David Flemström
a25bbea555 Add workarounds for weird termion escape code handling 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
David Flemström
d360cd3434 Support exact ratios for layout constraints 2019-02-28 07:15:24 +01:00
Florian Dehau
e037db076c fix(backend/curses): use chtype to achieve platform agnostic conversion of graphemes 2019-02-26 08:56:49 +01:00
Florian Dehau
3ef19f41e6 fix(backend/curses): avoid platform specific conversion of graphemes 2019-02-26 08:32:36 +01:00
Florian Dehau
da90ec15fa fix: add missing get_cursor and set_cursor on CursesBackend 2019-02-26 08:13:00 +01:00
Florian Dehau
7f5af46300 style: fmt 2019-02-26 08:12:43 +01:00
defiori
624e6ee047 fix: filter out wide unicode characters on windows 2019-02-26 07:49:59 +01:00
defiori
4a1f3cd61f feat: curses instance can be passed to backend 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
defiori
b30cae0473 feat: crossterm backend can use alternate screen 2019-02-26 07:45:19 +01:00
scauligi
7290086fe9 forgot to flush 2019-02-26 07:38:35 +01:00
scauligi
bca920bea0 get/set cursor position 2019-02-26 07:38:35 +01:00
Jonathan
cd41ca571f Modified with_crossterm naming scheme 2019-02-10 22:47:56 +01:00
Jonathan
dc654e9f6c Added ability to create crossterm with previously created crossterm::Screen 2019-02-10 22:47:56 +01:00
Florian Dehau
b669cf9ce7 style: fix clippy warnings 2019-02-03 22:42:09 +01:00
Florian Dehau
97f764b45d feat: handle crossterm errors 2019-02-03 20:02:36 +01:00
Florian Dehau
52a40ec99a fix: remove undefined crossterm attributes in windows builds 2019-01-23 07:28:40 +01:00
Sven-Hendrik Haase
a78fa73b34 Add new shape: Rectangle 2019-01-15 15:47:05 +00:00
Jens Krause
1c0b0abf61 Use UnicodeWidthStr::width()
to get width of `divider`.

Also use `set_string` instead of `set_symbol`. The latter cuts content of a multi-char divider.
2019-01-13 17:21:03 +00:00
Jens Krause
f7c6620e25 Fix documented example to fix doc-tests on CI 2019-01-13 17:21:03 +00:00
Jens Krause
16372f7847 Don't show divider after last tab 2019-01-13 17:21:03 +00:00
Jens Krause
72c2eb7182 Add divider to Tabs
to change appearance of tab dividers.
2019-01-13 17:21:03 +00:00
Sven-Hendrik Haase
144bfb71cf Upgrade to 2018 edition 2019-01-13 14:35:51 +00:00
Karoline Pauls
3fd9e23851 Buffer: correct diffing of buffers with multi-width characters
Resolves #104
2019-01-13 13:46:39 +00:00
Karoline Pauls
10642d0e04 Paragraph: word wrapping 2018-12-22 15:38:51 +01:00
Karoline Pauls
1802cf8dbc Improve wrapping of double-width characters 2018-12-22 15:38:51 +01:00
Karoline Pauls
090975481b Update tests and docs to take size from the Frame 2018-12-07 21:32:00 +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
Ash
a2776dfc86 Make sure we always emit a cursor goto for the first update.
Otherwise, if the first update is to (1, 0) then no goto occurs.
2018-12-07 19:52:22 +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
89dac9d2a6 buffer: add quotes to fmt::Debug for better testing experience 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
5cee2afc6d Limit Rect size to prevent u16 overflow 2018-11-25 19:59:12 +01:00
Florian Dehau
4c46ef69e9 Release v0.3.0 2018-11-04 20:25:07 +01:00
Florian Dehau
22e8fade7e feat: add experimental test backend 2018-11-04 20:16:10 +01:00
Florian Dehau
fdf3015ad0 feat(terminal): log error if failed to show cursor on drop 2018-10-14 17:00:13 +02: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
d8e5f57d53 style: fmt 2018-09-23 21:00:36 +02:00
Florian Dehau
aa85e597d9 fix(crossterm): fix goto coordinates 2018-09-23 21:00:18 +02:00
Florian Dehau
5d52fd2486 refactor: remove custom termion backends 2018-09-23 20:55:50 +02:00
Florian Dehau
4ae9850e13 fix: replace links to assets 2018-09-09 08:55:51 +02:00
Antoine Büsch
f795173886 Unify Item and Text 2018-09-08 08:41:57 +02:00
Antoine Büsch
e42ab1fed8 Move Text to widgets/mod.rs 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
cf169d1582 style: run rustfmt and clippy 2018-09-04 22:23:44 +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
3d63f9607f doc: update main documentation 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
Jeremy Day
cfc90ab7f6 fix(widgets): Prevent chart legend from rendering when no dataset has a name 2018-08-24 06:27:16 +02:00
Florian Dehau
9a9f49f467 fix(backend): Add missing color pattern 2018-06-09 11:49: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
Florian Dehau
62df7badf3 feat(layout): Add Corner enum 2018-06-09 11:26:59 +02:00
Robin Nehls
3f8a9079ee [widgets] implement text alignment for paragraph widget 2018-05-25 21:09:27 +02:00
Robin Nehls
5981767543 [style] add enum for 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
f96db9c74f [layout] Replace FnMut with FnOnce in Group::render
As the function does not need to mutate state and be run multiple times.
2018-05-06 11:49:32 +02:00
Florian Dehau
ef2054a45b [lib] Derive Debug on Terminal 2018-04-15 22:09:36 +02:00
Xavier Bestel
f4052e0e71 fix colors use, add missing Blue 2018-04-04 08:45:58 +02:00
Florian Dehau
36dea8373f [widgets][paragraph] Fix text wrapping 2018-04-01 19:03:49 +02:00
Florian Dehau
2cb823a15b [lib] Fix conversion from cassowary-rs results to internal layouts
The library used to compute the layout may returned negative results
given strange contraints. To avoid overflows on unsigned integers operations,
those results will be converted to 0 instead of being converted as is.
2018-04-01 18:28:17 +02:00
Florian Dehau
4b53acab14 [doc] Fix layout example in documentation 2018-04-01 18:28:17 +02:00
Florian Dehau
fcd1b7b187 [widgets][list] Set the style of the underlying list 2018-04-01 12:36:11 +02:00
Magnus Bergmark
d0d2f88346 BUG: Buffer::pos_of panics on inside-bounds index
- Add tests for this behavior.
- Extend documentation of Buffer::pos_of and Buffer::index_of
  - Clarify that the coordinates should be in global coordinate-space
  (rather than local).
  - Document panics.
  - Add examples.
2018-04-01 11:13:35 +02:00
Rafael Escobar
c56173462a Export AlternateScreenBackend. 2018-01-30 22:16:41 +01:00
Florian Dehau
f816e6bbc4 [backends] Improve termion backend
* Add AlternateScreenBackend
* Add a way to create a TermionBackend with a custom config
* Improve return values of several methods
2018-01-30 22:16:41 +01:00
Florian Dehau
7d273b576d Bump version 2017-12-26 22:13:40 +01:00
Florian Dehau
6a3b9fb130 [src][chart] fmt 2017-12-26 21:45:46 +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
8907ab90a1 [doc] Move "Get started" from README to src/lib.rs 2017-12-26 21:45:46 +01:00
Florian Dehau
5dd03d91ad [widgets] Fix a bug in chart layout 2017-12-26 20:41:40 +01:00
Emmanuel Sales
cb8af88adf Add Copy trait for layout enums 2017-12-26 09:21:12 +01:00
Florian Dehau
3012215e32 [widgets][tabs] Use generic type for tabs titles 2017-10-30 23:38:17 +01:00
Florian Dehau
ba80889333 [clippy] Fix warnings 2017-10-30 23:14:57 +01:00
Florian Dehau
1f285fbac0 [src] Run cargo fmt 2017-10-30 23:14:57 +01:00
Florian Dehau
3cc3585e48 [widgets][chart] Use generic type for labels 2017-10-30 21:18:31 +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
3b8cc241ac [widgets] Fix table doc test 2017-09-11 07:43:19 +02:00
Florian Dehau
ca3308e945 [widgets] Fix Row export 2017-09-11 07:43:19 +02:00
Florian Dehau
c18885d38b [widgets] Refactor Table Widget
* Add Row enum
* Move to a generic definition of table which allow iterators to be
passed as arguments and therefore reduce allocations
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
41eac2aa4e Refactor demo example 2017-09-10 21:38:17 +02:00
Florian Dehau
89a173fe9b Refactor List Widget
* Add a generic item object for the list. The item can either be some data
alone or some data and its style
* The List widget now store an Iterator over those element. This should
avoid the need of allocating memory to store its elements
* The List consume the Iterator when it is drawn
2017-09-10 21:38:17 +02:00
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.
2017-09-10 21:38:17 +02:00
Florian Dehau
a9aa23aead Add mouse support in TermionBackend
* Old TermionBackend is replaced by RawBackend
* Add TermionBackend with mouse support called MouseBackend
2017-09-07 08:32:08 +02:00
Florian Dehau
b2bb24b9d2 Fix rustfmt and clippy errors 2017-05-21 12:49:12 +02:00
Sebastian Woetzel
81cedbd6f2
fixes scroll handling for paragraph widget 2017-04-30 19:10:46 +02:00
Florian Dehau
116ee4439a Improve Paragraph widget
* Add the possibility to disable the markup rendering
* Fix parser error
2016-11-28 10:00:35 +01:00
Florian Dehau
e585bfeab5 Make List more user-friendly 2016-11-28 09:55:13 +01:00
Florian Dehau
feefa5d54f Convert backends to conditionnal features for compilation 2016-11-28 09:52:51 +01:00
Florian Dehau
4f8a57d500 Fix clippy warnings 2016-11-07 22:57:13 +01:00
Florian Dehau
b30fede80c Add the possibility to provide a RustBox instance at backend initialization 2016-11-07 22:28:50 +01:00
Florian Dehau
4bb2b8eb24 Add support for multiline gauge 2016-11-07 22:27:28 +01:00
Florian Dehau
5efc52e03d Fix parser in paragraph 2016-11-07 22:27:09 +01:00
Florian Dehau
a3c96865a8 Custom label for gauge 2016-11-07 15:57:35 +01:00
Florian Dehau
17c95cf826 Fix table example 2016-11-07 11:58:36 +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
6fb044950a Fix layout cache on nightly 2016-11-06 21:42:14 +01:00
Florian Dehau
b19c014889 Fix layout cache on nightly 2016-11-06 21:41:54 +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
9bc61551e2 Refactor Terminal to be able to support multiple backends
* Add Rustbox as an other possible backend
2016-11-05 19:18:48 +01:00
Florian Dehau
652ff12380 More documentation 2016-11-04 19:27:19 +01:00
Florian Dehau
fcac19d6c5 Documentation 2016-11-04 17:54:57 +01:00
Florian Dehau
7a25987352 Canvas widget refactoring 2016-11-04 17:53:51 +01:00
Florian Dehau
19a9cf8239 Fix text width measure in Text widget 2016-11-04 14:12:52 +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
20465f2159 Change dot symbol for line chart 2016-11-03 12:16:31 +01:00
Florian Dehau
a5b632aeb0 Cleanup API 2016-11-02 19:16:53 +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
dd6cdf1f11 Add Table widget base implementation 2016-11-01 15:59:05 +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
107d7297af Fix some layout problems 2016-10-31 18:04:10 +01:00
Florian Dehau
f0979dfeee Improve canvas functionalities and fix clippy warnings 2016-10-28 19:30:30 +02:00
Florian Dehau
25bb360f13 Fix list selection 2016-10-27 23:21:42 +02:00
Florian Dehau
d8d18d3d9d Fix layout computation 2016-10-27 23:03:31 +02:00
Florian Dehau
c862fa9ce3 Add Map widget 2016-10-27 22:55:24 +02:00
Florian Dehau
286e345dbc Add data for drawing a world map 2016-10-27 19:37:29 +02:00
Florian Dehau
7bdb11c681 Add Canvas widget
* Add a canvas widget to draw shapes using braille dots
* Use this widget in the chart widget when the braille mode is selected
2016-10-27 19:36:55 +02:00
Florian Dehau
da67a679f7 Add Tabs widget 2016-10-27 19:35:08 +02:00
Florian Dehau
b0b1645010 Rename set_characters method in buffer interface 2016-10-27 19:33:32 +02:00
Florian Dehau
95a160cf50 Add braille mode for the chart widget 2016-10-27 12:35:56 +02:00
Florian Dehau
bcb3d751bf Rename buffer methods 2016-10-27 12:35:26 +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
017eaa4122 Fix clippy warnings 2016-10-22 19:24:35 +02:00
Florian Dehau
0419fa7157 Update text widget (templating and wrapping) 2016-10-22 19:24: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
6ed19df342 Update color support for block, gauge, list and sparkline 2016-10-13 17:57:45 +02:00
Florian Dehau
ea1397319c Add support for multi line sparkline 2016-10-13 17:30:35 +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