Commit Graph

892 Commits

Author SHA1 Message Date
Shixin Zeng
df0391aef2 [PAN] Interprete 'carriage return' as 'enter' (#342)
Pancurses returns different key codes for "Enter" in the normal area
('\r'), and the one in the numpad ('\n'). Cursive only interpretes '\n'
as Enter, and leaves '\r' as CtrlChar('m'), which is different than
that with NCurses on Linux, and makes 'Enter' key not trigger a clicked
event on buttons.
2019-05-08 10:07:05 -07:00
Gergely Nagy
cf86f64334 Enable horizontal scrollbar for debug console (#341) 2019-05-06 13:23:41 -07:00
Alexandre Bury
fb0d26fb4a Add Cursive::take_user_data 2019-04-24 11:48:51 -07:00
Alexandre Bury
26ea559479 Fix clippy warnings 2019-04-17 11:47:01 -07:00
Timon
34ecb67f1b Added crossterm backend. (#335)
Add a backend using the crossterm library.
2019-04-17 11:36:32 -07:00
Alexandre Bury
ea9d215fa3 Fix markdown tests 2019-04-15 15:50:52 -07:00
Alexandre Bury
ac28309b3b Use cfg-if for to define Cursive::default()
And update other dependencies
2019-04-15 15:47:23 -07:00
Alexandre Bury
51c6450688 Rustfmt 2019-04-11 17:08:55 -07:00
Alexandre Bury
158bc65c33 Add direct downcast methods to AnyView 2019-04-08 17:44:42 -07:00
Arnav Singh
070508f0cf Cursive::step() now returns true if something interesting happened. (#332)
Also make `Cursive::refresh()` public so that callers can force a refresh.

Fixes #331
2019-03-30 11:24:47 -07:00
Chris Vest
88037717e6 Add a sort method to SelectView, to easily sort all contained items lexicographically by their label. (#329)
* Add a sort method to SelectView, to easily sort all contained items lexicographically by their label.

* Add more sort methods to SelectView, bringing the API up to parity with Vec (except SelectView does not expose _unstable_ sorting).

* Rename SelectView::sort to sort_by_label to make it clear that it does not sort by the ordering of the items.

* The Ord implementation for select_view::Item is not necessary.

* Implement a SelectView::sort method for when the item values are orderable.
2019-03-30 10:22:08 -07:00
Alexandre Bury
8ce3a667f7 Add Cursive::set_fps 2019-03-28 17:33:15 -07:00
Alexandre Bury
3099588f16 Fix spans tests 2019-03-20 17:08:03 -07:00
Alexandre Bury
038294339d Fix clippy warning 2019-03-20 17:05:18 -07:00
Alexandre Bury
aeb0d88987 Skip width computation in print_styled 2019-03-20 16:57:48 -07:00
Alexandre Bury
c9dc371223 Add width field to Span and IndexedSpan 2019-03-20 16:48:48 -07:00
Alexandre Bury
19ad7b6cc3 Use hashbrown::HashMap 2019-03-16 16:16:30 -07:00
Alexandre Bury
3a0b49088b Add manual scroll methods to scroll::Core 2019-03-12 15:42:36 -07:00
Chris Vest
ea7b5dbae2 Add Backend::print_at_rep and make Printer::print_hline use it. (#326)
* Add Backend::print_at_rep and make Printer::print_hline use it.

This avoids a string allocation in `print_hline` and makes it faster, presumably for all backends.
This speeds up the rendering of the background in StackView.

* Fix a bug in how Printer::print_hline computes the repetition count.
2019-03-12 15:03:00 -07:00
Alexandre Bury
4b5a7867e3 Refactor scroll::Core mechanism.
Moved most View-trait-performing-functions outside of `scroll::Core`
into `scroll::raw`.
Added a `Scroller` trait and convenience methods like `scroll::layout` to
weave the borrows appropriately.
2019-03-12 14:31:56 -07:00
Chris Vest
561b83dbc9 Avoid iterating graphemes unless we have to.
Iterating graphemes with `text.graphemes(true)` is somewhat expensive due to the complexity of unicode.
However, we were doing it _twice_ in the `Printer::print` method in order to truncate the input text to fit the content area.
This changes that method to track the width of the intput text, and only do the grapheme iteration when truncation is actually necessary.
2019-03-12 21:30:46 +01:00
Chris Vest
0dfa337ba4 Use a single hashmap lookup to determine if a color has been resolved, and to what, instead of two lookups. 2019-03-12 09:54:48 +01:00
Alexandre Bury
b2a0fa18ff Disable dead code lint for unstable module 2019-03-11 11:52:58 -07:00
Alexandre Bury
91a78f402b Hide view::scroll behind unstable_scroll feature 2019-03-11 00:03:54 -07:00
Alexandre Bury
12ad66badd Migrate MenuPopup to new scrollbase 2019-03-08 13:57:05 -08:00
Alexandre Bury
ae0e9216ce Add new ScrollBase 2019-03-07 22:33:43 -08:00
Alexandre Bury
bc7972d539 Reorganize scroll module files 2019-03-07 19:08:31 -08:00
Alexandre Bury
6f28569dae Move logic from ScrollView to ScrollCore 2019-03-04 20:08:40 -08:00
Alexandre Bury
ef4448efe2
Merge pull request #322 from yaymukund/fix-docs-typo
Fix a typo in text-view.rs (`content` -> `view`)
2019-03-04 12:48:55 -08:00
Alexandre Bury
e839bb8274 Add Printer::{shrinked,cropped}_centered 2019-03-04 12:34:50 -08:00
mukund
bfbdf5c26b
Fix a typo in text-view.rs (content -> view) 2019-03-04 12:10:35 -08:00
Alexandre Bury
242a3c68a7 Fix clippy warnings 2019-03-04 10:31:36 -08:00
Alexandre Bury
9cd4f21963 Check $TERM on pancurses as well 2019-03-03 19:31:13 -08:00
Alexandre Bury
f765e9ac07 Cursive::ncurses & cie now return io::Result<Self> 2019-03-03 19:24:39 -08:00
Alexandre Bury
dcee6da16a ncurses: panic with error message if $TERM is unset 2019-03-03 18:24:04 -08:00
Alexandre Bury
4f34e97f27 Add user-data 2019-03-03 18:06:50 -08:00
Alexandre Bury
bcf5840c52 Add LinearLayout::{insert_child, swap_children, set_weight} 2019-03-03 10:55:43 -08:00
Chris Vest
7564a5d1db Reduce the title drawing cut-off point by 2 characters.
Panels and dialogs have borders with corners.
Previously, the title would draw over the border corner, including its own end-points.
Now the cut-off point is such that we do not draw the title if the right-hand end point and the border-corner do not also fit.
2019-03-03 10:37:53 +01:00
Alexandre Bury
40adcffbf5 Revert "use ... as _" to stay compatible with rust 1.31 2019-03-01 09:29:56 -08:00
Alexandre Bury
b83ab6f2d3 Enable raw mode for pancurses 2019-02-28 16:22:48 -08:00
Alexandre Bury
53ebf90c0c Enable raw mode for ncurses 2019-02-28 16:20:07 -08:00
Alexandre Bury
06b02e4665 Remove "extern crate" and rustfmt 2019-02-28 16:04:14 -08:00
Alexandre Bury
e096dc9740 Run cargo fix --edition-idioms 2019-02-28 15:55:10 -08:00
Alexandre Bury
e51be07e5d Update to Rust 2018
Run `cargo fix --edition` and update Cargo.toml
2019-02-28 15:54:12 -08:00
Alexandre Bury
88d2fb1f46 Simplifies backend input 2019-02-28 13:41:40 -08:00
Alexandre Bury
9bcbda4e7b Update Cursive::new example to compile on windows 2019-02-24 18:39:17 -08:00
Alexandre Bury
0fbb1c9cdd Do not run Cursive::new test 2019-02-22 16:14:07 -08:00
Alexandre Bury
8fe9a1d54e Better documentation for Cursive 2019-02-22 15:30:22 -08:00
Alexandre Bury
d7e57fd280 Rename toggle_debug_view -> toggle_debug_console 2019-02-22 15:02:34 -08:00
Alexandre Bury
3a7e10cffe Update debug view 2019-02-22 13:55:07 -08:00
Alexandre Bury
8b3f5a8de7 Add CursiveLogger and DebugView 2019-02-22 12:38:16 -08:00
Alexandre Bury
4852d25f51 Fix doc for Finder::call_on 2019-02-22 10:26:56 -08:00
Alexandre Bury
28ce8ca8bd Rename Finder::find_id -> Finder::call_on_id and add proper find_id
The previous naming looked like a bad case of copy-pasta.
2019-02-21 11:21:06 -08:00
Alexandre Bury
027038db6f Add StackView::remove_layer 2019-02-12 17:24:34 -08:00
Alexandre Bury
ec8f7c93e8 Wrap each layer in a CircularFocus 2019-01-24 11:57:30 -08:00
Alexandre Bury
3e1eefd2db Add CircularFocus view
Can be used to have focus wrap around when pressing Tab or Arrow keys.
2019-01-24 11:47:22 -08:00
Daniel Akhterov
1862b94c56 Hide Scrollbars 2018-12-30 14:49:23 -08:00
Alexandre Bury
2ab81ae6c9 Add HideableView::is_visible 2018-12-20 13:39:55 -08:00
Alexandre Bury
514751ff8a Replace try! with ? 2018-12-17 14:02:40 -08:00
Alexandre Bury
79e23bb70e Update dependencies 2018-11-30 16:55:47 -08:00
Alexandre Bury
a6d9b46bf3
Merge pull request #299 from agavrilov/radiogroup_callback
Add on_change callback to `RadioGroup`
2018-11-30 15:46:23 -08:00
Alexander Gavrilov
fcfca86a36 Add chainable variant of on_change 2018-11-30 15:44:56 -08:00
Alexander Gavrilov
8ea55a69a0 Add on_change callback 2018-11-30 14:34:17 -08:00
Alexandre Bury
6b278495d5 Use StyledString in SelectView 2018-11-30 13:19:08 -08:00
Alexandre Bury
7a58970163 Add PaddedView 2018-11-18 20:05:31 -08:00
Alexandre Bury
8e016a7f0a Update doc and changelog 2018-11-09 14:38:04 -08:00
Alexandre Bury
edeb7a8c13 Add EnableableView 2018-11-09 14:19:37 -08:00
Alexandre Bury
193f098ee0 Add Printer::enabled 2018-11-09 14:08:43 -08:00
Alexandre Bury
99dc97a092 Fix EventTrigger::none 2018-11-09 11:27:46 -08:00
Alexandre Bury
b60c69ca63 Fix example and add doc tests 2018-11-09 10:54:57 -08:00
Alexandre Bury
d9d34b4350 Add EventTrigger, refactor OnEventView 2018-11-09 10:40:06 -08:00
Alexandre Bury
3f4719c148 Fix typo in doc 2018-11-08 12:05:18 -08:00
Alexandre Bury
e82f0a077d Added doc & examples to utilities types 2018-11-08 11:24:48 -08:00
Alexandre Bury
02c2680eaa Do not infer WheelDown on non-legacy ncurses backends 2018-11-05 15:19:00 -08:00
Alexandre Bury
e111f982b9 Update for latest bear-lib-terminal 2018-11-05 11:03:52 -08:00
Alexandre Bury
005d505cc4 Enable wheel down detection on ubuntu 2018-11-05 10:59:55 -08:00
Alexandre Bury
9430fec91b Prepare for next ncurses release 2018-11-02 10:06:53 -07:00
Alexandre Bury
3b81305b16 Update ncurses backend to use mouse_v1 2018-11-01 14:38:14 -07:00
Alexandre Bury
b0a86ceb61 Rephrase doc 2018-10-22 19:30:09 -07:00
Alexandre Bury
9b3b16f64d Fix important_size for SelectView and ListView 2018-10-18 13:36:17 -07:00
Alexander Gavrilov
a5e9f890d0 Do not compile signal_hook on Windows 2018-10-18 07:52:38 -07:00
Alexandre Bury
44ddfc7abf Update Cursive::find_id doc comment
Mention SelectView and the need to get the type right.
2018-10-04 16:41:14 -07:00
Jacob Budin
38fdcc7bf8 Simplify Panel::wrap_needs_relayout 2018-10-02 14:20:14 -04:00
Jacob Budin
8d3be52927 Add title to views::Panel 2018-10-02 12:02:10 -04:00
Alexandre Bury
3d81ad92ec SelectView: make autojump opt-in 2018-09-27 16:01:37 -07:00
Alexandre Bury
333392e034 Add immut! macros 2018-09-24 14:28:23 -07:00
Alexandre Bury
810dc6a591 Fix desperate LinearLayout 2018-09-12 16:13:41 -07:00
Alexandre Bury
be977c705f Add Cursive::on_event 2018-09-05 08:55:29 -07:00
Alexandre Bury
b21224cf1c Add EventResult::and 2018-09-05 08:51:34 -07:00
Alexandre Bury
760cf11d92 Invalidate cache on mutable child access 2018-08-26 12:25:22 -07:00
Ben-Alderson
fe93b945fd Fix crash when removing a child from LinearLayout when final child has focus 2018-08-26 14:58:23 -04:00
Alexandre Bury
92f919978c Rustfmt 2018-08-22 13:33:29 -07:00
Alexandre Bury
2f0f632e22 Fix possible panic in scrollview with full-height bar 2018-08-20 14:47:10 -07:00
Alexandre Bury
2167ba68a1 Fix panic with empty content in ScrollView 2018-08-20 13:34:47 -07:00
Alexandre Bury
acc1405c2a Fix size cache in ScrollView 2018-08-20 13:30:42 -07:00
Alexandre Bury
5a6c84a55e Use With trait for chainable variant 2018-08-08 10:25:25 -07:00
Henry
528e986fc3 Modified ProgressBar to allow for customization of bar's color. (#279)
Added `color` component to `ProgressBar`.
Modified `ProgressBar::new` to default to `highlight` color.
Modified existing methods to use `color` component when printing.
Added relevant methods to change `color` component.
2018-08-08 10:23:15 -07:00
Alexandre Bury
56d7646086 Lose menubar focus after leaf action 2018-08-05 18:17:56 -07:00
Alexandre Bury
12d5e260f0 Fix ScrollView layout size 2018-07-25 20:58:22 -07:00
Alexandre Bury
28bb7af6af Add Callback::from_fn_mut
Cursive::add_global_callback now takes a FnMut
2018-07-25 15:05:18 -07:00