This module provides a text-editing widget. Edit widgets can operate in single- and multi-line modes.
Edit widgets support the following special keystrokes:
- Arrow keys to navigate the text
Enter- Activate single-line edit widgets or insert new lines into multi-line widgets
Control-a- Go to beginning of the current line
Control-e- Go to end of the current line
Control-k- Remove text from the cursor to the end of the line, or remove the line if it is empty
Control-d- delete the current character
Backspace- delete the previous character
- data Edit
- editWidget :: IO (Widget Edit)
- multiLineEditWidget :: IO (Widget Edit)
- getEditText :: Widget Edit -> IO String
- getEditCurrentLine :: Widget Edit -> IO String
- setEditText :: Widget Edit -> String -> IO ()
- setEditCursorPosition :: Widget Edit -> (Int, Int) -> IO ()
- getEditCursorPosition :: Widget Edit -> IO (Int, Int)
- setEditLineLimit :: Widget Edit -> Maybe Int -> IO ()
- getEditLineLimit :: Widget Edit -> IO (Maybe Int)
- onActivate :: Widget Edit -> (Widget Edit -> IO ()) -> IO ()
- onChange :: Widget Edit -> (String -> IO ()) -> IO ()
- onCursorMove :: Widget Edit -> ((Int, Int) -> IO ()) -> IO ()
Construct a text widget for editing a single line of text.
Single-line edit widgets will send activation events when the user
Construct a text widget for editing multi-line documents.
Multi-line edit widgets never send activation events, since the
Enter key inserts a new line at the cursor position.
Get the current contents of the edit widget. This returns all of the lines of text in the widget, separated by newlines.
Get the contents of the current line of the edit widget (the line on which the cursor is positioned).
Set the contents of the edit widget. Newlines will be used to break up the text in multiline widgets. If the edit widget has a line limit, only those lines within the limit will be set.
Set the current edit widget cursor position. The tuple is (row, column) with each starting at zero. Invalid cursor positions will be ignored.
Get the edit widget's current cursor position (row, column).
Set the limit on the number of lines for the edit widget. Nothing indicates no limit, while Just indicates a limit of the specified number of lines.
Get the current line limit, if any, for the edit widget.
Register handlers to be invoked when the edit widget has been ''activated'' (when the user presses Enter while the widget is focused). These handlers will only be invoked when a single-line edit widget is activated; multi-line widgets never generate these events.
Register handlers to be invoked when the edit widget's contents change. Handlers will be passed the new contents.