[Info gesucht] GTK+ und GTKmm



  • Hallo Leute.
    Also falls ich richtig liege ist GTK+ in C geschrieben und GTKmm ein OOP/C++ Wrapper für GTK+, stimmts? Zu einer meinen Fragen:
    1.) GTKmm ist ja auch portiert für Windows und Mac, wie siehts mit GTK+ da aus?
    2.) Nehmen wir mal an wir hätten eine GUI Lib in C++(OOP) für Windows geschrieben und wollten sie jetzt für Linux insbesondere Gnome portieren, würde man da GTK+ oder GTKmm benutzen?

    Mfg Wikinger75!



  • GTKmm ist ein Wrapper, das ist schon richtig, aber GTK+ ist auch objektorientiert (trotz C). Die Sprachintegration ins funktionale C ist allerdings nicht so schön, da bieten die meisten Wrapper (z.Bsp. C++) eine etwas schönere Syntax.

    zu 1) Warum sollte ein Wrapper portiert sein, aber nicht der Untersatz?!? Sicher ist GTK+ portiert. Falls du das nicht glaubst: http://de.wikipedia.org/wiki/GTK%2B (Zitat: "Betriebssystem: Unix, GNU/Linux, Mac OS X (beta), Windows"). Das GTK sieht aber auf Windows und Mac nicht besonders schön aus.
    2) Da GNOME auf GTK+ basiert, bietet es sich natürlich an GTK+ zu verwenden. Generell ist es natürlich besser, einen Wrapper für GTK+ zu schreiben, anstatt einen Wrapper für den Wrapper von GTK+.



  • Dann ist ja alles gut.

    Das GTK sieht aber auf Windows und Mac nicht besonders schön aus.

    Gibs da Screenshots?

    Generell ist es natürlich besser, einen Wrapper für GTK+ zu schreiben, anstatt einen Wrapper für den Wrapper von GTK+.

    Ja gut das ergibt natürlich sinn, also GTK+ zur portierung 😃

    Mfg Wikinger75!



  • Probiere doch ein GIMP unter Windows aus, das benutzt GTK+.



  • Wikinger75 schrieb:

    2.) Nehmen wir mal an wir hätten eine GUI Lib in C++(OOP) für Windows geschrieben und wollten sie jetzt für Linux insbesondere Gnome portieren, würde man da GTK+ oder GTKmm benutzen?

    Ich frag einfach mal nach, was du unter "Gui Lib" verstehst. Hast du in C++ wirklich selber eine eigene Widget-Klasse samt Subklassen ala Button, Combobox, LineEdit, TextEdit sowie Klassen und Interfaces für Eventhandling etc. geschrieben? Also im Prinzip genau das gemacht, was gtkmm schon erledigt?

    Oder einfach nur eine Bibliothek mit einer Hand voll Custom-Widgets für die Anzeige spezieller Daten, z.B. ein Balkendiagramm, Netzwerktraffic-Visualisierung, etc, was bisher auf Windows-eigenen Methoden aufbaut?

    Für ersteres wäre gtk+ statt gtkmm zu bevorzugen.
    Falls letzteres, wäre es in meinen Augen besset, die GTKmm zu verwenden. Das gliedert sich syntaktisch einfach angenehmer in dein C++-Projekt ein. Und es ist ja kein Wrapper um einen Wrapper (um einen Wrapper, denn GTK+ wrappt ja auch nur Plattformeigene APIs wie WIN-API, X11, etc) mehr.
    Alternativ ist natürlich auch ein Blick auf Qt Wert. Da gibt es seit ein paar Releases einen nativen GTK-Stil. Damit schaut Qt unter Gnome genau so aus wie jedes andere GTK-Programm. Und Qt schaut sowieso unter Windows aus wie ein natives Windows-Programm, ebenso unter Mac.



  • Ich frag einfach mal nach, was du unter "Gui Lib" verstehst. Hast du in C++ wirklich selber eine eigene Widget-Klasse samt Subklassen ala Button, Combobox, LineEdit, TextEdit sowie Klassen und Interfaces für Eventhandling etc. geschrieben? Also im Prinzip genau das gemacht, was gtkmm schon erledigt?

    Oder einfach nur eine Bibliothek mit einer Hand voll Custom-Widgets für die Anzeige spezieller Daten, z.B. ein Balkendiagramm, Netzwerktraffic-Visualisierung, etc, was bisher auf Windows-eigenen Methoden aufbaut?

    Ähm nein ich habe noch keine geschrieben, aber ich beschäftige mich grad ein bisjen mit der Theorie. Zudemm was ich unter einer Gui Lib verstehe: das Erste 😉

    Für ersteres wäre gtk+ statt gtkmm zu bevorzugen.
    Falls letzteres, wäre es in meinen Augen besset, die GTKmm zu verwenden. Das gliedert sich syntaktisch einfach angenehmer in dein C++-Projekt ein. Und es ist ja kein Wrapper um einen Wrapper (um einen Wrapper, denn GTK+ wrappt ja auch nur Plattformeigene APIs wie WIN-API, X11, etc) mehr.
    Alternativ ist natürlich auch ein Blick auf Qt Wert. Da gibt es seit ein paar Releases einen nativen GTK-Stil. Damit schaut Qt unter Gnome genau so aus wie jedes andere GTK-Programm. Und Qt schaut sowieso unter Windows aus wie ein natives Windows-Programm, ebenso unter Mac.

    Ah, also wäre es doch besser GTKmm zu benutzen, da es sich wegen seiner schon vorhandenen Objektierung besser einbauen lässt?

    Mfg Wikinger75!



  • Wikinger75 schrieb:

    Ähm nein ich habe noch keine geschrieben, aber ich beschäftige mich grad ein bisjen mit der Theorie. Zudemm was ich unter einer Gui Lib verstehe: das Erste 😉

    Also wir nehmen an du hast eine Gui-Lib geschrieben, nur für Windows bisher, und möchtest das jetzt portieren nach Linux (am besten Gnome). Aber du hast das noch gar nicht geschrieben, sondern du willst und beschäftigst dich im Moment etwas damit - dann versteh ich dein Problem nicht, da gibt es ja nochgar nix zu portieren 😃

    Also nochmal: Du hast eine Portierung einer Gui-Lib von Windows nach Linux durchzuführen. Diese Lib ist in C++ geschrieben, und ist genau so etwas wie Qt, Gtkmm, wxWidgets, etc. Ist das korrekt?

    Dann nimm gtk! Ein weiterer Wrapper um nen Wrapper geht mit der Zeit auf die Performance!

    Für alles andere: GTKmm. Oder eben direkt X11/WinAPI selber Wrappen, so wie es GTK macht, oder Qt...
    Für GTK gibt es schon genug Wrapper (GTKmm, wxGTK)

    Weshalb aber noch unbedingt ein weiteres Toolkit (bzw. Wrapper) her muss verschließt sich mir 😉
    Wir haben
    * Qt4 (mein Favorit), auf wirklich vielen Plattformen verfügbar.
    * GTKmm, ebenfalls auf vielen Plattformen verfügar.
    * wxWidget, ebenso.
    * FOX-Toolkit, ebenso
    * vieles mehr.
    Wenn es ein rein akademisches Vorhaben ist viel Spaß 😃


Anmelden zum Antworten