-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Martin Preuss schrieb:
> [...]
>> Kannst du eine Anleitung geben, wie eine bisher auf AB_Banking
>> basierende callback-GUI nun ins gwen3-framework umgesetzt wird?
> [...]
> 
> Du musst im einfachsten Fall lediglich ein Objekt mittels GWEN_Gui_new() 
> erstellen, dann die einzelnen Callbacks setzen (z.B. 
> GWEN_Gui_SetMessageBoxFn), und anschliessend GWEN_Gui_SetGui() aufrufen, um 
> diese GUI-Implementierung zur aktiven zu machen.

Im Prinzip okay. Nur eine Unklarheit: Wie kommt denn die Verknüpfung vom
AB_BANKING-Objekt zum neu gesetzten GWEN_GUI-Objekt zustande? Sprich,
woher weiß das AB_BANKING Objekt, von welchem GWEN_GUI-Objekt es nun die
callbacks aufruft? .... oooooh. Ich entdecke gerade, dass du in gui.c
das GWEN_GUI als static variable (also prozessweit) ablegen willst, und
deshalb in gui.h die tatsächlichen Aufrufe wie GWEN_Gui_MessageBox dann
ohne eigenes GWEN_GUI Objekt aufgerufen werden.

Uuuups.

Das finde ich, sorry, gar nicht gut. Ich bitte imständig darum, dass du
gerade bei dieser Interaktivitäts-Sache die Interaction-Funktionen
*immer* mit zugehörigem Objekt aufrufst. Dass also ein AB_BANKING-Objekt
auch (woher auch immer) einen Pointer auf sein eigenes GWEN_GUI-Objekt
hat und dieses bei jedem Aufruf einer Interaction-Funktion auch übergibt.

Wenn du das an dieser Stelle über die statische Variable laufen lassen
lässt, geht das gesamte Objektorientierte framework den Bach runter,
denn durch diese eine statische Variable werden nun alle (backends wie
apps) dazu gezwungen, so zu programmieren, dass man auf diese statische
Variable eingestellt ist.

Spontanes Beispielszenario aus gnucash: User macht ein
Online-Action-Fenster auf (welches ggf. ein log-widget enthält),
überlegt es sich anders und macht noch ein zweites auf. Bisher sind dann
durch die jeweils vorhandenen Pointer auf eigene GUI-Objekte die
callbacks trotzdem bei den richtigen GUI-Objekten angekommen (z.B. den
log-widgets), weil eben das fälschlicherweise unbenutzte Fenster dann
ein anderes Objekt war und jeder hatte seine korrekten Pointer. Mit der
statischen variable dagegen würde es ein riesen-Durcheinander geben: wer
ist dann für delete von welchen Objekten zuständig; was passiert, wenn
das zweite Fenster dann doch abgebrochen wird und das erste wieder
benutzt wird oder doch andersrum; etc.

Letztlich verhalten sich User nun mal nicht-deterministisch und deshalb
sollte jede Programmier-Repräsentation auch eine korrekte Trennung von
potentiell parallel möglichen Operationen enthalten. Durch diese
statische Variable seh ich das nicht mehr gegeben.

Gruß

Christian

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iQCVAwUBRbiTQWXAi+BfhivFAQIFRAP/ZXt2fWTg/Nyl1/hS7qd4IdWJJ0pQc2/8
u6MWmjKvXkrOoTd5D4ZF22ZNWa0juImTmDqc33bFYBMc5ucBk4pAyE9Q0pkWUGXw
rdXly3iYzXGor0dUDRj0FOByNRcRUuAJ7GxygtAGL8WM7kWiNmPxphUFFvnhto+U
OD0dt1DHRNQ=
=uowO
-----END PGP SIGNATURE-----

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Aqbanking-devel mailing list
Aqbanking-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/aqbanking-devel

Reply via email to