WJG (06/Sep/10) The development of the Gnocl Tcl/Gtk bindings is moving along well and the recently added gnocl::pixBuf object offers a great deal to those application developers who want fast and flexible manipulation full colour graphics. Last night I thought it was about time that I had a desktop slideshow gadget that would read the contents of an album directory. It took me less that half an hour to get the whole lot running. Here's the script:
#--------------- # photoAlbumGadget.tcl #--------------- # Produce a desktop slideshow. #--------------- # William J Giddings # 05/09/2010 #--------------- #!/bin/sh # the next line restarts using tclsh \ exec tclsh "$0" "$@" package require Gnocl #--------------- # #--------------- proc init {} { set ::dt 3000 set ::size {200 150} set ::i 0 set ::first 1 # create a list of images set ::album [glob ./album/*] } #--------------- # #--------------- proc slideChange {} { incr ::i if {$::i == [llength $::album] } {set ::i 0} $::pb delete # transition or straight cut if {$::first} { set ::pb [gnocl::pixBuf load -file [lindex $::album $::i]] $::img configure -image %?$::pb -size $::size set ::first 0 } else { set src [gnocl::pixBuf load -file [lindex $::album $::i]] for {set i 5} {$i <= 255 } {incr i } { $::pb composite $src -alpha $i $::img configure -image %?$::pb -size $::size gnocl::update after 10 } $src delete } after $::dt slideChange } #--------------- # #--------------- proc main {} { set ::pb [gnocl::pixBuf new] set ::img [gnocl::image] gnocl::window \ -child $::img \ -defaultHeight 150 \ -defaultWidth 150 \ -decorated 0 \ -x 1200 \ -y 200 slideChange gnocl::mainLoop } init main