Over the past few weeks a number of enhancements have be made to the gnocl package. Here's a brief overview of the changes:
2015-05:
gnocl::menu, gnocl::menuRecentChooser, gnocl::statusBar
o added -name, -data; implemented cget
o added -name, -data; implemented cget
gnocl::window
o added -name
added gnocl::application, a convience application megawidget
2015-04:
added parent command to gnocl::volumeButton, gnocl::scale and gnocl::spinner
gnocl::spinner
o resolved problems with start and stop commands (same as using the -active options).
gnocl::text
o using the get widget command alone will return all text contents, i.e. same as "$wid get start end"
gnocl::entry
o wordList sub-commands "add", "clear", "delete" and "get" are now implemented.
o enhanced the wordList subcommand with new option -split
specifying this option will result in a string being treated as a space separated list
of single words: e.g. "a red dog" becomes {{a} {red} {dog}}
o enhanced the progress functionality, new options -range and -progressStep
the command progress will increment the display by the fractions given by progressStep.
Changing either -range or -progressStep will reset the progress display to 0.
The use of the -progressFraction remains unaltered and is useful for resetting the progress to 0.
gnocl::text
o insert markup now works acceptably well, at present ' markup can only accept single, predefined options. Future
versions may offer more, but this is probably adequate for
most purposes requiring text pango markup.
o renamed -markupTags to -useMarkup
gnocl::toolBar
checkItem/toggleButton
o configure -data option and others now works
o cget -iconSize now works properly
gnocl::label
bugfix:
-textVariable setting now responds to the widget -useMarkup option
For me, the most exciting prospect is the ability to use pango-like markup strings in conjunction with the the text widget. Additionally, the gnocl::application convenience function offers an extremely quick way of initializing a working application complete with menus, toolbars, main container and status bar. The following tests script shows how this new script can be used:
#---------------
# test-gnocl-appl.tcl
#---------------
#!/bin/sh
#\
exec tclsh "$0" "$@"
package require Gnocl
#~~~~~~~~~~~~~~~~~~~~~~~~~
# create the basic application
#~~~~~~~~~~~~~~~~~~~~~~~~~
array set app [gnocl::application -application "MyAPP" -version 1.0 -date 07/05/15 -filetypes *.tcb]
#~~~~~~~~~~~~~~~~~~~~~~~~~
# Configure the main toplevel settings
#~~~~~~~~~~~~~~~~~~~~~~~~~
$app(topLevel) configure -title "APPLICATION" -setSize 0.5
#~~~~~~~~~~~~~~~~~~~~~~~~~
# Configure toolbars
#~~~~~~~~~~~~~~~~~~~~~~~~~
$app(toolBar,1) add item -icon "%#New" -text New -name AAAA
$app(toolBar,2) add item -icon "%#Open" -text Open -name BBB
$app(toolBar,2) configure -visible 0
#~~~~~~~~~~~~~~~~~~~~~~~~~
# Create and pack application specific resources
#~~~~~~~~~~~~~~~~~~~~~~~~~
set app(txt) [gnocl::text -wrapMode word -name "textEdit" -useMarkup 1]
$app(container) add $app(txt) -fill {1 1} -expand 1
$app(txt) lorem ;# a bit of dummy data
#~~~~~~~~~~~~~~~~~~~~~~~~~
# Show and go!
#~~~~~~~~~~~~~~~~~~~~~~~~~
$app(statusBar) push "Ready..."
$app(topLevel) show
#~~~~~~~~~~~~~~~~~~~~~~~~~
# GUI elements can now be modified
#~~~~~~~~~~~~~~~~~~~~~~~~~
$app(toolBar,2) add item -icon "%#Yes" -name CCC
$app(help,about) configure -onClicked {puts HIDIHI}
$app(file,quit) configure -onClicked {exit}
$app(file,recent_menu) configure -onClicked {puts "HODIHO %f"}
#~~~~~~~~~~~~~~~~~~~~~~~~~
# alternatively, use aliases based upon Gtk+ builder names
#~~~~~~~~~~~~~~~~~~~~~~~~~
if 1 {
namespace eval myApp {}
foreach item [gnocl::inventory widget $app(topLevel)] {
set n [$item cget -name]
if { $n != "" } { interp alias {} ::myApp::$n {} $item }
}
::myApp::textEdit insert end "\nOm Mani Padme Hum Hrih"
}
2015-05:
gnocl::menu, gnocl::menuRecentChooser, gnocl::statusBar
o added -name, -data; implemented cget
o added -name, -data; implemented cget
gnocl::window
o added -name
added gnocl::application, a convience application megawidget
2015-04:
added parent command to gnocl::volumeButton, gnocl::scale and gnocl::spinner
gnocl::spinner
o resolved problems with start and stop commands (same as using the -active options).
gnocl::text
o using the get widget command alone will return all text contents, i.e. same as "$wid get start end"
gnocl::entry
o wordList sub-commands "add", "clear", "delete" and "get" are now implemented.
o enhanced the wordList subcommand with new option -split
specifying this option will result in a string being treated as a space separated list
of single words: e.g. "a red dog" becomes {{a} {red} {dog}}
o enhanced the progress functionality, new options -range and -progressStep
the command progress will increment the display by the fractions given by progressStep.
Changing either -range or -progressStep will reset the progress display to 0.
The use of the -progressFraction remains unaltered and is useful for resetting the progress to 0.
gnocl::text
o insert markup now works acceptably well, at present ' markup can only accept single, predefined options. Future
versions may offer more, but this is probably adequate for
most purposes requiring text pango markup.
o renamed -markupTags to -useMarkup
gnocl::toolBar
checkItem/toggleButton
o configure -data option and others now works
o cget -iconSize now works properly
gnocl::label
bugfix:
-textVariable setting now responds to the widget -useMarkup option
For me, the most exciting prospect is the ability to use pango-like markup strings in conjunction with the the text widget. Additionally, the gnocl::application convenience function offers an extremely quick way of initializing a working application complete with menus, toolbars, main container and status bar. The following tests script shows how this new script can be used:
#---------------
# test-gnocl-appl.tcl
#---------------
#!/bin/sh
#\
exec tclsh "$0" "$@"
package require Gnocl
#~~~~~~~~~~~~~~~~~~~~~~~~~
# create the basic application
#~~~~~~~~~~~~~~~~~~~~~~~~~
array set app [gnocl::application -application "MyAPP" -version 1.0 -date 07/05/15 -filetypes *.tcb]
#~~~~~~~~~~~~~~~~~~~~~~~~~
# Configure the main toplevel settings
#~~~~~~~~~~~~~~~~~~~~~~~~~
$app(topLevel) configure -title "APPLICATION" -setSize 0.5
#~~~~~~~~~~~~~~~~~~~~~~~~~
# Configure toolbars
#~~~~~~~~~~~~~~~~~~~~~~~~~
$app(toolBar,1) add item -icon "%#New" -text New -name AAAA
$app(toolBar,2) add item -icon "%#Open" -text Open -name BBB
$app(toolBar,2) configure -visible 0
#~~~~~~~~~~~~~~~~~~~~~~~~~
# Create and pack application specific resources
#~~~~~~~~~~~~~~~~~~~~~~~~~
set app(txt) [gnocl::text -wrapMode word -name "textEdit" -useMarkup 1]
$app(container) add $app(txt) -fill {1 1} -expand 1
$app(txt) lorem ;# a bit of dummy data
#~~~~~~~~~~~~~~~~~~~~~~~~~
# Show and go!
#~~~~~~~~~~~~~~~~~~~~~~~~~
$app(statusBar) push "Ready..."
$app(topLevel) show
#~~~~~~~~~~~~~~~~~~~~~~~~~
# GUI elements can now be modified
#~~~~~~~~~~~~~~~~~~~~~~~~~
$app(toolBar,2) add item -icon "%#Yes" -name CCC
$app(help,about) configure -onClicked {puts HIDIHI}
$app(file,quit) configure -onClicked {exit}
$app(file,recent_menu) configure -onClicked {puts "HODIHO %f"}
#~~~~~~~~~~~~~~~~~~~~~~~~~
# alternatively, use aliases based upon Gtk+ builder names
#~~~~~~~~~~~~~~~~~~~~~~~~~
if 1 {
namespace eval myApp {}
foreach item [gnocl::inventory widget $app(topLevel)] {
set n [$item cget -name]
if { $n != "" } { interp alias {} ::myApp::$n {} $item }
}
::myApp::textEdit insert end "\nOm Mani Padme Hum Hrih"
}
Comments