Class Fox::FXUndoList

In: | ../lib/fox/undolist.rb
Parent: | FXObject

The undo list manages a list of undoable (and redoable) commands for a FOX application; it works hand-in-hand with subclasses of FXCommand and is an application of the well-known Command pattern. Your application code should implement any number of command classes and then add then to an FXUndoList instance. For an example of how this works, see the textedit example program from the FXRuby distribution.

## Class Constants

FXUndoList::ID_UNDO
  Message identifier for the undo method. When a `SEL_COMMAND` message with this identifier is sent to an undo list, it undoes the last command. FXUndoList also provides a `SEL_UPDATE` handler for this identifier, that enables or disables the sender depending on whether it's possible to undo.
FXUndoList::ID_UNDO_ALL
  Message identifier for the "undo all" method. FXUndoList handles both the `SEL_COMMAND` and `SEL_UPDATE` messages for this message identifier.
FXUndoList::ID_REDO
  Message identifier for the redo method. When a `SEL_COMMAND` message with this identifier is sent to an undo list, it redoes the last command. FXUndoList also provides a `SEL_UPDATE` handler for this identifier, that enables or disables the sender depending on whether it's possible to redo.
FXUndoList::ID_REDO_ALL
  Message identifier for the "redo all" method. FXUndoList handles both the `SEL_COMMAND` and `SEL_UPDATE` messages for this message identifier.
FXUndoList::ID_CLEAR
  Message identifier for the "clear" method. FXUndoList handles both the `SEL_COMMAND` and `SEL_UPDATE` messages for this message identifier.
FXUndoList::ID_REVERT
  Message identifier for the "revert" method. FXUndoList handles both the `SEL_COMMAND` and `SEL_UPDATE` messages for this message identifier.

Methods

add canRedo? canRevert? canUndo? clear current cut mark marked? new redo redoAll revert trimCount trimSize undo undoAll undoCount undoSize unmark

Included modules

Responder

Public Class methods

new()

Returns an initialized FXUndoList instance.

Public Instance methods

cut()

Cut the redo list

add(command, doit=false)

Add new command (an FXCommand instance) to the list. If doit is `true`, the command is also executed.

undo()

Undo last command.

redo()

Redo next command

undoAll()

Undo all commands

redoAll()

Redo all commands

revert()

Revert to marked

canUndo?()

Return `true` if we can still undo some commands (i.e. the undo list is not empty).

canRedo?()

Return `true` if we can still redo some commands (i.e. the redo list is not empty).

canRevert?()

Return `true` if there is a previously marked state that we can revert to.

current()

Returns the current undo command.

undoCount()

Returns the number of undo records.

undoSize()

Returns the total size of undo information.

clear()

Clear the list

trimCount(nc)

Trim undo list down to at most nc commands.

trimSize(sz)

Trim undo list down to at most size.

mark()

Mark current state

unmark()

Unmark undo list

marked?()

Return `true` if the undo list is marked.