#!perl use strict; use warnings; ## Import Perl modules use Tk; use Tk::Widget; use Tk::Date; use Tk::Menubutton; ## Display all shift types and create Radiobuttons for each my $shiftsframe; my $hlistbox; ########################### ## Global variables my ($endtime, $starttime); # start and end times of chosen shift ########################### ## Make Main Window my $mw = MainWindow->new (-title => 'opzTul'); $mw->resizable('false','true'); ########################### ## Make Main menu my $mainMenu = $mw -> Menu ( -type => 'menubar', -tearoff => 0); $mw->configure (-menu => $mainMenu); ########################### ## Make Admin Menu my $adminMenu = $mainMenu -> cascade ( -label => '~Admin', -tearoff => 0); my $reportsMenu = $mainMenu -> cascade (-label => '~Reports', -tearoff => 0); my $helpmenu = $mainMenu -> cascade ( -label => '~Help', -tearoff => 0); my $topframe = $mw -> Frame(-border => 1, -relief => 'sunken'); my $displaydate; my $date = $topframe->Date( -allarrows => 1, -choices => ['yesterday','today','tomorrow'], -value => 'now', -variable => \$displaydate, -fields => 'date', -selectlabel => 'Select', #-varfmt => 'datehash', ); my $shiftselect; my $All = $topframe->Radiobutton(-text => 'All day', -variable => \$shiftselect, -value => 'All' ); ########################### ## Make seperare frame for go button my $goframe = $mw->Frame; my $go = $goframe -> Button(-text => 'Go!', -width => 27, -command => [\&godate, \$displaydate, \$shiftselect] ); ########################### ## Make Middle Frames my $freshframe = $mw->Frame (-border => 1, -relief => 'sunken'); my $freshButton = $freshframe->Button (-text => 'Refresh', -width => 27, -command => [sub {$shiftsframe->DESTROY; &displayshifts; $hlistbox->DESTROY if (Exists($hlistbox)); &showhourlies; }] ); my $h1frame = $mw->Frame (-border => 1, -relief => 'sunken'); my $h2frame = $mw->Frame (-border => 1, -relief => 'sunken'); my $h3frame = $mw->Frame (-border => 1, -relief => 'sunken'); my $quitframe = $mw->Frame (-border => 1, -relief => 'sunken'); my $quitButton = $quitframe->Button ( -text => 'Quit', -width => 27, -command => \&quit); ########################### ## Make bindings to keys $mw -> bind ('', \&quit); ########################### ## Pack and build all elements of the window $topframe -> grid (-row => 2, -columnspan => 4, -sticky => 'n', -pady => 5, -padx => 5,); $date->pack; $All->pack; $goframe->grid (-row => 3, -columnspan => 4, -sticky => 'n', -pady => 5, -padx => 5, ); $All->select; $go->pack; $freshframe -> grid (-row => 4, -columnspan => 4, -sticky => 'n', -padx => 2, -pady => 2); $h1frame -> grid (-row => 5, -column => 3, -sticky => 'n', -padx => 2, -pady => 2); $h2frame -> grid (-row => 5, -column => 3, -sticky => 'n', -padx => 2, -pady => 2); $h3frame -> grid (-row => 5, -column => 3, -sticky => 'n', -padx => 2, -pady => 2); $quitframe -> grid (-row => 6, -columnspan => 4, -sticky => 'n', -padx => 2, -pady => 2); $freshButton->pack; $quitButton->pack; MainLoop; sub quit { print "Quitting ..\n"; $mw -> destroy; }