├── apps ├── taip │ ├── taip.mp3 │ ├── taip-tcl.gif │ ├── taip-taip.gif │ └── taip.tcl ├── chatcl │ ├── config.tcl │ └── ChangeLog ├── asteroids │ ├── beat1.wav │ ├── beat2.wav │ ├── shot.wav │ ├── thrust.wav │ ├── explosion.wav │ └── ChangeLog ├── ircbridge │ ├── pkgIndex.tcl │ ├── ChangeLog │ └── cmdloop.tcl ├── tkchat │ ├── deploy │ │ ├── WordTech_CA.cer │ │ ├── tkchat │ │ ├── build_win.bat │ │ ├── AppMain.tcl │ │ ├── link.vbs │ │ ├── buildapp_linux │ │ ├── tkchat_install_linux │ │ ├── buildapp_mac │ │ ├── uninstall.bat │ │ ├── Info.plist │ │ ├── tkchat.sed │ │ ├── tkchat.iss │ │ └── install.bat │ └── tkchat.vfs │ │ ├── TkChat.ico │ │ ├── tclkit.ico │ │ ├── bin │ │ ├── picoirc │ │ │ └── pkgIndex.tcl │ │ ├── tkchat.ico │ │ ├── tkchat.icns │ │ ├── tkchat24.png │ │ ├── tkchat48.gif │ │ ├── tkchat48.png │ │ ├── images │ │ │ ├── z_xa.gif │ │ │ ├── tkchat.ico │ │ │ ├── z_away.gif │ │ │ ├── z_chat.gif │ │ │ ├── z_dnd.gif │ │ │ ├── roster_xa.png │ │ │ ├── tkchat-32.png │ │ │ ├── z_online.gif │ │ │ ├── images │ │ │ │ ├── z_xa.gif │ │ │ │ ├── tkchat.ico │ │ │ │ ├── z_away.gif │ │ │ │ ├── z_chat.gif │ │ │ │ ├── z_dnd.gif │ │ │ │ ├── roster_xa.png │ │ │ │ ├── tkchat-32.png │ │ │ │ ├── z_online.gif │ │ │ │ ├── roster_away.png │ │ │ │ ├── roster_chat.png │ │ │ │ ├── roster_dnd.png │ │ │ │ ├── z_disabled.gif │ │ │ │ ├── dialog-warning.png │ │ │ │ ├── network-online.png │ │ │ │ ├── roster_online.png │ │ │ │ ├── tkchat_warn-32.png │ │ │ │ ├── network-offline.png │ │ │ │ └── roster_disabled.png │ │ │ ├── roster_away.png │ │ │ ├── roster_chat.png │ │ │ ├── roster_dnd.png │ │ │ ├── z_disabled.gif │ │ │ ├── dialog-warning.png │ │ │ ├── network-online.png │ │ │ ├── roster_online.png │ │ │ ├── tkchat_warn-32.png │ │ │ ├── network-offline.png │ │ │ └── roster_disabled.png │ │ ├── rssrdir │ │ │ └── pkgIndex.tcl │ │ ├── tkchat.desktop │ │ ├── tkchat_compat86.tcl │ │ └── tkchat_clock.tcl │ │ ├── lib │ │ ├── critcl │ │ │ ├── pkgIndex.tcl │ │ │ └── critcl_c │ │ │ │ ├── X11 │ │ │ │ ├── keysym.h │ │ │ │ ├── Xfuncproto.h │ │ │ │ ├── cursorfont.h │ │ │ │ └── Xatom.h │ │ │ │ └── preload.c │ │ ├── base64-fake │ │ │ ├── pkgIndex.tcl │ │ │ └── base64.tcl │ │ ├── khim │ │ │ ├── da.msg │ │ │ ├── pkgIndex.tcl │ │ │ ├── ROOT.msg │ │ │ ├── cs.msg │ │ │ └── es.msg │ │ ├── tcllibc │ │ │ ├── pkgIndex.tcl │ │ │ ├── linux-ix86 │ │ │ │ └── tcllibc.so │ │ │ └── win32-ix86 │ │ │ │ └── tcllibc.dll │ │ ├── iocpsock │ │ │ ├── pkgIndex.tcl │ │ │ └── iocpsock30.dll │ │ ├── tcltls │ │ │ ├── tcltls.so │ │ │ ├── tcl9tls1723.dll │ │ │ ├── libssl-3-x64.dll │ │ │ ├── libcrypto-3-x64.dll │ │ │ ├── libtcl9tls1.8.0.dylib │ │ │ └── pkgIndex.tcl │ │ ├── winpm │ │ │ ├── winpm01.dll │ │ │ └── pkgIndex.tcl │ │ ├── md5 │ │ │ └── pkgIndex.tcl │ │ ├── sha1 │ │ │ └── pkgIndex.tcl │ │ ├── cmdline │ │ │ └── pkgIndex.tcl │ │ ├── tooltip │ │ │ └── pkgIndex.tcl │ │ ├── uri │ │ │ ├── tooltip │ │ │ │ └── pkgIndex.tcl │ │ │ └── pkgIndex.tcl │ │ ├── uuid │ │ │ └── pkgIndex.tcl │ │ ├── log │ │ │ └── pkgIndex.tcl │ │ ├── struct │ │ │ ├── pkgIndex.tcl │ │ │ └── struct.tcl │ │ ├── htmlparse │ │ │ └── pkgIndex.tcl │ │ ├── windowlist │ │ │ ├── pkgIndex.tcl │ │ │ └── windowlist.tcl │ │ ├── autoscroll │ │ │ └── pkgIndex.tcl │ │ ├── jabberlib │ │ │ ├── pkgIndex.tcl │ │ │ ├── tinydom.tcl │ │ │ └── stanzaerror.tcl │ │ └── tclxml3.1 │ │ │ ├── xml-8.1.tcl │ │ │ ├── pkgIndex.tcl │ │ │ └── xmldep.tcl │ │ ├── tclkit.inf │ │ ├── AppMain.tcl │ │ └── main.tcl ├── picoirc │ └── ChangeLog ├── dtp │ ├── lib │ │ ├── meta │ │ │ └── pkgIndex.tcl │ │ ├── app-doc │ │ │ └── pkgIndex.tcl │ │ ├── app-idx │ │ │ ├── pkgIndex.tcl │ │ │ └── idx.tcl │ │ ├── app-map │ │ │ └── pkgIndex.tcl │ │ ├── app-toc │ │ │ ├── pkgIndex.tcl │ │ │ └── toc.tcl │ │ ├── app-help │ │ │ └── pkgIndex.tcl │ │ ├── app-meta │ │ │ ├── pkgIndex.tcl │ │ │ └── meta.tcl │ │ ├── dtglue │ │ │ └── pkgIndex.tcl │ │ ├── app-navbar │ │ │ ├── pkgIndex.tcl │ │ │ └── navbar.tcl │ │ ├── app-script │ │ │ ├── pkgIndex.tcl │ │ │ └── script.tcl │ │ ├── app-subst │ │ │ ├── pkgIndex.tcl │ │ │ └── subst.tcl │ │ ├── app-assemble │ │ │ └── pkgIndex.tcl │ │ ├── app-gen-doc │ │ │ └── pkgIndex.tcl │ │ ├── app-gen-idx │ │ │ └── pkgIndex.tcl │ │ ├── app-gen-toc │ │ │ └── pkgIndex.tcl │ │ ├── app-changelog │ │ │ ├── pkgIndex.tcl │ │ │ └── changelog.tcl │ │ ├── app-copyright │ │ │ ├── pkgIndex.tcl │ │ │ └── copyright.tcl │ │ └── tools │ │ │ ├── pkgIndex.tcl │ │ │ ├── optcheck.tcl │ │ │ └── tools.tcl │ ├── data │ │ ├── help │ │ │ └── topics │ │ └── doc_a_package.sh │ ├── README.txt │ ├── WRAPPING.txt │ ├── main.tcl │ ├── NOTES.txt │ └── ChangeLog ├── csvop │ ├── lib │ │ ├── app-cut │ │ │ ├── pkgIndex.tcl │ │ │ └── cut.tcl │ │ ├── app-diff │ │ │ └── pkgIndex.tcl │ │ ├── app-help │ │ │ └── pkgIndex.tcl │ │ ├── app-join │ │ │ └── pkgIndex.tcl │ │ ├── app-sort │ │ │ ├── pkgIndex.tcl │ │ │ └── sort.tcl │ │ ├── app-uniq │ │ │ ├── pkgIndex.tcl │ │ │ └── uniq.tcl │ │ ├── dtglue │ │ │ └── pkgIndex.tcl │ │ ├── app-tbjoin │ │ │ └── pkgIndex.tcl │ │ ├── app-format │ │ │ └── pkgIndex.tcl │ │ ├── app-assemble │ │ │ └── pkgIndex.tcl │ │ └── tools │ │ │ ├── pkgIndex.tcl │ │ │ ├── optcheck.tcl │ │ │ ├── optcsv.tcl │ │ │ └── tools.tcl │ ├── data │ │ └── help │ │ │ ├── topics │ │ │ ├── genopt.man │ │ │ ├── csv-format.man │ │ │ └── joins.man │ ├── ChangeLog │ ├── NOTES.txt │ ├── README.txt │ ├── WRAPPING.txt │ └── main.tcl ├── tclunit │ └── ChangeLog ├── ijbridge │ ├── ijbridge.man │ ├── ijbridge.conf.sample │ ├── license.terms │ └── ChangeLog ├── tkvnc │ └── ChangeLog └── clock │ └── timer.tcl ├── README └── license.terms /apps/taip/taip.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/taip/taip.mp3 -------------------------------------------------------------------------------- /apps/chatcl/config.tcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/chatcl/config.tcl -------------------------------------------------------------------------------- /apps/taip/taip-tcl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/taip/taip-tcl.gif -------------------------------------------------------------------------------- /apps/asteroids/beat1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/asteroids/beat1.wav -------------------------------------------------------------------------------- /apps/asteroids/beat2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/asteroids/beat2.wav -------------------------------------------------------------------------------- /apps/asteroids/shot.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/asteroids/shot.wav -------------------------------------------------------------------------------- /apps/ircbridge/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded chat 0.2 [list source [file join $dir chat.tcl]] 2 | -------------------------------------------------------------------------------- /apps/taip/taip-taip.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/taip/taip-taip.gif -------------------------------------------------------------------------------- /apps/asteroids/thrust.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/asteroids/thrust.wav -------------------------------------------------------------------------------- /apps/asteroids/explosion.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/asteroids/explosion.wav -------------------------------------------------------------------------------- /apps/tkchat/deploy/WordTech_CA.cer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/deploy/WordTech_CA.cer -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/TkChat.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/TkChat.ico -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/tclkit.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/tclkit.ico -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/picoirc/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded picoirc 0.4 [list source [file join $dir picoirc.tcl]] 2 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/tkchat.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/tkchat.ico -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/critcl/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded critcl 2.0 [list source [file join $dir critcl.tcl]] 2 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/tkchat.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/tkchat.icns -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/tkchat24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/tkchat24.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/tkchat48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/tkchat48.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/tkchat48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/tkchat48.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/base64-fake/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded base64 99.0 [list source [file join $dir base64.tcl]] 2 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/khim/da.msg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/khim/da.msg -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/z_xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/z_xa.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tcllibc/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | source [file join $dir critcl.tcl] 2 | critcl2::loadlib $dir tcllibc 0.3.2 {} 3 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/tkchat.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/tkchat.ico -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/z_away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/z_away.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/z_chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/z_chat.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/z_dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/z_dnd.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/iocpsock/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded Iocpsock 3.0 [list load [file join $dir iocpsock30.dll] Iocpsock] 2 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tcltls/tcltls.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/tcltls/tcltls.so -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/winpm/winpm01.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/winpm/winpm01.dll -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/roster_xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/roster_xa.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/tkchat-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/tkchat-32.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/z_online.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/z_online.gif -------------------------------------------------------------------------------- /apps/picoirc/ChangeLog: -------------------------------------------------------------------------------- 1 | 2007-10-19 Pat Thoyts 2 | 3 | * picoirc.tcl: Initial checking sample IRC client. 4 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/z_xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/z_xa.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/roster_away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/roster_away.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/roster_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/roster_chat.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/roster_dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/roster_dnd.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/z_disabled.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/z_disabled.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tcltls/tcl9tls1723.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/tcltls/tcl9tls1723.dll -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/dialog-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/dialog-warning.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/tkchat.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/tkchat.ico -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/z_away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/z_away.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/z_chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/z_chat.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/z_dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/z_dnd.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/network-online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/network-online.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/roster_online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/roster_online.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/tkchat_warn-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/tkchat_warn-32.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/iocpsock/iocpsock30.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/iocpsock/iocpsock30.dll -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tcltls/libssl-3-x64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/tcltls/libssl-3-x64.dll -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/roster_xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/roster_xa.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/tkchat-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/tkchat-32.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/z_online.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/z_online.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/network-offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/network-offline.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/roster_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/roster_disabled.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tcltls/libcrypto-3-x64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/tcltls/libcrypto-3-x64.dll -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/roster_away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/roster_away.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/roster_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/roster_chat.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/roster_dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/roster_dnd.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/z_disabled.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/z_disabled.gif -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tcllibc/linux-ix86/tcllibc.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/tcllibc/linux-ix86/tcllibc.so -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tcllibc/win32-ix86/tcllibc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/tcllibc/win32-ix86/tcllibc.dll -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tcltls/libtcl9tls1.8.0.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/lib/tcltls/libtcl9tls1.8.0.dylib -------------------------------------------------------------------------------- /apps/dtp/lib/meta/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded meta 0.1 [list source [file join $dir meta.tcl]] 5 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/dialog-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/dialog-warning.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/network-online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/network-online.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/roster_online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/roster_online.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/tkchat_warn-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/tkchat_warn-32.png -------------------------------------------------------------------------------- /apps/dtp/lib/app-doc/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-doc 0.1 [list source [file join $dir doc.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-idx/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-idx 0.1 [list source [file join $dir idx.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-map/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-map 0.1 [list source [file join $dir map.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-toc/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-toc 0.1 [list source [file join $dir toc.tcl]] 5 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/network-offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/network-offline.png -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/images/images/roster_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcltk/tclapps/HEAD/apps/tkchat/tkchat.vfs/bin/images/images/roster_disabled.png -------------------------------------------------------------------------------- /apps/csvop/lib/app-cut/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-cut 0.1 [list source [file join $dir cut.tcl]] 5 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-diff/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-diff 0.1 [list source [file join $dir diff.tcl]] 5 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-help/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-help 0.1 [list source [file join $dir help.tcl]] 5 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-join/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-join 0.1 [list source [file join $dir join.tcl]] 5 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-sort/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-sort 0.1 [list source [file join $dir sort.tcl]] 5 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-uniq/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-uniq 0.1 [list source [file join $dir uniq.tcl]] 5 | -------------------------------------------------------------------------------- /apps/csvop/lib/dtglue/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded dtglue 0.1 [list source [file join $dir dtglue.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-help/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-help 0.1 [list source [file join $dir help.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-meta/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-meta 0.1 [list source [file join $dir meta.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/dtglue/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded dtglue 0.1 [list source [file join $dir dtglue.tcl]] 5 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-tbjoin/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-tbjoin 0.1 [list source [file join $dir join.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-navbar/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-navbar 0.1 [list source [file join $dir navbar.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-script/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-script 0.1 [list source [file join $dir script.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-subst/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-subst 0.1 [list source [file join $dir subst.tcl]] 5 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/md5/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2-]} {return} 2 | package ifneeded md5 2.0.7 [list source [file join $dir md5x.tcl]] 3 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-format/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-format 0.1 [list source [file join $dir format.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-assemble/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-assemble 0.1 [list source [file join $dir assemble.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-gen-doc/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-gen-doc 0.1 [list source [file join $dir gen_doc.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-gen-idx/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-gen-idx 0.1 [list source [file join $dir gen_idx.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-gen-toc/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-gen-toc 0.1 [list source [file join $dir gen_toc.tcl]] 5 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/sha1/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2-]} {return} 2 | package ifneeded sha1 2.0.3 [list source [file join $dir sha1.tcl]] 3 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-assemble/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-assemble 0.1 [list source [file join $dir assemble.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-changelog/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-changelog 0.1 [list source [file join $dir changelog.tcl]] 5 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-copyright/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded app-copyright 0.1 [list source [file join $dir copyright.tcl]] 5 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/tkchat: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | SCRIPT_DIR=/usr/local/tkchat 4 | 5 | export LD_LIBRARY_PATH=$SCRIPT_DIR/lib/ 6 | 7 | exec $SCRIPT_DIR/bin/wish9.0 $SCRIPT_DIR/bin/AppMain.tcl 8 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/cmdline/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2-]} {return} 2 | package ifneeded cmdline 1.2.5 [list source [file join $dir cmdline.tcl]] 3 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/rssrdir/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded rssrdr 1.0 [list source [file join $dir rssrdr.tcl]] 2 | package ifneeded rssrdr_oo 1.0 [list source [file join $dir rssrdr_oo.tcl]] 3 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/base64-fake/base64.tcl: -------------------------------------------------------------------------------- 1 | namespace eval base64 { 2 | proc encode {args} {binary encode base64 {*}$args} 3 | proc decode {data} {binary decode base64 $data} 4 | } 5 | package provide base64 99.0 -------------------------------------------------------------------------------- /apps/csvop/data/help/topics: -------------------------------------------------------------------------------- 1 | cmdline {Information about the available subcommands} 2 | genopt {General options for the subcommands} 3 | csv-format {csv format specification} 4 | joins {Examples of table joins} 5 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tooltip/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | 3 | package ifneeded tooltip 1.5 [list source [file join $dir tooltip.tcl]] 4 | package ifneeded tipstack 1.0.1 [list source [file join $dir tipstack.tcl]] 5 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/uri/tooltip/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | 3 | package ifneeded tooltip 1.5 [list source [file join $dir tooltip.tcl]] 4 | package ifneeded tipstack 1.0.1 [list source [file join $dir tipstack.tcl]] 5 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/tclkit.inf: -------------------------------------------------------------------------------- 1 | CompanyName "Pat Thoyts" 2 | LegalCopyright "Copyright (c) 2001-2008 Bruce Hartweg et al." 3 | FileDescription "Jabber multi-user chat client" 4 | ProductName "tkchat" 5 | ProductVersion "2.0.0.0" 6 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/build_win.bat: -------------------------------------------------------------------------------- 1 | 2 | 3 | if exist TkChat.zip ( 4 | del TkChat.zip 5 | ) 6 | 7 | if exist TkChat_Setup.exe ( 8 | del TkChat_Setup.exe 9 | ) 10 | 11 | tar -a -c -f TkChat.zip TkChat 12 | iexpress /n tkchat.sed 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/dtp/lib/tools/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded tools 0.1 [list source [file join $dir tools.tcl]] 5 | package ifneeded optchecker 0.1 [list source [file join $dir optcheck.tcl]] 6 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/winpm/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![string equal $::tcl_platform(platform) "windows"]} { return } 2 | if {![string equal $::tcl_platform(machine) "intel"]} { return } 3 | package ifneeded winpm 0.1 \ 4 | [list load [file join $dir winpm01.dll] winpm] 5 | -------------------------------------------------------------------------------- /apps/csvop/ChangeLog: -------------------------------------------------------------------------------- 1 | 2003-05-20 Andreas Kupries 2 | 3 | * First revision now complete. Committing to tcllib/tclapps. 4 | 5 | 2003-05-12 Andreas Kupries 6 | 7 | * Started to work on the CSV tool. 8 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/AppMain.tcl: -------------------------------------------------------------------------------- 1 | if {[tk windowingsystem] eq "win32"} { 2 | after 500 3 | update idletasks 4 | } 5 | 6 | set dir [file join [file dirname [info script]]] 7 | lappend auto_path $dir/lib 8 | lappend auto_path $dir/bin 9 | source [file join $dir bin tkchat.tcl] 10 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/AppMain.tcl: -------------------------------------------------------------------------------- 1 | if {[tk windowingsystem] eq "win32"} { 2 | after 500 3 | update idletasks 4 | } 5 | 6 | set dir [file join [file dirname [info script]]] 7 | lappend auto_path $dir/lib 8 | lappend auto_path $dir/bin 9 | source [file join $dir bin tkchat.tcl] 10 | -------------------------------------------------------------------------------- /apps/chatcl/ChangeLog: -------------------------------------------------------------------------------- 1 | 2004-07-15 Reinhard Max 2 | 3 | * ChangeLog: added 4 | 5 | * config.tcl: Split common.tcl from config.tcl to separate code 6 | * common.tcl: from config data. 7 | 8 | * chat.tcl: Taking account for the config/common split. 9 | * chat2.tcl: 10 | 11 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/uri/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2-]} { 2 | # FRINK: nocheck 3 | return 4 | } 5 | package ifneeded uri 1.2.1 [list source [file join $dir uri.tcl]] 6 | package ifneeded uri::urn 1.0.2 [list source [file join $dir urn-scheme.tcl]] 7 | -------------------------------------------------------------------------------- /apps/tclunit/ChangeLog: -------------------------------------------------------------------------------- 1 | 2006-11-26 Bob Techentin 2 | 3 | * tclunit.tcl: Corrected bug 1513342 where failures counted 4 | twice. 5 | 6 | 2005-10-30 Bob Techentin 7 | 8 | * ChangeLog: 9 | * tclunit.tcl: added 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/tkchat.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Encoding=UTF-8 3 | Name=Tkchat 4 | Comment=Tcl/Tk XMPP Chat client 5 | Comment[de]=Tcl/Tk XMPP tach 6 | Comment[fr]=Tcl/Tk XMPP parle 7 | Exec=tkchat 8 | Icon=tkchat48.png 9 | Terminal=false 10 | Type=Application 11 | Categories=Application;Network; 12 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/uuid/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl - 2 | # 3 | # uuid package index file 4 | # 5 | # $Id: pkgIndex.tcl,v 1.2 2005/09/30 05:36:39 andreas_kupries Exp $ 6 | 7 | if {![package vsatisfies [package provide Tcl] 8.2-]} {return} 8 | package ifneeded uuid 1.0.1 [list source [file join $dir uuid.tcl]] 9 | -------------------------------------------------------------------------------- /apps/csvop/lib/tools/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2003 Andreas Kupries 3 | 4 | package ifneeded tools 0.1 [list source [file join $dir tools.tcl]] 5 | package ifneeded optchecker 0.1 [list source [file join $dir optcheck.tcl]] 6 | package ifneeded optcsv 0.1 [list source [file join $dir optcsv.tcl]] 7 | -------------------------------------------------------------------------------- /apps/dtp/data/help/topics: -------------------------------------------------------------------------------- 1 | cmdline {Information about the available subcommands} 2 | doctools_fmt {Format specification: doctools (Manpages)} 3 | doctoc_fmt {Format specification: doctoc (Table of Contents)} 4 | docidx_fmt {Format specification: docidx (Indices)} 5 | doctools_api {API Formatting engine: doctools (Manpages)} 6 | doctoc_api {API Formatting engine: doctoc (Table of Contents)} 7 | docidx_api {API Formatting engine: docidx (Indices)} 8 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/link.vbs: -------------------------------------------------------------------------------- 1 | Set oWS = WScript.CreateObject("WScript.Shell") 2 | sLinkFile = "TkChat.lnk" 3 | Set oLink = oWS.CreateShortcut(sLinkFile) 4 | appDataLocation = oWS.ExpandEnvironmentStrings("%APPDATA%") 5 | app_dir = appDataLocation & "\TkChat" 6 | oLink.TargetPath = app_dir & "\bin\wish90.exe" 7 | oLink.Arguments = "AppMain.tcl" 8 | oLink.WorkingDirectory = app_dir & "\bin" 9 | oLink.IconLocation = app_dir & "\TkChat.ico" 10 | oLink.Save 11 | 12 | -------------------------------------------------------------------------------- /apps/ijbridge/ijbridge.man: -------------------------------------------------------------------------------- 1 | [manpage_begin ijbridge 1 1.1.0] 2 | [copyright {2004, Pat Thoyts}] 3 | [titledesc {Jabber-IRC bridge}] 4 | [require Tcl 8.4] 5 | [require jlib 2.0] 6 | [require sha1 1.0] 7 | [require irc 0.4] 8 | [description] 9 | [para] 10 | 11 | This application creates a bridge linking a Jabber Multi-User 12 | conference with an IRC channel. All messages on each side of the 13 | bridge are copied across the bridge. 14 | 15 | 16 | 17 | [see_also ircbridge(1)] 18 | [section AUTHORS] 19 | Pat Thoyts 20 | 21 | [keywords jabber {rfc 3920} {rfc 3921}] 22 | [manpage_end] 23 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/log/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded log 1.0 [list source [file join $dir log.tcl]] 12 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/struct/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded struct 1.1 [list source [file join $dir struct.tcl]] 12 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/htmlparse/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded htmlparse 0.2 [list source [file join $dir htmlparse.tcl]] 12 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/khim/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded khim 1.0.1 [list source [file join $dir khim.tcl]] 12 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/struct/struct.tcl: -------------------------------------------------------------------------------- 1 | package provide struct 1.1 2 | source [file join [file dirname [info script]] graph.tcl] 3 | source [file join [file dirname [info script]] queue.tcl] 4 | source [file join [file dirname [info script]] stack.tcl] 5 | source [file join [file dirname [info script]] tree.tcl] 6 | source [file join [file dirname [info script]] matrix.tcl] 7 | namespace eval struct { 8 | namespace import -force graph::* 9 | namespace import -force queue::* 10 | namespace import -force stack::* 11 | namespace import -force tree::* 12 | namespace import -force matrix::* 13 | namespace export * 14 | } 15 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/windowlist/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded windowlist 1.4 [list source [file join $dir windowlist.tcl]] 12 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/buildapp_linux: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Building TkChat installer..." 4 | 5 | if [ -d tkchat_build ] 6 | then 7 | rm -rf tkchat_build 8 | fi 9 | 10 | if [ -f TkChat_Setup.bin ] 11 | then 12 | rm TkChat_Setup.bin 13 | fi 14 | 15 | mkdir tkchat_build 16 | cp tkchat_install_linux tkchat_build/tkchat_install_linux 17 | cp -rf tkchat tkchat_build 18 | 19 | makeself ./tkchat_build ./TkChat_Setup.bin "Linux Installer for TkChat" ./tkchat_install_linux 20 | 21 | echo "Finalizing build of TkChat_Setup_$1.bin..." 22 | 23 | cp TkChat_Setup.bin TkChat_Setup_$1.bin 24 | 25 | chmod +x TkChat_Setup_$1.bin 26 | 27 | echo "Done." 28 | 29 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tcltls/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {[package vsatisfies [package present Tcl] 8.5-]} { 2 | if {$::tcl_platform(os) eq "Darwin"} { 3 | package ifneeded tls 1.8.0 4 | load [file join $dir libtcl9tls1.8.0.dylib] Tls 5 | return 6 | } 7 | if {$::tcl_platform(os) eq "Windows NT"} { 8 | package ifneeded tls 1.7.23 9 | load [file join $dir tcl9tls1723.dll] Tls 10 | return 11 | } 12 | if {$::tcl_platform(os) eq "Linux"} { 13 | package ifneeded tls 1.7.23 14 | load [file join $dir tcltls.so] Tls 15 | return 16 | } 17 | set tlsTclInitScript [file join $dir tls.tcl] 18 | if {[file exists $tlsTclInitScript]} { 19 | source $tlsTclInitScript 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/autoscroll/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if { ![package vsatisfies [package provide Tcl] 8.2] } { return } 12 | package ifneeded autoscroll 1.1 [list source [file join $dir autoscroll.tcl]] 13 | 14 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/tkchat_install_linux: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if ! [ $(id -u) = 0 ]; then 4 | echo "This installer must be run with root privileges" 5 | exit 1 6 | fi 7 | 8 | echo "Installing TkChat..." 9 | 10 | if [ ! -d /usr/local ] 11 | then 12 | mkdir /usr/local 13 | chmod -R 777 /usr/local 14 | fi 15 | 16 | if [ ! -d /usr/local/bin ] 17 | then 18 | mkdir /usr/local/bin 19 | chmod -R 777 /usr/local/bin 20 | fi 21 | 22 | 23 | if [ -d /usr/local/tkchat ] 24 | then 25 | echo "Checking for current installation of TkChat..." 26 | rm -rf /usr/local/tkchat 27 | fi 28 | 29 | cp -rf ./tkchat /usr/local 30 | chmod -R 777 /usr/local/tkchat 31 | 32 | if [ -f /usr/local/bin/tkchat ] 33 | then 34 | echo "Removing existing installation of TkChat..." 35 | unlink /usr/local/bin/tkchat 36 | fi 37 | 38 | mv /usr/local/tkchat/tkchat /usr/local/bin/tkchat 39 | 40 | chmod +777 /usr/local/bin/tkchat 41 | 42 | echo "Installation of TkChat complete." 43 | 44 | exit 0 45 | -------------------------------------------------------------------------------- /apps/csvop/NOTES.txt: -------------------------------------------------------------------------------- 1 | CSVop, a tool to manipulate CSV files 2 | ===================================== 3 | 4 | Internal notes 5 | -------------- 6 | 7 | Directory structure, basic 8 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 9 | 10 | / 11 | main.tcl 12 | lib/ 13 | app-*/ Application packages 14 | tools/ Tool package, common code 15 | data/ 16 | 17 | Directory structure, help 18 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 19 | / 20 | lib/ 21 | app-help/ 22 | pkgIndex.tcl Package Index 23 | help.tcl Implementation 24 | data/ 25 | help/ 26 | 27 | csv.man 28 | cache/ 29 | / 30 | Cached data 31 | 32 | 33 | Command line, possible future sub commands 34 | ------------------------------------------ 35 | 36 | Command line, internal (future) 37 | ------------------------------- 38 | 39 | csvop wrap 40 | Wrap your self into a starkit. 41 | See Misc. below. 42 | 43 | 44 | Misc 45 | ---- 46 | 47 | Need a tool to setup the complete tree of CSV, using soft-links to the 48 | originating files. 49 | 50 | -------------------------------------------------------------------------------- /apps/csvop/data/help/genopt.man: -------------------------------------------------------------------------------- 1 | [comment {-*- tcl -*-}] 2 | [manpage_begin general n 0.4] 3 | [copyright {2003 Andreas Kupries }] 4 | [moddesc {CSV processing}] 5 | [titledesc {General options}] 6 | [description] 7 | 8 | All commands of [cmd csvop] accept the following general options: 9 | 10 | [list_begin definitions] 11 | [lst_item "[option -sep] [arg char]"] 12 | 13 | By default the character comma [const ,] is used to separate the 14 | column of a csv formatted record. Using this option an arbitrary 15 | character [arg char] can be specified as column separator. 16 | 17 | [lst_item [option -alternate]] 18 | 19 | By default all commands assume that all their csv input is in the 20 | regular CSV format. Usage of this option changes this so that they 21 | assume that all csv input is in the alternate CSV format. 22 | 23 | [nl] 24 | 25 | [emph Note] that this option is only about the input read by the 26 | various commands. Their output will always be in regular syntax. 27 | 28 | [list_end] 29 | 30 | [manpage_end] 31 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/buildapp_mac: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Starting build process..." 4 | 5 | if [ -a build/TkChat.zip ] 6 | then 7 | rm build/TkChat.zip 8 | fi 9 | 10 | if [ -a TkChat.app ] 11 | then 12 | rm -rf TkChat.app 13 | fi 14 | 15 | if [ -a build/TkChat.app ] 16 | then 17 | rm -rf build/TkChat.app 18 | fi 19 | 20 | #create app bundle shell from standalone Wish app 21 | cp -R -f Wish.app TkChat.app 22 | mv TkChat.app/Contents/MacOS/Wish TkChat.app/Contents/MacOS/TkChat 23 | 24 | 25 | #copy additional files, resources to app bundle 26 | 27 | cp -f tkchat.icns TkChat.app/Contents/Resources/tkchat.icns 28 | cp -f info.plist TkChat.app/Contents/info.plist 29 | cp -R -f tkchat.vfs TkChat.app/Contents/Resources/Scripts 30 | 31 | echo "Making deployment build..." 32 | 33 | cp -Rf TkChat.app build/TkChat.app 34 | 35 | 36 | find build/TkChat.app -name "*.a" -exec rm -rf {} \; 37 | find build/TkChat.app -name "*debug" -exec rm -rf {} \; 38 | find build/TkChat.app -name "*.sh" -exec rm -rf {} \; 39 | 40 | xattr -cr build/TkChat.app 41 | 42 | echo "Done." 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /apps/csvop/README.txt: -------------------------------------------------------------------------------- 1 | CSVop, a tool to manipulate CSV files 2 | ===================================== 3 | 4 | Introduction 5 | ------------ 6 | 7 | CSVop is an easy to use application adding a nice interface around the 8 | tcllib package handling csv files. 9 | 10 | 11 | Dependencies 12 | ------------ 13 | 14 | The code is setup to use the 'starkit' package (*) to allow for easy 15 | deployment as *kit/pack. This means that "csvop" depends on Tcl 8.4 16 | and C code (starkit, tclvfs, metakit). 17 | 18 | For proper operation we need the csv, matrix, and report modules of 19 | tcllib. The embedded help requires the doctools and textutil packages. 20 | 21 | Command line, help 22 | ------------------ 23 | 24 | csvop help 25 | 26 | Simple help about the help sytem 27 | 28 | csvop help cmdline 29 | 30 | csvop commandline help in a supported format, written to stdout. 31 | 32 | /Internal/ The generic framework asks each application 33 | package for a fragment of .man, assembles this into 34 | one page and converts that. Tries to cache the result 35 | (no caching if starkit is not writeable). 36 | -------------------------------------------------------------------------------- /apps/tkvnc/ChangeLog: -------------------------------------------------------------------------------- 1 | 2003-01-17 Miguel Sofer 2 | * tkvnc.tcl: changed PIXELS array so that no conversions are 3 | needed at run time; optimisation of HextileRectEncoding). 4 | 5 | 2003-01-16 Jeff Hobbs 6 | 7 | * tkvnc.tcl: Add File -> Disconnect menu and Prefs -> Encoding Order. 8 | 9 | 2003-01-16 Miguel Sofer 10 | 11 | * tkvnc.tcl (RawEncoding): slightly faster option 12 | * tkvnc.tcl: fixed CopyRect, RRE and Hextile encodings. 13 | * tkvnc.tcl (SolidBlockFill): removed, replaced with direct 14 | invocation of $SCREEN 15 | * tkvnc.tcl (FillOutPixelCache): Changed color rescaling (too 16 | dark) 17 | 18 | 2003-01-15 Jeff Hobbs 19 | 20 | * tkvnc.tcl (UpdateUI): Change 'all' bindings to ROOT to not 21 | trigger key events when not over the main toplevel. 22 | 23 | * tkvnc.tcl: Updated to use namespaces, improve speed a bit, 24 | clean up code. 25 | 26 | * tkvnc.tcl: Initial import of tkvnc into CVS 27 | Original author is Greg Baker of the Institute for Open Systems 28 | Technologies, link at http://www.ifost.org.au/Software/. 29 | 30 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/uninstall.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | call :confirm 4 | if "%yesno%"=="6" ( 5 | call :remove 6 | ) else ( 7 | call :cancel 8 | ) 9 | exit /b 10 | 11 | 12 | 13 | :confirm 14 | ::returns 6 = Yes, 7 = No. 15 | set yesno= 16 | echo wscript.echo MsgBox("Do you want to uninstall TkChat?", vbYesNo+vbInformation, "Uninstall") > %temp%\confirm.vbs 17 | for /f "tokens=* delims=" %%a in ('cscript //nologo "%temp%\confirm.vbs"') do set yesno=%%a 18 | del %temp%\confirm.vbs /f /q 19 | exit /b 20 | 21 | 22 | :remove 23 | reg delete "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\TkChat.lnk" /f 24 | reg delete "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TkChat" /f 25 | 26 | rmdir "%appdata%\Microsoft\Windows\Start Menu\TkChat" /s /q 27 | echo MsgBox "Uninstallation of TkChat is complete.", vbOKOnly+vbInformation, "Uninstall"> %temp%\remove.vbs 28 | call %temp%\remove.vbs 29 | del %temp%\remove.vbs /f /q 30 | start /b "" cmd /c rmdir "%appdata%\TkChat\" /s /q && exit 31 | 32 | 33 | :cancel 34 | echo MsgBox "Uninstallation of TkChat cancelled.",vbOKOnly+vbInformation, "Uninstall TkChat" > %temp%\cancel.vbs 35 | call %temp%\cancel.vbs 36 | del %temp%\cancel.vbs /f /q 37 | exit /b 38 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | TkChat 9 | CFBundleGetInfoString 10 | 1.500 11 | CFBundleIconFile 12 | tkchat 13 | CFBundleIdentifier 14 | com.tcltk.tkchat 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | TkChat 19 | CFBundleDisplayName 20 | TkChat 21 | CFBundlePackageType 22 | APPL 23 | CFBundleVersion 24 | 1.500 25 | NSHighResolutionCapable 26 | True 27 | OSAScriptingDefinition 28 | Wish.sdef 29 | NSAppleScriptEnabled 30 | 31 | LSRequiresCarbon 32 | 33 | NSAppleEventsUsageDescription 34 | Requires permission to send system notifications. 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/main.tcl: -------------------------------------------------------------------------------- 1 | # Starkit setup. 2 | # 3 | package require Tk 4 | package require starkit 5 | starkit::startup 6 | 7 | set kitdir [file dirname $starkit::topdir] 8 | 9 | # Try and load a tls starkit. 10 | # 11 | switch -exact -- $tcl_platform(platform) { 12 | "windows" { lappend tlsnames [file join $kitdir tls-win.kit] } 13 | "unix" { lappend tlsnames [file join $kitdir tls-lin.kit] } 14 | } 15 | lappend tlsnames [file join $kitdir tls.kit] [auto_execok tls.kit] 16 | foreach tlsfile $tlsnames { 17 | if { [file exists $tlsfile] } { 18 | source $tlsfile 19 | break 20 | } 21 | } 22 | 23 | # Try and load the most recent tile starkit if using Tk 8.4 24 | # 25 | if {![package vsatisfies [package provide Tk] 8.5]} { 26 | foreach tile [lsort -decreasing \ 27 | [glob -nocomplain -directory $kitdir -tail tile*.kit]] { 28 | if {[file exists [file join $kitdir $tile]]} { 29 | source [file join $kitdir $tile] 30 | break 31 | } 32 | } 33 | } 34 | 35 | # Cleanup global variables. 36 | # 37 | unset -nocomplain kitdir tlsfile tlsnames tile 38 | 39 | # Start the chat script. 40 | # 41 | source [file join $starkit::topdir bin tkchat.tcl] 42 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/tkchat.sed: -------------------------------------------------------------------------------- 1 | [Version] 2 | Class=IEXPRESS 3 | SEDVersion=3 4 | [Options] 5 | PackagePurpose=InstallApp 6 | ShowInstallProgramWindow=0 7 | HideExtractAnimation=0 8 | UseLongFileName=1 9 | InsideCompressed=0 10 | CAB_FixedSize=0 11 | CAB_ResvCodeSigning=0 12 | RebootMode=N 13 | InstallPrompt=%InstallPrompt% 14 | DisplayLicense=%DisplayLicense% 15 | FinishMessage=%FinishMessage% 16 | TargetName=%TargetName% 17 | FriendlyName=%FriendlyName% 18 | AppLaunched=%AppLaunched% 19 | PostInstallCmd=%PostInstallCmd% 20 | AdminQuietInstCmd=%AdminQuietInstCmd% 21 | UserQuietInstCmd=%UserQuietInstCmd% 22 | SourceFiles=SourceFiles 23 | 24 | [Strings] 25 | InstallPrompt=Would you like to install TkChat? 26 | DisplayLicense=D:\Desktop\tkchat\license.txt 27 | FinishMessage=Thank you for installing TkChat. To run the program, please select it from the start menu. 28 | TargetName=D:\Desktop\tkchat\TkChat_Setup.exe 29 | FriendlyName=TkChat_Setup 30 | AppLaunched=cmd /c install.bat 31 | PostInstallCmd= 32 | AdminQuietInstCmd= 33 | UserQuietInstCmd= 34 | FILE0="WordTech_CA.cer" 35 | FILE1="install.bat" 36 | FILE2="TkChat.zip" 37 | FILE3="link.vbs" 38 | [SourceFiles] 39 | SourceFiles0=D:\Desktop\tkchat\ 40 | [SourceFiles0] 41 | %FILE0%= 42 | %FILE1%= 43 | %FILE2%= 44 | %FILE3%= 45 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | RCS: @(#) $Id: README,v 1.1.1.1 2001/09/27 18:00:16 hobbs Exp $ 2 | 3 | Welcome to the tclapps, a suite of small applications for Tcl useful as 4 | examples and in regular use to a large collection of Tcl programmers. 5 | Applications may require Tcl, Tk and any known extensions. This should be 6 | explicitly noted in accompanying documentation, and the proper package 7 | require statements should be used. 8 | 9 | The structure of the tclapps heirarchy is: 10 | 11 | tclapps 12 | +- apps 13 | +- 14 | +- 15 | +- ... 16 | 17 | 18 | There are some base requirements that a application should meet before it 19 | will be added to tclapps: 20 | 21 | * the application should use a namespace for its commands and variables 22 | 23 | * the application must use package require statements for any packages 24 | used, preferrably with pointers on how to obtain the package 25 | 26 | * the application must reside in a subdirectory of the applications 27 | directory in the source heirarchy, and that subdirectory must have the 28 | same name as the application and namespace used 29 | 30 | * the application must be released under the BSD License, the terms of 31 | which can be found in the toplevel tclapps source directory in the file 32 | license.terms 33 | 34 | * the application should have documentation 35 | 36 | * the application should adhere to Tcl coding standards 37 | 38 | -------------------------------------------------------------------------------- /apps/dtp/README.txt: -------------------------------------------------------------------------------- 1 | DTP, the DocTools Processor 2 | =========================== 3 | 4 | Introduction 5 | ------------ 6 | 7 | The DocTools Processor is an easy to use application adding a nice 8 | interface around the tcllib package handling doctools formatted 9 | texts. It makes it easy to process a large set of manpages in one go, 10 | customizing the output, and more. 11 | 12 | Note that the 'doctools' in the name of the application refers to 13 | 14 | - a tcl-based format for writing manpages 15 | - a module in the Tcllib package of the same name 16 | - a package in the module above to handle text written in the format. 17 | 18 | 19 | Dependencies 20 | ------------ 21 | 22 | The code is setup to use the 'starkit' package (*) to allow for easy 23 | deployment as *kit/pack. This means that the dtp depends on Tcl 8.4 24 | and C code (starkit, tclvfs, metakit). 25 | 26 | For proper operation we need the textutil and doctools modules of 27 | tcllib. 28 | 29 | Command line, help 30 | ------------------ 31 | 32 | dtp help 33 | 34 | Simple help about the help sytem 35 | 36 | dtp help cmdline 37 | 38 | dtp commandline help in a supported format, written to stdout. 39 | 40 | /Internal/ The generic framework asks each application 41 | package for a fragment of .man, assembles this into 42 | one page and converts that. Tries to cache the result 43 | (no caching if starkit is not writeable). 44 | -------------------------------------------------------------------------------- /apps/ijbridge/ijbridge.conf.sample: -------------------------------------------------------------------------------- 1 | # Jabber-IRC bridge configuration file 2 | # 3 | # This file setup up the login conditions and the endpoints for the bridge. 4 | # You should rename this file ijbridge.conf and give suitable settings 5 | # of your own. 6 | # 7 | # Note: you need to configure nearly all the settings given in this file. 8 | # 9 | # Comments begin with # and blank lines are ignored. 10 | # No additional options are permitted. 11 | 12 | # Jabber connection information 13 | # 14 | JabberServer YOUR.JABBER.SERVER 15 | JabberPort 5222 16 | JabberResource ijbridge 17 | JabberUser VALIDJABBERUSERID 18 | JabberPassword VALIDJABBERPASSWORD 19 | 20 | # Details for the Jabber conference room to join to. 21 | # 22 | Conference ROOM@CONFERENCE.JABBER.SERVERk 23 | ConferenceNick ijchain 24 | 25 | # IRC connection details 26 | # 27 | IrcServer IRC.SERVER.NAME 28 | IrcPort 6667 29 | IrcUser IRCNICK 30 | IrcChannel #IRCCHANNEL 31 | 32 | # FreeNode restricts PRIVMSG to identified users. 33 | # Provide your IrcUser nick's pasword for use in identifying this 34 | # client to FreenNode's nickserv. 35 | # 36 | IrcNickPasswd IRCNICKSERVPASSWORD 37 | # 38 | # If you want to maintain a running statistics count between invocations 39 | # then specify a file path to maintain the counters. If this is an empty 40 | # string then no file will be used. 41 | # 42 | StatisticsFile "" 43 | ColorsFile "" 44 | 45 | -------------------------------------------------------------------------------- /apps/dtp/WRAPPING.txt: -------------------------------------------------------------------------------- 1 | How to convert this application into a starkit 2 | ============================================== 3 | 4 | It should be noted that the description below leaves out the steps of 5 | aquiring dtp and tcllib. The first is not necessary when reading this 6 | file, you already have the sources. It is assumed that the reader 7 | knows how to perform the second. 8 | 9 | ============================================== 10 | 11 | Only 2 steps are required 12 | 13 | 1) tclsh dtp.vfs/main.tcl assemble TCLLIB_DIR 14 | 15 | In the command above TCLLIB_DIR refers to a source 16 | directory of tcllib. An installed tcllib cannot be 17 | used ! 18 | 19 | The 'assemble' command determines the locations of textutil and 20 | doctools and copies the relevant portions into the lib and help 21 | subdirectories of 'dtp.vfs'. 22 | 23 | 2) sdx wrap dtp 24 | 25 | Alternatively we can do this one step. 26 | 27 | 1) tclsh dtp.vfs/main.tcl assemble TCLLIB_DIR APPNAME 28 | 29 | Here APPNAME is the name of the starkit to generate. 30 | 31 | For this single step to work the tclsh has to have access to the 32 | tclvfs package and mk4tcl. In other words, use a either a tclsh 33 | from an ActiveTcl 8.4.2 (or higher) installation, or a 34 | tclkit. Both come with the require packages. 35 | 36 | The operation does all of the assembly described in step 1 of the 37 | two-step process and then wraps the completed directory hierarchy 38 | into a starkit, like sdx does. 39 | 40 | ============================================== 41 | -------------------------------------------------------------------------------- /apps/csvop/WRAPPING.txt: -------------------------------------------------------------------------------- 1 | How to convert this application into a starkit 2 | ============================================== 3 | 4 | It should be noted that the description below leaves out the steps of 5 | aquiring csvop and tcllib. The first is not necessary when reading this 6 | file, you already have the sources. It is assumed that the reader 7 | knows how to perform the second. 8 | 9 | ============================================== 10 | 11 | Only 2 steps are required 12 | 13 | 1) tclsh csvop.vfs/main.tcl assemble TCLLIB_DIR 14 | 15 | In the command above TCLLIB_DIR refers to a source 16 | directory of tcllib. An installed tcllib cannot be 17 | used ! 18 | 19 | The 'assemble' command determines the locations of textutil and 20 | doctools and copies the relevant portions into the lib and help 21 | subdirectories of 'csvop.vfs'. 22 | 23 | 2) sdx wrap csvop 24 | 25 | Alternatively we can do this one step. 26 | 27 | 1) tclsh csvop.vfs/main.tcl assemble TCLLIB_DIR APPNAME 28 | 29 | Here APPNAME is the name of the starkit to generate. 30 | 31 | For this single step to work the tclsh has to have access to the 32 | tclvfs package and mk4tcl. In other words, use a either a tclsh 33 | from an ActiveTcl 8.4.2 (or higher) installation, or a 34 | tclkit. Both come with the require packages. 35 | 36 | The operation does all of the assembly described in step 1 of the 37 | two-step process and then wraps the completed directory hierarchy 38 | into a starkit, like sdx does. 39 | 40 | ============================================== 41 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/critcl/critcl_c/X11/keysym.h: -------------------------------------------------------------------------------- 1 | /* $XConsortium: keysym.h,v 1.13 91/03/13 20:09:49 rws Exp $ */ 2 | 3 | /*********************************************************** 4 | Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, 5 | and the Massachusetts Institute of Technology, Cambridge, Massachusetts. 6 | 7 | All Rights Reserved 8 | 9 | Permission to use, copy, modify, and distribute this software and its 10 | documentation for any purpose and without fee is hereby granted, 11 | provided that the above copyright notice appear in all copies and that 12 | both that copyright notice and this permission notice appear in 13 | supporting documentation, and that the names of Digital or MIT not be 14 | used in advertising or publicity pertaining to distribution of the 15 | software without specific, written prior permission. 16 | 17 | DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 18 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 19 | DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 20 | ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 21 | WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 22 | ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 23 | SOFTWARE. 24 | 25 | ******************************************************************/ 26 | 27 | /* default keysyms */ 28 | #define XK_MISCELLANY 29 | #define XK_LATIN1 30 | #define XK_LATIN2 31 | #define XK_LATIN3 32 | #define XK_LATIN4 33 | #define XK_GREEK 34 | 35 | #include 36 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-script/script.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Generation (Conversion subsystem - Table of Contents) 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | 8 | namespace eval app-script {} 9 | 10 | # ------------------------------------------------------ 11 | # Acceptable syntax for cmdline functionality 12 | 13 | set ::app-script::help(cmdline) { 14 | 15 | [call [cmd {@appname@}] [method script] [opt "[option -out] [arg outputfile]"]] 16 | 17 | Returns a shell script stored in the application on [const stdout], or 18 | to the file specified with [option -out], if that option is present. 19 | 20 | } 21 | 22 | proc ::app-script::help {topic} { 23 | variable help 24 | if {[info exists help($topic)]} {return $help($topic)} 25 | return {} 26 | } 27 | 28 | # ------------------------------------------------------ 29 | # Implementation of cmdline functionality. 30 | 31 | proc ::app-script::run {argv} { 32 | set errstring "wrong#args: getscript ?-out output?" 33 | 34 | set outfile "" 35 | while {[string match -* [lindex $argv 0]]} { 36 | if {[string equal [lindex $argv 0] -out]} { 37 | if {[llength $argv] < 2} {tools::usage $errstring} 38 | 39 | set outfile [lindex $argv 1] 40 | set argv [lrange $argv 2 end] 41 | continue 42 | } 43 | } 44 | 45 | if {$outfile != {}} { 46 | optcheck::outfile $outfile "Output file" 47 | set outfile [open $outfile w] 48 | } else { 49 | set outfile stdout 50 | } 51 | 52 | if {[llength $argv] != 0} {tools::usage $errstring} 53 | tools::copyout [file join [tools::topdir] data doc_a_package.sh] $outfile 54 | return 55 | } 56 | 57 | # ------------------------------------------------------ 58 | package provide app-script 0.1 59 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/jabberlib/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded browse 2.0 [list source [file join $dir browse.tcl]] 12 | package ifneeded caps 1.0 [list source [file join $dir caps.tcl]] 13 | package ifneeded disco 0.1 [list source [file join $dir disco.tcl]] 14 | package ifneeded groupchat 1.0 [list source [file join $dir groupchat.tcl]] 15 | package ifneeded jlib 2.0 [list source [file join $dir jabberlib.tcl]] 16 | package ifneeded jlib::dns 0.1 [list source [file join $dir jlibdns.tcl]] 17 | package ifneeded jlibhttp 0.1 [list source [file join $dir jlibhttp.tcl]] 18 | package ifneeded jlibsasl 1.0 [list source [file join $dir jlibsasl.tcl]] 19 | package ifneeded jlibtls 1.0 [list source [file join $dir jlibtls.tcl]] 20 | package ifneeded muc 0.2 [list source [file join $dir muc.tcl]] 21 | package ifneeded pubsub 1.0 [list source [file join $dir pubsub.tcl]] 22 | package ifneeded roster 1.0 [list source [file join $dir roster.tcl]] 23 | package ifneeded saslmd5 1.0 [list source [file join $dir saslmd5.tcl]] 24 | package ifneeded service 1.0 [list source [file join $dir service.tcl]] 25 | package ifneeded stanzaerror 1.0 [list source [file join $dir stanzaerror.tcl]] 26 | package ifneeded streamerror 1.0 [list source [file join $dir streamerror.tcl]] 27 | package ifneeded tinydom 0.1 [list source [file join $dir tinydom.tcl]] 28 | package ifneeded wrapper 1.2 [list source [file join $dir wrapper.tcl]] 29 | -------------------------------------------------------------------------------- /apps/csvop/main.tcl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # -*- tcl -*- \ 3 | exec tclsh "$0" ${1+"$@"} 4 | # Main file for multi-purpose CSVop application 5 | 6 | # We cannot assume the existence of package starkit. This implies that 7 | # we have to create our own topdir information. 8 | 9 | if {[catch { 10 | package require starkit 11 | starkit::startup 12 | set top $starkit::topdir 13 | }]} { 14 | # Generate our own topdir information and do the same setup with 15 | # regard to auto_path as is done by the starkit support. 16 | 17 | set top [file dirname [file normalize [file join [pwd] [info script]]]] 18 | lappend auto_path [file join $top lib] 19 | } 20 | 21 | # setup the tools, especially our own portable topdir reference 22 | package require tools 23 | tools::topdir= $top 24 | 25 | # Debugging as subdir of doctools - Need access to tcllib modules. 26 | 27 | lappend auto_path [set _ [file dirname [file dirname $top]]] 28 | #lappend auto_path [file dirname [file dirname [file dirname $_]]] 29 | 30 | 31 | if 0 { 32 | puts "=== $top" 33 | puts "~~~ [file dirname [file normalize [file join [pwd] [info script]]]]" 34 | puts \t[join $auto_path \n\t] 35 | } 36 | 37 | 38 | if {[llength $argv] < 1} { 39 | puts stderr "usage: $argv0 subcommand arguments..." 40 | exit 1 41 | } 42 | 43 | set command [lindex $argv 0] 44 | 45 | if {![file exists [file join $top lib app-$command]]} { 46 | cd [file join $top lib] 47 | set cmdlist [list] 48 | foreach a [glob -nocomplain -type d app-*] { 49 | lappend cmdlist [regsub -- {^app-} $a {}] 50 | } 51 | if {[llength $cmdlist] == 0} { 52 | set cmds nothing 53 | } elseif {[llength $cmdlist] == 1} { 54 | set cmds \"[join $cmdlist]\" 55 | } else { 56 | set cmds [linsert [join $cmdlist ", "] end-1 or] 57 | } 58 | tools::usage "unknown command \"$command\", expected $cmds" 59 | # Don't come here 60 | } 61 | 62 | package require app-$command 63 | app-${command}::run [lrange $argv 1 end] 64 | exit 0 65 | -------------------------------------------------------------------------------- /apps/ircbridge/ChangeLog: -------------------------------------------------------------------------------- 1 | 2005-04-25 Pat Thoyts 2 | 3 | * bridge.tcl: Added an ingore list to deal with trolls. 4 | * chat.tcl: 5 | * cmdloop.tcl: Added so that we can enter commands into the 6 | running bridge (we run the bridge in a screen 7 | session). 8 | 9 | 2004-03-11 Pascal Scheffers 10 | 11 | * bridge.tcl: Fixed a /msg loop for welcome messages, added config 12 | options for irc server, port, nick and channel. 13 | * chat.tcl: Added chatter2.cgi support to cut chat-lag 14 | 15 | 2004-03-11 Pascal Scheffers 16 | 17 | * bridge.tcl: Added ~/.ircbridge sourcing 18 | * chat.tcl: Added killpassword safeguard and chatpassword 19 | 20 | 2003-10-10 Pascal Scheffers 21 | 22 | * bridge.tcl: slight improvement to onlineusers tracking 23 | 24 | 2003-10-07 Pascal Scheffers 25 | 26 | * bridge.tcl: Added code to [daemonize] the bridge (uses Tclx) 27 | * bridge.tcl, chat.tcl: Added support for onlineusers tracking and 28 | listing with the 'onlineusers' whisper from a webchat user. 29 | 30 | 2003-10-07 Pascal Scheffers 31 | 32 | * pkgIndex.tcl: Added so the bridge runs straight from CVS 33 | 34 | 2003-06-26 David N. Welton 35 | 36 | * bridge.tcl: Large reworking by Aaron Faupell. 37 | * chat.tcl: Lots of changes here too. 38 | 39 | 2003-02-28 David N. Welton 40 | 41 | * bridge.tcl: Add changes from Kristoffer Lawson 42 | . 43 | 44 | 2003-01-30 David N. Welton 45 | 46 | * bridge.tcl: This file is the one that starts everything up. 47 | Removed startup #!/bin/sh stuff from chat.tcl. 48 | 49 | 2003-01-29 David N. Welton 50 | 51 | * Added ircbridge to CVS. There are several people interested in 52 | contributing to development efforts, so this seemed like an apt 53 | place to put it. 54 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/tkchat.iss: -------------------------------------------------------------------------------- 1 | ; Script generated by the Inno Setup Script Wizard. 2 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 3 | 4 | #define MyAppName "TkChat" 5 | #define MyAppVersion "1.510" 6 | #define MyAppPublisher "Tcl/Tk Community" 7 | #define MyAppURL "http://tkchat.tcl.tk" 8 | 9 | [Setup] 10 | ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. 11 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 12 | SignTool=codesign 13 | AppId={{9115ECD5-FD4F-485E-8B5B-2FA13F3DDB83} 14 | AppName={#MyAppName} 15 | AppVersion={#MyAppVersion} 16 | ;AppVerName={#MyAppName} {#MyAppVersion} 17 | AppPublisher={#MyAppPublisher} 18 | AppPublisherURL={#MyAppURL} 19 | AppSupportURL={#MyAppURL} 20 | AppUpdatesURL={#MyAppURL} 21 | DefaultDirName={autopf}\{#MyAppName} 22 | DefaultGroupName={#MyAppName} 23 | ; Uncomment the following line to run in non administrative install mode (install for current user only.) 24 | ;PrivilegesRequired=lowest 25 | OutputBaseFilename=TkChat_Setup_{#MyAppVersion} 26 | Compression=lzma 27 | SolidCompression=yes 28 | WizardStyle=modern 29 | SignedUninstaller=yes 30 | UninstallDisplayIcon="{app}\bin\tclkit.ico" 31 | OutputDir="D:\Desktop\tkchat\installer" 32 | VersionInfoVersion={#MyAppVersion} 33 | 34 | 35 | [Languages] 36 | Name: "english"; MessagesFile: "compiler:Default.isl" 37 | 38 | [Files] 39 | Source: "D:\Desktop\tkchat\build\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 40 | ; NOTE: Don't use "Flags: ignoreversion" on any shared system files 41 | 42 | [Icons] 43 | Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" 44 | Name: "{group}\{#MyAppName}"; Filename: "{app}\bin\wish87"; IconFilename: "{app}\bin\tclkit.ico"; WorkingDir: "{app}\bin"; Parameters: "AppMain.tcl"; AppUserModelID: "{#MyAppName}"; AppUserModelToastActivatorCLSID: "F641DD35-A554-464E-AEBE-AFEFF317DB53" 45 | 46 | 47 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/critcl/critcl_c/X11/Xfuncproto.h: -------------------------------------------------------------------------------- 1 | /* $XConsortium: Xfuncproto.h,v 1.7 91/05/13 20:49:21 rws Exp $ */ 2 | /* 3 | * Copyright 1989, 1991 by the Massachusetts Institute of Technology 4 | * 5 | * Permission to use, copy, modify, and distribute this software and its 6 | * documentation for any purpose and without fee is hereby granted, provided 7 | * that the above copyright notice appear in all copies and that both that 8 | * copyright notice and this permission notice appear in supporting 9 | * documentation, and that the name of M.I.T. not be used in advertising 10 | * or publicity pertaining to distribution of the software without specific, 11 | * written prior permission. M.I.T. makes no representations about the 12 | * suitability of this software for any purpose. It is provided "as is" 13 | * without express or implied warranty. 14 | * 15 | */ 16 | 17 | /* Definitions to make function prototypes manageable */ 18 | 19 | #ifndef _XFUNCPROTO_H_ 20 | #define _XFUNCPROTO_H_ 21 | 22 | #ifndef NeedFunctionPrototypes 23 | #define NeedFunctionPrototypes 1 24 | #endif /* NeedFunctionPrototypes */ 25 | 26 | #ifndef NeedVarargsPrototypes 27 | #define NeedVarargsPrototypes 0 28 | #endif /* NeedVarargsPrototypes */ 29 | 30 | #if NeedFunctionPrototypes 31 | 32 | #ifndef NeedNestedPrototypes 33 | #define NeedNestedPrototypes 1 34 | #endif /* NeedNestedPrototypes */ 35 | 36 | #ifndef _Xconst 37 | #define _Xconst const 38 | #endif /* _Xconst */ 39 | 40 | #ifndef NeedWidePrototypes 41 | #ifdef NARROWPROTO 42 | #define NeedWidePrototypes 0 43 | #else 44 | #define NeedWidePrototypes 1 /* default to make interropt. easier */ 45 | #endif 46 | #endif /* NeedWidePrototypes */ 47 | 48 | #endif /* NeedFunctionPrototypes */ 49 | 50 | #ifdef __cplusplus 51 | #define _XFUNCPROTOBEGIN extern "C" { 52 | #define _XFUNCPROTOEND } 53 | #endif 54 | 55 | #ifndef _XFUNCPROTOBEGIN 56 | #define _XFUNCPROTOBEGIN 57 | #define _XFUNCPROTOEND 58 | #endif /* _XFUNCPROTOBEGIN */ 59 | 60 | #endif /* _XFUNCPROTO_H_ */ 61 | -------------------------------------------------------------------------------- /apps/dtp/main.tcl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # -*- tcl -*- \ 3 | exec tclsh "$0" ${1+"$@"} 4 | # Main file for multi-purpose DTP application 5 | 6 | # We cannot assume the existence of package starkit. This implies that 7 | # we have to create our own topdir information. 8 | 9 | if {[catch { 10 | package require starkit 11 | starkit::startup 12 | set top $starkit::topdir 13 | }]} { 14 | # Generate our own topdir information and do the same setup with 15 | # regard to auto_path as is done by the starkit support. 16 | 17 | set top [file dirname [file normalize [file join [pwd] [info script]]]] 18 | lappend auto_path [file join $top lib] 19 | } 20 | 21 | # setup the tools, especially our own portable topdir reference 22 | package require tools 23 | tools::topdir= $top 24 | 25 | # Debugging as subdir of doctools - Need access to tcllib modules. 26 | 27 | lappend auto_path [set _ [file dirname [file dirname $top]]] 28 | #lappend auto_path [file dirname [file dirname [file dirname $_]]] 29 | 30 | 31 | if 0 { 32 | puts "=== $top" 33 | puts "~~~ [file dirname [file normalize [file join [pwd] [info script]]]]" 34 | puts \t[join $auto_path \n\t] 35 | } 36 | 37 | # Without a command divert the user immediately to help. 38 | 39 | if {[llength $argv] < 1} { 40 | set command help 41 | } else { 42 | set command [lindex $argv 0] 43 | } 44 | if {[string equal $command ""]} { 45 | set command help 46 | } 47 | 48 | 49 | if {![file exists [file join $top lib app-$command]]} { 50 | cd [file join $top lib] 51 | set cmdlist [list] 52 | foreach a [glob -nocomplain -type d app-*] { 53 | lappend cmdlist [regsub -- {^app-} $a {}] 54 | } 55 | if {[llength $cmdlist] == 0} { 56 | set cmds nothing 57 | } elseif {[llength $cmdlist] == 1} { 58 | set cmds \"[join $cmdlist]\" 59 | } else { 60 | set cmds [linsert [join $cmdlist ", "] end-1 or] 61 | } 62 | tools::usage "unknown command \"$command\", expected $cmds" 63 | # Don't come here 64 | } 65 | 66 | package require app-$command 67 | app-${command}::run [lrange $argv 1 end] 68 | exit 0 69 | -------------------------------------------------------------------------------- /apps/dtp/data/doc_a_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Arguments 3 | # 1 - Package directory 4 | # 2 - Destination directory for documentation (fixed: html) 5 | # 3 - Label (optional, basename #1 else) 6 | 7 | src=$1 ; shift 8 | dst=$1 ; shift 9 | lbl=$1 10 | 11 | if [ x$src = x -o x$dst = x ] ; then 12 | echo 1>&2 usage: $0 source destination 13 | exit 1 14 | fi 15 | 16 | if [ x$lbl = x ] ; then 17 | lbl=`basename $src` 18 | fi 19 | 20 | # Steps 21 | # - Generate the destination 22 | # - Generate the file map, the navbars, the toc, index, and the pages 23 | # in this order 24 | # - Delete the transient files. 25 | 26 | rm -rf $dst 27 | mkdir -p $dst 28 | 29 | echo Find and map sources ... 30 | dtp map -ext html -out $dst -trail 2 `find $src -type f -name '*.man' | sort` > $$.map 31 | echo _index_ $dst/index.html >> $$.map 32 | echo _toc_ $dst/toc.html >> $$.map 33 | 34 | 35 | echo Fixed nagivation bars ... 36 | dtp navbar $$.map _toc_ _toc_ 'Table Of Contents' /off _index_ 'Index' /on > $$.nb_toc 37 | dtp navbar $$.map _index_ _toc_ 'Table Of Contents' /on _index_ 'Index' /off > $$.nb_idx 38 | dtp navbar $$.map _index_ _toc_ 'Table Of Contents' /pass _index_ 'Index' /pass > $$.nb_page 39 | # In the last command _index_ is a dummy, but has to be a valid symbolic filename. 40 | 41 | 42 | echo Meta information ... 43 | dtp meta $$.map > $$.meta 44 | 45 | 46 | echo Table Of Contents ... 47 | dtp toc \ 48 | -title "$lbl -- Table of Contents" \ 49 | -desc Modules \ 50 | $$.meta \ 51 | > $$.toc 52 | 53 | dtp gen-toc \ 54 | -varfile header $$.nb_toc \ 55 | html $$.map $$.toc > $dst/toc.html 56 | 57 | 58 | echo Index ... 59 | dtp idx \ 60 | -title $lbl \ 61 | -desc "Keyword index" \ 62 | $$.meta \ 63 | > $$.idx 64 | dtp gen-idx \ 65 | -varfile header $$.nb_idx \ 66 | html $$.map $$.idx > $dst/index.html 67 | 68 | 69 | echo Pages ... 70 | dtp gen-doc \ 71 | -varfile header $$.nb_page \ 72 | -subst header _toc_ $dst/toc.html \ 73 | -subst header _index_ $dst/index.html \ 74 | html $$.map $$.meta 75 | 76 | rm $$.* 77 | exit 78 | -------------------------------------------------------------------------------- /license.terms: -------------------------------------------------------------------------------- 1 | This software is copyrighted by various parties. 2 | The following terms apply to all files associated with the software unless 3 | explicitly disclaimed in individual files. 4 | 5 | The authors hereby grant permission to use, copy, modify, distribute, 6 | and license this software and its documentation for any purpose, provided 7 | that existing copyright notices are retained in all copies and that this 8 | notice is included verbatim in any distributions. No written agreement, 9 | license, or royalty fee is required for any of the authorized uses. 10 | Modifications to this software may be copyrighted by their authors 11 | and need not follow the licensing terms described here, provided that 12 | the new terms are clearly indicated on the first page of each file where 13 | they apply. 14 | 15 | IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY 16 | FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 17 | ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY 18 | DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE 19 | POSSIBILITY OF SUCH DAMAGE. 20 | 21 | THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, 22 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, 23 | FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE 24 | IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE 25 | NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR 26 | MODIFICATIONS. 27 | 28 | GOVERNMENT USE: If you are acquiring this software on behalf of the 29 | U.S. government, the Government shall have only "Restricted Rights" 30 | in the software and related documentation as defined in the Federal 31 | Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you 32 | are acquiring the software on behalf of the Department of Defense, the 33 | software shall be classified as "Commercial Computer Software" and the 34 | Government shall have only "Restricted Rights" as defined in Clause 35 | 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the 36 | authors grant the U.S. Government and others acting in its behalf 37 | permission to use and distribute the software in accordance with the 38 | terms specified in this license. 39 | -------------------------------------------------------------------------------- /apps/ijbridge/license.terms: -------------------------------------------------------------------------------- 1 | This software is copyrighted by Ajuba Solutions and other parties. 2 | The following terms apply to all files associated with the software unless 3 | explicitly disclaimed in individual files. 4 | 5 | The authors hereby grant permission to use, copy, modify, distribute, 6 | and license this software and its documentation for any purpose, provided 7 | that existing copyright notices are retained in all copies and that this 8 | notice is included verbatim in any distributions. No written agreement, 9 | license, or royalty fee is required for any of the authorized uses. 10 | Modifications to this software may be copyrighted by their authors 11 | and need not follow the licensing terms described here, provided that 12 | the new terms are clearly indicated on the first page of each file where 13 | they apply. 14 | 15 | IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY 16 | FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 17 | ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY 18 | DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE 19 | POSSIBILITY OF SUCH DAMAGE. 20 | 21 | THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, 22 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, 23 | FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE 24 | IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE 25 | NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR 26 | MODIFICATIONS. 27 | 28 | GOVERNMENT USE: If you are acquiring this software on behalf of the 29 | U.S. government, the Government shall have only "Restricted Rights" 30 | in the software and related documentation as defined in the Federal 31 | Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you 32 | are acquiring the software on behalf of the Department of Defense, the 33 | software shall be classified as "Commercial Computer Software" and the 34 | Government shall have only "Restricted Rights" as defined in Clause 35 | 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the 36 | authors grant the U.S. Government and others acting in its behalf 37 | permission to use and distribute the software in accordance with the 38 | terms specified in this license. 39 | -------------------------------------------------------------------------------- /apps/dtp/NOTES.txt: -------------------------------------------------------------------------------- 1 | DTP, the DocTools Processor 2 | =========================== 3 | 4 | Internal notes 5 | -------------- 6 | 7 | Consider comparison of timestamps to generate only the output files 8 | which are needed. sort of a specialized mini make-mode. 9 | 10 | Create sub-command to extract and list engine parameters 11 | Create sub-command to list the builtin formats (doc, toc, idx) 12 | 13 | Consider sub-command which does a complete run (index, toc, manpages) 14 | in one go => html. Essentially the shell script of `dtp script` in 15 | tcl, using all proper shortcuts, no intermediate files. 16 | 17 | 18 | Directory structure, basic 19 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 20 | 21 | / 22 | main.tcl 23 | lib/ 24 | app-*/ Application packages 25 | tools/ Tool package, common code 26 | dtglue/ Package containing convenience routines for 27 | dealing with the doctools packages. 28 | data/ 29 | 30 | Directory structure, help 31 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 | / 33 | lib/ 34 | app-help/ 35 | pkgIndex.tcl Package Index 36 | help.tcl Implementation 37 | data/ 38 | help/ 39 | 40 | doctools.man (Actually dtformat.man) 41 | cache/ 42 | / 43 | Cached data 44 | 45 | 46 | Command line, possible future sub commands 47 | ------------------------------------------ 48 | 49 | dtp httpd 50 | 51 | Run as webserver. Displays the documentation, and has an 52 | interface to upload and convert .man files. 53 | 54 | Half-baked formats. 55 | 56 | * Generate output requiring header and/or 57 | footer for completion 58 | 59 | * Header/footer specification 60 | 61 | Merged output 62 | 63 | * Concatenate the generated output into one long file. 64 | 65 | * Allow for insertion of text between the individual 66 | files. Together with halfbaked formats we get header, 67 | footer, and intra-file separator text. 68 | 69 | toc/index merging 70 | 71 | * All files + toc + index in one output 72 | Header, footer, intra-file separator 73 | toc- and index-separators. 74 | 75 | 76 | Command line, internal (future) 77 | ------------------------------- 78 | 79 | dtp wrap 80 | Wrap your self into a starkit. 81 | See Misc. below. 82 | 83 | 84 | Misc 85 | ---- 86 | 87 | Need a tool to setup the complete tree of DTP, using soft-links to the 88 | originating files. 89 | -------------------------------------------------------------------------------- /apps/csvop/data/help/csv-format.man: -------------------------------------------------------------------------------- 1 | [comment {-*- tcl -*-}] 2 | [manpage_begin csv n 0.4] 3 | [copyright {2002-2003 Andreas Kupries }] 4 | [moddesc {CSV processing}] 5 | [titledesc {Specification of the CSV format}] 6 | [description] 7 | 8 | The format of regular CSV files is specified as 9 | 10 | [list_begin enum] 11 | 12 | [enum] 13 | Each record of a csv file (comma-separated values, as exported e.g. by 14 | Excel) is a set of ASCII values separated by ",". In some cases the 15 | separation character may be ";". This is not important as the 16 | functions provided here allow any separator character. 17 | 18 | [enum] 19 | If and only if a value contains the specified separator ("," by 20 | default), then the value has to be specified between "". If the value 21 | does not contain the separator character, then quoting is optional. 22 | 23 | [enum] 24 | If a value contains the character ", that character is represented by 25 | "". 26 | 27 | [enum] 28 | The output string "" represents the value ". In other words, it is 29 | assumed that it was created through rule 3, and only this rule, 30 | i.e. that the value was not quoted. 31 | 32 | [enum] 33 | The absence of a value is represented by no character whatsoever. 34 | 35 | [list_end] 36 | [para] 37 | 38 | An alternate format definition mainly used by MS products specifies 39 | that the output string "" is an representation of the absent value. In 40 | other words, it is assumed that the output was generated out of the 41 | empty string by quoting it (i.e. rule 2), and not through rule 3. This 42 | is the only difference between the regular and the alternate formats. 43 | 44 | [section EXAMPLE] 45 | 46 | Using the regular format, the record 47 | 48 | [para] 49 | [example { 50 | 123,"","123,521.2",,"Mary says ""Hello, I am Mary""" 51 | }] 52 | 53 | [para] 54 | is parsed into the items 55 | 56 | [para] 57 | [example { 58 | a) 123 59 | b) " 60 | c) 123,521.2 61 | d) 62 | (that is, an empty or missing value) 63 | e) Mary says "Hello, I am Mary" 64 | }] 65 | 66 | [para] 67 | Using the alternate format, the record is parsed as 68 | 69 | [para] 70 | [example { 71 | a) 123 72 | b) 73 | (that is, an empty or missing value) 74 | c) 123,521.2 75 | d) 76 | (that is, an empty or missing value) 77 | e) Mary says "Hello, I am Mary" 78 | }] 79 | 80 | [manpage_end] 81 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/critcl/critcl_c/X11/cursorfont.h: -------------------------------------------------------------------------------- 1 | /* $XConsortium: cursorfont.h,v 1.2 88/09/06 16:44:27 jim Exp $ */ 2 | #define XC_num_glyphs 154 3 | #define XC_X_cursor 0 4 | #define XC_arrow 2 5 | #define XC_based_arrow_down 4 6 | #define XC_based_arrow_up 6 7 | #define XC_boat 8 8 | #define XC_bogosity 10 9 | #define XC_bottom_left_corner 12 10 | #define XC_bottom_right_corner 14 11 | #define XC_bottom_side 16 12 | #define XC_bottom_tee 18 13 | #define XC_box_spiral 20 14 | #define XC_center_ptr 22 15 | #define XC_circle 24 16 | #define XC_clock 26 17 | #define XC_coffee_mug 28 18 | #define XC_cross 30 19 | #define XC_cross_reverse 32 20 | #define XC_crosshair 34 21 | #define XC_diamond_cross 36 22 | #define XC_dot 38 23 | #define XC_dotbox 40 24 | #define XC_double_arrow 42 25 | #define XC_draft_large 44 26 | #define XC_draft_small 46 27 | #define XC_draped_box 48 28 | #define XC_exchange 50 29 | #define XC_fleur 52 30 | #define XC_gobbler 54 31 | #define XC_gumby 56 32 | #define XC_hand1 58 33 | #define XC_hand2 60 34 | #define XC_heart 62 35 | #define XC_icon 64 36 | #define XC_iron_cross 66 37 | #define XC_left_ptr 68 38 | #define XC_left_side 70 39 | #define XC_left_tee 72 40 | #define XC_leftbutton 74 41 | #define XC_ll_angle 76 42 | #define XC_lr_angle 78 43 | #define XC_man 80 44 | #define XC_middlebutton 82 45 | #define XC_mouse 84 46 | #define XC_pencil 86 47 | #define XC_pirate 88 48 | #define XC_plus 90 49 | #define XC_question_arrow 92 50 | #define XC_right_ptr 94 51 | #define XC_right_side 96 52 | #define XC_right_tee 98 53 | #define XC_rightbutton 100 54 | #define XC_rtl_logo 102 55 | #define XC_sailboat 104 56 | #define XC_sb_down_arrow 106 57 | #define XC_sb_h_double_arrow 108 58 | #define XC_sb_left_arrow 110 59 | #define XC_sb_right_arrow 112 60 | #define XC_sb_up_arrow 114 61 | #define XC_sb_v_double_arrow 116 62 | #define XC_shuttle 118 63 | #define XC_sizing 120 64 | #define XC_spider 122 65 | #define XC_spraycan 124 66 | #define XC_star 126 67 | #define XC_target 128 68 | #define XC_tcross 130 69 | #define XC_top_left_arrow 132 70 | #define XC_top_left_corner 134 71 | #define XC_top_right_corner 136 72 | #define XC_top_side 138 73 | #define XC_top_tee 140 74 | #define XC_trek 142 75 | #define XC_ul_angle 144 76 | #define XC_umbrella 146 77 | #define XC_ur_angle 148 78 | #define XC_watch 150 79 | #define XC_xterm 152 80 | -------------------------------------------------------------------------------- /apps/clock/timer.tcl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # The next line is executed by /bin/sh, but not tcl \ 3 | exec wish $0 ${1+"$@"} 4 | 5 | # 6 | # TIMER 7 | # 8 | # A simple timer application. This was originally coded up quickly 9 | # for use at a Tcl conference to time talks. 10 | # 11 | # Copyright (c) 1998 Jeffrey hobbs 12 | # 13 | # RCS: @(#) $Id: timer.tcl,v 1.2 2006/05/30 14:08:49 mic42 Exp $ 14 | 15 | package require Tk 16 | 17 | wm title . "Timer 00:00" 18 | 19 | array set G { 20 | warnsecs 120 21 | continue 0 22 | final 0 23 | start 0 24 | longsecs 300 25 | talktime 10 26 | } 27 | 28 | proc start {} { 29 | global G 30 | set t $G(talktime) 31 | if {![regexp {^[0-9]+$} $t] || $t < 1 || $t >= 120} { 32 | error "Talk time must be number in minutes between 1 and 120" 33 | } 34 | .count config -fg black 35 | set G(continue) 1 36 | set G(start) [ctime] 37 | set G(final) [expr {$t*60 + $G(start)}] 38 | countdown 39 | } 40 | 41 | proc stop {} { 42 | global G 43 | set G(continue) 0 44 | wm title . "Timer" 45 | after cancel $G(after) 46 | } 47 | 48 | proc ctime {{delay 59000}} { 49 | global G 50 | set s [clock seconds] 51 | set G(time) [clock format $s -format %R] 52 | after $delay [info level 0] 53 | return $s 54 | } 55 | 56 | proc countdown {{delay 990}} { 57 | global G 58 | set rem [expr {$G(final)-[clock seconds]}] 59 | if {$rem <= 0} { 60 | set G(count) "OUT OF TIME" 61 | stop 62 | return 63 | } 64 | if {$rem < $G(warnsecs)} { 65 | .count config -fg red 66 | set G(count) [format %02d:%02d [expr {$rem/60}] [expr {$rem%60}]] 67 | } elseif {$rem < $G(longsecs)} { 68 | set G(count) [format %02d:%02d [expr {$rem/60}] [expr {$rem%60}]] 69 | } else { 70 | set G(count) [format "%02d min" [expr {$rem/60}]] 71 | } 72 | wm title . "$G(count)" 73 | if {$G(continue)} { set G(after) [after $delay [info level 0]] } 74 | } 75 | 76 | ctime 77 | 78 | option add *font {Courier 36 bold} 79 | label .count -textvariable G(count) -font {Courier 108 bold} -bg white 80 | label .ttime -text "Talk Time: " 81 | entry .tent -textvariable G(talktime) -width 4 82 | label .ctime -text "Current Time: " 83 | label .cent -textvariable G(time) 84 | frame .bs 85 | button .start -text "START" -command {start} 86 | button .stop -text "STOP" -command {stop} 87 | button .exit -text "EXIT" -command {exit} 88 | 89 | grid .count - - - -sticky news 90 | grid .ttime .tent .ctime .cent -sticky ew 91 | grid .bs - - - -sticky ew -padx 6 -pady 6 92 | grid .start .stop .exit -in .bs -sticky ew -padx 4 93 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-uniq/uniq.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Make CSV data of the specified column unique 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | 8 | namespace eval app-uniq {} 9 | 10 | # ------------------------------------------------------ 11 | # Acceptable syntax for cmdline functionality 12 | 13 | set ::app-uniq::help(cmdline) { 14 | [call [cmd {@appname@}] [method uniq] [opt "[option -sep] [arg sepChar]"] [opt [option -alternate]] [arg uniqcolumn] [arg file]...] 15 | 16 | Reads the specified [arg file]s, eliminates all records which have 17 | duplicate values in the column with index [arg uniqcolumn], except for the first record 18 | in each equivalence set, and writes the result to [const stdout], in 19 | regular csv syntax. 20 | 21 | [nl] 22 | 23 | Only the general options are available, they are described by the 24 | topic [term genopt]. 25 | } 26 | 27 | proc ::app-uniq::help {topic} { 28 | variable help 29 | if {[info exists help($topic)]} {return $help($topic)} 30 | return {} 31 | } 32 | 33 | # ------------------------------------------------------ 34 | # Implementation of cmdline functionality. 35 | 36 | proc ::app-uniq::run {argv} { 37 | set errstring "wrong#args: uniq ?-sep char? ?-alternate? uniqcol file" 38 | 39 | # ================================================== 40 | # Process arguments 41 | 42 | if {[llength $argv] < 2} {tools::usage $errstring} 43 | 44 | set sepChar , 45 | set alt 0 46 | while {[llength $argv]} { 47 | set err [cmdline::getopt argv {sep.arg alternate} opt arg] 48 | if {$err == 1} { 49 | switch -exact -- $opt { 50 | sep {set sepChar $arg} 51 | alternate {set alt 1} 52 | } 53 | } elseif {$err < 0} { 54 | tools::usage $errstring 55 | } else { 56 | # Non argument found, stop processing. 57 | break 58 | } 59 | } 60 | 61 | if {[llength $argv] < 2} {tools::usage $errstring} 62 | 63 | ::optcsv::colidx [set uniqcol [lindex $argv 0]] $errstring 64 | ::optcsv::files [set files [lrange $argv 1 end]] $errstring 65 | 66 | # ================================================== 67 | # Process csv input 68 | 69 | array set keys {} 70 | ::optcsv::foreach_record $sepChar $alt data $files { 71 | set key [lindex $data $uniqcol] 72 | if {[info exists keys($key)]} {continue} 73 | set keys($key) . 74 | 75 | puts stdout [::csv::join $data $sepChar] 76 | } 77 | return 78 | } 79 | 80 | # ------------------------------------------------------ 81 | package provide app-uniq 0.1 82 | -------------------------------------------------------------------------------- /apps/tkchat/deploy/install.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | 4 | ::configure and install app files 5 | set install_dir="%appdata%\TkChat" 6 | if not exist %install_dir% ( 7 | mkdir %install_dir% 8 | ) 9 | 10 | ::certutil -addstore -user -f "Root" "WordTech_CA.cer" 11 | ::if not %errorlevel% == 0 ( 12 | ::exit 13 | ::) 14 | 15 | tar -xvzf TkChat.zip TkChat 16 | xcopy TkChat %install_dir% /s /i /y 17 | copy /y link.vbs %temp% 18 | 19 | ::test for key, add to registry 20 | reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\TkChat.lnk" 21 | if errorlevel 0 ( 22 | reg delete "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\TkChat.lnk" /f 23 | ) 24 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\TkChat.lnk" /f 25 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\TkChat.lnk" /ve /d "%install_dir%\TkChat.lnk" /f 26 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TkChat" /f 27 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TkChat" /f /v "DisplayIcon" /t REG_SZ /d "%install_dir%\TkChat.ico" 28 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TkChat" /f /v "DisplayName" /t REG_SZ /d "TkChat" 29 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TkChat" /f /v "InstallLocation" /t REG_SZ /d "%install_dir%" 30 | 31 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TkChat" /f /v "Publisher" /t REG_SZ /d "WordTech Communications LLC" 32 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TkChat" /f /v "InstallDate" /t REG_SZ /d %DATE% 33 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TkChat" /f /v "Version" /t REG_SZ /d 1.5.2 34 | reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TkChat" /f /v "UninstallString" /t REG_SZ /d "cmd /c %install_dir%\uninstall.bat" 35 | 36 | 37 | ::add to start menu 38 | set startdir="%appdata%\Microsoft\Windows\Start Menu\TkChat\" 39 | 40 | if not exist %startdir% ( 41 | mkdir %startdir% 42 | ) 43 | 44 | call cscript %temp%\link.vbs 45 | 46 | copy /y TkChat.lnk %install_dir%\bin\TkChat.lnk 47 | copy /y TkChat.lnk %startdir%\TkChat.lnk 48 | 49 | where /q TkChat.lnk 50 | 51 | IF ERRORLEVEL 1 ( 52 | reg add "HKEY_CURRENT_USER\Environment" /f /v PATH /d "%PATH%;%appdata%\TkChat\bin\" 53 | ) 54 | 55 | echo MsgBox "Installation of TkChat complete.",vbOKOnly+vbInformation, "Installation Complete" > %temp%\done.vbs 56 | call %temp%\done.vbs 57 | del %temp%\done.vbs /f /q 58 | exit /b 59 | 60 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/tkchat_compat86.tcl: -------------------------------------------------------------------------------- 1 | if {[package vsatisfies [package provide Tcl] 8.7-]} return 2 | 3 | namespace eval compat86 { 4 | proc noop {args} {} 5 | } 6 | 7 | # provide fake [tk systray] and [tk sysnotify] 8 | namespace ensemble configure ::tk -map [dict merge \ 9 | [namespace ensemble configure ::tk -map] \ 10 | [dict create systray ::compat86::noop sysnotify ::compat86::noop]] 11 | 12 | # provide fake [wm iconbadge] 13 | rename ::wm ::compat86::wm 14 | proc ::wm {cmd args} { 15 | if {$cmd eq "iconbadge"} { 16 | return 17 | } 18 | tailcall ::compat86::wm $cmd {*}$args 19 | } 20 | 21 | # provide lpop; from the original ::tkchat::Pop, but the default index 22 | # is "end" instead of 0. 23 | # Pop the nth element off a list. Used in options processing. 24 | proc lpop {varname {nth end}} { 25 | upvar $varname args 26 | set r [lindex $args $nth] 27 | set args [lreplace $args $nth $nth] 28 | return $r 29 | } 30 | 31 | # provide a version of [dict getwithdefault] on 8.6 32 | proc ::tcl::dict::getwithdefault {dict args} { 33 | if {[llength $args] < 2} { 34 | return -code error "wrong # args:\ 35 | should be \"dict getwithdefault dictionary\ 36 | ?key ...? key default\"" 37 | } 38 | ::set default [lindex $args end] 39 | ::set keys [lrange $args 0 end-1] 40 | if {[exists $dict {*}$keys]} { 41 | return [get $dict {*}$keys] 42 | } else { 43 | return $default 44 | } 45 | } 46 | namespace ensemble configure ::dict -map [dict merge \ 47 | [namespace ensemble configure ::dict -map] \ 48 | [dict create getwithdefault ::tcl::dict::getwithdefault\ 49 | getdef ::tcl::dict::getwithdefault]] 50 | 51 | # HTTP Stuff 52 | namespace eval ::http {} 53 | proc ::http::responseInfo {tok} { 54 | # fake only the values we are using 55 | set charset [set [set tok](charset)] 56 | set url [set [set tok](url)] 57 | return [dict create charset $charset url $url] 58 | } 59 | 60 | # don't bother convincing 8.6 and tclxml to process emojis 61 | namespace eval ::sgml {} 62 | proc ::sgml::PCDATA {opts pcdata} { 63 | array set options $opts 64 | 65 | if {$options(-ignorewhitespace) && 66 | ![string length [string trim $pcdata]] 67 | } then { 68 | return {} 69 | } 70 | 71 | uplevel #0 [list {*}$options(-characterdatacommand) $pcdata] 72 | } 73 | 74 | # new roster stuff. 75 | # this should be conditional on Tk version, not Tcl's, but up to 76 | # 8.6 both versions match 77 | namespace eval ::newRoster { 78 | variable cl ::compat86::noop 79 | } 80 | proc ::newRoster::PutIntoPane {args} {} 81 | proc ::newRoster::updateOnlineNames {args} {} 82 | proc ::newRoster::SetUserTooltip {args} {} 83 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-subst/subst.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Template substitution (@...@ -> string) 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | 8 | namespace eval app-subst {} 9 | 10 | # ------------------------------------------------------ 11 | # Acceptable syntax for cmdline functionality 12 | 13 | set ::app-subst::help(cmdline) { 14 | [call [cmd {@appname@}] [method subst] [opt "[option -out] [arg outputfile]"] [arg inputfile] [arg key] [arg value]...] 15 | 16 | Reads the contents of the [arg inputfile] and replaces all occurences 17 | of [const @][arg key][const @] with the the associated [arg value], 18 | for all keys and values. The result of this substitution is written to 19 | [const stdout], or to the file specified with [option -out], if that 20 | option is present. The special value [const -] for [arg inputfile] 21 | instructs the application to read the data process from [const stdin]. 22 | 23 | [nl] 24 | 25 | The conversion can be influenced by the options listed below. 26 | 27 | [list_begin definitions] 28 | 29 | [lst_item "[option -out] [arg outputfile]"] 30 | 31 | If present the generated output is diverted into the specified file 32 | instead of written to [const stdout]. 33 | 34 | [list_end] 35 | } 36 | 37 | proc ::app-subst::help {topic} { 38 | variable help 39 | if {[info exists help($topic)]} {return $help($topic)} 40 | return {} 41 | } 42 | 43 | # ------------------------------------------------------ 44 | # Implementation of cmdline functionality. 45 | 46 | proc ::app-subst::run {argv} { 47 | set errstring "wrong#args: subst ?-out outputfile? inputfile key value..." 48 | 49 | set outfile "" 50 | while {[string match -* [lindex $argv 0]]} { 51 | if {[string equal [lindex $argv 0] -out]} { 52 | if {[llength $argv] < 3} {tools::usage $errstring} 53 | 54 | set outfile [lindex $argv 1] 55 | set argv [lrange $argv 2 end] 56 | continue 57 | } 58 | } 59 | 60 | if {[llength $argv] < 3} {tools::usage $errstring} 61 | if {[llength $argv] % 2 == 0} {tools::usage $errstring} 62 | 63 | set infile [lindex $argv 0] 64 | if {![string equal $infile -]} {optcheck::infile $infile "Input file"} 65 | 66 | if {$outfile != {}} { 67 | optcheck::outfile $outfile "Output file" 68 | } 69 | 70 | set map [list] 71 | foreach {in out} [lrange $argv 1 end] { 72 | lappend map @${in}@ $out 73 | } 74 | 75 | if {[string equal $infile -]} { 76 | set input [read stdin] 77 | } else { 78 | set input [tools::getfile $infile] 79 | } 80 | 81 | if {$outfile == {}} { 82 | set outfile stdout 83 | } else { 84 | set outfile [open $outfile w] 85 | } 86 | 87 | puts $outfile [string map $map $input] 88 | return 89 | } 90 | 91 | # ------------------------------------------------------ 92 | package provide app-subst 0.1 93 | -------------------------------------------------------------------------------- /apps/dtp/lib/tools/optcheck.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Checking various types of things, mainly paths. 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | 7 | namespace eval ::optcheck {} 8 | 9 | # ------------------------------------------------------ 10 | 11 | proc ::optcheck::outdir {path label} { 12 | if {[file exists $path]} { 13 | # The output directory already exists. Make sure that it is 14 | # truly a directory we can write to. 15 | 16 | if {![file isdirectory $path]} {tools::usage "$label \"$path\" is a file"} 17 | if {![file writable $path]} {tools::usage "$label \"$path\" is not writable"} 18 | return 19 | } 20 | 21 | # The path itself does not exist, so we look upward for the part 22 | # which does exist and make sure that this part is a writable 23 | # directory. 24 | 25 | set up [file dirname $path] 26 | while {![file exists $up]} { 27 | set last $up 28 | set up [file dirname $up] 29 | if {[string equal $last $up]} break 30 | } 31 | 32 | if {![file exists $up]} {tools::usage "$label \"$path\" is so bogus that checks are impossible"} 33 | if {![file isdirectory $up]} {tools::usage "Parent \"$up\" of \"$path\" is a file"} 34 | if {![file writable $up]} {tools::usage "Parent \"$up\" of \"$path\" is not writable"} 35 | return 36 | } 37 | 38 | 39 | proc ::optcheck::infile {path label} { 40 | if {[file exists $path]} { 41 | if {![file isfile $path]} {tools::usage "$label \"$path\" is not a file"} 42 | if {![file readable $path]} {tools::usage "$label \"$path\" is not readable"} 43 | return 44 | } 45 | 46 | tools::usage "$label \"$path\" does not exist" 47 | return 48 | } 49 | 50 | proc ::optcheck::outfile {path label} { 51 | if {[file exists $path]} { 52 | # The output file already exists. Make sure that it is truly a 53 | # file we can write to. 54 | 55 | if {![file isfile $path]} {tools::usage "$label \"$path\" is not a file"} 56 | if {![file writable $path]} {tools::usage "$label \"$path\" is not writable"} 57 | return 58 | } 59 | 60 | # The path itself does not exist, so we look upward for the part 61 | # which does exist and make sure that this part is a writable 62 | # directory. Yes, directory, the directory the new file will be 63 | # placed in. 64 | 65 | set up [file dirname $path] 66 | while {![file exists $up]} { 67 | set last $up 68 | set up [file dirname $up] 69 | if {[string equal $last $up]} break 70 | } 71 | 72 | if {![file exists $up]} {tools::usage "$label \"$path\" is so bogus that checks are impossible"} 73 | if {![file isdirectory $up]} {tools::usage "Parent \"$up\" of \"$path\" is a file"} 74 | if {![file writable $up]} {tools::usage "Parent \"$up\" of \"$path\" is not writable"} 75 | return 76 | } 77 | 78 | # ------------------------------------------------------ 79 | package provide optchecker 0.1 80 | -------------------------------------------------------------------------------- /apps/csvop/lib/tools/optcheck.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Checking various types of things, mainly paths. 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | 7 | namespace eval ::optcheck {} 8 | 9 | # ------------------------------------------------------ 10 | 11 | proc ::optcheck::outdir {path label} { 12 | if {[file exists $path]} { 13 | # The output directory already exists. Make sure that it is 14 | # truly a directory we can write to. 15 | 16 | if {![file isdirectory $path]} {tools::usage "$label \"$path\" is a file"} 17 | if {![file writable $path]} {tools::usage "$label \"$path\" is not writable"} 18 | return 19 | } 20 | 21 | # The path itself does not exist, so we look upward for the part 22 | # which does exist and make sure that this part is a writable 23 | # directory. 24 | 25 | set up [file dirname $path] 26 | while {![file exists $up]} { 27 | set last $up 28 | set up [file dirname $up] 29 | if {[string equal $last $up]} break 30 | } 31 | 32 | if {![file exists $up]} {tools::usage "$label \"$path\" is so bogus that checks are impossible"} 33 | if {![file isdirectory $up]} {tools::usage "Parent \"$up\" of \"$path\" is a file"} 34 | if {![file writable $up]} {tools::usage "Parent \"$up\" of \"$path\" is not writable"} 35 | return 36 | } 37 | 38 | 39 | proc ::optcheck::infile {path label} { 40 | if {[file exists $path]} { 41 | if {![file isfile $path]} {tools::usage "$label \"$path\" is not a file"} 42 | if {![file readable $path]} {tools::usage "$label \"$path\" is not readable"} 43 | return 44 | } 45 | 46 | tools::usage "$label \"$path\" does not exist" 47 | return 48 | } 49 | 50 | proc ::optcheck::outfile {path label} { 51 | if {[file exists $path]} { 52 | # The output file already exists. Make sure that it is truly a 53 | # file we can write to. 54 | 55 | if {![file isfile $path]} {tools::usage "$label \"$path\" is not a file"} 56 | if {![file writable $path]} {tools::usage "$label \"$path\" is not writable"} 57 | return 58 | } 59 | 60 | # The path itself does not exist, so we look upward for the part 61 | # which does exist and make sure that this part is a writable 62 | # directory. Yes, directory, the directory the new file will be 63 | # placed in. 64 | 65 | set up [file dirname $path] 66 | while {![file exists $up]} { 67 | set last $up 68 | set up [file dirname $up] 69 | if {[string equal $last $up]} break 70 | } 71 | 72 | if {![file exists $up]} {tools::usage "$label \"$path\" is so bogus that checks are impossible"} 73 | if {![file isdirectory $up]} {tools::usage "Parent \"$up\" of \"$path\" is a file"} 74 | if {![file writable $up]} {tools::usage "Parent \"$up\" of \"$path\" is not writable"} 75 | return 76 | } 77 | 78 | # ------------------------------------------------------ 79 | package provide optchecker 0.1 80 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/critcl/critcl_c/X11/Xatom.h: -------------------------------------------------------------------------------- 1 | #ifndef XATOM_H 2 | #define XATOM_H 1 3 | 4 | /* THIS IS A GENERATED FILE 5 | * 6 | * Do not change! Changing this file implies a protocol change! 7 | */ 8 | 9 | #define XA_PRIMARY ((Atom) 1) 10 | #define XA_SECONDARY ((Atom) 2) 11 | #define XA_ARC ((Atom) 3) 12 | #define XA_ATOM ((Atom) 4) 13 | #define XA_BITMAP ((Atom) 5) 14 | #define XA_CARDINAL ((Atom) 6) 15 | #define XA_COLORMAP ((Atom) 7) 16 | #define XA_CURSOR ((Atom) 8) 17 | #define XA_CUT_BUFFER0 ((Atom) 9) 18 | #define XA_CUT_BUFFER1 ((Atom) 10) 19 | #define XA_CUT_BUFFER2 ((Atom) 11) 20 | #define XA_CUT_BUFFER3 ((Atom) 12) 21 | #define XA_CUT_BUFFER4 ((Atom) 13) 22 | #define XA_CUT_BUFFER5 ((Atom) 14) 23 | #define XA_CUT_BUFFER6 ((Atom) 15) 24 | #define XA_CUT_BUFFER7 ((Atom) 16) 25 | #define XA_DRAWABLE ((Atom) 17) 26 | #define XA_FONT ((Atom) 18) 27 | #define XA_INTEGER ((Atom) 19) 28 | #define XA_PIXMAP ((Atom) 20) 29 | #define XA_POINT ((Atom) 21) 30 | #define XA_RECTANGLE ((Atom) 22) 31 | #define XA_RESOURCE_MANAGER ((Atom) 23) 32 | #define XA_RGB_COLOR_MAP ((Atom) 24) 33 | #define XA_RGB_BEST_MAP ((Atom) 25) 34 | #define XA_RGB_BLUE_MAP ((Atom) 26) 35 | #define XA_RGB_DEFAULT_MAP ((Atom) 27) 36 | #define XA_RGB_GRAY_MAP ((Atom) 28) 37 | #define XA_RGB_GREEN_MAP ((Atom) 29) 38 | #define XA_RGB_RED_MAP ((Atom) 30) 39 | #define XA_STRING ((Atom) 31) 40 | #define XA_VISUALID ((Atom) 32) 41 | #define XA_WINDOW ((Atom) 33) 42 | #define XA_WM_COMMAND ((Atom) 34) 43 | #define XA_WM_HINTS ((Atom) 35) 44 | #define XA_WM_CLIENT_MACHINE ((Atom) 36) 45 | #define XA_WM_ICON_NAME ((Atom) 37) 46 | #define XA_WM_ICON_SIZE ((Atom) 38) 47 | #define XA_WM_NAME ((Atom) 39) 48 | #define XA_WM_NORMAL_HINTS ((Atom) 40) 49 | #define XA_WM_SIZE_HINTS ((Atom) 41) 50 | #define XA_WM_ZOOM_HINTS ((Atom) 42) 51 | #define XA_MIN_SPACE ((Atom) 43) 52 | #define XA_NORM_SPACE ((Atom) 44) 53 | #define XA_MAX_SPACE ((Atom) 45) 54 | #define XA_END_SPACE ((Atom) 46) 55 | #define XA_SUPERSCRIPT_X ((Atom) 47) 56 | #define XA_SUPERSCRIPT_Y ((Atom) 48) 57 | #define XA_SUBSCRIPT_X ((Atom) 49) 58 | #define XA_SUBSCRIPT_Y ((Atom) 50) 59 | #define XA_UNDERLINE_POSITION ((Atom) 51) 60 | #define XA_UNDERLINE_THICKNESS ((Atom) 52) 61 | #define XA_STRIKEOUT_ASCENT ((Atom) 53) 62 | #define XA_STRIKEOUT_DESCENT ((Atom) 54) 63 | #define XA_ITALIC_ANGLE ((Atom) 55) 64 | #define XA_X_HEIGHT ((Atom) 56) 65 | #define XA_QUAD_WIDTH ((Atom) 57) 66 | #define XA_WEIGHT ((Atom) 58) 67 | #define XA_POINT_SIZE ((Atom) 59) 68 | #define XA_RESOLUTION ((Atom) 60) 69 | #define XA_COPYRIGHT ((Atom) 61) 70 | #define XA_NOTICE ((Atom) 62) 71 | #define XA_FONT_NAME ((Atom) 63) 72 | #define XA_FAMILY_NAME ((Atom) 64) 73 | #define XA_FULL_NAME ((Atom) 65) 74 | #define XA_CAP_HEIGHT ((Atom) 66) 75 | #define XA_WM_CLASS ((Atom) 67) 76 | #define XA_WM_TRANSIENT_FOR ((Atom) 68) 77 | 78 | #define XA_LAST_PREDEFINED ((Atom) 68) 79 | #endif /* XATOM_H */ 80 | -------------------------------------------------------------------------------- /apps/csvop/lib/tools/optcsv.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # CSV specific option processing. 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | 8 | namespace eval ::optcsv {} 9 | 10 | # ------------------------------------------------------ 11 | 12 | 13 | proc ::optcsv::files {files errstring} { 14 | if {[llength $files] == 0} {tools::usage $errstring} 15 | set stdin 1 16 | foreach f $files { 17 | if {[string equal $f -]} { 18 | if {!$stdin} { 19 | tool::usage "Cannot use - (stdin) more than once" 20 | } 21 | set stdin 0 22 | } else { 23 | optcheck::infile $f "CSV input file" 24 | } 25 | } 26 | return 27 | } 28 | 29 | 30 | proc ::optcsv::colspec {colspecvar errstring} { 31 | upvar $colspecvar colspec 32 | 33 | if {[llength $colspec] == 0} { 34 | tools::usage $errstring 35 | } 36 | set idx [list] 37 | foreach i $colspec { 38 | if {[regexp -- {[0-9]+-[0-9]+} $i]} { 39 | foreach {f t} [split $i -] break 40 | colidx $f $errstring 41 | colidx $t $errstring 42 | lappend idx [list $f $t] 43 | } elseif {[regexp -- {[0-9]+-} $i]} { 44 | foreach {f t} [split $i -] break 45 | colidx $f $errstring 46 | lappend idx [list $f end] 47 | } elseif {[regexp -- {-[0-9]+} $i]} { 48 | foreach {f t} [split $i -] break 49 | colidx $t $errstring 50 | lappend idx [list 0 $t] 51 | } elseif {[regexp -- {[0-9]+} $i]} { 52 | colidx $i $errstring 53 | lappend idx [list $i $i] 54 | } else { 55 | tools::usage $errstring 56 | } 57 | } 58 | set colspec $idx 59 | return 60 | } 61 | 62 | proc ::optcsv::colidx {col errstring} { 63 | if { 64 | ([string length $col] == 0) || 65 | ![string is integer $col] || 66 | $col < 0 67 | } { 68 | tools::usage $errstring 69 | } 70 | return 71 | } 72 | 73 | 74 | proc ::optcsv::foreach_record {sepChar alt recvar files script} { 75 | upvar $recvar data 76 | 77 | foreach f $files { 78 | if {[string equal $f -]} { 79 | set in stdin 80 | } else { 81 | set in [open $f r] 82 | } 83 | while {![eof $in]} { 84 | if {[gets $in line] < 0} {continue} 85 | if {[string length $line] == 0} {continue} 86 | if {$alt} { 87 | set data [::csv::split -alternate $line $sepChar] 88 | } else { 89 | set data [::csv::split $line $sepChar] 90 | } 91 | 92 | uplevel 1 $script 93 | } 94 | if {![string equal $f -]} { 95 | close $in 96 | } 97 | } 98 | return 99 | } 100 | 101 | proc ::optcsv::fill {maxlen ktable} { 102 | 103 | set nktable [list] 104 | foreach row $ktable { 105 | foreach {key row} $row break 106 | while {[llength $row] < $maxlen} {lappend row {}} 107 | lappend nktable [list $key $row] 108 | } 109 | return $nktable 110 | } 111 | 112 | # ------------------------------------------------------ 113 | package provide optcsv 0.1 114 | -------------------------------------------------------------------------------- /apps/ircbridge/cmdloop.tcl: -------------------------------------------------------------------------------- 1 | # cmdloop.tcl - Copyright (C) 2005 Pat Thoyts 2 | # 3 | # $Id: cmdloop.tcl,v 1.1 2005/04/25 20:29:37 patthoyts Exp $ 4 | 5 | namespace eval ::cmdloop { 6 | variable hosts_allow 7 | if {![info exists hosts_allow]} { 8 | set hosts_allow {127.0.0.1 ::1 82.33.96.128} 9 | } 10 | 11 | variable welcome 12 | if {![info exists welcome]} { 13 | set welcome "Hello %client %port" 14 | } 15 | 16 | variable cmds_deny 17 | if {![info exists cmds_deny]} { 18 | set cmds_deny {exit denied} 19 | } 20 | } 21 | 22 | # cmdloop::Read -- 23 | # 24 | # Reads commands from stdin and evaluates them. This permits 25 | # us to issue commands to the server while it is still 26 | # running. Suitable commands are ijbridge::presence and 27 | # ijbridge::say or ijbridge::xmit. 28 | # 29 | proc ::cmdloop::Read {chan ochan state} { 30 | variable cmds_deny 31 | upvar #0 $state input 32 | if {![info exists input]} {set input {}} 33 | if {[eof $chan]} { 34 | puts $ochan "!! EOF $chan" 35 | } 36 | if {[gets $chan line] != -1} { 37 | append input $line 38 | if {[string length $input] > 0 && [info complete $input]} { 39 | set cmd [lindex $input 0] 40 | if {[lsearch -exact $cmds_deny $cmd] != -1} { 41 | set res "$cmd command disabled" 42 | } elseif {$cmd eq "puts" && [string match "sock*" $chan] \ 43 | && [llength $input] == 2} { 44 | set res [lindex $input 1] 45 | } else { 46 | set code [catch {uplevel \#0 $input} res] 47 | } 48 | unset input 49 | puts $ochan $res 50 | } 51 | } 52 | } 53 | 54 | # cmdloop::Accept -- 55 | # 56 | # Setup the client channel for reading commands as we do 57 | # for stdin. Useful with tkcon's socket connection feature. 58 | # 59 | proc ::cmdloop::Accept {chan client port} { 60 | # we could validate the client here. 61 | if {[lsearch $::cmdloop::hosts_allow $client] == -1} { 62 | puts $chan "Access denied" 63 | close $chan 64 | return 65 | } 66 | fconfigure $chan -blocking 0 -buffering line 67 | puts $chan [welcome $client $port] 68 | fileevent $chan readable \ 69 | [list ::cmdloop::Read $chan $chan ::cmdloop::state_$chan] 70 | } 71 | 72 | proc ::cmdloop::welcome {{client {}} {port {}}} { 73 | variable welcome 74 | return [string map [list %client $client %port $port] $welcome] 75 | } 76 | 77 | proc ::cmdloop::cmdloop {} { 78 | variable welcome 79 | puts [welcome] 80 | puts -nonewline "> " 81 | fconfigure stdin -blocking 0 -buffering line 82 | fileevent stdin readable \ 83 | [list ::cmdloop::Read stdin stdout ::cmdloop::state_stdin] 84 | } 85 | 86 | proc ::cmdloop::listen {{myaddr 0.0.0.0} {port 5441}} { 87 | if {$port ne {}} { 88 | socket -server ::cmdloop::Accept -myaddr $myaddr $port 89 | } 90 | } 91 | 92 | # Local variables: 93 | # mode: tcl 94 | # End: 95 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-changelog/changelog.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Generation (Conversion subsystem) 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | package require doctools::changelog 8 | 9 | namespace eval app-changelog {} 10 | 11 | # ------------------------------------------------------ 12 | # Acceptable syntax for cmdline functionality 13 | 14 | set ::app-changelog::help(cmdline) { 15 | [call [cmd {@appname@}] [method changelog] [opt "[option -out] [arg outputfile]"] [arg label] [arg module] [arg logfile]...] 16 | 17 | This command takes a number of ChangeLog files as they are generated 18 | and handled by [syscmd emacs], parses them, and converts the result 19 | into a document in [term doctools] format. This document is written to 20 | [const stdout], or to the file specified with [option -out], if that 21 | option is present. 22 | 23 | [nl] 24 | 25 | The arguments [arg label] and [arg module] are specifying texts for 26 | use in the header of the created document which cannot be supplied by 27 | the changelogs themselves. 28 | 29 | [nl] 30 | 31 | The conversion can be influenced by the options listed below. 32 | 33 | [list_begin definitions] 34 | 35 | [lst_item "[option -out] [arg outputfile]"] 36 | 37 | If present the generated output is diverted into the specified file 38 | instead of written to [const stdout]. 39 | 40 | [list_end] 41 | 42 | } 43 | 44 | proc ::app-changelog::help {topic} { 45 | variable help 46 | if {[info exists help($topic)]} {return $help($topic)} 47 | return {} 48 | } 49 | 50 | # ------------------------------------------------------ 51 | # Implementation of cmdline functionality. 52 | 53 | proc ::app-changelog::run {argv} { 54 | set errstring "wrong#args: changelog ?-out outputfile? label module logfile..." 55 | 56 | if {[llength $argv] < 3} {tools::usage $errstring} 57 | 58 | set outfile "" 59 | while {[string match -* [lindex $argv 0]]} { 60 | if {[string equal [lindex $argv 0] -out]} { 61 | if {[llength $argv] < 5} {tools::usage $errstring} 62 | 63 | set outfile [lindex $argv 1] 64 | set argv [lrange $argv 2 end] 65 | continue 66 | } 67 | } 68 | 69 | set label [lindex $argv 0] 70 | set module [lindex $argv 1] 71 | set files [lrange $argv 2 end] 72 | 73 | if {$outfile != {}} { 74 | optcheck::outfile $outfile "Output file" 75 | } 76 | 77 | foreach f $files { 78 | optcheck::infile $f "ChangeLog file" 79 | } 80 | 81 | set data [list] 82 | foreach f $files { 83 | lappend data [doctools::changelog::scan [tools::getfile $f]] 84 | } 85 | 86 | set data [eval [linsert $data 0 doctools::changelog::merge]] 87 | 88 | if {$outfile == {}} { 89 | set outfile stdout 90 | } else { 91 | set outfile [open $outfile w] 92 | } 93 | 94 | puts $outfile [doctools::changelog::toDoctools $label $module "--" $data] 95 | return 96 | } 97 | 98 | # ------------------------------------------------------ 99 | package provide app-changelog 0.1 100 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-meta/meta.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Extract meta information out of doctools manpage files. 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | 8 | namespace eval app-meta {} 9 | 10 | # ------------------------------------------------------ 11 | # Acceptable syntax for cmdline functionality 12 | 13 | set ::app-meta::help(cmdline) { 14 | 15 | [call [cmd {@appname@}] [method meta] [opt "[option -out] [arg outputfile]"] [arg iomap]] 16 | 17 | Extracts the meta information from all input files provided through 18 | the mapping file [arg iomap] and returns it on [const stdout], or to 19 | the file specified with [option -out], if that option is present. The 20 | input files have to be in [syscmd doctools] format. 21 | 22 | [nl] 23 | 24 | The output is a tcl script containing a series of [cmd manpage] 25 | commands. The first and only argument will be a key/value-list 26 | acceptable to [cmd {array set}] containing information about the 27 | manpage, like name of the file, keywords, cross references, title, 28 | etc. 29 | 30 | [nl] 31 | 32 | The output of the subcommand [method meta] is an acceptable input for 33 | the option [option -meta] of the subcommands 34 | 35 | [method doc], [method idx], and [method toc], 36 | 37 | if stored in a file. 38 | 39 | [nl] 40 | 41 | The conversion can be influenced by the options listed below. 42 | 43 | [list_begin definitions] 44 | 45 | [lst_item "[option -out] [arg outputfile]"] 46 | 47 | If present the generated output is diverted into the specified file 48 | instead of written to [const stdout]. 49 | 50 | [list_end] 51 | 52 | 53 | } 54 | 55 | proc ::app-meta::help {topic} { 56 | variable help 57 | if {[info exists help($topic)]} {return $help($topic)} 58 | return {} 59 | } 60 | 61 | # ------------------------------------------------------ 62 | # Implementation of cmdline functionality. 63 | 64 | proc ::app-meta::run {argv} { 65 | set errstring "wrong#args: meta ?-out outputfile? iomap" 66 | 67 | set outfile "" 68 | while {[string match -* [lindex $argv 0]]} { 69 | if {[string equal [lindex $argv 0] -out]} { 70 | if {[llength $argv] < 3} {tools::usage $errstring} 71 | 72 | set outfile [lindex $argv 1] 73 | set argv [lrange $argv 2 end] 74 | continue 75 | } 76 | } 77 | 78 | if {[llength $argv] < 1} {tools::usage $errstring} 79 | 80 | set mapfile [lindex $argv 0] 81 | optcheck::infile $mapfile "Mapping file" 82 | 83 | if {$outfile != {}} { 84 | optcheck::outfile $outfile "Output file" 85 | } 86 | 87 | set files [list] 88 | foreach {in out} [tools::readmap $mapfile] {lappend files $in} 89 | 90 | package require dtglue 91 | package require meta 92 | 93 | if {$outfile == {}} { 94 | set outfile stdout 95 | } else { 96 | set outfile [open $outfile w] 97 | } 98 | 99 | puts $outfile [::meta::pretty [dtglue::getmeta $files]] 100 | return 101 | } 102 | 103 | # ------------------------------------------------------ 104 | package provide app-meta 0.1 105 | -------------------------------------------------------------------------------- /apps/taip/taip.tcl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # The next line is executed by /bin/sh, but not tcl \ 3 | exec wish "$0" ${1+"$@"} 4 | 5 | # -*- tcl -*- 6 | # 7 | # TCL - The Audience Is Programming 8 | # 9 | # Author: Karl Lehenbauer, ProcPlace.com 10 | # First presented at Tcl'2001 (San Diego, CA) 11 | # 12 | # Updates by Jeff Hobbs, ActiveState Corp. 13 | # 14 | 15 | package require Tk 8.2 16 | package require sound 2.0 ; # part of snack 17 | 18 | proc play_tcl {c} { 19 | $c create image $::DIM(tclX) $::DIM(tclY) -image tclPhoto -anchor c 20 | fade_up tclPhoto 0.2 21 | } 22 | 23 | proc play_taip {c} { 24 | $c create image $::DIM(taipX) $::DIM(taipY) -image taipPhoto -anchor n 25 | fade_up taipPhoto 0.2 26 | } 27 | 28 | proc sequencer {canv} { 29 | after 8000 [list play_tcl $canv] 30 | after 15000 [list play_taip $canv] 31 | } 32 | 33 | proc fade_up {photo gamma} { 34 | $photo configure -gamma $gamma 35 | update idletasks 36 | if {$gamma < 1.0} { 37 | after 30 [list fade_up $photo [expr {$gamma + 0.025}]] 38 | } 39 | } 40 | 41 | proc start_sound {} { 42 | sound::sound s -file $::DIR/taip.mp3 -debug 0 43 | s play -block 0 -command done 44 | } 45 | 46 | proc done {} { 47 | after 1000 exit 48 | } 49 | 50 | proc doit {{root .} {constrained 1}} { 51 | image create photo tclPhoto -file $::DIR/taip-tcl.gif 52 | set tclImageHeight [image height tclPhoto] 53 | set tclImageWidth [image width tclPhoto] 54 | 55 | image create photo taipPhoto -file $::DIR/taip-taip.gif 56 | set taipImageHeight [image height taipPhoto] 57 | 58 | # arbitrary vertical spacing between images 59 | set vSpace 20 60 | 61 | if {![winfo exists $root]} { 62 | toplevel $root 63 | } 64 | wm overrideredirect $root 1 65 | 66 | set swidth [winfo screenwidth $root] 67 | set sheight [winfo screenheight $root] 68 | if {$constrained} { 69 | set width [expr {$tclImageWidth + 160}] 70 | set height [expr {$tclImageHeight + $taipImageHeight + $vSpace + 60}] 71 | wm geometry $root ${width}x${height}+[expr \ 72 | {($swidth-$width)/2}]+[expr {($sheight-$height)/2}] 73 | } else { 74 | if {[string equal "windows" $::tcl_platform(platform)]} { 75 | wm state $root zoomed 76 | } else { 77 | wm geometry $root ${swidth}x${sheight}+0+0 78 | } 79 | } 80 | raise $root 81 | 82 | set c [canvas $root.c -background black] 83 | pack $c -fill both -expand 1 84 | update idletasks 85 | 86 | set width [winfo width $c] 87 | set height [winfo height $c] 88 | 89 | # Anchored at the center 90 | set ::DIM(tclX) [expr {$width / 2}] 91 | set ::DIM(tclY) [expr {($height / 2) - $vSpace}] 92 | 93 | # Anchored to the north 94 | set ::DIM(taipX) [expr {$width / 2}] 95 | set ::DIM(taipY) [expr {$::DIM(tclY) + $vSpace + ($tclImageHeight / 2)}] 96 | 97 | start_sound 98 | sequencer $c 99 | 100 | bind $root { exit } 101 | } 102 | 103 | set f [info script] 104 | while {[file type $f] eq "link"} { 105 | set f [file join [file dirname $f] [file readlink $f]] 106 | } 107 | set ::DIR [file dirname $f] 108 | unset f 109 | 110 | if {!$tcl_interactive} { 111 | doit . 112 | } 113 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/khim/ROOT.msg: -------------------------------------------------------------------------------- 1 | # ROOT.msg -- 2 | # 3 | # Default English-language messages for KHIM 4 | # 5 | # Copyright (c) 2006 by Kevin B. Kenny. All rights reserved. 6 | # 7 | # Refer to the file "license.terms" for the terms and conditions of 8 | # use and redistribution of this file, and a DISCLAIMER OF ALL WARRANTEES. 9 | # 10 | # $Id: ROOT.msg,v 1.2 2006/09/05 18:52:22 kennykb Exp $ 11 | # $Source: /cvsroot/tcllib/tklib/modules/khim/ROOT.msg,v $ 12 | # 13 | #---------------------------------------------------------------------- 14 | 15 | # Make sure that help text is available in the root locale. 16 | 17 | namespace eval ::khim { 18 | 19 | # If you edit this file, also edit the corresponding text in en.msg, 20 | # which is provided for 8.4 compatibility. 21 | 22 | ::msgcat::mcset {} HELPTEXT { 23 | 24 | Kevin's Hacky Input Method (KHIM) 25 | 26 | KHIM allows you to input international characters from a 27 | keyboard that doesn't support them. It works independently of 28 | any input method that the operating system may supply; it is 29 | intended for when you don't have control over your keyboard 30 | mapping and still need to input text in other languages. 31 | 32 | To use KHIM, bring up the KHIM Controls (the way this is done 33 | depends on your application) and enable KHIM by checking "Use 34 | KHIM". You also need to choose a key on your keyboard that is 35 | seldom used, and designate it as the "Compose" key by pressing 36 | the button labelled, "Compose key:" then striking the key you 37 | wish to designate. Generally speaking, this key should not be 38 | the key designated as "Compose" on the keyboard; that key will 39 | continue to invoke whatever input method the local operating 40 | system supplies. 41 | 42 | Once KHIM is enabled, you can enter international characters 43 | in any widget that is configured to use KHIM by pressing the 44 | Compose key followed by a two-character sequence. The listbox 45 | in the KHIM controls shows the available sequences. In 46 | addition, if you strike the Compose key twice, you get a 47 | dialog that allows you to input arbitrary symbols from a 48 | Unicode character map. In the map, you can navigate among the 49 | characters using either the cursor keys or the mouse, and you 50 | can select the current character for insertion by 51 | double-clicking it, pressing the space bar, or pressing the 52 | Enter (or Return) key. 53 | 54 | To define a new sequence for use with the Compose key, bring 55 | up the KHIM controls, enter the two characters in the 56 | "Input key sequence" entry and the desired character to insert 57 | into the "Character" entry, and press "Change". (You may copy 58 | and paste the character from another application, or use the 59 | "Unicode..." button (or press the Compose key twice) to select 60 | the character from a map of all available Unicode code 61 | points.) To remove a sequence, select it in the listbox and 62 | press "Delete". 63 | 64 | } 65 | 66 | ::msgcat::mcset {} {SELECT COMPOSE KEY} [string map [list \n\t \n] { 67 | Please press the 68 | key that you want 69 | to use as the 70 | "Compose" key. 71 | }] 72 | 73 | } 74 | 75 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/critcl/critcl_c/preload.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pre-load a shared library 3 | * - for situations where a Tcl package depends on another library 4 | * - will be superceded when by the functionality in TIP #239 5 | * - based on tclLoad.c from Tcl 8.4.13 and MyInitTclStubs from Critcl 6 | */ 7 | 8 | #include "tcl.h" 9 | 10 | TclStubs *tclStubsPtr; 11 | TclPlatStubs *tclPlatStubsPtr; 12 | struct TclIntStubs *tclIntStubsPtr; 13 | struct TclIntPlatStubs *tclIntPlatStubsPtr; 14 | 15 | static int 16 | MyInitTclStubs (Tcl_Interp *ip) 17 | { 18 | typedef struct { 19 | char *result; 20 | Tcl_FreeProc *freeProc; 21 | int errorLine; 22 | TclStubs *stubTable; 23 | } HeadOfInterp; 24 | 25 | HeadOfInterp *hoi = (HeadOfInterp*) ip; 26 | 27 | if (hoi->stubTable == NULL || hoi->stubTable->magic != TCL_STUB_MAGIC) { 28 | ip->result = "This extension requires stubs-support."; 29 | ip->freeProc = TCL_STATIC; 30 | return 0; 31 | } 32 | 33 | tclStubsPtr = hoi->stubTable; 34 | 35 | if (Tcl_PkgRequire(ip, "Tcl", "8.1", 0) == NULL) { 36 | tclStubsPtr = NULL; 37 | return 0; 38 | } 39 | 40 | if (tclStubsPtr->hooks != NULL) { 41 | tclPlatStubsPtr = tclStubsPtr->hooks->tclPlatStubs; 42 | tclIntStubsPtr = tclStubsPtr->hooks->tclIntStubs; 43 | tclIntPlatStubsPtr = tclStubsPtr->hooks->tclIntPlatStubs; 44 | } 45 | 46 | return 1; 47 | } 48 | 49 | TCL_DECLARE_MUTEX(packageMutex) 50 | 51 | static int 52 | Critcl_Preload( 53 | ClientData dummy, 54 | Tcl_Interp *interp, 55 | int objc, 56 | Tcl_Obj *CONST objv[]) 57 | { 58 | int code; 59 | Tcl_PackageInitProc **proc1, **proc2; 60 | Tcl_LoadHandle loadHandle; 61 | Tcl_FSUnloadFileProc *unLoadProcPtr = NULL; 62 | 63 | if (objc != 2) { 64 | Tcl_WrongNumArgs(interp, 1, objv, "fileName"); 65 | return TCL_ERROR; 66 | } 67 | if (Tcl_FSConvertToPathType(interp, objv[1]) != TCL_OK) { 68 | return TCL_ERROR; 69 | } 70 | Tcl_MutexLock(&packageMutex); 71 | code = Tcl_FSLoadFile(interp, objv[1], NULL, NULL, proc1, proc2, 72 | &loadHandle, &unLoadProcPtr); 73 | Tcl_MutexUnlock(&packageMutex); 74 | return code; 75 | } 76 | 77 | DLLEXPORT int 78 | Preload_Init(Tcl_Interp *interp) 79 | { 80 | if (!MyInitTclStubs(interp)) 81 | return TCL_ERROR; 82 | // the Tcl command can't be "preload" because the Tcl source 83 | // might be copied into the target package (so Tcl procs are 84 | // available) and we want critcl::preload to then be a no-op 85 | // because the preloading is done from the loadlib command when 86 | // the target package is loaded 87 | Tcl_CreateObjCommand(interp, "@preload", Critcl_Preload, NULL, 0); 88 | return 0; 89 | } 90 | 91 | DLLEXPORT int 92 | Preload_SafeInit(Tcl_Interp *interp) 93 | { 94 | if (!MyInitTclStubs(interp)) 95 | return TCL_ERROR; 96 | Tcl_CreateObjCommand(interp, "@preload", Critcl_Preload, NULL, 0); 97 | return 0; 98 | } 99 | 100 | DLLEXPORT int 101 | Preload_Unload(Tcl_Interp *interp) {} 102 | 103 | DLLEXPORT int 104 | Preload_SafeUnload(Tcl_Interp *interp) {} 105 | -------------------------------------------------------------------------------- /apps/csvop/data/help/joins.man: -------------------------------------------------------------------------------- 1 | [comment {-*- tcl -*- doctools manpage}] 2 | [manpage_begin joining n 1.0] 3 | [copyright {2003 Andreas Kupries }] 4 | [moddesc {Joining tables}] 5 | [titledesc {Joining tables}] 6 | [description] 7 | 8 | Joining is an operation from relational algebra for relational databases. 9 | 10 | [para] 11 | 12 | The easiest way to understand the regular inner join is that it 13 | creates the cartesian product of all the tables involved first and 14 | then keeps only all those rows in the resulting table for which the 15 | values in the specified key columns are equal to each other. 16 | 17 | [para] 18 | 19 | Implementing this description naively, i.e. as described above will 20 | generate a [emph huge] intermediate result. To avoid this the 21 | cartesian product and the filtering of row are done at the same 22 | time. What is required is a fast way to determine if a key is present 23 | in a table. In a true database this is done through indices. Here we 24 | use arrays internally. 25 | 26 | [para] 27 | 28 | An [term outer] join is an extension of the inner join for two 29 | tables. There are three variants of outerjoins, called [term left], 30 | [term right], and [term full] outer joins. Their result always 31 | contains all rows from an inner join and then some additional rows. 32 | 33 | [list_begin enum] 34 | [enum] 35 | 36 | For the left outer join the additional rows are all rows from the left 37 | table for which there is no key in the right table. They are joined to 38 | an empty row of the right table to fit them into the result. 39 | 40 | [enum] 41 | 42 | For the right outer join the additional rows are all rows from the right 43 | table for which there is no key in the left table. They are joined to 44 | an empty row of the left table to fit them into the result. 45 | 46 | 47 | [enum] 48 | 49 | The full outer join combines both left and right outer join. In other 50 | words, the additional rows are as defined for left outer join, and 51 | right outer join, combined. 52 | 53 | [list_end] 54 | 55 | [para] 56 | 57 | We extend all the joins from two to [var n] tables ([var n] > 2) by 58 | executing 59 | 60 | [example { 61 | (...((table1 join table2) join table3) ...) join tableN 62 | }] 63 | 64 | [para] 65 | 66 | Examples for all the joins: 67 | 68 | [example { 69 | Inner Join 70 | 71 | {0 foo} {0 bagel} {0 foo 0 bagel} 72 | {1 snarf} inner join {1 snatz} = {1 snarf 1 snatz} 73 | {2 blue} {3 driver} 74 | 75 | Left Outer Join 76 | 77 | {0 foo} {0 bagel} {0 foo 0 bagel} 78 | {1 snarf} left outer join {1 snatz} = {1 snarf 1 snatz} 79 | {2 blue} {3 driver} {2 blue {} {}} 80 | 81 | Right Outer Join 82 | 83 | {0 foo} {0 bagel} {0 foo 0 bagel} 84 | {1 snarf} right outer join {1 snatz} = {1 snarf 1 snatz} 85 | {2 blue} {3 driver} {{} {} 3 driver} 86 | 87 | Full Outer Join 88 | 89 | {0 foo} {0 bagel} {0 foo 0 bagel} 90 | {1 snarf} full outer join {1 snatz} = {1 snarf 1 snatz} 91 | {2 blue} {3 driver} {2 blue {} {}} 92 | {{} {} 3 driver} 93 | }] 94 | 95 | 96 | [keywords {inner join} {left outer join} {right outer join} {full outer join} {outer join} join] 97 | [manpage_end] 98 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-idx/idx.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Generation - Indices 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | package require meta 8 | 9 | namespace eval ::app-idx {} 10 | 11 | # ------------------------------------------------------ 12 | # Acceptable syntax for cmdline functionality 13 | 14 | set ::app-idx::help(cmdline) { 15 | 16 | [call [cmd {@appname@}] [method idx] [opt [arg options...]] [arg meta]] 17 | 18 | This method converts the information given to us via file [arg meta] 19 | into an index. The output of this subcommand is written to 20 | 21 | [const stdout], or to the file specified with [option -out], if that 22 | option is present, and will be in the [syscmd docidx] format. 23 | 24 | [nl] 25 | 26 | It is expected that the contents of [arg meta] are in the format 27 | returned by the subcommand [method meta], modulo formatting which does 28 | not change the semantics of the output. 29 | 30 | [nl] 31 | 32 | The generation of the index can be influenced by the options listed 33 | below. 34 | 35 | [list_begin definitions] 36 | 37 | [lst_item "[option -out] [arg outputfile]"] 38 | 39 | If present the generated output is diverted into the specified file 40 | instead of written to [const stdout]. 41 | 42 | [lst_item "[option -title] [arg text]"] 43 | 44 | Provides the [arg text] used as the label of [cmd index_begin]. 45 | Defaults to the empty string. 46 | 47 | [lst_item "[option -desc] [arg text]"] 48 | 49 | Provides the [arg text] used as the descriptive title of the index in 50 | [cmd index_begin]. Defaults to [const "Keyword index"]. 51 | 52 | [list_end] 53 | } 54 | 55 | proc ::app-idx::help {topic} { 56 | variable help 57 | if {[info exists help($topic)]} {return $help($topic)} 58 | return {} 59 | } 60 | 61 | 62 | # ------------------------------------------------------ 63 | # Implementation of cmdline functionality. 64 | 65 | proc ::app-idx::run {argv} { 66 | set errstring "wrong#args: idx ?-out outputfile? ?-title text? ?-desc text? metafile" 67 | 68 | if {[llength $argv] < 1} {tools::usage $errstring} 69 | 70 | set outfile "" 71 | set title "" 72 | set desc "Keyword index" 73 | set outfile "" 74 | 75 | while {[string match -* [lindex $argv 0]]} { 76 | if {[string equal [lindex $argv 0] -out]} { 77 | if {[llength $argv] < 3} {tools::usage $errstring} 78 | set outfile [lindex $argv 1] 79 | set argv [lrange $argv 2 end] 80 | continue 81 | } 82 | if {[string equal [lindex $argv 0] -title]} { 83 | if {[llength $argv] < 3} {tools::usage $errstring} 84 | set title [lindex $argv 1] 85 | set argv [lrange $argv 2 end] 86 | continue 87 | } 88 | if {[string equal [lindex $argv 0] -desc]} { 89 | if {[llength $argv] < 3} {tools::usage $errstring} 90 | set desc [lindex $argv 1] 91 | set argv [lrange $argv 2 end] 92 | continue 93 | } 94 | tools::usage $errstring 95 | } 96 | 97 | if {[llength $argv] < 1} {tools::usage $errstring} 98 | 99 | optcheck::infile [set metafile [lindex $argv 0]] "Meta information file" 100 | 101 | if {$outfile != {}} { 102 | optcheck::outfile $outfile "Output file" 103 | set outfile [open $outfile w] 104 | } else { 105 | set outfile stdout 106 | } 107 | 108 | puts $outfile [::meta::2docidx [::meta::read $metafile] $title $desc] 109 | return 110 | } 111 | 112 | # ------------------------------------------------------ 113 | package provide app-idx 0.1 114 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-toc/toc.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Generation - Table Of Contents 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | package require meta 8 | 9 | namespace eval ::app-toc {} 10 | 11 | # ------------------------------------------------------ 12 | # Acceptable syntax for cmdline functionality 13 | 14 | set ::app-toc::help(cmdline) { 15 | 16 | [call [cmd {@appname@}] [method toc] [opt [arg options...]] [arg meta]] 17 | 18 | This method converts the information given to us via file [arg meta] 19 | into a table of contents. The output of this subcommand is written to 20 | [const stdout],, or to the file specified with [option -out], if that 21 | option is present, and will be in the [syscmd doctoc] format. 22 | 23 | [nl] 24 | 25 | It is expected that the contents of [arg meta] are in the format 26 | returned by the subcommand [method meta], modulo formatting which does 27 | not change the semantics of the output. 28 | 29 | [nl] 30 | 31 | The generation of the toc can be influenced by the options listed 32 | below. 33 | 34 | [list_begin definitions] 35 | 36 | [lst_item "[option -out] [arg outputfile]"] 37 | 38 | If present the generated output is diverted into the specified file 39 | instead of written to [const stdout]. 40 | 41 | [lst_item "[option -title] [arg text]"] 42 | 43 | Provides the [arg text] used as the label of [cmd toc_begin]. 44 | Defaults to [const "Table Of Contents"]. 45 | 46 | [lst_item "[option -desc] [arg text]"] 47 | 48 | Provides the [arg text] used as the descriptive title of the toc in 49 | [cmd toc_begin]. Defaults to [const "Manual"]. 50 | 51 | [list_end] 52 | [nl] 53 | } 54 | 55 | proc ::app-toc::help {topic} { 56 | variable help 57 | if {[info exists help($topic)]} {return $help($topic)} 58 | return {} 59 | } 60 | 61 | # ------------------------------------------------------ 62 | # Implementation of cmdline functionality. 63 | 64 | proc ::app-toc::run {argv} { 65 | set errstring "wrong#args: toc ?-out outputfile? ?-title text? ?-desc text? metafile" 66 | 67 | if {[llength $argv] < 1} {tools::usage $errstring} 68 | 69 | set outfile "" 70 | set title "Table Of Contents" 71 | set desc "Manual" 72 | 73 | while {[string match -* [lindex $argv 0]]} { 74 | if {[string equal [lindex $argv 0] -out]} { 75 | if {[llength $argv] < 3} {tools::usage $errstring} 76 | 77 | set outfile [lindex $argv 1] 78 | set argv [lrange $argv 2 end] 79 | continue 80 | } 81 | if {[string equal [lindex $argv 0] -title]} { 82 | if {[llength $argv] < 3} {tools::usage $errstring} 83 | set title [lindex $argv 1] 84 | set argv [lrange $argv 2 end] 85 | continue 86 | } 87 | if {[string equal [lindex $argv 0] -desc]} { 88 | if {[llength $argv] < 3} {tools::usage $errstring} 89 | set desc [lindex $argv 1] 90 | set argv [lrange $argv 2 end] 91 | continue 92 | } 93 | tools::usage $errstring 94 | } 95 | 96 | if {[llength $argv] != 1} {tools::usage $errstring} 97 | 98 | optcheck::infile [set metafile [lindex $argv 0]] "Meta information file" 99 | 100 | if {$outfile != {}} { 101 | optcheck::outfile $outfile "Output file" 102 | set outfile [open $outfile w] 103 | } else { 104 | set outfile stdout 105 | } 106 | 107 | 108 | puts $outfile [::meta::2doctoc [::meta::read $metafile] $title $desc] 109 | return 110 | } 111 | 112 | # ------------------------------------------------------ 113 | package provide app-toc 0.1 114 | -------------------------------------------------------------------------------- /apps/csvop/lib/tools/tools.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Misc. tools used throughout the code. 3 | # ------------------------------------------------------ 4 | 5 | namespace eval ::tools { 6 | variable appname "" 7 | variable topdir "" 8 | } 9 | 10 | # ------------------------------------------------------ 11 | 12 | proc ::tools::topdir= {path} { 13 | variable topdir 14 | set topdir $path 15 | appname= [file tail $path] 16 | return 17 | } 18 | 19 | proc ::tools::appname= {name} { 20 | variable appname 21 | set appname $name 22 | return 23 | } 24 | 25 | proc ::tools::appname {} { 26 | variable appname 27 | return $appname 28 | } 29 | 30 | proc ::tools::topdir {} { 31 | variable topdir 32 | return $topdir 33 | } 34 | 35 | # ------------------------------------------------------ 36 | 37 | proc ::tools::usage {text} { 38 | global argv0 39 | puts stderr "[appname]: $text" 40 | exit 1 41 | } 42 | 43 | proc ::tools::internalerror {} { 44 | global errorInfo 45 | puts stderr "[appname] internal error" 46 | puts stderr $errorInfo 47 | exit 1 48 | } 49 | 50 | # ------------------------------------------------------ 51 | 52 | proc ::tools::getfile {path} { 53 | set fh [open $path r] 54 | set data [read $fh] 55 | close $fh 56 | return $data 57 | } 58 | 59 | proc ::tools::putfile {path data} { 60 | set fh [open $path w] 61 | puts -nonewline $fh $data 62 | close $fh 63 | return 64 | } 65 | 66 | proc ::tools::copyout {path} { 67 | set fh [open $path r] 68 | fcopy $fh stdout 69 | close $fh 70 | return 71 | } 72 | 73 | # ------------------------------------------------------ 74 | 75 | proc ::tools::outputfile {outdir format file} { 76 | if {$outdir == {}} { 77 | set outfile [file rootname $file].$format 78 | } else { 79 | set outfile [file join $outdir [file rootname $file].$format] 80 | } 81 | if {[string equal $outfile $file]} { 82 | if {$outdir == {}} { 83 | set outfile $file.$format 84 | } else { 85 | set outfile [file join $outdir $file.$format] 86 | } 87 | } 88 | return $outfile 89 | } 90 | 91 | proc ::tools::outputmap {outdir format files} { 92 | set iomap [list] 93 | foreach file $files { 94 | lappend iomap $file [outputfile $outdir $format $file] 95 | } 96 | return $iomap 97 | } 98 | 99 | 100 | proc ::tools::readmap {mapfile} { 101 | set result [list] 102 | foreach line [split [tools::getfile $mapfile] \n] { 103 | set line [string trim $line] 104 | if {$line == {}} continue 105 | if {[catch {foreach {in out} $line break}]} continue 106 | lappend result $in $out 107 | } 108 | return $result 109 | } 110 | 111 | proc ::tools::link {here dest} { 112 | # Ensure that the link is properly done relative to this file! 113 | 114 | set save $dest 115 | 116 | set here [file split $here] 117 | set dest [file split $dest] 118 | while {[string equal [lindex $dest 0] [lindex $here 0]]} { 119 | set dest [lrange $dest 1 end] 120 | set here [lrange $here 1 end] 121 | if {[llength $dest] == 0} {break} 122 | } 123 | set ul [llength $dest] 124 | set hl [llength $here] 125 | 126 | if {$ul == 0} { 127 | set dest [lindex [file split $save] end] 128 | } else { 129 | while {$hl > 1} { 130 | set dest [linsert $dest 0 ..] 131 | incr hl -1 132 | } 133 | set dest [eval file join $dest] 134 | } 135 | 136 | return $dest 137 | } 138 | 139 | # ------------------------------------------------------ 140 | package provide tools 0.1 141 | -------------------------------------------------------------------------------- /apps/dtp/lib/tools/tools.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Misc. tools used throughout the code. 3 | # ------------------------------------------------------ 4 | 5 | namespace eval ::tools { 6 | variable appname "" 7 | variable topdir "" 8 | } 9 | 10 | # ------------------------------------------------------ 11 | 12 | proc ::tools::topdir= {path} { 13 | variable topdir 14 | set topdir $path 15 | appname= [file tail $path] 16 | return 17 | } 18 | 19 | proc ::tools::appname= {name} { 20 | variable appname 21 | set appname $name 22 | return 23 | } 24 | 25 | proc ::tools::appname {} { 26 | variable appname 27 | return $appname 28 | } 29 | 30 | proc ::tools::topdir {} { 31 | variable topdir 32 | return $topdir 33 | } 34 | 35 | # ------------------------------------------------------ 36 | 37 | proc ::tools::usage {text} { 38 | global argv0 39 | puts stderr "[appname]: $text" 40 | exit 1 41 | } 42 | 43 | proc ::tools::internalerror {} { 44 | global errorInfo 45 | puts stderr "[appname] internal error" 46 | puts stderr $errorInfo 47 | exit 1 48 | } 49 | 50 | # ------------------------------------------------------ 51 | 52 | proc ::tools::getfile {path} { 53 | set fh [open $path r] 54 | set data [read $fh] 55 | close $fh 56 | return $data 57 | } 58 | 59 | proc ::tools::putfile {path data} { 60 | set fh [open $path w] 61 | puts -nonewline $fh $data 62 | close $fh 63 | return 64 | } 65 | 66 | proc ::tools::copyout {path {chan stdout}} { 67 | set fh [open $path r] 68 | fcopy $fh $chan 69 | close $fh 70 | return 71 | } 72 | 73 | # ------------------------------------------------------ 74 | 75 | proc ::tools::outputfile {outdir format file} { 76 | if {$outdir == {}} { 77 | set outfile [file rootname $file].$format 78 | } else { 79 | set outfile [file join $outdir [file rootname $file].$format] 80 | } 81 | if {[string equal $outfile $file]} { 82 | if {$outdir == {}} { 83 | set outfile $file.$format 84 | } else { 85 | set outfile [file join $outdir $file.$format] 86 | } 87 | } 88 | return $outfile 89 | } 90 | 91 | proc ::tools::outputmap {outdir format files} { 92 | set iomap [list] 93 | foreach file $files { 94 | lappend iomap $file [outputfile $outdir $format $file] 95 | } 96 | return $iomap 97 | } 98 | 99 | 100 | proc ::tools::readmap {mapfile} { 101 | set result [list] 102 | foreach line [split [tools::getfile $mapfile] \n] { 103 | set line [string trim $line] 104 | if {$line == {}} continue 105 | if {[catch {foreach {in out} $line break}]} continue 106 | lappend result $in $out 107 | } 108 | return $result 109 | } 110 | 111 | proc ::tools::link {here dest} { 112 | # Ensure that the link is properly done relative to this file! 113 | 114 | set save $dest 115 | 116 | set here [file split $here] 117 | set dest [file split $dest] 118 | while {[string equal [lindex $dest 0] [lindex $here 0]]} { 119 | set dest [lrange $dest 1 end] 120 | set here [lrange $here 1 end] 121 | if {[llength $dest] == 0} {break} 122 | } 123 | set ul [llength $dest] 124 | set hl [llength $here] 125 | 126 | if {$ul == 0} { 127 | set dest [lindex [file split $save] end] 128 | } else { 129 | while {$hl > 1} { 130 | set dest [linsert $dest 0 ..] 131 | incr hl -1 132 | } 133 | set dest [eval file join $dest] 134 | } 135 | 136 | return $dest 137 | } 138 | 139 | # ------------------------------------------------------ 140 | package provide tools 0.1 141 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/jabberlib/tinydom.tcl: -------------------------------------------------------------------------------- 1 | # tinydom.tcl --- 2 | # 3 | # This file is part of The Coccinella application. It implements 4 | # a tiny DOM model which wraps xml int tcl lists. 5 | # 6 | # Copyright (c) 2003 Mats Bengtsson 7 | # 8 | # See the README file for license, bugs etc. 9 | # 10 | # $Id: tinydom.tcl,v 1.7 2005/02/18 08:32:44 matben Exp $ 11 | 12 | package require xml 13 | 14 | package provide tinydom 0.1 15 | 16 | # This is an attempt to make a minimal DOM thing to store xml data as 17 | # an hierarchical list which is better suited to Tcl. 18 | 19 | namespace eval tinydom { 20 | 21 | variable xmlobj 22 | variable level 0 23 | variable uid 0 24 | variable cache 25 | } 26 | 27 | proc tinydom::parse {xml} { 28 | variable xmlobj 29 | variable uid 30 | variable cache 31 | 32 | set xmlparser [xml::parser] 33 | $xmlparser configure -reportempty 1 \ 34 | -elementstartcommand [namespace current]::XmlElementStart \ 35 | -elementendcommand [namespace current]::XmlElementEnd \ 36 | -characterdatacommand [namespace current]::XmlCHdata \ 37 | -ignorewhitespace 1 38 | $xmlparser parse $xml 39 | 40 | # Store in internal array and return token which is the array index. 41 | set token tinydom[incr uid] 42 | set cache($token) $xmlobj(1) 43 | unset xmlobj 44 | return $token 45 | } 46 | 47 | proc tinydom::XmlElementStart {tagname attrlist args} { 48 | variable xmlobj 49 | variable level 50 | 51 | array set argsarr $args 52 | if {[info exists argsarr(-namespacedecls)]} { 53 | lappend attrlist xmlns [lindex $argsarr(-namespacedecls) 0] 54 | } 55 | set xmlobj([incr level]) [list $tagname $attrlist 0 {} {}] 56 | } 57 | 58 | proc tinydom::XmlElementEnd {tagname args} { 59 | variable xmlobj 60 | variable level 61 | 62 | if {$level > 1} { 63 | 64 | # Insert the child tree in the parent tree. 65 | XmlAppend [expr $level-1] $xmlobj($level) 66 | } 67 | incr level -1 68 | } 69 | 70 | proc tinydom::XmlCHdata {chdata} { 71 | variable xmlobj 72 | variable level 73 | 74 | set cdata [lindex $xmlobj($level) 3] 75 | append cdata [xmldecrypt $chdata] 76 | lset xmlobj($level) 3 $cdata 77 | } 78 | 79 | proc tinydom::XmlAppend {plevel childtree} { 80 | variable xmlobj 81 | 82 | # Get child list at parent level (level). 83 | set childlist [lindex $xmlobj($plevel) 4] 84 | lappend childlist $childtree 85 | 86 | # Build the new parent tree. 87 | lset xmlobj($plevel) 4 $childlist 88 | } 89 | 90 | proc tinydom::xmldecrypt {chdata} { 91 | 92 | foreach from {{\&} {\<} {\>} {\"} {\'}} \ 93 | to {{\&} < > {"} {'}} { 94 | regsub -all $from $chdata $to chdata 95 | } 96 | return $chdata 97 | } 98 | 99 | proc tinydom::documentElement {token} { 100 | variable cache 101 | 102 | return $cache($token) 103 | } 104 | 105 | proc tinydom::tagname {xmllist} { 106 | 107 | return [lindex $xmllist 0] 108 | } 109 | 110 | proc tinydom::attrlist {xmllist} { 111 | 112 | return [lindex $xmllist 1] 113 | } 114 | 115 | proc tinydom::chdata {xmllist} { 116 | 117 | return [lindex $xmllist 3] 118 | } 119 | 120 | proc tinydom::children {xmllist} { 121 | 122 | return [lindex $xmllist 4] 123 | } 124 | 125 | proc tinydom::cleanup {token} { 126 | variable cache 127 | 128 | unset -nocomplain cache($token) 129 | } 130 | 131 | #------------------------------------------------------------------------------- 132 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-copyright/copyright.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Generation (Conversion subsystem) 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | 8 | namespace eval app-copyright {} 9 | 10 | # ------------------------------------------------------ 11 | # Acceptable syntax for cmdline functionality 12 | 13 | set ::app-copyright::help(cmdline) { 14 | [call [cmd {@appname@}] [method copyright] [opt "[option -out] [arg outputfile]"] [opt "[option -label] [arg text]"] [opt "[option -logo] [arg path]"] [opt "[option -link] [arg url]"]] 15 | 16 | Creates a piece of HTML containing a copyright clause. Note that while 17 | any two of the label, logo, and link options are allowed to be missing 18 | at least one option from that set has to be present. The result is 19 | written to [const stdout], or to the file specified with [option -out], 20 | if that option is present. 21 | 22 | [nl] 23 | 24 | If the [option -label] is specified its argument will be used as the 25 | name of the entity having the copyright. 26 | 27 | [nl] 28 | 29 | If [option -logo] is specified its argument is the name of an image 30 | file to insert. 31 | 32 | [nl] 33 | 34 | If a [option -link] is present both label and logo will be hyperlinks 35 | to its argument. 36 | 37 | [nl] 38 | 39 | If option [option -out] is present the generated output is diverted 40 | into the specified file instead of written to [const stdout]. 41 | 42 | } 43 | 44 | proc ::app-copyright::help {topic} { 45 | variable help 46 | if {[info exists help($topic)]} {return $help($topic)} 47 | return {} 48 | } 49 | 50 | # ------------------------------------------------------ 51 | # Implementation of cmdline functionality. 52 | 53 | proc ::app-copyright::run {argv} { 54 | set errstring "wrong#args: copyright ?-out outputfile? ?-label text? ?-logo path? ?-link url?" 55 | if {[llength $argv] < 2} {tools::usage $errstring} 56 | 57 | set label "" ; set haslabel 0 58 | set logo "" ; set haslogo 0 59 | set link "" ; set haslink 0 60 | set outfile "" 61 | 62 | while {[string match -* [lindex $argv 0]]} { 63 | if {[string equal [lindex $argv 0] -out]} { 64 | set outfile [lindex $argv 1] 65 | set argv [lrange $argv 2 end] 66 | continue 67 | } 68 | if {[string equal [lindex $argv 0] -label]} { 69 | set label [lindex $argv 1] 70 | set argv [lrange $argv 2 end] 71 | set haslabel 1 72 | continue 73 | } 74 | if {[string equal [lindex $argv 0] -logo]} { 75 | set logo [lindex $argv 1] 76 | set argv [lrange $argv 2 end] 77 | set haslogo 1 78 | continue 79 | } 80 | if {[string equal [lindex $argv 0] -link]} { 81 | set link [lindex $argv 1] 82 | set argv [lrange $argv 2 end] 83 | set haslink 1 84 | continue 85 | } 86 | tools::usage $errstring 87 | } 88 | 89 | if {([llength $argv] != 0) || ($haslabel + $haslogo + $haslink) < 1} { 90 | tools::usage $errstring 91 | } 92 | 93 | if {$outfile != {}} { 94 | optcheck::outfile $outfile "Output file" 95 | set outfile [open $outfile w] 96 | } else { 97 | set outfile stdout 98 | } 99 | 100 | puts $outfile [generate $label $logo $link] 101 | return 102 | } 103 | 104 | proc ::app-copyright::generate {label logo link} { 105 | set text "" 106 | if {$label != {}} {append text $label} 107 | if {$logo != {}} {append text ""} 108 | if {$link != {}} { 109 | set text "$text" 110 | } 111 | set text "

Copyright © [clock format [clock seconds] -format %Y] $text

" 112 | return $text 113 | } 114 | 115 | # ------------------------------------------------------ 116 | package provide app-copyright 0.1 117 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tclxml3.1/xml-8.1.tcl: -------------------------------------------------------------------------------- 1 | # xml.tcl -- 2 | # 3 | # This file provides generic XML services for all implementations. 4 | # This file supports Tcl 8.1 regular expressions. 5 | # 6 | # See tclparser.tcl for the Tcl implementation of a XML parser. 7 | # 8 | # Copyright (c) 1998-2004 Zveno Pty Ltd 9 | # http://www.zveno.com/ 10 | # 11 | # See the file "LICENSE" in this distribution for information on usage and 12 | # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. 13 | # 14 | # $Id: xml-8.1.tcl,v 1.16 2004/08/14 07:41:11 balls Exp $ 15 | 16 | package require Tcl 8.1- 17 | 18 | package provide xmldefs 3.1 19 | 20 | package require sgml 1.8 21 | 22 | namespace eval xml { 23 | 24 | namespace export qnamesplit 25 | 26 | # Convenience routine 27 | proc cl x { 28 | return "\[$x\]" 29 | } 30 | 31 | # Define various regular expressions 32 | 33 | # Characters 34 | variable Char $::sgml::Char 35 | 36 | # white space 37 | variable Wsp " \t\r\n" 38 | variable allWsp [cl $Wsp]* 39 | variable noWsp [cl ^$Wsp] 40 | 41 | # Various XML names and tokens 42 | 43 | variable NameChar $::sgml::NameChar 44 | variable Name $::sgml::Name 45 | variable Names $::sgml::Names 46 | variable Nmtoken $::sgml::Nmtoken 47 | variable Nmtokens $::sgml::Nmtokens 48 | 49 | # XML Namespaces names 50 | 51 | # NCName ::= Name - ':' 52 | variable NCName $::sgml::Name 53 | regsub -all : $NCName {} NCName 54 | variable QName (${NCName}:)?$NCName ;# (Prefix ':')? LocalPart 55 | 56 | # The definition of the Namespace URI for XML Namespaces themselves. 57 | # The prefix 'xml' is automatically bound to this URI. 58 | variable xmlnsNS http://www.w3.org/XML/1998/namespace 59 | 60 | # table of predefined entities 61 | 62 | variable EntityPredef 63 | array set EntityPredef { 64 | lt < gt > amp & quot \" apos ' 65 | } 66 | 67 | # Expressions for pulling things apart 68 | variable tokExpr <(/?)([::xml::cl ^$::xml::Wsp>/]+)([::xml::cl $::xml::Wsp]*[::xml::cl ^>]*)> 69 | variable substExpr "\}\n{\\2} {\\1} {\\3} \{" 70 | 71 | } 72 | 73 | ### 74 | ### Exported procedures 75 | ### 76 | 77 | # xml::qnamesplit -- 78 | # 79 | # Split a QName into its constituent parts: 80 | # the XML Namespace prefix and the Local-name 81 | # 82 | # Arguments: 83 | # qname XML Qualified Name (see XML Namespaces [6]) 84 | # 85 | # Results: 86 | # Returns prefix and local-name as a Tcl list. 87 | # Error condition returned if the prefix or local-name 88 | # are not valid NCNames (XML Name) 89 | 90 | proc xml::qnamesplit qname { 91 | variable NCName 92 | variable Name 93 | 94 | set prefix {} 95 | set localname $qname 96 | if {[regexp : $qname]} { 97 | if {![regexp ^($NCName)?:($NCName)\$ $qname discard prefix localname]} { 98 | return -code error "name \"$qname\" is not a valid QName" 99 | } 100 | } elseif {![regexp ^$Name\$ $qname]} { 101 | return -code error "name \"$qname\" is not a valid Name" 102 | } 103 | 104 | return [list $prefix $localname] 105 | } 106 | 107 | ### 108 | ### General utility procedures 109 | ### 110 | 111 | # xml::noop -- 112 | # 113 | # A do-nothing proc 114 | 115 | proc xml::noop args {} 116 | 117 | ### Following procedures are based on html_library 118 | 119 | # xml::zapWhite -- 120 | # 121 | # Convert multiple white space into a single space. 122 | # 123 | # Arguments: 124 | # data plain text 125 | # 126 | # Results: 127 | # As above 128 | 129 | proc xml::zapWhite data { 130 | regsub -all "\[ \t\r\n\]+" $data { } data 131 | return $data 132 | } 133 | 134 | -------------------------------------------------------------------------------- /apps/dtp/lib/app-navbar/navbar.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Generation of a simple HTML navigation bar (toc, keywords) 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optchecker 7 | 8 | namespace eval app-navbar {} 9 | 10 | # ------------------------------------------------------ 11 | # Acceptable syntax for cmdline functionality 12 | 13 | set ::app-navbar::help(cmdline) { 14 | 15 | [call [cmd {@appname@}] [method navbar] [opt "[option -out] [arg outputfile]"] [arg iomap] [arg base] ([arg infile] [arg label] [const /on]|[const /off]|[const /pass])...] 16 | 17 | Creates a piece of HTML containing a navigation bar and writes it to 18 | [const stdout], or to the file specified with [option -out], if that 19 | option is present. All 20 | 21 | [arg infile]'s are mapped to their proper output file via the contents 22 | of the mapping file [arg iomap]. It is assumed that the navigation bar 23 | will be inserted into the output file for the input file [arg base], 24 | this guides the generation of proper relative links. 25 | 26 | [nl] 27 | 28 | For files which are marked with [const /off] only a label is 29 | generated. A link is generated if and only if the [arg infile] is 30 | marked with [const /on], or [const /pass]. When an [arg infile] is 31 | marked with [const /pass] the system will assume that the string 32 | 33 | [arg infile] is a fixed url and inserts it unchanged into the 34 | generated output. 35 | 36 | 37 | [nl] 38 | 39 | The generation can be influenced by the options listed below. 40 | 41 | [list_begin definitions] 42 | 43 | [lst_item "[option -out] [arg outputfile]"] 44 | 45 | If present the generated output is diverted into the specified file 46 | instead of written to [const stdout]. 47 | 48 | [list_end] 49 | 50 | } 51 | 52 | proc ::app-navbar::help {topic} { 53 | variable help 54 | if {[info exists help($topic)]} {return $help($topic)} 55 | return {} 56 | } 57 | 58 | # ------------------------------------------------------ 59 | # Implementation of cmdline functionality. 60 | 61 | proc ::app-navbar::run {argv} { 62 | set errstring "wrong#args: navbar ?-out output? map base (in label /on|/off|/pass)..." 63 | 64 | set outfile "" 65 | while {[string match -* [lindex $argv 0]]} { 66 | if {[string equal [lindex $argv 0] -out]} { 67 | if {[llength $argv] < 4} {tools::usage $errstring} 68 | 69 | set outfile [lindex $argv 1] 70 | set argv [lrange $argv 2 end] 71 | continue 72 | } 73 | } 74 | 75 | if {[llength $argv] % 3 != 2} {tools::usage $errstring} 76 | 77 | optcheck::infile [set mapfile [lindex $argv 0]] "Mapping file" 78 | if {$outfile != {}} { 79 | optcheck::outfile $outfile "Output file" 80 | } 81 | 82 | set basefile [lindex $argv 1] 83 | array set iomap [tools::readmap $mapfile] 84 | set basefile $iomap($basefile) 85 | 86 | if {$outfile == {}} { 87 | set outfile stdout 88 | } else { 89 | set outfile [open $outfile w] 90 | } 91 | 92 | puts $outfile [generate [array get iomap] $basefile [lrange $argv 2 end]] 93 | return 94 | } 95 | 96 | proc ::app-navbar::generate {iomap_ basefile nav} { 97 | array set iomap $iomap_ 98 | 99 | set text "
\[\n" 100 | set first 1 101 | 102 | foreach {file label state} $nav { 103 | if {!$first} {append text "| "} else {append text " "} 104 | set first 0 105 | 106 | switch -exact -- $state { 107 | /on {append text " $label \n"} 108 | /off {append text "$label\n"} 109 | /pass {append text " $label \n"} 110 | default {tools::usage $errstring} 111 | } 112 | } 113 | 114 | append text "\]
\n" 115 | return $text 116 | } 117 | 118 | # ------------------------------------------------------ 119 | package provide app-navbar 0.1 120 | -------------------------------------------------------------------------------- /apps/dtp/ChangeLog: -------------------------------------------------------------------------------- 1 | 2010-06-16 Andreas Kupries 2 | 3 | * lib/dtglue/dtglue.tcl (::dtglue::getmeta): Force all data on a 4 | single line. The code processing the data later are line-based. 5 | 6 | 2010-06-11 Andreas Kupries 7 | 8 | * lib/meta/meta.tcl (::meta::2xref): Added the page title to the 9 | list of things we can reference to in term's etc. dtplite had 10 | this for quite some time, the big brother should have it as 11 | well. 12 | 13 | 2010-06-08 Andreas Kupries 14 | 15 | * lib/dtglue/dtglue.tcl (::dtglue::cvtfiles): Updated to accept 16 | * lib/app-gen-doc/gen_doc.tcl (::app-gen-doc::run): an image map 17 | for use by the new 'image' markup command of doctools. 18 | 19 | 2004-05-17 Andreas Kupries 20 | 21 | * main.tcl: Implemented [SF Tcllib RFE 744109]. I.e. now diverting 22 | the user directly to the help intro message when calling dtp 23 | without arguments. 24 | 25 | * lib/app-help/help.tcl (::app-help::run): Added formats 'text' 26 | and 'wiki' to the list. Mentioned in [SF Tcllib RFE 744109]. 27 | 28 | 2003-11-20 Andreas Kupries 29 | 30 | * lib/tools/tools.tcl: Changed to understand the option '-out'. 31 | * lib/app-toc/toc.tcl: The pre-existing option -out for 'meta' 32 | * lib/app-map/map.tcl: was renamed to '-outdir'. Now when -out 33 | * lib/app-idx/idx.tcl: is present for these sub-commands output 34 | * lib/app-script/script.tcl: is written to the file specified 35 | * lib/app-copyright/copyright.tcl: through the option instead of 36 | * lib/app-subst/subst.tcl: stdout. 37 | * lib/app-navbar/navbar.tcl: 38 | * lib/app-meta/meta.tcl: 39 | * lib/app-doc/doc.tcl: 40 | * lib/app-changelog/changelog.tcl: 41 | 42 | 2003-05-13 Andreas Kupries 43 | 44 | * lib/app-assemble/assemble.tcl (help text): Fixed two spelling 45 | errors. [SF Tcllib Bug 737171]. 46 | 47 | 2003-03-29 Andreas Kupries 48 | 49 | * WRAPPING.txt: Added a description of the new one-step process 50 | for assembly + wrap. 51 | 52 | * lib/tools/sync.tcl: 53 | * lib/app-assemble/assemble.tcl: Added wrapping of the assembled 54 | directory hierarchy to the code. The synchronization engine to 55 | do this can be found in 'sync.tcl' and was lifted from 'sdx'. 56 | 57 | * lib/app-changelog/changelog.tcl: New package / 58 | subcommand. Parsing of changelogs and conversion into a doctools 59 | document for integration into other documentation. 60 | 61 | 2003-03-28 Andreas Kupries 62 | 63 | * lib/app-doc/doc.tcl: New package / subcommand. Command added to 64 | aid in the quick conversion of a single file without having to 65 | jump through all the hoops required for the batch processing of 66 | large sets. 67 | 68 | 2003-03-25 Andreas Kupries 69 | 70 | * lib/app-help/help.tcl (app-help::run): Extended the range 71 | covered by catch. 72 | 73 | 2003-03-24 Andreas Kupries 74 | 75 | * lib/app-help/help.tcl (app-help::run): Catching errors 76 | generating when trying to cache a new file in the 77 | starkit/pack. Application ight be set read-only instead of 78 | transparent. 79 | 80 | 2003-03-13 Andreas Kupries 81 | 82 | * WRAPPING.txt: Clarified that an installed tcllib cannot be used. 83 | 84 | * README.txt: Extended a bit to explain the application. 85 | 86 | * lib/app-assemble/assemble.tcl: Made assemble more robust when 87 | used with unuseable versions of tcllib. 88 | 89 | 2003-03-11 Andreas Kupries 90 | 91 | * lib/app-assemble/assemble.tcl: Added the subcommand 'assemble' 92 | * lib/app-assemble/pkgIndex.tcl: described in 'WRAPPING.txt'. 93 | 94 | * Initial import of the doctools processor. 95 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-sort/sort.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Sorting of CSV files 3 | # ------------------------------------------------------ 4 | 5 | package require tools 6 | package require optcsv 7 | package require csv 8 | package require cmdline 9 | 10 | namespace eval app-sort {} 11 | 12 | # ------------------------------------------------------ 13 | # Acceptable syntax for cmdline functionality 14 | 15 | set ::app-sort::help(cmdline) { 16 | [call [cmd {@appname@}] [method sort] [opt "[option -sep] [arg sepChar]"] [opt [option -alternate]] [opt [option -n]] [opt [option -f]] [opt [option -r]] [opt "[option -skip] [arg n]"] [arg sortcol] [arg file]...] 17 | 18 | This command sorts the specified [arg file]s by the given column 19 | 20 | [arg sortcol] and writes the result to [const stdout], in regular csv 21 | syntax. 22 | 23 | [nl] 24 | 25 | By default sorting is string-based, but it can be switched to integer 26 | and floating point by specifying either the option [option -n] 27 | (integer), or [option -f] respectively. If both options are specified 28 | the latest occurrence has precedence. 29 | 30 | 31 | [nl] 32 | 33 | Specification of option [option -r] causes a reverse sort. 34 | 35 | [nl] 36 | 37 | Specification of the option [option -skip] causes the command to print 38 | the first [arg n] records without change. I.e. it will start sorting 39 | the records coming after a fixed length header. 40 | } 41 | 42 | proc ::app-sort::help {topic} { 43 | variable help 44 | if {[info exists help($topic)]} {return $help($topic)} 45 | return {} 46 | } 47 | 48 | # ------------------------------------------------------ 49 | # Implementation of cmdline functionality. 50 | 51 | proc ::app-sort::run {argv} { 52 | set errstring "wrong#args: sort ?-sep sepchar? ?-f? ?-n? ?-r? ?-skip cnt? column file..." 53 | 54 | # ================================================== 55 | # Process arguments 56 | 57 | if {[llength $argv] < 2} {tools::usage $errstring} 58 | 59 | set sepChar , 60 | set alt 0 61 | set sortmode ascii 62 | set order increasing 63 | set reverse 0 64 | set skip 0 65 | set fill {} 66 | 67 | while {[llength $argv]} { 68 | set err [cmdline::getopt argv {sep.arg alternate f n r skip.arg} opt arg] 69 | if {$err == 1} { 70 | switch -exact -- $opt { 71 | sep {set sepChar $arg} 72 | alternate {set alt 1} 73 | f {set sortmode real ; set fill 0.0} 74 | n {set sortmode integer ; set fill 0} 75 | r {set order decreasing} 76 | skip {set skip $arg} 77 | } 78 | } elseif {$err < 0} { 79 | tools::usage $errstring 80 | } else { 81 | # Non argument found, stop processing. 82 | break 83 | } 84 | } 85 | 86 | if {[llength $argv] < 2} {tools::usage $errstring} 87 | 88 | ::optcsv::colidx [set sortcol [lindex $argv 0]] $errstring 89 | ::optcsv::files [set files [lrange $argv 1 end]] $errstring 90 | 91 | if {![string is integer -strict $skip] || ($skip < 0)} { 92 | tools::usage $errstring 93 | } 94 | 95 | # ================================================== 96 | # Process csv input 97 | 98 | set records [list] 99 | ::optcsv::foreach_record $sepChar $alt data $files { 100 | if {$skip > 0} { 101 | puts stdout [::csv::join $data $sepChar] 102 | incr skip -1 103 | continue 104 | } 105 | # Fill to sort column. 106 | while {[llength $data] <= $sortcol} {lappend data $fill} 107 | lappend records $data 108 | } 109 | 110 | # ================================================== 111 | # Write result 112 | 113 | foreach data [lsort -index $sortcol -$order -$sortmode $records] { 114 | puts stdout [::csv::join $data $sepChar] 115 | } 116 | return 117 | } 118 | 119 | # ------------------------------------------------------ 120 | package provide app-sort 0.1 121 | -------------------------------------------------------------------------------- /apps/asteroids/ChangeLog: -------------------------------------------------------------------------------- 1 | 2005-04-03 Jeff Godfrey 2 | 3 | * asteroids.tcl 4 | - Fixed (for real this time...), the location of the high-score table when 5 | the app is run as a starpack. The previous fix to this problem wasn't 6 | quite correct... 7 | 8 | 2005-04-23 Jeff Godfrey 9 | 10 | * asteroids.tcl 11 | - Fixed the storage location of the high-score file when app is run as 12 | a starpack. Prior to the change, when running as a starpack, the file 13 | was (attempting to be) stored in the exe itself. Now, in a wrapped state, 14 | it is stored next to the exe file. 15 | - Modified the code that loads the sound files into Snack so that it works 16 | properly when wrapped as a starpack. 17 | - Worked around an odd bug that caused the app to crash upon exit when run 18 | as a starpack, *with* the Snack sound extension. In the "appExit" proc, 19 | there are one or more channels still open with names like "mk##", that 20 | cause the crash. As I don't know what's opening the channels (likely 21 | MetaKit related?), I just closed them before exiting. This seems to avoid 22 | the problem, though it should likely be fixed elsewhere. 23 | 24 | 2005-03-25 Jeff Hobbs 25 | 26 | * asteroids.tcl: add exec wish at top 27 | 28 | 2005-03-08 Jeff Hobbs 29 | 30 | * asteroids.tcl: redo bindGameKeys to use virtual events. Add 31 | Return as a 'fire' alternative key. 32 | Add an hit accuracy counter in the bottom right corner. 33 | 34 | 2005-03-02 Jeff Godfrey 35 | 36 | * asteroids.tcl 37 | - Fixed Bug #1155390 - Background "heartbeat" sound (which gets 38 | progressively faster throughout a game), was not being reset to its 39 | initial _slow_ speed when the game ended. 40 | 41 | 2005-02-27 Jeff Godfrey 42 | 43 | * asteroids.tcl 44 | - Fixed - Newly added "Pause" state didn't work with "Game Loop Godfrey" 45 | - Added back ability to return to main menu during game play by pressing 46 | (lost when Pause mode was added) 47 | 48 | 2005-02-27 Jeff Godfrey 49 | 50 | * asteroids.tcl: 51 | - General code formatting and alignment cleanup 52 | - Added game Pause function, bound to "P" and "p" 53 | 54 | 2005-02-25 Jeff Hobbs 55 | 56 | * asteroids.tcl: add options to the main menu to control game 57 | loop, sound and color. Removed menu and put About on main menu. 58 | Made all items respond to mouse. 59 | 60 | 2005-02-23 Jeff Hobbs 61 | 62 | * asteroids.tcl: introduce a sense of scaling, to allow the game 63 | to adapt to smaller screens. 64 | 65 | * asteroids.tcl: introduce named fonts, colors for items. 66 | Move the FPS label into the canvas, other code cleanup. 67 | 68 | * asteroids.tcl: Updated version from the wiki with the following: 69 | - Added a second version of the "gameLoop" proc, provided by Jeff 70 | Hobbs. The original version is not CPU friendly as it just runs 71 | the game as fast as it can inside a "while" loop. Jeff H's mod 72 | uses the event loop for processing, and tends to place a much 73 | lighter load on the CPU. Immediately below the two gameLoop procs 74 | (gameLoop0 and gameLoop1), you'll need to decide which one you 75 | want to use and "rename" one of them to gameLoop. Currently, 76 | Jeff H's loop is being used. If you have any animation problems 77 | with either loop, try the other one. Both seem to provide a 78 | similar experience. 79 | - Score and level info is now *drawn* for a more authentic look 80 | - Extra ship every 10,000 points 81 | - Added "Help | About" menu 82 | - Fixed bug when "High Score" dialog is closed using window decoration 83 | 84 | * beat1.wav, beat2.wav, explosion.wav, shot.wav, thrust.wav: 85 | * asteroids.tcl: Initial import of asteroids by Jeff Godfrey from 86 | wiki page http://wiki.tcl.tk/13601 87 | 88 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tclxml3.1/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file - handcrafted 2 | # 3 | # $Id: pkgIndex.tcl.in,v 1.13 2003/12/03 20:06:34 balls Exp $ 4 | 5 | package ifneeded xml::c 3.1 [list load [file join $dir Tclxml30.dll]] 6 | package ifneeded xml::tcl 3.1 [list source [file join $dir xml__tcl.tcl]] 7 | package ifneeded sgmlparser 1.0 [list source [file join $dir sgmlparser.tcl]] 8 | package ifneeded xpath 1.0 [list source [file join $dir xpath.tcl]] 9 | package ifneeded xmldep 1.0 [list source [file join $dir xmldep.tcl]] 10 | 11 | # The C parsers are provided through their own packages and indices, 12 | # and thus do not have to be listed here. This index may require them 13 | # in certain places, but does not provide them. This is part of the 14 | # work refactoring the build system of TclXML to create clean 15 | # packages, and not require a jumble (jungle?) of things in one Makefile. 16 | # 17 | #package ifneeded xml::expat 3.1 [list load [file join $dir @expat_TCL_LIB_FILE@]] 18 | #package ifneeded xml::xerces 2.0 [list load [file join $dir @xerces_TCL_LIB_FILE@]] 19 | #package ifneeded xml::libxml2 3.1 [list load [file join $dir @TclXML_libxml2_LIB_FILE@]] 20 | 21 | namespace eval ::xml {} 22 | 23 | # Requesting a specific package means we want it to be the default parser class. 24 | # This is achieved by loading it last. 25 | 26 | # expat and libxml2 packages must have xml::c package loaded 27 | package ifneeded expat 3.1 { 28 | package require xml::c 3.1 29 | package require xmldefs 30 | package require xml::tclparser 3.1 31 | catch {package require xml::libxml2 3.1} 32 | package require xml::expat 3.1 33 | package provide expat 3.1 34 | } 35 | package ifneeded libxml2 3.1 { 36 | package require xml::c 3.1 37 | package require xmldefs 38 | package require xml::tclparser 3.1 39 | catch {package require xml::expat 3.1} 40 | package require xml::libxml2 3.1 41 | package provide libxml2 3.1 42 | } 43 | 44 | # tclparser works with either xml::c or xml::tcl 45 | package ifneeded tclparser 3.1 { 46 | if {[catch {package require xml::c 3.1}]} { 47 | # No point in trying to load expat or libxml2 48 | package require xml::tcl 3.1 49 | package require xmldefs 50 | package require xml::tclparser 3.1 51 | } else { 52 | package require xmldefs 53 | catch {package require xml::expat 3.1} 54 | catch {package require xml::libxml2 3.1} 55 | package require xml::tclparser 56 | } 57 | package provide tclparser 3.1 58 | } 59 | 60 | # use tcl only (mainly for testing) 61 | package ifneeded puretclparser 3.1 { 62 | package require xml::tcl 3.1 63 | package require xmldefs 64 | package require xml::tclparser 3.1 65 | package provide puretclparser 3.1 66 | } 67 | 68 | # Requesting the generic package leaves the choice of default parser automatic 69 | 70 | package ifneeded xml 3.1 { 71 | if {[catch {package require xml::c 3.1}]} { 72 | package require xml::tcl 3.1 73 | package require xmldefs 74 | # Only choice is tclparser 75 | package require xml::tclparser 3.1 76 | } else { 77 | package require xmldefs 78 | package require xml::tclparser 3.1 79 | # libxml2 is favoured since it provides more features 80 | catch {package require xml::expat 3.1} 81 | catch {package require xml::libxml2 3.1} 82 | } 83 | package provide xml 3.1 84 | } 85 | 86 | if {[info tclversion] <= 8.0} { 87 | package ifneeded sgml 1.9 [list source [file join $dir sgml-8.0.tcl]] 88 | package ifneeded xmldefs 3.1 [list source [file join $dir xml-8.0.tcl]] 89 | package ifneeded xml::tclparser 3.1 [list source [file join $dir tclparser-8.0.tcl]] 90 | } else { 91 | package ifneeded sgml 1.9 [list source [file join $dir sgml-8.1.tcl]] 92 | package ifneeded xmldefs 3.1 [list source [file join $dir xml-8.1.tcl]] 93 | package ifneeded xml::tclparser 3.1 [list source [file join $dir tclparser-8.1.tcl]] 94 | } 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/jabberlib/stanzaerror.tcl: -------------------------------------------------------------------------------- 1 | # stanzaerror.tcl -- 2 | # 3 | # This file is part of the jabberlib. It provides english clear text 4 | # messages that gives some detail of 'urn:ietf:params:xml:ns:xmpp-stanzas'. 5 | # 6 | # Copyright (c) 2004 Mats Bengtsson 7 | # 8 | # $Id: stanzaerror.tcl,v 1.4 2004/09/13 09:05:19 matben Exp $ 9 | # 10 | 11 | package provide stanzaerror 1.0 12 | 13 | namespace eval stanzaerror { 14 | 15 | # This maps Defined Conditions to clear text messages. 16 | # draft-ietf-xmpp-core23; 9.3.3 Defined Conditions 17 | 18 | variable msg 19 | array set msg { 20 | bad-request {the sender has sent XML that is malformed or\ 21 | that cannot be processed.} 22 | conflict {access cannot be granted because an existing\ 23 | resource or session exists with the same name or address.} 24 | feature-not-implemented {the feature requested is not implemented\ 25 | by the recipient or server and therefore cannot be processed.} 26 | forbidden {the requesting entity does not possess the\ 27 | required permissions to perform the action.} 28 | gone {the recipient or server can no longer be\ 29 | contacted at this address.} 30 | internal-server-error {the server could not process the stanza because\ 31 | of a misconfiguration or an otherwise-undefined internal server error.} 32 | item-not-found {the addressed JID or item requested cannot be\ 33 | found.} 34 | jid-malformed {the sending entity has provided or communicated\ 35 | an XMPP address or aspect thereof that does not adhere to the syntax\ 36 | defined in Addressing Scheme.} 37 | not-acceptable {the recipient or server understands the request\ 38 | but is refusing to process it because it does not meet criteria\ 39 | defined by the recipient or server.} 40 | not-allowed {the recipient or server does not allow any\ 41 | entity to perform the action.} 42 | not-authorized {the sender must provide proper credentials\ 43 | before being allowed to perform the action, or has provided\ 44 | improper credentials.} 45 | payment-required {the requesting entity is not authorized to\ 46 | access the requested service because payment is required.} 47 | recipient-unavailable {the intended recipient is temporarily unavailable.} 48 | redirect {the recipient or server is redirecting requests\ 49 | for this information to another entity, usually temporarily.} 50 | registration-required {the requesting entity is not authorized to\ 51 | access the requested service because registration is required.} 52 | remote-server-not-found {a remote server or service specified as part\ 53 | or all of the JID of the intended recipient does not exist.} 54 | remote-server-timeout {a remote server or service specified as part\ 55 | or all of the JID of the intended recipient\ 56 | (or required to fulfill a request) could not be contacted within\ 57 | a reasonable amount of time.} 58 | resource-constraint {the server or recipient lacks the system\ 59 | resources necessary to service the request.} 60 | service-unavailable {the server or recipient does not currently\ 61 | provide the requested service.} 62 | subscription-required {the requesting entity is not authorized to\ 63 | access the requested service because a subscription is required.} 64 | undefined-condition {the error condition is not one of those defined\ 65 | by the other conditions in this list.} 66 | unexpected-request {the recipient or server understood the\ 67 | request but was not expecting it at this time (e.g., the request\ 68 | was out of order).} 69 | } 70 | } 71 | 72 | # stanzaerror::getmsg -- 73 | # 74 | # Return the english clear text message from a defined-condition. 75 | 76 | proc stanzaerror::getmsg {condition} { 77 | variable msg 78 | 79 | if {[info exists msg($condition)]} { 80 | return $msg($condition) 81 | } else { 82 | return "" 83 | } 84 | } 85 | 86 | #------------------------------------------------------------------------------- 87 | 88 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/khim/cs.msg: -------------------------------------------------------------------------------- 1 | # cs.msg -- 2 | # 3 | # Czech-language messages for KHIM 4 | # 5 | # Copyright (c) 2005 by Kevin B. Kenny. All rights reserved. 6 | # Translation by Michal Mestan 7 | # 8 | # Refer to the file "license.terms" for the terms and conditions of 9 | # use and redistribution of this file, and a DISCLAIMER OF ALL WARRANTEES. 10 | # 11 | # $Id: cs.msg,v 1.1 2006/12/06 17:28:12 kennykb Exp $ 12 | # $Source: /cvsroot/tcllib/tklib/modules/khim/cs.msg,v $ 13 | # 14 | #---------------------------------------------------------------------- 15 | 16 | namespace eval ::khim { 17 | 18 | ::msgcat::mcset cs HELPTEXT { 19 | 20 | Kevin's Hacky Input Method (KHIM) 21 | 22 | KHIM vám umožňuje zadávat mezinárodní znaky včetně těch, 23 | které na vaší klávesnici nejspou. Pracuje nezávisle na 24 | požité vstupní metodě kterou váš operační systém může 25 | poskytovat. Je hlavně určen pro případy, kdy nemáte možnost 26 | měnit mapování klávesnice a přesto potřebujete zapsat 27 | cizojazyčný text. 28 | 29 | K nastavení KHIM slouží "Ovládací panel KHIM" (jeho vyvolání 30 | je závaislé na konkrétní aplikaci), zde povolte KHIM zaškrtnutím 31 | políčka "Používat KHIM". Mužete si zde též vybrat klávesu na 32 | vaší klávesnici, kterou bude KHIM používat jako "mrtvá" 33 | stisknutím talčítka "Mrtvá klávesa" a poté stisktnutím 34 | patřičné klávesy. Obecně lze říci, nemůže to být jakákoliv 35 | "mrtvá" klávasa vaší klávesové mapy, jelikož při stisknutí 36 | je volána vstupní metoda operačního systému. 37 | 38 | Když je KHIM povolen, můžete vkládat mezinárodní znaky 39 | v jakémkoliv přípravku, který je nastaven tak, aby používal 40 | KHIM stiknutním "mrtvé" klávesy následované posloupností 41 | dvou znaků. Seznam v "Ovládacím panelu KHIM" zobrazuje 42 | dostupné posloupnosti. Pokud stisknete "mrtvou" klávesu 43 | dvakrát, zobrazí se vám dialog, ve kterém můžete vybrat 44 | žádaný symbol z unokódové mapy. V mapě se můžete pohybovat 45 | kursorovými klávesami, dvojklikem myší, mezerníkem či klávesou 46 | enter vybraný znak vložíte do textu. 47 | 48 | Chcete-li další znaky vkládat pomocí mrtvé klávesy, otevřete 49 | "Ovládací panel KHIM" vložte dva znaky do pole "Posloupnost 50 | kláves" a požadovaný znak, který chcete vložit do pole 51 | "Vkládaný znak" a stisknětě talčítko "Změnit" (vkládaný 52 | znak můžete nakopírovat z jiné aplikace nebo poučít talčítko 53 | "Unikód..." (nebo stisknout dvakrát "mrtvou" klávesu) a vybrat 54 | znak z unikódové mapy). K odstranění klávesové posloupnosti 55 | slouží tlačítko "Smazat". 56 | 57 | } 58 | 59 | ::msgcat::mcset cs {SELECT COMPOSE KEY} [string map [list \n\t \n] { 60 | Stiskněte klávesu 61 | kterou chcete používat 62 | jako "mrtvou" klávesu. 63 | }] 64 | 65 | ::msgcat::mcset cs {Apply} "Použít" 66 | 67 | ::msgcat::mcset cs {Cancel} "Zrušit" 68 | 69 | ::msgcat::mcset cs {Change} "Změnit" 70 | 71 | ::msgcat::mcset cs {Character} "Znak" 72 | 73 | ::msgcat::mcset cs {Compose Key} "Mrtvá klávesa" 74 | 75 | ::msgcat::mcset cs {Compose key:} "Mrtvá klávesa:" 76 | 77 | ::msgcat::mcset cs {Composed sequence must be two characters long} \ 78 | "Vkládaný znak je vždy šložen z posloupnosti zdvou nzaků" 79 | 80 | ::msgcat::mcset cs {Delete} "Smazat" 81 | 82 | ::msgcat::mcset cs {Help...} "Nápověda..." 83 | 84 | ::msgcat::mcset cs {Input key sequence} "Zadajete posloupnost kláves" 85 | 86 | ::msgcat::mcset cs {Insert Character} "Vkládaný znak" 87 | 88 | ::msgcat::mcset cs {Invalid sequence} "Chybná posloupnost" 89 | 90 | ::msgcat::mcset cs {Key sequences} "Posloupnosti kláves" 91 | 92 | ::msgcat::mcset cs {KHIM Controls} "Ovládací panel KHIM" 93 | 94 | ::msgcat::mcset cs {OK} {OK} 95 | 96 | ::msgcat::mcset cs {Select code page:} "Výběr kódové stránky:" 97 | 98 | ::msgcat::mcset cs {Unicode...} "Unikód..." 99 | 100 | ::msgcat::mcset cs {Use KHIM} "Používat KHIM" 101 | 102 | } 103 | 104 | # Local Variables: 105 | # mode: tcl 106 | # End: 107 | 108 | 109 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/windowlist/windowlist.tcl: -------------------------------------------------------------------------------- 1 | #windowlist.tcl: provides routines for managing windows from menu, i.e. minimize, raise, bring all to front; standard menu item on Mac OS X. 2 | 3 | #(c) 2011 WordTech Communications LLC. License: standard Tcl license, http://www.tcl.tk/software/tcltk/license.html 4 | 5 | #includes code from http://wiki.tcl.tk/1461 6 | 7 | ##"cycle through windows" code courtesy of Tom Hennigan, tomhennigan@gmail.com, (c) 2009 8 | 9 | package provide windowlist 1.4 10 | 11 | namespace eval windowlist { 12 | 13 | #make the window menu 14 | proc windowMenu {mainmenu} { 15 | 16 | menu $mainmenu.windowlist 17 | 18 | $mainmenu.windowlist add command -label "Minimize" -command [namespace current]::minimizeFrontWindow -accelerator Command-M 19 | $mainmenu.windowlist add separator 20 | $mainmenu.windowlist add command -label "Bring All to Front" -command [namespace current]::raiseAllWindows 21 | $mainmenu.windowlist add separator 22 | $mainmenu.windowlist add command -label "Cycle Through Windows" \ 23 | -command {raise [lindex [wm stackorder .] 0]} \ 24 | -accelerator "Command-`" 25 | bind all {raise [lindex [wm stackorder .] 0]} 26 | $mainmenu.windowlist add separator 27 | $mainmenu.windowlist add command -label "Main Window" -command ::tk::mac::ReopenApplication 28 | $mainmenu.windowlist add separator 29 | $mainmenu.windowlist add command -label [wm title .] -command ::tk::mac::ReopenApplication 30 | 31 | $mainmenu add cascade -label "Window" -menu $mainmenu.windowlist 32 | 33 | #bind the window menu to update whenever a new window is added, on menu selection 34 | bind all <> +[list [namespace current]::updateWindowMenu $mainmenu.windowlist] 35 | bind all [namespace current]::minimizeFrontWindow 36 | bind all [namespace current]::minimizeFrontWindow 37 | bind . {wm state . withdrawn} 38 | bind . {wm state . withdrawn} 39 | wm protocol . WM_DELETE_WINDOW {wm state . withdrawn} 40 | 41 | } 42 | 43 | 44 | #update the window menu with windows 45 | proc updateWindowMenu {windowmenu} { 46 | 47 | set windowlist [wm stackorder .] 48 | 49 | #search for drawer window first 50 | if {[lsearch $windowlist ".drawer"] >= 0 } { 51 | set windowlist [lreplace $windowlist [lsearch $windowlist ".drawer"] [lsearch $windowlist ".drawer"]] 52 | update 53 | } 54 | 55 | if {$windowlist == {}} { 56 | return 57 | } 58 | 59 | $windowmenu delete 8 end 60 | foreach item $windowlist { 61 | $windowmenu add command -label "[wm title $item]" -command [list raise $item] 62 | 63 | } 64 | } 65 | 66 | 67 | 68 | #make all windows visible 69 | proc raiseAllWindows {} { 70 | 71 | #get list of mapped windows 72 | 73 | if {![winfo ismapped .]} { 74 | 75 | wm deiconify . 76 | 77 | } 78 | 79 | set windowlist [wm stackorder .] 80 | 81 | #do nothing if all windows are minimized 82 | if {$windowlist == {}} { 83 | return 84 | } 85 | 86 | #use [winfo children .] here to get windows that are minimized 87 | foreach item [winfo children .] { 88 | 89 | #get all toplevel windows, exclude menubar windows 90 | if { [string equal [winfo toplevel $item] $item] && [catch {$item cget -tearoff}]} { 91 | wm deiconify $item 92 | } 93 | } 94 | #be sure to deiconify ., since the above command only gets the child toplevels 95 | wm deiconify . 96 | } 97 | 98 | #minimize the selected window 99 | proc minimizeFrontWindow {} { 100 | 101 | #get list of mapped windows 102 | set windowlist [wm stackorder .] 103 | 104 | #do nothing if all windows are minimized 105 | if {$windowlist == {}} { 106 | return 107 | } else { 108 | 109 | #minimize topmost window 110 | set topwindow [lindex $windowlist end] 111 | wm iconify $topwindow 112 | 113 | } 114 | } 115 | 116 | namespace export * 117 | } 118 | 119 | #raise window if closed--dock click 120 | proc ::tk::mac::ReopenApplication {} { 121 | 122 | if { [wm state .] == "withdrawn"} { 123 | wm state . normal 124 | raise . 125 | } else { 126 | wm deiconify . 127 | raise . 128 | } 129 | 130 | catch {fullscreen::fullscreen .} 131 | 132 | } 133 | 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/bin/tkchat_clock.tcl: -------------------------------------------------------------------------------- 1 | # tkchat plugin - Copyright (C) 2007 Pat Thoyts 2 | # 3 | # Add a clock to the statusbar displaying the time in the New Orleans 4 | # for the Tcl 2007 conference 5 | 6 | namespace eval ::tkchat::clock { 7 | variable version 1.0.0 8 | variable Options 9 | if {![info exists Options]} { 10 | array set Options { 11 | Enabled 0 12 | Timezone :localtime 13 | Format "%H:%M:%S" 14 | Tooltip "" 15 | } 16 | } 17 | 18 | namespace import ::tooltip::tooltip 19 | } 20 | 21 | proc ::tkchat::clock::Init {} { 22 | variable Options 23 | if {$Options(Enabled)} { 24 | if {[winfo exists .status] && ![winfo exists .status.clock]} { 25 | ttk::label .status.clock 26 | ::tkchat::StatusbarAddWidget .status .status.clock 1 27 | tooltip .status.clock $Options(Tooltip) 28 | variable timer [after idle [list [namespace origin Tick] 1000]] 29 | } 30 | } 31 | } 32 | 33 | proc ::tkchat::clock::Stop {} { 34 | variable timer 35 | if {[info exists timer]} { after cancel $timer } 36 | if {[winfo exists .status.clock]} { destroy .status.clock } 37 | } 38 | 39 | proc ::tkchat::clock::Tick {interval} { 40 | variable Options 41 | set txt [clock format [clock seconds] \ 42 | -format $Options(Format) \ 43 | -timezone $Options(Timezone)] 44 | .status.clock configure -text $txt 45 | variable timer [after $interval [info level 0]] 46 | } 47 | 48 | proc ::tkchat::clock::SaveHook {} { 49 | variable Options 50 | lappend data {} [list variable Options] 51 | lappend data [list array set Options [array get Options]] {} 52 | return [list namespace eval [namespace current] [join $data \n]] 53 | } 54 | 55 | proc ::tkchat::clock::ClockEnable {widgets varname key op} { 56 | variable EditOptions 57 | set state [expr {$EditOptions(Enabled) ? "normal" : "disabled"}] 58 | foreach w $widgets { 59 | if {[winfo exists $w]} {$w configure -state $state} 60 | } 61 | return 62 | } 63 | 64 | proc ::tkchat::clock::OptionsAccept {} { 65 | variable Options 66 | variable EditOptions 67 | array set Options [array get EditOptions] 68 | unset EditOptions 69 | Stop 70 | Init 71 | } 72 | 73 | proc ::tkchat::clock::OptionsCancel {} { 74 | variable EditOptions 75 | unset EditOptions 76 | } 77 | 78 | proc ::tkchat::clock::OptionsHook {parent} { 79 | variable Options 80 | variable EditOptions 81 | array set EditOptions [array get Options] 82 | set f [ttk::frame $parent.clock] 83 | set eb [ttk::checkbutton $f.eb -text "Enable clock" \ 84 | -variable [namespace current]::EditOptions(Enabled)] 85 | set lf [ttk::labelframe $f.lf -labelwidget $eb] 86 | ttk::label $lf.ltz -anchor w -text Timezone 87 | ttk::entry $lf.etz -textvariable [namespace current]::EditOptions(Timezone) 88 | ttk::label $lf.lft -anchor w -text Format 89 | ttk::entry $lf.eft -textvariable [namespace current]::EditOptions(Format) 90 | ttk::label $lf.ltt -anchor w -text Tooltip 91 | ttk::entry $lf.ett -textvariable [namespace current]::EditOptions(Tooltip) 92 | trace add variable [namespace current]::EditOptions(Enabled) write \ 93 | [list [namespace origin ClockEnable] [list $lf.etz $lf.eft $lf.ett]] 94 | grid $lf.ltz $lf.etz -sticky news -padx 1 -pady 1 95 | grid $lf.lft $lf.eft -sticky news -padx 1 -pady 1 96 | grid $lf.ltt $lf.ett -sticky news -padx 1 -pady 1 97 | grid rowconfigure $lf 10 -weight 1 98 | grid columnconfigure $lf 1 -weight 1 99 | grid $lf -sticky new -padx 2 -pady 2 100 | grid rowconfigure $f 0 -weight 1 101 | grid columnconfigure $f 0 -weight 1 102 | bind $f <> [namespace which OptionsAccept] 103 | bind $f <> [namespace which OptionsCancel] 104 | return [list Clock $f] 105 | } 106 | 107 | # ------------------------------------------------------------------------- 108 | ::tkchat::Hook add init ::tkchat::clock::Init 109 | ::tkchat::Hook add save ::tkchat::clock::SaveHook 110 | ::tkchat::Hook add options ::tkchat::clock::OptionsHook 111 | package provide tkchat::clock $::tkchat::clock::version 112 | # ------------------------------------------------------------------------- 113 | -------------------------------------------------------------------------------- /apps/ijbridge/ChangeLog: -------------------------------------------------------------------------------- 1 | 2009-01-02 Pat Thoyts 2 | 3 | * ijbridge.tcl: Break up long jabber lines into chunks to avoid 4 | being truncated by IRC length restrictions. 5 | 6 | 2008-12-13 Pat Thoyts 7 | 8 | * ijbridge.tcl: Notify the irc channel as jabber users 9 | arrive and depart. 10 | 11 | 2008-12-13 Pat Thoyts 12 | 13 | * ijbridge.tcl: Added ban/unban support and move the self-op code 14 | off the end-of-names event. 15 | 16 | 2008-09-04 Pat Thoyts 17 | 18 | * ijbridge.tcl: Do not let jabber users make the bot kick itself. 19 | 20 | 2008-02-25 Pat Thoyts 21 | 22 | * ijbridge.tcl: Support recording user colors (from tkchat) 23 | and write to a file as .css for the wubchain to use. 24 | 25 | 2008-06-13 Pat Thoyts 26 | 27 | * ijbridge.tcl: Listen on a localhost port for connections from 28 | the paste bot and announce new pastes to the channel and muc. 29 | 30 | 2008-02-10 Pat Thoyts 31 | 32 | * ijbridge.tcl: Increment version to 1.1.0 33 | * ijbridge.tcl: Switch to use of the digest version of the 34 | jabberl:iq:auth authentication protocol. 35 | 36 | 2008-01-27 Pat Thoyts 37 | 38 | * ijbridge.tcl: Fixed the userinfo to retrieve the users 39 | host info from the 311 response (FR #1727793 mjanssen) 40 | 41 | 2007-04-19 Pat Thoyts 42 | 43 | * ijbridge.tcl: Changed handling of NAMES reponses to 44 | cope with multiple lines and request op mode in the end 45 | of names event. 46 | 47 | 2007-02-01 Pat Thoyts 48 | 49 | * ijbridge.tcl: Command to get stats from bridge. 50 | * ijbridge.tcl: Added some bot commands for access from 51 | IRC. Can ask the bridge for jabber user names. Fixed receipt of 52 | presence information. 53 | 54 | 2007-01-31 Pat Thoyts 55 | 56 | * ijbridge.tcl: Added some statistics recording. 57 | 58 | 2006-11-29 Pat Thoyts 59 | 60 | * ibridge.tcl: Fix ircbridge nicks. 61 | 62 | 2006-10-28 Pat Thoyts 63 | 64 | * ijbridge.tcl: Added auto-op and kick support. Also whois. 65 | 66 | 2006-09-11 Pat Thoyts 67 | 68 | * ijbridge.tcl: Additional support. 69 | 70 | 2006-06-23 Daniel South 71 | 72 | * ijbridge.tcl: Correct some list matching for IrcUserList. 73 | 74 | 2006-03-13 Pat Thoyts 75 | 76 | * ijbridge.tcl: Added version command. 77 | * ijbridge.tcl: Testing and fixes for the previous change. 78 | 79 | 2006-03-13 Daniel South 80 | 81 | * ijbridge.tcl: Added callback facility to retrieve the list of online 82 | IRC users from a jabber client. Modified tracking of IRC users to be 83 | a little more accurate. 84 | 85 | 2005-10-26 Pat Thoyts 86 | 87 | * ijbridge.tcl: Added facility to identify with FreeNode's 88 | nickserv as unidentified users cannot send private 89 | messages. Registered ijtest and ijchain users with nickserv. 90 | 91 | 2004-12-05 Pat Thoyts 92 | 93 | * ijbridge.tcl: Added a map to remove all ASCII < 32 except those 94 | permitted by XML. Added the stdin reader from version 2. Removed 95 | the check for history items - tclers MUC now puts a timestamp on 96 | all messages. 97 | 98 | 2004-11-17 Pat Thoyts 99 | 100 | * ijbridge.tcl: Added catch around the message callback and 101 | generally try to deal with messages that have missing parts. 102 | 103 | 2004-11-16 Pat Thoyts 104 | 105 | * ijbridge.tcl: Added lots of comments to all the Jabber 106 | section. Implemented support for reconnecting if the network 107 | connection goes down. Added some bot commands to the bridge - HELP 108 | might one day be helpful and "/msg ijchain /msg ircuser message" 109 | will send a private message to an irc user. They cannot sent one 110 | back though. 111 | 112 | 2004-11-15 Pat Thoyts 113 | 114 | * all: Initial checkin. 115 | -------------------------------------------------------------------------------- /apps/csvop/lib/app-cut/cut.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Cut(ting) columns out of CSV files. IOW "Projection". 3 | # This includes the ability to reorder and replicate columns. 4 | # ------------------------------------------------------ 5 | 6 | package require tools 7 | package require optcsv 8 | package require csv 9 | package require cmdline 10 | 11 | namespace eval app-cut {} 12 | 13 | # ------------------------------------------------------ 14 | # Acceptable syntax for cmdline functionality 15 | 16 | set ::app-cut::help(cmdline) { 17 | [call [cmd {@appname@}] [method cut] [opt "[option -sep] [arg sepChar]"] [opt [option -alternate]] [arg colspec] [arg file]...] 18 | 19 | This command first concatenates the input files, and then uses the 20 | provided column specification ([arg colspec]) to determine which of 21 | the columns in the input have to appear in the output, and in which 22 | order. The result of the operation is written to [const stdout], in 23 | regular csv syntax. 24 | 25 | [nl] 26 | 27 | Only the general options are available, they are described by the 28 | topic [term genopt]. 29 | 30 | [nl] 31 | 32 | The [arg colspec] is a list of column indices and column ranges, 33 | separated by commas. Column indices are counted from 0 (for the first, 34 | i.e. left-most column). A column range can have any of the following 35 | forms, with both [var n] and [var m] legal column indices. 36 | 37 | [list_begin definitions] 38 | [lst_item "[var n]-[var m]"] 39 | 40 | The range of columns beginning at column [var n], inclusive and ending 41 | at column [var m], inclusive. 42 | 43 | [lst_item "[var n]-"] 44 | 45 | The range of columns beginning at column [var n], inclusive and ending 46 | with the last column. In other words, this is a shortcut for "[var n]-end" 47 | 48 | [lst_item "-[var m]"] 49 | 50 | The range of column beginning at column 0 and ending at column [var m], 51 | inclusive. In other words, this is a shortcut for "0-[var m]" 52 | 53 | [list_end] 54 | 55 | [nl] 56 | 57 | Note that it is not only possible to remove, i.e. cut, columns from 58 | the input, but also to simply reorder column, and to replicate 59 | them. The last will happen if a column index is used more than once in 60 | the column specification. 61 | 62 | [nl] 63 | 64 | At least one [arg file] has to be specified. Use the string [const -] 65 | to cause the command to read its input from [const stdin]. This 66 | specification can be mixed with an arbitrary number of true file 67 | names, but itself used only once. 68 | 69 | [nl] 70 | [emph Example] for [arg colspec]: 71 | [example { 72 | 0,2-5,7-,6 73 | }] 74 | [nl] 75 | 76 | This removes column 1 from the input, and moves column 6 to the last 77 | position. 78 | } 79 | 80 | proc ::app-cut::help {topic} { 81 | variable help 82 | if {[info exists help($topic)]} {return $help($topic)} 83 | return {} 84 | } 85 | 86 | # ------------------------------------------------------ 87 | # Implementation of cmdline functionality. 88 | 89 | proc ::app-cut::run {argv} { 90 | set errstring "wrong#args: cut ?-sep char? ?-alternate? colspec file..." 91 | 92 | # ================================================== 93 | # Process arguments 94 | 95 | if {[llength $argv] < 2} {tools::usage $errstring} 96 | 97 | set sepChar , 98 | set alt 0 99 | while {[llength $argv]} { 100 | set err [cmdline::getopt argv {sep.arg alternate} opt arg] 101 | if {$err == 1} { 102 | switch -exact -- $opt { 103 | sep {set sepChar $arg} 104 | alternate {set alt 1} 105 | } 106 | } elseif {$err < 0} { 107 | tools::usage $errstring 108 | } else { 109 | # Non argument found, stop processing. 110 | break 111 | } 112 | } 113 | 114 | if {[llength $argv] < 2} {tools::usage $errstring} 115 | 116 | set colspec [split [lindex $argv 0] ,] 117 | ::optcsv::files [set files [lrange $argv 1 end]] $errstring 118 | ::optcsv::colspec colspec $errstring 119 | 120 | # ================================================== 121 | # Process csv input 122 | 123 | ::optcsv::foreach_record $sepChar $alt data $files { 124 | set dataOut [list] 125 | foreach i $colspec { 126 | foreach {f t} $i break 127 | eval [list lappend dataOut] [lrange $data $f $t] 128 | } 129 | puts stdout [::csv::join $dataOut $sepChar] 130 | } 131 | return 132 | } 133 | 134 | # ------------------------------------------------------ 135 | package provide app-cut 0.1 136 | -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/khim/es.msg: -------------------------------------------------------------------------------- 1 | # es.msg -- 2 | # 3 | # Spanish-language messages for KHIM 4 | # 5 | # Copyright (c) 2008 by Emiliano Gavilán. 6 | # Proofreading and corrections by Miguel Sofer. 7 | # 8 | # Refer to the file "license.terms" for the terms and conditions of 9 | # use and redistribution of this file, and a DISCLAIMER OF ALL WARRANTEES. 10 | # 11 | # $Id: es.msg,v 1.3 2008/05/30 02:00:19 kennykb Exp $ 12 | # $Source: /cvsroot/tcllib/tklib/modules/khim/es.msg,v $ 13 | # 14 | #---------------------------------------------------------------------- 15 | 16 | namespace eval ::khim { 17 | 18 | ::msgcat::mcset es HELPTEXT { 19 | 20 | Kevin's Hacky Input Method (KHIM) 21 | 22 | KHIM permite ingresar caracteres internacionales desde un teclado 23 | que no soporta esta funcionalidad. Funciona independientemente de 24 | cualquier método de entrada que su sistema operativo pueda proveer; 25 | su finalidad es permitirle ingresar caracteres en otros lenguajes, 26 | aun cuando no tenga control del mapeo de su teclado. 27 | 28 | Para usar KHIM, seleccione el diálogo de control de KHIM 29 | (la forma de lograr esto depende de su aplicación) y habilite 30 | el uso de KHIM seleccionando "Usar KHIM". También necesitará 31 | seleccionar una tecla que sea raramente usada y designarla como 32 | tecla "Componer" presionando el botón con la leyenda "Tecla Componer:" 33 | y luego la tecla que quiere asignar a esta función. Ésta tecla no 34 | debe ser la tecla designada como la tecla de composición de su 35 | teclado; dicha tecla seguirá invocando cualquier método de entrada 36 | que su sistema operativo provea. 37 | 38 | Una vez que KHIM esté habilitado, podrá ingresar caracteres 39 | internacionales en cualquier widget que este configurado para 40 | usar KHIM presionando la tecla designada como Componer seguida 41 | de una secuencia de dos teclas. La lista en el control de KHIM 42 | muestra todas las secuencias disponibles. Además, si presiona 43 | la tecla "Componer" dos veces, se mostrará un diálogo que le 44 | permitirá ingresar cualquier carácter arbitrario desde un mapa 45 | de caracteres Unicode. Dicho mapa puede navegarse utilizando 46 | el ratón o las teclas de dirección, y se puede seleccionar el 47 | carácter deseado con un doble click, la barra espaciadora o la 48 | tecla Return (Enter). 49 | 50 | Para definir una nueva secuencia para utilizar con la tecla 51 | "Componer", seleccione el control de KHIM, ingrese dos teclas en 52 | secuencia en la entrada "Secuencia de teclas", el carácter deseado 53 | en la entrada "Carácter", y luego presione la tecla "Cambiar". 54 | (Usted puede copiar y pegar dicho carácter desde otra aplicación, 55 | o presionar el botón "Unicode..." (o presione la tecla "Componer" 56 | dos veces) para seleccionar el carácter desde el mapa de los 57 | caracteres Unicode disponibles). Para borrar una secuencia, 58 | selecciónela de la lista y presione "Borrar". 59 | 60 | } 61 | 62 | ::msgcat::mcset es {SELECT COMPOSE KEY} [string map [list \n\t \n] { 63 | Por favor presione 64 | la tecla que desee 65 | usar como tecla 66 | "Componer". 67 | }] 68 | 69 | ::msgcat::mcset es {Apply} {Aplicar} 70 | 71 | ::msgcat::mcset es {Cancel} {Cancelar} 72 | 73 | ::msgcat::mcset es {Change} {Cambiar} 74 | 75 | ::msgcat::mcset es {Character} {Carácter} 76 | 77 | ::msgcat::mcset es {Compose Key} {Tecla Componer} 78 | 79 | ::msgcat::mcset es {Compose key:} {Tecla Componer:} 80 | 81 | ::msgcat::mcset es {Composed sequence must be two characters long} \ 82 | {La secuencia de composición debe ser de dos teclas} 83 | 84 | ::msgcat::mcset es {Delete} {Borrar} 85 | 86 | ::msgcat::mcset es {KHIM Help} {Ayuda de KHIM} 87 | 88 | ::msgcat::mcset es {Help...} {Ayuda...} 89 | 90 | ::msgcat::mcset es {Input key sequence} {Secuencia de teclas de entrada} 91 | 92 | ::msgcat::mcset es {Insert Character} {Insertar carácter} 93 | 94 | ::msgcat::mcset es {Invalid sequence} {Secuencia inválida} 95 | 96 | ::msgcat::mcset es {Key sequences} {Secuencias de teclas} 97 | 98 | ::msgcat::mcset es {KHIM Controls} {Controles de KHIM} 99 | 100 | ::msgcat::mcset es {OK} {Aceptar} 101 | 102 | ::msgcat::mcset es {Select code page:} {Seleccionar página de código:} 103 | 104 | ::msgcat::mcset es {Unicode...} {Unicode...} 105 | 106 | ::msgcat::mcset es {Use KHIM} {Usar KHIM} 107 | 108 | } -------------------------------------------------------------------------------- /apps/tkchat/tkchat.vfs/lib/tclxml3.1/xmldep.tcl: -------------------------------------------------------------------------------- 1 | # xmldep.tcl -- 2 | # 3 | # Find the dependencies in an XML document. 4 | # Supports external entities and XSL include/import. 5 | # 6 | # TODO: 7 | # XInclude 8 | # 9 | # Copyright (c) 2001-2003 Zveno Pty Ltd 10 | # http://www.zveno.com/ 11 | # 12 | # See the file "LICENSE" in this distribution for information on usage and 13 | # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. 14 | # 15 | # $Id: xmldep.tcl,v 1.3 2003/12/09 04:43:15 balls Exp $ 16 | 17 | package require xml 18 | 19 | package provide xml::dep 1.0 20 | 21 | namespace eval xml::dep { 22 | namespace export depend 23 | 24 | variable extEntities 25 | array set extEntities {} 26 | 27 | variable XSLTNS http://www.w3.org/1999/XSL/Transform 28 | } 29 | 30 | # xml::dep::depend -- 31 | # 32 | # Find the resources which an XML document 33 | # depends on. The document is parsed 34 | # sequentially, rather than using DOM, for efficiency. 35 | # 36 | # TODO: 37 | # Asynchronous parsing. 38 | # 39 | # Arguments: 40 | # xml XML document entity 41 | # args configuration options 42 | # 43 | # Results: 44 | # Returns list of resource (system) identifiers 45 | 46 | proc xml::dep::depend {xml args} { 47 | variable resources 48 | variable entities 49 | 50 | set resources {} 51 | catch {unset entities} 52 | array set entities {} 53 | 54 | set p [xml::parser \ 55 | -elementstartcommand [namespace code ElStart] \ 56 | -doctypecommand [namespace code DocTypeDecl] \ 57 | -entitydeclcommand [namespace code EntityDecl] \ 58 | -entityreferencecommand [namespace code EntityReference] \ 59 | -validate 1 \ 60 | ] 61 | if {[llength $args]} { 62 | eval [list $p] configure $args 63 | } 64 | $p parse $xml 65 | 66 | return $resources 67 | } 68 | 69 | # xml::dep::ElStart -- 70 | # 71 | # Process start element 72 | # 73 | # Arguments: 74 | # name tag name 75 | # atlist attribute list 76 | # args options 77 | # 78 | # Results: 79 | # May add to resources list 80 | 81 | proc xml::dep::ElStart {name atlist args} { 82 | variable XSLTNS 83 | variable resources 84 | 85 | array set opts { 86 | -namespace {} 87 | } 88 | array set opts $args 89 | 90 | switch -- $opts(-namespace) \ 91 | $XSLTNS { 92 | switch $name { 93 | import - 94 | include { 95 | array set attr { 96 | href {} 97 | } 98 | array set attr $atlist 99 | 100 | if {[string length $attr(href)]} { 101 | if {[lsearch $resources $attr(href)] < 0} { 102 | lappend resources $attr(href) 103 | } 104 | } 105 | 106 | } 107 | } 108 | } 109 | } 110 | 111 | # xml::dep::DocTypeDecl -- 112 | # 113 | # Process Document Type Declaration 114 | # 115 | # Arguments: 116 | # name Document element 117 | # pubid Public identifier 118 | # sysid System identifier 119 | # dtd Internal DTD Subset 120 | # 121 | # Results: 122 | # Resource added to list 123 | 124 | proc xml::dep::DocTypeDecl {name pubid sysid dtd} { 125 | variable resources 126 | 127 | puts stderr [list DocTypeDecl $name $pubid $sysid dtd] 128 | 129 | if {[string length $sysid] && \ 130 | [lsearch $resources $sysid] < 0} { 131 | lappend resources $sysid 132 | } 133 | 134 | return {} 135 | } 136 | 137 | # xml::dep::EntityDecl -- 138 | # 139 | # Process entity declaration, looking for external entity 140 | # 141 | # Arguments: 142 | # name entity name 143 | # sysid system identifier 144 | # pubid public identifier or repl. text 145 | # 146 | # Results: 147 | # Store external entity info for later reference 148 | 149 | proc xml::dep::EntityDecl {name sysid pubid} { 150 | variable extEntities 151 | 152 | puts stderr [list EntityDecl $name $sysid $pubid] 153 | 154 | set extEntities($name) $sysid 155 | } 156 | 157 | # xml::dep::EntityReference -- 158 | # 159 | # Process entity reference 160 | # 161 | # Arguments: 162 | # name entity name 163 | # 164 | # Results: 165 | # May add to resources list 166 | 167 | proc xml::dep::EntityReference name { 168 | variable extEntities 169 | variable resources 170 | 171 | puts stderr [list EntityReference $name] 172 | 173 | if {[info exists extEntities($name)] && \ 174 | [lsearch $resources $extEntities($name)] < 0} { 175 | lappend resources $extEntities($name) 176 | } 177 | 178 | } 179 | 180 | --------------------------------------------------------------------------------