Leroy Hopson
1d2898f6ab
chore(spelling): add codespell pre-commit hook
...
Fixes spelling mistakes identified by it.
2024-03-30 01:27:28 +13:00
Leroy Hopson
0bd0d39f41
feat(pty): add cols/rows methods and resize tests
2024-03-29 01:27:42 +13:00
Leroy Hopson
d00a31fb45
feat(term): implement clear() method
...
Clears all but the bottommost row of the terminal (including scrollback
buffer) and moves the bottommost row to the top.
2024-03-03 22:39:51 +13:00
Leroy Hopson
71df1e71bd
feat(term): implement copy_all()
...
Implements the copy_all() method which copies all text in the screen
including text in the scrollback buffer.
Includes a fix to an upstream bug in libtsm that resulted in double the
number of '\n' characters being copied for each row.
2024-03-03 21:04:42 +13:00
Leroy Hopson
13cf5ba023
feat(term): implement copy_selection()
...
Implements the copy_selection() method, which returns the selected text.
Adds a copy_on_selection property. When this property is enabled, the
selected text will automatically be copied to the primary clipboard
(Linux X11/Wayland only).
2024-03-03 21:04:16 +13:00
Leroy Hopson
7f03761fb2
fix(pty): remove non-portable signal enums
...
Remove signal enum members which do not use portable numbers, and
therefore may be different on different operating systems.
2024-03-03 21:04:16 +13:00
Leroy Hopson
b78bdf3136
feat(pty): rename get_pts() -> get_pts_name()
2024-03-03 21:04:16 +13:00
Leroy Hopson
cb86cc95d7
fix(pty): use double, not float, for blink times
...
Changes blink_on_time and blink_off_time to use double rather than
float. When float was used, the default blink_off_time of 0.3 was being
converted to 0.30000001192093 in GDScript.
2024-03-03 15:41:27 +13:00
Leroy Hopson
481a1cb04a
fix(pty): create a loop per pty
...
Prevents segmentation faults due to several threads trying to run the
same (default) loop.
2024-03-03 00:15:07 +13:00
Leroy Hopson
a0c9777264
feat(pty): add multithread support
...
Adds the option `use_threads` to PTY (enabled by default) which improves
performance when enabled. For example, running `time cat file.txt` where
file is ~4.5MB will take ~0.250s with threads enabled, versus >20s when
disabled.
2024-03-02 22:49:48 +13:00
Leroy Hopson
e1000adbe5
feat(pty): call _close() on NOTIFICATION_EXIT_TREE
2024-03-01 22:42:37 +13:00
Leroy Hopson
8fa7df29d3
feat(pty): rename statuses
...
- NONE -> CLOSED.
- CONNECTED -> OPEN.
- Remove CONNECTING.
2024-03-01 22:35:47 +13:00
Leroy Hopson
80ae0020da
chore(style): change indentation
2024-03-01 22:31:53 +13:00
Leroy Hopson
39b5614f61
feat(pty): use process internal, not _process
2024-03-01 20:28:03 +13:00
Leroy Hopson
a1be7fb4c3
chore(style): make variable names consistent
...
Makes the Terminal::_set() variable names consistent with the header
file and the _get() and _get_property_list() methods.
2024-02-27 22:12:29 +13:00
Leroy Hopson
a596b41bc3
feat(term): make 'cols' and 'rows' read-only
...
Removes the set_cols() and set_rows() method. The read-only properties
are still visible in the editor inspector.
2024-02-27 22:12:07 +13:00
Leroy Hopson
84e1126824
feat(pty): enable resize and resizev
2024-02-25 23:17:45 +13:00
Leroy Hopson
1da42501af
feat(term): add "size_changed" signal
...
Will be emitted when the number of cols or rows changes.
2024-02-25 22:36:22 +13:00
Leroy Hopson
ee920a45fd
feat(pty): parse env so it can be used with fork
...
Adds method to convert env from a Dictionary to a PackedStringArray so
it can be used with fork(). Consider making env a PackedStringArray to
begin with.
2024-02-25 22:10:34 +13:00
Leroy Hopson
8cd11fdae6
fix(term): prevent double keyboard input
...
Disconnects the "gui_input" signal as the _gui_input() override is
working as expected now. Having this signal connected was causing it to
be called twice for every input.
2024-02-25 22:06:58 +13:00
Leroy Hopson
cf0beee0c1
feat(pty): implement "write" method
2024-02-25 21:24:53 +13:00
Leroy Hopson
988788fc68
feat(term): implement data_sent signal
2024-02-25 21:14:03 +13:00
Leroy Hopson
14288352fd
fix(term): address clang warnings
2024-02-25 20:53:09 +13:00
Leroy Hopson
05b19c1336
feat(term): implement "key_pressed" signal
...
Also adds tests for write response as code relating to this was
modified.
2024-02-25 20:25:32 +13:00
Leroy Hopson
c36500615d
feat(pty): further pty development
2024-02-25 17:55:31 +13:00
Leroy Hopson
1514f42b54
feat(pty): add initial pty node
2024-02-25 11:48:47 +13:00
Leroy Hopson
4771a3c9a7
Fix rendering according to test
2024-02-18 20:31:08 +13:00
Leroy Hopson
6d112ca0f2
Add method get_cell_size()
2024-02-18 20:24:31 +13:00
Leroy Hopson
685884965e
Fix bell behaviour according to tests
2024-02-18 20:24:27 +13:00
Leroy Hopson
dc97c56b17
Use type Vector2i for get_cursor_pos()
...
Cursor position is always integer.
2024-02-18 14:06:30 +13:00
Leroy Hopson
0ccc539f36
Prevent creation of orphan Timer
2024-02-18 14:06:30 +13:00
Leroy Hopson
2b5ea392bf
Free fore_canvas_item
...
Frees fore_canvas_item in cleanup, preventing RID allocation leak.
2024-02-18 14:06:30 +13:00
Leroy Hopson
e234b14867
Only register/remove Terminal once
2024-02-18 12:50:21 +13:00
Leroy Hopson
3bed9e7b0f
Add scroll support
2024-02-15 18:54:20 +13:00
Leroy Hopson
d59a925ca1
Add selection support
2024-02-15 07:27:51 +13:00
Leroy Hopson
3fcaa79f6e
Add support for key input
2024-02-15 06:53:53 +13:00
Leroy Hopson
580760ffad
Move other constants to constants file
2024-02-14 20:00:13 +13:00
Leroy Hopson
0a1ba5abcd
Add KEY_MAP constant
2024-02-14 19:46:29 +13:00
Leroy Hopson
420c774a43
Re-enable native builds
2024-02-13 20:34:47 +13:00
Leroy Hopson
58f4f8f216
Initialize background image to background color
2024-02-10 22:51:11 +13:00
Leroy Hopson
b8431e4a93
Always erase previous cell
...
Even if we are not drawing a new character in the cell, we should erase
the old one.
2024-02-10 22:49:47 +13:00
Leroy Hopson
8e5fbe72cd
Support background and attributes for wide chars
...
Supports setting background color and attributes for wide characters
(i.e. more than 1 cell wide). Previously only the first cell had its
background and attribute set.
2024-02-10 22:49:10 +13:00
Leroy Hopson
fd2c33c486
Re-add bell support
2024-02-10 22:03:43 +13:00
Leroy Hopson
07687e2cd8
Return terminal responses from write method
...
Updates the `write()` method to return a String containing any responses
from the terminal. For example, these could be responses to a cursor
position request such as "\u001b[6n".
2024-02-10 21:10:54 +13:00
Leroy Hopson
9fde38045a
Support rendering of more than just ASCII characters
2024-02-10 21:08:34 +13:00
Leroy Hopson
3f24fa9bf0
Handle multiple font styles
...
Adds support for font styles other than normal, such as bold, italics,
and bold italics.
2024-02-10 17:15:44 +13:00
Leroy Hopson
fb3fb6855c
Make intentionality of switch fallthrough clear
2024-02-10 16:36:48 +13:00
Leroy Hopson
6b1c9d818a
Rename enum AttrFlags -> AttrFlag
2024-02-10 15:53:03 +13:00
Leroy Hopson
575c3875b6
Implement get_cursor_pos()
2024-02-07 23:14:52 +13:00
Leroy Hopson
8c30bec861
Add support for two different inverse modes
...
- Inverse mode invert (default) will invert the color in shader.
- Inverse mode swap will simply swap the foreground and background
colors. This is the default behavior of libtsm and GodotXterm v3.
2024-02-07 23:03:11 +13:00