.. include:: headings.inc


.. _command overview:

=====================================
|phoenix_title|  **Command Overview**
=====================================


:class:`wx.Command` is a base class for modelling an application
command, which is an action usually performed by selecting a menu
item, pressing a toolbar button or any other means provided by the
application to change the data or view.

Instead of the application functionality being scattered around if
statements and functions in a way that may be hard to read and
maintain, the functionality for a command is explicitly represented as
an object which can be manipulated by a framework or application.

When a user interface event occurs, the application submits a command
to a :class:`wx.CommandProcessor` object to execute and store.

The wxPython document/view framework handles Undo and Redo by use of
:class:`wx.Command` and :class:`wx.CommandProcessor` objects. You
might find further uses for :class:`Command`, such as implementing a
macro facility that stores, loads and replays commands.

An application can derive a new class for every command, or, more
likely, use one class parameterized with an integer or string command
identifier.


.. _commandprocessor overview:

=================================================
|phoenix_title|  **CommandProcessor Overview**
=================================================


:class:`wx.CommandProcessor` is a class that maintains a history of
:class:`wx.Command` instances, with undo/redo functionality
built-in. Derive a new class from this if you want different
behaviour.


.. _filehistory overview:

=================================================
|phoenix_title|  **FileHistory Overview**
=================================================

:class:`wx.FileHistory` encapsulates functionality to record the last
few files visited, and to allow the user to quickly load these files
using the list appended to the File menu. Although
:class:`wx.FileHistory` is used by :class:`wx.DocManager`, it can be
used independently. You may wish to derive from it to allow different
behaviour, such as popping up a scrolling list of files.

By calling :meth:`wx.FileHistory.UseMenu` you can associate a file
menu with the file history. The menu will then be used for appending
filenames that are added to the history.

.. note:: 

   Please notice that currently if the history already contained
   filenames when UseMenu() is called (e.g. when initializing a second
   MDI child frame), the menu is not automatically initialized with
   the existing filenames in the history and so you need to call
   :meth:`wx.FileHistory.AddFilesToMenu` after UseMenu() explicitly in
   order to initialize the menu with the existing list of MRU files
   (otherwise an assertion failure is raised in debug builds).

The filenames are appended using menu identifiers in the range
``wx.ID_FILE1`` to ``wx.ID_FILE9``.



