Simple code generator for MyGui

shanefarris

10-05-2011 20:19:26

Hey I created a simple tool to generate all the boilerplate code needed to interact with MyGui. It uses a modified IO library based on the IO namespace in Irrlicht, but if anyone wanted to use this, it shouldn't be difficult to change to the standalone IO library, or even tinyXml.


// Converts Xml layouts from supported gui libraires to c++ events ready to code

#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
#include <windows.h>

#include "CFileSystem.h"

using namespace IO;

std::string ClassName = "CLASS_NAME";

std::vector<std::string> declares;
std::vector<std::string> assigns;
std::vector<std::string> event_declare;
std::vector<std::string> event_assigns;
std::vector<std::string> event_defines;

void printHelp(void)
{
// Print help message
std::cout << std::endl << "GuiEventCreator " << std::endl;
std::cout << "Usage: GuiEventCreator [options] FileName " << std::endl;
std::cout << std::endl;
}

std::string Create(const std::string& filename)
{
// Only support mygui for now

// See if the file exists
if(!CFileSystem::IsFileExist(filename.c_str()))
return "File does not exist";


CFileSystem FileSystem;
IXMLReader* xml = FileSystem.CreateXMLReader(filename.c_str());
if(!xml)
return "Could not create the XML driver";

while(xml && xml->Read())
{
if (String("Widget") == xml->GetNodeName() && xml->GetNodeType() == XML_NODE_ELEMENT)
{
// Code for a new widget
std::string type = xml->GetAttributeValueSafe("type");
if(type.length() == 0)
{
return "Unable to parse widget type";
}

std::string name = xml->GetAttributeValueSafe("name");
if(name.length() == 0)
{
if(type != "StaticText" && type != "Sheet" && type != "Tab")
{
return "Unable to parse widget name for type: " + type;
}
}
else if(name.length() > 0)
{
assigns.push_back(std::string("\tm_BaseLayout->AssignWidget(" + name + ", \"" + name + "\");\n"));

// Create boilerplate code for widget using the type and name
if(type == std::string("Widget") ||
type == std::string("Window"))
{
declares.push_back("\n");
declares.push_back(std::string("\tMyGUI::Widget*\t\t" + name + ";\n"));
}
else if(type == std::string("Edit"))
{
declares.push_back(std::string("\tMyGUI::EditPtr\t\t" + name + ";\n"));
}
else if(type == std::string("RenderBox"))
{
declares.push_back(std::string("\tMyGUI::RenderBoxPtr\t" + name + ";\n"));
}
else if(type == std::string("ComboBox"))
{
declares.push_back(std::string("\tMyGUI::ComboBoxPtr\t" + name + ";\n"));
event_assigns.push_back(std::string("\t" + name + "->eventComboChangePosition = MyGUI::newDelegate(this, &" + ClassName + "::" + name + "_ComboAccept);\n"));

event_declare.push_back("\tvoid " + name + "_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);\n");

std::string def = "void " + ClassName + "::" + name + "_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)\n{\n}\n";
event_defines.push_back(def);
}
else if(type == std::string("Button") || type == std::string("StaticImage"))
{
if(type == "Button")
declares.push_back(std::string("\tMyGUI::ButtonPtr\t" + name + ";\n"));
else
declares.push_back(std::string("\tMyGUI::StaticImage*\t" + name + ";\n"));

event_assigns.push_back(std::string("\t" + name + "->eventMouseButtonClick = MyGUI::newDelegate(this, &" + ClassName + "::" + name + "_Click);\n"));

event_declare.push_back("\tvoid " + name + "_Click(MyGUI::WidgetPtr _sender);\n");

std::string def = "void " + ClassName + "::" + name + "_Click(MyGUI::WidgetPtr _sender)\n{\n}\n";
event_defines.push_back(def);
}
else if(type == std::string("HScroll") || type == std::string("VScroll"))
{
if(type == "HScroll")
declares.push_back(std::string("\tMyGUI::HScrollPtr\t" + name + ";\n"));
else
declares.push_back(std::string("\tMyGUI::VScrollPtr\t" + name + ";\n"));

event_assigns.push_back(std::string("\t" + name + "->eventScrollChangePosition = MyGUI::newDelegate(this, &" + ClassName + "::" + name + "_Change);\n"));

event_declare.push_back("\tvoid " + name + "_Change(MyGUI::VScroll* _sender, size_t _position);\n");

std::string def = "void " + ClassName + "::" + name + "_Change(MyGUI::VScroll* _sender, size_t _position)\n{\n}\n";
event_defines.push_back(def);
}
else if(type == std::string("ItemBox"))
{
declares.push_back(std::string("\tMyGUI::ItemBoxPtr\t" + name + ";\n"));
}
}
}
}

// Create the output
std::string output;
for(uint i = 0; i < declares.size(); i++)
{
output += declares;
}
output += "\n\n\n\n";
for(uint i = 0; i < event_declare.size(); i++)
{
output += event_declare;
}
output += "\n\n\n\n";
for(uint i = 0; i < assigns.size(); i++)
{
output += assigns;
}
output += "\n\n\n\n";
for(uint i = 0; i < event_assigns.size(); i++)
{
output += event_assigns;
}
output += "\n\n\n\n";
for(uint i = 0; i < event_defines.size(); i++)
{
output += event_defines;
}

IWriteFile* writer = FileSystem.CreateAndWriteFile("./out.cpp", false, false);
if(writer)
{
writer->Write(output.c_str(), output.length());
delete writer;
}
else
{
return "Unable to create ./out.cpp";
}

if (xml)
delete xml;

return "";
}

