* do not use timer for selection, due to issue with Engine.time_scale == 0
* deciding on redraw based on target cell change
* deciding on send to system based on mouse button up event
* remove _on_selection_held() timer callback function and SelectionMode enum
* on non-Linux system use clipbord when copy_on_selection is active
Merges a custom theme containing 'Terminal' theme properties with the
default theme rather than setting them on the default theme directly.
This improves performance for initial loading of the plugin.
Adds support for 'normal' and 'focus' Style Boxes to Terminal node.
Changes default background color to transparent, with background to be
set by StyleBox.
If background color is not transparent, will draw a background color
rect to cover the entire control over the top of any stylebox. This is
consistent with the behavior of the TextEdit node with regards to theme
colors and styleboxes.
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.
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).
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.
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.
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.
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".
- 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.
The two shaders use a lot of common logic for co-ordinate and attribute
look up, so it makes sense to use a common include shader for both.
Adds support for the inverse and blink attributes to the foreground shader.
Rewrites the Terminal class as a GDExtension to be used directly in
Godot without a terminal.gd proxy.
Breaks a lot of things in its current state (e.g. signals and other
functions have not be implemented yet), but does add support for
transparent colors and true color inversion. It also seems to
be about 4x faster (FPS-wise) than the old version with some basic
stress testing.
Old source code has been moved to a different directory to be copied
over and/or rewritten piece by piece.
- Primary example scenes (menu, terminal, and asciicast) working but
still a lot of warning/error messages and some regressions.
- Editor integrated terminal works, but still a lot of warning/error
messages and some regressions.
- Added support for "blink" display attribute.
- Removed GDScript terminal code. Terminal node is now purely a
GDExtension. So is LibuvUtils.
- GUT tests not working yet.
- Still a lot of things to fix.
- So far, only built for and manually tested on Linux x86_64.
Changes Emscripten SDK version to match that used to compile the default export
templates used by Godot 3.5 (in this case 3.1.14 as can be seen here:
https://github.com/godotengine/build-containers/blob/3.5/Dockerfile.javascript).
This means we no longer need to compile custom export templates when
exporting HTML5 for Godot 3.5. Exports from other Godot versions may
requiring compiling the GDNative library with a different version of the
Emscripten SDK.
- Changes renderer from GLES3 -> GLES2 and reduces MSAA level to better
support HTML5 export.
- Updates GitHub Action to export HTML5 and upload as a build artifact.
- Adds Cypress test to smoke test HTML5 export.
Updates theme names to be compatible with Godot 3.5 (no spaces),
consistent with other Godot theme item names (snake_case), and
match the color names listed on the
[ANSI escape code wikipedia page](https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit).
Deprecates the old names and warns users to change them.