cox: GUI Bibliothek für C++
-
Die Algierlib, die Artchi vor zwei Jahren (und zwei Tagen) veröffentlichte, hat mich auf die Idee gebracht, es auch einmal an einem GUI Toolkit zu versuchen. Meine Ziele sind jedoch weniger hochgestochen und ich wollte es bei einem Lernprojekt bewenden lassen. Mittlerweile finde ich das Ergebnis so interessant, dass ich gerne ein paar Rückmeldungen hätte.
Worum geht es?
1. Eine Bibliothek die GUI-Funktionen bereit stellt.
2. Plattformunabhängige Schnittstelle in C++11.
3. Dünner (und schneller?) Wrapper um andere GUI-Toolkits.
4. Qt und GTK+ werden zurzeit unterstützt.
5. Kompilliert zumindest mit dem GCC 4.6 auf Linux.
7. Name der Bibliothek: cox (abgeleitet von C++0x).
8. Open-Source-Lizenz: LGPL.Welche Ziele habe ich mir gesetzt?
1. Schönes C++-Design. Ziel war, kurzen und klaren Nutzercode zu ermöglichen.
2. Modernes C++. Ich versuchte, die Move-Semantik auszuloten (das erstaunliche Ergebnis war, dass RAII gestärkt wurde).
3. MVC (Model View Controller) wird unterstützt.Auf eine umfangreiche Dokumentation hatte ich keine Lust, der Quellcode der Beispielprogramme stellt einen (kleinen) Ersatz dar.
Projektseite: https://github.com/sqjk/cox
Weitere Pläne damit habe ich noch nicht, was ich damit anfange hat mit eurem Feedback zu tun. Also bitte, schaut es euch mal an!Schöne Grüsse
-
cox::window example1() { cox::window mainwin; mainwin.retitle("Hello world"); mainwin.resize(cox::px(300), cox::px(200)); auto& b = mainwin.emplace<cox::button>("Quit"); // only a reference, the // real owner is mainwin. // events are supported using Boost.Signal b.on_click().connect([](cox::button& b) { b.parent_window().close(); }); return std::move(mainwin); // movable }
Das sieht verdammt lecker aus
Werde es mir nachher mal anschauen, gerade deine properties interessieren mich auch.
MfG
-
/rant/ schrieb:
Das sieht verdammt lecker aus
Dass sieht aus als wolle er den Code extra kompliziert machen, damit ihn keiner rafft.
-
Kóyaánasqatsi schrieb:
Dass sieht aus als wolle er den Code extra kompliziert machen, damit ihn keiner rafft.
Wenn sich das "dass" auf das
cox::
px
bezieht, dann gebe ich dir recht (der GCC unterstützt user-defined literals noch nicht). Sonst aber nicht. Mit move und mit Lambdas vertraut zu sein, kann man, denke ich, schon voraussetzen.Bei den Properties sieht das jedoch wieder anders aus, die sind eigentlich unnötig.
Und was mich gefreut hat, ist, dass der Compiler das genauso sieht. Die Dinger werden vollständig rausoptimiert.