Die endlose Geschichte der GUI-Libraries



  • 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 😉


Anmelden zum Antworten