Friday, May 21, 2010

gnocl::fixed

I gues that the gnocl::fixed widget is almost complete now. There is one last annoying issue that needs resolving but I can't see how using the Gtk/Gdk libraries and thats adjusting the z-depth of the widgets. They remain layered in the order in which they are applied to the stack. Its possible to raise/lower the window that contains the widgets but there's no apparent way of manipulating the stack itself. What might be needed in a func to specifically 'twiddle' around with the stack.


Here's the script:

# basic Tcl/Gnocl Script
#!/bin/sh \
exec tclsh "$0" "$@"
package require Gnocl

set but(1) 10
set but(2) 30
set but(3) 50
set but(4) 70

set but1 [gnocl::button -text "APPLE"]
set but2 [gnocl::button -text "BANANA"]
set but3 [gnocl::button -text "CHERRY"]
set but4 [gnocl::button -text "DAMSON"]

set lab [gnocl::label ]

set fx [gnocl::fixed  ]
gnocl::window -child $fx -width 200 -height 130

$fx add $but1  -x $but(1) -y 10 -width 80 -height 40
$fx add $but2  -x $but(2) -y 30 -width 80 -height 40
$fx add $but3  -x $but(3) -y 50 -width 80 -height 40
$fx add $but4  -x $but(4) -y 70 -width 80 -height 40

$but1 configure -onClicked {
 if {$but(1) == 10} {set but(1) 110} else {set but(1) 10}
 $fx toTop %w
 $fx move %w  -x $but(1) -y 10 -width 80 -height 40
 puts [$fx children ]
}

$but2 configure -onClicked {
 if {$but(2) == 30} {set but(2) 110} else {set but(2) 30}
 $fx toBottom %w
 $fx move %w  -x $but(2) -y 30 -width 80 -height 40
 puts [$fx children ]
}

$but3 configure -onClicked {
 if {$but(3) == 50} {set but(3) 110} else {set but(3) 50}
 $fx lower %w
 $fx move %w  -x $but(3) -y 50 -width 80 -height 40
  puts [$fx children ]
}

$but4 configure -onClicked {
 if {$but(4) == 70} {set but(4) 110} else {set but(4) 70}
 $fx move %w  -x $but(4) -y 70 -width 80 -height 40
 $fx raise %w
}

foreach item [$fx children ] {
 #$fx move $item  -x 0 -y 0
}

puts size=[$fx size $but3 ]
puts position=[$fx position $but3 ]

gnocl::mainLoop


No comments: