Commit Graph

262 Commits

Author SHA1 Message Date
ArthurSonzogni
3490d56662 Improve performance.
Read all the input before drawing anything on the screen.
2020-06-01 16:16:08 +02:00
ArthurSonzogni
823e0906da Fix OnEvent being called on Empty containers. 2020-05-25 02:14:58 +02:00
ArthurSonzogni
b00fa7dc65 Fix issue 19.
This was introduced by previous patch.

See:
https://github.com/ArthurSonzogni/FTXUI/issues/19
2020-05-20 22:04:41 +02:00
ArthurSonzogni
e34f051f7a Simplify the Render(screen, document) function. 2020-05-20 21:23:59 +02:00
ArthurSonzogni
957387adaa Format. 2020-05-20 20:51:20 +02:00
ArthurSonzogni
e1a71d5b9f Use shared_ptr instead of unique_ptr for elements.
This allow users to pass it into initializer list. Then clang-format
will produce 'acceptable' indentations.

This fixes:
https://github.com/ArthurSonzogni/FTXUI/issues/18
2020-05-20 20:51:20 +02:00
ArthurSonzogni
76fc52441f Implement "alternative screen".
Apply this option automatically for "fullscreen" screen. Keep it
disabled for the other modes.

This fixes issue:
https://github.com/GiuseppeCesarano/just-fast/issues/2
2020-05-02 20:39:56 +02:00
ArthurSonzogni
ac3db36de8 Stop using fcntl
This fixes issue 16
https://github.com/ArthurSonzogni/FTXUI/issues/16

Some terminal like gnome-terminal seems not to support it correctly. It
turns out it wasn't totally useful using it.
2020-05-02 20:11:36 +02:00
ArthurSonzogni
1974e9f9fc Make flexible element to be shrinkable.
This make the application "just-fast" to look better.
2020-05-02 17:39:42 +02:00
ArthurSonzogni
cccbe5baa9 Fix non blocking I/O on POSIX. 2020-05-02 02:02:04 +02:00
ArthurSonzogni
2d292b5382 Make catching SIGNAL SIGINT to work also on windows. 2020-05-01 23:48:22 +02:00
ArthurSonzogni
898cd842e2 Catch SIGINT event.
This was an old features, but it has been removed mistakenly when
merging some patches.

This allow the terminal to be restored when the user kill the
application.
2020-05-01 23:45:17 +02:00
ArthurSonzogni
d8e0504ad0 Add timeout for getchar() in POSIX.
Previously, the thread pooling new characters being typed was waiting
for "one more char" being typed before being able to exit.

This patch adds a timeout for getchar(). This way, event if the user do
not press his/her keyboard, the program is still able to exit.

This fixes issue:
https://github.com/GiuseppeCesarano/just-fast/issues/2
2020-05-01 23:36:02 +02:00
ArthurSonzogni
f506be941d Add automatic formatting and license. 2020-04-19 21:01:09 +02:00
ArthurSonzogni
a09ebcc442 Fix bug with container on Windows.
This fix the bug from:
https://github.com/ArthurSonzogni/FTXUI/pull/11

About:
~~~
Bug: Focus handling not working

in the examples (e.g. checkbox.cpp) I can toggle the individual
checkboxes but I cannot move between items, I tried to understand the
focus implementation but am I unsure which keypresses would move focus
between different components
~~~
2020-04-17 01:15:17 +02:00
ArthurSonzogni
fce29a03b3 Run clang-format. 2020-03-27 01:42:46 +01:00
ArthurSonzogni
6e7b4526a0 Add ReceiverTest.
And fix a small bug with the Receiver not eating all the input.
2020-03-27 01:01:37 +01:00
ArthurSonzogni
e8ed0fbc6d Add ContainerTest 2020-03-27 01:01:37 +01:00
ArthurSonzogni
2cef695216 Add RadioboxTest 2020-03-27 01:01:37 +01:00
ArthurSonzogni
580e648147 Remove the pipe class. 2020-03-27 01:01:37 +01:00
ArthurSonzogni
6600e4fc03 Add ToggleTest. 2020-03-27 01:01:37 +01:00
ArthurSonzogni
f48bfcff10 Move tests next to their implementations. 2020-03-27 01:01:37 +01:00
ArthurSonzogni
20d4ee458a Fix layout bug detected thanks to dom_tests. 2020-03-25 19:10:46 +01:00
ArthurSonzogni
13d1cc1684 Fix missing include. 2020-03-25 18:31:27 +01:00
Mikael Olenfalk
a55baa1e9c Use the correct macro check if we are compiling for windows 2020-03-25 08:54:03 +01:00
ArthurSonzogni
5fc5766f1e Add Windows input.
Co-authored-by: Mikael Olenfalk <mikael@olenfalk.se>
Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
2020-03-25 02:24:43 +01:00
ArthurSonzogni
ff59c7bafa Fix compile on Windows. 2020-03-25 02:18:48 +01:00
ArthurSonzogni
6e22a10eb7 Fix compile error on OS where char is signed. 2020-03-25 02:01:31 +01:00
ArthurSonzogni
508b2ef048 Improve thread usages. 2020-03-25 01:15:46 +01:00
ArthurSonzogni
0a7b556a12 Switch name Producer/Consumer -> Sender/Receiver
The producer/consumer was created for:
https://github.com/ArthurSonzogni/FTXUI/pull/11

This patch makes rename everything from Producer/Consumer toward
Sender/Receiver.
2020-03-25 00:07:41 +01:00
ArthurSonzogni
09a1b16613 Add a Producer/Consumer system.
It allow you to create the two end of a pipe: A producer and consumer.
The producer can be moved into another thread.
Several producer can be created if necessary.

