#!/usr/local/bin/perl -w # # tkskel, 1999/01/01. Stephen.O.Lidie@Lehigh.EDU # # Using Tk skeleton code generate a working Perl/Tk application. use 5.005; use strict; my $date = scalar localtime; die "Usage: tkskel program_name" unless $#ARGV == 0; my $prog_name = $ARGV[0]; if (-e $prog_name) { print "Really overwrite file $prog_name? [y/N]"; chomp($_ = ); exit if /^$/ or /^n/i; } open(PN, ">$prog_name") or die "Cannot open $prog_name for write: $!"; print PN map { s/(.*)1999\/01\/01(.*)/$1$date$2/; s/tkskel/$prog_name/g; $_ } ; close PN; chmod(0755, $prog_name) or die "Cannot chmod $prog_name: $!"; print "Skeleton program $prog_name written.\n"; __DATA__ #!/usr/local/bin/perl -w # # tkskel, 1999/01/01 use 5.005; use Tk 8.0; use Tk::widgets qw/Dialog/; use subs qw/build_menubar fini init/; use vars qw/$MW $VERSION/; use strict; $MW = MainWindow->new; init; MainLoop; sub build_menubar { # Create the menubar and File and Quit menubuttons. Note # that the cascade's menu widget is automatically created. my $menubar = $MW->Menu; $MW->configure(-menu => $menubar); my $file = $menubar->cascade(-label => '~File'); my $help = $menubar->cascade(-label => '~Help', -tearoff => 0); # Create the menuitems for each menu. First, the File menu item. $file->command(-label => "Quit", -command => \&fini); # Finally, the Help menuitems. $help->command(-label => 'Version'); $help->separator; $help->command(-label => 'About'); my $ver_dialog = $MW->Dialog(-title => 'tkskel Version', -text => "tkskel\n\nVersion $VERSION", -buttons => ['OK'], -bitmap => 'info'); my $about_dialog = $MW->Dialog(-title => 'About tkskel', -text => 'About tkskel', -buttons => ['OK']); my $menu = $help->cget('-menu'); $menu->entryconfigure('Version', -command => [$ver_dialog => 'Show']); $menu->entryconfigure('About', -command => [$about_dialog => 'Show']); $menubar; # return the menubar } # end build_menubar sub fini { exit; } # end fini sub init { $VERSION = '1.0'; $MW->title("tkskel $VERSION"); $MW->iconname('tkskel'); my $xpm = $MW->Photo(-data => &get_xpm, -format => 'xpm'); $MW->Icon(-image => $xpm); # full color icon picture my $menubar = build_menubar; my $frame = $MW->Frame(qw/-width 300 -height 50 -background cyan/)->pack; } # end init sub get_xpm { return << 'end-of-xpm'; /* XPM */ /* * This X Pixmap image was grabbed from http://www.skellramics.com, * and is used with permission of Skellramics-Signature Design. */ static char *tkskel[] = { /* width height num_colors chars_per_pixel */ " 100 64 57 1", /* colors */ ". c #000000", "# c #0000ce", "a c #080063", "b c #100010", "c c #1008a5", "d c #180808", "e c #180852", "f c #211008", "g c #212963", "h c #292110", "i c #420842", "j c #421808", "k c #52086b", "l c #524208", "m c #5a0000", "n c #5a4a42", "o c #63187b", "p c #633994", "q c #6b739c", "r c #73636b", "s c #737384", "t c #737bb5", "u c #841808", "v c #842939", "w c #846b4a", "x c #8c5a08", "y c #946b73", "z c #94847b", "A c #949c4a", "B c #9c0000", "C c #9c5a9c", "D c #9c7b94", "E c #9c8c94", "F c #9c8ca5", "G c #a5a573", "H c #ad847b", "I c #ad9c9c", "J c #b5b5c6", "K c #bd1008", "L c #bd2931", "M c #bd8439", "N c #bd8c9c", "O c #c65a73", "P c #c69c18", "Q c #c6ad5a", "R c #c6ada5", "S c #cecea5", "T c #d6b55a", "U c #d6bdc6", "V c #de7394", "W c #ded6d6", "X c #efc684", "Y c #efd663", "Z c #efd6d6", "0 c #ffe794", "1 c #ffefe7", "2 c #ffffff", /* pixels */ "###########################################c##ccccccccccc#cc########################################", "####################################ccccccccaaaaaaaaaaaaaaaac#######################################", "####################################ccccaaaacccttpttttcaacccacccc###################################", "#############################cccaaaaeeggtJJJJJJJJJWWFFessJttgggaaaccccc#############################", "###########################cc#aacccpttJJFJJFFFJFFWppggp22JWWJttppcaaccc#############################", "########################cccaaaeegqqJtttttJJJUUWWW1..rr1WWJJJJJJJJqggaaaccc##########################", "########################cccaacttJtttFFFFJJJJWWW22.rr22WJJFJJJJJJJJFFgaaacc##########################", "#####################accaaaggJJJtJJGqqSSSJJJFF2nnhFFJJSSSSJJJSSJJJJJJggebbccc#######################", "#####################aaaeppJJtttsqqJSSttSWWJJJJhhsJJSSJJJJJJ1JJJJWWWJJJqeeacccc#####################", "##################cccebbgWWttJWW1221SSSSEJJESSSssSWWSSSSSJJJJJJJJWJJtSSJsseaaccc####################", "################cccaaeggJ22WWwggnnnAJJ11SSSSttSWWWJJEESSSSJJSSSSSJJJStttJJtaaaac##c#################", "###############cccaaahFFWss.........wwIISGGJSStJJWJJSSSJJtJJtSSSSJSSSSSESSJttaaaccc#################", "#############cccaaaeeq22G.....ddhhhd..hhUSSSJJJJJSSSJJSJJSJJJJJJJJSSqSSSJJJJJtteaaa##c##############", "###########cccccaabqqUEE...ddndd.iihff..ASSSUUJWWSSSJJJWWJJJJGGSSSSSSssGUUsFFJJraaaccc##############", "###############caaaJJU...nnRR1rr.dd.ddddfZZJSSWWWSJJWWS22222JSSSSSSSGEEESSWGGttJppaccc##cc##########", "###########ccccaaagUUg..w11GGz11Wdd.dddd.SSWSSSJJESSSSSSSGSSSWWGGSJJSGGSEEWJJsssttgaaa##cc##########", "###########ccccaaaJFFb..nWWRRIRRFEEddddddGGWSSWJJ1SSGGnhhhllASSSSSSSJSSSGGJSSJJSJJgaaccc##c#########", "###########ccaaeeeWgg.dddhhWWWyyE22z....dSSSSSW11ndddd...ddd.hhSSWEESGGqSSSJJWWWJJsaaacccc#cc#######", "###########ccaaettFbbdbb...nnWWWIRR1nn..dWWSWWG...dd..ddd...d..ww1SSSEESSSSSSJJSJJJggacccc#cc#######", "###########ccaaeJJhbbd..dff..n11Z..IWWddlSSUSSh..rGGnn.dddddd....G11SGGSSSJJJSSESSJggbccccccc#cc###c", "##cc###c##caaaagJJb..d..f..ff.nn2ddn11nnS11W...nnIJJ11d..b..drr..nWWSGGsSSJSSUUsSSJeeeaaccccc#######", "###########aaaagJJ.ddbbbjffffdbbZWWGWWss111w..nIIRUU22zddd..n11rr.GGWGGGEESEESSGEEJggbccccccc#cc####", "cc###cc####ccaanFF....dd.ddff.ii1111JJII122.ddn..1WWyy1...hh1WW11.wwSGGGSSsGGSSsSSJssaccaaccc######c", "####c##ccc#aaccnrr.......hhdddwwD00XwwSS1ww.zznddH11hh1nnb22Whh11.AASAASAAGGGSSSSSGJJ.aaaaccc#cc#cc#", "cc###cc###cccaaggg211.fff..bb.vvRXXjSS001..njjf..n11hhZJJ2RRnII11.GGSGGSAAsGGGGGGGAJJbaaaaccc######c", "####c##c###aaaaesszUUr22srriiF11WQQwWWSS2nnrhh.ddi22UU2ZZZrrDWWII.SSSGGGAAAGGAAGhhhqqsaaaacaa#ccc##c", "##ccc#####cccaagFFbbbW2222211U222AA0SSUU2WW.dddff.CC11Z11UUU222gghUUSssAAAAAAAAA..Gsstaaaaaccc#####c", "cc###cc#cc#aaaabJJb..2222ZZ22IzzWSSSrrSS222.dd.ffdRRZZRMMY11U11..wWWGGGGqqArrSS...Gtttggeeacccccc###", "##cc###c##caaaabqqfbbbZZJWWJJJJJWGGl..nn222rdddddD2211HllXUURrr..ASSGGGGSSGJJGG...GttJeeeecaa#cc#cc#", "####ccc#cc#aaccbaaJnnbffnIISSGWWWhh.....111S...nn211ZZSQQXZZU..hhSSSGAAGSSW11hhd..WSSJbbeeaaacccccc#", "##cc###c##cccaabbbRSSZrrGSSRR2SSn..d....S11Uhh.11222SS1XX022NddUU0GGGAAGGGJEEdd...Sttqeeaaaccc##c##c", "ccccccc#cc#cc##aaahzz0ZZ0GGGGSGG....dd..AZZWzz222Urr11W110CC2nnIISGGAAAnAAwJJddd..WEEgeebbacccccccc#", "#####cc#ccccccceee.hhnAAGAAGGSww.dd2WWddS111WWU11n22RR.11Zhh2nnRRSGGnAAAhhRUUdd...SJJheeeeaaa#cc#cc#", "cccccccc##c####aaahhhfnnlGGAAGSS...2hh..100SWWJJJ1UUff.hh1RRiGGSSGAAAAAnll1zz...ddSqqbaaaacccccccccc", "##cc#cc#ccc####aaaehh.llfAAAAA11S.....rr0SS2111WWZEEhhfiiIWWzWWSSAddddddSSIbb...nnSggbaaaaacccccc##c", "cc##cccccc#ccccaaaebb.AAhddAAAAA1GGfEE22SGGSGG1WWW22JJI22WUUWGGAAdhhhddG11hbb...AAGggbaaaa#cc###cccc", "cccc#cc#ccccccccaaeee.hhddd..fllASS1UUJJSFFGEEWWWWJJWW2221IIrAAll.dd.hh1wwb....hSSAbbeaaccccccccccc#", "##cccccccc#ccaaaaagggbbbAllAAl..llllllllnAAlAAAllAGGSSGGGhlllnn..h..hrr1nnb....GGGdeeeccaacccc###ccc", "cccc#cc#cc#aacccaahggdbbSSSddlAAllllddlld..fdddllhdd..fddfddlffff2hhb222bb.ddhhGAA.eeeaaaa#cc#cccccc", "cccccccccccccccaaabggd..w11...AAA00YAAAAAAAlllllllffllllllAAdGG112nnI22......AAGggbaaacc##cccccccccc", "cccccccc##cccccaaaeggd...hhffIAAnddnAAAAYSSYGGAGGYllllldd...nWWWW2bbJUUb...nnGGhhheaaacccccccccccccc", "ccccccc#cccccccaaadgg.hhHddhh1221..dllnnlhhhhhn...hhhhnnnnddz22JJ2ddibb.ddhSSssheeaccacccccccccccccc", "ccccc##ccc#ccccaaabeehJJ2bbbb2ZZnhh11111hddS22WSS.SS11S111ffIWWWW1..ddd...GGGgg.aaaaaccccccccccccccc", "cc##ccc#cccccccaccbeeh22hrr..r22bjj11111zII2ZZ211bRR112221ddD1122z..fff.rrSrrbbecccccccccccccccccccc", "cccc#ccc###ccccaaabeebWWD11hhbWWbzzZWW11rss2WWW22.II22WWWZbbhWWzz.ddb..dGGEhheeeaaa##ccccccccccccccc", "ccccc##ccccccccaaabggb1111122snn.2211111zDDZWW222brr22UWW2dd.dd...ff.ddGSSs..aaacccaaccc##c##c##cccc", "cc##ccc#cc#ccccaaabii.WW2rr22122ill11111rrr2WWW22rddWW1WW1..h....f..dffWAAs..aaacccccccccccccccccccc", "cccccccccccccccaaaegg.nn1II22Z221..E1122Rnn111WZZUbb22211i..b..ffU...11AGGr..aaacccaaccccccccccccccc", "cccccccccccccccaaabbb.rr1WWWW1ssnWWhhhJJE..WUU2WWD..hhi..hiidII11R..jWWAAAg..aaaccccca##cccccccccccc", "cccccccccccaaccaaariibhh2IIZZ1..1222II..rzzhii.yyWJJddibb122UzzZZbhhWSSAAAr..ccacccccccccccccccccccc", "cccccaacaacccaaaaatssdddi2222nhh2WW1WWss111Z22nyy211ssb112WWnrrUU.111SSAAAgbbaaacccaaccccccccccccccc", "aaccaccaccaaaccebbIssb..d2211bWW1UU1RRnn111Z11ydd211RRb111yyh11rrf221GGAGGg..aaaaaacccaacccaacccaccc", "cccccaacaacaaaaaaaRFFrhh.bbbbb111UU1JJhh2JJ1WWnrr2WWWWbnn1UUJZZ..d22SGGAAAg..eeaccaccaccaacccccccccc", "ccaacaacaaaeeeebbbEUUUSSn.....DD2222UUrrz222EE.ZZ22222hjjZIIynnbbW22GAAGAAn..eebaaaaaacccccaacaacaac", "ccccaccaaaaeeeerrrESSJSS2SSnn....nnI22IIR111..b22222UUhyy1wwdbbnn2SSGGGAAAnbbbbaeeaaacaaccaccccccccc", "ccaaaeeeeeeiirrmiiw00WUUW2222Whhb.....ffrNNUZZUrrZ11ZZnEEZhh.ddXXWGGGGGGAArRRVVvbbbiibeeeeaaaaaacaac", "aaaaaiiikkoUU22VyynAASSSSRRJJ2WW2ZZrff...ffbiivyyfvvwwhbbh..h11ZZSrrGssGAANvvffmiiikkoiieeeeeaccacca", "aaeeekkyVVvjjbbONNylllwwAwwPPA00111W11220IIzllhnnd........nn100GGGGGGSSGhhmbbmmOOOLLLvvviiiiieaaaaaa", "aaiiiffiooNVVUUOiiwrrlhhlllddlnnwSSSSSWWW111112221JJrrnrrS11ZGGGGGGGGAAArrRDDLLiBBBvvviiVVNooeeeaaac", "kkoovCCVOOVVVVVVOOyyyvffjMMlllllllllAAAAAQQYSSSSSW11ZZZ11ZSSGGGGGEGGAnnrUURCCmmuLLVVVVVVVVyOOFiiaeea", "yyooVCCyLLvvvOOVUUZNNvjjwMMAAPnnxllllllllAAAAAAAAGAAGGUWWGAAAAAnnAAAhllOVV12211UKKLVV1OOVVVCCCrreeea", "vvmmZ11CVVvmmmmmuumjjfjjlvvllwYYTPPPllfflllfllllllxxAAxxxlnnAnnllh..fHHUNNNCCvvVOOLvvvvviiVZZUrrbbba", "ooVVvkkCLLLUUUUmmmmfffOOjjjddjmmxPPPllAAPAAxxxlddllllllnnxhhlffdd.ffNZZNHHC11UUOvvvLLVUUvvrOOCrraeea", "mmVVZLLmvvuOOVVBLLVZZUmmummMMujjjffxnnllwwwwwwlwwQwwxxAllfllmmmjjOuuymmwZZNmmmmOOOVLLvUUZZLvvvUUrbba" }; end-of-xpm } # end get_xpm