| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import 'package:xterm/buffer/buffer_line.dart';
- import 'package:xterm/input/keys.dart';
- import 'package:xterm/mouse/position.dart';
- import 'package:xterm/mouse/selection.dart';
- import 'package:xterm/terminal/platform.dart';
- import 'package:xterm/util/observable.dart';
- /// this interface describes what a Terminal UI needs from a Terminal
- abstract class TerminalUiInteraction with Observable {
- /// the ViewPort scroll offset from the bottom
- int get scrollOffsetFromBottom;
- /// the ViewPort scroll offset from the top
- int get scrollOffsetFromTop;
- /// the total buffer height
- int get bufferHeight;
- /// terminal height (view port)
- int get terminalHeight;
- /// terminal width (view port)
- int get terminalWidth;
- /// the part of the buffer that is not visible (scrollback)
- int get invisibleHeight;
- /// object that describes details about the current selection
- Selection? get selection;
- /// [true] when the cursor shall be shown, otherwise [false]
- bool get showCursor;
- /// returns the visible lines
- List<BufferLine> getVisibleLines();
- /// cursor y coordinate
- int get cursorY;
- /// cursor x coordinate
- int get cursorX;
- /// current line
- BufferLine? get currentLine;
- /// color code for the cursor
- int get cursorColor;
- /// color code for the background
- int get backgroundColor;
- /// flag that indicates if the terminal is dirty (since the last time this
- /// flag has been queried)
- bool get dirty;
- /// platform behavior for this terminal
- PlatformBehavior get platform;
- /// selected text defined by [selection]
- String? get selectedText;
- /// flag that indicates if the Terminal is ready
- bool get isReady;
- /// refreshes the Terminal (notifies listeners and sets it to dirty)
- void refresh();
- /// clears the selection
- void clearSelection();
- /// notify the Terminal about a mouse tap
- void onMouseTap(Position position);
- /// notify the Terminal about a pan start
- void onPanStart(Position position);
- /// notify the Terminal about a pan update
- void onPanUpdate(Position position);
- /// sets the scroll offset from bottom (scrolling)
- void setScrollOffsetFromBottom(int offset);
- /// converts the given view line (view port line) index to its position in the
- /// overall buffer
- int convertViewLineToRawLine(int viewLine);
- /// notifies the Terminal about user input
- void raiseOnInput(String input);
- /// writes data to the Terminal
- void write(String text);
- /// paste clipboard content to the Terminal
- void paste(String data);
- /// notifies the Terminal about a resize that happened. The Terminal will
- /// do any resize / reflow logic and notify the backend about the resize
- void resize(int newWidth, int newHeight);
- /// notifies the Terminal about key input
- void keyInput(
- TerminalKey key, {
- bool ctrl = false,
- bool alt = false,
- bool shift = false,
- bool mac = false,
- // bool meta,
- });
- /// Future that fires when the backend has exited
- Future<int> get backendExited;
- /// terminates the backend. If already terminated, nothing happens
- void terminateBackend();
- /// flag that indicates if the backend is already terminated
- bool get isTerminated;
- }
|