Commit Graph

318 Commits

Author SHA1 Message Date
Alexandre Bury
ede5c616f6 Update EditView doc
With updated `examples/edit.rs` content
2016-07-31 17:53:00 -07:00
Alexandre Bury
3410150ed5 Fix clippy warning
Use `for` loop instead of discarding `collect` result.
2016-07-31 11:29:55 -07:00
Alexandre Bury
191cfcecfd Fix typo 2016-07-30 15:58:52 -07:00
Alexandre Bury
be7f2184e9 Unify prefix_length and suffix_length signatures 2016-07-30 15:56:39 -07:00
Alexandre Bury
d12622b56a Fix examples and tests 2016-07-30 13:30:56 -07:00
Alexandre Bury
40f9a91a7a Replace some &str -> S: Into<String>
Add back the "Ok" button to `examples/edit.rs`
2016-07-30 12:58:25 -07:00
Alexandre Bury
ca6e16311f Add secret mode to EditView
Only prints `*`. Prints `**` with wide chars.
2016-07-30 12:26:41 -07:00
Alexandre Bury
3726df46b7 Add on_submit to EditView
It simplifies the Edit example
2016-07-30 02:34:47 -07:00
Alexandre Bury
42a377d92b SelectView: add methods to add items from iterators 2016-07-30 01:52:34 -07:00
Alexandre Bury
1165e70e15 Add on_select to SelectView
And renamed existing `on_select` to `on_submit`
2016-07-30 01:27:34 -07:00
Alexandre Bury
2e05a0825a Add on_edit callback to EditView
Also fix <Del>/<Backspace> handling with precomposed characters
2016-07-30 01:18:12 -07:00
Alexandre Bury
db9df3dfc9 Add deconstruct method to ProgressReader 2016-07-29 23:51:41 -07:00
Alexandre Bury
6e247efc1c Add ProgressReader to the utils module
Should allow to monitor a file download in a progress bar
2016-07-29 23:48:19 -07:00
Alexandre Bury
24e4e41a85 Move DummyView to views module 2016-07-29 23:36:40 -07:00
Alexandre Bury
fb10e58188 Move LinesIterator to utils module 2016-07-28 23:05:33 -07:00
Alexandre Bury
f87d0e7c5b Move views to new views module 2016-07-28 16:36:01 -07:00
Alexandre Bury
51a1a19f92 Fix progressbar doc 2016-07-28 00:29:11 -07:00
Alexandre Bury
2597c9a566 Add a center() convenient method to TextView
Avoids having to import HAlign
2016-07-27 23:58:57 -07:00
Alexandre Bury
261d2aac48 Remove Ticker alias
The `Counter` NewType can fill this role.
2016-07-27 23:55:34 -07:00
Alexandre Bury
c689a3ba7e Add non-chainable add_child to LinearLayout 2016-07-27 23:52:21 -07:00
Alexandre Bury
bea7240271 Wrap Arc<AtomicUsize> around NewType Counter
And offers a simpler API
2016-07-26 23:29:13 -07:00
Alexandre Bury
8290c3f62a Make progressbar more robust to invalid min/max values 2016-07-26 23:05:18 -07:00
Alexandre Bury
2cedc8ae76 Add comments to progress bar 2016-07-26 21:48:26 -07:00
Alexandre Bury
8eb61e0239 Add start and with_task to ProgressBar 2016-07-26 12:25:06 -07:00
Alexandre Bury
eb6b5d5728 Fix LinearLayout children width
Now properly gives the full width to every children.
2016-07-26 10:49:37 -07:00
Alexandre Bury
0643c50bd5 Add async-callback channel to Cursive
And remove it from ProgressBar
2016-07-26 10:13:36 -07:00
Alexandre Bury
04f961657f ProgressBar takes all given width 2016-07-26 09:55:22 -07:00
Alexandre Bury
2e5262096a Don't compile internal doc example
Won't compile anyway since it's not public
2016-07-26 00:00:45 -07:00
Alexandre Bury
6e021867ab ProgressBar now shows a percentage status
The label can be customized though `ProgressBar::with_label`.
2016-07-25 23:54:33 -07:00
Alexandre Bury
5dd20db676 Add Dialog::empty and Dialog::content
Allows to set the content after the title, for when it's more
readable.
2016-07-25 20:43:01 -07:00
Alexandre Bury
7283e7f3af Rustfmt 2016-07-25 13:39:10 -07:00
Alexandre Bury
5e6222bf23 Use intermediate type for the callback promise
Using actual promises would still be better
2016-07-25 13:38:13 -07:00
Alexandre Bury
c1c9322319 Add panel view 2016-07-25 13:35:46 -07:00
Alexandre Bury
6c71ac14b0 More linear progress bar progression
Each cell should receive the same number of ticks
2016-07-25 12:18:05 -07:00
Alexandre Bury
47acf1667d Remove brackets from progress bar
It was ugly, really.
Put a Panel (doesn't exist yet) around it if you want.
2016-07-24 23:03:59 -07:00
Alexandre Bury
e29511e757 Add ProgressBar
Also make Callback its own NewType to add comversion methods.
2016-07-24 23:01:09 -07:00
Alexandre Bury
10e072c140 Allow loading themes from content.
Made `load_theme` thake a `&str` and Added `load_theme_file`.
2016-07-24 16:56:22 -07:00
Alexandre Bury
0a8228d073 Add examples to documentation 2016-07-20 22:08:06 -07:00
Alexandre Bury
536321ebda Add Button to prelude. 2016-07-20 22:02:45 -07:00
Alexandre Bury
2a4742f67b Use prelude in docs 2016-07-20 21:43:20 -07:00
Alexandre Bury
f28ac264f1 Add prelude import module
Update examples to use it.
2016-07-20 21:25:14 -07:00
Alexandre Bury
64d176ffa5 Add proper select popup placement
Added a popup select to the `list_view` example
2016-07-20 00:30:00 -07:00
Alexandre Bury
8b6022a398 Add popup mode to SelectView
Single-line, opens a popup on selection.
2016-07-19 23:47:27 -07:00
Alexandre Bury
783fa0f1e2 Fix typo in docs 2016-07-19 20:50:21 -07:00
Alexandre Bury
a1d0231e2c Make Menubar a proper View 2016-07-19 20:44:50 -07:00
Alexandre Bury
2065be3e88 Add some doc to the menu module 2016-07-19 20:28:34 -07:00
Alexandre Bury
4120203844 More fixes for insufficient space. 2016-07-17 01:20:41 -07:00
Alexandre Bury
8750185f8c Don't crash on insufficient space 2016-07-16 22:06:28 -07:00
Alexandre Bury
ab3a55abaf Add enabled state to Button 2016-07-16 18:49:17 -07:00
Alexandre Bury
58a04bbb13 Add enabled state to SelectView 2016-07-16 18:46:18 -07:00
Alexandre Bury
02b6b6601f Add enabled state to Checkbox 2016-07-16 18:36:54 -07:00
Alexandre Bury
77a623674a Add on_change callback to CheckBox 2016-07-16 18:18:33 -07:00
Alexandre Bury
05f66b8e1b Add macro'd Default implementations 2016-07-16 17:28:42 -07:00
Alexandre Bury
d4afdf024f Add checkbox view 2016-07-16 17:22:24 -07:00
Alexandre Bury
5ee8706582 Add scrollable flag to TextViews 2016-07-16 17:08:17 -07:00
Alexandre Bury
5b25893496 Rustfmt 2016-07-16 13:52:28 -07:00
Alexandre Bury
a22c92a1a1 Add ListView
Also added `examples/list_view.rs`.
2016-07-16 13:25:21 -07:00
Alexandre Bury
99993ab1ec Clear screen when hiding menubar
Otherwise it's visible but inactive
2016-07-16 01:07:37 -07:00
Alexandre Bury
2b54d6df28 Make View::draw take a &self (instead of a &mut self)
TrackedView, the only user of the mutability, now uses internal
mutability with a Cell.
2016-07-15 23:44:38 -07:00
Alexandre Bury
ef6f83751c Remove unused file 2016-07-15 11:17:09 -07:00
Alexandre Bury
1010c825ae Added doc for event module 2016-07-14 23:25:32 -07:00
Alexandre Bury
2ed8552e4b More doc fixes 2016-07-14 22:53:16 -07:00
Alexandre Bury
b4fafbec83 Fix some documentation 2016-07-14 22:50:35 -07:00
Alexandre Bury
bd5c45ac0e Fix clippy warnings 2016-07-14 22:32:43 -07:00
Alexandre Bury
91fdf96066 Add Direction enum
And add a Direction argument to take_focus
2016-07-14 22:23:06 -07:00
Alexandre Bury
1b34934df7 Fix printer::Printer imports 2016-07-13 23:25:54 -07:00
Alexandre Bury
7f17a4ff74 Don't expose single-item modules
Instead, pub-use it from the root.
2016-07-13 23:18:59 -07:00
Alexandre Bury
d9e4512752 Fix linear layout focus switch 2016-07-13 22:16:55 -07:00
Alexandre Bury
5059e21cb1 Fix focus in LinearLayout
Focus now at least works. #42 is still open though.
2016-07-13 22:11:03 -07:00
Alexandre Bury
9390504290 Add documentation to BoxView 2016-07-13 21:30:30 -07:00
Alexandre Bury
e166869c51 Add some documentation to view module 2016-07-13 20:52:24 -07:00
Alexandre Bury
03c400ad44 Fix linear layout in constrained space 2016-07-13 01:19:05 -07:00
Alexandre Bury
12593c8ea8 Rustfmt on xy.rs 2016-07-12 21:33:50 -07:00
Alexandre Bury
4fe7df220a Add basic test to Vec2 2016-07-12 21:33:24 -07:00
Alexandre Bury
7f530e34b7 Add XY generic struct 2016-07-12 21:03:17 -07:00
Alexandre Bury
309c471a63 Add #![deny(missing_docs)]
And fill the appropriate missing ones
2016-07-11 20:26:33 -07:00
Alexandre Bury
c597c262fe Add single-orientation FullView
full_width and full_height
2016-07-11 19:35:18 -07:00
Alexandre Bury
b7a270f258 Split width and height in BoxView
They are now both optional
2016-07-11 19:24:50 -07:00
Alexandre Bury
c07e8b6aee Rustfmt 2016-07-10 19:11:21 -07:00
Alexandre Bury
6e0819f723 Simplify Event enum
Now properly unify Alt/Ctrl/Shift handling
2016-07-10 18:27:26 -07:00
Alexandre Bury
99bf28dfd6 Add needs_relayout method to View trait.
Purely optimization-focused trait (it is safe to ignore it entirely).
Allows view groups to take shortcuts if they know their children didn't
change since last time.
2016-07-10 17:41:49 -07:00
Alexandre Bury
4b095a0652 Apply rustfmt 2016-07-09 19:05:51 -07:00
Alexandre Bury
08ab18608b Clear the screen only on window resize and layer removal
Should actually also be done if a layer shrinks.
Luckily, clear can be called anytime, as draw() is the last action
performed in the event loop - so it's safe to clear the screen in any
event callback, or even during layout.
2016-07-09 18:49:37 -07:00
Alexandre Bury
9b2dec2a7f Use proper bounds for dialogs
Buttons height was not removed from the budget for get_min_size
2016-07-09 18:36:07 -07:00
Alexandre Bury
455a2a817c Invalidate TextView cache on content change 2016-07-09 18:26:52 -07:00
Alexandre Bury
2860467f29 Cache layout in TextView
Calling either get_min_size or layout will cache the results, so the
next call with the same constraints will not re-compute everything.
2016-07-09 18:23:58 -07:00
Alexandre Bury
4498d206f5 Support wide characters in TextViews
Added some japanese paragraphs to the lorem example.
2016-07-04 21:30:13 -07:00
Alexandre Bury
cc72aa4ddc Better wide char support 2016-07-04 16:04:32 -07:00
Alexandre Bury
d89c83f0ed MenuPopup now supports PageUp/Down and Home/End 2016-07-02 20:53:13 -07:00
Alexandre Bury
692c310656 Better Menu API
Now offer non-chainable methods as well.
2016-07-02 20:44:27 -07:00
Alexandre Bury
e127392e8a Add impl Default for Menubar
To make clippy happy
2016-07-02 19:47:11 -07:00
Alexandre Bury
0fd3bc113f Fix layout bug in StackView
Only skip padding for non-centered views
2016-07-02 19:46:23 -07:00
Alexandre Bury
8220fe529e Better menubar example
Added scrolling support, and left/right navigation
2016-07-02 19:37:38 -07:00
Alexandre Bury
1d54764cdb Working menubar example
Also update callback: use Rc instead of Box
2016-07-02 15:02:42 -07:00
Alexandre Bury
1863e48b07 Add MenuPopup view 2016-07-02 01:01:09 -07:00
Alexandre Bury
1b1d7166a1 Replace SizeRequest with simple Vec2
We may go back to an enum though, to handle text views in LinearLayouts.
But the previous Fixed/AtMost/Unknown distinction was useless.
2016-07-02 00:47:38 -07:00
Alexandre Bury
c958093b74 Add TrackedView to cache the view size 2016-07-01 20:23:58 -07:00
Alexandre Bury
87cd1ce23f Add position parameter to stack view layers
Can be centered, absolute or relative to the previous layer.
Can be set independently for each axis.
2016-07-01 19:19:43 -07:00
Alexandre Bury
985009e51c More ncurses isolation
Also some renaming in the theme module
2016-06-30 23:38:01 -07:00
Alexandre Bury
4dcb2ea901 Remove debug println 2016-06-29 17:51:26 -07:00
Alexandre Bury
ba26ab965b Don't run example on cargo test
Apparently it fails on travis (??)
2016-06-29 17:46:39 -07:00
Alexandre Bury
5751a293e5 Push most ncurses-specific code into separate trait
Prepare backend change.

Still not isolated is the color setup in `theme`.
2016-06-29 17:37:51 -07:00
Alexandre Bury
d0d4380d5a Add menubar example
Not working yet, but at least it shows how the API should be used.
2016-06-28 01:13:44 -07:00
Alexandre Bury
d02c30ae9f Fix clippy warnings 2016-06-27 22:40:11 -07:00
Alexandre Bury
80b219f34a Apply rustfmt 2016-06-27 22:10:59 -07:00
Alexandre Bury
042e631d9f Add base for menubar
Cursive now has a global menubar, with a `select_menubar()` method.
2016-06-27 21:59:42 -07:00
Alexandre Bury
43230534ff Add menu tree 2016-06-27 21:55:46 -07:00
Alexandre Bury
34f235daf0 Use UTF-8 drawing characters for printer methods
Instead of ncurses chtype.
2016-06-26 15:03:12 -07:00
Alexandre Bury
ed785940dd Fix typo in doc 2016-06-26 09:45:53 -07:00
Alexandre Bury
8dbb61830f Added a Resize event
For when the window is resized.
Not exactly a key event, but...

Also (very) partial support for Alt-FX keys.
Obviously most already have a mapping,
but Alt-F9, Alt-F11 and Alt-F12 seem to work.
2016-06-25 19:38:22 -07:00
Alexandre Bury
822ffa7a7b Fix keyboard input
Shift/Ctrl/Alt + special keys (arrow, pageup/down, home/end, ins/del)
are better supported.
2016-06-25 19:28:42 -07:00
Alexandre Bury
58bd274df0 Update Readme & run rustfmt 2016-06-25 16:39:05 -07:00
Alexandre Bury
8d24df5f59 Experiment: use direct utf-8 VLINE char 2016-06-25 15:52:19 -07:00
Alexandre Bury
07c3c99e54 Update for new ncurses version 2016-03-15 15:39:08 -07:00
Alexandre Bury
af47abeaad Edit view now support content larger than display
It then scrolls horizontally
2015-07-30 15:40:03 +02:00
Alexandre Bury
ac85a1f288 Fixed bug with dialog without buttons 2015-07-28 21:54:32 +02:00
Alexandre Bury
36fbc1ce5b Add some convenient ID methods 2015-07-28 15:57:52 +02:00
Alexandre Bury
25a298a2eb Fix dialog layout and input 2015-06-08 22:24:59 -07:00
Alexandre Bury
4fff7882aa Fix focus state in linear layout 2015-06-08 15:47:09 -07:00
Alexandre Bury
df11b4f1f0 Update documentation 2015-06-08 15:38:10 -07:00
Alexandre Bury
daaff26e1c Add input support to linear layouts 2015-06-08 15:11:44 -07:00
Alexandre Bury
d5a796a4cd Fix dialog button alignment 2015-06-08 15:11:36 -07:00
Alexandre Bury
40af72a567 BugFix in LinearLayout
And add a simple linear example.
2015-06-08 12:23:36 -07:00
Alexandre Bury
df5ff808e3 Basic linear layout implementation
Not tested yet
2015-06-07 20:58:10 -07:00
Alexandre Bury
14a18ce760 Add some more input 2015-06-06 22:48:16 -07:00
Alexandre Bury
3a1e40ed49 Add some input support and updated readme 2015-06-06 15:05:01 -07:00
Alexandre Bury
6e4d00127b Fix theme fallback
Now themes correctly use fallback values on TTY
2015-06-05 21:35:42 -07:00
Alexandre Bury
17e44652b8 Fix warning
Unused error reported.
2015-06-05 21:13:34 -07:00
Alexandre Bury
e5cb687990 Refactor themes and colors
And adds a theme example.
TODO: Shadow & Borders support
2015-06-05 18:26:40 -07:00
Alexandre Bury
cb523e88ae Fix doc-tests 2015-06-04 11:40:35 -07:00
Alexandre Bury
a77a40558f Add some doc. 2015-06-03 15:36:51 -07:00
Alexandre Bury
781d9c1a03 Can now change dialog button alignment 2015-06-02 19:36:22 -07:00
Alexandre Bury
7545d7170c Add a background to the scrollbar
Currently use the pipe character: |
2015-06-02 17:44:31 -07:00
Alexandre Bury
0b159d6bf1 Add align support to SelectView
And moved some alignment offset computation to the align module.
2015-06-02 14:23:51 -07:00
Alexandre Bury
1656cdd8f6 Add Align property to TextView
Can change its horizontal and vertical alignment for when the allocated
size is bigger than the requirements.
2015-06-01 19:43:15 -07:00
Alexandre Bury
2a423b8408 Select views now highlight the entire line
And scrollviews have an extra padding column between the content and the
scrollbar.
2015-06-01 15:48:31 -07:00
Alexandre Bury
405cd1e961 Add support for some ctrl keys
Ctrl-{Ins,Del,Home,End} now work in some terminals.
Tested with xterm and konsole. May not work fot VTE-based ones
(gnome and xfce).
2015-06-01 10:49:43 -07:00
Alexandre Bury
b64a6b8c34 Add on_select callback for SelectView
And updated the select example to use that instead of an OK button.
This also removes the need for an ID selector.
2015-05-31 20:51:12 -07:00
Alexandre Bury
a30a77f39b Letter-search in SelectView wraps back 2015-05-31 19:09:30 -07:00
Alexandre Bury
c8b2bc943d Minor fixes
And some doc
2015-05-31 16:58:55 -07:00
Alexandre Bury
323805b52f Add scrolling to SelectView
Scrolling functionalities are stored in ScrollBase. Both TextView and
SelectView use it.
Also add letter search to SelectView (currently case sensitive).
And made the cities example bigger with a long list of capitals.
2015-05-31 16:38:53 -07:00
Alexandre Bury
db39069260 Fix focus for stack and text views.
And updated Lorem example with a Quit button under the scrollable text.
2015-05-30 21:54:06 -07:00
Alexandre Bury
6b781684ef Rename ListView -> SelectView
And added documentation.
2015-05-30 21:32:24 -07:00
Alexandre Bury
969650ab1a Add basic ListView
Show a selection among a list of items.
Maybe should be called SelectView?
TODO:
* Scrolling
* Error handling with empty list
* Action on Enter on an item
2015-05-30 21:05:34 -07:00
Alexandre Bury
23aa9e6da7 Update for latest ncurses-rs fix
Del and Ins are now correctly reported.
2015-05-29 20:44:53 -07:00
Alexandre Bury
00b75a98f6 Add input support for more keys
Shift and Ctrl Function keys
Shift-Del
2015-05-29 11:31:20 -07:00
Alexandre Bury
e07a0319f2 Add Home/End navigation to text views. 2015-05-28 17:48:21 -07:00
Alexandre Bury
8ee04c525f Escapes % when printing strings. 2015-05-28 17:37:00 -07:00
Alexandre Bury
6c6f929430 Better UTF-8 support in views
EditView, TextView, Dialog and Button should now properly display and
layout non-ascii text.
The lorem example now includes greek text to show this.
2015-05-28 17:32:28 -07:00
Alexandre Bury
ae93b68c05 Recognizes more modified keys
Shift-tab and a few others
2015-05-28 16:19:16 -07:00