[Sciviews-commits] r418 - komodo/SciViews-K/content/js pkg/tcltk2 pkg/tcltk2/R pkg/tcltk2/inst/gui pkg/tcltk2/inst/tklibs pkg/tcltk2/inst/tklibs/tablelist5.5 pkg/tcltk2/inst/tklibs/tablelist5.5/demos pkg/tcltk2/inst/tklibs/tablelist5.5/doc pkg/tcltk2/inst/tklibs/tablelist5.5/scripts pkg/tcltk2/inst/tklibs/ttktheme_clearlooks pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks pkg/tcltk2/inst/tklibs/ttktheme_radiance pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance pkg/tcltk2/inst/tklibs/widget3.0 pkg/tcltk2/man

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Mon Jan 9 22:08:41 CET 2012


Author: phgrosjean
Date: 2012-01-09 22:08:40 +0100 (Mon, 09 Jan 2012)
New Revision: 418

Added:
   pkg/tcltk2/R/tk2methods.R
   pkg/tcltk2/inst/gui/SciViews.gif
   pkg/tcltk2/inst/tklibs/scrolledWidget.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/
   pkg/tcltk2/inst/tklibs/tablelist5.5/CHANGES.txt
   pkg/tcltk2/inst/tklibs/tablelist5.5/COPYRIGHT.txt
   pkg/tcltk2/inst/tklibs/tablelist5.5/README.txt
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/browse.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/browseTree.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/browseTree_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/browse_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/bwidget.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/bwidget_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/checked.gif
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/clsdFolder.gif
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/comp.xbm
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/config.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/config_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/dirViewer.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/dirViewer_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/embeddedWindows.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/embeddedWindows_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/file.gif
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/images.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/iwidgets.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/iwidgets_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/leaf.xbm
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/miscWidgets.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/miscWidgets_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/open.gif
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/openFolder.gif
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/option.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/option_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/styles.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/styles_tile.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/tileWidgets.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/demos/unchecked.gif
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/ambiance.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/aqua.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/arrowStyles.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/baghira.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/browse.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/browseTree.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/bwidget.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/config.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/dirViewer.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/dust.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/dustSand.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/embeddedWindows.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/embeddedWindows_tile.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/gtk.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/index.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/klearlooks.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/newWave.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/oxygen1.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/oxygen2.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/phase.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/plastik.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/plastique.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/radiance.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/styles.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelist.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistBWidget.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistBinding.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistColSort.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistCombobox.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistIwidgets.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistMentry.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistThemes.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistTile.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistTkCore.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tablelistWidget.html
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/tileWidgets.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/vistaAero.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/vistaClassic.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/win7Aero.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/win7Classic.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/winnative.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/winxpBlue.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/winxpOlive.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/doc/winxpSilver.png
   pkg/tcltk2/inst/tklibs/tablelist5.5/pkgIndex.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/mwutil.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/repair.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tablelistBind.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tablelistConfig.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tablelistEdit.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tablelistImages.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tablelistMove.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tablelistSort.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tablelistThemes.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tablelistUtil.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tablelistWidget.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/scripts/tclIndex
   pkg/tcltk2/inst/tklibs/tablelist5.5/tablelist.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/tablelistPublic.tcl
   pkg/tcltk2/inst/tklibs/tablelist5.5/tablelist_tile.tcl
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowdown-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowdown-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowdown-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowdown-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowleft-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowleft-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowleft-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowleft-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowright-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowright-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowright-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowright-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowup-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowup-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowup-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/arrowup-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/blank.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/button-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/button-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/button-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/button-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/button-pa.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/check-ac.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/check-au.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/check-dc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/check-du.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/check-nc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/check-nu.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/check-pc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/check-pu.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/combo-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/combo-ra.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/combo-rd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/combo-rf.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/combo-rn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/combo-rp.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/comboarrow-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/comboarrow-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/comboarrow-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/comboarrow-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/progress-h.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/progress-v.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/radio-ac.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/radio-au.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/radio-dc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/radio-du.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/radio-nc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/radio-nu.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/radio-pc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/radio-pu.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sbthumb-ha.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sbthumb-hd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sbthumb-hn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sbthumb-hp.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sbthumb-va.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sbthumb-vd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sbthumb-vn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sbthumb-vp.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/scale-ha.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/scale-hd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/scale-hn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/scale-va.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/scale-vd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/scale-vn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/scaletrough-h.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/scaletrough-v.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sep-h.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sep-v.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/sizegrip.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/tab-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/tab-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/toolbutton-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/toolbutton-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/toolbutton-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/toolbutton-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/toolbutton-pa.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/tree-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/tree-h.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/tree-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks/tree-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks8.4.tcl
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/clearlooks8.5.tcl
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/convert_imgs.sh
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/create_imgs.py
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/pkgIndex.tcl
   pkg/tcltk2/inst/tklibs/ttktheme_clearlooks/readme.txt
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/pkgIndex.tcl
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/.DS_Store
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowdown-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowdown-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowdown-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowdown-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowleft-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowleft-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowleft-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowleft-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowright-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowright-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowright-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowright-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowup-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowup-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowup-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/arrowup-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/blank.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/button-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/button-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/button-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/button-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/button-s.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/button-sa.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/check-dc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/check-du.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/check-nc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/check-nu.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/combo-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/combo-ra.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/combo-rd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/combo-rf.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/combo-rn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/combo-rp.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/comboarrow-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/comboarrow-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/comboarrow-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/comboarrow-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/progress-h.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/progress-v.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/radio-dc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/radio-du.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/radio-nc.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/radio-nu.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sbthumb-ha.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sbthumb-hd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sbthumb-hn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sbthumb-hp.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sbthumb-va.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sbthumb-vd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sbthumb-vn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sbthumb-vp.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/scale-ha.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/scale-hd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/scale-hn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/scale-va.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/scale-vd.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/scale-vn.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/scaletrough-h.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/scaletrough-v.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sep-h.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sep-v.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/sizegrip.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/tab-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/tab-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/toolbutton-a.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/toolbutton-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/toolbutton-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/toolbutton-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/toolbutton-pa.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/tree-d.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/tree-h.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/tree-n.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance/tree-p.gif
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance8.4.tcl
   pkg/tcltk2/inst/tklibs/ttktheme_radiance/radiance8.5.tcl
   pkg/tcltk2/man/tk2methods.Rd
