/////////////////////////////////////////////////////////////////////////////
// Name:        No names yet.
// Purpose:     Contrib. demo
// Author:      Aleksandras Gluchovas
// Modified by:
// Created:     2000/02/08
// RCS-ID:      $Id: eventinfo.cpp,v 1.2 2001/04/04 12:42:37 aleksandras Exp $
// Copyright:   (c) Aleksandras Gluchovas
// Licence:   	GPL (version 2.0 or later)
/////////////////////////////////////////////////////////////////////////////


#ifdef __GNUG__
	#pragma implementation "EventInfo.cpp"
	#pragma interface "EventInfo.cpp"
#endif

// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"

#ifdef __BORLANDC__
	#pragma hdrstop
#endif

#ifndef WX_PRECOMP
	#include "wx/wx.h"
#endif

#include "eventinfo.h"

/***** Implementation for class ResourceItemInfo *****/

ResourceItemInfo::ResourceItemInfo()

	: mpRule( NULL ),
	  mpVarType( NULL )
{}


EventInfo gEventInfoArray[] =
{
//*********************
//** wxActivateEvent **
//*********************
	{
	"EVT_ACTIVATE", "wxActivateEvent", "",
	"\tEVT_ACTIVATE(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxActivateEvent&);",

	"// Callback for the window being activated/deactivated\n"
	"void %CLASS%::%METHOD%(wxActivateEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_ACTIVATE event\n"
	"}",

	"Process a wxEVT_ACTIVATE event which is sent to a top level window "
	"(frame or dialog) when it is activated or deactivated."
	},
//---------------------
	{
	"EVT_ACTIVATE_APP", "", "",
	"\tEVT_ACTIVATE_APP(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxActivateEvent&);",

	"// Callback for one of the app's frames being activated/deactivated\n"
	"void %CLASS%::%METHOD%(wxActivateEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_ACTIVATE_APP event\n"
	"}",

	"Process a wxEVT_ACTIVATE_APP event which is sent when one of an "
	"application's frames is activated or deactivated (Windows only)."
	},
//********************
//** wxCommandEvent **
//********************
	{
	"EVT_COMMAND",  "wxCommandEvent", "",
	"\tEVT_COMMAND(%ID%, %CMD%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for command event: %CMD% for window %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process event\n"
	"}",

	"EVT_COMMAND Process a command, supplying the window identifier, "
	"command event identifier and member function"
	},
//---------------------
	{
	"EVT_COMMAND_RANGE",  "", "",
	"\tEVT_COMMAND_RANGE(%ID%, %ID2%, %CMD%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for command event: %CMD% for window range %ID% to %ID2%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process event\n"
	"}",

	"EVT_COMMAND Process a command for a range of window identifiers, "
	"supplying the the minimum and maximum window identifiers, "
	"command event identifier and member function"
	},
//---------------------
	{
	"EVT_BUTTON",  "wxCommandEvent", "wxButton",
	"\tEVT_BUTTON(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for button id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_BUTTON_CLICKED event\n"
	"}",

	"Process a wxEVT_COMMAND_BUTTON_CLICKED command which is "
	"generated by a wxButton control"
	},
//---------------------
	{
	"EVT_CHECKBOX",	 "wxCommandEvent", "wxCheckBox",
	"\tEVT_CHECKBOX(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for checkbox id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_CHECKBOX_CLICKED event\n"
	"}",

	"Process a wxEVT_COMMAND_CHECKBOX_CLICKED command which is "
	"generated by a wxCheckBox control"
	},
//---------------------
	{
	"EVT_CHOICE",  "wxCommandEvent", "wxChoice",
	"\tEVT_CHOICE(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for choice id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_CHOICE_SELECTED event\n"
	"}",

	"Process a wxEVT_COMMAND_CHOICE_SELECTED command which is "
	"generated by a wxChoice control"
	},
//---------------------
	{
	"EVT_LISTBOX",  "wxCommandEvent", "wxListBox",
	"\tEVT_LISTBOX(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for listbox id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_LISTBOX_SELECTED event\n"
	"}",

	"Process a wxEVT_COMMAND_LISTBOX_SELECTED command which is "
	"generated by a wxListBox control"
	},
//---------------------
	{
	"EVT_LISTBOX_DCLICK",  "wxCommandEvent", "wxListBox",
	"\tEVT_LISTBOX_DCLICK(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for double-click in listbox id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_LISTBOX_DCLICK event\n"
	"}",

	"Process a wxEVT_COMMAND_LISTBOX_DCLICK command which is "
	"generated by a wxListBox control"
	},
//---------------------
	{
	"EVT_TEXT",	 "wxCommandEvent", "wxTextCtrl",
	"\tEVT_TEXT(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for text being updated in wxTextCtl id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_TEXT_UPDATED event\n"
	"}",

	"Process a wxEVT_COMMAND_TEXT_UPDATED command which is "
	"generated by a wxTextCtl control"
	},
//---------------------
	{
	"EVT_TEXT_ENTER",  "wxCommandEvent", "wxTextCtrl",
	"\tEVT_TEXT_ENTER(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for enter being pressed in wxTextCtl id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_TEXT_ENTERED event\n"
	"}",

	"Process a wxEVT_COMMAND_TEXT_ENTERED command which is "
	"generated by a wxTextCtl control"
	},
//---------------------
	{
	"EVT_MENU",	 "wxCommandEvent", "wxMenuItem", // FIXME:: how should we treat this one?
	"\tEVT_MENU(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for menu item id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_MENU_SELECTED event\n"
	"}",

	"Process a wxEVT_COMMAND_MENU_SELECTED command which is "
	"generated by a menu item"
	},
//---------------------
	{
	"EVT_MENU_RANGE",  "", "",
	"\tEVT_MENU_RANGE(%ID%, %ID2%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for menu items in the range: %ID% to %ID2%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_MENU_RANGE event\n"
	"}",

	"Process a wxEVT_COMMAND_MENU_RANGE command which is "
	"generated by a range of menu items"
	},
//---------------------
	{
	"EVT_SLIDER",  "wxCommandEvent", "wxSlider",
	"\tEVT_SLIDER(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for events from slider id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_SLIDER_UPDATED event\n"
	"}",

	"Process a wxEVT_COMMAND_SLIDER_UPDATED command which is "
	"generated by a wxSlider control"
	},
//---------------------
	{
	"EVT_RADIOBOX",	 "wxCommandEvent", "wxRadioBox",
	"\tEVT_RADIOBOX(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for radio box id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_RADIOBOX_SELECTED event\n"
	"}",

	"Process a wxEVT_COMMAND_RADIOBOX_SELECTED command which is "
	"generated by a wxRadioBox control"
	},
//---------------------
	{
	"EVT_RADIOBUTTON",  "wxCommandEvent", "wxRadioButton",
	"\tEVT_RADIOBUTTON(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for radio button id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_RADIOBUTTON_SELECTED event\n"
	"}",

	"Process a wxEVT_COMMAND_RADIOBUTTON_SELECTED command which is "
	"generated by a wxRadioButton control"
	},
//---------------------
	{
	"EVT_SCROLLBAR", "wxCommandEvent", "wxScollBar",
	"\tEVT_SCROLLBAR(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for scrollbar id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_SCROLLBAR_UPDATED event\n"
	"}",

	"Process a wxEVT_COMMAND_SCROLLBAR_UPDATED command which is "
	"generated by a wxScrollBar control. This is provided for compatibility "
	"only, more specific scrollbar event macros should be used instead "
	"(see wxScrollEvent)."
	},
//---------------------
	{
	"EVT_COMBOBOX",	 "wxCommandEvent", "wxComboBox",
	"\tEVT_COMBOBOX(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for combo box id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_COMBOBOX_SELECTED event\n"
	"}",

	"Process a wxEVT_COMMAND_COMBOBOX_SELECTED command which is "
	"generated by a wxComboBox control."
	},
//---------------------
	{
	"EVT_TOOL",	 "wxCommandEvent", "wxToolBar",
	"\tEVT_TOOL(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for tool id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_TOOL_CLICKED event\n"
	"}",

	"Process a wxEVT_COMMAND_TOOL_CLICKED command. This is a synonym for "
	"wxEVT_COMMAND_MENU_SELECTED."
	},
//---------------------
	{
	"EVT_TOOL_RANGE",  "", "",
	"\tEVT_TOOL_RANGE(%ID%, %ID2%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for toolbar items in the range: %ID% to %ID2%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_TOOL_CLICKED event\n"
	"}",

	"Process a wxEVT_COMMAND_TOOL_CLICKED for a range of toolbar items"
	},
//---------------------
	{
	"EVT_TOOL_RCLICKED",  "wxCommandEvent", "wxToolBar",
	"\tEVT_TOOL_RCLICKED(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for right clcik on tool id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_TOOL_RCLICKED event\n"
	"}",

	"Process a wxEVT_COMMAND_TOOL_RCLICKED command for a toolbar item"
	},
//---------------------
	{
	"EVT_TOOL_RCLICKED_RANGE",  "", "",
	"\tEVT_TOOL_RCLICKED_RANGE(%ID%, %ID2%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for right click on toolbar items in the range: %ID% to %ID2%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_TOOL_RCLICKED event\n"
	"}",

	"Process a wxEVT_COMMAND_TOOL_RCLICKED command for a range of toolbar items"
	},
//---------------------
	{
	"EVT_TOOL_ENTER",  "wxCommandEvent", "wxToolBar",
	"\tEVT_TOOL_ENTER(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for the mouse entering or leaving toolbar id: %ID%\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_TOOL_ENTER event\n"
	"}",

	"Process a wxEVT_COMMAND_TOOL_ENTER command for a toolbar. "
	"wxCommandEvent::GetSelection is the tool id, or -1 if the mouse "
	"has moved off a tool"
	},
//******************
//** wxCloseEvent **
//******************
	{
	"EVT_CLOSE",  "wxCloseEvent", "",
	"\tEVT_CLOSE(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCloseEvent&);",

	"// Callback for close event\n"
	"void %CLASS%::%METHOD%(wxCloseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process close event\n"
	"}",

	"Process a wxEVT_CLOSE event for a window"
	},
//**********************
//** wxDropFilesEvent **
//**********************
	{
	"EVT_DROP_FILES",  "wxDropFilesEvent", "",
	"\tEVT_DROP_FILES(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxDropFilesEvent&);",

	"// Callback for drop files event\n"
	"void %CLASS%::%METHOD%(wxDropFilesEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_DROP_FILES event\n"
	"}",

	"Process a wxEVT_DROP_FILES event when files have been dropped onto the window"
	},
//******************
//** wxEraseEvent **
//******************
	{
	"EVT_ERASE_BACKGROUND",	 "wxEraseEvent", "",
	"\tEVT_ERASE_BACKGROUND(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxEraseEvent&);",

	"// Callback for erase window background event\n"
	"void %CLASS%::%METHOD%(wxEraseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_ERASE_BACKGROUND event\n"
	"}",

	"Process a wxEVT_ERASE_BACKGROUND event, sent when a window's background "
	"needs to be repainted"
	},
//******************
//** wxFocusEvent **
//******************
	{
	"EVT_SET_FOCUS",  "wxFocusEvent", "",
	"\tEVT_SET_FOCUS(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxFocusEvent&);",

	"// Callback for set focus event\n"
	"void %CLASS%::%METHOD%(wxFocusEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SET_FOCUS event\n"
	"}",

	"Process a wxEVT_SET_FOCUS event, sent when a window gets focus"
	},
//---------------------
	{
	"EVT_KILL_FOCUS",  "wxFocusEvent", "",
	"\tEVT_KILL_FOCUS(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxFocusEvent&);",

	"// Callback for kill focus event\n"
	"void %CLASS%::%METHOD%(wxFocusEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_KILL_FOCUS event\n"
	"}",

	"Process a wxEVT_KILL_FOCUS event, sent when a window loses focus"
	},
//****************
//** wxKeyEvent **
//****************
	{
	"EVT_CHAR",	 "wxKeyEvent", "",
	"\tEVT_CHAR(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxKeyEvent&);",

	"// Callback for char (i.e. key press) events\n"
	"void %CLASS%::%METHOD%(wxKeyEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_CHAR event\n"
	"}",

	"Process a wxEVT_CHAR event, sent when a key is pressed"
	},
//---------------------
	{
	"EVT_CHAR_HOOK",  "wxKeyEvent", "",
	"\tEVT_CHAR_HOOK(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxKeyEvent&);",

	"// Callback for char (i.e. key press) events\n"
	"void %CLASS%::%METHOD%(wxKeyEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_CHAR_HOOK event\n"
	"}",

	"Process a wxEVT_CHAR_HOOK event, sent when a key is pressed"
	},
//*****************
//** wxIdleEvent **
//*****************
	{
	"EVT_IDLE",	 "wxIdleEvent", "",
	"\tEVT_IDLE(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxIdleEvent&);",

	"// Callback for idle events\n"
	"void %CLASS%::%METHOD%(wxIdleEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_IDLE event\n"
	"}",

	"Process a wxEVT_IDLE event, sent when the system is idle"
	},
//***********************
//** wxInitDialogEvent **
//***********************
	{
	"EVT_INIT_DIALOG",  "wxInitDialogEvent", "",
	"\tEVT_INIT_DIALOG(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxInitDialogEvent&);",

	"// Callback for init dialog event\n"
	"void %CLASS%::%METHOD%(wxInitDialogEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_INIT_DIALOG event\n"
	"}",

	"Process a wxEVT_INIT_DIALOG event, sent as a dialog or panel is being "
	"initialised. Handlers for this event can transfer data to the window"
	},
//*****************
//** wxListEvent **
//*****************
	{
	"EVT_LIST_BEGIN_DRAG",  "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_BEGIN_DRAG(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list begin (left button) dragging event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_BEGIN_DRAG event\n"
	"}",

	"Process a wxEVT_LIST_BEGIN_DRAG event, sent when the user starts dragging "
	"over a list control with the left mouse button pressed."
	},
//---------------------
	{
	"EVT_LIST_BEGIN_RDRAG",	 "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_BEGIN_RDRAG(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list begin (right button) dragging event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_BEGIN_RDRAG event\n"
	"}",

	"Process a wxEVT_LIST_BEGIN_RDRAG event, sent when the user starts dragging "
	"over a list control with the right mouse button pressed."
	},
//---------------------
	{
	"EVT_LIST_BEGIN_LABEL_EDIT",  "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_BEGIN_LABEL_EDIT(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list begin label edit event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_BEGIN_LABEL_EDIT event\n"
	"}",

	"Process a wxEVT_LIST_BEGIN_LABEL_EDIT event, sent when the user starts "
	"editing a label in a list control."
	},
//---------------------
	{
	"EVT_LIST_END_LABEL_EDIT",  "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_END_LABEL_EDIT(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list end label edit event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_END_LABEL_EDIT event\n"
	"}",

	"Process a wxEVT_LIST_END_LABEL_EDIT event, sent when the user finishes "
	"editing a label in a list control."
	},
//---------------------
	{
	"EVT_LIST_DELETE_ITEM",	 "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_DELETE_ITEM(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list delete item event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_DELETE_ITEM event\n"
	"}",

	"Process a wxEVT_LIST_DELETE_ITEM event, sent when an item is deleted "
	"from a list control."
	},
//---------------------
	{
	"EVT_LIST_DELETE_ALL_ITEMS",  "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_DELETE_ALL_ITEMS(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list delete all items event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_DELETE_ALL_ITEMS event\n"
	"}",

	"Process a wxEVT_LIST_DELETE_ALL_ITEMS event, sent when all items are deleted "
	"from a list control."
	},
//---------------------
	{
	"EVT_LIST_GET_INFO",  "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_GET_INFO(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list get info event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_GET_INFO event\n"
	"}",

	"Process a wxEVT_LIST_GET_INFO event, sent when item is being requested from "
	"the application, usually the item text."
	},
//---------------------
	{
	"EVT_LIST_SET_INFO",  "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_SET_INFO(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list set info event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_SET_INFO event\n"
	"}",

	"Process a wxEVT_LIST_SET_INFO event, sent when information is being "
	"supplied (not implemented)"
	},
//---------------------
	{
	"EVT_LIST_ITEM_SELECTED",  "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_ITEM_SELECTED(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list item selected event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_ITEM_SELECTED event\n"
	"}",

	"Process a wxEVT_LIST_ITEM_SELECTED event, sent when an item is selected "
	"in a list control"
	},
//---------------------
	{
	"EVT_LIST_ITEM_DESELECTED",	 "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_ITEM_DESELECTED(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list item deselected event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_ITEM_DESELECTED event\n"
	"}",

	"Process a wxEVT_LIST_ITEM_DESELECTED event, sent when an item is deselected "
	"in a list control"
	},
//---------------------
	{
	"EVT_LIST_KEY_DOWN",  "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_KEY_DOWN(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list key down event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_KEY_DOWN event\n"
	"}",

	"Process a wxEVT_LIST_KEY_DOWN event, sent when a key has been pressed "
	"in a list control"
	},
//---------------------
	{
	"EVT_LIST_INSERT_ITEM",	 "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_INSERT_ITEM(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list insert item event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_INSERT_ITEM event\n"
	"}",

	"Process a wxEVT_LIST_INSERT_ITEM event, sent when an item has been inserted "
	"into a list control"
	},
//---------------------
	{
	"EVT_LIST_COL_CLICK",  "wxListEvent", "wxListCtrl",
	"\tEVT_LIST_COL_CLICK(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxListEvent&);",

	"// Callback for list column left click event\n"
	"void %CLASS%::%METHOD%(wxListEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LIST_COL_CLICK event\n"
	"}",

	"Process a wxEVT_LIST_COL_CLICK event, sent when a column (m_col) has been "
	"left-clicked in a list control"
	},
//*****************
//** wxMenuEvent **
//*****************
	{
	"EVT_MENU_CHAR",  "wxMenuEvent", "",
	"\tEVT_MENU_CHAR(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMenuEvent&);",

	"// Callback for key press when menu showing event\n"
	"void %CLASS%::%METHOD%(wxMenuEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_MENU_CHAR event\n"
	"}",

	"Process a wxEVT_MENU_CHAR event, sent when a key is pressed when a "
	"menu is showing (Windows only)"
	},
//---------------------
	{
	"EVT_MENU_INIT",  "wxMenuEvent", "",
	"\tEVT_MENU_INIT(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMenuEvent&);",

	"// Callback for menu init event\n"
	"void %CLASS%::%METHOD%(wxMenuEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_MENU_INIT event\n"
	"}",

	"Process a wxEVT_MENU_INIT event, sent when a menu is about to pop up "
	"(Windows only)"
	},
//---------------------
	{
	"EVT_MENU_HIGHLIGHT",  "wxMenuEvent", "",
	"\tEVT_MENU_HIGHLIGHT(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMenuEvent&);",

	"// Callback for menu highlight event\n"
	"void %CLASS%::%METHOD%(wxMenuEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_MENU_HIGHLIGHT event\n"
	"}",

	"Process a wxEVT_MENU_HIGHLIGHT event, sent when a menu item is being "
	"highlighted (Windows only)"
	},
//---------------------
	{
	"EVT_POPUP_MENU",  "wxMenuEvent", "",
	"\tEVT_POPUP_MENU(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMenuEvent&);",

	"// Callback for popup menu event\n"
	"void %CLASS%::%METHOD%(wxMenuEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_POPUP_MENU event\n"
	"}",

	"Process a wxEVT_POPUP_MENU event, sent when ???????? "
	"(Windows only)"
	},
//---------------------
	{
	"EVT_CONTEXT_MENU",	 "wxMenuEvent", "",
	"\tEVT_CONTEXT_MENU(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMenuEvent&);",

	"// Callback for context menu event (F1 pressed when a\n"
	"// menu item is highlighted)\n"
	"void %CLASS%::%METHOD%(wxMenuEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_CONTEXT_MENU event\n"
	"}",

	"Process a wxEVT_CONTEXT_MENU event, sent when F1 is pressed when a menu "
	"item is highlighted (Windows only)"
	},
//******************
//** wxMouseEvent **
//******************
	{
	"EVT_LEFT_DOWN",  "wxMouseEvent", "",
	"\tEVT_LEFT_DOWN(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for left mouse button down event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LEFT_DOWN event\n"
	"}",

	"Process a wxEVT_LEFT_DOWN event, sent when the left mouse button is "
	"pressed"
	},
//---------------------
	{
	"EVT_LEFT_UP",  "wxMouseEvent", "",
	"\tEVT_LEFT_UP(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for left mouse button up event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LEFT_UP event\n"
	"}",

	"Process a wxEVT_LEFT_UP event, sent when the left mouse button is "
	"released"
	},
//---------------------
	{
	"EVT_LEFT_DCLICK",  "wxMouseEvent", "",
	"\tEVT_LEFT_DCLICK(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for left mouse button double-click event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LEFT_DCLICK event\n"
	"}",

	"Process a wxEVT_LEFT_DCLICK event, sent when the left mouse button is "
	"double-clicked"
	},
//---------------------
	{
	"EVT_MIDDLE_DOWN",  "wxMouseEvent", "",
	"\tEVT_MIDDLE_DOWN(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for middle mouse button down event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_MIDDLE_DOWN event\n"
	"}",

	"Process a wxEVT_MIDDLE_DOWN event, sent when the middle mouse button is "
	"pressed"
	},
//---------------------
	{
	"EVT_MIDDLE_UP",  "wxMouseEvent", "",
	"\tEVT_MIDDLE_UP(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for middle mouse button up event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_MIDDLE_UP event\n"
	"}",

	"Process a wxEVT_MIDDLE_UP event, sent when the middle mouse button is "
	"released"
	},
//---------------------
	{
	"EVT_MIDDLE_DCLICK",  "wxMouseEvent", "",
	"\tEVT_MIDDLE_DCLICK(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for middle mouse button double-click event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_MIDDLE_DCLICK event\n"
	"}",

	"Process a wxEVT_MIDDLE_DCLICK event, sent when the middle mouse button is "
	"double-clicked"
	},
//---------------------
	{
	"EVT_RIGHT_DOWN",  "wxMouseEvent", "",
	"\tEVT_RIGHT_DOWN(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for right mouse button down event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_RIGHT_DOWN event\n"
	"}",

	"Process a wxEVT_RIGHT_DOWN event, sent when the right mouse button is "
	"pressed"
	},
//---------------------
	{
	"EVT_RIGHT_UP",	 "wxMouseEvent", "",
	"\tEVT_RIGHT_UP(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for right mouse button up event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_RIGHT_UP event\n"
	"}",

	"Process a wxEVT_RIGHT_UP event, sent when the right mouse button is "
	"released"
	},
//---------------------
	{
	"EVT_RIGHT_DCLICK",	 "wxMouseEvent", "",
	"\tEVT_RIGHT_DCLICK(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for right mouse button double-click event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_RIGHT_DCLICK event\n"
	"}",

	"Process a wxEVT_RIGHT_DCLICK event, sent when the right mouse button is "
	"double-clicked"
	},
//---------------------
	{
	"EVT_MOTION",  "wxMouseEvent", "",
	"\tEVT_MOTION(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for mouse motion event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_MOTION event\n"
	"}",

	"Process a wxEVT_MOTION event, sent when the mouse is moved in a window"
	},
//---------------------
	{
	"EVT_ENTER_WINDOW",	 "wxMouseEvent", "",
	"\tEVT_ENTER_WINDOW(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for mouse enter window event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_ENTER_WINDOW event\n"
	"}",

	"Process a wxEVT_ENTER_WINDOW event, sent when the mouse is enters a window"
	},
//---------------------
	{
	"EVT_LEAVE_WINDOW",	 "wxMouseEvent", "",
	"\tEVT_LEAVE_WINDOW(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for mouse leave window event\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_LEAVE_WINDOW event\n"
	"}",

	"Process a wxEVT_LEAVE_WINDOW event, sent when the mouse is leaves a window"
	},
//---------------------
	{
	"EVT_MOUSE_EVENTS",	 "wxMouseEvent", "",
	"\tEVT_MOUSE_EVENTS(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMouseEvent&);",

	"// Callback for all mouse events\n"
	"void %CLASS%::%METHOD%(wxMouseEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_MOUSE_EVENTS event\n"
	"}",

	"Process wxEVT_MOUSE_EVENTS events, i.e. all mouse events"
	},
//*****************
//** wxMoveEvent **
//*****************
	{
	"EVT_MOVE",	 "wxMoveEvent", "",
	"\tEVT_MOVE(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxMoveEvent&);",

	"// Callback for window move events\n"
	"void %CLASS%::%METHOD%(wxMoveEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_MOVE event\n"
	"}",

	"Process wxEVT_MOVE events, generated when a windows is moved"
	},
//*********************
//** wxUpdateUIEvent **
//*********************
	{
	"EVT_UPDATE_UI",  "wxUpdateUIEvent", "wxMenuItem",
	"\tEVT_UPDATE_UI(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxUpdateUIEvent&);",

	"// Callback for update UI events\n"
	"void %CLASS%::%METHOD%(wxUpdateUIEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_UPDATE_UI event\n"
	"}",

	"Process wxEVT_UPDATE_UI events, generated when the system is idle to give "
	"the application the chance to update the UI to reflect the application state"
	},
//******************
//** wxPaintEvent **
//******************
	{
	"EVT_PAINT",  "wxPaintEvent", "",
	"\tEVT_PAINT(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxPaintEvent&);",

	"// Callback for window paint events\n"
	"void %CLASS%::%METHOD%(wxPaintEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_PAINT event\n"
	"}",

	"Process wxEVT_PAINT events, generated when a window's contents need to be "
	"repainted"
	},
//*******************
//** wxScrollEvent **
//*******************
	{
	"EVT_SCROLL",  "wxScrollEvent", "",
	"\tEVT_SCROLL(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for (all) scroll events\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL event\n"
	"}",

	"Process wxEVT_SCROLL events, generated by scrollbars and scrolling windows"
	},
//---------------------
	{
	"EVT_SCROLL_TOP",  "wxScrollEvent", "",
	"\tEVT_SCROLL_TOP(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll-to-top events\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_TOP event\n"
	"}",

	"Process wxEVT_SCROLL_TOP \"scroll-to-top\" events"
	},
//---------------------
	{
	"EVT_SCROLL_BOTTOM",  "wxScrollEvent", "",
	"\tEVT_SCROLL_BOTTOM(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll-to-bottom events\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_BOTTOM event\n"
	"}",

	"Process wxEVT_SCROLL_BOTTOM \"scroll-to-bottom\" events"
	},
//---------------------
	{
	"EVT_SCROLL_LINEUP",  "wxScrollEvent", "",
	"\tEVT_SCROLL_LINEUP(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll line up events\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_LINEUP event\n"
	"}",

	"Process wxEVT_SCROLL_LINEUP \"scroll line up\" events"
	},
//---------------------
	{
	"EVT_SCROLL_LINEDOWN",  "wxScrollEvent", "",
	"\tEVT_SCROLL_LINEDOWN(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll line down events\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_LINEDOWN event\n"
	"}",

	"Process wxEVT_SCROLL_LINEDOWN \"scroll line down\" events"
	},
//---------------------
	{
	"EVT_SCROLL_PAGEUP",  "wxScrollEvent", "",
	"\tEVT_SCROLL_PAGEUP(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll page up events\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_PAGEUP event\n"
	"}",

	"Process wxEVT_SCROLL_PAGEUP \"scroll page up\" events"
	},
//---------------------
	{
	"EVT_SCROLL_PAGEDOWN",  "wxScrollEvent", "",
	"\tEVT_SCROLL_PAGEDOWN(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll page down events\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_PAGEDOWN event\n"
	"}",

	"Process wxEVT_SCROLL_PAGEDOWN \"scroll page down\" events"
	},
//---------------------
	{
	"EVT_SCROLL_THUMBTRACK",  "wxScrollEvent", "",
	"\tEVT_SCROLL_THUMBTRACK(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll thumbtrack events\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_THUMBTRACK event\n"
	"}",

	"Process wxEVT_SCROLL_THUMBTRACK events (frequent events sent as the "
	"user drags the thumbtrack)"
	},
//---------------------
	{
	"EVT_COMMAND_SCROLL",  "wxScrollEvent", "",
	"\tEVT_COMMAND_SCROLL(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for (all) scroll events for window id: %ID%\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL event\n"
	"}",

	"Process wxEVT_SCROLL events, generated by scrollbars and scrolling windows"
	},
//---------------------
	{
	"EVT_COMMAND_SCROLL_TOP",  "wxScrollEvent", "ANY_WINDOW",
	"\tEVT_COMMAND_SCROLL_TOP(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll-to-top events for window id: %ID%\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_TOP event\n"
	"}",

	"Process wxEVT_SCROLL_TOP \"scroll-to-top\" events"
	},
//---------------------
	{
	"EVT_COMMAND_SCROLL_BOTTOM",  "wxScrollEvent", "ANY_WINDOW",
	"\tEVT_COMMAND_SCROLL_BOTTOM(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll-to-bottom events for window id: %ID%\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_BOTTOM event\n"
	"}",

	"Process wxEVT_SCROLL_BOTTOM \"scroll-to-bottom\" events"
	},
//---------------------
	{
	"EVT_COMMAND_SCROLL_LINEUP",  "wxScrollEvent", "ANY_WINDOW",
	"\tEVT_COMMAND_SCROLL_LINEUP(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll line up events for window id: %ID%\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_LINEUP event\n"
	"}",

	"Process wxEVT_SCROLL_LINEUP \"scroll line up\" events"
	},
//---------------------
	{
	"EVT_COMMAND_SCROLL_LINEDOWN",  "wxScrollEvent", "ANY_WINDOW",
	"\tEVT_COMMAND_SCROLL_LINEDOWN(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll line down events for window id: %ID%\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_LINEDOWN event\n"
	"}",

	"Process wxEVT_SCROLL_LINEDOWN \"scroll line down\" events"
	},
//---------------------
	{
	"EVT_COMMAND_SCROLL_PAGEUP",  "wxScrollEvent", "ANY_WINDOW",
	"\tEVT_COMMAND_SCROLL_PAGEUP(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll page up events for window id: %ID%\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_PAGEUP event\n"
	"}",

	"Process wxEVT_SCROLL_PAGEUP \"scroll page up\" events"
	},
//---------------------
	{
	"EVT_COMMAND_SCROLL_PAGEDOWN",  "wxScrollEvent", "ANY_WINDOW",
	"\tEVT_COMMAND_SCROLL_PAGEDOWN(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll page down events for window id: %ID%\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_PAGEDOWN event\n"
	"}",

	"Process wxEVT_SCROLL_PAGEDOWN \"scroll page down\" events"
	},
//---------------------
	{
	"EVT_COMMAND_SCROLL_THUMBTRACK",  "wxScrollEvent", "ANY_WINDOW",
	"\tEVT_COMMAND_SCROLL_THUMBTRACK(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxScrollEvent&);",

	"// Callback for scroll thumbtrack events for window id: %ID%\n"
	"void %CLASS%::%METHOD%(wxScrollEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SCROLL_THUMBTRACK event\n"
	"}",

	"Process wxEVT_SCROLL_THUMBTRACK events (frequent events sent as the "
	"user drags the thumbtrack)"
	},
//*****************
//** wxSizeEvent **
//*****************
	{
	"EVT_SIZE",	 "wxSizeEvent", "",
	"\tEVT_SIZE(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxSizeEvent&);",

	"// Callback for window size change events\n"
	"void %CLASS%::%METHOD%(wxSizeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SIZE event\n"
	"}",

	"Process wxEVT_SIZE events, generated when a window's size changes"
	},
//*****************************
//** wxSysColourChangedEvent **
//*****************************
	{
	"EVT_SYS_COLOUR_CHANGED",  "wxSysColourChangedEvent", "",
	"\tEVT_SYS_COLOUR_CHANGED(%CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxSysColourChangedEvent&);",

	"// Callback for system colour change events\n"
	"void %CLASS%::%METHOD%(wxSysColourChangedEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_SYS_COLOUR_CHANGED event\n"
	"}",

	"Process wxEVT_SYS_COLOUR_CHANGED events, generated when the user changes the "
	"colour settings using the control panel (Windows only)"
	},
//*****************
//** wxTreeEvent **
//*****************
	{
	"EVT_TREE_BEGIN_DRAG",  "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_BEGIN_DRAG(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree begin dragging events (left mouse button)\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_BEGIN_DRAG event\n"
	"}",

	"Process wxEVT_TREE_BEGIN_DRAG events, generated when the user starts "
	"dragging using the left mouse button"
	},
//---------------------
	{
	"EVT_TREE_BEGIN_RDRAG",	 "wxTreeEvent", "wxTreeCtrl"
	"\tEVT_TREE_BEGIN_RDRAG(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree begin dragging events (right mouse button)\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_BEGIN_RDRAG event\n"
	"}",

	"Process wxEVT_TREE_BEGIN_RDRAG events, generated when the user starts "
	"dragging using the right mouse button"
	},
//---------------------
	{
	"EVT_TREE_BEGIN_LABEL_EDIT",  "wxTreeEvent", "wxTreeCtrl"
	"\tEVT_TREE_BEGIN_LABEL_EDIT(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree begin label edit events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_BEGIN_LABEL_EDIT event\n"
	"}",

	"Process wxEVT_TREE_BEGIN_LABEL_EDIT events, generated when the user starts "
	"editing a label"
	},
//---------------------
	{
	"EVT_TREE_END_LABEL_EDIT",  "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_END_LABEL_EDIT(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree end label edit events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_END_LABEL_EDIT event\n"
	"}",

	"Process wxEVT_TREE_END_LABEL_EDIT events, generated when the user "
	"finishes editing a label"
	},
//---------------------
	{
	"EVT_TREE_DELETE_ITEM",	 "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_DELETE_ITEM(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree delete item events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_DELETE_ITEM event\n"
	"}",

	"Process wxEVT_TREE_DELETE_ITEM events, generated when an item "
	"is deleted"
	},
//---------------------
	{
	"EVT_TREE_GET_INFO",  "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_GET_INFO(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree get info events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_GET_INFO event\n"
	"}",

	"Process wxEVT_TREE_GET_INFO events, request information from the application"
	},
//---------------------
	{
	"EVT_TREE_SET_INFO",  "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_SET_INFO(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree set info events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_SET_INFO event\n"
	"}",

	"Process wxEVT_TREE_SET_INFO events, information is being supplied"
	},
//---------------------
	{
	"EVT_TREE_ITEM_EXPANDED",  "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_ITEM_EXPANDED(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree item expanded events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_ITEM_EXPANDED event\n"
	"}",

	"Process wxEVT_TREE_ITEM_EXPANDED events, generated when the parent item has "
	"been expanded"
	},
//---------------------
	{
	"EVT_TREE_ITEM_EXPANDING",  "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_ITEM_EXPANDING(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree item expanding events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_ITEM_EXPANDING event\n"
	"}",

	"Process wxEVT_TREE_ITEM_EXPANDING events, generated when the parent item is "
	"being expanded"
	},
//---------------------
	{
	"EVT_TREE_SEL_CHANGED",	 "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_SEL_CHANGED(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree selection changed events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_SEL_CHANGED event\n"
	"}",

	"Process wxEVT_TREE_SEL_CHANGED events, generated when a selection has changed"
	},
//---------------------
	{
	"EVT_TREE_SEL_CHANGING",  "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_SEL_CHANGING(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree selection changing events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_SEL_CHANGING event\n"
	"}",

	"Process wxEVT_TREE_SEL_CHANGING events, generated when a selection is "
	"changing"
	},
//---------------------
	{
	"EVT_TREE_KEY_DOWN", "wxTreeEvent", "wxTreeCtrl",
	"\tEVT_TREE_KEY_DOWN(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxTreeEvent&);",

	"// Callback for wxTree key press events\n"
	"void %CLASS%::%METHOD%(wxTreeEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_TREE_KEY_DOWN event\n"
	"}",

	"Process wxEVT_TREE_KEY_DOWN events, generated when a key is pressed"
	},

	/*
	//////////////////////////(only for NT/Win95) /////////////////////////////

//---------------------
	{
	"EVT_COMMAND_LEFT_CLICK",  "wxCommandEvent", "ANY",
	"\tEVT_COMMAND_LEFT_CLICK(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for left click on control id: %ID% (Win95/NT only)\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_LEFT_CLICK event\n"
	"}",

	"Process a wxEVT_COMMAND_LEFT_CLICK command for a control (Win95/NT only)"
	},
//---------------------
	{
	"EVT_COMMAND_LEFT_DCLICK",  "wxCommandEvent", "ANY",
	"\tEVT_COMMAND_LEFT_DCLICK(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for left double-click on control id: %ID% (Win95/NT only)\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_LEFT_DCLICK event\n"
	"}",

	"Process a wxEVT_COMMAND_LEFT_DCLICK command for a control (Win95/NT only)"
	},
//---------------------
	{
	"EVT_COMMAND_RIGHT_CLICK",  "wxCommandEvent", "ANY",
	"\tEVT_COMMAND_RIGHT_CLICK(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for right click on control id: %ID% (Win95/NT only)\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_RIGHT_CLICK event\n"
	"}",

	"Process a wxEVT_COMMAND_RIGHT_CLICK command for a control (Win95/NT only)"
	},
//---------------------
	{
	"EVT_COMMAND_SET_FOCUS",  "wxCommandEvent", "ANY",
	"\tEVT_COMMAND_SET_FOCUS(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for control id: %ID% getting focus (Win95/NT only)\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_SET_FOCUS event\n"
	"}",

	"Process a wxEVT_COMMAND_SET_FOCUS command for a control (Win95/NT only)"
	},
//---------------------
	{
	"EVT_COMMAND_KILL_FOCUS",  "wxCommandEvent", "ANY",
	"\tEVT_COMMAND_KILL_FOCUS(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for control id: %ID% losing focus (Win95/NT only)\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_KILL_FOCUS event\n"
	"}",

	"Process a wxEVT_COMMAND_KILL_FOCUS command for a control (Win95/NT only)"
	},
//---------------------
	{
	"EVT_COMMAND_ENTER",  "wxCommandEvent", "ANY",
	"\tEVT_COMMAND_ENTER(%ID%, %CLASS%::%METHOD%)",
	"\tvoid %METHOD%(wxCommandEvent&);",

	"// Callback for the mouse entering control id: %ID% (Win95/NT only)\n"
	"void %CLASS%::%METHOD%(wxCommandEvent& event)\n"
	"{\n"
		"\t// TODO: add code to process wxEVT_COMMAND_ENTER event\n"
	"}",

	"Process a wxEVT_COMMAND_ENTER command for a control (Win95/NT only)"
	},
	*/

	{ NULL, NULL, NULL, NULL, NULL }
};

int EventInfoCnt()
{
	return sizeof(gEventInfoArray)/sizeof(EventInfo)-1;
}

static bool	gEventInfoReady = FALSE;

static wxHashTable gEventInfoHash( wxKEY_STRING );

EventInfo* EventInfo::FindEventInfoByMacro( const wxString& macroName )
{
	if ( !gEventInfoReady )
	{
		gEventInfoReady = TRUE;

		size_t sz = EventInfoCnt();
        unsigned int i;
		for( i = 0; i != sz; ++i )
		
			gEventInfoHash.Put( gEventInfoArray[i].mEventMacro, 
								(wxObject*)(gEventInfoArray+i) );
	}

	return (EventInfo*)gEventInfoHash.Get( macroName );
}

/***** Implementation for class EventEntryInfo *****/

EventEntryInfo::EventEntryInfo()

	: mpEventInfo( NULL ),
	  mSrcPos( (size_t)(-1) )
{}
