Hab gerade ein Wenig Probleme mit Pointern auf eSetupWindows und eWindows. Ich instantiiere in plugin_exec() ein eSetupWindow folgendermaßen:
Die eMenu- Klasse sieht so aus:
eMenu::eMenu():eSetupWindow(_("Menu"), 3, 280)
{
int entry = 0;
CONNECT_2_1((new eListBoxEntryMenu(&list, (_("Open First Window")), eString().sprintf("(%d) %s", ++entry, _("foo"))))->selected, eMenu::createMyWindow, new FirstWindow);
CONNECT_2_1((new eListBoxEntryMenu(&list, (_("Open Second Window")), eString().sprintf("(%d) %s", ++entry, _("foo"))))->selected, eMenu::createMyWindow, new SecondWindow);
setupHook(this, &entry);
}
createMyWindow ist eine Funktion, die ich gernen benutzen möchte um beliebige neue Fenster zu erzeugen, damit das Ganze dynamisch funktioniert, sie sieht so aus:
void eMenu::createMyWindow(eWidget *w)
{
this->hide();
w->show();
w->exec();
w->hide();
this->show();
delete w;
}
Soweit so gut, allerdings verabschiedet sich enigma immer, wenn ich einen Menüpunkt wähle, FirstWindow oder SecondWindow erscheint, zugeht und ich es erneut aufrufe - und ich hab keinen Plan darum - an den Fenstern selbst liegt es nicht, da wenn ich die Windows nicht mit new instantiiere alles wunderbar klappt. Also wenn ich alle Fenster so aufrufe:
stürzt gar nichts ab, ABER das ganze ist dadurch natürlich nicht mehr so schön dynamisch machbar, wie ich mir das vorstelle, sprich man braucht für jeden Menüpunkt eine Callbackfunktion, in der obere Codeblock ausgeführt wird, was zu sehr viel in meinen Augen redundantem Code führt.
Hat jemand ne Ahnung was da falsch läuft, oder lassen sich eSetupWindow und Konsorten generell nicht problemlos per new erzeugen?