Tk-804.033/000755 001750 001750 00000000000 12472123206 013070 5ustar00eserteeserte000000 000000 Tk-804.033/pod/000755 001750 001750 00000000000 12472123206 013652 5ustar00eserteeserte000000 000000 Tk-804.033/PNG/000755 001750 001750 00000000000 12472123205 013513 5ustar00eserteeserte000000 000000 Tk-804.033/demos/000755 001750 001750 00000000000 12472123205 014176 5ustar00eserteeserte000000 000000 Tk-804.033/pTk/000755 001750 001750 00000000000 12472123206 013626 5ustar00eserteeserte000000 000000 Tk-804.033/Tk/000755 001750 001750 00000000000 12472123205 013445 5ustar00eserteeserte000000 000000 Tk-804.033/JPEG/000755 001750 001750 00000000000 12472123205 013614 5ustar00eserteeserte000000 000000 Tk-804.033/t/000755 001750 001750 00000000000 12472123206 013333 5ustar00eserteeserte000000 000000 Tk-804.033/HList/000755 001750 001750 00000000000 12472123205 014112 5ustar00eserteeserte000000 000000 Tk-804.033/TixGrid/000755 001750 001750 00000000000 12472123205 014441 5ustar00eserteeserte000000 000000 Tk-804.033/debug.bat000755 001750 001750 00000000615 12241531453 014654 0ustar00eserteeserte000000 000000 @perl -Sx %0.bat %* @goto end_of_perl #!perl -w my $perl = $^X; $perl .= '.exe' unless $perl =~ /\.exe$/i; unless (-x $^X) { my $leaf = $perl; foreach my $dir (split(/;/,$ENV{'Path'})) { my $try = "$dir/$leaf"; if (-x $try) { $perl = $try; $perl =~ tr,\\,/,; last; } } } print join(' ',$perl,$0,@ARGV),"\n"; system("gdb $perl"); __END__ :end_of_perlTk-804.033/Compound/000755 001750 001750 00000000000 12472123205 014653 5ustar00eserteeserte000000 000000 Tk-804.033/chnGlue.c000644 001750 001750 00000006636 12241531453 014635 0ustar00eserteeserte000000 000000 /* Copyright (c) 1997-2003 Nick Ing-Simmons. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. */ #include #include #include #include "tkGlue.def" #include "pTk/tkPort.h" #include "pTk/tkInt.h" #include "tkGlue.h" static char *Lang_Utf8ToBytes(CONST char *src); Tcl_Channel Tcl_OpenFileChannel(interp,fileName,modeString,permissions) Tcl_Interp *interp; CONST char *fileName; CONST char *modeString; int permissions; {PerlIO *f = PerlIO_open(Lang_Utf8ToBytes(fileName),modeString); /* Hopefully every fileName here should be translated back to octets ... */ if (!f) { /* FIXME - use strerr() or perl's equivalent */ if (interp) Tcl_SprintfResult(interp,"Cannot open '%s' in mode '%s'",fileName, modeString); } return (Tcl_Channel) f; } Tcl_Channel Tcl_FSOpenFileChannel(interp, pathPtr, modeString, permissions) Tcl_Interp *interp; /* Interpreter for error reporting; * can be NULL. */ Tcl_Obj *pathPtr; /* Name of file to open. */ CONST char *modeString; /* A list of POSIX open modes or * a string such as "rw". */ int permissions; /* If the open involves creating a * file, with what modes to create * it? */ { return Tcl_OpenFileChannel(interp, Tcl_GetString(pathPtr), modeString, permissions); } Tcl_Channel Tcl_GetChannel (Tcl_Interp *interp,CONST char *chanName, int *modePtr) { Tcl_SprintfResult(interp,"Tcl_GetChannel %s not implemeted",chanName); return NULL; } int Tcl_Read(chan,bufPtr,toRead) Tcl_Channel chan; char *bufPtr; int toRead; { PerlIO *f = (PerlIO *) chan; return PerlIO_read(f,bufPtr,toRead); } int Tcl_Write(chan, buf, count) Tcl_Channel chan; CONST char *buf; int count; { PerlIO *f = (PerlIO *) chan; if (count < 0) count = strlen(buf); return PerlIO_write(f,buf,count); } int Tcl_WriteChars(Tcl_Channel chan, CONST char * src, int srcLen) { return Tcl_Write(chan, (char *) src, srcLen); } Tcl_Channel Tcl_GetStdChannel(int type) { switch(type) { case TCL_STDIN: return (Tcl_Channel) PerlIO_stdin(); case TCL_STDOUT: return (Tcl_Channel) PerlIO_stdout(); case TCL_STDERR: return (Tcl_Channel) PerlIO_stderr(); } return NULL; } int Tcl_Close(interp,chan) Tcl_Interp *interp; Tcl_Channel chan; { return PerlIO_close((PerlIO *) chan); } Tcl_WideInt Tcl_Seek(Tcl_Channel chan, Tcl_WideInt offset, int mode) { PerlIO_seek((PerlIO *) chan, offset, mode); return PerlIO_tell((PerlIO *) chan); } int Tcl_Eof(Tcl_Channel chan) { PerlIO *f = (PerlIO *) chan; return PerlIO_eof(f); } int Tcl_SetChannelOption(Tcl_Interp *interp, Tcl_Channel chan, CONST char *optionName, CONST char *newValue) { PerlIO *f = (PerlIO *) chan; if (LangCmpOpt("-translation",optionName,-1) == 0 || LangCmpOpt("-encoding",optionName,-1) == 0 ) { if (strcmp(newValue,"binary") == 0) { dTHX; PerlIO_binmode(aTHX_ f,'+',O_BINARY,Nullch); return TCL_OK; } } warn("Set option %s=%s on channel %d", optionName, newValue, PerlIO_fileno(f)); return TCL_OK; } char * Lang_Utf8ToBytes(CONST char *src) { SV* sv = newSVpv(src,0); sv_2mortal(sv); sv_utf8_decode(sv); return SvPVbyte_nolen(sv); } Tk-804.033/examples/000755 001750 001750 00000000000 12472123206 014706 5ustar00eserteeserte000000 000000 Tk-804.033/config/000755 001750 001750 00000000000 12472123205 014334 5ustar00eserteeserte000000 000000 Tk-804.033/evtGlue.c000644 001750 001750 00000005520 12241531453 014652 0ustar00eserteeserte000000 000000 /* Copyright (c) 1998-2003 Nick Ing-Simmons. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. */ #include #include #include #include "tkGlue.def" #include "pTk/tkPort.h" #include "pTk/tkInt.h" #include "tkGlue.h" typedef struct PerlEvent { Tcl_Event header; /* Information that is standard for * all events. */ SV *infoPtr; /* Pointer to file info structure. Note * that we still have to verify that the * file exists before dereferencing this * pointer. */ } PerlEvent; static int initialized; static void PerlEventInit(void); static void PerlSetupProc(ClientData data, int flags) { static Tcl_Time blockTime = { 0, 0 }; if (!(flags & TCL_FILE_EVENTS)) { return; } /* * Check to see if there is a ready file. If so, poll. */ #if 0 for (infoPtr = firstPerlPtr; infoPtr != NULL; infoPtr = infoPtr->nextPtr) { if (infoPtr->watchMask) { Tcl_SetMaxBlockTime(&blockTime); break; } } #endif } static void PerlCheckProc(data, flags) ClientData data; /* Not used. */ int flags; /* Event flags as passed to Tcl_DoOneEvent. */ { PerlEvent *evPtr; SV *infoPtr; if (!(flags & TCL_FILE_EVENTS)) { return; } /* * Queue events for any ready files that don't already have events * queued (caused by persistent states that won't generate WinSock * events). */ #if 0 for (infoPtr = firstPerlPtr; infoPtr != NULL; infoPtr = infoPtr->nextPtr) { if (infoPtr->watchMask && !(infoPtr->flags & FILE_PENDING)) { infoPtr->flags |= FILE_PENDING; evPtr = (PerlEvent *) ckalloc(sizeof(PerlEvent)); evPtr->header.proc = PerlEventProc; evPtr->infoPtr = infoPtr; Tcl_QueueEvent((Tcl_Event *) evPtr, TCL_QUEUE_TAIL); } } #endif } static int PerlEventProc(Tcl_Event *evPtr, int flags) { PerlEvent *perlEvPtr = (PerlEvent *)evPtr; SV *infoPtr; if (!(flags & TCL_FILE_EVENTS)) { return 0; } /* * Search through the list of watched files for the one whose handle * matches the event. We do this rather than simply dereferencing * the handle in the event so that files can be deleted while the * event is in the queue. */ #if 0 for (infoPtr = firstFilePtr; infoPtr != NULL; infoPtr = infoPtr->nextPtr) { if (fileEvPtr->infoPtr == infoPtr) { infoPtr->flags &= ~(FILE_PENDING); Tcl_NotifyChannel(infoPtr->channel, infoPtr->watchMask); break; } } #endif return 1; } static void PerlExitHandler(ClientData clientData) { Tcl_DeleteEventSource(PerlSetupProc, PerlCheckProc, NULL); initialized = 0; } static void PerlEventInit(void) { initialized = 1; Tcl_CreateEventSource(PerlSetupProc, PerlCheckProc, NULL); Tcl_CreateExitHandler(PerlExitHandler, NULL); } Tk-804.033/keyWords000755 001750 001750 00000002212 12241531453 014623 0ustar00eserteeserte000000 000000 #!/usr/local/bin/perl -w use File::Find; %words = (); open(KEY,"pTk/Methods.def") || die "Cannot open pTk/Methods.def:$!"; while () { if (/\(\("(.*)",NULL\)\)/) { my @words = split(/","/,$1); my $word; foreach $word (@words) { next if ($word =~ /^[A-Z]/); unless (exists $words{$word}) { $words{$word} = 1; } } } } close(KEY); $words = '('.join('|',keys %words).')'; sub match { while (/sub\s+\b(${words}[A-Za-z]+|[A-Za-z]+${words})\b/go) { unless (exists $word{$1}) { print STDERR "$1 '$2/$3'\n"; $word{$1} = [] } push(@{$word{$1}},"${File::Find::name}:$."); } return 0; } sub wanted { $File::Find::prune = 0; if (-T $_ && !/%$/) { if (/\.pm$/) { local $file = ($_); local ($_); open($file,"<$file") || die "Cannot open $file:$!"; while (<$file>) { last if &match; } close($file); } } elsif (-d $_) { $File::Find::prune = 1 if (/^(blib|Pod|HTML)$/); } } @ARGV = '.' unless (@ARGV); find(\&wanted,@ARGV); foreach (sort keys %word) { print "$_:",join(' ',@{$word{$_}}),"\n"; } Tk-804.033/Contrib/000755 001750 001750 00000000000 12472123205 014467 5ustar00eserteeserte000000 000000 Tk-804.033/Menubutton/000755 001750 001750 00000000000 12472123205 015227 5ustar00eserteeserte000000 000000 Tk-804.033/Event/000755 001750 001750 00000000000 12472123205 014150 5ustar00eserteeserte000000 000000 Tk-804.033/DragDrop/000755 001750 001750 00000000000 12472123205 014571 5ustar00eserteeserte000000 000000 Tk-804.033/Xlib/000755 001750 001750 00000000000 12472123205 013765 5ustar00eserteeserte000000 000000 Tk-804.033/PPM-HowTo000644 001750 001750 00000012456 12241531453 014516 0ustar00eserteeserte000000 000000 From ach@mpe.mpg.de Mon, 09 Nov 1998 19:04:54 +0100 Return-Path: Received: from alfred.itg.ti.com by tiuk.ti.com (SMI-8.6/SMI-SVR4) id SAA14673; Mon, 9 Nov 1998 18:07:04 GMT Received: from gatekeep.ti.com (ti.com [192.94.93.61] (may be forged)) by alfred.itg.ti.com (8.8.8/8.8.8) with ESMTP id MAA12465; Mon, 9 Nov 1998 12:07:02 -0600 (CST) Received: from lists.Stanford.EDU (lists.Stanford.EDU [171.64.14.232]) by gatekeep.ti.com (8.8.8) with ESMTP id MAA21574; Mon, 9 Nov 1998 12:06:59 -0600 (CST) Received: (from daemon@localhost) by lists.Stanford.EDU (8.8.5/8.7.1) id KAA28797 for ptk-out271740; Mon, 9 Nov 1998 10:05:29 -0800 (PST) Received: from o05.xray.mpe.mpg.de (o05.xray.mpe.mpg.de [130.183.72.185]) by lists.Stanford.EDU (8.8.5/8.7.1) with SMTP id KAA28776 for ; Mon, 9 Nov 1998 10:05:04 -0800 (PST) Received: (qmail 5764 invoked from network); 9 Nov 1998 18:04:54 -0000 Received: from o09.xray.mpe.mpg.de (130.183.72.189) by o05.xray.mpe.mpg.de with SMTP; 9 Nov 1998 18:04:54 -0000 Received: by o09.xray.mpe.mpg.de (5.65v4.0) id AA02416; Mon, 9 Nov 1998 19:04:54 +0100 Message-Id: <9811091804.AA02416@o09.xray.mpe.mpg.de> X-Mailer: exmh version 2.0.2 2/24/98 X-Uri: http://www.xray.mpe.mpg.de/~ach/ X-Face: #9R9$}Qu$q4/+(Y7T(Qfo8cup>^yR8B0wY4IH1)}*1E49K8~;Wi0PXITA"<Pi3$mxf36$b1V'u?%-72[ax;U+^t~XCiBWd5:1aDjts)QDu@{p)e@Nou\8b}Z @`+y-uk-i_7EhtDuv`v$vB0-\83`_-f{aXn%olFdX'UC\9Bl)_U-_,.UPZ9C?Q:E-r@(8/h#OJF8n+ OuC0Rl&[^vWU#enrm$xh& From: Achim Bohnet To: ptk@lists.stanford.edu Cc: Murray Nesbitt Subject: FYI: PPM recipe for module authors Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 09 Nov 1998 19:04:54 +0100 Sender: owner-ptk@lists.Stanford.EDU Precedence: bulk X-UIDL: d0376b9e195a09450d52590466dca4ba X-Netscape-Folder: Ptk X-Mozilla-Status: 0005 Due to the explanations of Murray Nesbitt I was able to produce a PPM compliant distribution of Tk-Pod that can be installed with ActiveStates ppm.pl tool. I know it's a bit of topic but several people on the list had their fights with this subject... I've tried/verified the procedure below on Digitial Unix with perl 5.005_01 so some of the pitfalls may not be present using ActivePerl on Win* 1) Add to WriteMakefile() call in Makefile.PL the attributes ABSTRACT => 'A description of your module', AUTHOR => 'Author Name (email@addr)', Pitfall: o '<' and '>' are not escaped in generated ppd file so one better used above format instead of a proper email address like: Author Name ..., ...) o There seems to be some confusion about modules versus distributions in the PPM business because PREREQ_PM => { This::Module => $min_version, ... } that is used to track module dependencies, is translated into a 'distribution like' dependency in the PPD file 2) run 'perl Makefile.pl BINARY_LOCATION=x86/Dist-Name.tar.gz' where Dist-Name is the name of the distribution, e.g., Tk-Pod in my case. 3) run 'make ppd'. This will create a Dist-Name.ppd file, e.g., Tk-Pod.ppd in my case. Pitfall: o if you are not on Win* system you have to replace the with (of course this fix only works for pure perl distributions) 4) run 'make' Pitfall: o I assume that on Win* scripts listed in EXE_FILES would be wrapped into a .bat. Generation on Unix does not do it of course. 5) tar and gzip the resulting blib directory 'tar cvf module.tar blib' 'gzip module.tar' 6) Create a directory that is accessible via WWW and copy the ppd file into it. Place the tar ball of the blib directory relative to the ppd file with the relative path used in step 2) /path/to/ppm/Dist-Name.ppd /path/to/ppm/x86/Dist-Name.tar.gz 7) Now one sould be able to install it with ppm.pl from an Win* box running ActivePerl with ppm.pl ppm> install http://www.our.server/my/ppd/Dist-Name.ppd Pitfall: o Look like at least 'search' command uses some more magic. Setting the ppm.pl repository to the URL of the direcotory with the just created .ppd file returns HTML 'code' of the direcotory listing, generated by apache, instead of a list of (one) PPM distribution. That's it. If someone is adventuresome enough, try with ppm.pl install http://www.xray.mpe.mpg.de/~ach/ptk/ppm/Tk-Pod.ppd or set repository ACH http://www.xray.mpe.mpg.de/~ach/ptk/ppm install Tk-Pod Worked for my on NT 4.03 with ActivePerl build 504. One can of course inspect http://www.xray.mpe.mpg.de/~ach/ptk/ppm with a WWW browser to check the input used by ppm.pl Hope this helps to create one's own PPM distribution, Achim ========================================================================== This message was posted through the Stanford campus mailing list server. If you wish to unsubscribe from this mailing list, send the message body of "unsubscribe ptk" to majordomo@lists.stanford.edu Tk-804.033/WinPhoto/000755 001750 001750 00000000000 12472123205 014636 5ustar00eserteeserte000000 000000 Tk-804.033/wal000755 001750 001750 00000000163 12241531454 013603 0ustar00eserteeserte000000 000000 #!/bin/sh truss -topen -o /tmp/wal perl -Mblib "$@" perl -ne 'print "$1\n" if (m#(Tk/.*)\.al.*=\s+\d+#)' /tmp/wal Tk-804.033/Scrollbar/000755 001750 001750 00000000000 12472123205 015012 5ustar00eserteeserte000000 000000 Tk-804.033/TextList/000755 001750 001750 00000000000 12472123206 014650 5ustar00eserteeserte000000 000000 Tk-804.033/TixPixmap/000755 001750 001750 00000000000 12472123205 015012 5ustar00eserteeserte000000 000000 Tk-804.033/hackMM000755 001750 001750 00000000453 12241531453 014161 0ustar00eserteeserte000000 000000 #!/usr/local/bin/perl -w use File::Find; @files = (); sub wanted { if (/^Makefile.PL$/) { push(@files,"$File::Find::dir/$_"); } } find(\&wanted,"."); @ARGV = @files; $^I = ".old"; while (<>) { if (s/\$Version\b/\$myVersion/g) { print STDERR "$ARGV:$.:$_"; } print; } Tk-804.033/xt/000755 001750 001750 00000000000 12472123205 013522 5ustar00eserteeserte000000 000000 Tk-804.033/Scale/000755 001750 001750 00000000000 12472123205 014116 5ustar00eserteeserte000000 000000 Tk-804.033/exetype000644 001750 001750 00000002741 12241531453 014503 0ustar00eserteeserte000000 000000 #!perl -w use strict; unless (@ARGV == 2) { print "Usage: $0 exefile [CONSOLE|WINDOWS]\n"; exit; } unless ($ARGV[1] =~ /^(console|windows)$/i) { print "Invalid subsystem $ARGV[1], please use CONSOLE or WINDOWS\n"; exit; } my ($record,$magic,$offset,$size); open EXE, "+< $ARGV[0]" or die "Cannot open $ARGV[0]: $!"; binmode EXE; read EXE, $record, 32*4; ($magic,$offset) = unpack "Sx58L", $record; die "Not an MSDOS executable file" unless $magic == 0x5a4d; seek EXE, $offset, 0; read EXE, $record, 24; ($magic,$size) = unpack "Lx16S", $record; die "PE header not found" unless $magic == 0x4550; die "Optional header not in NT32 format" unless $size == 224; seek EXE, $offset+24+68, 0; print EXE pack "S", uc($ARGV[1]) eq 'CONSOLE' ? 3 : 2; close EXE; __END__ =head1 NAME exetype - Change executable subsystem type between "Console" and "Windows" =head1 SYNOPSIS C:\perl\bin> copy perl.exe guiperl.exe C:\perl\bin> exetype guiperl.exe windows =head1 DESCRIPTION This program edits an executable file to indicate which subsystem the operating system must invoke for execution. You can specify any of the following subsystems: =over =item CONSOLE The CONSOLE subsystem handles a Win32 character-mode application that use a console supplied by the operating system. =item WINDOWS The WINDOWS subsystem handles an application that does not require a console and creates its own windows, if required. =back =head1 AUTHOR Jan Dubois =cut Tk-804.033/Tixish/000755 001750 001750 00000000000 12472123205 014337 5ustar00eserteeserte000000 000000 Tk-804.033/bin/000755 001750 001750 00000000000 12472123205 013637 5ustar00eserteeserte000000 000000 Tk-804.033/Mwm/000755 001750 001750 00000000000 12472123205 013627 5ustar00eserteeserte000000 000000 Tk-804.033/Listbox/000755 001750 001750 00000000000 12472123205 014513 5ustar00eserteeserte000000 000000 Tk-804.033/rebuild000755 001750 001750 00000001243 12241531453 014445 0ustar00eserteeserte000000 000000 #!/usr/local/bin/new/perl -w open(STDERR,">&STDOUT") || die "Cannot redirect STDERR"; $| = 1; use Cwd; my $host = `uname -n`; chomp($host); my $cwd = getcwd(); print "$host in $cwd executing $0\n"; print $ENV{'PATH'},"\n"; #System("make",'-f','Makefile.old',"clean") if -f "Makefile.old"; #System("make","clean") if -f "Makefile"; System("cleanup"); System("$^X","Makefile.PL"); System("time","make","parallel"); sub System { print join(' ',@_),"\n"; my $pid = fork; if ($pid) { local %SIG; $SIG{INT} = sub { warn "\nInterrupt"; kill 9,$pid; exit 1 }; wait; die "Error $?" if ($?); } else { exec(@_) || die "Cannot exec".join(' ',@_).":$!"; } } Tk-804.033/vtab.def000644 001750 001750 00000010045 12241531454 014506 0ustar00eserteeserte000000 000000 #define IMPORT_VTABLE(ptr,type,name) do { \ ptr = INT2PTR(type *,SvIV(get_sv(name,GV_ADDWARN|GV_ADD))); \ if ((*ptr->tabSize)() != sizeof(type)) { \ Perl_warn(aTHX_ "%s wrong size for %s",name,#type); \ } \ } while (0) #ifdef WIN32 #define DECLARE_VTABLES \ LangVtab *LangVptr; \ TcldeclsVtab *TcldeclsVptr; \ TkVtab *TkVptr; \ TkdeclsVtab *TkdeclsVptr; \ TkeventVtab *TkeventVptr; \ TkglueVtab *TkglueVptr; \ TkintVtab *TkintVptr; \ TkintdeclsVtab *TkintdeclsVptr; \ TkintplatdeclsVtab *TkintplatdeclsVptr;\ TkintxlibdeclsVtab *TkintxlibdeclsVptr;\ TkoptionVtab *TkoptionVptr; \ TkplatdeclsVtab *TkplatdeclsVptr #define IMPORT_VTABLES do { \ IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \ IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \ IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \ IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \ IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \ IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \ IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \ IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \ IMPORT_VTABLE(TkintplatdeclsVptr,TkintplatdeclsVtab,"Tk::TkintplatdeclsVtab"); \ IMPORT_VTABLE(TkintxlibdeclsVptr,TkintxlibdeclsVtab,"Tk::TkintxlibdeclsVtab"); \ IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \ IMPORT_VTABLE(TkplatdeclsVptr , TkplatdeclsVtab,"Tk::TkplatdeclsVtab"); \ } while (0) #else #define DECLARE_VTABLES \ LangVtab *LangVptr; \ TcldeclsVtab *TcldeclsVptr; \ TkVtab *TkVptr; \ TkdeclsVtab *TkdeclsVptr; \ TkeventVtab *TkeventVptr; \ TkglueVtab *TkglueVptr; \ TkintVtab *TkintVptr; \ TkintdeclsVtab *TkintdeclsVptr; \ TkoptionVtab *TkoptionVptr; \ XlibVtab *XlibVptr #define IMPORT_VTABLES do { \ IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \ IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \ IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \ IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \ IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \ IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \ IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \ IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \ IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \ IMPORT_VTABLE(XlibVptr , XlibVtab,"Tk::XlibVtab"); \ } while (0) #endif #define DECLARE_TIX \ TixVtab *TixVptr; \ TixintVtab *TixintVptr #define IMPORT_TIX do { \ IMPORT_VTABLE(TixVptr , TixVtab,"Tk::TixVtab"); \ IMPORT_VTABLE(TixintVptr , TixintVtab,"Tk::TixintVtab"); \ } while (0) #define DECLARE_PHOTO \ ImgintVtab *ImgintVptr; \ TkimgphotoVtab *TkimgphotoVptr #define IMPORT_PHOTO do { \ IMPORT_VTABLE(ImgintVptr , ImgintVtab,"Tk::ImgintVtab"); \ IMPORT_VTABLE(TkimgphotoVptr , TkimgphotoVtab,"Tk::TkimgphotoVtab"); \ } while (0) #define DECLARE_EVENT \ TkeventVtab *TkeventVptr #define IMPORT_EVENT do { \ IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \ } while (0) #define DECLARE_TIXXPM \ TiximgxpmVtab *TiximgxpmVptr #define IMPORT_TIXXPM do { \ IMPORT_VTABLE(TiximgxpmVptr , TiximgxpmVtab,"Tk::TiximgxpmVtab"); \ } while (0) Tk-804.033/README.linux000644 001750 001750 00000007626 12242354004 015116 0ustar00eserteeserte000000 000000 System prerequisites for Perl/Tk on Linux Of course a C compiler (e.g. gcc) and a make tool (e.g. GNU make) needs to be installed. Additionally, some libraries and include files are required: Debian, Ubuntu: The following system packages should be installed: libx11-dev (minimal requirement for basic compilation of Perl/Tk) libfreetype6-dev libxft-dev (for freetype support, XFT=1) libpng-dev libz-dev (for using system library for Tk::PNG) libjpeg-dev (for using system library for Tk::JPEG) CentOS, RedHat, Fedora: The following system packages should be installed: libX11-devel (minimal requirement for basic compilation of Perl/Tk) libXft-devel (for freetype support, XFT=1) libpng-devel zlib-devel (for using system library for Tk::PNG) libjpeg-devel (for using system library for Tk::JPEG) With all these requirements, building Perl/Tk is straightforward: perl Makefile.PL make make test make install XFT (freetype support) is enabled by default if the system prerequisites are met (see above). To explicitely turn it off, use perl Makefile.PL XFT=0 It's recommended to install system's libpng, zlib, and libjpeg first. Otherwise the bundled (and usually older) versions of libpng, zlib, and libjpeg are used. On some systems the default /etc/fonts/fonts.conf does not include traditional X11 fonts by default (seen on a CentOS 6.4 installation, probably also the case for the equivalent RedHat version). If you need traditional X11 fonts (adobe-courier, adobe-helvetica, adobe-times etc.), then there are some options: * Provide a file /etc/fonts/local.conf with appropriate elements, e.g. /usr/share/X11/fonts This change would be global for all users. * Create a user-specific configuration file in ~/.fonts.conf with the same content. * Copy or symlink the directories with the X11 fonts into ~/.fonts (for a user only) or a global font directory like /usr/local/share/fonts. ---------------------------------------------------------------------- Older instructions follow These days perl/Tk is developed on Linux so things should work. Nick uses SuSE Distributions, currently using SuSE 9.0. All SuSE's /usr/bin/perl (perl >= perl5.8.0) should work. SuSE's fontconfig is fine for building with XFT=1, but there are some dodgy TrueType fonts in its set. RedHat is more variable. Nick uses this version under RedHat7.* and RedHat9.0 at work. RedHat9.0 will build with XFT=1 but scalable fonts installed by default are limited. Main snag on RedHat is that /usr/bin/perl tends to be a RedHat patched version rather than an approved perl release. Its 5.8.0 has bugs which mean that it is worse that official perl5.8.0 in UTF-8 locales - but UTF-8 locales are default on RedHat :-( Nick has installed this version with RedHat's perl on RedHat9. BUT there are a lot of reports that it doesn't work. If the problem hits you try this: 1. Delete the unpacked version that had trouble - the bug mangles some files. 2. Change to a non UTF-8 locale. i.e. echo $LANG # find out what your locale is export LANG=en_GB # what above printed but without UTF-8 bit 3. tar xzf Tk804.026.tar.gz # re-extract cd Tk804.026 4. perl Makefile.PL # normal build make make test (Steps 3 & 4 can be done using CPAN module provided you stay in non-UTF-8 locale.) 5. Optionally: export LANG=en_GB.UTF-8 # or original from step 2 make test # prove it works in the locale 6. make install Or just get perl5.8.3 kit from CPAN and build a real perl. Other issues are that distributions vary in the fonts they come with and window managers vary by user AND distribution. So a t/entry.t and t/listbox.t in particular (which are new tests compared to Tk800 series) sometimes fail a few subtests. Sometimes when run like: perl -Mblib t/entry.t they will pass :-( Nick Ing-Simmons 2004/03/18 Tk-804.033/menubug000755 001750 001750 00000002631 12241531453 014463 0ustar00eserteeserte000000 000000 #!/usr/local/bin/perl -w use Tk; use strict; my $TOP = MainWindow->new; my @menubuttons; foreach (qw/right/) { my $pos = ucfirst; my $menubutton = $TOP->Menubutton(qw/-underline 0 -relief raised/, -text => $pos, -direction => $_); push @menubuttons, $menubutton; my $menu = $menubutton->menu(qw/-type menubar -tearoff 0/); $menubutton->configure(-menu => $menu); $menubutton->command(-label => "$pos menu: first item", -command => sub {print "You selected the first item from the $pos menu.\n"}); $menubutton->command(-label => "$pos menu: second item", -command => sub {print "You selected the second item from the $pos menu.\n"}); } $menubuttons[0]->grid(qw/-row 0 -column 1 -sticky n/); MainLoop; __END__ ========================================================================== This message was posted through the Stanford campus mailing list server. If you wish to unsubscribe from this mailing list, send the message body of "unsubscribe ptk" to majordomo@lists.stanford.edu The same problem can be reproduced with original Tk8.4 and Tk8.5: menubutton .mb -text test pack .mb menu .mb.menu -type menubar .mb configure -menu .mb.menu $ wish8.4 /tmp/menubug.tk Tk_MoveToplevelWindow called with non-toplevel window zsh: 32762 abort (core dumped) wish8.4 /tmp/menubug.tk It is reported as https://sourceforge.net/tracker2/?func=detail&aid=2160206&group_id=12997&atid=112997 Tk-804.033/TList/000755 001750 001750 00000000000 12472123205 014126 5ustar00eserteeserte000000 000000 Tk-804.033/Text/000755 001750 001750 00000000000 12472123205 014013 5ustar00eserteeserte000000 000000 Tk-804.033/Extensions/000755 001750 001750 00000000000 12472123205 015226 5ustar00eserteeserte000000 000000 Tk-804.033/README.os2000644 001750 001750 00000004267 12241531453 014464 0ustar00eserteeserte000000 000000 There are 3 different ways to compile Tk under OS/2: for XFree86, for Open32 (this is IBM's porting level above Win32), and for PM. To compile for Open32 and PM you need additional files, available in $CPAN/ports/os2/tk/. To be safe, download all of them, and unzip the files with patches to be ready to apply. If you work with a release of Tk later than 402.001, some of the patches may be already applied, so use your best judgement. !!! You do not need to apply patches to .../os2/* files, they are already applied !!! Just ignore the patches not mentioned below. (You may want to apply one of them in reverse (-R to gnupatch) to get a source for tcl/Tk. Another one need to stay, it corrects bugs.) A lot of problems are unresolved. Please be patient. All the Tk-ish problem in tcl/tk port PLUS unability to do fileevents are Building for PM ~~~~~~~~~~~~~~~ a) Unzip both perltk_os2_pm.zip perltk_os2_common.zip inside the main Tk directory. b) Apply the patches in diff_pTk_for_os2_402 diff_mTk_for_os2_402 with gnupatch -p1 < patch-file-name |& tee 00patch or gnupatch -p1 < patch-file-name c) Do perl Makefile.PM pm make addres perl__ -Mblib basic_demo perl__ -Mblib demos/widget make install d) Do not forget you need to use perl__ to run PM programs instead of just perl! Building for Open32 ~~~~~~~~~~~~~~~~~~~ a) Unzip perltk_os2_common.zip inside the main Tk directory. b) Apply the patches in diff_pTk_for_os2_402 diff_mTk_for_os2_402 with gnupatch -p1 < patch-file-name |& tee 00patch or gnupatch -p1 < patch-file-name c) Do perl Makefile.PM open32 make addres perl__ -Mblib basic_demo perl__ -Mblib demos/widget make install d) Do not forget you need to use perl__ to run PM programs! Building for XFree86 ~~~~~~~~~~~~~~~~~~~~ a) Apply the patches in diff_pTk_for_os2_402 diff_mTk_for_os2_402 with gnupatch -p1 < patch-file-name |& tee 00patch or gnupatch -p1 < patch-file-name b) Do perl Makefile.PM x make perl -Mblib basic_demo perl -Mblib demos/widget make install Authors: ~~~~~~~ PM code for tcl/Tk: Illya Vaes, ivaes@hr.ns.nl Port to Open32, XFree86-OS/2, adaptation of PM code to Perl/Tk: Ilya Zakharevich, ilya@math.ohio-state.edu Tk-804.033/README.darwin000644 001750 001750 00000003617 12241531453 015243 0ustar00eserteeserte000000 000000 The X11 SDK needs to be installed from the XTools CD. It seems that after the installation, the X11 include files are at a unusal location. If so, then start installation by specifying the X11INC variable, i.e. perl Makefile.PL X11INC=/Developer/SDKs/MacOSX10.4u.sdk/usr/X11R6/include This was seen on a Mac OS X 10.4.8 (Tiger) system. It is expected that make test passes without failures. Turning on True Type support with XFT=1 also seems to work, but there are some font metrics-related test failures, which are harmless: Failed Test Stat Wstat Total Fail List of Failed ------------------------------------------------------------------------------- t/entry.t 7 1792 337 7 85 87-88 90 160 166 284 t/font.t 1 256 34 1 13 t/listbox.t 19 4864 539 19 280 283-287 443-444 446-449 451 453 455-456 459 461 492 (24 subtests UNEXPECTEDLY SUCCEEDED), 188 subtests skipped. ---------------------------------------------------------------------- Older notes: For Tk804.025 to build properly on Mac OS X 10.2 (Jaguar) or 10.3 (Panther), Perl must be built dynamic, rather that the default of static. Use a Configure incantation similar to this: sh Configure -des -Duseshrplib [-Dprefix=/path/to/your/private/perl] Be sure you install the X11 SDK from the XTools developer CD - this installs the X11 C headers files, else the make will fail: I installed the latest X11 from Apple, but the latest TK804 beta gives me the following: Using -L/usr/X11R6/lib to find /usr/X11R6/lib/libX11.dylib Cannot find X include files via /usr/X11R6/include Cannot find X include files anywhere at ./myConfig line 332. Compilation failed in require at Makefile.PL line 32. BEGIN failed--compilation aborted at Makefile.PL line 34. On my Panther (10.3.2) system, it can be found in: Applications->Installers->Developer Tools->Packages. Tk-804.033/lib/000755 001750 001750 00000000000 12472123205 013635 5ustar00eserteeserte000000 000000 Tk-804.033/MANIFEST.SKIP000644 001750 001750 00000013364 12472123003 014770 0ustar00eserteeserte000000 000000 \.[oaid]$ \.(bso?|old|bak|bck|base|exp|broke|out|hide|q4|gz|tcl|rtf|orig)$ ^\. /\. C\+\+/Main$ \bcore$ \bConfig.pm$ \bpTk/tkConfig\.h$ \bpTk/(need|canvas_sources)$ \b(pm_to_blib|blibdirs|perl|wedge|efdebug)$ [%~]$ \b(blib|merge|Ilya|Pixmap|patches|pod2)/ \bTix/ tcl\.pm$ \bcore\b Canvas/diag\.txt$ pod/html$ \bdoc/ Tk.ppd$ \b(ToDo|learn|Pending|Obsolete)/ \b(GNU)?[Mm]akefile(\.aperl)?$ -bug$ \bperlmain\.c$ \btkperl\b \bHTML/doc\b \bEvent/Play\b \bEvent/fe pod/tkman.ps$ extralibs\.ld doc/index\.html$ doc/MANFILES$ doc/.*\.htm$ myConfig\.out \bMYMETA.yml$ \bMYMETA.json$ JPEG/jpeg/testout* JPEG/jpeg/config\.(log|status) JPEG/jpeg/([cd]jpeg|jpegtran|(rd|wr)jpgcom) JPEG/jpeg/Makefile\.PL$ PNG/libpng/Makefile\.PL$ PNG/libpng/pngtest$ PNG/libpng/config.h$ PNG/libpng/config.log$ PNG/libpng/config.status$ PNG/libpng/libpng-config$ PNG/libpng/libpng.pc$ PNG/libpng/libtool$ PNG/libpng/stamp-h1$ PNG/zlib/example$ PNG/zlib/Makefile\.PL$ PNG/zlib/minigzip$ \.todo$ \bswapm$ bin/patchls$ JPEG/jpeg/jconfig.h$ prep_rel$ Canvas/Canvas\.c$ Compound/Compound\.c$ DragDrop/Win32Site/Win32Site\.c$ Entry/Entry\.c$ Event/Event\.c$ Extensions/ImageBack/ImageBack\.c$ HList/HList\.c$ IO/IO\.c$ InputO/InputO\.c$ JPEG/JPEG\.c$ Listbox/Listbox\.c$ Menubutton/Menubutton\.c$ Mwm/Mwm\.c$ NBFrame/NBFrame\.c$ PNG/PNG\.c$ Scale/Scale\.c$ Scrollbar/Scrollbar\.c$ TList/TList\.c$ Text/Text\.c$ TixGrid/TixGrid\.c$ TixPixmap/Pixmap\.c$ Tk\.c$ WinPhoto/WinPhoto\.c$ Xlib/X/X\.c$ Xlib/Xlib\.c$ pTk/ClientWin\.c$ pTk/X\.h$ pTk/Xatom\.h$ pTk/Xfuncproto\.h$ pTk/Xutil\.h$ pTk/cursorfont\.h$ pTk/default\.h$ pTk/exWinHandle\.c$ pTk/img\.h$ pTk/imgBMP\.c$ pTk/imgInit\.c$ pTk/imgInt\.h$ pTk/imgObj\.c$ pTk/imgUtil\.c$ pTk/imgWindow\.c$ pTk/imgXBM\.c$ pTk/imgXPM\.c$ pTk/keysym\.h$ pTk/keysymdef\.h$ pTk/ks_names\.h$ pTk/moredefs\.h$ pTk/pkga\.c$ pTk/pkgb\.c$ pTk/pkgc\.c$ pTk/pkgd\.c$ pTk/pkge\.c$ pTk/pkgf\.c$ pTk/port\.h$ pTk/stbDItem\.c$ pTk/stbDiStyle\.c$ pTk/stubs\.c$ pTk/tclAsync\.c$ pTk/tclDecls\.h$ pTk/tclEvent\.c$ pTk/tclHash\.c$ pTk/tclIntDecls\.h$ pTk/tclIntPlatDecls\.h$ pTk/tclMath\.h$ pTk/tclNotify\.c$ pTk/tclPlatDecls\.h$ pTk/tclPreserve\.c$ pTk/tclTimer\.c$ pTk/tclUnixEvent\.c$ pTk/tclUnixNotfy\.c$ pTk/tclUnixTime\.c$ pTk/tclWinInt\.h$ pTk/tclWinNotify\.c$ pTk/tclWinTime\.c$ pTk/tix\.h$ pTk/tixAppInit\.c$ pTk/tixBitmaps\.h$ pTk/tixCompat\.c$ pTk/tixDItem\.c$ pTk/tixDef\.h$ pTk/tixDiITxt\.c$ pTk/tixDiImg\.c$ pTk/tixDiStyle\.c$ pTk/tixDiText\.c$ pTk/tixDiWin\.c$ pTk/tixError\.c$ pTk/tixForm\.c$ pTk/tixForm\.h$ pTk/tixFormMisc\.c$ pTk/tixGrData\.c$ pTk/tixGrData\.h$ pTk/tixGrFmt\.c$ pTk/tixGrRC\.c$ pTk/tixGrSel\.c$ pTk/tixGrSort\.c$ pTk/tixGrUtl\.c$ pTk/tixGrid\.c$ pTk/tixGrid\.h$ pTk/tixHLCol\.c$ pTk/tixHLHdr\.c$ pTk/tixHLInd\.c$ pTk/tixHList\.c$ pTk/tixHList\.h$ pTk/tixImgCmp\.c$ pTk/tixImgXpm\.c$ pTk/tixImgXpm\.h$ pTk/tixInputO\.c$ pTk/tixInt\.h$ pTk/tixList\.c$ pTk/tixMwm\.c$ pTk/tixNBFrame\.c$ pTk/tixPort\.h$ pTk/tixScroll\.c$ pTk/tixSmpLs\.c$ pTk/tixTList\.c$ pTk/tixTList\.h$ pTk/tixUnixDraw\.c$ pTk/tixUnixInt\.h$ pTk/tixUnixPort\.h$ pTk/tixUnixWm\.c$ pTk/tixUnixXpm\.c$ pTk/tixUtils\.c$ pTk/tixWinDraw\.c$ pTk/tixWinInt\.h$ pTk/tixWinPort\.h$ pTk/tixWinXpm\.c$ pTk/tk\.h$ pTk/tk3d\.c$ pTk/tk3d\.h$ pTk/tkAtom\.c$ pTk/tkBind\.c$ pTk/tkBitmap\.c$ pTk/tkButton\.c$ pTk/tkButton\.h$ pTk/tkCanvArc\.c$ pTk/tkCanvBmap\.c$ pTk/tkCanvImg\.c$ pTk/tkCanvLine\.c$ pTk/tkCanvPoly\.c$ pTk/tkCanvPs\.c$ pTk/tkCanvText\.c$ pTk/tkCanvUtil\.c$ pTk/tkCanvWind\.c$ pTk/tkCanvas\.c$ pTk/tkCanvas\.h$ pTk/tkClipboard\.c$ pTk/tkCmds\.c$ pTk/tkColor\.c$ pTk/tkColor\.h$ pTk/tkConfig\.c$ pTk/tkCursor\.c$ pTk/tkDecls\.h$ pTk/tkEntry\.c$ pTk/tkError\.c$ pTk/tkEvent\.c$ pTk/tkFileFilter\.c$ pTk/tkFileFilter\.h$ pTk/tkFocus\.c$ pTk/tkFont\.c$ pTk/tkFont\.h$ pTk/tkFrame\.c$ pTk/tkGC\.c$ pTk/tkGeometry\.c$ pTk/tkGet\.c$ pTk/tkGrab\.c$ pTk/tkGrid\.c$ pTk/tkImage\.c$ pTk/tkImgBmap\.c$ pTk/tkImgGIF\.c$ pTk/tkImgPPM\.c$ pTk/tkImgPhoto\.c$ pTk/tkImgUtil\.c$ pTk/tkInitScript\.h$ pTk/tkInt\.h$ pTk/tkIntDecls\.h$ pTk/tkIntPlatDecls\.h$ pTk/tkIntXlibDecls\.h$ pTk/tkListbox\.c$ pTk/tkMacWinMenu\.c$ pTk/tkMenu\.c$ pTk/tkMenu\.h$ pTk/tkMenuDraw\.c$ pTk/tkMenubutton\.c$ pTk/tkMenubutton\.h$ pTk/tkMessage\.c$ pTk/tkObj\.c$ pTk/tkOldConfig\.c$ pTk/tkOption\.c$ pTk/tkPack\.c$ pTk/tkPanedWindow\.c$ pTk/tkPlace\.c$ pTk/tkPlatDecls\.h$ pTk/tkPointer\.c$ pTk/tkPort\.h$ pTk/tkRectOval\.c$ pTk/tkScale\.c$ pTk/tkScale\.h$ pTk/tkScrollbar\.c$ pTk/tkScrollbar\.h$ pTk/tkSelect\.c$ pTk/tkSelect\.h$ pTk/tkSquare\.c$ pTk/tkStubImg\.c$ pTk/tkStyle\.c$ pTk/tkText\.c$ pTk/tkText\.h$ pTk/tkTextBTree\.c$ pTk/tkTextDisp\.c$ pTk/tkTextImage\.c$ pTk/tkTextIndex\.c$ pTk/tkTextMark\.c$ pTk/tkTextTag\.c$ pTk/tkTextWind\.c$ pTk/tkTrig\.c$ pTk/tkUndo\.c$ pTk/tkUndo\.h$ pTk/tkUnix\.c$ pTk/tkUnix3d\.c$ pTk/tkUnixButton\.c$ pTk/tkUnixColor\.c$ pTk/tkUnixConfig\.c$ pTk/tkUnixCursor\.c$ pTk/tkUnixDefault\.h$ pTk/tkUnixDialog\.c$ pTk/tkUnixDraw\.c$ pTk/tkUnixEmbed\.c$ pTk/tkUnixEvent\.c$ pTk/tkUnixFocus\.c$ pTk/tkUnixFont\.c$ pTk/tkUnixInit\.c$ pTk/tkUnixInt\.h$ pTk/tkUnixKey\.c$ pTk/tkUnixMenu\.c$ pTk/tkUnixMenubu\.c$ pTk/tkUnixPort\.h$ pTk/tkUnixScale\.c$ pTk/tkUnixScrlbr\.c$ pTk/tkUnixSelect\.c$ pTk/tkUnixSend\.c$ pTk/tkUnixWm\.c$ pTk/tkUnixXId\.c$ pTk/tkUnixXft\.c$ pTk/tkUtil\.c$ pTk/tkVisual\.c$ pTk/tkWin\.h$ pTk/tkWin3d\.c$ pTk/tkWinButton\.c$ pTk/tkWinClipboard\.c$ pTk/tkWinColor\.c$ pTk/tkWinConfig\.c$ pTk/tkWinCursor\.c$ pTk/tkWinDefault\.h$ pTk/tkWinDialog\.c$ pTk/tkWinDraw\.c$ pTk/tkWinEmbed\.c$ pTk/tkWinFont\.c$ pTk/tkWinImage\.c$ pTk/tkWinInit\.c$ pTk/tkWinInt\.h$ pTk/tkWinKey\.c$ pTk/tkWinMenu\.c$ pTk/tkWinPixmap\.c$ pTk/tkWinPointer\.c$ pTk/tkWinPort\.h$ pTk/tkWinRegion\.c$ pTk/tkWinScrlbr\.c$ pTk/tkWinSend\.c$ pTk/tkWinTest\.c$ pTk/tkWinWindow\.c$ pTk/tkWinWm\.c$ pTk/tkWinX\.c$ pTk/tkWindow\.c$ pTk/xbytes\.h$ pTk/xcolors\.c$ pTk/xdraw\.c$ pTk/xgc\.c$ pTk/ximage\.c$ pTk/xutil\.c$ Tk-804.033/perlfiles000644 001750 001750 00000001122 12241531453 014775 0ustar00eserteeserte000000 000000 package Perlfiles; use File::Find; @wanted = (); sub perlscript { my ($file) = @_; open(SCRIPT,"<$file") || die "Cannot open $file:$!"; my $line =