int main(int argc, const char** argv)
{
if (argc < 2)
{
printHelp();
return -1;
}

try
{
std::string filename = argv[1];
std::string ret;

if(filename.length() > 0)
{
ret = Create(filename);
}
else
{
printHelp();
return -1;
}

if(ret.length() > 0)
std::cout << ret << std::endl;
}
catch (std::exception& ex)
{
std::cout << "Parsing global options failed:" << std::endl;
std::cout << ex.what() << std::endl;
}
catch (...)
{
std::cout << "Parsing global options failed." << std::endl;
}

char ch;
std::cout << "Press a key then press enter: ";
std::cin >> ch;

return 0;
}




This is just one file that compiles to an exe and creates a text file with the output like this:


MyGUI::Widget* _Main;
MyGUI::ComboBoxPtr cmbPlayers;
MyGUI::ButtonPtr btnAddPlayer;
MyGUI::ButtonPtr btnAddPathPoint;
MyGUI::ComboBoxPtr cmbPaths;
MyGUI::ButtonPtr btnPlacePhyBox;
MyGUI::ButtonPtr btnPlaceObsBox;
MyGUI::ButtonPtr btnAddWall;
MyGUI::ButtonPtr btnPlaceObsSphere;
MyGUI::ComboBoxPtr cmbItemsInventory;
MyGUI::ButtonPtr btnPlaceItem;
MyGUI::ButtonPtr btnAddMesh;
MyGUI::ButtonPtr btnSave;
MyGUI::EditPtr txtFileName;
MyGUI::ComboBoxPtr cmbFileType;
MyGUI::ButtonPtr btnLoadSceneFile;
MyGUI::EditPtr txtSceneFile;
MyGUI::ButtonPtr btnPlacePlane;
MyGUI::ComboBoxPtr cmbSoundFiles;
MyGUI::ButtonPtr btnAddSound;

MyGUI::Widget* frmGenProp;
MyGUI::EditPtr txtPropertiesName;
MyGUI::ButtonPtr btnPropertiesCancel;
MyGUI::ButtonPtr btnPropertiesSave;
MyGUI::ButtonPtr btnPropReloadMaterial;
MyGUI::EditPtr txtGenPropPosX;
MyGUI::EditPtr txtGenPropPosY;
MyGUI::EditPtr txtGenPropPosZ;
MyGUI::EditPtr txtGenPropScaleX;
MyGUI::EditPtr txtGenPropScaleY;
MyGUI::EditPtr txtGenPropScaleZ;
MyGUI::StaticImage* btnPlay;
MyGUI::StaticImage* btnPause;

