topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Saturday December 14, 2024, 4:57 am
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Author Topic: Lets talk about GUIs.  (Read 13483 times)

alivingspirit

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 167
    • View Profile
    • Donate to Member
Lets talk about GUIs.
« on: October 20, 2008, 11:22 AM »
Forget languages for a second, lets talk about GUI packages. It was the thing that always excited me the most about software development. There is something very satisfying about making and using a smooth and simple GUI and I have to marvel at the developers ingenuity. I have tried quite a few times to start learning GUI's of different types ( Tkinter, swing, QT, Wx ), but my progress has always been stunted by the lack of learning tools in this area. If you want to learn a language there are countless books to teach you the basics but when learning GUI packages the support always falls short on interesting material. Usually the packages come with a few basic examples and tutorials but its never really enough to get me off the ground. I guess its because for more advanced stuff they expect you to buy a builder, but a poor guy like me who wants and expects to be able to design it manually gets left to dust.
Please tell me about your experiences. Maybe you can share something to help me get out of this annoying mess.

housetier

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 1,321
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #1 on: October 20, 2008, 01:13 PM »
This is an interesting question, I hope it receives likewise interesting
answers.

I can't provide any help, for I have turned to web interfaces if I need an
interface.

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,153
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #2 on: October 20, 2008, 02:17 PM »
I'm one of those sad nutcases that tend to do raw Win32 API GUI programming. It might be LEAN_AND_MEAN, but it's tedious and unportable... One of my missions is to drop Win32 in favor of WTL (still lightweight and unportable, but lots less tedious than raw API), and pick up an easier-to-use and more portable toolkit as well.

I don't know which one to "buy into", though. Qt looks rather comprehensive, but I was always kinda put off by license (dunno if that has changed) + the fact you need to use their preprocessor as a build step. wxWidgets also seemed pretty nice, but iirc resulted in pretty fatty binaries. There's also FLTK, which felt a bit incomplete when I looked at it last (over a year ago though, iirc :))

I'd prefer something that has platform-native looks and is relatively light-weight. On the other hand, for larger projects, it would probably be smartest to go all-in and get a toolkit that not only does GUI, but also abstracts other things like threading?
- carpe noctem

CWuestefeld

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,009
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #3 on: October 20, 2008, 03:21 PM »
If you're just starting out, DO NOT attempt the Win32 API unless you have medical experts standing by.

For a first experience, I think you'' do best with a platform including tool offering a visual form designer. That way you can let it do much of the boring minutiae while you get a handle (so to speak ;)) on the paradigm.

