Algierlib: GUI Bibliothek



  • Danke für die gute Kritik! 🙂

    An der Lib arbeite ich auf jeden Fall weiter, da ich damit selber ein paar kleine Anwendungen und Tools programmiere. Es geht aber nicht so schnell voran weil ich das alles in meiner Freizeit mache (neben meinem Beruf). Man kann aber immer spätestens alle 6 Monate mit einem Release rechnen.

    Es ist gut, wenn du auch die Lib ausprobierst oder benutzt, dann kann man mehr Fehler finden und die Lib für mehr User gerecht gestalten.

    Auch schön das du es verständlich findest. Das Handbuch war mir sehr wichtig, da die meisten OSS-Projekte an dem Punkt scheitern. Leider ist mein Englisch nicht so gut, sonst würde ich das Handbuch ausführlicher und besser schreiben können. Ein Engländer wird sich wahrscheinlich die Hände über den Kopf schlagen. 😉 Aber ich habe noch vor, ein ausführlicheres deutsches Handbuch zu schreiben.

    Wenn Du also Fragen hast oder Fehler findest, dann scheue dich nicht mir das mitzuteilen. Entweder hier in diesem Thread oder in der offiziellen user-Mailingliste (kannst auch dort auf deutsch schreiben).



  • Hallo,

    ich habe bisher für GUI Projekte immer Qt verwendet, wollte mir jetzt aber auch mal andere Frameworks anschauen, da ich mit Qt nicht komplett zufrieden bin (MOC, eigene "Standardbibliothek", etc.).
    Algierlib scheint da genau das richtige zu sein: Schön schlank und modern.

    Mir ist allerdings unklar, wie ich eigene Modelle einbinden kann. Ich möchte eigentlich so etwas wie algier::listbox , allerdings möchte ich natürlich meine Daten nicht alle zuerst in eine oran::stringlist kopieren, da ich sie dann ja zweimal im Speicher hätte.

    Ich vermute, ich muss dafür irgendwie mit algier::list<Model> arbeiten, aber ich weiß ehrlich gesagt nicht wie. 🙂
    Könntest du mir da irgendwie weiterhelfen (sprich: Welches Interface braucht Model genau, welche Funktionen von algier::view muss ich selbst implementieren, etc.)?

    Gruß,
    Guybrush



  • Hallo Guybrush™! Au waija! Schande über mich! Deine Anforderung ist (noch) gar nicht möglich. 😞 Aber das kann ich schnell ändern. 🙂 Ich werde die stringlist-Klasse nochmal abstrahieren und diese am Wochenende noch in das SVN-Repository schreiben.
    Dann kannst du die abstrakte Klasse für den Bau eines Model-Adapters nutzen und es entstehen dadurch keine Kopien deiner Daten. Ich würde dir dann auch ein Beispiel-Code liefern.
    Aber dein Gedanke mit dem Model war auf jeden Fall schon richtig.

    Sehr gut das Du nachgefragt hast. 👍 Nur so kann ich auch die Library an die Bedürfnisse der breiteren Masse anpassen.



  • Guybrush™ schrieb:

    Könntest du mir da irgendwie weiterhelfen (sprich: Welches Interface braucht Model genau, welche Funktionen von algier::view muss ich selbst implementieren, etc.)?

    Du könntest natürlich auch die View-Klasse ändern. In der Datei list.cpp suchst du nach "Fill list content". Dort wird durch das Model iteriert.
    Die View-Klasse direkt zu manipulieren ist natürlich dirty. 😃 Man müsste für die Zukunft vielleicht die Model-Zugriffe auslagern, damit man andere Model-Interfaces nutzen kann... Da könnten evtl. Policy-Klassen helfen.

    Zur Zeit steht so ein hoch flexibles Design noch nicht an. Die Prioritäten liegen im Projekt noch woanders. Aber es ist ein Gedanke den man verfolgen sollte. 🙂



  • Schön, dass ich helfen konnte. 🙂
    Dann warte ich mal bis zum Wochenende - bin schon gespannt.

    Du könntest natürlich auch die View-Klasse ändern. In der Datei list.cpp suchst du nach "Fill list content". Dort wird durch das Model iteriert. Die View-Klasse direkt zu manipulieren ist natürlich dirty. 😃

    Ah, tatsächlich. Vielleicht mache ich es testweise mal so.

    Gruß,
    Guybrush



  • Hallo,

    hattest du Zeit daran zu arbeiten? Ich habe testweise mal die list.cpp an meine Bedürfnisse angepasst und es funktioniert, aber das ließe sich natürlich wunderbar abstrahieren.

    Gruß,
    Guybrush



  • Sorry, wird heute knapp. Aber ich habe es nicht vergessen! 😃



  • Hat die AlgierLIB ein Table/Grid/Matrix Widget?

    So dass man eine Tabelle mit 3 Spalten und "beliebig" vielen Zeilen anzeigen lassen kann.

    Von der Doku. und Code habe ich nichts dies bezüglich gefunden, aber ich frag lieber mal nach.

    Grüße
    Martin



  • Nun bin ich gerade auf diese Ankündigung gestossen... Finde ich sehr schade, zumal die AlgierLib mit nativen Widgets, modernem C++ und ihrer Schlankheit wirklich Potential hat.

    Darf ich fragen, ob es eher design-/codetechnische Gründe sind, oder du nicht mehr genügend Zeit bzw. Interesse am Projekt hast? Im ersten Fall müsste man ja nicht gleich das ganze Projekt auf ewig einfrieren. Wäre jedenfalls cool, falls du eines Tages wieder daran weiterarbeiten würdest, aber ich kann auch verstehen, falls du genug davon hast. Und wenig Feedback ist natürlich auch etwas frustrierend, vielleicht müsstest du das Projekt an diversen Orten vorstellen. Zum Beispiel im wxWidgets-Forum 😃



  • Danke für die Nachfrage, Nexus! 🙂

    Ja, ich habe das Projekt gestoppt, weil ich die Implementierung vergeigt habe. 😞 Mit dem API-Design selbst bin ich jedoch im großen und ganzen zufrieden (auch wenn es natürlich immer was zu meckern gibt).

    Konkret habe ich das Win32-Message-Handling falsch gemacht, so das ich beim implementieren der Scrollbars bei deren Events an einer ziemlich komplizierten Situation gekommen bin, um die Events zuordnen zu können.

    Ehm, was mir dann aber auch schon vorher den Nerv geraubt hatte (aber nicht zum Stopp führte), war das Pimpl-Idiom, das ich durchgängig nutzte. Dieses hat auch sehr viel Codierarbeit verschlungen. Ich würde das heute überdenken oder besser vorher ein Script schreiben, das mir die immer wiederkehrende Arbeit abnimmt.

    Was auch sehr anstrengend war, ist die englische Dokumentation. Ich möchte behaupten, das ich im Vergleich zu anderen Libs von Anfang an die Doku recht gut gepflegt habe. Aber die Doku zu schreiben und pflegen ist wirklich viel Arbeit.

    Naja, von einem geplanten Linux-Port will ich gar nicht anfangen. 😃

    Feedback gab es leider wenig. Es gab aber doch schon ein gewisses Interesse. Ich vermute mal, es hat noch der Break-even-Point gefehlt, damit nenneswertes Feedback und Unterstützung kommt.

    Ich habe aber noch nicht endgültig aufgegeben. Es geistert immer noch in meinem Kopf herum, ein GUI-Lib-Projekt raus zu bringen, das die Bedürfnisse recht vieler C++ler erfüllt. Und worauf ich zu Anfang achten muss, weiß ich jetzt. 🙂 Auch das ich vielleicht aktiver nach Unterstützern suchen muss, da es doch recht viel Arbeit ist, wenn man es publik machen will. Aber jetzt ist erstmal Projekt-Stopp. 😉



  • Okay, danke für die Erläuterung!

    Zum Pimpl habe ich mir mal einen Smart-Pointer geschrieben, der das Impl-Objekt automatisch kopiert. So muss man wenigstens nicht jedes Mal gleich die Grossen Drei überladen, wenn die Klasse kopierbar sein soll. Aber ich nehme mal an, der nervige Teil der Arbeit waren die doppelten Funktionen und ständigen Weiterleitungen...


Anmelden zum Antworten