Macha
Macha

Reputation: 14664

Good Projects for learning desktop GUI programming

I am a mostly self taught programmer. When I learn a new language it usually goes like this:

Web programming provides plenty of possibilities for that something. Forums, blogs, social networks etc. The end result won't be the same quality as something properly done, but I can then download an open source program doing the same thing and compare to see if my code is good.

However, for a desktop GUI, I'm kind of stumped for ideas. Any suggestions on a reasonably complicated (but do-able) project to get used to desktop programming?

Upvotes: 1

Views: 3650

Answers (7)

l0b0
l0b0

Reputation: 58998

How about a diff viewer? It should be pretty simple to get the basics going, but there should be plenty of opportunities to improve the GUI beyond that (note that several of these features already exist in good diff viewers like Meld and Kdiff3):

  • Scroll so that the diffs appear as close as possible to each other (not trivial if lines have been removed/added)
  • Syntax highlighting using existing libraries like GeSHi
  • Option to "compact" text which is at least X lines away from any diff
  • Graceful handling of different encodings / line endings
  • Flipping left/right pane
  • Three-way diff
  • Directory diff
  • Smooth "tube" between diff lines

Upvotes: 3

macbirdie
macbirdie

Reputation: 16193

Even a simple instant messaging app will hold a few interesting problems to solve, like:

  • asynchronous network communication and handling those events in GUI
  • creating custom controls (e.g. contact roster with statuses and avatars)
  • working with shell drag and drop for file transfers
  • desktop notifications (incoming message) and other desktop integration features (handling Send To in windows maybe)
  • managing configuration state
  • providing power awareness - your app should for example disconnect from server before your computer goes into standby
  • handling user idle events
  • creating a chat window with a rich text message editor
  • etc.

Cool stuff!

Upvotes: 3

Wim ten Brink
Wim ten Brink

Reputation: 26692

A good desktop application would be a game. ;-) Then again, many games are moving towards internet connectivity but often have their own Internet logic. You could start with creating a nice cardgame, then move towards checkers or a simple Chess engine.
It might sound silly but good programmers are able to create interesting games. It's a great exercise between real projects.

Upvotes: 1

Nick
Nick

Reputation: 3347

  1. File explorer
  2. Clock application
  3. Calculator

Upvotes: 1

geowa4
geowa4

Reputation: 41853

Make one of your old Web applications using Eclipse Rich Client Platform. That should prove interesting, to say the least.

Upvotes: 2

Ben Hughes
Ben Hughes

Reputation: 14195

For an exciting intro project to the exciting world of desktop GUI programming (which is still completely trendy) you could write a simple invoice management tool for an accounts payable type operation. Make sure you include plenty of reporting options.

In all seriousness, I'd start off by trying to create a GUI for a command line tool that you like. That or an implementation of pong. Pong is always fun.

Upvotes: 1

balpha
balpha

Reputation: 50958

You could find an available (probably, but not necessarily, open-source) command line tool and write a GUI wrapper for it that makes handling the command line options easier. That should teach you a lot about finding the right UI metaphor and how to implement it.

Upvotes: 7

Related Questions