Removed:
   pkg/tcltk2/inst/tklibs/tablelist4.10/
Modified:
   komodo/SciViews-K/content/js/rconsole.js
   pkg/tcltk2/DESCRIPTION
   pkg/tcltk2/NAMESPACE
   pkg/tcltk2/NEWS
   pkg/tcltk2/R/tcltk2-Internal.R
   pkg/tcltk2/R/tk2commands.R
   pkg/tcltk2/R/tk2tip.R
   pkg/tcltk2/R/tk2widgets.R
   pkg/tcltk2/inst/tklibs/widget3.0/example.R
   pkg/tcltk2/man/tcltk2-package.Rd
   pkg/tcltk2/man/tk2commands.Rd
   pkg/tcltk2/man/tk2tip.Rd
   pkg/tcltk2/man/tk2widgets.Rd
Log:
Many changes to the tcltk2 package: addition of two themes (clearlooks and radiance), modification of tk2listbox() and tk2label(), and implementation of many methods for tk2widget objects.

Modified: komodo/SciViews-K/content/js/rconsole.js
===================================================================
--- komodo/SciViews-K/content/js/rconsole.js	2011-12-29 19:46:37 UTC (rev 417)
+++ komodo/SciViews-K/content/js/rconsole.js	2012-01-09 21:08:40 UTC (rev 418)
@@ -81,6 +81,7 @@
             }
             _ClearUI();
     
+            // TODO: shouldn't we eliminate this???
             var treeWidget = document.getElementById("rconsole-tree");
             var boxObject = treeWidget.treeBoxObject
                 .QueryInterface(Components.interfaces.nsITreeBoxObject);
@@ -95,7 +96,7 @@
             _gRTerminalView.initWithTerminal(_gRTerminalHandler);
             boxObject.view = _gRTerminalHandler;
     
-            // This does not work!? cf. window.frameElement reproted as null
+            // This does not work!? cf. window.frameElement reported as null
             //["mousedown", "focus"].forEach(function(eventname) {
             //        window.frameElement.addEventListener(eventname, function(event) {
             //        if (event.originalTarget == event.target) {
@@ -109,6 +110,10 @@
             // Also make sure to trigger initialisation of R Output scimoz
             // by appending the prompt to it
             sv.cmdout.append(":> ", false);