MyGUI::Widget* frmSoundProp;
MyGUI::HScrollPtr sldGain;
MyGUI::HScrollPtr sldPitch;
MyGUI::HScrollPtr sldMaxDistance;
MyGUI::HScrollPtr sldOuterConeGain;
MyGUI::HScrollPtr sldInnerConeAngle;
MyGUI::HScrollPtr sldOuterConeAngle;
MyGUI::EditPtr txtSoundPositionX;
MyGUI::EditPtr txtSoundPositionY;
MyGUI::EditPtr txtSoundPositionZ;
MyGUI::HScrollPtr sldMaxGain;
MyGUI::HScrollPtr sldMinGain;
MyGUI::EditPtr txtSoundFileName;
MyGUI::HScrollPtr sldRollOff;
MyGUI::HScrollPtr sldRefDistance;
MyGUI::EditPtr txtSoundVelocityX;
MyGUI::EditPtr txtSoundVelocityY;
MyGUI::EditPtr txtSoundVelocityZ;
MyGUI::EditPtr txtSoundDirectionX;
MyGUI::EditPtr txtSoundDirectionY;
MyGUI::EditPtr txtSoundDirectionZ;
MyGUI::ButtonPtr btnSoundCancel;
MyGUI::ButtonPtr btnSoundSave;

MyGUI::Widget* frmMesh;
MyGUI::ComboBoxPtr cmbMeshList;
MyGUI::ButtonPtr rdoMeshSphereObstacle;
MyGUI::ButtonPtr rdoMeshBoxObstacle;
MyGUI::ButtonPtr chkMeshRandom;
MyGUI::EditPtr txtMeshCount;
MyGUI::ButtonPtr btnMeshPlace;
MyGUI::ButtonPtr btnMeshClose;
MyGUI::EditPtr txtMeshMinX;
MyGUI::EditPtr txtMeshMinZ;
MyGUI::EditPtr txtMeshMaxX;
MyGUI::EditPtr txtMeshMaxZ;
MyGUI::HScrollPtr sldMasterSpeed;

MyGUI::Widget* frmPlayerProperties;
MyGUI::EditPtr txtPlayerName;
MyGUI::ButtonPtr chkPlayerShowLoS;
MyGUI::ButtonPtr chkPlayerShowBB;
MyGUI::ButtonPtr chkPlayerShowCC;
MyGUI::ItemBoxPtr lstPlayerItems;
MyGUI::ComboBoxPtr cmbPlayerAllItems;
MyGUI::ButtonPtr btnPlayerAddItem;
MyGUI::ButtonPtr btnPlayerRemoveItem;
MyGUI::ComboBoxPtr cmbPlayerState;
MyGUI::ComboBoxPtr cmbPlayerTarget;
MyGUI::ComboBoxPtr cmbPlayerTeam;
MyGUI::ButtonPtr btnPlayerCancel;
MyGUI::ButtonPtr btnPlayerSave;




