Thursday, October 27, 2011

gnocl::fileChooser completed support for multiple file type filters

Wanted to fix this one for some time. Basically, this allows multiple file filters to be set for the dialog. The sample script explains all.

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

set ff1 [gnocl::fileFilter -name "Source Code" -pattern {*.tcl *.c} ]
set ff2 [gnocl::fileFilter -name "Text Files" -pattern {*.odt *.doc *.rtf *.abw} ]
set ff3 [gnocl::fileFilter -name "Image Files" -pattern {*.png *.jpg *.bmp *.tif} ]

gnocl::fileChooserDialog \
            -fileFilters [list $ff1 $ff2 $ff3]
            -currentFolder [pwd] \
            -title "Open Jiumoluo Project File"

15mins later....

Urgh, something always goes wrong. It looks like the destruction of the dialog window also results in the destuction of the file filters object too! I'll rework the code so that the filters are maintained as a list on the Tcl side; something along the lines of:

set filters {Filter1Name {*.A  *.B *.C} Filter2Name {*.D *.E *.F} }

15mins later....

Ok, rework the code and all now appears ok. In fact the core is much slimmer now as the code overhead for making the gnocl::fileFilter command was too much. So, the following script works. I'll upload a nightly build today.

set myFilters {Source {*.c *.tcl} Text {*.txt *.odt} Graphics {*.png *.jpg *.tif} }

gnocl::window -child [gnocl::button -text click-me -onClicked {
        gnocl::fileChooserDialog \
            -fileFilters $myFilters \
            -currentFolder [pwd] \
            -title "Open Jiumoluo Project File -1"

1 comment:

XRO Solar said...

The file chooser looks like it will be very useful. Will integrate gnocl into some tclkit based projects that are made for linux, instead of using the dated Tk file chooser. Who knows what else from gnocl will also turn out to be useful?! Cool & thanks.