473,795 Members | 3,041 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Fox: best GUI Lib?

Summary
---------

Is Fox Toolkit ( http://www.fox-toolkit.org/ ) the "best" C++ GUI
library/toolkit?

My key goals (at least those that come to mind right now):
* Portability (Windows, Linux, MacOS, other unix)
* Open source
* Maturity
* Broad feature set
* Large community following & support

More Details
-------------

I'm an ex-C++ programmer/designer that has come back to "the fold" after a
long hiatus doing non-programming work (program management, sales,
marketing, etc).

After browsing ( http://www.thefreecountry.com/sourcecode/gui.shtml ), Fox
Toolkit seems to be a clear winner for my goals above.

Maybe I missed something? Can anyone provide other toolkit/library
suggestions...a nd (very important) their associated reasoning? Nothing
I've looked at thus far seems to be nearly as "open-source" available,
popular, and mature. Fox's web presence (web page, mailing lists,
documentation) also seems quite professional, mature, and popular.

(Disclaimer: I realize it's difficult to label something as "best."
Often a solutions choice might heavily depend on the problem to solve and
the problem's associated "environmen t"--be it technical, political,
personal preference, etc. However, I use the word "best" here mostly to
be concise...and to spark some feedback. ;)

Thanks for any help!
-Matt
Jul 22 '05
17 3870
Steven T. Hatton wrote:
There /is/ a very capable opensource subset of Qt. The entire KDE[*] is
written using that subset and extensions thereof. I'm not going to get
into the game of judging what is the best. Qt, from what I've seen, is the
most successfull in terms of creating useful application. GTK has it's
bragging rights [**] as well, but since this is a C++ newsgroup, I have to
observe that it is not a C++ toolkit. It does have some C++ wrappers,
however.

My approach has been to write code that remains as independent of any
particular toolkit as possible, and to treat the GUI as an interface. That
is often easier said than done. Quite often much of what a program does is
to provide a user interface.

I find the "hard parts" of figuring out the algorithms and logical
structures are usually far easier than providing an interface to them.

I think a good approach for this is what Bjarne says in an interview:
http://www.artima.com/intv/elegance.html

" I think people should mentally separate programming into building
libraries and using them. Today you write a supporting library, and
tomorrow you use it. Far too many times people try and build their
systems as one big conglomerate. Even when I do individual work for only
a short time, I tend to build some supporting functions and classes, and
I design them to be supporting. I don't dive straight into building the
whole thing that can do the whole job. So, whether you are by title a
library designer or application designer, you should think about how you
can separate logically the different parts of your system."


--
Ioannis Vranos

http://www23.brinkster.com/noicys
Jul 22 '05 #11
gamaron wrote:
Summary
---------

Is Fox Toolkit ( http://www.fox-toolkit.org/ ) the "best" C++ GUI
library/toolkit?

My key goals (at least those that come to mind right now):
* Portability (Windows, Linux, MacOS, other unix)
* Open source
* Maturity
* Broad feature set
* Large community following & support

In the Windows world, we are coming to WinFX (which is a managed API),
with Win32 becoming deprecated.
WinFX which is now .NET is a CLI VM. CLI is a standard defining how such
a *multilingual* VM works, its assembly language and a *minimal* API.
CLI: http://www.ecma-international.org/pu...s/Ecma-335.htm

There are becoming many CLI VMs out there, the current mainstream ones are:

NET framework (Windows): http://msdn.microsoft.com/netframework

Mono (GNU/Linux, Unix, Mac OS X and Windows): http://www.mono-project.com

DotGNU (GNU/Linux, Mac OS X, Windows): http://www.gnu.org/projects/dotgnu


QT etc are great, however I do not know how they will encapsulate CLI
environments.

Ioannis Vranos

http://www23.brinkster.com/noicys
Jul 22 '05 #12
Ioannis Vranos wrote:
I think a good approach for this is what Bjarne says in an interview:

http://www.artima.com/intv/elegance.html

" I think people should mentally separate programming into building
libraries and using them. Today you write a supporting library, and
tomorrow you use it. Far too many times people try and build their
systems as one big conglomerate. Even when I do individual work for only
a short time, I tend to build some supporting functions and classes, and
I design them to be supporting. I don't dive straight into building the
whole thing that can do the whole job. So, whether you are by title a
library designer or application designer, you should think about how you
can separate logically the different parts of your system."


Add Features not Modules

During a project's growth, the code always supports its current feature set
with the fewest design elements and fewest source statements possible, no
more. Groom the code to preen out Cruft; this frees the schedule, and lowers
the defect rate. Compete to add features elegantly.

Developers gifted with the ability to plan a design that could cover all
potential features are welcome here, if they hold that complete design up
for a goal but not the path. Teams expect members to specialize, and to
teach others how they do what they do. Nobody "owns" any module, and pairs
switch frequently.

A feature is not finished without its servants and clients in other modules.
At all times a program should form a useable round-trip application. And at
all times a user can comfortably drive all of a system's current features,
without gaps.

Developers volunteer to complete User Stories that affect modules they
understand. No module grows in isolation without immediately satisfying
other modules. Each User Story requires changes to any number of modules.

Libraries are modules for sale. Application-specific modules are skeletons
of libraries, presenting clean interfaces over only those few features their
applications need.

--
Phlip
http://industrialxp.org/community/bi...UserInterfaces
Jul 22 '05 #13
> > My key goals (at least those that come to mind right now):
* Portability (Windows, Linux, MacOS, other unix)
* Open source
* Maturity
* Broad feature set
* Large community following & support


Personally, I think native widget libraries blow in so far
as portability goes. If portability is key I would much
rather use something built on OpenGL such as GLOW, GLUI,
etc. I've used GLOW for a few small projects and it was
simple, clear, and effective. Though it doesn't have a
"broad" feature set nor a large community for support.
However, both of those are easily overcome if you are a
capable programmer and you understand OpenGL.

Also, GLOW is nicely coded C++. No macro crap or huge
complicated make files and utilities to get the thing
to compile. You just include and compile, that's it.
Jul 22 '05 #14
On 31 Oct 2004 12:44:58 -0800, du****@alum.mit .edu (Keith H Duggar)
wrote:
Personally, I think native widget libraries blow in so far
as portability goes. If portability is key I would much
rather use something built on OpenGL such as GLOW, GLUI,
etc.


Ok. I see that GLOW has not released a new version in 4 years. Is
this a good or a bad sign? Maybe this is indicative of maturity;
maybe there's no ongoing work/development? Is any needed?

http://sourceforge.net/project/showf...?group_id=3417

Also, is this the the "home page" for GLUI?

http://www.cs.unc.edu/~rademach/glui/

At first glance, OpenGL ( http://www.opengl.org/ ) seems to be
oriented towards "High Performance Graphics." My goals at this time
are not high-peformance graphic oriented. I'm wondering if this is a
good fit for my work? Maybe there's more to it then meets the eye?
Like you say, it's simple, clear, and effective. I'll keep this in
mind. Thanks for the input!

-Matt
Jul 22 '05 #15
On Sun, 31 Oct 2004 04:55:45 -0500, Steven T. Hatton wrote:
Phoenix Fyrestar wrote:
The only problem with Qt is that you have to buy a book* (C++
GUthereafterrrm ing with Qt 3)** to get the GPL version for windows. I
agree that it's a great toolset, and if you don't already know Qt, the
caveat about buying the book doesn't really apply, since this is simply
the
best documentation on Qt available, and you'll want to fork over for the
book anyway (I think it cost me $30 at Barnes and Nobel, probably be able
to find it cheaper if you look on Amazon).

* Since it's the GPL version, you really don't have to buy the book, just
find someone to give you a copy of the libraries, but that's the only
"official" way to get it for windows that I know of.

** Qt 4 should be comming out soon (or is it out now?) and soon thereafter
a new book.


You are correct. I had forgotten about that. I haven't booted into Chi Rho
in months, so I haven't had to deal with issue lately. As for the Qt book,
it's a damn good book!

http://www.accu.org/bookreviews/publ...p/cp003567.htm

And can now be download in pdf format from
http://phptr.com/title/0131240722

Jul 22 '05 #16

my $0.02.

Ask your self "What do I need?".
My experience.
my need "to display cells/designs of an IC". From k's to megs of figs
Steps I took: all on unix platform
1. raw X. Too much code to get basic GUI but did draw fast.
2. Xt reduced the amount of code for GUI but did draw fast.
3. libsx Simplest of all the gui's to get a GUI. Was slow drawing
be developemnt was VERY fast. THis has to be the most simple GUI
in the world.
4. QT. fast easy to set up windows. Drawing was fast
UNTIL i gave it 2million+ rectangsle and polygons.
brought it to it's knee's. Every rectangle was it's own
instance of a class. Very good work for a few k rectangles.
but not for millions
5. wxWindows fast and easy to create basix windows. Allowed me
to draw all figs to bitmap and blit bitmap to screen. 1 call to X server
very quick to draw, even millions of rects.
evolution of wx made it look like and behave a lot like QT.
QT might have allowed the drawing to bitmap and blit'ting but I
did not go back
6. gtk A little more trouble than qt or wx to GUI.
drawing was VERY fast. Dealing with colors, line textures and fill patterns
was much more difficult. But executable size was very small compared to
others.

bottom line.
You want a very pleasing GUI to communicate with user -> use QT
You need a data intensive program with a (can be plaesing also) GUI -> use gtk.
You want something VERY simple and very functional -> use libsx

___ _ ____ ___ __ __
/ _ )(_) / /_ __ / _ \___ _/ /_/ /____ ___
/ _ / / / / // / / ___/ _ `/ __/ __/ _ \/ _ \
/____/_/_/_/\_, / /_/ \_,_/\__/\__/\___/_//_/
/___/
Texas Instruments ASIC Circuit Design Methodology Group
Dallas, Texas, 214-480-4455, b-******@ti.com

On Sat, 30 Oct 2004, gamaron wrote:
Summary
---------

Is Fox Toolkit ( http://www.fox-toolkit.org/ ) the "best" C++ GUI
library/toolkit?

My key goals (at least those that come to mind right now):
* Portability (Windows, Linux, MacOS, other unix)
* Open source
* Maturity
* Broad feature set
* Large community following & support

More Details
-------------

I'm an ex-C++ programmer/designer that has come back to "the fold" after a
long hiatus doing non-programming work (program management, sales,
marketing, etc).

After browsing ( http://www.thefreecountry.com/sourcecode/gui.shtml ), Fox
Toolkit seems to be a clear winner for my goals above.

Maybe I missed something? Can anyone provide other toolkit/library
suggestions...a nd (very important) their associated reasoning? Nothing
I've looked at thus far seems to be nearly as "open-source" available,
popular, and mature. Fox's web presence (web page, mailing lists,
documentation) also seems quite professional, mature, and popular.

(Disclaimer: I realize it's difficult to label something as "best."
Often a solutions choice might heavily depend on the problem to solve and
the problem's associated "environmen t"--be it technical, political,
personal preference, etc. However, I use the word "best" here mostly to
be concise...and to spark some feedback. ;)

Thanks for any help!
-Matt

Jul 22 '05 #17
GTK+ is actually a C toolkit, so if you are interested, you can use
gtkmm instead, which is just a C++ wrapper. (http://www.gtkmm.org)
However, if you are looking for a native look and feel, here's my
opinion:

wxWindows(wxWid gets) : very good, reasonable native looks (10+ years
of history)

GTK+ : Quite decent, very gnome-like, but quite similar to Win32(Tip:
no MDI however but can be feigned by using a notebook)
gtkmm : same as GTK+

FLTK : not very good, may be portable to Macs and Win32, but looks
like it's running on X

Qt : very good, with good native looks, plus...you can make your
application adopt different styles

Also, for ease-of-use, here's what I think:

wxWindows : quite ok, uses Model-View architecture, can be abit of a
slow development without a UI builder(many available, recommend wx
Dev-C++ http://wxdsgn.sourceforge.net/)

GTK+ : If you're used to doing things in very much the C way, it is
quite good
gtkmm : good use of C++ features, quite fast to develop, quite
flexible
(both come with a UI builder called Glade)

FLTK : Quite reasonable, but because of the use of function pointer
callbacks, i don't quite trust it, but there is a projetc on
sourceforge attempting to cure its "fn ptr" usage. Comes with a UI
builder Fluid, but I can't make heads or tails of Fluid.

Qt : excellent, best I've seen so far, easy to write, syntax is very
natural, UI builder is very good

So far it sounds like Qt is the best, one catch though...if you are
writing commercial applications, be prepared to fork out USD $1550 for
a single platform package (for more info, go to
http://www.trolltech.com/products/qt/pricing.html), because Qt comes
in both GPL and commercial versions. Also, there isn't a free version
for Win32, only a non-commercial, which you still pay for and cannot
be used for commercial work, and a commercial version.

If you don't have that kind of cash, use wxWindows if you have more
time, and use gtkmm if you have less.

Use FLTK only if none of the above are viable (I'm kind of biased
towards toolkits which have a native look and feel, fast development,
and a good UI builder, and FLTK only has speed in coding, so I don't
really like it)

If you are doing GPL software, use Qt, but you probably can't port it
to Win32, so it's either wxWindows or gtkmm (wx has more nativity, but
a bit slower coding)

Here's a summary of what I have said:

wxWindows : When you have no money, you need to develop commercially,
you have more time, and you go for native looks

gtkmm or GTK+ : When you have less time, no money, and you just want
it to look something like WIndows, but don't really care nitty-gritty
(commercial)

Qt : when you have $$, but, if you aren't looking towards Win32, use
its GPL versions(genera ted apps MUST be GPL)

FLTK : Use only when necessary (like can't obtain above)

P/s gtk+ and gtkmm and FLTK are supplied as LGPL, so always use shared
libraries (like DLLs or .so files)

P/ps Hope I was useful :)

P/pps Feel free to bludgeon me for my postscripts, but sorry if I am a
bit long winded :) Have a good day
Jul 22 '05 #18

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
4067
by: Timh Bergström | last post by:
Hi all! I have a couple of Fox Pro databases (*.dbf & *.cdx) without the foxpro database-project-file-something, so i have heard that you can use the _folder_ of the files, because the files are "tables" and connect to them through an ordinary visual basic statement, like Set objConn = New ADODB.Connection objConn.Open blahadatastring and so on...
5
1894
by: Asier | last post by:
Is there any plan to make bindings of the future fox toolkit 1.2.x for python? New widgets, antialiased fonts and so on is a "Good Thing". GTK is a pain, wxpython is horribly slow, and tkinter doesn't have good look and widgets are too basic. The bindings in http://fxpy.sf.net are very old and python 2.3 isn't supported. If you need bindings for linux it compiles without problems, but under Windows+VC6 I've had lots of problems, so...
0
1350
by: Floris van Manen | last post by:
Is there anyone who already ported python onto a acme-systems linux fox-board? http://www.acmesystems.it/
4
1268
by: Daylor | last post by:
first of all , PLEASE,say somthing..about my post. any reply will be nice to read. i have vb.app , with 2 appdomains. (now, in the next section , ill write "appdomain create" ,means a code in the appdomain is creating ) appdomain2 call appdomain 1 to create object of type "CCar" (the param is string ) the appdomain1 creating a object from assembly file. ( the object is of
2
1229
by: Chris Podmore | last post by:
I am trying to access some Fox Pro tables but for some table I get an odbcException: NO_DATA Some tables work and others don’t, anyone have any ideas? Any help will be much appreciated. Thanks in advance. Chris. Rather than include my applications actual code I have put some sample code
2
1820
by: Pete | last post by:
Well I've been sat here for hours twiddling with this code and it's time to scream for help. Hi there I'm a Student at Sheffield University programming the mapping section of a control system for a flight simulator. In order to do the graphical part required for the map we have an fox declared window with an OpenGL canvas in it (loosely based on the glviewer example which you get with the Fox toolkit download). Things have been going...
0
1155
by: dave | last post by:
Hey All This months Wisconsin Fox Valley Area .Net Users Group meeting is Wednesday, May 17, 2006 at 06:00 PM at Fox Valley Technical College If your plan to come please go to the site and register. http://fvnug.wi-ineta.org/ Topic:.NET compact Framework version 2.0 using Visual Studio 2005 Description: Damon will present the .NET compact Framework version 2.0 using Visual Studio 2005. The focus of the presentation will be how to get...
0
1235
by: keshabtsk | last post by:
I have a problem that to create an application which demands to transfer tthe data from Visual Fox Pro 6 to Oracle 8i. Oracle 8i is hosted on Windows 2003 Server. The application is required to be developed using Visual Basic 6. The Client from where the application is to be hosted is an Windows XP Machine where Developer 2000 Froms and reports are installed. I have installed the Oracle Client in the Cleint Machine. Visual Basic is connecting to...
1
1364
by: Kenneth McDonald | last post by:
Would anyone care to offer their opinions as to using Python with the FOX GUI toolkit? Ease of use, stability, power, speed, etc., all thoughts would be appreciated. Thanks, Ken
0
10438
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10214
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10164
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10001
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
7540
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6780
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5437
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5563
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4113
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.