Commit Graph

729 Commits

Author SHA1 Message Date
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
Alexandre Bury
5e58726ffd Add test for StackView::move_layer
From #213 (thanks xliiv)
2018-03-05 18:48:24 -08:00
Alexandre Bury
48514991d2 Add Cursive::clear_global_callbacks 2018-03-05 15:25:36 -08:00
Alexandre Bury
b4f32b56bb Fix move_layer index calculation
See #213
2018-03-04 16:54:16 -08:00
Nils Berg
8bf82a9b58 make SelectView less greedy 2018-03-01 21:13:15 +01:00
Alexandre Bury
99046d10c3 Use special key detection for pancurses
Shared with the ncurses backend code
2018-02-20 15:44:07 -08:00
Alexandre Bury
767e225db0 Only require maplit for ncurses bqckend 2018-02-20 14:50:13 -08:00
Alexandre Bury
beefac9c6a curses backends: don't crash on weird input 2018-02-20 11:18:02 -08:00
Alexandre Bury
3f35b87757 Use print! rather than println! for ncurses configuration 2018-02-20 10:43:38 -08:00
Alexandre Bury
c626779d8a Fix simple LinesIterator
Was stopping at the first empty line.
2018-02-19 19:55:31 -08:00
Alexandre Bury
179c804df8
Merge pull request #211 from xliiv/dialog-focus
Add get_current_focus to Dialog & make public enum Focus
2018-02-18 14:48:39 -08:00
Tymoteusz Jankowski
6faa1ff5a7 Add get_current_focus to Dialog & make public enum Focus 2018-02-18 23:23:04 +01:00
Alexandre Bury
62260a025e Rustfmt 2018-02-16 17:21:24 -08:00
Alexandre Bury
6b6398f109 Fix clippy warnings 2018-02-16 17:20:13 -08:00
Alexandre Bury
d33fb39cd9 Replace AsSpannedStr with Into<SpannedStr> 2018-02-16 17:16:01 -08:00
Alexandre Bury
d0a186d01e Move show_spaces option to spans::LinesIterator 2018-02-16 17:10:29 -08:00
Alexandre Bury
2760e92ce6 Use spans::LinesIterator from simple::LinesIterator 2018-02-16 17:04:39 -08:00
Alexandre Bury
0ff08f3a9f Add Row::overall_indices 2018-02-16 16:56:25 -08:00
Alexandre Bury
7772cd146d Add AsSpannedStr trait
For nicer calls to resolve
2018-02-16 16:32:54 -08:00
Alexandre Bury
25e65a87e8 Remove attribute type from spans::LinesIterator 2018-02-16 16:05:15 -08:00
Alexandre Bury
c220cc679a Remove attribute type from SpannedText 2018-02-16 15:35:51 -08:00
Alexandre Bury
7218b6c879 Add SpannedStr and SpannedText 2018-02-16 14:11:33 -08:00
Gergely Nagy
f478d57e51 FnOnce callbacks can be sent to cb_sink 2018-02-12 22:44:50 +01:00
Gergely Nagy
0ceb4ff4e2 Run multiple callbacks per step as the documentation suggests 2018-02-12 22:44:50 +01:00
Alexandre Bury
847fd7d800 Add SelectView::selected 2018-02-11 19:26:44 -08:00
Alexandre Bury
8f3441bc3c ListView: use checked subtraction between focus and scroll index 2018-02-11 19:07:38 -08:00
Alexandre Bury
bbc3d3d5b7
Merge pull request #204 from xliiv/focus_index_for_linear_layout
Add LinearLayout.get_focus_index
2018-02-08 10:05:43 -08:00
Tymoteusz Jankowski
56fe7ab0df Add LinearLayout.get_focus_index 2018-02-08 18:33:20 +01:00
Alexandre Bury
daac2d67b4 Add Vec2::saturating_add(XY<isize>)
And uses it to fix crash in position example
2018-02-07 16:44:22 -08:00
SEGFAULT
9e591ef635 Moving Windows in StackView (#200)
* Inital draft of reposition code.

* throwing it all in git so I can show @gycos the mess I made

* Cleaning up the example and removing that garbage getter function from StackView. More thought needs to be applied to that API.

* modified stackview to locally draw background, currently every frame. Adjusted surrounding elements to mirror this change.

* fixed dirty flag on stackView to use a cell. Also added dirty events on window resize.

* Final code cleanup.

* Fixed all highlighted issues in PR #200
2018-02-07 16:25:00 -08:00
Alexandre Bury
22e2360aa1 Merge separate TrackedView impl blocks 2018-01-29 17:34:06 -08:00
Alexandre Bury
f091cec861 Add BoxView::set_size 2018-01-27 22:12:29 -08:00
Alexandre Bury
b14a2ff5e7 Remove debug lines 2018-01-27 18:15:27 -08:00
Alexandre Bury
fbd4dd97f1 Add grayscale color matching for ncurses backend 2018-01-27 18:14:37 -08:00
Alexandre Bury
800470e22c Add Color::from_256colors test 2018-01-27 17:31:43 -08:00
Alexandre Bury
6f072ac894 Fix assert for 256 colors 2018-01-27 17:26:03 -08:00
Tymoteusz Jankowski
579b8fddd3 Fix getting view in inner_getters 2018-01-27 19:51:03 +01:00
Tymoteusz Jankowski
5bfe9548e8 Replace inner_getters!(T); with inner_getters!(self.view: T); 2018-01-27 10:37:08 +01:00
Tymoteusz Jankowski
b21280c106 Use inner_getters! in OnEventView 2018-01-26 23:28:20 +01:00
Tymoteusz Jankowski
4e2b8adf3d Merge branch 'master' into get-child 2018-01-26 23:15:14 +01:00
Tymoteusz Jankowski
4daf40e271 Change OnEventView.inner to OnEventView.view
This breaks compatibility!
2018-01-26 22:32:07 +01:00
Tymoteusz Jankowski
4545ed0bf3 fmt 2018-01-26 17:26:21 +01:00
Tymoteusz Jankowski
d3fadc7c3c Add SelectView.get_item_mut 2018-01-26 17:24:44 +01:00
Tymoteusz Jankowski
4dc403df78 Add SelectView.get_item 2018-01-26 13:25:19 +01:00
Tymoteusz Jankowski
9510d92736 Use inner_getters for rest of ViewWrappers (except on_event_view) 2018-01-26 12:08:28 +01:00
Tymoteusz Jankowski
84ea73617f Add & use inner_getter! in BoxView 2018-01-26 11:39:10 +01:00
Tymoteusz Jankowski
d0956b40b0 Add get_view for ViewWrapper (needs fix) 2018-01-25 14:08:01 +01:00
Alexandre Bury
057321abac Doc: add wikipedia link to TUI 2018-01-24 18:21:39 -08:00
Alexandre Bury
fac6312227 Fix more clippy warnings 2018-01-22 16:42:51 -08:00
Alexandre Bury
5dfdeab6ae Fix clippy warnings 2018-01-22 14:47:56 -08:00
Alexandre Bury
da8310b076 Rustfmt 2018-01-22 14:37:27 -08:00
Alexandre Bury
06086fdeb0 Dialog::get_content now returns &AnyView 2018-01-22 13:45:00 -08:00
Alexandre Bury
8aa901afb4
Merge pull request #190 from xliiv/dialog-content-get
Add get_content on Dialog
2018-01-22 13:18:08 -08:00
Tymoteusz Jankowski
c119f957eb Add Dialog.get_content 2018-01-22 21:01:23 +01:00
Alexandre Bury
3674c118cb Rustfmt 2018-01-22 11:55:56 -08:00
Alexandre Bury
98aff39904 Move View::as_any to separate trait AnyView 2018-01-22 11:50:25 -08:00
Alexandre Bury
1551fbb543 Add View::as_any and View::as_any_mut 2018-01-22 09:20:45 -08:00
Alexandre Bury
208b812976 Fix doc link 2018-01-21 11:20:08 -08:00
Alexandre Bury
431285135f Make Palette directly an EnumMap
Removes the "colors" intermediate member.
2018-01-21 11:17:22 -08:00
Alexandre Bury
b0f4dfbc17 Fix missing link 2018-01-20 21:18:29 -08:00
Alexandre Bury
c84bbbdf45 Update doc for theme module 2018-01-20 21:17:32 -08:00
Alexandre Bury
c3f2e9ad9c Add LinearLayout::get_child and get_child_mut 2018-01-17 11:07:04 -08:00
Alexandre Bury
5ac0fce363 Refactor ColorStyle
Add the notion of PaletteColor to use a color from the palette.

Breaking change: most color styles are now methods rather than enum
variants.
2018-01-17 10:22:06 -08:00
Alexandre Bury
d9215a2b39 Add Style::add 2018-01-16 22:41:22 -08:00
Alexandre Bury
6bb0812a39 TextArea: invalidate cache on set_content 2018-01-16 10:30:26 -08:00
Alexandre Bury
51eb6bf34c Have TextView::content take Into<StyledString> 2018-01-15 14:13:30 -08:00
Alexandre Bury
5003095171 Update ncurses and owning-ref dependencies 2018-01-15 13:58:26 -08:00
Alexandre Bury
39405ba1ec Refactor spans and markup
We now use mostly indexed spans into a source string.
Indexed Spans can still be resolved to a string slice when needed.
2018-01-15 13:53:27 -08:00
Alexandre Bury
a9d9239fac Correctly parse colors 232-255
Those are grayscale
2018-01-14 16:59:03 -08:00
Alexandre Bury
3058816f1a Add Dialog::buttons to iterate on buttons 2018-01-12 09:33:54 +01:00
Alexandre Bury
56f81eee7c Add Button::set_label 2018-01-12 09:33:47 +01:00
Alexandre Bury
0666a8b585 Button: add a way to get its label 2018-01-12 09:30:49 +01:00
Alexandre Bury
14f2bf636c OnEventView: add note regarding single callback per event 2018-01-11 18:49:48 +01:00
Alexandre Bury
0c24ed369b Allow multiple callbacks to be registered per event. 2018-01-11 18:47:44 +01:00
Alexandre Bury
2d62d2c91f Add Cursive::active_screen 2018-01-11 18:20:23 +01:00
Alexandre Bury
4879d8cc71 Fix ending newline problem 2018-01-11 00:16:13 +01:00
Alexandre Bury
afb224b860 Protect against empty spans 2018-01-11 00:12:21 +01:00
Alexandre Bury
890b3f13e1 TextView: print styled spans of text 2018-01-10 23:58:29 +01:00
Alexandre Bury
6f468658e1 Add Plain markup implementation 2018-01-10 14:44:27 +01:00
Alexandre Bury
59d67e891c Keep StyledString markup-agnostic, push trait to methods 2018-01-10 14:02:54 +01:00
Alexandre Bury
7ecf5f540b Add markup::{Markup, StyledString} 2018-01-10 13:54:32 +01:00
Alexander Gavrilov
f8f23a5dda Call resize_item on Windows only 2018-01-09 08:24:17 -08:00
Alexander Gavrilov
7469bd36be Call resize_term on KeySize 2018-01-09 08:01:22 -08:00
Alexandre Bury
4383526ec0 Fix some clippy warnings 2018-01-09 15:20:07 +01:00
Alexandre Bury
f8588e74c1 Rustfmt 2018-01-09 15:17:49 +01:00
Alexandre Bury
d41f1e937d Menubar: trigger leaf nodes on mouse release
Feels more natural
2018-01-09 14:53:55 +01:00
Alexandre Bury
d384cbdaf1 Allow menu leaves and delimiter in menubar 2018-01-09 14:37:40 +01:00
Alexandre Bury
ed94078218 Add span tests from markdown 2018-01-09 10:32:52 +01:00
Alexandre Bury
fc8d428028 Fix doc test 2018-01-09 10:10:05 +01:00
Alexandre Bury
c486d96810 Don't run doc example 2018-01-09 09:50:22 +01:00
Alexandre Bury
203ec4ac76 Improve doc for Cursive::find_id 2018-01-09 09:26:05 +01:00
Alexandre Bury
df97279442 TextView: add manual scroll methods 2018-01-08 19:02:35 +01:00
Alexandre Bury
a2244f0ac1 Add markdown parser 2018-01-08 17:18:35 +01:00
Alexandre Bury
15c3e77fc4 Split theme.rs into multiple files 2018-01-08 16:11:12 +01:00
Alexandre Bury
c2d2fa0527 Update Style to include a set of effects 2018-01-08 15:44:27 +01:00
Alexandre Bury
b59e480f60 Add missing imports 2018-01-08 13:15:28 +01:00
Alexandre Bury
c4670e5262 More utils re-organization 2018-01-08 12:33:43 +01:00
Alexandre Bury
7ac003c4de Re-organize utils module 2018-01-08 12:07:07 +01:00
Alexandre Bury
943da46e82 Add SpanListIterator 2018-01-08 01:25:30 +01:00
Alexandre Bury
1acde148be Implement From<Effect> and From<ColorStyle> for Style 2018-01-07 15:08:25 +01:00
Alexandre Bury
aa9db30a51 Add TextView::set_effect 2018-01-05 14:20:09 +01:00
Alexandre Bury
895557e91d Fix TextView deadlock 2018-01-05 14:20:08 +01:00
Alexandre Bury
2d7f8295cf Add Effect::{Bold,Italic,Underline} 2018-01-05 13:57:39 +01:00
Alexandre Bury
5af367fa18 Add missing use statements to doc example 2018-01-03 16:51:07 +01:00
Alexandre Bury
778c1f1d71 Better doc 2018-01-03 15:36:08 +01:00
Alexandre Bury
08a935d561 Don't run test examples when we call Cursive::new
It fails with some backends.
2017-12-31 20:29:05 +01:00
Alexandre Bury
8a05bd5421 TextView: improve documentation 2017-12-31 19:49:13 +01:00
Alexandre Bury
65ea8eeec8 No need to clone the Arc 2017-12-31 14:14:19 +01:00
Alexandre Bury
e4cd68a4eb Rustfmt 2017-12-30 23:03:42 +01:00
Alexandre Bury
799ec812e4 Add TextContent and TextContentRef
To manage the model separately from the view.
2017-12-30 23:00:48 +01:00
Alexandre Bury
8da659367d Add StackView::move_layer 2017-12-18 18:18:23 +01:00
Alexandre Bury
bd9b6a695b Return view on pop_layer
Callbacks now often allow (and ignore) a return type.
2017-12-16 14:41:15 +01:00
Alexandre Bury
1b7170e308 StackView: store Layer<Box<V>> rather than Box<Layer<V>>
Rather than storing a Layer<V> as a Box<View>,
stores a Layer<Box<View>>, so we can unwrap it when
popping layers.
2017-12-16 14:41:15 +01:00
Marcel Hellwig
9ce8896bba
updated dialog doc to reflect the default position 2017-12-12 09:19:05 +01:00
Marcel Hellwig
f8e7427f75 simplified offset calculation in dialogboxtitle 2017-12-12 09:07:13 +01:00
Marcel Hellwig
592ecf4c09 added option to position the header in a dialog 2017-12-12 08:38:14 +01:00
Alexandre Bury
9b9619aa53 Add View: Any 2017-12-11 18:54:40 -08:00
Alexandre Bury
bbee77f1b7 Add ViewWrapper::into_inner
And add some derive(Debug)
2017-12-11 17:31:55 -08:00
Alexandre Bury
d0c30ded21 Ncurses backend: use character pattern instead of string 2017-12-11 12:29:10 -08:00
Alexandre Bury
d328138531 OnEventView: better doc 2017-12-07 16:47:56 -08:00
Alexandre Bury
93c672df9d TextArea: fix possible panic with multi-bytes characters 2017-12-07 14:33:01 -08:00
Alexandre Bury
a7d38d9608 MenuPopup: better mouse scroll alignment 2017-12-07 14:14:52 -08:00
Alexandre Bury
fdf4a0db4b TextArea: fix cursor after content change 2017-12-07 13:48:41 -08:00
Alexandre Bury
70906aa5de Add mines example 2017-11-29 02:11:11 -08:00
Alexandre Bury
6bc63a40c5 Remove odds dependency
Now that `Vec::splice` is stable.
Note: this means rustc >= 1.22 is required.
2017-11-25 10:16:35 -08:00
Alexandre Bury
5a52b8de69 Replace eprintln! with warn! 2017-11-20 12:47:51 -08:00
Alexandre Bury
0c39f52016 ncurses: compute whole modifier table at runtime 2017-11-20 11:44:23 -08:00
Alexandre Bury
b2097bd1c8 ncurses: detect key offset at runtime 2017-11-19 20:13:57 -08:00
Alexandre Bury
c10da1390b Use dynamic key code map in ncurses backend
In preparation for detecting key codes dynamically.
(Different ncurses versions will use different code offsets)
2017-11-19 17:14:20 -08:00
Alexandre Bury
6fe6b72f89 Use std::cmp::min rather than usize::min 2017-11-19 15:44:28 -08:00
Alexandre Bury
42dbe40e3f Fix modifier keys on ncurses
I think we really need to read terminfo instead...
2017-11-19 11:08:52 -08:00
Alexandre Bury
b6cfd43556 Replace last u32 with mmask_t
I missed this one...
2017-11-19 01:21:57 -08:00
Alexandre Bury
eeca719a92 Rename split_u32 -> split_i32 2017-11-19 01:14:53 -08:00
Alexandre Bury
a11d02dfa4 Use mmask_t instead of u32 2017-11-19 01:13:24 -08:00
Alexandre Bury
0b5b6ceace Add mouse support to pancurses 2017-11-19 00:40:56 -08:00
Alexandre Bury
1f1a651371 Fix linear layout offset check 2017-11-17 12:42:30 -08:00
Alexandre Bury
dc75cdd115 LinearLayout: use ChildIterator everywhere
For a more consistent sizing.
2017-11-06 23:51:44 -08:00