[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