This will ease merging:
https://github.com/ArthurSonzogni/FTXUI/pull/11
2020-03-24 23:42:17 +01:00
ArthurSonzogni
6de8c63907 Readd 'resize' handling. It was mistakenly removed. 2020-03-24 01:26:06 +01:00
Mikael Olenfalk
f927d3d712 Win32: Switch codepage to UTF8 in Screen constructor
Co-authored-by: Mikael Olenfalk <mikael@olenfalk.se>
Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
2020-03-24 00:37:06 +01:00
Mikael Olenfalk
b2b42a8a04 Disable C++17 deprecation warnings 2020-03-23 22:44:13 +01:00
Mikael Olenfalk
71598cb18d Fix warning: Namespace uses itself 2020-03-23 21:46:44 +01:00
Mikael Olenfalk
40800ac019 Use Console API to set and restore terminal mode on Windows 2020-03-23 21:42:33 +01:00
ArthurSonzogni
493e734680 Set clang-format macro indent.
1) Set clang-format macro indent.
2) Run clang-format on every files.
2020-03-23 21:26:00 +01:00
Mikael Olenfalk
9e71c467f6 Use Console API to get terminal size on Windows
Co-authored-by: Mikael Olenfalk <mikael@olenfalk.se>
Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
2020-03-23 21:11:34 +01:00
Mikael Olenfalk
539ec45036 Add missing <algorithm> include 2020-03-23 21:03:25 +01:00
ArthurSonzogni
9ca8d41afc Improve ScreenInteractive. 2020-03-23 09:23:57 +01:00
ArthurSonzogni
a402cb4fbb Fix format. Try compile on Windows. 2020-03-22 22:32:44 +01:00
ArthurSonzogni
65705d5bc7 Fix werror=type-limit on systems with char=unsigned char. 2020-02-11 23:43:26 +01:00
ArthurSonzogni
1f1229564a Fix (maybe uninitialized) on weak compilers. 2020-02-11 22:34:01 +01:00
ArthurSonzogni
a8fdfafe6a Support the -pedantic flag. 2020-02-11 21:44:55 +01:00
Ilia Sharin
469d2cd736 Fix compilation issue on macOS(CLang compiler) where stdlib doesn't define quick_exit() 2020-02-02 15:27:46 -05:00
ArthurSonzogni
22f8f0d3b7 Using TAB key event.
A key event that makes use of TAB key to cycle the elements.

Co-authored-by: Trim Bresilla <trim.bresilla@gmail.com>"
Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
2019-11-01 19:54:16 +01:00
ArthurSonzogni
7f0381e30a Emit a new line when a component is interrupted.
While running a component, make sure to reset the cursor at the end of
the component and insert a new line.

This fixes:
https://github.com/ArthurSonzogni/FTXUI/issues/6
2019-09-18 22:02:51 +02:00
ArthurSonzogni
e1efcf2d97 Make DEL to be a special character. 2019-07-02 23:09:20 +02:00
ArthurSonzogni
65e7fae7df Fix parsing of CSI escape sequence.
There was a bug, preventing the user from typing the DEL key.

This is related to bug:
https://github.com/ArthurSonzogni/FTXUI/issues/4
2019-07-01 00:44:50 +02:00
ArthurSonzogni
01ab335919 Implement key Delete in component > Input.
The BS  key is used to delete the character on the left of the cursor.
The DEL key is used to delete the character on the right of the cursor.

BackSpace was already implemented. This CL implements DEL.

This is related to bug:
https://github.com/ArthurSonzogni/FTXUI/issues/4
2019-07-01 00:40:55 +02:00
ArthurSonzogni
32871fcc6b Add -Wextra 2019-06-30 23:59:27 +02:00
ArthurSonzogni
a87e70c96e Handle terminal resize.
This is related to bug:
https://github.com/ArthurSonzogni/FTXUI/issues/3
2019-06-30 23:53:56 +02:00
ArthurSonzogni
b8a81bae9e Add focus element in input component while the placeholder is displayed.
This should fix:
https://github.com/ArthurSonzogni/FTXUI/issues/2
2019-06-30 10:11:48 +02:00
ArthurSonzogni
8b79b3af99 Fix compilation errors in clang. 2019-06-30 10:11:37 +02:00
ArthurSonzogni
86c3b60a6f Move the cursor to the input location.
Most CJK users use IME (input method) to type CJK characters. They need
the cursor to be at the correct location, not in the bottom right
corner.

This CL does:
 * Move the cursor the focus() element.
 * Hide the cursor (and show it at exit)
 * Intercept SIGINT to guarantee proper cleanup all the time.

This should fix the second issue mentionned on:
https://github.com/ArthurSonzogni/FTXUI/issues/2
2019-06-29 18:52:58 +02:00
ArthurSonzogni
eb6baaceea Support full-width characters (CJK)
+ 3 tests.

The goal is to fix:
https://github.com/ArthurSonzogni/FTXUI/issues/2#issuecomment-504871456
2019-06-24 23:39:37 +02:00
ArthurSonzogni
9c1913de51 Fix xterm parsing. unsigned vs signed char problem. 2019-06-23 17:59:34 +02:00
ArthurSonzogni
001a0ae925 Add UTF8 support and a better xterm parsing.
This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/2
2019-06-23 17:52:31 +02:00
ArthurSonzogni
a366c9b9e2 Handle empty container. 2019-02-02 18:41:07 +01:00
ArthurSonzogni
15da9cdc18 Improve ScreenInteractive wait function. 2019-02-02 16:59:08 +01:00
ArthurSonzogni
ed416b5e1e Remove comments when terminal size is determined. 2019-02-02 11:48:17 +01:00
ArthurSonzogni
ef0de8d873 Add support for nxxm.
[nxxm](https://nxxm.github.io)
2019-02-02 02:25:06 +01:00