gui development

Whenever I work on writing some patches for MythVideo, it always occurs to me that using MythTV is extreme overkill for what I’m doing.  I’m using a very small subset of its features, just creating a gallery view that is highly tweaked towards my preferences.  And that’s it.  Pretty simple, really.  Recently, though, the idea has been festering in my mind that I could probably write my own, and it’d be a good starter app for learning some C++.  I’ve found that learning a new skill goes invariably much faster when I have a practical example to apply it to.  I can’t just pick up a new language just because it seems like fun.  That just doesn’t go anywhere.

Anyway, writing a small GUI app to replace MythVideo for my needs seems like it’d be pretty simple.  It’s nothing really more than a visual filesystem frontend to my multimedia library, with cover images to individual files and folders.

The thing that is really driving me, though, is that in spite of the simplicity of the basic functions, I am extremely picky on presentation, navigation and UI.  I’ll never be able to pick up an “out of the box” media frontend package that is becoming so popular on the market now.  I just have so many ways that I want to organize and display the stuff that I’d never be able to live with a narrow set of parameters.  I don’t have an interface just to watch videos.  Mine is setup so that I can watch an entire series of a TV show, have it resume playback from each indivual file by itself and in relation to each other.  I also have random playlists that I generate myself.  And then I categorize, tag and shuffle my files all around the place.  Plus I’m getting to add movies as well as MP3s — not just music, but records, sometimes with accompanied video (kind of a slideshow effect).  Simple solutions just don’t fit me.

So, I finally bought a Qt programming book online today, so I’ll see where that takes me.  I don’t know why I never really thought about trying to integrate learning C++ with a GUI language as well … it just makes more sense, plus I have the example project that I can hack on.

And everytime I dive into C++ I just love it even more.  It’s cryptic, it’s confusing, it’s extremely strict and barks at you if you do the slightest thing wrong.  I’m a real perfectionist when it comes to writing code that I intend to be reliable and I love how C++ just whips you into shape.

I’ve toyed with the idea of rewriting my DVD ripping scripts in C++, but I don’t really see the point.  It’d be an idea, but not really a driven one.  I would, however, love to learn how to hack on libdvdread a bit to either fix some small bugs I’ve run into, or try to help me address some of the more rare issues that I’ve run into with my collection.  For instance, I got a bad DVD in a TV series the other day, and while my settop DVD player could kind of skip around it, dvdread absolutely choked and stopped reading.  Just little stuff like that would be fun to try and figure out if I could workaround.

Anyway, we’ll see.  I picked up a copy of this book for $5.  The reviews don’t look that great, but it might get me started a bit.  That’d be nice.

3 comments on “gui development

  1. nightmorph

    What. Qt?! Go get a nice book on gtk+, perhaps one of those gtkmm books that cover the C++ bindings.

    This one seems to be highly reviewed. Heck, it even has a continuously updated website so’s you can keep learning as new gtk+ features are added.

    I know you don’t run Krap or QrufT apps. Come away from the dark side. Step back into the light of gtk+.

    Reply
  2. Steve

    Yah, GTK+ is definately my eventual goal, but for now, it’d be easier to get the ball rolling if I keep it as simple as possible.

    Reply
  3. Ben

    I’d recommend you look at PyQt4. It’s really a breeze to whip up a GUI with it. You can get up and running so fast, that I personally found it the ideal way to get into programming. If only I could get myself to spend more time on it…

    I don’t see why you should spend so much time and energy on doing it in C++, when Python works just as well for this kind of application. But that’s me… 😉

    Reply

Leave a Reply