Gtk2HsContentsIndex
Graphics.UI.Gtk.Entry.Editable
Portabilityportable (depends on GHC)
Stabilityprovisional
Maintainergtk2hs-users@lists.sourceforge.net
Contents
Detail
Class Hierarchy
Types
Methods
Attributes
Signals
Description
Interface for text-editing widgets
Synopsis
data Editable
class GObjectClass o => EditableClass o
castToEditable :: GObjectClass obj => obj -> Editable
toEditable :: EditableClass o => o -> Editable
editableSelectRegion :: EditableClass self => self -> Int -> Int -> IO ()
editableGetSelectionBounds :: EditableClass self => self -> IO (Int, Int)
editableInsertText :: EditableClass self => self -> String -> Int -> IO Int
editableDeleteText :: EditableClass self => self -> Int -> Int -> IO ()
editableGetChars :: EditableClass self => self -> Int -> Int -> IO String
editableCutClipboard :: EditableClass self => self -> IO ()
editableCopyClipboard :: EditableClass self => self -> IO ()
editablePasteClipboard :: EditableClass self => self -> IO ()
editableDeleteSelection :: EditableClass self => self -> IO ()
editableSetEditable :: EditableClass self => self -> Bool -> IO ()
editableGetEditable :: EditableClass self => self -> IO Bool
editableSetPosition :: EditableClass self => self -> Int -> IO ()
editableGetPosition :: EditableClass self => self -> IO Int
editablePosition :: EditableClass self => Attr self Int
editableEditable :: EditableClass self => Attr self Bool
onEditableChanged :: EditableClass ec => ec -> IO () -> IO (ConnectId ec)
afterEditableChanged :: EditableClass ec => ec -> IO () -> IO (ConnectId ec)
onDeleteText :: EditableClass self => self -> (Int -> Int -> IO ()) -> IO (ConnectId self)
afterDeleteText :: EditableClass self => self -> (Int -> Int -> IO ()) -> IO (ConnectId self)
stopDeleteText :: EditableClass self => ConnectId self -> IO ()
onInsertText :: EditableClass self => self -> (String -> Int -> IO Int) -> IO (ConnectId self)
afterInsertText :: EditableClass self => self -> (String -> Int -> IO Int) -> IO (ConnectId self)
stopInsertText :: EditableClass self => ConnectId self -> IO ()
Detail

The Editable interface is an interface which should be implemented by text editing widgets, such as Entry. It contains functions for generically manipulating an editable widget, a large number of action signals used for key bindings, and several signals that an application can connect to to modify the behavior of a widget.

As an example of the latter usage, by connecting the following handler to "insert_text", an application can convert all entry into a widget into uppercase.

Class Hierarchy
 |  GInterface
 |   +----Editable
 
Types
data Editable
show/hide Instances
class GObjectClass o => EditableClass o
show/hide Instances
castToEditable :: GObjectClass obj => obj -> Editable
toEditable :: EditableClass o => o -> Editable
Methods
editableSelectRegion
:: EditableClass self
=> self
-> Intstart - the starting position.
-> Intend - the end position.
-> IO ()

Selects a region of text. The characters that are selected are those characters at positions from startPos up to, but not including endPos. If endPos is negative, then the the characters selected will be those characters from startPos to the end of the text.

Calling this function with start=1 and end=4 it will mark "ask" in the string "Haskell". (FIXME: verify)