+            // Observe keypress event on the R Console panel
+            document.getElementById("rconsole-scintilla")
+                .addEventListener('keypress', sv.rconsole.rconsoleOnKeyPress,
+                true);            
             // And observe keypress events on the R Output panel
             document.getElementById("rconsole-scintilla2")
                 .addEventListener('keypress', sv.rconsole.routputOnKeyPress,
@@ -144,13 +149,13 @@
     
     // Start a terminal session with R in the console with the given command.
     // This raises an exception if the R console window is currently busy.
-    // No! No exception, replaced by simple dispaly of the R Console tab
+    // No! No exception, replaced by simple display of the R Console tab
     //    "command" is the command being used to start R (note that this is the
     //    command string *for display* which might be slight different
     //    -- passwords obscured -- than the actual command)
     //    "cwd" is the directory in which the command is being run
     //    "clearContent" is a boolean indicating whether to clear the
-    //      R console window content (by default "true").
+    //    R console window content (by default "true").
     this.startSession = function RConsole_StartSession(command, cwd,
         clearContent /* =true */)
     {
@@ -336,15 +341,15 @@
         //var scimoz = document.getElementById("runoutput-scintilla").scimoz;
         var scimoz = _gRTerminalView;
         var eolChar = ["\r\n", "\n", "\r"][scimoz.eOLMode];
-        if (newline || newline === undefined) str += eolChar;
-        //var str_bytelength = ko.stringutils.bytelength(str);
+        if (newline || newline === undefined) command += eolChar;
+        //var cmd_bytelength = ko.stringutils.bytelength(command);
         //var readOnly = scimoz.readOnly;
         try {
         //    scimoz.readOnly = false;
         //    scimoz.documentEnd()
             // TODO: elliminate current line being edited
             //TODO: code here!!!
-        //    scimoz.appendText(str_bytelength, str);
+        //    scimoz.appendText(cmd_bytelength, command);
         } finally {
         //    scimoz.readOnly = readOnly;
         }
@@ -418,8 +423,30 @@
     
     window.addEventListener("focus", this.onFocus, false);
     
+    // This is used to avoid double printing of R commands: erase current line
+    // before sending it to R...
+    this.rconsoleOnKeyPress = function (event) {
+        try {
+        	// TODO: implement the function that erase the command
+            if (event.keyCode == 13) {
+                // TODO: what am I supposed to do here???
+            }
+            
+            // This does not work because another event is dealing with this
+            // case differently
+            //var str = String.fromCharCode(event.charCode);
+        	//if (str.length && !event.ctrlKey &&
+            //    !event.altKey && !event.metaKey) {
+        	//	var editor = ko.views.manager.currentView;
+            //    editor.setFocus();
+        	//	editor.scimoz.replaceSel(str);
+        	//}
+        } catch(e) { }
+    }
+    
     // Since R Output panel is read-only, redirect any key typed there to the
     // current editor buffer
+    // TODO: shouldn't we redirect to the R console instead???
     // Note: the event that triggers this function is placed in
     // this.initialize(), otherwise, it does not work!
     this.routputOnKeyPress = function (event) {

Modified: pkg/tcltk2/DESCRIPTION
===================================================================
--- pkg/tcltk2/DESCRIPTION	2011-12-29 19:46:37 UTC (rev 417)
+++ pkg/tcltk2/DESCRIPTION	2012-01-09 21:08:40 UTC (rev 418)
@@ -7,8 +7,8 @@
 Description: A series of additional Tcl commands and Tk widgets with style
   and various functions (under Windows: DDE exchange, access to the
   registry and icon manipulation) to supplement the tcltk package
-Version: 1.1-6
-Date: 2011-10-19
+Version: 1.2-0
+Date: 2012-01-07
 Author: Philippe Grosjean
 Maintainer: Philippe Grosjean <phgrosjean at sciviews.org>
 License: file LICENSE

Modified: pkg/tcltk2/NAMESPACE
===================================================================
--- pkg/tcltk2/NAMESPACE	2011-12-29 19:46:37 UTC (rev 417)
+++ pkg/tcltk2/NAMESPACE	2012-01-09 21:08:40 UTC (rev 418)
@@ -91,6 +91,60 @@
        tk2font.set,
        tk2font.setstyle,
        getLanguage,
-       setLanguage)
+       setLanguage,
+       tk2style,
+       tk2dataList,
+       tk2configList,
+       tip,
+       "tip<-",
+       tk2cfglist,
+       state,
+       label,
+       "label<-",
+       tag,
+       "tag<-",
+       disabled,
+       "disabled<-",
+       values,
+       "values<-",
+       value,
+       "value<-",
+       selection,
+       "selection<-",
+       visibleItem,
+       size,
+       config,
+       "config<-")
 
 S3method(print, tclTask)
+S3method(tip, tk2widget)
+S3method("tip<-", tk2widget)
+S3method(print, tk2widget)
+S3method(print, tk2cfglist)
+S3method(state, tk2widget)
+S3method(label, tk2widget)
+S3method("label<-", tk2widget)
+S3method(tag, tk2widget)
+S3method("tag<-", tk2widget)
+S3method(disabled, tk2widget)
+S3method("disabled<-", tk2widget)
+S3method(values, tk2widget)
+S3method(values, tk2listbox)
+S3method("values<-", tk2widget)
+S3method("values<-", tk2listbox)
+S3method(value, tk2widget)
+S3method(value, tk2listbox)
+S3method("value<-", tk2widget)
+S3method("value<-", tk2listbox)
+S3method(selection, tk2widget)
+S3method(selection, tk2listbox)
+S3method("selection<-", tk2widget)
+S3method("selection<-", tk2listbox)
+S3method(visibleItem, tk2widget)
+S3method(visibleItem, tk2listbox)
+S3method(size, tk2widget)
+S3method(size, tk2listbox)
+S3method(config, tk2widget)
+S3method(config, tk2label)
+S3method("config<-", tk2widget)
+S3method("config<-", tk2label)

Modified: pkg/tcltk2/NEWS
===================================================================
--- pkg/tcltk2/NEWS	2011-12-29 19:46:37 UTC (rev 417)
+++ pkg/tcltk2/NEWS	2012-01-09 21:08:40 UTC (rev 418)
@@ -1,5 +1,26 @@
 = tcltk2 news
 
+== Version 1.2-0
+
+* Clearlooks ttk theme added and made default theme under Linux. More modern
+  look&feel for ttk widgets under Linux!
+  
+* Radiance ttk theme created and added. This matches ambiance and radiance
+  themes under Ubuntu 11.x. This is the default theme used in Ubuntu.
+  
+* The tk widget tablelist is updated to version 5.5.
+
+* tk2listbox() is completelly reworked to provide (autohide) scrollbars,
+  integration with the tk2theme() and easier filling of its content.
+
+* tk2label is now fully implemented.
+
+* Many methods for tk2widget and tk2cfglist objects are now provided.
+
+* tk2style(), tk2dataList() and tk2configList() provide info on style, config
+  and data associated with a tk2widget.
+
+
 == Version 1.1-6
 
 * When setting options(scipen = -5) or lower, is.tk() returned FALSE, even if

Modified: pkg/tcltk2/R/tcltk2-Internal.R
===================================================================
--- pkg/tcltk2/R/tcltk2-Internal.R	2011-12-29 19:46:37 UTC (rev 417)
+++ pkg/tcltk2/R/tcltk2-Internal.R	2012-01-09 21:08:40 UTC (rev 418)
@@ -1,9 +1,5 @@
 ### tcltk2-Internal.R - Hidden functions for tcltk2
 ### Copyright (c), Philippe Grosjean (phgrosjean at sciviews.org)
-###
-### TODO:
-### - Rework the tile stuff
-### - .onUnload() function (unload DLLs etc. but there are no DLLs any more!?)
 
 .onLoad <- function(libname, pkgname) {
 	libdir <- file.path(libname, pkgname, "tklibs")
@@ -18,16 +14,6 @@
 		    tcl("lappend", "::auto_path", path)
 	}
     res <- addTclPath(libdir)	# extend the Tcl/Tk path
-### TODO: add path to bin!
-### TODO: get windowing system with .Tcl("tk windowingsystem")
-    ## Yes, .Platform$OS == "unix" in Mac. However, perhaps you're not
-	## interested in the OS type, though, but you're interested  in  the type
-	## of GUI. .Platform$GUI which is "AQUA" if you run R in the usual
-	## graphical UI window, but "X11" if you run R in X11 terminal or bash
-	## terminal window (and these really are different beasts GUI-wise).
-	## Further, .Platform$pkgType == "mac.binary" in CRAN releases of Mac R
-	## (but may be different if users have built R from the source).
-	## Function install.packages() uses .Platform$pkgType to detect the platform.
 
     ## Make sure that Tcl/Tk locale is the same one as current R locale
 	lang <- getLanguage()
@@ -37,12 +23,18 @@
 	}
 
     if (is.tk()) {
-		## Here is how we could install the supplementary material in Tcl
-		##tclRequire("combobox")    		# Version 2.3
-		##tclRequire("choosefont")       # Version 0.2
+		## Here is how we could install the supplementary material in Tcl/Tk
+	
+		## This is for a better management of scrollbars in listbox, text, canvas
+		tclRequire("autoscroll") # Version 1.1
+		tcl("source", file.path(libdir, "scrolledWidget.tcl"))
+		
+		##tclRequire("choosefont")      # Version 0.2
 		##tclRequire("ctext")			# Version 3.1
 		##tclRequire("cursor")       	# Version 0.1
 		##tclRequire("mclistbox")    	# Version 1.2
+		##tclRequire("swaplist")    	# Version 0.2
+		##tclRequire("tablelist")    	# Version 5.5
 		##Not provided any more -> tclRequire("Tktable")   		# Version 2.9
 
 		## The following code is not implemented as Tcl package... just source it
@@ -54,12 +46,11 @@
 ###				tcl("source", file.path(libdir, "fonts.tcl"))
 				## Define fonts used in Tk (note: must be done AFTER loading tile!)
 				## Default values for system fonts are calculated by tile...
-				## but they should be computer from the system, actually
+				## but they should be computed from the system, actually
 				## We collect back those values calculated by tile and possibly override
 				## them with better values
 ###				tk2font.setstyle(system = TRUE, default.styles = TRUE, text = TRUE)
 				### TODO: reflect possible changes to other graphical toolkits (how?)
-				### TODO: homogenize R console, R graph, SciTe fonts with these fonts
 		} else {	# There is a bug in mclistbox with Tcl/Tk 8.5
 			## Patch by Christiane Raemsch, slightly modified by Ph. Grosjean
 			## This is essentially the listbox procedure, but with an additional
@@ -86,10 +77,6 @@
 			}')
 		}
 	}
