class

Anvil::Widgets::InputEditor

Inherits Reference < Object

Einzeiliger Eingabezeileneditor mit History.

Der Puffer ist eine Liste von Grapheme-Clustern, nicht von Zeichen: nur so bewegt sich der Cursor um ein sichtbares Zeichen, wenn dieses aus mehreren Codepoints besteht (Emoji mit Variation Selector, e + Akzent). Die Spaltenrechnung geht durch dieselbe Breitenfunktion wie der Renderer, sonst steht der Cursor bei CJK-Text an der falschen Stelle.

Constructors

new(history : Array(String) = Array(String).new, max_history : Int32 = 500)
Source

Instance methods

columns_before_cursor

Spalten links vom Cursor — was die Surface braucht, um ihn zu setzen.

Source
cursor
Source
display_width
Source
empty?
Source
handle(event : Termisu::Event::Key) : String | Nil

Verarbeitet eine Taste. Liefert den abgesendeten Text bei Enter, sonst nil. Tasten, die den Editor nichts angehen, werden ignoriert — die App-Schleife sieht sie ohnehin zuerst.

Source
history
Source
insert_text(text : String) : Nil

Text an der Cursorposition einfügen — für Einfügevorgänge und alles, was den Puffer von außen füllt.

Zeilenumbrüche werden zu Leerzeichen geglättet: sie würden das einzeilige Layout sprengen, und ein Umbruch in der Eingabezeile wäre ohnehin nicht darstellbar.

Source
reset
Source
set_text(text : String) : Nil
Source
text
Source
view(width : Int32, style : Text::Style = Text::Style::NONE) : Tuple(Text::StyledLine, Int32)

Die sichtbare Zeile plus die Cursorspalte darin, horizontal gescrollt, wenn der Text breiter ist als das Feld. Der Cursor bleibt dabei immer im Bild.

Source