mirror of
https://github.com/FliegendeWurst/cursive.git
synced 2024-11-23 17:35:00 +00:00
14 KiB
14 KiB
Changelog
Next version (cursive-core 0.2.0, cursive 0.16)
Breaking Changes
- Backends are now initialized when starting the event loop rather than when creating Cursive.
- As a result initialization and runner functions have changed.
API updates
- 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
CursiveRunner
to handle an event loop. XY<T>
now implementsDefault
forT: Default
.Style
now implementsFromIterator<&Style>
to merge multiple styles.XY::stack_{horizontal,vertical}
are nowmust_use
.SpannedString
now implementsFromIterator<SpannedString>
.view::ScrollBase
is now deprecated in favor of theview::scroll
module.- Add
Finder::call_on_all
andCursive::call_on_all_named
to call the same closure of several views with the same type and name. - Add
SpannedString::remove_spans
to remove spans from a StyledString. - Add
SpannedString::compact
to 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_mut
to give mutable access to the attribute of the spans. - Add
TextContent::with_content
to give mutable access to theStyledString
of aTextView
.
Improvements
ListView
now supports children taller than 1 row.- Added an
autocomplete
example. - Added a
stopwatch
example.
Bugfixes
- 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
setlocale
in ncurses backend on BSD. - Fix handling of multi-bytes newlines characters.
- Fix
Doc
- Improve documentation for themes.
cursive-core 0.1.1
API updates
- Add
Dialog::into_content
. - Add
Callback::from_fn_once
andonce1!
macro to wrap aFnOnce
in aFnMut
. - Add
FixedLayoutView
with manual placement of child views. - Add
OnLayoutView
to 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_scroll
callback. - Add
once1!
macro to turn aFnOnce
intoFnMut
. - Implement
Default
for some wrapper views where the child isDefault
.
Bugfixes
- More hygienic
wrap_impl!
macro using fully-qualified paths. - Fixed
LinearLayout
giving children incorrect sizes. - More accurate "important area" for
ShadowView
andPaddedView
. - Fix potential panic when calling
TextArea::set_cursor
before its first layout phase. - Disabled views no longer accept input if they are still in focus.
0.15.0
Breaking changes
- Split library into a backend-agnostic
cursive-core
and a user-facingcursive
. Cursive::default
now needs thecursive::CursiveExt
trait 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
AnyCb
now takes a&mut dyn View
rather than a&mut dyn Any
.
API updates
- Added
cursive::{default,ncurses,pancurses,termion,crossterm,blt,dummy}
functions. - Add
Cursive::debug_name
- Add
ScreensView
to move some code away from theCursive
root- Reworked global callbacks configuration
- Ctrl-C can be rewired to no longer exit the application
- Add
SelectView::(try_)iter_mut()
Dialog::{test, info}
now acceptStyledString
as input- Add missing functions to Checkbox re: enabled state
Bugfixes
- Fix Ctrl-Z binding for ncurses
- Fix potential crash with empty
SelectView
- Add
toml
andmarkdown
features to docs.rs
0.14.0
Breaking changes
cursive::event::AnyCb
changed fromBox<...>
to&mut ...
, so users ofView::call_on_any
no longer need to box their closures.- Remove
BoxView::squishable
. - Update crossterm to 0.14.
- Removed
From
implementations forMargins
. UseMargins::lrtb
and the like instead.- Or
Dialog::padding_lrtb
.
- Or
- Renamed multiple types (old names are still re-exported, but deprecated):
BoxView
->ResizedView
ViewBox
->BoxedView
SizedView
->LastSizeView
Identifiable
->Nameable
Boxable
->Resizable
IdView
->NamedView
Selector::Id
->Selector::Name
with_id
->with_name
call_on_id
->call_on_name
find_id
->find_name
focus_id
->focus_name
API updates
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::scroll
is now a public module.- Add
Cursive::process_events
andCursive::post_events
.- This gives users finer control than
Cursive::step
.
- This gives users finer control than
Layer
now has acolor
option.LinearLayout
can 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
Improvements
- Changed the default color for
TitleSecondary
from yellow to light blue. - Changed the default color for
Tertiary
from grey to white. - Reduced dependencies (
toml
is now optional, removedhashbrown
). Cursive::default()
now fallbacks do dummy backend if no other is available.
Bugfixes
- Fixed
ScrollView::show_scrollbars()
. - Correctly update the offset for
ScrollView
after focus change. - Fixed layout for
BoxView
with some size constraints. - On Windows, do not print unix-specific character during initialization.
- Fix out-of-bounds access for some mouse events in
MenuPopup
0.13.0
Breaking changes
- Update
enum-map
fron 0.5 to 0.6
API updates
- Add
Effect::Strikethrough
(not supported on ncurses) - Add
ListView::remove_child
- Replace
xursive::CbFunc
withBox<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
Improvements
- Performance improvements for the crossterm backend
Bugfixes
- Fix a possible panic when a TextView is updated asynchronously while it's being layed out.
- Fixed weird behaviour of
SizeConstraint::Full
withScrollView
.
0.12.0
Breaking changes
- Updated
enumset
from 0.3 to 0.4
API updates
- Add
Cursive::take_user_data
, replaces the current user data with()
. - Add
SliderView::{get_value, get_max_value}
.
Improvements
DebugConsole
now has horizontal scrolling enabled.pancurses
backend now correctly recognizes the "Enter" key from the numpad as "Enter".
0.11.2
API updates
- Bring back
Cursive::set_fps
for <30Hz refresh rates. - Add
Cursive::backend_name
to 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
Improvements
- Improved printer performance with styled spans.
0.11.1
API updates
- Added manual scrolling methods to
view::scroll::Core
:keep_in_view
,scroll_to
,scroll_to_x
,scroll_to_y
Note: theview::scroll
module is hidden behind an experimental featureunstable_scroll
.
Improvements
- Improved printer performance (thanks to @chrisvest).
Bugfixes
- Fixed
MenuPopup
borders near delimiters.
0.11.0
Breaking changes
Cursive::{ncurses, pancurses, termion}
now returnio::Result<Self>
instead of panicking.Cursive::default()
still unwraps.- Also added
Cursive::try_new
for 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
API updates
- 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
CircularFocus
view (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}
Improvements
- 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.
Bugfixes
- Fixed overflow check for titles in
Dialog
andPanel
0.10.0
New features
- Add
EventTrigger
and updateOnEventView
to use it.- Breaking change: "inner" callbacks for OnEventView now take the event as extra argument.
- Add
Printer::enabled
andEnableableView
to disable whole subtrees. - Add
RadioGroup::on_change
to set a callback on selection change. SelectView
now usesStyledString
to display colored text.- Add
PaddedView
to 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
Bugfixes
- Fix mouse events on Ubuntu
Doc
- Added examples to most utility types (
XY
,Vec2
, ...)
0.9.2
New features
- Add an optional title to
Panel
- Add
immut1!
,immut2!
andimmut3!
macros to wrap aFnMut
inFn
- SelectView: autojump is now opt-in (jump to an element after a letter is pressed)
Bugfixes
- Fix possible crash with
ListView
andSelectView
in very small spaces - Fix termion backend compilation on non-unix platforms
0.9.1
New features
- Add
Cursive::on_event
to send simulated events. - Add
EventResult::and
to combine callbacks. - Allow custom color in
ProgressBar
.
Bugfixes
- 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
Doc
- Fix Readme and examples with
Cursive::default()
0.9.0
New features
- Cursive now supports third-party backends
- Add generic
ScrollView
wrapper. 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
chan
andchan-signals
tocrossbeam-channel
andsignal-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
Changes
- Replaced
Cursive::new()
withCursive::default()
- Renamed
Vec4
toMargins
Callbacks
cannot be created from functions that return a value- The returned value used to be completely ignored
AnyView
does not extendView
anymore (instead,View
extendsAnyView
)- If you were using
AnyView
before, you probably need to replace it withView
- If you were using
- Scrolling is now added to a view with
.scrollable()
cb_sink
is now acrossbeam_channel::Sender
instead ofchan::Sender
SelectView::selection
now returns anOption<Rc<T>>
instead of justRc<T>
. It will returnNone
if theSelectView
is empty.
0.8.1
New features
- Add
Cursive::clear_global_callbacks
Bugfixes
- Fix non-ASCII input with pancurses backend
- Fix
StackView::move_layer
- Fix layout computation for
SelectView
- Remove unused
maplit
dependency for termion and blt backends
0.8.0
New features
- Style (breaking change):
- Added support for bold/italic/underlined text
- Added
StyledString
for markup text - Refactored line-break module
- Colors (breaking change):
- Added ColorStyle and PaletteColor for more flexible colored text
- Buttons:
- Added
Dialog::buttons
to iterate on buttons - Added
Button::set_label
andButton::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_layer
to re-order layers StackView::pop_layer
now returns the pop'ed view- Added
StackView::reposition_layer
to move a layer around
- Added
- Dialog: added
Dialog::focus(&self)
- SelectView: added
SelectView::selected
Cursive::cb_sink
now acceptsFnOnce
(previouslyFn
only)
Bugfixes
- Fix a bug in
TextArea::set_content
- Fix
Color::from_256colors
for grayscale colors - Fix resize detection on windows
- Fix possible panic with weird input on pancurses
- Fix possible panic in ListView layout
Doc
- 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