[wxWidgets] Pluginfähige Anwendung und Events
-
Hi Gate,
danke für den Vorschlag. Dies wäre natürlich eine Lösungsmöglichkeit. Allerdings bin ich der festen Überzeugung das es auch anderster (so ähnlich wie ich es habe) gehen muß.
-
Ja, da hast du wohl recht, gerade da du die Plugins aus einer dynamischen Lib lädst, solltest du die Events zu deinen Plugins leiten können. Qie siegts denn aus wenn du die Connect()-Methode für die Events benutzt? Allerdings müssten deine Plugins dann wohl von wxEventHandler ableiten. Hmm, sorry ich kann dir wohl nicht weiterhelfen.
-
Gate schrieb:
Ja, da hast du wohl recht, gerade da du die Plugins aus einer dynamischen Lib lädst, solltest du die Events zu deinen Plugins leiten können. Qie siegts denn aus wenn du die Connect()-Methode für die Events benutzt? Allerdings müssten deine Plugins dann wohl von wxEventHandler ableiten. Hmm, sorry ich kann dir wohl nicht weiterhelfen.
Also, das Basis Plugin ist von der Klasse wxEventHandler abgeleitet und der Connect auf den Menüpunkt ist ebenfalls gesetzt. Aber anscheinend wird das ganze einfach nicht aufgerufen.
Schauen wir mal, vielleicht hat ja noch jemand anderes ne Lösungsidee. Über die Feiertage wird eventuell nicht unbedingt noch viel hier rumkommen, da die meisten ja weggefahren sind oder keine Zeit haben, aber ich geh mal davon aus nächstes Jahrvielleicht noch ne gute Idee zu kriegen.
-
Hat wirklich niemand anderes noch eine Idee für eine Lösung?!
-
Vielleicht hilft dir dieser Thread weiter:
http://wxforum.shadonet.com/viewtopic.php?t=8803
-
phlox81 schrieb:
Vielleicht hilft dir dieser Thread weiter:
http://wxforum.shadonet.com/viewtopic.php?t=8803Leider Nein. In dem Thread wird nur ein Element aus dem Plugin der Hauptapplikation hinzugefügt, was bei mir ja ebenfalls funktioniert. Nur das Event wird nicht ausgelöst wenn man drauf drückt.
Hier hab ich auch mal nen Thread (http://wxforum.shadonet.com/viewtopic.php?t=22392) aufgemacht. Wenn ich Recht verstanden habe, hats bei JimFairway funktioniert.
-
Linkst du dynamisch?
-
phlox81 schrieb:
Linkst du dynamisch?
Die DLL wird per wxDynamicLibrary geladen, oder meinst du das wxWidget Framework?
Betriebssystem ist Ubuntu 8.04 LTS, falls dir dies irgendwie weiterhilft?!
-
meinte wxWidgets.
-
Müsste meines wissens nach dynamisch sein...
-
In der wxDoku steht folgendes :
If the menu is part of a menubar, then wxMenuBar event processing is used.
In deinem Fall sollte also ein
pMenuBar->Connect(...)
genügen.
Die Connect-Routinen funktionieren immer, nur die Event-Emitter nicht immer trivial ersichtlich.
Gruß
wxNurF
-
@nurf
Danke, den Satz hab ich wohl übersehen.
Naja, hab das ganze nun mal abgeändert, aber passieren tut dennoch nichts. Es bleibt somit leider alles beim alten.
-
Ja das kenne ich zu gut.
Das wxEventSystem ist nicht trivial ...Am besten meldest du dich mal per ICQ bei mir.
Ansonsten kann ich pauschal noch debuggen empfehlen, das hilft nicht immer, aber in manchen Fällen, wird das wxEventProcessing klarer (internals).
-
Vielleicht postest du einfach mal den entsprechenden Code.
Weil so können wir auch nur rumraten.
-
phlox81 schrieb:
Vielleicht postest du einfach mal den entsprechenden Code.
Weil so können wir auch nur rumraten.Hier mal der Code der geänderten Funktion. Wenn noch mehr Code benötigt wird, einfach bescheid sagen...
void MyPlugin::CreateMenu(wxMenuBar *pMenuBar) { wxMenu *pPluginMenu = new wxMenu(); pPluginMenu->Append(1000, wxT("MyPlugin1")); pMenuBar->Append(pPluginMenu, wxT("Plugins")); pMenuBar->Connect( 1000, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyPlugin::OnMenuClicked), NULL, this ); }
@nurf
Kann ich machen, kann aber ein paar Tage dauern...
-
Ähm, ist das denn der richtige Event für Menüs?
-
phlox81 schrieb:
Ähm, ist das denn der richtige Event für Menüs?
Ich denke doch mal schon. Es passier aber auch nichts wenn ich das ganze durch wxEVT_COMMAND_MENU_SELECTED ersetze...
-
guenni81 schrieb:
phlox81 schrieb:
Ähm, ist das denn der richtige Event für Menüs?
Ich denke doch mal schon. Es passier aber auch nichts wenn ich das ganze durch wxEVT_COMMAND_MENU_SELECTED ersetze...
Ja, wxEVT_COMMAND_MENU_SELECTED ist der korrekte event. Was sagt denn der Debugger?
-
phlox81 schrieb:
Ja, wxEVT_COMMAND_MENU_SELECTED ist der korrekte event. Was sagt denn der Debugger?
Ich werden den Debugger mal dazu befragen, kann aber ein bisschen dauern bis ich das Ergebnis habe und mich wieder melden würde.
-
OK, der Debugger sagt eigentlich nur folgendes:
Starting program: /home/guenni/Projekte/PluginApp/debug/src/pluginapp
[Thread debugging using libthread_db enabled]
[New Thread 0xb668d6c0 (LWP 11635)]Program exited normally.
Passieren tut irgendwie absolut gar nix. Es sieht nach wie vor so aus als würde er die Funktion in der dll/so Datei erst gar nicht aufrufen...