void cmbPlayers_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void btnAddPlayer_Click(MyGUI::WidgetPtr _sender);
void btnAddPathPoint_Click(MyGUI::WidgetPtr _sender);
void cmbPaths_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void btnPlacePhyBox_Click(MyGUI::WidgetPtr _sender);
void btnPlaceObsBox_Click(MyGUI::WidgetPtr _sender);
void btnAddWall_Click(MyGUI::WidgetPtr _sender);
void btnPlaceObsSphere_Click(MyGUI::WidgetPtr _sender);
void cmbItemsInventory_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void btnPlaceItem_Click(MyGUI::WidgetPtr _sender);
void btnAddMesh_Click(MyGUI::WidgetPtr _sender);
void btnSave_Click(MyGUI::WidgetPtr _sender);
void cmbFileType_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void btnLoadSceneFile_Click(MyGUI::WidgetPtr _sender);
void btnPlacePlane_Click(MyGUI::WidgetPtr _sender);
void cmbSoundFiles_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void btnAddSound_Click(MyGUI::WidgetPtr _sender);
void btnPropertiesCancel_Click(MyGUI::WidgetPtr _sender);
void btnPropertiesSave_Click(MyGUI::WidgetPtr _sender);
void btnPropReloadMaterial_Click(MyGUI::WidgetPtr _sender);
void btnPlay_Click(MyGUI::WidgetPtr _sender);
void btnPause_Click(MyGUI::WidgetPtr _sender);
void sldGain_Change(MyGUI::VScroll* _sender, size_t _position);
void sldPitch_Change(MyGUI::VScroll* _sender, size_t _position);
void sldMaxDistance_Change(MyGUI::VScroll* _sender, size_t _position);
void sldOuterConeGain_Change(MyGUI::VScroll* _sender, size_t _position);
void sldInnerConeAngle_Change(MyGUI::VScroll* _sender, size_t _position);
void sldOuterConeAngle_Change(MyGUI::VScroll* _sender, size_t _position);
void sldMaxGain_Change(MyGUI::VScroll* _sender, size_t _position);
void sldMinGain_Change(MyGUI::VScroll* _sender, size_t _position);
void sldRollOff_Change(MyGUI::VScroll* _sender, size_t _position);
void sldRefDistance_Change(MyGUI::VScroll* _sender, size_t _position);
void btnSoundCancel_Click(MyGUI::WidgetPtr _sender);
void btnSoundSave_Click(MyGUI::WidgetPtr _sender);
void cmbMeshList_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void rdoMeshSphereObstacle_Click(MyGUI::WidgetPtr _sender);
void rdoMeshBoxObstacle_Click(MyGUI::WidgetPtr _sender);
void chkMeshRandom_Click(MyGUI::WidgetPtr _sender);
void btnMeshPlace_Click(MyGUI::WidgetPtr _sender);
void btnMeshClose_Click(MyGUI::WidgetPtr _sender);
void sldMasterSpeed_Change(MyGUI::VScroll* _sender, size_t _position);
void chkPlayerShowLoS_Click(MyGUI::WidgetPtr _sender);
void chkPlayerShowBB_Click(MyGUI::WidgetPtr _sender);
void chkPlayerShowCC_Click(MyGUI::WidgetPtr _sender);
void cmbPlayerAllItems_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void btnPlayerAddItem_Click(MyGUI::WidgetPtr _sender);
void btnPlayerRemoveItem_Click(MyGUI::WidgetPtr _sender);
void cmbPlayerState_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void cmbPlayerTarget_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void cmbPlayerTeam_ComboAccept(MyGUI::ComboBox* _sender, size_t _index);
void btnPlayerCancel_Click(MyGUI::WidgetPtr _sender);
void btnPlayerSave_Click(MyGUI::WidgetPtr _sender);




