Design of Action editor
=======================

Classes
-------
1) CAActionEditor
User interface of action editor

2) CAActionControl
Controls the action editor (not the user interface itself but
external controls like from settings dialog)

3) CASingleAction
One action based on QAction, Midi and QString. Contains all
information (including description) for one control command:
- Command (name, not an internal representation!)
- Context (typically menu (toolbar), one mode)
- Description (is shown in the table via tool tip)
- Shortcut (Keyboard)
- Midi Command

4) CASettings
Enhanced to include the Action control editor and all the
CASingleAction instances (as vector).

5) CAMainWin
Actions need to be adapted to use the control settings
defined via settings. Default settings are loaded from
"default.cakey" when no settings exists up to now.
Similar is used for midi commands: "default.camid"

External configuration file format
----------------------------------
The file format is the same used by smplayer action editor
but enhanced to include midi control and context settings.
Entries look like this:

<command><blank|tab><context><blank|tab><shortcut><blank|tab><midi command>

A midi command exists of three parts: control, pitch, velocity separated by blanks.

Example:
insert_note	edit	Ctrl+I  2 5 0
open_file	menu	Ctrl+O	1 3 0

The regular expression for parsing one line looks like this:
^(.*)\\t(.*)\\t(.*)\\t(.*)\\t(.*)\\t(.*)
If required this expression can be improved for some check when
reading the numbers of the midi command and the "Ctrl" keyword.
Be aware that when reading one line the command showed at the
table is not identical to the one saved. You have to first identify it
with the instance of the CASingleAction vector in CASettings.

Plugins
-------
Plugins need to provide some short description and optional control command.
Additionally the menus could be improved for fast keyboard access like this:
&a plugin command 1
&b plugin command 1
&c plugin command 1
&d plugin command 1
So some default control command is something like Ctrl+Shift+<key>

