Commit Graph

765 Commits

Author SHA1 Message Date
Alexandre Bury
acf075369c Smoother progress bars 2018-06-26 13:17:57 -07:00
Alexandre Bury
a4111accce Remove debug lines 2018-06-24 10:56:02 -07:00
Alexandre Bury
fda4bae8d6 Better ncurses synchronization
Prevent any concurrent access to ncurses in event-driven steps.
2018-06-23 18:41:15 -07:00
Alexandre Bury
e3887847fd Remove ScrollBase from TextView
Wrap the `TextView` in a `ScrollView` to achieve scrolling.
2018-06-22 14:57:55 -07:00
Alexandre Bury
9a21273167 Fix scrollview cache 2018-06-22 14:50:48 -07:00
Alexandre Bury
3a9ee0df41 Fix scrollview mouse grab 2018-06-22 13:13:58 -07:00
Alexandre Bury
6ce2dba8a1 Fix clippy warnings 2018-06-21 14:44:30 -07:00
Alexandre Bury
bd78bca91b Don't drag scrollbars if they're not visible 2018-06-20 17:35:58 -07:00
Alexandre Bury
2935f0f569 Add scroll strategy to ScrollView 2018-06-20 11:56:22 -07:00
Alexandre Bury
9bd1eb320d Add size cache to ScrollView 2018-06-20 11:48:09 -07:00
Alexandre Bury
88a15a75f1 Dialog: add methods to deal with buttons 2018-06-18 23:22:16 -07:00
Alexandre Bury
6e1fc7fdb5 Update dependencies 2018-06-18 23:13:02 -07:00
Alexandre Bury
b96ea52a92 Do not import chan_signal if not required 2018-06-18 18:47:11 -07:00
Alexandre Bury
3f16e8ed60 Do not use chan_signal on windows 2018-06-18 16:50:09 -07:00
Alexandre Bury
26e5f51192 Use term_size instead of ioctl 2018-06-18 16:08:55 -07:00
Alexandre Bury
f3d822c00c Fixes for ScrollView 2018-06-17 18:17:16 -07:00
Alexandre Bury
804e41ec43 Fix resize event 2018-06-17 17:26:03 -07:00
Alexandre Bury
14fe6f3b36 Cargo fmt 2018-06-16 13:23:09 -07:00
Alexandre Bury
35eb1ec5a2 Fix pancurses 2018-06-16 12:57:20 -07:00
Alexandre Bury
83bcf4fb72 Merge branch 'master' into callback_preemption 2018-06-16 11:03:39 -07:00
Alexandre Bury
3f5b37951b Do not consume input before exit 2018-06-16 10:58:55 -07:00
Paul
03e143f4c3 Implement scroll_to_top, scroll_to_bottom, scroll_to_left, and scroll_to_right 2018-06-16 10:51:17 -07:00
Alexandre Bury
5e1956b737 Merge branch 'master' into scroll 2018-06-15 23:21:10 -07:00
Alexandre Bury
363913c68b Fix panics from overflow subtraction 2018-06-15 23:13:57 -07:00
Alexandre Bury
5cf870baaf Add scrollbar grab to ScrollView 2018-06-15 20:24:05 -07:00
Alexandre Bury
0c318b7194 Add scrollbars to ScrollView 2018-06-15 19:18:24 -07:00
Alexandre Bury
d52299a6e1 Add HideableView 2018-06-13 21:35:37 -07:00
Alexandre Bury
9569e991bf Make Palette::add_namespace public 2018-06-10 23:35:31 -07:00
Alexandre Bury
8acc08f340 Rustfmt 2018-06-10 23:29:19 -07:00
Alexandre Bury
017e100b1b Add custom values to Palette
This updates `Palette` to add a tree of custom values.
Branches from this tree can be copied back to the root with
Palette::merge. This can be used to group related values together.
2018-06-10 23:29:19 -07:00
Robin Stumm
e81e67cebe add transparent layer to StackView
test StackView::get()
2018-06-06 13:44:20 +02:00
Alexandre Bury
70cddae454 Add comments 2018-05-21 22:51:10 -07:00
Alexandre Bury
8edc0e20c9 Cargo fmt 2018-05-21 19:21:27 -07:00
Alexandre Bury
2db49da1fe Fix linearlayout focus grab 2018-05-21 18:08:41 -07:00
Alexandre Bury
5eddc1b89a Scolling fixes 2018-05-21 17:54:43 -07:00
Alexandre Bury
94504ae91b Scrollview: move offset to keep important area in view 2018-05-21 17:25:32 -07:00
Andrzej J Skalski
cabeef1d16 added with_theme to Printer 2018-05-21 15:53:38 +02:00
Alexandre Bury
c8d39910ab Backend: add AtomicBool to stop input thread 2018-05-20 10:55:13 -07:00
Alexandre Bury
0b6e5b6ad4 Add event polling to Blt backend
Basically simulates a constant set_fps(30)
2018-05-20 10:42:52 -07:00
Alexandre Bury
05e1212a50 Refactor Backend input model
Backends now have to send input to the given `chan::Sender<Event>`.
They send these events from a separate thread, allowing selection
between input and callbacks.