-	## Try loading addtional ttk themes
-	try(tclRequire("ttk::theme::plastik"), silent = TRUE)
-	try(tclRequire("ttk::theme::keramik"), silent = TRUE)
-	try(tclRequire("ttk::theme::keramik_alt"), silent = TRUE)
 	
 	## Windows only
     if (.Platform$OS.type == "windows") {
@@ -102,22 +89,182 @@
 			tcl("load", file.path(libname, pkgname, "libs", "Winico06.dll"))
 		## Also register the DDE server as TclEval|R
         tk2dde("R")
-    } else {
-		## Use plastik theme by default
-		try(tk2theme("plastik"), silent = TRUE)
+    }
+	
+	## Load additional ttk themes
+	try(tclRequire("ttk::theme::plastik"), silent = TRUE)
+	try(tclRequire("ttk::theme::keramik"), silent = TRUE)
+	try(tclRequire("ttk::theme::keramik_alt"), silent = TRUE)
+	try(tclRequire("ttk::theme::clearlooks"), silent = TRUE)
+	try(tclRequire("ttk::theme::radiance"), silent = TRUE)
+	
+	## Which ttk theme should we use?
+	## If the user specified a default theme, use it
+	isUbuntu <- .isUbuntu()
+	if (!.loadTheme()) {
+		## ...otherwise, try to guess the best default value
+		themes <- tk2theme.list()
+		if ("aqua" %in% themes) { # This must be aquaTk on a Mac
+			try(tk2theme("aqua"), silent = TRUE)
+		} else if ("vista" %in% themes) { # This must be Vista or Win 7
+			try(tk2theme("vista"), silent = TRUE)
+		} else if ("xpnative" %in% themes) { # This must be XP
+			try(tk2theme("xpnative"), silent = TRUE)
+		} else if ("winnative" %in% themes) { # This must be a pre-XP windows
+			try(tk2theme("winnative"), silent = TRUE)
+		} else if (isUbuntu) {
+			try(tk2theme("radiance"), silent = TRUE)
+		} else { # A modern "default" theme that fit not too bad in many situations
+			try(tk2theme("clearlooks"), silent = TRUE)
+		}
 	}
+	## Special treatment for Ubuntu: change fonts to Ubuntu and Ubuntu mono
+	## and use white text on black for tooltips
+	if (isUbuntu && is.tk()) {
+		tkfont.configure("TkDefaultFont", family = "Ubuntu", size = 11)
+		tkfont.configure("TkMenuFont", family = "Ubuntu", size = 11)
+		tkfont.configure("TkCaptionFont", family = "Ubuntu", size = 10)
+		tkfont.configure("TkSmallCaptionFont", family = "Ubuntu", size = 9)
+		tkfont.configure("TkTooltipFont", family = "Ubuntu", size = 9)
+		tkfont.configure("TkMenuFont", family = "Ubuntu", size = 11)
+		tkfont.configure("TkHeadingFont", family = "Ubuntu", size = 12)
+		tkfont.configure("TkIconFont", family = "Ubuntu", size = 11)
+		tkfont.configure("TkTextFont", family = "Ubuntu", size = 11)
+		tkfont.configure("TkFixedFont", family = "Ubuntu Mono", size = 11)
+		res <- tclRequire("tooltip")
+		if (inherits(res, "tclObj")) {
+			.Tcl(paste("set ::tooltip::labelOpts [list -highlightthickness 0",
+				"-relief solid -bd 1 -background black -fg white]"))
+		}
+	}
 }
 
-### TODO: .onUnload() that close downloaded tk items (or unload Tcl completely?)
-### Use package forget and change auto_path, ... or leave like this to avoid
-### breaking Tcl?
-
 .Last.lib <- function (libpath)
 {
     ## Remove all currently scheduled tasks
 	tclTaskDelete(id = NULL)
 }
 