I would recommend one of the .Net languages with their WinForms API. The various Express packages (VB, C#) contain all the tools you need for free. The bonus here is that unlike many other form designers, they don't persist the definitions into resource files or their ilk. Instead, they actually generate code that directly implements your visual design. You can either ignore this for the time being while jumping into the event-driven programming model, or you can poke into it and examine the code it generates to see some real life examples.

Eóin

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 1,401
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #4 on: October 20, 2008, 04:26 PM »
I've done a fair amount of searching the net on this topic because I still haven't found a GUI toolkit I'm completely satisfied with either. Here's what little bits of info I have gathered, sorry about the C++ bias but that just where my own interested primary lies. Also I've only ever been interesting in a toolkit with at least offers the native look when running on Windows.

Personally I use WTL these days. It's pretty complete, even makes doing Aero apps which can still support Win2k easy as pie. The WTL Wiki has a nice list of other C++ GUI toolkits too which worth checking out.

Qt is GPL if you don't pay for commercial license, so that means a no for me but I'm sure others wouldn't see that as a problem.

Gtk (and the Gtkmm C++ bindings) actually seems nice, and apps can look very native on Windows. The runtime seems heavy but it's possible to install it form a standalone package meaning in theory all Gtk based apps could share the dlls. In practise though it's usually trial and error to remove the binaries which ship with GTK apps to make them use the system install runtime, and if your mixing version there is probably big potential for issues. Still though I've had success getting Claws Mail and ruby GTK apps to share the Gimp's runtime.

wxWidgets always seemed too heavy to me as f0dder already mentioned. There is a modernized version in the work, wxTNG, but it seems to be early days for that still.

What really caught my attention is a C++ only library, OMGUI. It seemed to be dead in the water for the last few months but just now I see it's moved hosting SF.net. This is definitely one I'll be keeping an eye on.

All in all though, unless you're prepared to pay for Qt I can't really seem any other comparable alternative. So I'll be sticking with WTL for the time being, maybe looking into the WINX extensions. If I decide to try and do a portable app in the future I'll seriously give OMGUI a try.


mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,914
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #5 on: October 21, 2008, 03:43 AM »
The process of choosing a visual gui library is one of the more painful and confusing things you can do.. You are always playing a game of trying to balance many different concerns:
  • documentation
  • power
  • cross-platform support
  • cross-language support
  • speed
  • support
  • longevity
  • license

It's so hard to find a good balance for all of those things.. very stressful.

alivingspirit

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 167
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #6 on: October 23, 2008, 02:39 AM »
I guess this thread should be changed to - Lets NOT talk about GUIs.  :D

Eóin

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 1,401
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #7 on: October 23, 2008, 06:00 AM »
Ha, I guess the problems is that we don't have lots of alternatives about which to debate the merits of one choice over another :D

There was a really lovely collection of almost all the toolkits out there (for various languages) on the Boost.org Wiki. I wanted to link to it originally but it seems to have been spammed out of existence over the last few months.

Eóin

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 1,401
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #8 on: October 23, 2008, 06:12 AM »
I just found a version of it on Web Archive. Check this out for a comprehensive list (note comment aren't mine, all copied from the wiki to preserve it here too):

Attached is a copy of the page in case the webarchive version goes offline :)

CWuestefeld

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,009
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #9 on: October 23, 2008, 06:20 AM »
Check this out for a comprehensive list

It's a large list, but if it doesn't have WinForms, how comprehensive could it be? It's also missing Silverlight.

Eóin

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 1,401
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #10 on: October 23, 2008, 06:26 AM »
Good points, especially regards WinForms. It possibly out dates Silverlight, I'm not sure.

CWuestefeld

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,009
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #11 on: October 23, 2008, 07:05 AM »
...not to mention MFC (which I strongly advise that you avoid ;) )

mahesh2k

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,426
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #12 on: January 31, 2009, 10:00 AM »
Eoin

Juce -- http://www.rawmaterialsoftware.com/juce

You tried this. I found it good. But just have to see if it works on DevC++ and codebl;ocks. On VC ++2008 it works fine,.

Eóin

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 1,401
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #13 on: January 31, 2009, 12:25 PM »
Can't say I tried it to be honest. the GPL limitation was an instant turn off. Also in addition I don't tend to really like these all-encompassing frameworks.

While on the subject again though here is another to add to the list- eGUI by John Torjo. Seems a bit quick to claim he's the bee's knees but nonetheless his work is respected.

eGUI is the replacement for his earlier, and already mentioned above, Win32 GUI Generics library.

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #14 on: January 31, 2009, 06:54 PM »
Can't say I tried it to be honest. the GPL limitation was an instant turn off.
Ditto.

Also in addition I don't tend to really like these all-encompassing frameworks.
I have to say I once held the same opinion, until I realized that it's fairly pointless having a cross platform GUI framework, and then relying on the standard library for everything else. There is really just too many differences between the various platforms to code a large complete app without a complete framework.

Ehtyar.

[edit]
Since it seems we weren't discussing cross-platform here, I'll be shutting up now :S
[/edit]
« Last Edit: January 31, 2009, 06:56 PM by Ehtyar »

devunion

  • Participant
  • Joined in 2009
  • *
  • default avatar
  • Posts: 3
    • View Profile
    • Donate to Member
Re: Lets talk about GUIs.
« Reply #15 on: February 03, 2009, 12:57 PM »
I like Swing bery much it is powerful and flexible. Of course, it has some problems too. But all of them can be solved if you have enough experience.

It is not very good to forget about language. Because it introduce some limitations in scope of yousing GUI library.