FLTK Meinungen



  • Anwalt schrieb:

    Scorcher24 schrieb:

    Anwalt schrieb:

    Scorcher24 schrieb:

    Was mir bei QT am meisten aufn Sack geht, is dieser Metacompiler oder wie man das nennt.. nervt.

    Grund?

    Brauch ich einen?

    Ach, wollte's nur wissen, anscheinend wolltest du nur hier mitreden 😉

    Hmm, Du willst hier anscheinend nur flamen. Wie ich geschrieben habe, ich mag den Umstand mit dem Metacompiler nicht. Fertig. Geschmäcker sind halt verschieden. Ich mags nicht, punkt. Das Integrationskit in VC++ 2008 hat bei mir auch nicht funktioniert, gab Probleme mit dem Plugin und Visual Assist.
    Ich arbeite auch seit einiger Zeit mit wxWidgets und finde die Handhabung von wxWidgets recht easy und eingängig. Vor allem gefällt mir die Möglichkeit GUI zur Laufzeit über XML zu laden. Ja, das geht mit QT auch. Ich hab mich eingearbeitet in wx und einfach keine Lust mehr mich mit QT zu beschäftigen.
    rya.



  • wo wir schon beim Thema "moderneres C++" waren, waere vielleicht "gtkmm" noch erwaehnenswert, dass wirklich einen sehr sauberen und schoenen Stil hat, die C++ Standardbibliothek verwendet, und auch sonst alle C++ Codemitteln (wie templates etc.). Es verwendet kein einziges Makro!

    Ausserdem ist laeuft es auf allen Plattformen, auf denen GTK+ laeuft (Windows (unter Windows wird ein spezielles Theme verwendet, um die Programme besonders "nativ" aussehen zu lassen (Wimp-Theme), MacOSX, Linux, BSD, Solaris u.a.) und ist unter einer akzeptablen Lizenz (LGPL - dadurch sowohl fuer opensource-Projekte als auch fuer (kommerzielle) closedsource-Projekte geeignet. Jedoch darf nicht statisch gelinkt werden).

    gtkmm ist eine reine GUI-Bibliothek (im Gegensatz zu wxWidgets und Qt) und ist eigentlich ein C++-Wrapper fuer die C-Bibliothek GTK+ (Gimp Tool Kit) mit dem u.a. das Bildbearbeitungsprogramm Gimp und die Desktopumgebung Gnome entwickelt wurde.

    Also: gtkmm waere vielleicht ein guter Kandidat fuer dich. Allerdings ist es nicht so schlank wie FLTK oder wxWidgets - und musst ein dutzend DLLs mitliefern, damit das Programm beim Anwender laeuft - das musst du aber bei Qt auch... und Installer sind heutzutage sowieso ueblich.



  • Wie groß ist bei gtkmm ein HelloWorld Fenster mit statisch kompilierten Libs?



  • MOC (Pre-Preprozessor von Qt) ist nicht einfach nur geschmacklich schlecht. Es gibt auch ganz einfach Gründe gegen ihn. Nämlich das es sich um "black magic" (schwarze Magie) handelt. Ich schmeisse den MOC an, und er macht Sourcecode, den ich nicht kontrollieren kann. Und es ist vorallem kein C++-Standard.

    Ich muß in meinen C++-Code eine Syntax verwenden, die ich nirgends in einem ISO-C++-Dokument finden kann. Viele OpenSourcler hassen z.B. Microsoft, weil MS sich ungern an Standards hält. Im gleichen Atemzug favorisieren sie aber Qt, welches sich absolut nicht an die C++-Norm hält. Es wird über MS' Compiler hergezogen, aber der MOC favorisiert. Sowas nenne ich perfide!

    Es ist weiterhin schon nicht schön, den Preprozessor nutzen zu müssen (z.B. als Include-Wächter). Denn wie Bjarne Stroustrup so schön sagt: "Macros are evil!". Denn Makros sind kein Sprachelement, und damit kann es zu merkwürdigen Fehlern kommen. Weiterhin sagt Herr Stroustrup, das der Zwang für Makros eine Sprachschwäche aufzeigt. Der MOC ist eine Steigerung des Preprozessors und Makros.

    Sollte ich nun den MOC favorisieren? 💡



  • freizeit_programmierer schrieb:

    Wie groß ist bei gtkmm ein HelloWorld Fenster mit statisch kompilierten Libs?

    gute Frage. Aber statisches Linken ist ein Lizenzbruch der LGPL. Statisches Linken ist nur erlaubt, wenn du dein Programm selbst auch unter der LGPL oder GPL veroeffentlichst.

    ein Hallo-Welt Programm hat mit dem MSVC unter Windows um die 12kb und mit den DLLs kommste auf ca. 15MB. Find ich aber okay - wir leben nich mehr in einer Zeit wo ein Programm so klein wie moeglich und statisch gelinkt sein muss. Heutzutage hat jedes Programm einen schoenen Installer und 15MB stoeren in Zeiten von DSL nurn wirklich keinen mehr...



  • Also mit Algierlib ist ein HelloWorld-Fenster, statisch gelinkt mit MSVC nur ca. 50 KByte klein (bei Mingw glaube ich nur 120 Kbyte). Und das ohne Lizenzbruch bei Closed Source! 😃 Sorry, mußte sein. 😉



  • Artchi schrieb:

    Also mit Algierlib ist ein HelloWorld-Fenster, statisch gelinkt mit MSVC nur ca. 50 KByte klein (bei Mingw glaube ich nur 120 Kbyte). Und das ohne Lizenzbruch bei Closed Source! 😃 Sorry, mußte sein. 😉

    btw.... ich finde so ne kleine Groesse kann auch "abschreckend"/"unscheinbar" wirken 😉 (scherz)

    Abgesehen davon, dass deine Lib (kannte ich bisher noch gar nicht) noch nicht plattformunabhaengig ist (wann soll es denn soweit sein?), sieht sie wirklich schon recht gut aus und das Design gefaellt mir auch.



  • Da ich sehr viele Miniprogramme zum Lernen programmiere und keine Lust habe später die DLLs dafür zu suchen und auch nicht für jede Exe 10MB verschwenden will, suchte ich nach einem GUI-Framework was einfach zu lernen war und auch nur GUI-Elemente bereitstellt. Hätte ja sein können das gtkmm da für mich was ähnliches leistet wie FLTK.

    Auch in der heutigen Zeit ist es angenehm wenn kleine Programme auch wenig Platz verschwenden auch wenn es nicht mehr so wichtig ist wie früher. Ein Beispiel sind Javaprogramme die im Hintergrund laufen und gleich über 100MB verbraten. Hätte ich da ne Alternative mit nur 10MB würde ich sofort tauschen.



  • GT-Kamm schrieb:

    Abgesehen davon, dass deine Lib (kannte ich bisher noch gar nicht) noch nicht plattformunabhaengig ist (wann soll es denn soweit sein?), sieht sie wirklich schon recht gut aus und das Design gefaellt mir auch.

    Die Lib ist schon plattformunabhängig. Lediglich die Implementierung ist bisher nur für eine Plattform verfügbar. Wenn jemand die STL nur für Win32 implementiert, ist die STL trotzdem plattformunabhängig.

    Aber da es bisher nur ein Ein-Mann-Projekt ist, liegt die Prio zur Zeit beim Design (welches noch nicht endgültig ist und sich entwickelt) und Win32 dient als Beispiel-Implementierung. Eine weitere Plattform (Unix-artige Systeme) ist aber für Dezember vorgesehen.

    Das Algierlib nicht weiter bekannt ist, ist absicht. Da es noch nicht wirklich reif für die breite Masse ist. Aber man kann damit schon experimentieren und als Nutzer Kritik und Wünsche einbringen.



  • Artchi schrieb:

    Also mit Algierlib ist ein HelloWorld-Fenster, statisch gelinkt mit MSVC nur ca. 50 KByte klein (bei Mingw glaube ich nur 120 Kbyte). Und das ohne Lizenzbruch bei Closed Source! 😃 Sorry, mußte sein. 😉

    Ich komme da leider auf 240Kbyte mit FLTK und MinGW, aber auch alles statisch gelinkt also allinclusive 😃 und das mit Open Source GPL2. Weiß da wer ob ich da auch closed Source draus machen darf wenn ich drauf hinweise das ich FLTK nehme?



  • Hallo,
    on topic:
    Ich hatte FLTK vor einiger Zeit kurz angetestet da es ein vielverpsrechender Kandidat für mein Spiel-Projekt war. Ich wollte ebenfalls eine reine, schlanke GUI Lib mit OpenGL support. Leider erwies sich FLTK1 bei mir als sehr unstabil. Obwohl das Zusammenbauen der UI einfach war, kam ich schnell an Grenzen, wo meine App sich bezüglich UI komisch verhielt und auch regelmässig abstürzte. Debuggen ergab jeweils dass die Fehler tief im FLTK Code auftraten. Und das anschliessende Hilf-suchen im Netz ergab auch keinen Erfolg (wegen nur spärlicher FLTK Community). also hatte ich mir vorgenommen auf ein robusteres FLTK2 zu warten, welches aber leider wohl nie das Licht der Welt erblicken wird.

    zu den anderen GUI Libs:
    Die Kritik von Artchi gegenüber Qt und WxWidgets ist gerechtfertigt. Es gibt nunmal Bedarf für reine schlanke GUI libs, ohne Schnickschnack, und vor allem ohne sich ein Framework aufzwängen zu lassen. Ich war bei meiner Suche ebenfalls auch über Qt gegangen und hab das wegen dem unsäglichen MOC schnell wieder rausgeschmissen! Ich möcht mir nicht meinen Build-Prozess von einer GUI Lib bestimmen lassen!

    Zu Algier-lib: Nette Sache, stösst genau in die gesuchte Nische: Modernes C++=Ja, Native Widgets=Ja, Funktionsumfang=GUI (mit Artchis eigenen Worten gemäss http://kharchi.eu/wiki/doku.php?id=cpp:gui:libs 😉 ). Leider noch die Beschränkung auf Win32. Ich hoffe du findest n paar Mitstreiter, denn allein wird sowas schnell zu viel Arbeit. Aber ich wünsch Dir Durchhaltevermögen! 👍
    Ach, und der Name ist schei*e. 😃



  • @artchi: kann ich mit deiner lib auch closed source veröffentlichen? bin da jetzt etwas neugierig geworden 😃

    @scrontch: ich bin genau deiner meinung. ich suche schon lange noch einer native gui die so schlank wie nötiig ist da ich wirklich nur die guielemente brauche und statisch linken möchte. und denke das viele das auch suchen.



  • Also genaue Bedingungen für FLTK findest du hier. Ziemlich verständlich geschrieben.



  • freizeit_programmierer schrieb:

    @artchi: kann ich mit deiner lib auch closed source veröffentlichen?

    Ja, ist möglich.
    Die BSD Lizenz erlaubt dir mit der Lib anzustellen, was du möchtest, bis auf die drei Bedingungen aus dem Lizenztext.



  • Habe ich das richtig verstanden, ich darf deine lib nutzen und statisch linken ohne meinen quelltext offen zu legen wenn ich deine Erklärung und dein Copyright irgendwo in meiner Software mit angebe z.B. im Info Bereich oder bei der Installation?



  • scrontch schrieb:

    Zu Algier-lib: Nette Sache, stösst genau in die gesuchte Nische: Modernes C++=Ja, Native Widgets=Ja, Funktionsumfang=GUI (mit Artchis eigenen Worten gemäss http://kharchi.eu/wiki/doku.php?id=cpp:gui:libs 😉 ). Leider noch die Beschränkung auf Win32. Ich hoffe du findest n paar Mitstreiter, denn allein wird sowas schnell zu viel Arbeit. Aber ich wünsch Dir Durchhaltevermögen! 👍

    Es würde schon reichen, wenn jemand die Library versuchen würde zu nutzen, und mir Feedback gibt. So das ich weiß, wo außenstehende z.B. Verbesserungen sehen oder etwas unverständlich erscheint. Auch würden mehr Nutzer mehr Bugs finden.

    Klar, die Lib lebt sehr stark. Manschmal werden ganze Klassennamen geändert u.ä. Da müsste man als User dann beim nächsten Release mitziehen. Aber bei kleinen Projekten ist das weniger problematisch. Ab Version 1.0.0 wird dann natürlich alles fest gezurrt.

    Wer die Lib nutzen will und MinGW 4.4.1 einsetzt, sollte aber auf Version 0.6.0 warten, weil zur Zeit ist bzgl. MinGW etwas chaotisch (Lib selber bauen und GDI+ Zwang).

    scrontch schrieb:

    Ach, und der Name ist schei*e. 😃

    Danke, aber besseres ist mir nicht eingefallen. 😃



  • freizeit_programmierer schrieb:

    Habe ich das richtig verstanden, ich darf deine lib nutzen und statisch linken ohne meinen quelltext offen zu legen

    Richtig!

    freizeit_programmierer schrieb:

    wenn ich deine Erklärung und dein Copyright irgendwo in meiner Software mit angebe z.B. im Info Bereich oder bei der Installation?

    Richtig! Der Lizenztext muß für den User jeder Zeit einsehbar sein, z.B. im Handbuch. Nur bei der Installation wäre glaube ich etwas wenig, weil ihn der User nur einmalig lesen kann. Den Lizenztext muß jeder immer lesen können, damit er weiß, woran er ist: z.B. wenn die Lizenzdatei einfach in dem Verzeichnis deiner Anwendung liegt, im Infobereich, Hilfe oder Handbuch.

    Hier mal sinngemäß die Übersetzung der zweiten Bedingung:

    2. Weiterverbreitete kompilierte Exemplare müssen das obige Copyright, diese Liste der Bedingungen und den folgenden Haftungsausschluss in der Dokumentation und/oder anderen Materialien, die mit dem Exemplar verbreitet werden, enthalten.



  • @artchi: deine lib schaut schon ganz nett aus es fehlen aber auch einige GUI Elemente wie TreeViews, Grids, Toolsbars, Split- und TabbedWindows oder?

    @scrontch: hmm, bin jetzt etwas in grübeln geraten wegen fltk und denke ich werde auch mal wxwidgets ausprobieren. Bei qt darf ich nicht statisch linken und kann auch nicht ohne weiteres den Code einfach kompilieren. Ne IDE kommt mir nicht ins Haus sooo große Projekte will ich nicht machen als das ich ne IDE brauche. Is echt schwer was komplettes leichtgewichtiges nur für GUI zu finden.



  • freizeit_programmierer schrieb:

    @artchi: deine lib schaut schon ganz nett aus es fehlen aber auch einige GUI Elemente wie TreeViews, Grids, Toolsbars, Split- und TabbedWindows oder?

    @scrontch: hmm, bin jetzt etwas in grübeln geraten wegen fltk und denke ich werde auch mal wxwidgets ausprobieren. Bei qt darf ich nicht statisch linken und kann auch nicht ohne weiteres den Code einfach kompilieren. Ne IDE kommt mir nicht ins Haus sooo große Projekte will ich nicht machen als das ich ne IDE brauche. Is echt schwer was komplettes leichtgewichtiges nur für GUI zu finden.

    Einer der großen Vorteile an wxWidgets ist die Lizenz. Du darfst damit quasi fast alles machen was Du willst. Ein einfaches Beispiel mal, wie verdammt einfach wxWidgets ist und doch so mächtig:

    //////////////////////////////////////////////////////////////////////////
    // Event Table
    BEGIN_EVENT_TABLE(Mainframe, wxFrame)
    	EVT_MENU(idMENU_RELOAD_HTML, Mainframe::OnReloadHtml)
    	EVT_MENU(idMENU_SHOW_STARTUP, Mainframe::OnShowStartup)
    	EVT_MENU(idMENU_ABOUT, Mainframe::OnAbout)
    	EVT_MENU(idMENU_EXIT, Mainframe::OnExit)
    END_EVENT_TABLE()
    //////////////////////////////////////////////////////////////////////////
    
    //////////////////////////////////////////////////////////////////////////
    // Constructor and Deconstructor
    //////////////////////////////////////////////////////////////////////////
    Mainframe::Mainframe(long style)
    : wxFrame(NULL, -1, "AweSomeScript", wxDefaultPosition, wxSize(800,600), style),
      m_currentPage(ASS_STARTUP_FILE)
    {
    	// Create Menu
    
    	wxMenu* mnuPreview = new wxMenu;
    	mnuPreview->Append(idMENU_RELOAD_HTML, _("Reload\tF5"));
    
    	wxMenuBar* bar = new wxMenuBar();
    	bar->Append(mnuPreview, _("Preview"));
    	this->SetMenuBar(bar);
    
    	// Create Notebook
    	m_notebook = new wxNotebook(this, idNOTEBOOK);
    	CreateTextPage(m_notebook);
    	CreateHtmlPage(m_notebook);
    	m_notebook->ChangeSelection(1);
    }
    
    Mainframe::~Mainframe()
    {
    }
    
    //////////////////////////////////////////////////////////////////////////
    // Creating Notebook Pages
    //////////////////////////////////////////////////////////////////////////
    
    void Mainframe::CreateHtmlPage( wxBookCtrlBase* parent )
    {	
    	m_winHtml  = new wxHtmlWindow(parent, idPAGE_HTML);
    	m_winHtml->LoadFile(wxFileName(m_currentPage));
    	parent->AddPage(m_winHtml, _("Preview"));
    }
    
    void Mainframe::CreateTextPage( wxBookCtrlBase* parent )
    {
    	m_txtSource = new wxTextCtrl(parent, idPAGE_SOURCE);
    	parent->AddPage(m_txtSource, _("Source") );
    }
    
    //////////////////////////////////////////////////////////////////////////
    // Events
    //////////////////////////////////////////////////////////////////////////
    
    void Mainframe::OnExit( wxCommandEvent& )
    {
    	this->Close(true);
    }
    
    void Mainframe::OnAbout( wxCommandEvent& )
    {
    }
    
    void Mainframe::OnReloadHtml( wxCommandEvent& )
    {
    	m_winHtml->LoadFile(wxFileName(m_currentPage));
    }
    
    void Mainframe::OnShowStartup( wxCommandEvent& )
    {
    	m_currentPage = ASS_STARTUP_FILE;
    	m_winHtml->LoadFile(wxFileName(m_currentPage));
    }
    

    http://img687.imageshack.us/img687/7918/97340824.jpg
    Daran arbyte ich grade :P. Was da angezeigt wird, ist HTML. wx kann derzeit zwar nur HTML 1, also nur basics, aber wxWebKit ist in der mache und wird hoffentlich bald erscheinen.
    Am Ende musst Du es wissen, was Du willst...
    rya.



  • Is sehr nett, ich habe auch schon mal mit rumgespielt. Mir gefallen die dynamsichen Eventhanlding besser als die Eventmakros, aber das kann ja jeder machen wie er will.

    Das mit HTML 1 is völlig egal, da ich nur GUI brauche und den Rest selbst mache zu Lernzwecken oder halt noch andere libs bei bedarf dazuhole.

    Kann ich eigentlich bei wxWidgets wenn ich das für statisch kompiliere auch nur die libs reinhauen die ich brauche also z.B html draussen lassen?


Anmelden zum Antworten