Home › Forums › General › General Chat › What GUI libraries should be used?
- This topic has 19 replies, 15,783 voices, and was last updated 9 years, 9 months ago by Kriten.
-
AuthorPosts
-
March 27, 2009 at 12:08 am #8413curtmParticipant
Embarcadero’s travelling road show came to my town, last month, and David I talked about CodeGear’s future plans.
Unicode support is the default, now, so that part of the job should be pretty easy. David I said that Delphi has a new compiler / code generator upcoming (they’ll support Pentium instructions!), and–significantly–it is going to support cross compiling to Linux and Mac platforms, using the QT widgets.
Talk to CodeGear before you proceed. But given these developments, your choice seems pretty clear, I would thnk.
I look forward to the next version of ME.
March 27, 2009 at 1:34 am #8417dynaltParticipantUnless you plan to support a Kylix version for *nix, I don’t see that a cross-platform GUI adds that much.
Native Delphi components (or the smaller Kylix-compatible set) seem fine to me.
If you decide to use wxWidgets, someone (http://www.vclcomponents.com/C_C__/Deve … -info.html) has written a Delphi component that uses wxWidgets rather than VCL, so it can be done without losing the power of the Delphi platform.
Changing to a new development language, rewriting the core for unicode, trying for a cross-platform GUI, and using a different extension language all at the same time sounds like a recipe for certain disaster.
My recommendation, build as good a test suite as you can for the current codebase and refactor mercilessly relying on the tests to keep from breaking things.
April 30, 2009 at 10:07 pm #8479deleydParticipantI found some good discussions of cross-platform GUI options on the Ubuntu forums.
[list:wl5zanta][*:wl5zanta]From: [url:wl5zanta]http://laroza77.wikidot.com/librarylibrary#toc4[/url:wl5zanta]
GUIs
— Used with the GNOME desktop and other apps.
— Used with the KDE desktop and other apps.
<a href="http://laroza77.wikidot.com/tk:wl5zanta]Tk[/url:wl5zanta] — Originally used with [url=http://laroza77.wikidot.com/tcl:wl5zanta]Tcl[/url:wl5zanta”>, but is used with many scripting languages.
— A cross platform, feature rich, GUI toolkit that looks native on many platforms and works with many languages.
<a href="http://laroza77.wikidot.com/opengl:wl5zanta]OpenGL and SDL[/url:wl5zanta”> — 3d and multimedia.
Note: GNOME and KDE are the two major Linux desktop options. In Linux the term desktop refers to the graphical environment where you do your work. See[/*:m:wl5zanta]
[*:wl5zanta]This website has a section for each GUI toolkit for each language (Ada, Assembly, C, C++, C#, D, Forth, Fortran, Haskell, Java, Lisp, Objective-C, Octave, Perl, PHP, Python, Ruby, Tcl)
http://laroza77.wikidot.com/librarylibrary#toc4[/*:m:wl5zanta]
[*:wl5zanta]Quoted from: [url:wl5zanta]http://ubuntuforums.org/showthread.php?t=772507[/url:wl5zanta]
There are many GUI toolkits available for many languages. Many of them work cross platform and with many languages.Common toolkits:[list:wl5zanta][*:wl5zanta]<a href="http://en.wikipedia.org/wiki/GTK:wl5zanta]GTK+[/url:wl5zanta] — It is in C and has been ported to many languages. GNOME and Xfce use GTK. [url=http://glade.gnome.org/:wl5zanta]Glade[/url:wl5zanta] can be used to design GUI’s in GTK.[/*:m:wl5zanta”>
[*:wl5zanta]QT — It is in C++, and has been ported to many languages. KDE uses QT.
[*:wl5zanta]<a href="http://en.wikipedia.org/wiki/WxWidgets:wl5zanta]wxWidgets[/url:wl5zanta] — It is meant to look native cross platform. It is in C++, but also has been ported. [url=http://wxglade.sourceforge.net/:wl5zanta]wxGlade[/url:wl5zanta] can be used to design GUI’s.[/*:m:wl5zanta”>
[*:wl5zanta]Tk — This is (as far as I know) a toolkit used by scripting languages mostly. Tcl and Tk are easily used with each other. Python, Perl, PHP, and Ruby can use Tk also. It is the default Python GUI toolkit as well (as Tkinter). It is cross platform, but it is not the best looking toolkit.
[/*:m:wl5zanta]
[*:wl5zanta]Python,
[*:wl5zanta]Shell scripts,
[*:wl5zanta]Java can use other toolkits, but[/*:m:wl5zanta]
[*:wl5zanta]This thread is particularly interesting:
[url:wl5zanta]http://ubuntuforums.org/showthread.php?p=5811181[/url:wl5zanta]There are then 2 library choices – QT or wxWidgets. QT is dual-released under the GPL or a $$$$ Commercial license. Also, the QT Commercial license doesn’t allow you to start your project as GPL and later switch to Commercial. wxWidgets, on the other hand, is released under the BSD license, which allows your to freely modify, sell, and redistribute your program commercially without releasing your source code. QT is notably used by Google Earth, while wxWidgets is used by AOL messenger and AVG Ant-Virus Software.
Although QT and wxWidgets provide extremely similar functionability and apis, the underlying frameworks are extremely different. QT actually doesn’t actually use native controls, but emulates all of its drawing to match the OS. QT does a pretty good job at native theme emulation, and it also allows for custom theming. wxWidgets, however, draws all of its controls natively – WinAPI on Windows, GTK+ on Linux and Cocoa on Mac OS X.
For large corporations, QT is very attractive, as it provides commercial support and an extensive api. However, as you can see from the attached cost table, it is quite expensive for a commercial license. Also, its emulated native rendering engine can encounter trouble on some select custom themes. wxWidgets has no price tag, but it lacks direct commercial support and has a slightly smaller api – for example, there are no included XML handling functions. However, I feel that these slight drawback on wxWidgets more than outway QT for most projects and developers. wxWidgets is also extremely popular on Ubuntu, and there are two GUI builders in Add/Remove programs – wxFormBuilder and wxGlade. The IDE uses wxWidgets, and it also has a wxWidgets project wizard and an integrated wxWidgets Form designer called wxSmith.
Check out both QT and wxWidgets, but I would say that wxWidgets is the better option for you. I have used in 2 projects, and I find that the lack of commercial support is more than made up by the fabulous Community Forum. Not to mention that BSD is far freer than GPL/Commercial.
Post #25:
Sun JAVA — a computing platform that runs a majority of large enterprise systems.Post #34:
REALBasic — builds perfect applications on Mac, Windows, and Linux. it cross compiles.Post #39:
Java + Netbeans — It has a nice GUI editor and you can easily make it look native.
Swing — All it really takes to make Swing look native is one line of code. Then you will not get the ugly default Swing theme. [url:wl5zanta]http://ubuntuforums.org/showthread.php?p=5847242[/url:wl5zanta]See the rest of this thread: [url:wl5zanta]http://ubuntuforums.org/showthread.php?p=5811181[/url:wl5zanta]
[/*:m:wl5zanta][/list:u:wl5zanta]
I’ll ask about speed issues.May 1, 2009 at 1:41 am #8480DanHughesParticipantQT now has a LGPL license that allows commercial applications to be written where the source doesn’t have to be released.
I like both QT and wxWidgets but at this point we will continue to use the current code base to add Unicode support. In the future we might consider using one of these GUI libraries to make our code more cross platform.
There also is a wxForms for Delphi that allows Delphi to create forms using wxWidgets components via the Delphi form builder. That looks to be a nice package to look at for possible future use.
July 5, 2011 at 5:12 am #9085KritenParticipantMy vote is for Use custom code as the current version uses
-
AuthorPosts
- You must be logged in to reply to this topic.