This currently breaks the BearLibTerminal backend, which requires all
calls to come from the UI thread.

This might not be super-safe for the ncurses backend also. We hope that
input and output are separate enough that they can run concurrently without
problem.
2018-05-20 09:59:35 -07:00
Alexandre Bury
2088d5de2a Cargo fmt 2018-05-17 17:37:39 -07:00
Alexandre Bury
755854963f Fix clippy warnings 2018-05-17 17:35:57 -07:00
Alexandre Bury
80f66262be Scrollview: use proper size for child's layout() call 2018-05-08 18:10:45 -07:00
Alexandre Bury
20cb033b8d Give wrapped rows full width 2018-05-05 09:04:32 -07:00
Alexandre Bury
d4ced015f6 EditView: keep cursor in view after key event 2018-05-03 08:36:17 -07:00
Alexandre Bury
32ee2de697 Scrollview: take scrollbar size into account 2018-05-01 17:55:13 -07:00
Alexandre Bury
0fbc5a888e Add inner size to printer
Renamed Printer::size -> output_size
2018-04-27 16:23:07 -07:00
Alexandre Bury
5586403080 printer: add doc 2018-04-24 17:19:07 -07:00
Alexandre Bury
8c2ff6bd4f Handle content_offset in print methods 2018-04-17 17:22:56 -07:00
Alexandre Bury
b80af07268 Remove Printer::is_new 2018-04-17 16:35:56 -07:00
Alexandre Bury
f0b3287d73 Merge branch 'master' into scroll 2018-04-16 22:42:42 -07:00
Alexandre Bury
1f6de5a591 Initial scrollview implementation 2018-04-16 22:39:46 -07:00
Alexandre Bury
56ce95f9b6 Add some more XY methods 2018-04-16 22:39:27 -07:00
Alexandre Bury
39babacbf5 Add AnyCb type alias 2018-04-16 22:39:16 -07:00
Alexandre Bury
3731b7375d Ncurses: better color approximation
On terminals with only 8 colors (like with `TERM=screen`)
2018-04-11 22:20:00 -07:00
Alexandre Bury
8c00b171c0 Ncurses: better color approximation
On terminals with only 8 colors (like with `TERM=screen`)
2018-04-11 22:16:08 -07:00
Alexandre Bury
ff9f669d73 Fix tests & examples 2018-04-10 12:51:40 -07:00
Alexandre Bury
a355171844 Fix clippy warnings 2018-04-10 11:53:25 -07:00
Alexandre Bury
b1e9afe0ff Add vpv example 2018-04-10 11:46:02 -07:00
Alexandre Bury
063589b0cd Move Counter to utils module 2018-04-10 11:45:36 -07:00
Alexandre Bury
d5178e778b Do not flush stdout in ncurses backend 2018-04-09 10:06:11 -07:00
Alexandre Bury
2729e77838 Ncurses backend: write mouse command to /dev/tty 2018-04-08 22:51:51 -07:00
Alexandre Bury
b34fb14957 Use ncurses::newterm instead of initscr
This leaves stdout untouched, so it can better be composed in other
commands.
2018-04-05 17:40:08 -07:00
Alexandre Bury
8641098781 Split Printer::sub_printer into sub-methods 2018-04-04 17:49:11 -07:00
Alexandre Bury
4042a45b8d Add basis for ScrollView 2018-04-04 17:48:51 -07:00
Alexandre Bury
fd09b5f806 Use Vec2 in backend methods 2018-04-02 18:08:12 -07:00
Alexandre Bury
126530b9a9 Cursive::new now takes the backend as argument 2018-04-01 16:39:03 -07:00
SEGFAULT
76d340f11d Making backend::Backend into a std::Boxable trait (#229)
* Making Backend into a Boxable Trait

* Fixed up some typos in the previous and modified some of the docs so they still compile.

* Minor Changes requested by @gyscos

* Whoops
2018-04-01 15:35:37 -07:00
marcin
9df4b21a26 Adding disable/enable functionality to text_area 2018-03-28 21:02:53 +02:00
Alexandre Bury
3588955f0b Add SelectView::insert_item 2018-03-25 00:30:48 -07:00
Alexandre Bury
8f04356baa Implement ListView::important_area 2018-03-23 17:00:46 -07:00
Alexandre Bury
e81307a77c Implement Dialog::important_area 2018-03-22 15:24:27 -07:00
Alexandre Bury
c9a4fbf181 Implement Panel::wrap_important_area 2018-03-22 15:21:54 -07:00
Alexandre Bury
d140e154aa Implement ViewWrapper::important_area 2018-03-22 15:15:49 -07:00
Alexandre Bury
6729453118 Implement Menubar::important_area 2018-03-22 15:13:51 -07:00
Alexandre Bury
5673b59c10 Implement {SelectView, MenuPopup}::important_area 2018-03-22 14:31:28 -07:00
Alexandre Bury
4778e4de6f Implement EditView::important_area 2018-03-22 14:17:00 -07:00
Alexandre Bury
a989fd5f80 Implement TextArea::important_area 2018-03-22 14:16:49 -07:00
Alexandre Bury
1ad515e5f0 rustfmt 2018-03-22 11:04:58 -07:00
Alexandre Bury
5c3c750033 Implement LinearLayout::important_area 2018-03-22 11:02:46 -07:00
Alexandre Bury
bd3ea469e9 Add View::important_area
In preparation for ScrollView
2018-03-16 18:07:01 -07:00
Alexandre Bury
e23a5cd3a2 Add Rect::offset 2018-03-16 18:06:53 -07:00
Alexandre Bury
5d3c0d3fb0 Add rect::Rect 2018-03-16 17:16:05 -07:00
Alexandre Bury
7ca632a10d Move Margins to view module 2018-03-16 16:09:47 -07:00
Alexandre Bury
92c1d1a5b2 Rename Vec4 -> Margins 2018-03-16 16:06:35 -07:00
Alexandre Bury
9bc723ab4a Do not accept any return value for callbacks
It got added so we could keep using `s.pop_layer()` in single-line callbacks.
It was confusing, and the return value was ignored anyway.
2018-03-16 15:50:56 -07:00
Alexandre Bury
acb73765e9 Add EditView::maximum_width
Currently only applied during text insertion.
Doesn't affect scrolling yet.
2018-03-15 16:07:28 -07:00
Alexandre Bury
2c73e35f85 Split import line
Not on stable yet it seems
2018-03-15 11:57:12 -07:00
Alexandre Bury
16a3bd7bbe Return callbacks from EditView::set_content
Just like for SelectView::select_up
2018-03-15 11:50:22 -07:00
Alexandre Bury
987796f2fa Return selection change callback in SelectView methods 2018-03-15 11:42:49 -07:00
Alexandre Bury
1deee26970 Better checks for mouse events on SelectView 2018-03-15 09:36:26 -07:00
Alexandre Bury
8d9d17d372 Update StackView tests 2018-03-14 15:19:56 -07:00
Alexandre Bury
1ad9a53cf7 Small refactoring 2018-03-14 15:11:27 -07:00
Alexandre Bury
7db1ee7335 Reverse View and AnyView
We now have `View: AnyView`
2018-03-14 14:59:41 -07:00
Alexandre Bury
f27f7792df Rename BoxableView -> IntoBoxedView
And add an implementation for Box<View>
2018-03-14 14:16:07 -07:00
Alexandre Bury
17ccda2d40 Use BoxableView trait bound 2018-03-14 13:39:30 -07:00
Alexandre Bury
e4bf9accc3 Add BoxableView and AnyBox
And remove `impl ViewWrapper for T: Deref<View>`
This means `Box<View>` doesn't implement `View` anymore.
2018-03-14 12:32:07 -07:00
Alexandre Bury
dea226a095 Add AnyView::as_boxed_any for easier downcasting 2018-03-14 11:18:28 -07:00
Alexandre Bury
06305c89a9 Add StackView::find_layer_from_id
Also `StackView::get` and `StackView::get_mut`
2018-03-11 16:53:41 -07:00
Alexandre Bury
1ae3bbff89 Fix pancurses input
Fixes #210
2018-03-08 10:03:41 -08:00