Die endlose Geschichte der GUI-Libraries
-
So, habe mich an das FOX-Tutorial rangemacht. Es werden tatsächlich Makros eingesetzt, die ich gegenüber anderen makroverseuchten GUIs ala wxWidgets ehrlich nicht sichten konnte. Im Prinzip benutzt FOX irgendwie eine merkwürdige Kombination. Enums und Objekte werden für Messages und Events hin und her geschickt, was ich für i.O. halte. Auf der anderen Seite wird für widerkehrende Aufgaben Makros benutzt:
The macro FXDECLARE(ScribbleWindow) declares a number of member functions which every object derived from FXObject should have; we've used a macro as it is always the same, and more convenient to program this way.
Werde mal in dem Tutorial weiter machen und schauen was noch so passiert. Trotzdem denke ich momentan noch das FOX-Toolkit gegenüber anderen GUI-Libs runder ist. Runter laden und loslegen!
Die Makros hätte man sich sicherlich ersparen können... sehr wünschenswert!!!
Aber wie mein Topic-Titel (leider) irgendwie voraus gesehen hat: es ist anscheinend wirklich eine endlose Geschichte?!
-
Von namespaces hat das Fox-Toolkit wohl auch noch nix gehört...
-
namespace schrieb:
Von namespaces hat das Fox-Toolkit wohl auch noch nix gehört...
Trifft aber auf alle mir bekannten GUI-Libs zu.
-
VCF pack alles in den Namensraum VCF. Auch sonst finde ich es recht sauber und Makros scheinen auch eher die Ausnahme zu sein. Das einzige was mich dran stört ist das es noch in der Entwicklung ist und ausser VC eignetlich noch nichts so wirklich einbahnfrei läuft. Hat aber Potenzial.
-
Walli schrieb:
namespace schrieb:
Von namespaces hat das Fox-Toolkit wohl auch noch nix gehört...
Trifft aber auf alle mir bekannten GUI-Libs zu.
gtkmm verwendet jedenfalls namespace anstelle Prefixes.
-
FOX benutzt auch einen Namespace genannt FX. Das Prefix FX ist trotzdem vor jedem Klassennamen.
-
schrecklich
-
Artchi schrieb:
So, habe mich an das FOX-Tutorial rangemacht. Es werden tatsächlich Makros eingesetzt, die ich gegenüber anderen makroverseuchten GUIs ala wxWidgets ehrlich nicht sichten konnte. Im Prinzip benutzt FOX irgendwie eine merkwürdige Kombination.
Ah ja. Genau,
FXDEFMAP(FXGLViewer) FXGLViewerMap[]={ FXMAPFUNC(SEL_PAINT,0,FXGLViewer::onPaint), .... FXMAPFUNCS(SEL_UPDATE,MINKEY,MAXKEY,FXGLViewer::onUpdAll), };
hat in der Tat (mindestens) ein Makro weniger als
BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU (wxID_EXIT, MyFrame::OnExit) EVT_MENU (DO_TEST, MyFrame::DoTest) EVT_SIZE ( MyFrame::OnSize) EVT_BUTTON (BUTTON1, MyFrame::OnButton1) END_EVENT_TABLE()
Und diese elegante Mischung aus Makros und einem ordentlichem Array ist auch sehr intuitiv und geschmeidig.
Im Vergleich dazu der Ansatz mittels libsigc++ der gtkmm wohl kaum noch diskussionswürdig...Artchi schrieb:
Enums und Objekte werden für Messages und Events hin und her geschickt, was ich für i.O. halte.
Volle Zustimmung, die Message-IDs und Event-Objekte der FOX Message Map sind den Message-IDs und Event-Objekten der wxWidgets Message Map haushoch überlegen.
Artchi schrieb:
Auf der anderen Seite wird für widerkehrende Aufgaben Makros benutzt:
The macro FXDECLARE(ScribbleWindow) declares a number of member functions which every object derived from FXObject should have; we've used a macro as it is always the same, and more convenient to program this way.
Sehe ich genauso. FXDECLARE ist viel kürzer und deutlicher und angenehmer zu schreiben als DECLARE_CLASS; gleiches gilt natürlich für FXIMPLEMENT und IMPLEMENT_CLASS, also schon zwei Vorteile.
Artchi schrieb:
FOX benutzt auch einen Namespace genannt FX. Das Prefix FX ist trotzdem vor jedem Klassennamen.
Ja, das macht Sinn. Wobei ich denke dass "der Windowsler" an sich ein CFX oder evtl. C_FX Präfix bevorzugen würde, da ist also noch Spielraum für Verbesserung.
(NB: Sarkasmusfreie Textpassagen gehören mir allein, der Rest steht, aus Mentalitätsgründen, unter der GNU Free Documentation License der Allgemeinheit zur Verfügung
)
-
Volle Zustimmung, die Message-IDs und Event-Objekte der FOX Message Map sind den Message-IDs und Event-Objekten der wxWidgets Message Map haushoch überlegen.
Sarkasmus oder Standart?
-
cd9000 schrieb:
Walli schrieb:
namespace schrieb:
Von namespaces hat das Fox-Toolkit wohl auch noch nix gehört...
Trifft aber auf alle mir bekannten GUI-Libs zu.
gtkmm verwendet jedenfalls namespace anstelle Prefixes.
Die ist mir ja auch nicht bekannt