- added error handling for keyboard menu to see if we get this far in windows
This commit is contained in:
parent
4eb5879d04
commit
9104141efe
|
@ -31,91 +31,103 @@ namespace Glest{ namespace Game{
|
||||||
MenuStateKeysetup::MenuStateKeysetup(Program *program, MainMenu *mainMenu):
|
MenuStateKeysetup::MenuStateKeysetup(Program *program, MainMenu *mainMenu):
|
||||||
MenuState(program, mainMenu, "config")
|
MenuState(program, mainMenu, "config")
|
||||||
{
|
{
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
try {
|
||||||
containerName = "KeySetup";
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
containerName = "KeySetup";
|
||||||
|
|
||||||
hotkeyIndex = -1;
|
hotkeyIndex = -1;
|
||||||
hotkeyChar = 0;
|
hotkeyChar = 0;
|
||||||
|
|
||||||
Lang &lang= Lang::getInstance();
|
Lang &lang= Lang::getInstance();
|
||||||
int buttonRowPos=80;
|
int buttonRowPos=80;
|
||||||
// header
|
// header
|
||||||
labelTitle.registerGraphicComponent(containerName,"labelTitle");
|
labelTitle.registerGraphicComponent(containerName,"labelTitle");
|
||||||
labelTitle.init(330,700);
|
labelTitle.init(330,700);
|
||||||
labelTitle.setFont(CoreData::getInstance().getMenuFontBig());
|
labelTitle.setFont(CoreData::getInstance().getMenuFontBig());
|
||||||
labelTitle.setText(lang.get("Keyboardsetup"));
|
labelTitle.setText(lang.get("Keyboardsetup"));
|
||||||
|
|
||||||
// mainMassegeBox
|
// mainMassegeBox
|
||||||
mainMessageBox.registerGraphicComponent(containerName,"mainMessageBox");
|
mainMessageBox.registerGraphicComponent(containerName,"mainMessageBox");
|
||||||
mainMessageBox.init(lang.get("Ok"));
|
mainMessageBox.init(lang.get("Ok"));
|
||||||
mainMessageBox.setEnabled(false);
|
mainMessageBox.setEnabled(false);
|
||||||
mainMessageBoxState=0;
|
mainMessageBoxState=0;
|
||||||
|
|
||||||
keyScrollBar.init(800,200,false,200,20);
|
keyScrollBar.init(800,200,false,200,20);
|
||||||
keyScrollBar.setLength(400);
|
keyScrollBar.setLength(400);
|
||||||
keyScrollBar.setElementCount(0);
|
keyScrollBar.setElementCount(0);
|
||||||
keyScrollBar.setVisibleSize(keyButtonsToRender);
|
keyScrollBar.setVisibleSize(keyButtonsToRender);
|
||||||
keyScrollBar.setVisibleStart(0);
|
keyScrollBar.setVisibleStart(0);
|
||||||
|
|
||||||
|
|
||||||
// buttons
|
// buttons
|
||||||
buttonOk.registerGraphicComponent(containerName,"buttonOk");
|
buttonOk.registerGraphicComponent(containerName,"buttonOk");
|
||||||
buttonOk.init(200, buttonRowPos, 100);
|
buttonOk.init(200, buttonRowPos, 100);
|
||||||
buttonOk.setText(lang.get("Ok"));
|
buttonOk.setText(lang.get("Ok"));
|
||||||
|
|
||||||
buttonDefaults.registerGraphicComponent(containerName,"buttonDefaults");
|
buttonDefaults.registerGraphicComponent(containerName,"buttonDefaults");
|
||||||
buttonDefaults.init(310, buttonRowPos, 100);
|
buttonDefaults.init(310, buttonRowPos, 100);
|
||||||
buttonDefaults.setText(lang.get("Defaults"));
|
buttonDefaults.setText(lang.get("Defaults"));
|
||||||
|
|
||||||
buttonReturn.registerGraphicComponent(containerName,"buttonReturn");
|
buttonReturn.registerGraphicComponent(containerName,"buttonReturn");
|
||||||
buttonReturn.init(420, buttonRowPos, 100);
|
buttonReturn.init(420, buttonRowPos, 100);
|
||||||
buttonReturn.setText(lang.get("Abort"));
|
buttonReturn.setText(lang.get("Abort"));
|
||||||
|
|
||||||
keyButtonsLineHeight=25;
|
keyButtonsLineHeight=25;
|
||||||
keyButtonsHeight=20;
|
keyButtonsHeight=20;
|
||||||
keyButtonsWidth=200;
|
keyButtonsWidth=200;
|
||||||
keyButtonsXBase=300;
|
keyButtonsXBase=300;
|
||||||
keyButtonsYBase=200+400-keyButtonsLineHeight;
|
keyButtonsYBase=200+400-keyButtonsLineHeight;
|
||||||
keyButtonsToRender=400/keyButtonsLineHeight;
|
keyButtonsToRender=400/keyButtonsLineHeight;
|
||||||
int labelWidth=100;
|
int labelWidth=100;
|
||||||
|
|
||||||
Config &configKeys = Config::getInstance(std::pair<ConfigType,ConfigType>(cfgMainKeys,cfgUserKeys));
|
Config &configKeys = Config::getInstance(std::pair<ConfigType,ConfigType>(cfgMainKeys,cfgUserKeys));
|
||||||
mergedProperties=configKeys.getMergedProperties();
|
mergedProperties=configKeys.getMergedProperties();
|
||||||
masterProperties=configKeys.getMasterProperties();
|
masterProperties=configKeys.getMasterProperties();
|
||||||
//userProperties=configKeys.getUserProperties();
|
//userProperties=configKeys.getUserProperties();
|
||||||
userProperties.clear();
|
userProperties.clear();
|
||||||
|
|
||||||
for(int i = 0; i < mergedProperties.size(); ++i) {
|
//throw runtime_error("Test!");
|
||||||
|
|
||||||
string keyName = mergedProperties[i].second;
|
for(int i = 0; i < mergedProperties.size(); ++i) {
|
||||||
if(keyName.length() > 0) {
|
|
||||||
SDLKey keysym = static_cast<SDLKey>(configKeys.translateStringToCharKey(keyName));
|
string keyName = mergedProperties[i].second;
|
||||||
// SDL skips capital letters
|
if(keyName.length() > 0) {
|
||||||
if(keysym >= 65 && keysym <= 90) {
|
SDLKey keysym = static_cast<SDLKey>(configKeys.translateStringToCharKey(keyName));
|
||||||
keysym = (SDLKey)((int)keysym + 32);
|
// SDL skips capital letters
|
||||||
}
|
if(keysym >= 65 && keysym <= 90) {
|
||||||
keyName = SDL_GetKeyName(keysym);
|
keysym = (SDLKey)((int)keysym + 32);
|
||||||
if(keyName == "unknown key") {
|
}
|
||||||
keyName = mergedProperties[i].second;
|
keyName = SDL_GetKeyName(keysym);
|
||||||
|
if(keyName == "unknown key") {
|
||||||
|
keyName = mergedProperties[i].second;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GraphicButton *button=new GraphicButton();
|
||||||
|
button->init(keyButtonsXBase, keyButtonsYBase, keyButtonsWidth,keyButtonsHeight);
|
||||||
|
button->setText(mergedProperties[i].first);
|
||||||
|
keyButtons.push_back(button);
|
||||||
|
GraphicLabel *label=new GraphicLabel();
|
||||||
|
label->init(keyButtonsXBase+keyButtonsWidth+10,keyButtonsYBase,labelWidth,20);
|
||||||
|
label->setText(keyName);
|
||||||
|
labels.push_back(label);
|
||||||
}
|
}
|
||||||
|
|
||||||
GraphicButton *button=new GraphicButton();
|
keyScrollBar.init(keyButtonsXBase+keyButtonsWidth+labelWidth+20,200,false,200,20);
|
||||||
button->init(keyButtonsXBase, keyButtonsYBase, keyButtonsWidth,keyButtonsHeight);
|
keyScrollBar.setLength(400);
|
||||||
button->setText(mergedProperties[i].first);
|
keyScrollBar.setElementCount(keyButtons.size());
|
||||||
keyButtons.push_back(button);
|
keyScrollBar.setVisibleSize(keyButtonsToRender);
|
||||||
GraphicLabel *label=new GraphicLabel();
|
keyScrollBar.setVisibleStart(0);
|
||||||
label->init(keyButtonsXBase+keyButtonsWidth+10,keyButtonsYBase,labelWidth,20);
|
|
||||||
label->setText(keyName);
|
|
||||||
labels.push_back(label);
|
|
||||||
}
|
}
|
||||||
|
catch(const std::exception &ex) {
|
||||||
|
char szBuf[4096]="";
|
||||||
|
sprintf(szBuf,"In [%s::%s %d] Error detected:\n%s\n",__FILE__,__FUNCTION__,__LINE__,ex.what());
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugError,szBuf);
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"%s",szBuf);
|
||||||
|
|
||||||
keyScrollBar.init(keyButtonsXBase+keyButtonsWidth+labelWidth+20,200,false,200,20);
|
mainMessageBoxState=1;
|
||||||
keyScrollBar.setLength(400);
|
showMessageBox( "Error: " + string(ex.what()), "Error detected", false);
|
||||||
keyScrollBar.setElementCount(keyButtons.size());
|
}
|
||||||
keyScrollBar.setVisibleSize(keyButtonsToRender);
|
|
||||||
keyScrollBar.setVisibleStart(0);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user