Algierlib: GUI Bibliothek
-
Ich weiß, habe selber MSE zu Hause. Aber ich weiß ums Verrecken nicht was der da anmotzt. Wenn ich es im IE aufrufe, meckert er nicht. Wenn ich es im Opera aufrufe, meckert er.
Hier auf Arbeit haben wir McAfee, und der meckert gar nichts an, wenn ich es im Firefox aufrufe.
Hier der komplette Source der Weiterleitungsseite:
<head> <meta http-equiv="refresh" content="1; URL=html/index.html"> <a href="html/index.html">Go to Algierlib reference documentation</a> </head>
Wenn jemand weiß, woran es liegt und eine Alternative zu meinem HTML kennt, kann mir das gerne mitteilen.
EDIT: ist ja gar nicht die Weiterleitungsseite. Geht ja direkt auf die Doxygen-Seite. Weiß nicht was da Doxygen so generiert. Werde ich mal zu Hause nochmal versuchen raus zu finden.
-
Komisch. Die index.html-Datei auf dem Webserver war verändert... hatte viel Mist am Ende der Datei stehen, ca. 44 KByte. Das originale auf meiner Platte war viel kleiner (5 KB).
-
Hey,
erst mal Respekt für diese Bibliothek
Ist bisher finde ich sehr gut gelungen. Ich bin mich im Moment am einarbeiten, und muss echt sagen, sehr gut zu verstehen
Find sie vor allem sehr gut da es ein sehr modernes C++ ist und ich sowieso erst mal C++ richtig beherrschen will, aber viele GUI-Frameworks unterstützen da einen nicht, sondern hindern einen eher dran. Aber immer nur Konsole is auch n bisschen langweilig, da ich oft nicht weiß wie ich da was umsetzen soll. Und genau in dem Punkt passt deine Lib echt super rein, man lernt trotzdem sehr gut mit C++ umzugehen, ohne irgendwelchen zusätzlichen Murks der nicht mehr so viel mit echtem C++ zu tun hat.Respekt
Ich hoffe du arbeitest auch fleißig dran weiter
Lg freeG
-
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 eineoran::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 brauchtModel
genau, welche Funktionen vonalgier::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 vonalgier::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...