The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Tk::MultiMediaControls - Create media player control buttons.


 $mmc = $parent->MultiMediaControls(-option => value, ... );


Create multimedia controls similar to that found on Apple applications like QuickTime, iMovie, iDVD, iTunes, etcetera. This mega-widget accepts a -buttons option that specifies a list of controller buttons, and a series of specialized options that bind callbacks to those buttons.


A list of controller buttons: [ qw/ home rewind play stop fastforward / ]. You supply the callbacks that implement the above buttons, which nominally have this effect on the movie:

home - reset movie to first frame

rewind - play movie in fast reverse

play - a toggle: play movie at normal speed / pause movie

stop - stop movie (reset to first frame?)

fastforward - play movie in fast forward


Callbacks that are invoked when control buttons are pressed or released. Callbacks that include the string highlight are invoked when Button-1 is pressed and held. With the exception of the -leftcommand and -rightcommand, all other callbacks are invoked when Button-1 is released.

Three keys have special meanings that parallel Apple's bindings. The space bar (space) is bound to toggle the play/pause button. The left-arrow (Left) and right-arrow (Right) should, if possible, display the previous or next movie frame. Use -leftcommand and -rightcommand for this.


A MultiMediaControls widget has no additional methods.


This example creates a MultiMediaControls widget appropriate for a Tk::Animation widget:

 my $p   = $mw->Animation( -format => 'gif', -file => ' ... ' );
 my $mmc = $mw->MultiMediaControls(

     # Define, from left to right, the window's controller buttons.

     -buttons                     => [ qw/ home rewind play stop fastforward / ],

     # Define callbacks for the buttons' various states.

     -fastforwardhighlightcommand => [ $p => 'fast_forward',   4 ],
     -fastforwardcommand          => [ $p => 'fast_forward',   1 ],
     -homecommand                 => [ $p => 'set_image',      0 ],
     -pausecommand                => [ $p => 'pause_animation'   ],
     -playcommand                 => [ $p => 'resume_animation'  ],
     -rewindhighlightcommand      => [ $p => 'fast_reverse',  -4 ],
     -rewindcommand               => [ $p => 'fast_reverse',   1 ],
     -stopcommand                 => [ $p => 'stop_animation'    ],

     # Define callbacks for the left and right arrow keys.

     -leftcommand                 => [ $p => 'prev_image'        ],
     -rightcommand                => [ $p => 'next_image'        ],




Copyright (C) 2003 - 2004, Steve Lidie. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Apple, QuickTime, animation, multimedia, iMovie, iTunes


I'm sure there are end cases and errors that I've neglected to catch.