Showing posts from March, 2013

New megawidget gnocl::richtextToolBar

A while ago added I development code to handle pango markup in gnocl::text widgets. The next step, I felt, was adding a toolbar megawidget which would do all the necessary widget application with no extra scripting. Its working fine so far. I'll need to create some custom icons for the buttons and compile these into the sources but this should be straightforward. Perhaps the name of widget needs revising, its a bit too long. Anyway, here's my test script.

# test_gtk_richTextToolBar.tcl
exec tclsh "$0" "$@"

package require Gnocl

set txt [gnocl::text -wrapMode word -markupTags 1]
set rtbar [gnocl::richTextToolBar -text $txt]
set vbox [gnocl::vBox]

$txt lorem

$vbox add $rtbar
$vbox add $txt -fill {1 1} -expand 1

gnocl::window -child $vbox -setSize 0.3

Converting between different colour formats

Excluding the use of named Unix colours, Gtk+ employs three numeric ways of describing colours: rgb, hex and decimal. The choice of modes is largely determined by the library being wrapped. Cairo, for instance, only accepts colours in decimal formats. Some conversion is handled in the gnocl sources but, here's a package of proc which will convert between all three formats and also make allowances for the extra alpha channel.

# colour-conversions.tcl
# William J Giddings
# 04-Mar-2013
# Notes:
# Manipulate colour expresions.

# convert integer RGBA values to hexadecimal
proc RGB2hex {clr} {    
    if { [llength $clr] == 4 } {
        scan $clr "%d %d %d %d" r g b a
        return [format "#%02x%02x%02x%02x" $r $g $b $a]
    } else {
        scan $clr "%d %d %d" r g b
        return [format "#%02x%02x%02x" $r $g $b]  
    return -1

# convert…