Ich habe ein Problem beim Coden meines Plugins. Hier mal ein Codeauszug:
void cSetupGeneral::SetMenu()
{
int current = Current();
Clear();
Add(new cMenuEditStraItem(tr("Stop VDR before play"), &m_tmpSetup->GeneralStopvdr, 3, StopvdrTexts));
Add(ctrl_Output = new cMenuEditStraItem(tr("Xmame output"), &m_tmpSetup->GeneralOutput, 4, OutputTexts));
if (m_tmpSetup->GeneralOutput == 1)
{
Add(new cMenuEditBoolItem(tr("Load config"), &m_tmpSetup->GeneralLoadconfig, tr("no"), tr("yes")));
}
Add(new cMenuEditBoolItem(tr("Cheatmode"), &m_tmpSetup->GeneralCheat, tr("no"), tr("yes")));
Add(new cMenuEditBoolItem(tr("Skip gameinfo"), &m_tmpSetup->GeneralSkipgameinfo, tr("no"), tr("yes")));
Add(new cMenuEditBoolItem(tr("Validate game drivers"), &m_tmpSetup->GeneralValidate, tr("no"), tr("yes")));
Add(new cMenuEditStraItem(tr("Bios"), &m_tmpSetup->GeneralBios, 12, BiosTexts));
Add(new cMenuEditStrItem("Load state", m_tmpSetup->GeneralState, 255, g_Allowed));
Add(new cMenuEditBoolItem(tr("Autosave state"), &m_tmpSetup->GeneralAutosave, tr("no"), tr("yes")));
SetCurrent(Get(current));
Display();
}
eOSState cSetupGeneral::ProcessKey(eKeys Key)
{
cOsdItem *item = Get(Current());
if (Key == kLeft || Key == kRight)
{
if (item == ctrl_Output)
{
SetMenu();
}
}
return cSetupSubMenu::ProcessKey(Key);
}
}
Alles anzeigen
Der Menüeintrag "Load config" soll nur kommen, wenn m_tmpSetup->GeneralOutput
1 ist.
Mein Problem ist, dass m_tmpSetup->GeneralOutput z. B. anfangs 1 ist. Ändere
ich diese Option mit "rechts", hab ich vom Text her 2.
m_tmpSetup->GeneralOutput ist aber dann immernoch 1, und wird erst beim
nächsten "rechts" auf 2 gesetzt. Der Text ist dann aber schon eine Position
weiter.
Add(new cMenuEditBoolItem(tr("Load config"), &m_tmpSetup->GeneralLoadconfig, tr("no"), tr("yes")));
wird also nur ausgeführt, wenn m_tmpSetup->GeneralOutput beim Betreten des
Menüs 1 ist, beim Ändern des Eintrags aber nur, wenn es vom Text her 2 ist.
Ich hab mir m_tmpSetup->GeneralOutput mal in eine Textdatei ausgeben lassen.
Ein paar Drücke auf "rechts" ergeben:
1 1 2 3
Warum 2mal 1? Korrekt wäre es, wenn 1 2 3 0 rauskäme. Aber wie gesagt, die
Texte sind immer richtig. Es wird in der setup.conf auch der richtige Wert gespeichert.
Mach ich da was falsch?