+.saveTheme <- function ()
+	cat(tk2theme(), "\n", sep = "", file = "~/.Rtk2theme")
+	
+.loadTheme <- function () {
+	if (file.exists("~/.Rtk2theme")) {
+		theme <- try(readLines("~/.Rtk2theme")[1], silent = TRUE)
+		if (inherits(theme, 'try-error')) return(FALSE)
+		## Try changing the tk2theme according to this value
+		res <- try(tk2theme(theme), silent = TRUE)
+		return(!inherits(res, "try-error"))
+	} else return(FALSE)
+}
+
+.isUbuntu <- function ()
+	return(grepl("^Ubuntu", suppressWarnings(system("cat /etc/issue",
+		intern = TRUE, ignore.stderr = TRUE))[1]))
+
+.mergeList <- function (l1, l2)
+{
+	## For named lists, overwrite items of l1 present in l2
+	nms <- names(l2)
+	## Deal with named items
+	if (length(nms)) {
+		named <- nms != ""
+		if (any(named)) {
+			l2n <- l2[named]
+			nmsn <- nms[named]
+			for (i in 1:length(nmsn)) l1[[nmsn[i]]] <- l2n[[nmsn[i]]]
+		}
+		## Keep only non named items in l2
+		l2 <- l2[!named]
+	}
+	## Deal with non named items in l2
+	if (length(l2)) { # Unnamed list
+		n1 <- length(l1)
+		n2 <- length(l2)
+		for (i in 1:n2) l1[[n1 + i]] <- l2[[i]]
+	}
+	return(l1)
+}
+
+.configStd <- function (x, lstval)
+{
+	## These config parameters are considered as data
+	## Image
+	if (!is.null(lstval$image)) {
+		tkconfigure(x, image = lstval$image)
+		lstval$image <- NULL
+	}
+	## Text
+	if (!is.null(lstval$text)) {
+		tkconfigure(x, text = lstval$text)
+		lstval$text <- NULL
+	}
+	## Textvariable
+	if (!is.null(lstval$textvariable)) {
+		tkconfigure(x, textvariable = lstval$textvariable)
+		lstval$textvariable <- NULL
+	}
+	## Values
+	if (!is.null(lstval$values)) {
+		values(x) <- lstval$values
+		lstval$values <- NULL
+	}
+	## Value
+	if (!is.null(lstval$value)) {
+		value(x) <- lstval$value
+		lstval$value <- NULL
+	}
+	## Selection
+	if (!is.null(lstval$selection)) {
+		selection(x) <- lstval$selection
+		lstval$selection <- NULL
+	}
+	## Label (not a Tk attribute)
+	if (!is.null(lstval$label)) {
+		label(x) <- lstval$label
+		lstval$label <- NULL
+	}
+	## Tag (not a Tk attribute)
+	if (!is.null(lstval$name)) {
+		tag(x) <- lstval$tag
+		lstval$tag <- NULL
+	}
+	## Tooltip
+	if (!is.null(lstval$tip)) {
+		tip(x) <- lstval$tip
+		lstval$tip <- NULL
+	}
+	## Disabled (is tk 'state' parameter indeed)
+	if (!is.null(lstval$disabled)) {
+		disabled(x) <- lstval$disabled
+		lstval$disabled <- NULL
+	}
+	## Return modified value list
+	return(lstval)
+}
+
+.wraplength <- function (w, width)
+{
+	## Calculate wraplength required for tk2label widgets
+	## width is expressed in characters, but wraplength must be given in pixels
+	## This is stupid and requires additional computation to calculate the
+	## width in pixel of an average character, like "0" to do the conversion!
+	## Get the average size of one character in the current font used
+	
+	## If width is not set, just return a large value for wraplength
+	if (!length(width)) return(1000)
+	
+	## Get the font and measure it	
+	font <- tclvalue(tkcget(w, "-font"))
+	if (font == "") font <- tk2style("tk2label", "font")
+	if (font == "") {
+		charsize <- 8 # Use an everage value
+	} else charsize <- as.numeric(tkfont.measure(tkfont.actual(font), "0"))
+	
+	## Optimal wraplength is width * charsize
+	return(width * charsize)
+}
+
 .TempEnv <- function ()
 {
     pos <-  match("TempEnv", search())

Modified: pkg/tcltk2/R/tk2commands.R
===================================================================
--- pkg/tcltk2/R/tk2commands.R	2011-12-29 19:46:37 UTC (rev 417)
+++ pkg/tcltk2/R/tk2commands.R	2012-01-09 21:08:40 UTC (rev 418)
@@ -210,6 +210,178 @@
 ###	-relief [list {pressed !disabled} sunken] \ 
 ###	;
 
+## Function to look for a ttk style
+tk2style <- function (class, style, state = c("default", "active",
+"disabled", "focus", "!focus", "pressed", "selected", "background", "readonly",
+"alternate", "invalid", "hover", "all"), default = NULL)
+{
+	## Get a ttk style in the current theme
+	## Class is either the TTk class, or the tk2 function name
+	## TODO: add tk2toolbutton and tk2sizegrip!
+	class <- switch(class,
+		tk2button = "TButton",
+		tk2label = "TLabel",
+		tk2toolbutton = "Toolbutton",
+		tk2menubutton = "TMenubutton",
+		tk2checkbutton = "TCheckbutton",
+		tk2radiobutton = "TRadiobutton",
+		tk2entry = "TEntry",
+		tk2combobox = "TCombobox",
+		tk2notebook = "TNotebook",
+		tk2labelframe = "TLabelframe",
+		tk2scrollbar = "TScrollbar",
+		tk2scale = "TScale",
+		tk2progress = "TProgressbar",
+		#tk2spinbox = "TSpinbox",
+		tk2tree = "Treeview",
+		tk2frame = "TFrame",
+		tk2panedwindow = "TPanedwindow",
+		tk2separator = "TSeparator",
+		#"TSizegrip",
+		as.character(class)[1] # Supposed to be the ttk class
+		## Not ttk widgets: tk2canvas, tk2ctext, tk2edit, tk2listbox,
+		## tk2mclistbox, tk2menu, tk2menuentry, tk2spinbox, tk2table
+	)
+	style = paste("-", as.character(style)[1], sep = "")
+	state = match.arg(state)
+	if (is.null(default)) default <- ""
+	
+	## styles creates a named vector (items in even elements, labels = odd)
+	styles <- function (x) {
+		st <- as.character(x)
+		l <- length(st)
+		if (l == 0) return(character(0))
+		if (l == 1) return(c(default = st))
+		if (l %% 2 > 0) stop("Didn't get an even number of items: ", st)
+		stnames <- st[seq(1, l - 1, by = 2)]
+		st <- st[seq(2, l, by = 2)]
+		names(st) <- stnames
+		return(st)
+	}
+	
+	## First look at the map for this class
+	res <-  styles(tcl("ttk::style", "map", class, style))
+	res2 <-  styles(tcl("ttk::style", "map", ".", style))
+	res <- c(res, res2[!names(res2) %in% names(res)])
+	res2 <-  styles(tcl("ttk::style", "configure", class, style))
+	res <- c(res, res2[!names(res2) %in% names(res)])
+	res2 <-  styles(tcl("ttk::style", "configure", ".", style))
+	res <- c(res, res2[!names(res2) %in% names(res)])
+	if (length(res) == 0) res <- c(default = default)
+	
+	## If state != "all", try to resolve the right state
+	if (state != "all") {
+		## If the given state is there, use it
+		if (state %in% names(res)) {
+			return(res[state])
+		} else if ("default" %in% names(res)) {
+			return(res["default"])
+		} else {
+			return(c(default = as.character(default)[1]))
+		}
+	} else return(res)
+}
+
+tk2dataList <- function (x)
+{
+	## List data parameters for a given tk2widget
+	## Data manage the content of the widgets
+	## Common items are label, tag, and tip
+	## image: widgets that can display images
+	## text, textvariable: display text
+	## values, value and selection
+	## command: the command to run
+	## validate, validatecommand, invalidcommand: validation mechanism
+	## variable: varaible associated with value
+	## postcommand: specific to comboboxes, to fill them!
+	## onvalue & offvalue: specific to checkbutton
+	## default: specific for button (default button in a dialog box)
+	## show: specific to entry for password... clash with treeview show => ???
+	## mode, maximum, value: for progressbars
+	## from, to, increment, : for spinbox & scale + format
+	## Look in text widget what we keep!
+	if (is.tk2widget(x)) cl <- class(x)[1] else cl <- as.character(x)[1]
+	res <- switch(cl,
+		tk2button = c("image", "text", "textvariable", "command", "default"),
+		tk2canvas = character(0),
+		tk2checkbutton = c("image", "text", "textvariable", "variable",
+			"command", "onvalue", "offvalue"),
+		tk2combobox = c("postcommand", "textvariable", "values"),
+		tk2ctext = c("values", "value", "selection", "maxundo", "undo",
+			"spacing1", "spacing2", "spacing3", "tabs", "tabstyle"), # language
+		tk2entry = c("invalidcommand", "textvariable", "validate",
+			"validatecommand", "show"),
+		tk2label = c("image", "text", "textvariable"),
+		tk2labelframe = c("text"),
+		tk2listbox = c("values", "value", "selection"),
+		tk2mclistbox = c("values", "value", "selection"),
+		tk2notebook = character(0),
+		tk2notetab = c("image", "text"),
+		tk2panedwindow = character(0),
+		tk2progress = c("mode", "maximum", "value", "variable"),
+		tk2radiobutton = c("image", "text", "textvariable",
+			"command", "value", "variable"),
+		tk2scale = c("command", "from", "to", "value", "variable"),
+		tk2scrollbar = c("command"),
+		tk2separator = character(0),
+		#tk2sizegrip = character(0),
+		tk2spinbox = c("validate", "validatecommand", "from", "to", "increment",
+			"values", "format", "command"),
+		tk2table = c("values", "value", "selection"),
+		tk2text = c("values", "value", "selection", "maxundo", "undo",
+			"spacing1", "spacing2", "spacing3", "tabs", "tabstyle"),
+		tk2tree = c("values", "value", "selection"),
+		stop("Unknown tk2widget, provide a tk2widget object or its class")	
+	)
+	## Add label, tag & tip for all
+	res <- c(res, "label", "tag", "tip")
+	return(res)
+}
+
+tk2configList <- function (x)
+{
+	## List config parameters for a given tk2widget
+	## Note: most of the appearance is controlled by the theme, we keep here
+	## only a subset of items that are most useful considering themed widgets:
+	## height, width or length: the size of the widget
+	## compound: how image and text are composed
+	## justify and wrap: control of text flow
+	## orient: for widgets that can be horizontal or vertical
+	## selectmode: for widgets that allow for multiple selections
+	## show: tree and/or headings for the treeview widget
+	if (is.tk2widget(x)) cl <- class(x)[1] else cl <- as.character(x)[1]
+	res <- switch(cl,
+		tk2button = c("compound", "width"),
+		tk2canvas = c("height", "width"),
+		tk2checkbutton = c("compound", "width"),
+		tk2combobox = c("justify", "height", "width"),
+		tk2ctext = c("height", "width"),
+		tk2entry = c("justify", "width"),
+		tk2label = c("compound", "justify", "width", "wraplength"), # Use wrap!
+		tk2labelframe = c("height", "width"),
+		tk2listbox = c("height", "width", "selectmode"),
+		tk2mclistbox = c("height", "width", "selectmode"),
+		tk2notebook = c("height", "width"),
+		tk2notetab = c("compound"),
+		tk2panedwindow = c("orient", "height", "width"),
+		tk2progress = c("length", "orient"),
+		tk2radiobutton = c("compound", "width"),
+		tk2scale = c("length", "orient"),
+		tk2scrollbar = c("orient"),
+		tk2separator = character(0),
+		#tk2sizegrip = character(0),
+		tk2spinbox = c("wrap"),
+		tk2table = c("height", "width"),
+		tk2text = c("height", "width"),
+		tk2tree = c("height", "selectmode", "show"), # show tree and/or headings
+		stop("Unknown tk2widget, provide a tk2widget object or its class")
+	)
+	## Add cursor and takefocus that are common to all
+	# Should we really add these?
+	#res <- c(res, "cursor", "takefocus")
+	return(res)
+}
+
 setLanguage <- function (lang)
 {
 	## Change locale for both R and Tcl/Tk

Added: pkg/tcltk2/R/tk2methods.R
===================================================================
--- pkg/tcltk2/R/tk2methods.R	                        (rev 0)
+++ pkg/tcltk2/R/tk2methods.R	2012-01-09 21:08:40 UTC (rev 418)
@@ -0,0 +1,312 @@
+## Various methods for tk2widgets
+## See also tk2tip.R for methods tip(w) and tip(w) <- value
+
+is.tk2widget <- function (x)
+	return(inherits(x, "tk2widget"))
+
+print.tk2widget <- function (x, ...)
+{
+	if (disabled(x)) txt <- " (disabled)" else txt <- ""
+	cat("A tk2widget of class '", class(x)[1], "'", txt, "\n", sep = "")
+	cat("State: ", state(x), "\n", sep = "")
+	cursize <- size(x)
+	if (cursize > 0) cat("Size: ", cursize, "\n", sep = "")
+	val <- value(x)
+	if (!is.null(val)) {
+		cat("Value:\n")
+		print(value(x))
+	}
+	return(invisible(x))
+}
+
+tk2cfglist <- function (...)
+{
+	res <- list(...)
+	class(res) <- c("tk2cfglist", class(res))
+	return(res)
+}
+	
+print.tk2cfglist <- function (x, ...)
+{
+	if (!length(x)) {
+		cat("An empty tk2widget cfglist\n")
+	} else {
+		cat("A tk2widget cfglist with:\n\n")
+		print(unclass(x))
+	}
+	return(invisible(x))
+}
+
+state <- function (x, ...)
+	UseMethod("state")
+
+state.tk2widget <- function (x, ...)
+	return(as.character(tcl(x, "state")))
+
+## TODO: a state.tk2listbox, because there is no state property defined for it!
+
+label <- function (x, ...)
+	UseMethod("label")
+	
+label.tk2widget <- function (x, ...)
+	return(x$env$label)
+	
+`label<-` <- function (x, value)
+	UseMethod("label<-")
+	
+`label<-.tk2widget` <- function (x, value)
+{
+	x$env$label <- as.character(value)[1]
+	return(x)
+}
+
+tag <- function (x, ...)
+	UseMethod("tag")
+	
+tag.tk2widget <- function (x, ...)
+	return(x$env$tag)
+	
+`tag<-` <- function (x, value)
+	UseMethod("tag<-")
+	
+`tag<-.tk2widget` <- function (x, value)
+{
+	x$env$tag <- value
+	return(x)
+}
+
+disabled <- function (x, ...)
+	UseMethod("disabled")
+
+disabled.tk2widget <- function (x, ...)
+	return(tclvalue(tkcget(x, "-state")) == "disabled")
+	
+`disabled<-` <- function (x, value)
+	UseMethod("disabled<-")
+	
+`disabled<-.tk2widget` <- function (x, value)
+{
+	if (isTRUE(value)) state <- "disabled" else state <- "normal"
+	tkconfigure(x, state = state)
+	return(x)
+}
+	
+values <- function (x, ...)
+	UseMethod("values")
+	
+values.tk2widget <- function (x, ...)
+	return(NULL) # Default value, for widgets that do not support this!
+
+values.tk2listbox <- function (x, ...)
+	return(as.character(tkget(x, 0, "end")))
+
+`values<-` <- function (x, value)
+	UseMethod("values<-")
+
+`values<-.tk2widget` <- function (x, value)
+	stop("This tk2widget does not seem to support values")
+
+`values<-.tk2listbox` <- function (x, value)
+{
+	## Save current selection
+	cursel <- selection(x)
+	tclServiceMode(FALSE)
+	on.exit(tclServiceMode(TRUE))
+	isDisabled <- disabled(x)
+	on.exit(disabled(x) <- isDisabled, add = TRUE)
+	if (isDisabled) disabled(x) <- FALSE
+	## Change items (no attempt to match them -possible future improvement!-)
+	tkdelete(x, 0, "end")
+	for (item in as.character(value))
+		tkinsert(x, "end", item)
+	## Try to reapply selection
+	for (sel in cursel)
+		tkselection.set(x, sel - 1)
+	return(x)
+}
+
+value <- function (x, ...)
+	UseMethod("value")
+
+value.tk2widget <- function (x, ...)
+	return(NULL) # Default value is NULL for tk2widgets
+
+value.tk2listbox <- function (x, ...)
+	return(values(x)[selection(x)])
+
+`value<-` <- function (x, value)
+	UseMethod("value<-")
+
+`value<-.tk2widget` <- function (x, value)
+	stop("This tk2widget does not seem to support setting its value")
+
+`value<-.tk2listbox` <- function (x, value)
+{
+	items <- items(x)
+	if (length(items) > 0)
+		selection(x) <- (1:length(items))[items %in% value] 
+	return(x)
+}
+
+selection <- function (x, ...)
+	UseMethod("selection")
+
+selection.tk2widget <- function (x, ...)
+	return(NULL) # For tk2widgets that do not support selection
+
+selection.tk2listbox <- function (x, ...)
+	return(as.integer(tkcurselection(x)) + 1)
+
+`selection<-` <- function (x, value)
+	UseMethod("selection<-")
+
+`selection<-.tk2widget` <- function (x, value)
+	stop("This tk2widget does not seem to support setting its selection")
+	
+`selection<-.tk2listbox` <- function (x, value)
+{
+	## Prepare
+	tclServiceMode(FALSE)
+	on.exit(tclServiceMode(TRUE))
+	isDisabled <- disabled(x)
+	on.exit(disabled(x) <- isDisabled, add = TRUE)
+	if (isDisabled) disabled(x) <- FALSE
+	## Clear selection only
+	if (is.null(value) || length(value) < 1) {
+		tkselection.clear(x, 0, "end")
+		return(x)
+	}
+	## Check data
+	value <- sort(as.integer(round(value)))
+	if (value[1] < 1)
+		stop("Selections must be indices > 0")
+	if (value[length(value)] > size(x)) return(x)
+	## Change selection
+	tkselection.clear(x, 0, "end")
+	if (tclvalue(tkcget(x, "-selectmode")) == "single" && length(value) > 1) {
+		warning("Single selection mode... only lowest selection used")
+		tkselection.set(x, value[1] - 1)
+	} else {
+		for (sel in value)
+			tkselection.set(x, sel - 1)
+	}
+	if (!isDisabled) tksee(x, value[1] - 1)
+	return(x)
+}
+
+visibleItem <- function (x, index, ...)
+	UseMethod("visibleItem")
+
+visibleItem.tk2widget <- function (x, index, ...)
+	stop("This tk2widget does not seems to support the visibleItem method")
+
+visibleItem.tk2listbox <- function (x, index, ...)
+{
+	## Index must be a positive integer
+	index <- as.integer(round(index))
+	if (is.null(index) || length(index) < 1 || index[1] < 1)
+		stop("index must be a postive integer")
+	tksee(x, index[1] - 1) # Because Tcl uses 0-based indices
+	return()
+}
+
+size <- function (x, ...)
+	UseMethod("size")
+
+size.tk2widget <- function (x, ...)
+	return(0L) # By default, a tk2widget has values of zero size (NULL)
+	
+size.tk2listbox <- function (x, ...)
+	return(as.integer(tksize(x)))
+
+config <- function (x, ...)
+	UseMethod("config")
+
+config.tk2widget <- function (x, cfglist, ...)
+{
+	## Compile a list of arguments
+	args <- list(...)
+	if (!missing(cfglist)) args <- .mergeList(as.list(cfglist, args))
+	
+	
+	## Prepare an empty object
+	res <- list()
+	class(res) <- c("tk2cfglist", class(res))
+	
+	## No arguments provided... query a sublist of parameters
+	if (length(args) == 0) {
+		## Return the complete config (but not the data!)
+		params <- tk2configList(x)
+		if (!length(params)) return(res)
+	} else {
+		## Separate named (set) from unnamed (query only) arguments
+		params <- names(args)
+		if (is.null(params)) { # No named arguments, only queries
+			params <- as.character(args)
+		} else {
+			## For those named arguments, change the config
+			res <- (config(x) <- args[params != ""])
+			## ... and query the others
+			params <- as.character(args[params == ""])
+		}
+	}
+	
+	## Retrieve values for the queries
+	if (length(params)) {
+		for (i in 1:length(params)) {
+			p <- tclvalue(tkcget(x, paste("-", params[i], sep = "")))
+			if (!is.null(p) && p != "")
+				res[[params[i]]] <- p
+		}
+	}
+	return(res)
+}
+	
+config.tk2label <- function (x, cfglist, ...)
+{
+	## wrap is special here... => how to deal with it???
+	## TODO...
+	return(config.tk2widget(x, cfglist, ...))
+}
+
+## TODO: config.tk2listbox()
+
+`config<-` <- function (x, value)
+	UseMethod("config<-")
+
+`config<-.tk2widget` <- function (x, value)
+{
+	## The default function deleguates to tkconfigure, except for a few things
+	value <- .configStd(x, value)
+	value$widget <- x
+	do.call(tkconfigure, value)
+	return(x)
+}
+
+`config<-.tk2label` <- function (x, value)
+{
+	## Standard treatment
+	value <- .configStd(x, value)
+	
+	if (!is.null(value$wrap)) {
+		## wrap is not a ttk option but we use it here for convenience
+		wrap <- value$wrap
+		value$wrap <- NULL
+	} else wrap <- NULL
+
+	## For the other parameters, apply tkconfigure() with them
+	value$widget <- x
+	do.call(tkconfigure, value)
+	
+	## Do we still have to apply wrap?
+	width <- abs(as.integer(tclvalue(tkcget(x, "-width"))))
+	if (!is.null(wrap)) {
+		if (isTRUE(wrap)) wraplength <- .wraplength(x, width) else wraplength <- 0
+		tkconfigure(x, wraplength = wraplength)
+	}
+	## Reapply width to get correct text wrapping (bug in ttk::label?)
+	if (length(width)) tkconfigure(x, width = width)
+	return(x)
+}
+
+## TODO: `config<-.tk2listbox`
\ No newline at end of file

Modified: pkg/tcltk2/R/tk2tip.R
===================================================================
--- pkg/tcltk2/R/tk2tip.R	2011-12-29 19:46:37 UTC (rev 417)
+++ pkg/tcltk2/R/tk2tip.R	2012-01-09 21:08:40 UTC (rev 418)
@@ -3,7 +3,7 @@
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/sciviews -r 418


More information about the Sciviews-commits mailing list