Maintainer | gtk2hs-users@lists.sourceforge.net |
---|---|
Stability | provisional |
Portability | portable (depends on GHC) |
Safe Haskell | None |
Language | Haskell98 |
Stores attributed text for display in a TextView
- data TextBuffer
- class GObjectClass o => TextBufferClass o
- castToTextBuffer :: GObjectClass obj => obj -> TextBuffer
- gTypeTextBuffer :: GType
- toTextBuffer :: TextBufferClass o => o -> TextBuffer
- textBufferNew :: Maybe TextTagTable -> IO TextBuffer
- textBufferGetLineCount :: TextBufferClass self => self -> IO Int
- textBufferGetCharCount :: TextBufferClass self => self -> IO Int
- textBufferGetTagTable :: TextBufferClass self => self -> IO TextTagTable
- textBufferInsert :: (TextBufferClass self, GlibString string) => self -> TextIter -> string -> IO ()
- textBufferInsertByteString :: TextBufferClass self => self -> TextIter -> ByteString -> IO ()
- textBufferInsertAtCursor :: (TextBufferClass self, GlibString string) => self -> string -> IO ()
- textBufferInsertByteStringAtCursor :: TextBufferClass self => self -> ByteString -> IO ()
- textBufferInsertInteractive :: (TextBufferClass self, GlibString string) => self -> TextIter -> string -> Bool -> IO Bool
- textBufferInsertByteStringInteractive :: TextBufferClass self => self -> TextIter -> ByteString -> Bool -> IO Bool
- textBufferInsertInteractiveAtCursor :: (TextBufferClass self, GlibString string) => self -> string -> Bool -> IO Bool
- textBufferInsertByteStringInteractiveAtCursor :: TextBufferClass self => self -> ByteString -> Bool -> IO Bool
- textBufferInsertRange :: TextBufferClass self => self -> TextIter -> TextIter -> TextIter -> IO ()
- textBufferInsertRangeInteractive :: TextBufferClass self => self -> TextIter -> TextIter -> TextIter -> Bool -> IO Bool
- textBufferDelete :: TextBufferClass self => self -> TextIter -> TextIter -> IO ()
- textBufferDeleteInteractive :: TextBufferClass self => self -> TextIter -> TextIter -> Bool -> IO Bool
- textBufferSetByteString :: TextBufferClass self => self -> ByteString -> IO ()
- textBufferGetByteString :: TextBufferClass self => self -> TextIter -> TextIter -> Bool -> IO ByteString
- textBufferGetByteStringSlice :: TextBufferClass self => self -> TextIter -> TextIter -> Bool -> IO ByteString
- textBufferSetText :: (TextBufferClass self, GlibString string) => self -> string -> IO ()
- textBufferGetText :: (TextBufferClass self, GlibString string) => self -> TextIter -> TextIter -> Bool -> IO string
- textBufferGetSlice :: (TextBufferClass self, GlibString string) => self -> TextIter -> TextIter -> Bool -> IO string
- textBufferInsertPixbuf :: TextBufferClass self => self -> TextIter -> Pixbuf -> IO ()
- textBufferCreateMark :: TextBufferClass self => self -> Maybe MarkName -> TextIter -> Bool -> IO TextMark
- textBufferAddMark :: TextBufferClass self => self -> TextMark -> TextIter -> IO ()
- textBufferMoveMark :: (TextBufferClass self, TextMarkClass mark) => self -> mark -> TextIter -> IO ()
- textBufferMoveMarkByName :: TextBufferClass self => self -> MarkName -> TextIter -> IO ()
- textBufferDeleteMark :: (TextBufferClass self, TextMarkClass mark) => self -> mark -> IO ()
- textBufferDeleteMarkByName :: TextBufferClass self => self -> MarkName -> IO ()
- textBufferGetMark :: TextBufferClass self => self -> MarkName -> IO (Maybe TextMark)
- textBufferGetInsert :: TextBufferClass self => self -> IO TextMark
- textBufferGetSelectionBound :: TextBufferClass self => self -> IO TextMark
- textBufferPlaceCursor :: TextBufferClass self => self -> TextIter -> IO ()
- textBufferApplyTag :: (TextBufferClass self, TextTagClass tag) => self -> tag -> TextIter -> TextIter -> IO ()
- textBufferRemoveTag :: (TextBufferClass self, TextTagClass tag) => self -> tag -> TextIter -> TextIter -> IO ()
- textBufferApplyTagByName :: TextBufferClass self => self -> TagName -> TextIter -> TextIter -> IO ()
- textBufferRemoveTagByName :: TextBufferClass self => self -> TagName -> TextIter -> TextIter -> IO ()
- textBufferRemoveAllTags :: TextBufferClass self => self -> TextIter -> TextIter -> IO ()
- textBufferGetIterAtLineOffset :: TextBufferClass self => self -> Int -> Int -> IO TextIter
- textBufferGetIterAtOffset :: TextBufferClass self => self -> Int -> IO TextIter
- textBufferGetIterAtLine :: TextBufferClass self => self -> Int -> IO TextIter
- textBufferGetIterAtMark :: (TextBufferClass self, TextMarkClass mark) => self -> mark -> IO TextIter
- textBufferGetStartIter :: TextBufferClass self => self -> IO TextIter
- textBufferGetEndIter :: TextBufferClass self => self -> IO TextIter
- textBufferGetModified :: TextBufferClass self => self -> IO Bool
- textBufferSetModified :: TextBufferClass self => self -> Bool -> IO ()
- textBufferDeleteSelection :: TextBufferClass self => self -> Bool -> Bool -> IO Bool
- textBufferHasSelection :: TextBufferClass self => self -> IO Bool
- textBufferGetSelectionBounds :: TextBufferClass self => self -> IO (TextIter, TextIter)
- textBufferSelectRange :: TextBufferClass self => self -> TextIter -> TextIter -> IO ()
- textBufferGetBounds :: TextBufferClass self => self -> IO (TextIter, TextIter)
- textBufferBeginUserAction :: TextBufferClass self => self -> IO ()
- textBufferEndUserAction :: TextBufferClass self => self -> IO ()
- textBufferBackspace :: TextBufferClass self => self -> TextIter -> Bool -> Bool -> IO Bool
- textBufferInsertChildAnchor :: TextBufferClass self => self -> TextIter -> TextChildAnchor -> IO ()
- textBufferCreateChildAnchor :: TextBufferClass self => self -> TextIter -> IO TextChildAnchor
- textBufferGetIterAtChildAnchor :: TextBufferClass self => self -> TextIter -> TextChildAnchor -> IO ()
- textBufferPasteClipboard :: TextBufferClass self => self -> Clipboard -> TextIter -> Bool -> IO ()
- textBufferPasteClipboardAtCursor :: TextBufferClass self => self -> Clipboard -> Bool -> IO ()
- textBufferCopyClipboard :: TextBufferClass self => self -> Clipboard -> IO ()
- textBufferCutClipboard :: TextBufferClass self => self -> Clipboard -> Bool -> IO ()
- textBufferAddSelectionClipboard :: TextBufferClass self => self -> Clipboard -> IO ()
- textBufferRemoveSelectionClipboard :: TextBufferClass self => self -> Clipboard -> IO ()
- textBufferTagTable :: (TextBufferClass self, TextTagTableClass textTagTable) => ReadWriteAttr self TextTagTable textTagTable
- textBufferText :: (TextBufferClass self, GlibString string) => Attr self string
- textBufferModified :: TextBufferClass self => Attr self Bool
- applyTag :: TextBufferClass self => Signal self (TextTag -> TextIter -> TextIter -> IO ())
- beginUserAction :: TextBufferClass self => Signal self (IO ())
- bufferChanged :: TextBufferClass self => Signal self (IO ())
- deleteRange :: TextBufferClass self => Signal self (TextIter -> TextIter -> IO ())
- endUserAction :: TextBufferClass self => Signal self (IO ())
- insertPixbuf :: TextBufferClass self => Signal self (TextIter -> Pixbuf -> IO ())
- insertChildAnchor :: TextBufferClass self => Signal self (TextIter -> TextChildAnchor -> IO ())
- bufferInsertText :: (TextBufferClass self, GlibString string) => Signal self (TextIter -> string -> IO ())
- markDeleted :: TextBufferClass self => Signal self (TextMark -> IO ())
- markSet :: TextBufferClass self => Signal self (TextIter -> TextMark -> IO ())
- modifiedChanged :: TextBufferClass self => Signal self (IO ())
- pasteDone :: TextBufferClass self => Signal self (Clipboard -> IO ())
- removeTag :: TextBufferClass self => Signal self (TextTag -> TextIter -> TextIter -> IO ())
Detail
You may wish to begin by reading the text widget conceptual overview which gives an overview of all the objects and data types related to the text widget and how they work together.
Class Hierarchy
| GObject
| +----TextBuffer
Types
data TextBuffer Source
class GObjectClass o => TextBufferClass o Source
castToTextBuffer :: GObjectClass obj => obj -> TextBuffer Source
toTextBuffer :: TextBufferClass o => o -> TextBuffer Source
Constructors
:: Maybe TextTagTable |
|
-> IO TextBuffer |
Creates a new text buffer.
Methods
textBufferGetLineCount :: TextBufferClass self => self -> IO Int Source
Obtains the number of lines in the buffer. This value is cached, so the function is very fast.
textBufferGetCharCount :: TextBufferClass self => self -> IO Int Source
Gets the number of characters in the buffer. The character count is cached, so this function is very fast.
textBufferGetTagTable :: TextBufferClass self => self -> IO TextTagTable Source
Get the TextTagTable
associated with this buffer.
:: (TextBufferClass self, GlibString string) | |
=> self | |
-> TextIter |
|
-> string |
|
-> IO () |
Inserts text
at position iter
. Emits the
insertText
signal; insertion actually occurs in the default handler for
the signal. iter
is invalidated when insertion occurs (because the buffer
contents change).
textBufferInsertByteString Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> ByteString |
|
-> IO () |
Inserts text
at position iter
. Similar
to textBufferInsert
but uses ByteString
buffers.
- The passed-in buffer must contain a valid UTF-8 encoded string.
textBufferInsertAtCursor :: (TextBufferClass self, GlibString string) => self -> string -> IO () Source
Simply calls textBufferInsert
, using the current cursor position as the
insertion point.
textBufferInsertByteStringAtCursor :: TextBufferClass self => self -> ByteString -> IO () Source
Simply calls textBufferInsert
, using the current cursor position as the
insertion point. Similar to textBufferInsertAtCursor
but uses ByteString
buffers.
- The passed-in buffer must contain a valid UTF-8 encoded string.
textBufferInsertInteractive Source
:: (TextBufferClass self, GlibString string) | |
=> self | |
-> TextIter |
|
-> string |
|
-> Bool |
|
-> IO Bool | returns whether text was actually inserted |
Like textBufferInsert
, but the insertion will not occur if iter
is at
a non-editable location in the buffer. Usually you want to prevent
insertions at ineditable locations if the insertion results from a user
action (is interactive).
If no tag is at the specified position, use the default value def
to
decide if the text should be inserted. This value could be set to the result
of textViewGetEditable
.
textBufferInsertByteStringInteractive Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> ByteString |
|
-> Bool |
|
-> IO Bool | returns whether text was actually inserted |
Similar to textBufferInsertInteractive
but uses ByteString
buffers.
- The passed-in buffer must contain a valid UTF-8 encoded string.
textBufferInsertInteractiveAtCursor Source
:: (TextBufferClass self, GlibString string) | |
=> self | |
-> string |
|
-> Bool |
|
-> IO Bool | returns whether text was actually inserted |
Calls textBufferInsertInteractive
at the cursor position.
textBufferInsertByteStringInteractiveAtCursor Source
:: TextBufferClass self | |
=> self | |
-> ByteString |
|
-> Bool |
|
-> IO Bool | returns whether text was actually inserted |
Similar to textBufferInsertInteractiveAtCursor
but uses ByteString
buffers.
- The passed-in buffer must contain a valid UTF-8 encoded string.
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> TextIter |
|
-> IO () |
Copies text, tags, and pixbufs between start
and end
(the order of
start
and end
doesn't matter) and inserts the copy at iter
. Used
instead of simply getting/inserting text because it preserves images and
tags. If start
and end
are in a different buffer from buffer
, the two
buffers must share the same tag table.
Implemented via emissions of the insert-text and applyTag
signals, so
expect those.
textBufferInsertRangeInteractive Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> TextIter |
|
-> Bool |
|
-> IO Bool | returns whether an insertion was possible at |
Same as textBufferInsertRange
, but does nothing if the insertion point
isn't editable. The defaultEditable
parameter indicates whether the text
is editable at iter
if no tags enclosing iter
affect editability.
Typically the result of
textViewGetEditable
is appropriate here.
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> IO () |
Deletes text between start
and end
. The order of start
and end
is
not actually relevant; textBufferDelete
will reorder them. This function
actually emits the deleteRange
signal, and the default handler of that
signal deletes the text. Because the buffer is modified, all outstanding
iterators become invalid after calling this function; however, the start
and end
will be re-initialized to point to the location where text was
deleted.
textBufferDeleteInteractive Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> Bool |
|
-> IO Bool | returns whether some text was actually deleted |
Deletes all editable text in the given range. Calls textBufferDelete
for each editable sub-range of [start
,end
). start
and end
are
revalidated to point to the location of the last deleted range, or left
untouched if no text was deleted.
textBufferSetByteString Source
:: TextBufferClass self | |
=> self | |
-> ByteString |
|
-> IO () |
Deletes current contents of buffer
, and inserts text
instead. Similar
to textBufferSetText
but uses ByteString
buffers.
- The passed-in buffer must contain a valid UTF-8 encoded string.
textBufferGetByteString Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> Bool |
|
-> IO ByteString |
Returns the text in the range [start
,end
). Similar to
textBufferGetText
but uses ByteString
buffers.
- The returned buffer is a UTF-8 encoded string.
textBufferGetByteStringSlice Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> Bool |
|
-> IO ByteString |
Returns the text in the range [start
,end
). Similar to
textBufferGetSlice
but uses ByteString
buffers.
- The returned buffer is a UTF-8 encoded string.
:: (TextBufferClass self, GlibString string) | |
=> self | |
-> string |
|
-> IO () |
Deletes current contents of buffer
, and inserts text
instead.
:: (TextBufferClass self, GlibString string) | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> Bool |
|
-> IO string |
Returns the text in the range [start
,end
). Excludes undisplayed text
(text marked with tags that set the invisibility attribute) if
includeHiddenChars
is False
. Does not include characters representing
embedded images, so character indexes into the returned string do
not correspond to character indexes into the buffer. Contrast
with textBufferGetSlice
.
:: (TextBufferClass self, GlibString string) | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> Bool |
|
-> IO string |
Returns the text in the range [start
,end
). Excludes undisplayed text
(text marked with tags that set the invisibility attribute) if
includeHiddenChars
is False
. The returned string includes a
(chr 0xFFFC)
character whenever the buffer contains embedded images, so
character indexes into the returned string do correspond to
character indexes into the buffer. Contrast with textBufferGetText
. Note
that (chr 0xFFFC)
can occur in normal text as well, so it is not a reliable
indicator that a pixbuf or widget is in the buffer.
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> Pixbuf |
|
-> IO () |
Inserts an image into the text buffer at iter
. The image will be
counted as one character in character counts, and when obtaining the buffer
contents as a string, will be represented by the Unicode "object
replacement character" (chr 0xFFFC)
. Note that the "slice" variants for
obtaining portions of the buffer as a string include this character for
pixbufs, but the "text" variants do not. e.g. see textBufferGetSlice
and
textBufferGetText
.
:: TextBufferClass self | |
=> self | |
-> Maybe MarkName |
|
-> TextIter |
|
-> Bool |
|
-> IO TextMark | returns the new |
Creates a mark at position where
. If markName
is Nothing
, the mark
is anonymous; otherwise, the mark can be retrieved by name using
textBufferGetMark
. If a mark has left gravity, and text is inserted at the
mark's current location, the mark will be moved to the left of the
newly-inserted text. If the mark has right gravity (leftGravity
=
False
), the mark will end up on the right of newly-inserted text. The
standard left-to-right cursor is a mark with right gravity (when you type,
the cursor stays on the right side of the text you're typing).
Emits the markSet
signal as notification of the mark's initial
placement.
:: TextBufferClass self | |
=> self | |
-> TextMark |
|
-> TextIter |
|
-> IO () |
:: (TextBufferClass self, TextMarkClass mark) | |
=> self | |
-> mark |
|
-> TextIter |
|
-> IO () |
Moves mark
to the new location where
. Emits the markSet
signal
as notification of the move.
textBufferMoveMarkByName Source
:: TextBufferClass self | |
=> self | |
-> MarkName |
|
-> TextIter |
|
-> IO () |
Moves the mark named name
(which must exist) to location where
. See
textBufferMoveMark
for details.
:: (TextBufferClass self, TextMarkClass mark) | |
=> self | |
-> mark |
|
-> IO () |
Deletes mark
, so that it's no longer located anywhere in the buffer.
Most operations on mark
become invalid. There is no way to undelete a
mark. textMarkGetDeleted
will
return True
after this function has been
called on a mark; textMarkGetDeleted
indicates that a mark no longer
belongs to a buffer. The markDeleted
signal will be emitted as
notification after the mark is deleted.
textBufferDeleteMarkByName Source
:: TextBufferClass self | |
=> self | |
-> MarkName |
|
-> IO () |
Deletes the mark named name
; the mark must exist. See
textBufferDeleteMark
for details.
:: TextBufferClass self | |
=> self | |
-> MarkName |
|
-> IO (Maybe TextMark) | returns a |
Returns the mark named name
in the buffer, or Nothing
if no such
mark exists in the buffer.
textBufferGetInsert :: TextBufferClass self => self -> IO TextMark Source
Returns the mark that represents the cursor (insertion point). Equivalent
to calling liftM fromJust $ textBufferGetMark "insert"
, but very
slightly more efficient, and involves less typing.
textBufferGetSelectionBound :: TextBufferClass self => self -> IO TextMark Source
Returns the mark that represents the selection bound. Equivalent to
calling liftM fromJust $ textBufferGetMark "selection_bound"
, but
very slightly more efficient, and involves less typing.
The currently-selected text in buffer
is the region between the
"selection_bound" and "insert" marks. If "selection_bound" and
"insert" are in the same place, then there is no current selection.
textBufferGetSelectionBounds
is another convenient function for handling
the selection, if you just want to know whether there's a selection and what
its bounds are.
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> IO () |
This function moves the "insert" and "selection_bound" marks
simultaneously. If you move them to the same place in two steps with
textBufferMoveMark
, you will temporarily select a region in between their
old and new locations, which can be pretty inefficient since the
temporarily-selected region will force stuff to be recalculated. This
function moves them as a unit, which can be optimized.
:: (TextBufferClass self, TextTagClass tag) | |
=> self | |
-> tag |
|
-> TextIter |
|
-> TextIter |
|
-> IO () |
Emits the applyTag
signal on the buffer. The default handler for the
signal applies tag
to the given range. start
and end
do not have to be
in order.
:: (TextBufferClass self, TextTagClass tag) | |
=> self | |
-> tag |
|
-> TextIter |
|
-> TextIter |
|
-> IO () |
Emits the removeTag
signal. The default handler for the signal
removes all occurrences of tag
from the given range. start
and end
don't have to be in order.
textBufferApplyTagByName Source
:: TextBufferClass self | |
=> self | |
-> TagName |
|
-> TextIter |
|
-> TextIter |
|
-> IO () |
Calls textTagTableLookup
on the
buffer's tag table to get a TextTag
, then calls textBufferApplyTag
.
textBufferRemoveTagByName Source
:: TextBufferClass self | |
=> self | |
-> TagName |
|
-> TextIter |
|
-> TextIter |
|
-> IO () |
Calls textTagTableLookup
on the
buffer's tag table to get a TextTag
, then calls textBufferRemoveTag
.
textBufferRemoveAllTags Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> IO () |
Removes all tags in the range between start
and end
. Be careful with
this function; it could remove tags added in code unrelated to the code
you're currently writing. That is, using this function is probably a bad
idea if you have two or more unrelated code sections that add tags.
textBufferGetIterAtLineOffset Source
:: TextBufferClass self | |
=> self | |
-> Int |
|
-> Int |
|
-> IO TextIter |
Obtains an iterator pointing to charOffset
within the given line. The
charOffset
must exist, offsets off the end of the line are not allowed.
textBufferGetIterAtOffset Source
:: TextBufferClass self | |
=> self | |
-> Int |
|
-> IO TextIter |
Creates an iterator pointing to a position charOffset
chars from the
start of the entire buffer. If charOffset
is -1 or greater than the number
of characters in the buffer, the end iterator is returned, that is the
iterator one past the last valid character in the buffer.
textBufferGetIterAtLine Source
:: TextBufferClass self | |
=> self | |
-> Int |
|
-> IO TextIter |
Create an iterator at a specific line.
textBufferGetIterAtMark Source
:: (TextBufferClass self, TextMarkClass mark) | |
=> self | |
-> mark |
|
-> IO TextIter |
Create an iterator from a mark.
textBufferGetStartIter :: TextBufferClass self => self -> IO TextIter Source
Create an iterator at the first position in the text buffer. This is
the same as using textBufferGetIterAtOffset
to get the iter at character
offset 0.
textBufferGetEndIter :: TextBufferClass self => self -> IO TextIter Source
Returns the "end iterator," one past the last valid
character in the text buffer. If dereferenced with
textIterGetChar
, the
end iterator has a character value of 0. The entire buffer lies in the range
from the first position in the buffer (call textBufferGetStartIter
to get
character position 0) to the end iterator.
:: TextBufferClass self | |
=> self | |
-> IO Bool | returns |
Indicates whether the buffer has been modified since the last call to
textBufferSetModified
set the modification flag to False
. Used for
example to enable a "save" function in a text editor.
It is often more convenient to use onModifiedChanged
.
textBufferSetModified :: TextBufferClass self => self -> Bool -> IO () Source
Used to keep track of whether the buffer has been modified since the last
time it was saved. Whenever the buffer is saved to disk, call
. When the buffer is
modified, it will automatically toggled on the modified bit again. When the
modified bit flips, the buffer emits a textBufferSetModified
buffer FalsemodifiedChanged
signal.
textBufferDeleteSelection Source
:: TextBufferClass self | |
=> self | |
-> Bool |
|
-> Bool |
|
-> IO Bool | returns whether there was a non-empty selection to delete |
Deletes the range between the "insert" and "selection_bound" marks,
that is, the currently-selected text. If interactive
is True
, the
editability of the selection will be considered (users can't delete
uneditable text).
textBufferHasSelection :: TextBufferClass self => self -> IO Bool Source
Check if a selection exists.
textBufferGetSelectionBounds Source
:: TextBufferClass self | |
=> self | |
-> IO (TextIter, TextIter) |
|
Returns the bounds of the selection (if the selection has length 0, then
start
and end
will be the same). start
and end
will be in ascending
order.
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextIter |
|
-> IO () |
This function moves the "insert" and "selection_bound" marks
simultaneously. If you move them in two steps with textBufferMoveMark
, you
will temporarily select a region in between their old and new locations,
which can be pretty inefficient since the temporarily-selected region will
force stuff to be recalculated. This function moves them as a unit, which
can be optimized.
- Available since Gtk+ version 2.4
:: TextBufferClass self | |
=> self | |
-> IO (TextIter, TextIter) | return the first and last iterators in the buffer |
Retrieves the first and last iterators in the buffer, i.e. the entire
buffer lies within the range [start,end)
.
textBufferBeginUserAction :: TextBufferClass self => self -> IO () Source
Called to indicate that the buffer operations between here and a call to
textBufferEndUserAction
are part of a single user-visible operation. The
operations between textBufferBeginUserAction
and textBufferEndUserAction
can then be grouped when creating an undo stack. TextBuffer
maintains a
count of calls to textBufferBeginUserAction
that have not been closed with
a call to textBufferEndUserAction
, and emits the beginUserAction
and
endUserAction
signals only for the outermost pair of calls. This
allows you to build user actions from other user actions.
The "interactive" buffer mutation functions, such as
textBufferInsertInteractive
, automatically call begin/end user action
around the buffer operations they perform, so there's no need to add extra
calls if you user action consists solely of a single call to one of those
functions.
textBufferEndUserAction :: TextBufferClass self => self -> IO () Source
Should be paired with a call to textBufferBeginUserAction
. See that
function for a full explanation.
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> Bool |
|
-> Bool |
|
-> IO Bool | returns |
Performs the appropriate action as if the user hit the delete key with
the cursor at the position specified by iter
. In the normal case a single
character will be deleted, but when combining accents are involved, more
than one character can be deleted, and when precomposed character and accent
combinations are involved, less than one character will be deleted.
Because the buffer is modified, all outstanding iterators become invalid
after calling this function; however, the iter
will be re-initialized to
point to the location where text was deleted.
- Available since Gtk+ version 2.6
textBufferInsertChildAnchor Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextChildAnchor |
|
-> IO () |
Inserts a child widget anchor into the text buffer at iter
. The anchor
will be counted as one character in character counts, and when obtaining the
buffer contents as a string, will be represented by the Unicode "object
replacement character" (chr 0xFFFC)
. Note that the "slice" variants for
obtaining portions of the buffer as a string include this character for
child anchors, but the "text" variants do not. e.g. see
textBufferGetSlice
and textBufferGetText
. Consider
textBufferCreateChildAnchor
as a more convenient alternative to this
function.
textBufferCreateChildAnchor Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> IO TextChildAnchor | returns the created child anchor |
This is a convenience function which simply creates a child anchor with
textBufferChildAnchorNew
and inserts
it into the buffer with textBufferInsertChildAnchor
.
textBufferGetIterAtChildAnchor Source
:: TextBufferClass self | |
=> self | |
-> TextIter |
|
-> TextChildAnchor |
|
-> IO () |
Obtains the location of anchor
within buffer
.
textBufferPasteClipboard Source
:: TextBufferClass self | |
=> self | |
-> Clipboard |
|
-> TextIter |
|
-> Bool |
|
-> IO () |
Pastes the contents of a clipboard at the given location
.
(Note: pasting is asynchronous, that is,
we'll ask for the paste data and return, and at some point later
after the main loop runs, the paste data will be inserted.)
textBufferPasteClipboardAtCursor Source
:: TextBufferClass self | |
=> self | |
-> Clipboard |
|
-> Bool |
|
-> IO () |
Pastes the contents of a clipboard at the insertion point. (Note: pasting is asynchronous, that is, we'll ask for the paste data and return, and at some point later after the main loop runs, the paste data will be inserted.)
textBufferCopyClipboard Source
:: TextBufferClass self | |
=> self | |
-> Clipboard |
|
-> IO () |
Copies the currently-selected text to a clipboard.
:: TextBufferClass self | |
=> self | |
-> Clipboard |
|
-> Bool |
|
-> IO () |
Copies the currently-selected text to a clipboard, then deletes said text if it's editable.
textBufferAddSelectionClipboard Source
:: TextBufferClass self | |
=> self | |
-> Clipboard |
|
-> IO () |
Adds clipboard to the list of clipboards in which the selection contents of self
are available.
In most cases, clipboard
will be the Clipboard
of type selectionPrimary
for a view of self
.
textBufferRemoveSelectionClipboard Source
:: TextBufferClass self | |
=> self | |
-> Clipboard |
|
-> IO () |
Removes a Clipboard
added with textBufferAddSelectionClipboard
.
Attributes
textBufferTagTable :: (TextBufferClass self, TextTagTableClass textTagTable) => ReadWriteAttr self TextTagTable textTagTable Source
Text Tag Table.
textBufferText :: (TextBufferClass self, GlibString string) => Attr self string Source
The text content of the buffer. Without child widgets and images, see
textBufferGetText
for more information.
Default value: ""
textBufferModified :: TextBufferClass self => Attr self Bool Source
The 'modified' property. See textBufferGetModified
and
textBufferSetModified
Signals
applyTag :: TextBufferClass self => Signal self (TextTag -> TextIter -> TextIter -> IO ()) Source
A TextTag
was applied to a region of text.
beginUserAction :: TextBufferClass self => Signal self (IO ()) Source
A new atomic user action is started.
- Together with
endUserAction
these signals can be used to build an undo stack.
bufferChanged :: TextBufferClass self => Signal self (IO ()) Source
Emitted when the contents of the buffer change.
deleteRange :: TextBufferClass self => Signal self (TextIter -> TextIter -> IO ()) Source
A range of text is about to be deleted.
endUserAction :: TextBufferClass self => Signal self (IO ()) Source
An atomic action has ended.
- see
beginUserAction
insertPixbuf :: TextBufferClass self => Signal self (TextIter -> Pixbuf -> IO ()) Source
A Pixbuf
is inserted into the buffer.
- See note in
bufferInsertText
.
insertChildAnchor :: TextBufferClass self => Signal self (TextIter -> TextChildAnchor -> IO ()) Source
The insertChildAnchor
signal is emitted to insert a TextChildAnchor
in a TextBuffer
.
Insertion actually occurs in the default handler.
- See note in
bufferInsertText
.
bufferInsertText :: (TextBufferClass self, GlibString string) => Signal self (TextIter -> string -> IO ()) Source
Some text is inserted. Insertion actually occurs in the default handler.
- The function connected to this handler may not modify the buffer since
this would invalidate the iterator. If this function replaces the
default handler, it needs to stop the emission of this signal in order
to prevent the default handler from running. If additional text should
be inserted, this can be done using the
after
function to connect.
markDeleted :: TextBufferClass self => Signal self (TextMark -> IO ()) Source
A TextMark
within the buffer was deleted.
markSet :: TextBufferClass self => Signal self (TextIter -> TextMark -> IO ()) Source
A TextMark
was inserted into the buffer.
modifiedChanged :: TextBufferClass self => Signal self (IO ()) Source
pasteDone :: TextBufferClass self => Signal self (Clipboard -> IO ()) Source
The pasteDone
signal is emitted after paste operation has been completed.
This is useful to properly scroll the view to the end of the pasted text.
See textBufferPasteClipboard
for more details.
removeTag :: TextBufferClass self => Signal self (TextTag -> TextIter -> TextIter -> IO ()) Source
The textbuffer has changed.