Showing posts from August, 2017

Displaying Tcl dict contents in a gnocl::list widget

The following script shows how to display the contents of a simple Tcl dict within a gnocl::list widget.

# the next line restarts using tclsh \
exec tclsh "$0" "$@"

package require Gnocl

namespace eval pkg {}

# Create a gnocl::list displaying the contents of a Tcl dict.
# Arguments:
#    val        dict data to display.
#    args
# Returns:
#    wid of gnocl::list containing the dict data.
proc pkg::dict2list { vals } {

    set res ""

    # get a complete list of info keys
    set c key
    dict for {id info} $vals {
        foreach {a b} $info {
            if { [string first $a $c] == -1 } { lappend c $a }

    set headings [lsort -unique $c]
    set res [gnocl::list -titles $c]

    # populate the list
    dict for {id info} $vals {
        set row2 [string repeat "{} " [llength $c]]
        set row2 [lreplace $row2 0 0 $id]
        foreach {a b} $info {
            set d [lsearch $c $a]
            set r…

Recent Changes

Just a few additions and enhancements to the 0.9.96 code over the past couple of months. Latest sources available at Sourceforge.

    gnocl::tree, gnocl::list
        o cget -types now works.
        o FIXED: crashing when getFullList called on model with 0 rows.
        o -onPopulatePopup Substitution options %r, %c and %t changed to %R(ow), %C(olumn) and %T(ags),
             and %t reallocated to return id of widget toplevel window.
        o added -onButtonPress and -onButtonRelease
        o added getSelectionBounds for consistency with the text widget       
        o menuButton -icon can now be reconfigured.
        o FIXED: problems with serialize/deserialize, now tests for valid filename.
        o added -baseColor
        o added -orientation -leftMargin -rightMargin -margins -paragraphSpacing -lineSpacing -justify
        o new commands getSelection