m_BaseLayout->AssignWidget(_Main, "_Main");
m_BaseLayout->AssignWidget(cmbPlayers, "cmbPlayers");
m_BaseLayout->AssignWidget(btnAddPlayer, "btnAddPlayer");
m_BaseLayout->AssignWidget(btnAddPathPoint, "btnAddPathPoint");
m_BaseLayout->AssignWidget(cmbPaths, "cmbPaths");
m_BaseLayout->AssignWidget(btnPlacePhyBox, "btnPlacePhyBox");
m_BaseLayout->AssignWidget(btnPlaceObsBox, "btnPlaceObsBox");
m_BaseLayout->AssignWidget(btnAddWall, "btnAddWall");
m_BaseLayout->AssignWidget(btnPlaceObsSphere, "btnPlaceObsSphere");
m_BaseLayout->AssignWidget(cmbItemsInventory, "cmbItemsInventory");
m_BaseLayout->AssignWidget(btnPlaceItem, "btnPlaceItem");
m_BaseLayout->AssignWidget(btnAddMesh, "btnAddMesh");
m_BaseLayout->AssignWidget(btnSave, "btnSave");
m_BaseLayout->AssignWidget(txtFileName, "txtFileName");
m_BaseLayout->AssignWidget(cmbFileType, "cmbFileType");
m_BaseLayout->AssignWidget(btnLoadSceneFile, "btnLoadSceneFile");
m_BaseLayout->AssignWidget(txtSceneFile, "txtSceneFile");
m_BaseLayout->AssignWidget(btnPlacePlane, "btnPlacePlane");
m_BaseLayout->AssignWidget(cmbSoundFiles, "cmbSoundFiles");
m_BaseLayout->AssignWidget(btnAddSound, "btnAddSound");
m_BaseLayout->AssignWidget(frmGenProp, "frmGenProp");
m_BaseLayout->AssignWidget(txtPropertiesName, "txtPropertiesName");
m_BaseLayout->AssignWidget(btnPropertiesCancel, "btnPropertiesCancel");
m_BaseLayout->AssignWidget(btnPropertiesSave, "btnPropertiesSave");
m_BaseLayout->AssignWidget(btnPropReloadMaterial, "btnPropReloadMaterial");
m_BaseLayout->AssignWidget(txtGenPropPosX, "txtGenPropPosX");
m_BaseLayout->AssignWidget(txtGenPropPosY, "txtGenPropPosY");
m_BaseLayout->AssignWidget(txtGenPropPosZ, "txtGenPropPosZ");
m_BaseLayout->AssignWidget(txtGenPropScaleX, "txtGenPropScaleX");
m_BaseLayout->AssignWidget(txtGenPropScaleY, "txtGenPropScaleY");
m_BaseLayout->AssignWidget(txtGenPropScaleZ, "txtGenPropScaleZ");
m_BaseLayout->AssignWidget(btnPlay, "btnPlay");
m_BaseLayout->AssignWidget(btnPause, "btnPause");
m_BaseLayout->AssignWidget(frmSoundProp, "frmSoundProp");
m_BaseLayout->AssignWidget(sldGain, "sldGain");
m_BaseLayout->AssignWidget(sldPitch, "sldPitch");
m_BaseLayout->AssignWidget(sldMaxDistance, "sldMaxDistance");
m_BaseLayout->AssignWidget(sldOuterConeGain, "sldOuterConeGain");
m_BaseLayout->AssignWidget(sldInnerConeAngle, "sldInnerConeAngle");
m_BaseLayout->AssignWidget(sldOuterConeAngle, "sldOuterConeAngle");
m_BaseLayout->AssignWidget(txtSoundPositionX, "txtSoundPositionX");
m_BaseLayout->AssignWidget(txtSoundPositionY, "txtSoundPositionY");
m_BaseLayout->AssignWidget(txtSoundPositionZ, "txtSoundPositionZ");
m_BaseLayout->AssignWidget(sldMaxGain, "sldMaxGain");
m_BaseLayout->AssignWidget(sldMinGain, "sldMinGain");
m_BaseLayout->AssignWidget(txtSoundFileName, "txtSoundFileName");
m_BaseLayout->AssignWidget(sldRollOff, "sldRollOff");
m_BaseLayout->AssignWidget(sldRefDistance, "sldRefDistance");
m_BaseLayout->AssignWidget(txtSoundVelocityX, "txtSoundVelocityX");
m_BaseLayout->AssignWidget(txtSoundVelocityY, "txtSoundVelocityY");
m_BaseLayout->AssignWidget(txtSoundVelocityZ, "txtSoundVelocityZ");
m_BaseLayout->AssignWidget(txtSoundDirectionX, "txtSoundDirectionX");
m_BaseLayout->AssignWidget(txtSoundDirectionY, "txtSoundDirectionY");
m_BaseLayout->AssignWidget(txtSoundDirectionZ, "txtSoundDirectionZ");
m_BaseLayout->AssignWidget(btnSoundCancel, "btnSoundCancel");
m_BaseLayout->AssignWidget(btnSoundSave, "btnSoundSave");
m_BaseLayout->AssignWidget(frmMesh, "frmMesh");
m_BaseLayout->AssignWidget(cmbMeshList, "cmbMeshList");
m_BaseLayout->AssignWidget(rdoMeshSphereObstacle, "rdoMeshSphereObstacle");
m_BaseLayout->AssignWidget(rdoMeshBoxObstacle, "rdoMeshBoxObstacle");
m_BaseLayout->AssignWidget(chkMeshRandom, "chkMeshRandom");
m_BaseLayout->AssignWidget(txtMeshCount, "txtMeshCount");
m_BaseLayout->AssignWidget(btnMeshPlace, "btnMeshPlace");
m_BaseLayout->AssignWidget(btnMeshClose, "btnMeshClose");
m_BaseLayout->AssignWidget(txtMeshMinX, "txtMeshMinX");
m_BaseLayout->AssignWidget(txtMeshMinZ, "txtMeshMinZ");
m_BaseLayout->AssignWidget(txtMeshMaxX, "txtMeshMaxX");
m_BaseLayout->AssignWidget(txtMeshMaxZ, "txtMeshMaxZ");
m_BaseLayout->AssignWidget(sldMasterSpeed, "sldMasterSpeed");
m_BaseLayout->AssignWidget(frmPlayerProperties, "frmPlayerProperties");
m_BaseLayout->AssignWidget(txtPlayerName, "txtPlayerName");
m_BaseLayout->AssignWidget(chkPlayerShowLoS, "chkPlayerShowLoS");
m_BaseLayout->AssignWidget(chkPlayerShowBB, "chkPlayerShowBB");
m_BaseLayout->AssignWidget(chkPlayerShowCC, "chkPlayerShowCC");
m_BaseLayout->AssignWidget(lstPlayerItems, "lstPlayerItems");
m_BaseLayout->AssignWidget(cmbPlayerAllItems, "cmbPlayerAllItems");
m_BaseLayout->AssignWidget(btnPlayerAddItem, "btnPlayerAddItem");
m_BaseLayout->AssignWidget(btnPlayerRemoveItem, "btnPlayerRemoveItem");
m_BaseLayout->AssignWidget(cmbPlayerState, "cmbPlayerState");
m_BaseLayout->AssignWidget(cmbPlayerTarget, "cmbPlayerTarget");
m_BaseLayout->AssignWidget(cmbPlayerTeam, "cmbPlayerTeam");
m_BaseLayout->AssignWidget(btnPlayerCancel, "btnPlayerCancel");
m_BaseLayout->AssignWidget(btnPlayerSave, "btnPlayerSave");




