http://qs321.pair.com?node_id=588206

shotgunefx has asked for the wisdom of the Perl Monks concerning the following question:

I haven't played with TK in a bit but with my head aching at the thought of writing a bunch of SDL widgets to facilitate playlist entry on my media player, I'm thinking of just shelling out to a TK app to handle it.

I hate writing GUI, so I was wondering what everyone else does? Just suck it up and code it or are you using any tools to facilitate, at least the initial design?

Which got my thinking of a project I started in 2003 that translated HTML forms to a TK app. I only put in a day or two on it, but the initial run at it was promising. I wrote it more of a test of a HTML::Parser derivitive I was writing HTML::Parser::Context)

So aside from my initial question, anyone see any value in the latter approach?

A screenshot of a test form in Firefox and the Tk app generated

-Lee
"To be civilized is to deny one's nature."

Replies are listed 'Best First'.
Re: Tk Apps - Common approaches?
by zentara (Archbishop) on Dec 06, 2006 at 22:05 UTC
    Well the problem you had in your last post, about the premature exiting of your SDL script is solved by using the Tk event loop to keep everything alive. So Tk and SDL is an easy combination to put together. The script below is the basic Tk app, using SDL. All you need to do is setup lists, and load different files into the player. If you have a touch screen, it would be very easy to bind to a up / down icon, and scroll thru a list. You could setup volume controls, repeat, auto-play, and all sorts of cool checkbuttons.
    #!/usr/bin/perl -w use Tk; use SDL::Mixer; use SDL::Music; my $mw = MainWindow->new(title => "SDL audio"); $mixer = eval { SDL::Mixer->new(-frequency => 44100, -channels => 2, - +size => 1024); }; $mixer->music_volume(100); $music = new SDL::Music './1bb.wav' or die $!; $mixer->play_music($music,-1); #$mixer->play_music($sound,-1); #will not play simultaneously MainLoop;

    I'm not really a human, but I play one on earth. Cogito ergo sum a bum
      The SDL::Mixer was a poor example. I've already written the app for the most part(oriented towards touchscreen interface, but I was using XMMS for playback. Too much lag with large playlists on my laptop, so I decided to look at SDL::Mixer. I didn't know if it blocked while playing or was asynchronous. Hence not delaying in the example.

      My thought is to just shell out, edit and reload the playlist at this point. I'm pretty happy with the speed and level of control I have managing the interface myself with SDL.

      -Lee
      "To be civilized is to deny one's nature."