editableGetSelectionBounds
:: EditableClass self
=> self
-> IO (Int, Int)(start, end) - the starting and end positions. This pair is not ordered. The end index represents the position of the cursor. The start index is the other end of the selection. If both numbers are equal there is in fact no selection.
Gets the current selection bounds, if there is a selection.
editableInsertText
:: EditableClass self
=> self
-> StringnewText - the text to insert.
-> Intposition - the position at which to insert the text.
-> IO Intreturns the position after the newly inserted text.
Inserts text at a given position.
editableDeleteText
:: EditableClass self
=> self
-> IntstartPos - the starting position.
-> IntendPos - the end position.
-> IO ()
Deletes a sequence of characters. The characters that are deleted are those characters at positions from startPos up to, but not including endPos. If endPos is negative, then the the characters deleted will be those characters from startPos to the end of the text.
editableGetChars
:: EditableClass self
=> self
-> IntstartPos - the starting position.
-> IntendPos - the end position.
-> IO Stringreturns the characters in the indicated region.
Retrieves a sequence of characters. The characters that are retrieved are those characters at positions from startPos up to, but not including endPos. If endPos is negative, then the the characters retrieved will be those characters from startPos to the end of the text.
editableCutClipboard :: EditableClass self => self -> IO ()
Causes the characters in the current selection to be copied to the clipboard and then deleted from the widget.
editableCopyClipboard :: EditableClass self => self -> IO ()
Causes the characters in the current selection to be copied to the clipboard.
editablePasteClipboard :: EditableClass self => self -> IO ()
Causes the contents of the clipboard to be pasted into the given widget at the current cursor position.
editableDeleteSelection :: EditableClass self => self -> IO ()
Deletes the current contents of the widgets selection and disclaims the selection.
editableSetEditable
:: EditableClass self
=> self
-> BoolisEditable - True if the user is allowed to edit the text in the widget.
-> IO ()
Determines if the user can edit the text in the editable widget or not.
editableGetEditable :: EditableClass self => self -> IO Bool
Retrieves whether the text is editable. See editableSetEditable.
editableSetPosition
:: EditableClass self
=> self
-> Intposition - the position of the cursor. The cursor is displayed before the character with the given (base 0) index in the widget. The value must be less than or equal to the number of characters in the widget. A value of -1 indicates that the position should be set after the last character in the entry.
-> IO ()
Sets the cursor position.
editableGetPosition
:: EditableClass self
=> self
-> IO Intreturns the position of the cursor. The cursor is displayed before the character with the given (base 0) index in the widget. The value will be less than or equal to the number of characters in the widget. Note that this position is in characters, not in bytes.
Retrieves the current cursor position.
Attributes
editablePosition :: EditableClass self => Attr self Int
'position' property. See editableGetPosition and editableSetPosition
editableEditable :: EditableClass self => Attr self Bool
'editable' property. See editableGetEditable and editableSetEditable
Signals
onEditableChanged :: EditableClass ec => ec -> IO () -> IO (ConnectId ec)
Emitted when the settings of the Editable widget changes.
afterEditableChanged :: EditableClass ec => ec -> IO () -> IO (ConnectId ec)
onDeleteText
:: EditableClass self
=> self
-> (Int -> Int -> IO ())
(startPos endPos -> ...)
-> IO (ConnectId self)

Emitted when a piece of text is deleted from the Editable widget.

  • See onInsertText for information on how to use this signal.
afterDeleteText
:: EditableClass self
=> self
-> (Int -> Int -> IO ())
(startPos endPos -> ...)
-> IO (ConnectId self)
stopDeleteText :: EditableClass self => ConnectId self -> IO ()
Stop the current signal that deletes text.
onInsertText :: EditableClass self => self -> (String -> Int -> IO Int) -> IO (ConnectId self)

Emitted when a piece of text is inserted into the Editable widget.

  • The connected signal receives the text that is inserted, together with the position in the entry widget. The return value should be the position in the entry widget that lies past the recently inserted text (i.e. you should return the given position plus the length of the string).
  • To modify the text that the user inserts, you need to connect to this signal, modify the text the way you want and then call editableInsertText. To avoid that this signal handler is called recursively, you need to temporarily block it using signalBlock. After the default signal handler has inserted your modified text, it is important that you prevent the default handler from being executed again when this signal handler returns. To stop the current signal, use stopInsertText. The following code is an example of how to turn all input into uppercase:
 idRef <- newIORef undefined
 id <- onInsertText entry $ \str pos -> do
   id <- readIORef idRef
   signalBlock id
   pos' <- editableInsertText entry (map toUpper str) pos
   signalUnblock id
   stopInsertText id
   return pos'
 writeIORef idRef id

Note that the afterInsertText function is not very useful, except to track editing actions.

afterInsertText :: EditableClass self => self -> (String -> Int -> IO Int) -> IO (ConnectId self)
stopInsertText :: EditableClass self => ConnectId self -> IO ()
Stop the current signal that inserts text.
Produced by Haddock version 0.8