cmbPlayers->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbPlayers_ComboAccept);
btnAddPlayer->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnAddPlayer_Click);
btnAddPathPoint->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnAddPathPoint_Click);
cmbPaths->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbPaths_ComboAccept);
btnPlacePhyBox->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlacePhyBox_Click);
btnPlaceObsBox->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlaceObsBox_Click);
btnAddWall->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnAddWall_Click);
btnPlaceObsSphere->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlaceObsSphere_Click);
cmbItemsInventory->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbItemsInventory_ComboAccept);
btnPlaceItem->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlaceItem_Click);
btnAddMesh->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnAddMesh_Click);
btnSave->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnSave_Click);
cmbFileType->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbFileType_ComboAccept);
btnLoadSceneFile->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnLoadSceneFile_Click);
btnPlacePlane->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlacePlane_Click);
cmbSoundFiles->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbSoundFiles_ComboAccept);
btnAddSound->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnAddSound_Click);
btnPropertiesCancel->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPropertiesCancel_Click);
btnPropertiesSave->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPropertiesSave_Click);
btnPropReloadMaterial->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPropReloadMaterial_Click);
btnPlay->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlay_Click);
btnPause->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPause_Click);
sldGain->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldGain_Change);
sldPitch->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldPitch_Change);
sldMaxDistance->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldMaxDistance_Change);
sldOuterConeGain->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldOuterConeGain_Change);
sldInnerConeAngle->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldInnerConeAngle_Change);
sldOuterConeAngle->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldOuterConeAngle_Change);
sldMaxGain->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldMaxGain_Change);
sldMinGain->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldMinGain_Change);
sldRollOff->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldRollOff_Change);
sldRefDistance->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldRefDistance_Change);
btnSoundCancel->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnSoundCancel_Click);
btnSoundSave->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnSoundSave_Click);
cmbMeshList->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbMeshList_ComboAccept);
rdoMeshSphereObstacle->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::rdoMeshSphereObstacle_Click);
rdoMeshBoxObstacle->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::rdoMeshBoxObstacle_Click);
chkMeshRandom->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::chkMeshRandom_Click);
btnMeshPlace->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnMeshPlace_Click);
btnMeshClose->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnMeshClose_Click);
sldMasterSpeed->eventScrollChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::sldMasterSpeed_Change);
chkPlayerShowLoS->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::chkPlayerShowLoS_Click);
chkPlayerShowBB->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::chkPlayerShowBB_Click);
chkPlayerShowCC->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::chkPlayerShowCC_Click);
cmbPlayerAllItems->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbPlayerAllItems_ComboAccept);
btnPlayerAddItem->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlayerAddItem_Click);
btnPlayerRemoveItem->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlayerRemoveItem_Click);
cmbPlayerState->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbPlayerState_ComboAccept);
cmbPlayerTarget->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbPlayerTarget_ComboAccept);
cmbPlayerTeam->eventComboChangePosition = MyGUI::newDelegate(this, &CLASS_NAME::cmbPlayerTeam_ComboAccept);
btnPlayerCancel->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlayerCancel_Click);
btnPlayerSave->eventMouseButtonClick = MyGUI::newDelegate(this, &CLASS_NAME::btnPlayerSave_Click);




