- Add methods to turn a CursiveRunnable into a CursiveRunner.
- Fix mouse input with crossterm backend.
- Fix colors in menubar.
- Backends are now initialized when starting the event loop rather than when creating Cursive.
- As a result initialization and runner functions have changed.
ColorStyle::coloris no longer an optional. UseColorType::InheritParentif needed.- Replaced
()error types with some custom zero-sized types.
- Add
ProgressBar::set_{min,max,range,counter,label}for non-chained API. - Derive Clone, Copy, Debug, PartialEq, Hash for more types.
- Add backend initializers using other files than /dev/tty for ncurses and termion.
- Add
CursiveRunnerto handle an event loop. XY<T>now implementsDefaultforT: Default.Stylenow implementsFromIterator<&Style>to merge multiple styles.XY::stack_{horizontal,vertical}are nowmust_use.SpannedStringnow implementsFromIterator<SpannedString>.view::ScrollBaseis now deprecated in favor of theview::scrollmodule.- Add
Finder::call_on_allandCursive::call_on_all_namedto call the same closure of several views with the same type and name. - Add
SpannedString::remove_spansto remove spans from a StyledString. - Add
SpannedString::compactto compact the source to only include span content. - Add
SpannedString::trim(_{start, end})to remove the unused prefix, suffix or both of the source. - Add
SpannedString::spans(_raw)_attr_mutto give mutable access to the attribute of the spans. - Add
TextContent::with_contentto give mutable access to theStyledStringof aTextView. - Add
ColotyType::InheritParentto carry over the front or back color from the parent. - Add
Effect::Blink. - Add
Margins::zeros(). - Add
TextView::set_style. - Add
SpannedString-shrinking methods.
ListViewnow supports children taller than 1 row.- Added an
autocompleteexample. - Added a
stopwatchexample. SpannedStringiterators are now double-ended and exact-sized.
- Fix scroll module when inner view size is close to available size.
- Fix text alignment for wrapped lines.
- Fix focus change with ScrollView.
- Fix possible crash with the BearLibTerminal backend.
- Dispatch
call_on_*methods to all screens. - Fix potential issue with
setlocalein ncurses backend on BSD. - Fix handling of multi-bytes newlines characters.
- Improve documentation for themes.
- Add
Dialog::into_content. - Add
Callback::from_fn_onceandonce1!macro to wrap aFnOncein aFnMut. - Add
FixedLayoutViewwith manual placement of child views. - Add
OnLayoutViewto overrideView::Layout - Add
Cursive::{dump, restore}to save and load the global state. - Add
NamedView::{name, set_name}to retrieve or replace the given name. - Add
LinearLayout::find_child_with_name. - Add
ScrollView::on_scrollcallback. - Add
once1!macro to turn aFnOnceintoFnMut. - Implement
Defaultfor some wrapper views where the child isDefault.
- More hygienic
wrap_impl!macro using fully-qualified paths. - Fixed
LinearLayoutgiving children incorrect sizes. - More accurate "important area" for
ShadowViewandPaddedView. - Fix potential panic when calling
TextArea::set_cursorbefore its first layout phase. - Disabled views no longer accept input if they are still in focus.
- Split library into a backend-agnostic
cursive-coreand a user-facingcursive. Cursive::defaultnow needs thecursive::CursiveExttrait to be in scope.- Update dependencies:
- crossterm to 0.17.
- enumset to 1.0
- ahash to 0.3
- pulldown-cmark to 0.7
- Add
PaletteColor::HighlightText AnyCbnow takes a&mut dyn Viewrather than a&mut dyn Any.
- Added
cursive::{default,ncurses,pancurses,termion,crossterm,blt,dummy}functions. - Add
Cursive::debug_name - Add
ScreensViewto move some code away from theCursiveroot- Reworked global callbacks configuration
- Ctrl-C can be rewired to no longer exit the application
- Add
SelectView::(try_)iter_mut() Dialog::{test, info}now acceptStyledStringas input- Add missing functions to Checkbox re: enabled state
- Fix Ctrl-Z binding for ncurses
- Fix potential crash with empty
SelectView - Add
tomlandmarkdownfeatures to docs.rs
cursive::event::AnyCbchanged fromBox<...>to&mut ..., so users ofView::call_on_anyno longer need to box their closures.- Remove
BoxView::squishable. - Update crossterm to 0.14.
- Removed
Fromimplementations forMargins. UseMargins::lrtband the like instead.- Or
Dialog::padding_lrtb.
- Or
- Renamed multiple types (old names are still re-exported, but deprecated):
BoxView->ResizedViewViewBox->BoxedViewSizedView->LastSizeViewIdentifiable->NameableBoxable->ResizableIdView->NamedViewSelector::Id->Selector::Namewith_id->with_namecall_on_id->call_on_namefind_id->find_namefocus_id->focus_name
SelectView::{item, with_all}now acceptS: Into<StyledString>for colored labels.- Add
ScrollView::scroll_to_important_area. - Add
LinearLayout::set_focus_index. - Add
XY::{sum, product}. view::scrollis now a public module.- Add
Cursive::process_eventsandCursive::post_events.- This gives users finer control than
Cursive::step.
- This gives users finer control than
Layernow has acoloroption.LinearLayoutcan now directly add boxed views without re-boxing.- Add inner getters to
EnableableView. - Add
PaddedView::get_inner(_mut). - Add a bunch of constructors for
Margins. - Add
Dialog::padding_lrtb - Add
Dialog::set_padding* - Add
PaddedView::lrtb
- Changed the default color for
TitleSecondaryfrom yellow to light blue. - Changed the default color for
Tertiaryfrom grey to white. - Reduced dependencies (
tomlis now optional, removedhashbrown). Cursive::default()now fallbacks do dummy backend if no other is available.
- Fixed
ScrollView::show_scrollbars(). - Correctly update the offset for
ScrollViewafter focus change. - Fixed layout for
BoxViewwith some size constraints. - On Windows, do not print unix-specific character during initialization.
- Fix out-of-bounds access for some mouse events in
MenuPopup
- Update
enum-mapfron 0.5 to 0.6
- Add
Effect::Strikethrough(not supported on ncurses) - Add
ListView::remove_child - Replace
xursive::CbFuncwithBox<FnOnce> - Add
ScrollView::{inner_size, is_as_{bottom, top, left, right} } - Add getters for current value in
SliderView - More fields made public in
cursive::logger - Add a "puppet" backend for testing and instrumentation
- Performance improvements for the crossterm backend
- Fix a possible panic when a TextView is updated asynchronously while it's being layed out.
- Fixed weird behaviour of
SizeConstraint::FullwithScrollView.
- Updated
enumsetfrom 0.3 to 0.4
- Add
Cursive::take_user_data, replaces the current user data with(). - Add
SliderView::{get_value, get_max_value}.
DebugConsolenow has horizontal scrolling enabled.pancursesbackend now correctly recognizes the "Enter" key from the numpad as "Enter".
- Bring back
Cursive::set_fpsfor <30Hz refresh rates. - Add
Cursive::backend_nameto get the name of the current backend. - Add a new backend based on the crossterm library.
- Add direct downcast methods to
dyn AnyView - Add sort methods to
SelectView
- Improved printer performance with styled spans.
- Added manual scrolling methods to
view::scroll::Core:keep_in_view,scroll_to,scroll_to_x,scroll_to_yNote: theview::scrollmodule is hidden behind an experimental featureunstable_scroll.
- Improved printer performance (thanks to @chrisvest).
- Fixed
MenuPopupborders near delimiters.
Cursive::{ncurses, pancurses, termion}now returnio::Result<Self>instead of panicking.Cursive::default()still unwraps.- Also added
Cursive::try_newfor failible backends.
- Also added
- Replaced
set_fps(i32)withset_autorefresh(bool) Finder::find_id()is renamed tocall_on_id(), and a properfind_id()was added instead.- Updated the Backend trait for a simpler input system
- Updated to Rust 2018 edition (now requires rustc > 1.31)
Cursive::clear()now takes&mut self
- Add a logging implementation (
logger::init()) and aDebugConsole(cursive::toggle_debug_console()) - Add user-data to Cursive.
Cursive::set_user_data()can store some user-defined data structure.Cursive::user_data()andCursive::with_user_data()can be used to access the data.
- Add
StackView::remove_layer() - Add
CircularFocusview (and bring proper circular focus to dialogs) - Add
HideableView::is_visible() - Add
type CbSink = Sender<Box<CbFunc>>as an alias for the return type ofCursive::cb_sink() - Add
LinearLayout::{insert_child, swap_children, set_weight}for more in-place modifications. - Add
Printer::{cropped_centered,shrinked_centered}
- Updated termion backend to use direct /dev/tty access for improved performance.
- Enabled raw mode for ncurses and pancurses. Among other improvements, this lets applications receive Ctrl+S and Ctrl+Q events.
- Fixed overflow check for titles in
DialogandPanel
- Add
EventTriggerand updateOnEventViewto use it.- Breaking change: "inner" callbacks for OnEventView now take the event as extra argument.
- Add
Printer::enabledandEnableableViewto disable whole subtrees. - Add
RadioGroup::on_changeto set a callback on selection change. SelectViewnow usesStyledStringto display colored text.- Add
PaddedViewto add padding to any view. - Update dependencies
- Breaking change: crossbeam-channel was updated, and using
send()now returns aResult.
- Breaking change: crossbeam-channel was updated, and using
- Fix mouse events on Ubuntu
- Added examples to most utility types (
XY,Vec2, ...)
- Add an optional title to
Panel - Add
immut1!,immut2!andimmut3!macros to wrap aFnMutinFn - SelectView: autojump is now opt-in (jump to an element after a letter is pressed)
- Fix possible crash with
ListViewandSelectViewin very small spaces - Fix termion backend compilation on non-unix platforms
- Add
Cursive::on_eventto send simulated events. - Add
EventResult::andto combine callbacks. - Allow custom color in
ProgressBar.
- LinearLayout:
- Better geometry computation with constrained size
- Fixed cache invalidation
- Fix possible panic when removing children
- ScrollView:
- Fix possible panic with full-height scrollbar
- Fix possible panic with empty content
- Fix cache
- Fix menubar focus after action
- Fix Readme and examples with
Cursive::default()
- Cursive now supports third-party backends
- Add generic
ScrollViewwrapper. Removes internal scrolling behaviour fromTextView. - Callbacks sent through
Cursive::cb_sink()are now processed instantly, without the need forset_fps. - Make backend a dynamic choice
- User must select a backend in
Cursive::new - 3rd party libraries do not need to play with backend features anymore
- User must select a backend in
- Move from
chanandchan-signalstocrossbeam-channelandsignal-hook - Batch-process events for higher performance
- Add
StackView::find_layer_from_id - Add
SelectView::insert_item - Add
TextArea::{enable, disable} - Reworked
AnyView SelectView: Fix mouse events- Return callbacks from manual control methods
SelectView::{set_selection, select_up, select_down, remove_item}EditView::{set_content, insert, remove}
- Add
rect::Rect - Add
HideableView
- Replaced
Cursive::new()withCursive::default() - Renamed
Vec4toMargins Callbackscannot be created from functions that return a value- The returned value used to be completely ignored
AnyViewdoes not extendViewanymore (instead,ViewextendsAnyView)- If you were using
AnyViewbefore, you probably need to replace it withView
- If you were using
- Scrolling is now added to a view with
.scrollable() cb_sinkis now acrossbeam_channel::Senderinstead ofchan::SenderSelectView::selectionnow returns anOption<Rc<T>>instead of justRc<T>. It will returnNoneif theSelectViewis empty.
- Add
Cursive::clear_global_callbacks
- Fix non-ASCII input with pancurses backend
- Fix
StackView::move_layer - Fix layout computation for
SelectView - Remove unused
maplitdependency for termion and blt backends
- Style (breaking change):
- Added support for bold/italic/underlined text
- Added
StyledStringfor markup text - Refactored line-break module
- Colors (breaking change):
- Added ColorStyle and PaletteColor for more flexible colored text
- Buttons:
- Added
Dialog::buttonsto iterate on buttons - Added
Button::set_labelandButton::label
- Added
- TextView:
- Added TextContent, a way to separate model and view for TextView
- Added manual scrolling methods
- Allow multiple global callbacks per event
- Allow buttons and delimiters in top-level menubar
- StackView:
- Added
StackView::move_layerto re-order layers StackView::pop_layernow returns the pop'ed view- Added
StackView::reposition_layerto move a layer around
- Added
- Dialog: added
Dialog::focus(&self) - SelectView: added
SelectView::selected Cursive::cb_sinknow acceptsFnOnce(previouslyFnonly)
- Fix a bug in
TextArea::set_content - Fix
Color::from_256colorsfor grayscale colors - Fix resize detection on windows
- Fix possible panic with weird input on pancurses
- Fix possible panic in ListView layout
- Add per-distributions instructions to install ncurses
- Improved comments in examples
- Improve doc for
Cursive::find_id - Improve doc for
Identifiable::with_id - Include Changelog