'''Purpose:''' Provide a "focal point" for people searching for Tcl extensions and applications '''Policy:''' If you want to add an extension or an application, simply select the proper category, add the name and a short description and include a link as to where it can be found. ([AM], I created this page, 26 September 2006, because I realised that the Wiki is, with all its flaws, disorder and general unstructuredness a wonderful place that everybody can contribute to. It is very easy to add or correct information, the infrastructure to do this is all there. So, this page may not be the best repository the Tcl community can wish for, it is at least an easy one to maintain!) ---- **Other repositories** * The tcllib repository (see [http://core.tcl.tk/doc/trunk/embedded/www/toc.html] or [http://wiki.tcl.tk/12101]) contains many pure tcl packages that can be downloaded [http://core.tcl.tk/tcllib/] as a single multipack. * The French Wiki has an overview of Tcl/Tk applications at http://wfr.tcl.tk/... * The Wiki page [Applications in Tcl and Tcl/Tk] provides a similar overview in English * The Wiki page [Applications using Tile] demonstrates the look and feel of Tile widgets (see also the Widgets category) * Gutter: http://www.flightlab.com/~joe/gutter/ (see also [GUTTER]) * [Cantcl] * [Tcl-Pkg] is a browsing/downloading tool for Tcl apps and extensions. * STAN, the [Simple Tcl Archive Network] * [Procplace] * (Other repositories, working, in progress or at least still available) * [TEApot] -> http://teapot.activestate.com (built into ActiveTcl) * Can be download many and varied packages from http://tcltk.co.kr/forum/17 ---- **DATABASES** * [Tdbc] - package included in Tcl 8.6 that provides a generic database layer designed to interact with vendor specific database drivers * [Metakit] - Embedded database system, emphasis on dynamic definition of tables (views). No administration required. * [SQLite] -Lightweight, embedded database system, ACID-proof, supports SQL. * [tclodbc] - tcl interface to ODBC databases (see [ODBC] for more packages) * [mysqltcl] - Mysqltcl is a simple API for Mysql-Database and Tcl scripting language. * The pgtcl [http://pgfoundry.org/projects/pgtcl] package is a Tcl client interface to PostgreSQL. * The Oratcl [http://oratcl.sourceforge.net/] package is a dynamic extension of the Tcl language that integrates Oracle OCI calls into a set of Tcl commands that allow Oracle access via Tcl. (see also [Oratcl]) ---- **DEBUGGING TOOLS** * [RamDebugger] - ... * [Komodo] - ... * [Tkcon] - an interactive console for [Tk]. Can be embedded into an application. * [Tuba] * [MyTcl] - http://mytcl.tcltk.co.kr ---- **DOCUMENTATION AND TUTORIALS** * [Tcl tutor] - A GUI program that provides Tcl lessons at three levels * The official Tcl tutorial - derived from Tcltutor [tcltutorial] * Tcl manual pages - Detailed documentation of the various Tcl commands [http://www.tcl.tk/man/tcl8.6/TclCmd/contents.htm] * Tk manual pages - Detailed documentation of the various Tk commands [http://www.tcl.tk/man/tcl8.6/TkCmd/contents.htm] ---- **EDITORS AND INTEGRATED DEVELOPMENT ENVIRONMENTS (IDE)** * [Alphatk] - ... * [ASED] - ... * [CrowTDE] - An open-source IDE for Tcl, written in Tcl. * [eZdit] - ... * [Komodo] - ActiveState's IDE for Tcl and other dynamic languages - http://www.activestate.com * [Tloona] - ... * [MyTcl] - MyTcl IDE for Tcl - http://mytcl.tcltk.co.kr ---- **GRAPHICS** * [Img] - Extension to read and store pictures in various file formats * [Plplot] - Library for creating scientific plots (xy graphs, contour maps in 2D and 3D, ...). Output to various file formats or screen, bindings to numerous programming languages * [TclMagick] - Tcl front-end for the ImageMagick package, so you can create new pictures from existing ones, add text or merge pictures etc. * [Tk3D] - Tcl/Tk front-end for the OpenGL graphics libraries. Makes it possible to define and render three-dimensional pictures. * [Tklib] module ''Plotchart'' - Tcl-only package for presenting data in the form of xy graphs, histograms and contour maps * [Tkzinc] - Alternative to the canvas widget, 2D visualisation of numerous objects, uses OpenGL if available. * [3dcanvas] - Is a widget that implements a three dimensional space in which structured graphics can be rendered. * [TclRFB] (see [http://tclrfb.sourceforge.net/]) is a pure-Tcl implementation of the Remote Framebuffer (RFB) protocol that is used in the Virtual Network Computing (VNC) remote desktop application. * TkOGL [http://hct.ece.ubc.ca/research/tkogl/tkogl/index.html] is a package extension to the Tcl scripting language that enables a user to utilize OpenGL. * [Vtk] is a powerful engine for scientific visualization. * The [GD] Graphic Library contains bindings for Tcl and can be used to create gif, jpeg and png files on the fly. * [Tcl3D] enables the 3D functionality of OpenGL and other 3D libraries at the Tcl scripting level. ---- **MATHEMATICS AND NUMERICAL ANALYSIS** * [LA] - Classical implementation of linear algebra in Tcl * [NAP] - "N-dimensional array processing", lets you manipulate large amounts of data with simple commands * [Tcllib] module ''math'' - Implementation of various mathematical packages in Tcl (solving differential equations, geometry, linear algebra, special functions) ---- **OBJECT-ORIENTED PROGRAMMING** * [TclOO] - part of Tcl 8.6 and designed to be an OO framework usable, but also able to be used by alternative OO extensions. * [incr Tcl] - Is to Tcl what C++ is to C. Now included in the Tcl 8.6 source distribution * [Snit] - A unique pure-Tcl OO system, that does not rely on inheritance but rather on delegation. * [Stooop] - A pure-Tcl OO system very close to C++ in design. * [Tao] - A pure-Tcl OO system that uses sqlite for metadata storage. Designed for reusability of code. * [XOTcl] - An OO system based on MIT [OTcl] very flexible, with mixins, filters, multiple-inheritance... ---- **OFFICE AUTOMATION** * [tcom] - Using COM objects via Tcl - useful for reading and writing MS Excel sheets for instance * [tcluno] - Tcl connection to Open Office ---- **SYSTEM ADMINISTRATION** * [Expect] - ''The'' Tcl application, allows you to automate interactive remote console (shell) tasks. * [Scotty] - ... * [TclUDP] - Allows the use of UDP sockets (the core only provides TCP/IP) * [MOOMPS] - Monitoring software ---- **TCL AND OTHER LANGUAGES** * [Critcl] - Extending Tcl on the fly using C functions * Ftcl - [Combining Fortran and Tcl in one program] * [Hecl] - A language derived from Tcl, implemented in Java, for cellular phones * [Jacl] - Re-implementation of Tcl in Java * [Jim] - Lean re-implementation of Tcl, with a very small memory foot-print * [TclBlend] - Bridge between Tcl and Java ---- **WIDGETS** * [BWidget] - Collection of widgets implemented purely in Tcl/Tk * [GridPlus2] - Layout and extensions to grid; many useful features. Good documentation. * [Tklib] module [ctext] - Text editing widget with facilities for syntax highlighting * [Tklib] module [plotchart] - plots and charts * [Tklib] module [tablelist] - multilist box widget for tables * [Tklib] module [tkpiechart] * [Tklib] module [tooltip] - balloon help widgets * [Tklib] module [widget] - megawidgets by Jeff Hobbs. * [IWidgets] - Widgets based on the [[incr Tcl]] and [[incr Tk]] extensions * [Tablelist] - Display and manipulate data in a tabular form (also part of Tklib) * [TLC] - Yet another collection of widgets * [Ttk] - Implementation of the Tk theming engine to provide native look and feel widgets, now included in Tk 8.5 * [BLT] - Collection of widgets * [Tix] - Collection of widgets * [mkWidgets] - Collection of widgets ---- **WRAPPERS FOR EASY DEPLOYMENT** * [Freewrap] - An Open-source wrapper/stand-alone executable. * [Tclkit] - Complete stand-alone Tcl/Tk executable with [Incr Tcl]. Can wrap applications into [Starkit]s or [Starpack]s. ---- Still more to come And please: correct it, expand it whenever you feel like it! [SYStems] mmm ... no. For one we already have the [gutter] [http://www.flightlab.com/~joe/gutter/] if any work is to be done, I recommend it be done to improve our [gutter] make it work like debian's apt-get or Perl's CPAN (i.e. work on the command line interface, or the [Tk] interface ;)) [AM] This page is not meant to ''replace'' gutter - not at all! It is just that due to the lack of an obvious central repository people can not find what they are looking for. This page is merely meant as a guide. [SYStems] The [gutter] (if it succeed) should be the ''Obvious'' destination to look (and add) for packages & to find information about packages. Plus a single wiki page just isn't practical or pretty. Look at the ask and it shall be give pages, I think they are horrible, a wiki can't replace a forum, a wiki can't replace a package repository either. ---- I'm rather uncertain what the OP and others want on this page. In the past, there have been, and continue to be, pages with long lists of tcl extensions and applications. Why start yet another one? I can understand why one might want to have one page listing the various repositories - but why start a parallel page on this wiki for this sort of thing? ---- [DKF]: '''A PACKAGE FETCHING SCRIPT''' Based on my recent rant [[''?'']] on comp.lang.tcl, here's a script that implements the sort of thing which I'm really looking for on the client side. Note that it uses a fair number of Tcl 8.5 features; this is deliberate. ====== package require Tcl 8.5 package require http 2 namespace eval pkgutil { namespace export "\[a-z]*" namespace ensemble create variable repository http://repository.tcl.tk/packages proc listPackages {{pattern *}} { variable repository # We pass the pattern, but the repository MAY ignore it set token [http::geturl $repository?[http::formatQuery pat $pattern]] if {![string match 2?? [http::ncode $token]]} { set msg [join [lrange [split [http::code $token]] 2 end]] http::cleanup $token return -code error $msg } set result {} foreach pkgName [lsort [split [http::data $token]]] { if {[string match $pattern $pkgName]} { lappend result $pkgName } } http::cleanup $token return $result } proc listVersions {pkgName {pattern *}} { variable repository # We pass the pattern, but the repository MAY ignore it set token [http::geturl \ $repository/$pkgName?[http::formatQuery pat $pattern]] if {![string match 2?? [http::ncode $token]]} { set msg [join [lrange [split [http::code $token]] 2 end]] http::cleanup $token return -code error $msg } set result {} foreach version [lsort [split [http::data $token]]] { if {[string match $pattern $version]} { lappend result $version } } http::cleanup $token return $result } proc listPlatforms {pkgName version {pattern *}} { variable repository # We pass the pattern, but the repository MAY ignore it set token [http::geturl \ $repository/$pkgName/$version?[http::formatQuery pat $pattern]] if {![string match 2?? [http::ncode $token]]} { set msg [join [lrange [split [http::code $token]] 2 end]] http::cleanup $token return -code error $msg } set result {} foreach platform [lsort [split [http::data $token]]] { if {[string match $pattern $platform]} { lappend result $platform } } http::cleanup $token return $result } proc fetch {pkgName version platform {targetFilename ~}} { if {[file isdirectory $targetFilename]} { set targetFilename [file join $targetFilename $pkgName-$version.tm] } set out [open $targetFilename wb] set url $repository/$pkgName/$version/$platform/$pkgName-$version.tm for {set i 0} {$i<5} {incr i} { set token [http::geturl $url -binary 1 -channel $out $url] if {![string match 3?? [http::ncode $token]]} { break } # Follow redirects a few times (the loop around this) set url [dict get [array get $token] meta Location] http::cleanup $token } if {![string match 2?? [http::ncode $token]]} { set msg [join [lrange [split [http::code $token]] 2 end]] http::cleanup $token return -code error $msg } http::cleanup $token close $out } } package provide pkgutil 0.1 ====== [SC] This sort of funtionality has been available in the [CANTCL] code since the start, eg: ====== # installer::install_extension -- # # Download a zip file contianing a tcl extension from the given # uri and install it in the current tcl installation. # # Arguments: # uri -- the location of the zip file # Results: # The file is downloaded, installed and the local copy is deleted ====== This is in the installer package, you can still browse the code via cantcl at http://www.ics.mq.edu.au/~cassidy/cgi-bin/cantcl/package/installer-0.6/tcl along with a bunch of other utilities. The CANTCL [http://www.ics.mq.edu.au/~cassidy/cgi-bin/cantcl/package/cantcl-0.5/] package manages the server side of this. ---- **EXTENSION SOURCES 20070907** * [sdx].kit fetch http://www.equi4.com/pub/sk/sdx.kit * [tclvfs%|%vfs]-1.3 fetch http://www.equi4.com/pub/tk/tars/vfs.tar.gz * [vlerq]-4.1 fetch http://www.equi4.com/pub/tk/tars/vqtcl.tgz * [zlib]-1.2.3 fetch http://www.equi4.com/pub/tk/tars/zlib.tar.gz * [thread]-2.6.5 cvs tcl.cvs.sourceforge.net:/cvsroot/tcl -r thread-2-6-5 thread * [bwidget]-1.8.0 cvs tcllib.cvs.sourceforge.net:/cvsroot/tcllib -r bwidget-1_8_0 bwidget * [img]-1.3 cvs tkimg.cvs.sourceforge.net:/cvsroot/tkimg * [itcl]-3.4 itk-3.4 cvs incrtcl.cvs.sourceforge.net:/cvsroot/incrtcl incrTcl * [iwidgets]-4.0.2 (require itk-3.4) cvs incrtcl.cvs.sourceforge.net:/cvsroot/incrtcl iwidgets * [memchan]-2.2.1 cvs memchan.cvs.sourceforge.net:/cvsroot/memchan * [mentry]-3.1 (require wcb-3.1) fetch http://www.nemethi.de/mentry/mentry3.1.tar.gz * [mk4tcl]-2.4.9.7 fetch http://www.equi4.com/pub/mk/metakit-2.4.9.7.tar.gz * [ral]-0.8.4 fetch http://mesh.dl.sourceforge.net/sourceforge/tclral/tclral-0.8.4.tar.gz * [snack]-2.2.10 fetch http://www.speech.kth.se/snack/dist/snack2.2.10.tar.gz * [sqlite]-3.4.1 fetch http://www.sqlite.org/sqlite-3_4_1-tea.tar.gz * [tablelist]-4.8 fetch http://www.nemethi.de/tablelist/tablelist4.8.tar.gz * [tcllib]-1.9 cvs tcllib.cvs.sourceforge.net:/cvsroot/tcllib -r tcllib-1-9 tcllib * [tklib]-0.4.1 cvs tcllib.cvs.sourceforge.net:/cvsroot/tcllib -r tklib-0-4-1 tklib * [tclx]-8.4 cvs tclx.cvs.sourceforge.net:/cvsroot/tclx * [tdom]-0.8.2 fetch http://www.tdom.org/files/tDOM-0.8.2.tgz * [tkhtml]-3.0 if {[[catch {Source cvs tkhtml.tcl.tk:/tkhtml htmlwidget} myMsg]} { * [tktable]-2.9 cvs tktable.cvs.sourceforge.net:/cvsroot/tktable * [trofs]-0.4.4 fetch http://math.nist.gov/~DPorter/tcltk/trofs/trofs0.4.4.tar.gz * [udp]-1.0.9 cvs tcludp.cvs.sourceforge.net:/cvsroot/tcludp * [wcb]-3.1 fetch http://www.nemethi.de/wcb/wcb3.1.tar.gz * [xotcl]-1.5.3 fetch http://media.wu-wien.ac.at/download/xotcl-1.5.3.tar.gz [LV] 2009-Sep-18 Note that since the above list is manually maintained, some of the versions mentioned may not be the latest available - or for that matter, may not be available at all, in the case of the equi4.com URLs. <> Repository