mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-11-27 21:58:29 +08:00
70bc44d28b
Some checks failed
Build / Tests (gcc, gcov, Linux GCC, ubuntu-latest) (push) Failing after 41s
Build / documentation (push) Failing after 42s
Build / Tests (llvm, llvm-cov gcov, Linux Clang, ubuntu-latest) (push) Failing after 2m3s
Build / Tests (cl, Windows MSVC, windows-latest) (push) Has been cancelled
Build / Create release (push) Has been cancelled
Build / Build packages (build/ftxui*Darwin*, macos-latest) (push) Has been cancelled
Build / Build packages (build/ftxui*Linux*, ubuntu-latest) (push) Has been cancelled
Build / Build packages (build/ftxui*Win64*, windows-latest) (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Failing after 1m34s
For long tables (and other DOM elements), one may want the screen to render on dimensions higher than the terminal. Hence, this PR proposes a way to do so, with an optional parameter in the `Dimension::Fit` util function. Discussions / Issues : - https://github.com/ArthurSonzogni/FTXUI/issues/572 - https://github.com/ArthurSonzogni/FTXUI/discussions/949 Bug:https://github.com/ArthurSonzogni/FTXUI/issues/572 Fixed:Bug:https://github.com/ArthurSonzogni/FTXUI/issues/572 Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
14 KiB
14 KiB
Changelog
current (development)
Component
- Feature: Add support for raw input. Allowing more keys to be detected.
- Feature: Add
ScreenInteractive::ForceHandleCtrlC(false)
to allow component to fully override the defaultCtrl+C
handler. - Feature: Add
ScreenInteractive::ForceHandleCtrlZ(false)
to allow component to fully override the defaultCtrl+Z
handler. - Feature: Add
Mouse::WeelLeft
andMouse::WeelRight
events on supported terminals. - Feature: Add
Event::DebugString()
. - Feature: Add support for
Input
's insert mode. AddInputOption::insert
option. Added by @mingsheng13. - Feature: Add
DropdownOption
to configure the dropdown. See #826. - Bugfix/Breaking change:
Mouse transition
:- Detect when the mouse move, as opposed to being pressed. The Mouse::Moved motion was added.
- Dragging the mouse with the left button pressed now avoids activating multiple checkboxes.
- A couple of components are now activated when the mouse is pressed, as opposed to being released. This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/773 This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/792
- Bugfix: mouse.control is now reported correctly.
- Feature: Add
ScreenInteractive::FullscreenPrimaryScreen()
. This allows displaying a fullscreen component on the primary screen, as opposed to the alternate screen. - Bugfix:
Input
onchange
was not called on backspace or delete key. Fixed by @chrysante in chrysante in PR #776. - Bugfix: Propertly restore cursor shape on exit. See #792.
- Bugfix: Fix cursor position in when in the last column. See #831.
- Bugfix: Fix
ResizeableSplit
keyboard navigation. Fixed by #842. - Bugfix: Fix
Menu
focus. See #841 - Feature: Add
ComponentBase::Index()
. This allows to get the index of a component in its parent. See #932 - Feature: Add
EntryState::index
. This allows to get the index of a menu entry. See #932 - Feature: Add
SliderOption::on_change
. This allows to set a callback when the slider value changes. See #938.
Dom
- Feature: Add
hscroll_indicator
. It display an horizontal indicator reflecting the current scroll position. Proposed by @ibrahimnasson in issue 752 - Feature: Add
extend_beyond_screen
option toDimension::Fit(..)
, allowing the element to be larger than the screen. Proposed by @LordWhiro. See #572 and #949.
Screen
- Feature: Add
Box::IsEmpty()
. - Feature: Color transparency
- Add
Color::RGBA(r,g,b,a)
. - Add
Color::HSVA(r,g,b,a)
. - Add
Color::Blend(Color)
. - Add
Color::IsOpaque()
- Add
Util
- Feature: Support arbitrary
Adapter
forConstStringListRef
. See #843.
Build
- Support for cmake's "unity/jumbo" builds. Fixed by @ClausKlein.
5.0.0
Component
- Breaking: MenuDirection enum is renamed Direction
- Breaking: GaugeDirection enum is renamed Direction
- Breaking: Direction enum is renamed WidthOrHeight
- Breaking: Remove
ComponentBase
copy constructor/assignment. - Breaking: MenuOption::entries is renamed MenuOption::entries_option.
- Breaking:
Ref<{Component}Option>
becomes{Component}Option
in component constructors. - Feature:
ResizeableSplit
now support arbitrary element as a separator. - Feature:
input
is now supporting multiple lines. - Feature:
input
style is now customizeable. - Bugfix: Support F1-F5 from OS terminal.
- Feature: Add struct based constructor:
Component Button(ButtonOption options); Component Checkbox(CheckboxOption options); Component Input(InputOption options); Component Menu(MenuOption options); Component MenuEntry(MenuEntryOption options); Component Radiobox(RadioboxOption options); Component Slider(SliderOption<T> options); Component ResizableSplit(ResizableSplitOption options);
- Feature: Add
ScreenInteractive::TrackMouse(false)
disable mouse support.
Dom
- Feature: Add
hyperlink
decorator. For instance:
See the OSC 8 page. FTXUI support proposed by @aaleino in #662.auto link = text("Click here") | hyperlink("https://github.com/FTXUI")
Screen
- Breaking:
WordBreakProperty
becomes a uint8_t enum. This yields a 0.8% performance improvement. - Breaking: Remove user defined Pixel constructor and equality operator.
- Performance: 19% faster on benchmarks.
Build
- Check version compatibility when using cmake find_package()
- Add
FTXUI_DEV_WARNING
options to turn on warnings when building FTXUI - Turn OFF by default
FTXUI_BUILD_DOCS
- Turn OFF by default
FTXUI_BUILD_EXAMPLE
4.1.1
Component
- Fix: Support arrow keys in application mode
- Fix: Remove useless new line when using an alternative screen.
Dom
- Feature: Add the dashed style for border and separator:
- See
DASHED
enum, andseparatorDashed()
,borderDashed()
functions.
- See
- Feature: Add colored borders.
- See functions:
borderStyled(BorderStyle, Color)
andborderStyled(Color)
.
- See functions:
- Feature: Add
LinearGradient
. It can be used incolor
andbgColor
. - Improvement: Color::Interpolate() uses gamma correction.
- Fix: Check the
graph
area is positive.
Build/Install
- Use globally set CMAKE_CXX_STANDARD if it is set.
- Expose the pkg-config file
- Check version compatibility when using cmake find_package()
4.1.0 (Abandonned)
This version is abandonned and must not be used. It introduced a breaking change in the API.
4.0.0
DOM
- Feature: more styles:
strikethrough
underlinedDouble
- Feature: Customize the cursor. Add the following decorators:
focusCursorBlock
focusCursorBlockBlinking
focusCursorBar
focusCursorBarBlinking
focusCursorUnderline
focusCursorUnderlineBlinking
- Bugfix: Fix
focus
/select
when thevbox
/hbox
/dbox
contains aflexbox
- Bugfix: Fix the selected/focused area. It used to be 1 cell larger/longer than requested
- Bugfix: Forward the selected/focused area from the child in gridbox.
- Bugfix: Fix incorrect Canvas computed dimensions.
- Bugfix: Support
vscroll_indicator
with a zero inner size. - Bugfix: Fix
vscroll_indicator
hidding the last column.
Component:
- Feature: Add the
Modal
component. - Feature:
Slider
supports taking references for all its arguments. - Feature:
Slider
supportsSliderOption
. It supports:- multiple directions.
- multiple colors.
- various values (value, min, max, increment).
- Feature: Define
ScreenInteractive::Exit()
. - Feature: Add
Loop
to give developers a better control on the main loop. This can be used to integrate FTXUI into another main loop, without taking the full control. - Feature:
Input
supports CTRL+Left and CTRL+Right - Feature: Use a blinking bar in the
Input
component. - Improvement: The
Menu
keeps the focus when an entry is selected with the mouse. - Bugfix: Add implementation of
ButtonOption::Border()
. It was missing. - Bugfix: Provide the correct key for F1-F4 and F11.
- Feature: Add the
Hoverable
component decorators.
Screen
- Feature: add
Box::Union(a,b) -> Box
- Bugfix: Fix resetting
dim
clashing with resetting ofbold
. - Feature: Add emscripten screen resize support.
- Bugfix: Add unicode 13 support for full width characters.
- Bugfix: Fix MSVC treating codecvt C++17 deprecated function as an error.
Build
- Support using the google test version provided by the package manager.
3.0.0
Build
- breaking: The library prefix is now back to "lib" (the default). This means non-cmake users should not link against "libftxui-dom" for instance.
Component
- Animations module! Components can implement the
OnAnimation
method and the animation::Animator to define some animated properties.Menu
now support animations.Button
now supports animations.
- Support SIGTSTP. (ctrl+z).
- Support task posting.
ScreenInteractive::Post(Task)
. Menu
can now be used in the 4 directions, usingMenuOption.direction
.Menu
can display an animated underline, usingMenuOption.underline.enabled
.Button
is now taking the focus in frame.- breaking All the options are now using a transform function.
- breaking The
Toggle
component is now implemented usingMenu
. - bugfix Container::Tab implements
Focusable()
. - bugfix Improved default implementations of ComponentBase
Focusable()
andActiveChild()
methods. - bugfix Automatically convert '\r' keys into '\n' for Linux programs that do not send the correct code for the return key, like the 'bind'. https://github.com/ArthurSonzogni/FTXUI/issues/337
- Add decorator for components:
operator|(Component, ComponentDecorator)
operator|(Component, ElementDecorator)
operator|=(Component, ComponentDecorator)
operator|=(Component, ElementDecorator)
- Add the
Maybe
decorator. - Add the
CatchEvent
decorator. - Add the
Renderer
decorator.
- breaking remove the "deprectated.hpp" header and Input support for wide string.
DOM:
- breaking: The
inverted
decorator now toggle in the inverted attribute. - Add
gauge
for the 4 directions. Expose the following API:
Element gauge(float ratio);
Element gaugeLeft(float ratio);
Element gaugeRight(float ratio);
Element gaugeUp(float ratio);
Element gaugeDown(float ratio);
Element gaugeDirection(float ratio, GaugeDirection);
- Add
separatorHSelector
andseparatorVSelector
elements. This can be used to highlight an area. - Add the
automerge
decorator. This makes separator characters to be merged with others nearby. - Fix the
Table
rendering function, to allow automerging characters. - Bugfix: The
vscroll_indicator
now computes its offset and size correctly. - Add the
operator|=(Element, Decorator)
Screen:
- Add:
Color::Interpolate(lambda, color_a, color_b)
.
2.0.0
Features:
Screen
- Add the
automerge
to the Pixel bit field. This now controls which pixels are automatically merged.
DOM:
- Add the
Canvas
class andElementFrom('canvas')
function. Together users of the library can draw using braille and block characters. - Support
flexbox
dom elements. This is build symmetrically to the HTML one. All the following attributes are supported: direction, wrap, justify-content, align-items, align-content, gap - Add the dom elements helper based on
flexbox
:paragraph
paragraphAlignLeft
paragraphAlignCenter
paragraphAlignRight
paragraphAlignJustify
- Add the helper elements based on
flexbox
:hflow()
,vflow()
. - Add:
focusPositionRelative
andfocusPosition
- Add
Table
constructor from 2D vector of Element, instead of string.
Component
- Add the
collapsible
component. - Add the
ScreenInteractive::WithRestoredIO
. This decorates a callback. This runs it with the terminal hooks temporarilly uninstalled. This is useful if you want to execute command using directly stdin/stdout/sterr.
Bug
Table
- The
table
horizontal and vertical separator are now correctly expanded.
Component
Input
shouldn't take focus when hovered by the mouse.- Modifying
Input
's during on_enter/on_change event is now working correctly.
Breaking changes:
- The behavior of
paragraph
has been modified. It now returns en Element, instead of a list of elements.
0.11.1
Component
- Feature: Support for PageUp/PageDown/Home/End buttons.
- Bugfix: Check the selected element are within bounds for Dropdown.
Build
- Bugfix: Package library using the "Release config". Not debug.
0.11
github workflow
- Add Windows ad MacOS artefacts.
- Merge all the workflows.
Bug
- On Unix system, fallback to {80,25} screen dimension on failure.
CMake
- Support for shared library, via
BUILD_SHARED_LIBS
option. - Add library version and symlinks.
0.10 (2021-09-30)
Bug
- Fix the automated merge of borders.
Dom
Table()
class to build stylised table. See https://github.com/ArthurSonzogni/FTXUI/discussions/228vscroll_indicator
. Show a scrollbar indicator on the right.separatorEmpty
. A separator drawing nothing.separatorFixed
. A separator drawing the provided character.
Component
Maybe
: Display an component conditionnally based on a boolean.Dropdown
: A dropdown select list.
0.9 (2021-09-26)
The initial release where changelog where written.
This version includes:
screen
- Style:
- Bold.
- Blink.
- Dim.
- Inverted.
- Underlined.
- Foreground color.
- Background color.
- Support for UTF8 unicode.
- Full wide character: 测试.
- Combining characters: a⃒
- A Stencil buffer.
- Automatically merge box drawing characters.
- Detect terminal dimension.
DOM
-
Element:
text
&vtext
separator
and 5 variations.gauge
border
and 6 variations.window
spinner
paragraph
andhflow
.
-
Layout:
hbox
vbox
dbox
gridbox
frame
: Drawing inside a virtual area, potentially larger than the real one.focus
,select
: scroll the inner view of a frame, to be in view.flex
& 8 variations.filler
-
Decorators:
bold
dim
inverted
blink
color
bgcolor
clearunder
Component
- Container:
Container::Vertical
Container::Horizontal
Container::Tab
Button
Checkbox
Input
Menu
MenuEntry
Radiobox
Toggle
Slider
Renderer
& variationsCatchEvent
MISC
- Fuzzer
- Tests using gtest.
- Doxygen documentation
- IWYU
- 52 examples.
- Support for WebAssembly.
- Support for Window and fallback for broken terminal.