void CLASS_NAME::cmbPlayers_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::btnAddPlayer_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnAddPathPoint_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::cmbPaths_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::btnPlacePhyBox_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPlaceObsBox_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnAddWall_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPlaceObsSphere_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::cmbItemsInventory_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::btnPlaceItem_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnAddMesh_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnSave_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::cmbFileType_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::btnLoadSceneFile_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPlacePlane_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::cmbSoundFiles_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::btnAddSound_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPropertiesCancel_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPropertiesSave_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPropReloadMaterial_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPlay_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPause_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::sldGain_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::sldPitch_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::sldMaxDistance_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::sldOuterConeGain_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::sldInnerConeAngle_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::sldOuterConeAngle_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::sldMaxGain_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::sldMinGain_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::sldRollOff_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::sldRefDistance_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::btnSoundCancel_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnSoundSave_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::cmbMeshList_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::rdoMeshSphereObstacle_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::rdoMeshBoxObstacle_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::chkMeshRandom_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnMeshPlace_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnMeshClose_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::sldMasterSpeed_Change(MyGUI::VScroll* _sender, size_t _position)
{
}
void CLASS_NAME::chkPlayerShowLoS_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::chkPlayerShowBB_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::chkPlayerShowCC_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::cmbPlayerAllItems_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::btnPlayerAddItem_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPlayerRemoveItem_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::cmbPlayerState_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::cmbPlayerTarget_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::cmbPlayerTeam_ComboAccept(MyGUI::ComboBox* _sender, size_t _index)
{
}
void CLASS_NAME::btnPlayerCancel_Click(MyGUI::WidgetPtr _sender)
{
}
void CLASS_NAME::btnPlayerSave_Click(MyGUI::WidgetPtr _sender)
{
}




From there you have all the declarations for a common layout, example all buttons found will be declared with the on click event declared and the method defined (empty). As you can see the output puts a few returns between every parent that contains controls, this makes is easier to find the specific code you need (I like to put every form in its own class).

This has saved me a lot of time in the past and as I build menu's etc, it will continue to be helpful, hope it's helpful for others too.