I've spent much of my coding time over the past few weeks on other projects so Gnocl didn't receive too much attention. However, there is something to report as of today.
2018-03:
gnocl::text
o search command no longer requires -tags option to be set,
returns a list of row col values defining start/end
postions of search string
2018-02:
gnocl::fileChooserDialog
o -currentFolder option now works properly.
Friday, March 09, 2018
Friday, February 02, 2018
January Update
From first glance at the clip from the latest news it might appear that little has on the Gnocl coding front. Not really, a long-standing issue with the toolbar was fixed along with some extra new options, keywords and commands for the text widget. The latest downloads of course, still available from Sourceforge.
2018-01:
gnocl::toolbar
o problem with setting -styles now fixed
gnocl::text
o new option -margins.
Convenience function to set margins and paragraph spacings in pixels.
Give list as left, right, above, below.
o new sub-commands: gotoNextWord, gotoPreviousWord
o gotoWordStart, gotoWordEnd, gotoNextWord, and gotoPreviousWord all return new cursor position.
these take optional "row col" argument otherwise works from current cursor position.
2018-01:
gnocl::toolbar
o problem with setting -styles now fixed
gnocl::text
o new option -margins.
Convenience function to set margins and paragraph spacings in pixels.
Give list as left, right, above, below.
o new sub-commands: gotoNextWord, gotoPreviousWord
o gotoWordStart, gotoWordEnd, gotoNextWord, and gotoPreviousWord all return new cursor position.
these take optional "row col" argument otherwise works from current cursor position.
Sunday, December 31, 2017
Last Post for 2017!
A lot of work has been done on the development sources over the past month. Most are the addition of extra functionality to the existing widget set along with a few internal bug fixes.
Here looking forward to 2018!
2017-12:
Added three macro-like commands used for testing the existence of
proceedures and variables: __DEF_PROC__, __DEF_VAR__ and __DEF_GLOBAL__
gnocl::tree/list
o changed command onSelectionChanged to selectionChanged.
o new option -keys, keywords or tags use in saving off column data.
o sub-command getFullist has new options, -keys, return list data as ro
gnocl::fileChooserDialog
o Fixed problem of widget failing to return and empty string when cancel button selected.
gnocl::winfo
o gnocl::winfo geometry has new option, -tagged. This will return geometry as a tagged list.
eg: puts [gnocl::winfo geometry $wid -tagged] returns:
x val y val w val h val
This option simplifies up value setting from using list of scan operations by using arrays or dicts.
eg:
array set geometry [gnocl::winfo geometry $wid -tagged]
gnocl::frame
o new command, remove
gnocl::font
o new command, returns tagged list of attributes from font description string.
gnocl::screen
o new sub-command: resolution
gnoclk::labelEdit, gnocl::labelText, gnocl::labelWidget
o new options: -visible
gnocl::labelWidget
o new options: -visible, -widgetWidthGroup
gnocl::labelEntry
o new options: -onFocusIn, -OnFocusOut, -innerBorder, -heightRequest
-onExpose
o additional substitution strings %t, %p.
gnocl::window
o added "remove" command
gnocl::expander
o added "remove" command
o new command, activate
o %t, %p and %c added to -onActivate callback substitution strings
o added option -tooltip
gnocl::progressBar
o new options, -variable and -textVariable
Module re-written to creat parameters file for the widget creation.
-onClicked
o added %x, %y, %w and %h subsitution strings.
gnocl::aboutDialog
o added -x, -y, -width and -height options.
gnocl::fileChooserButton
gnocl::folderChooserButton
o added -onFileSet and -onSelectionChanged.
-onFileSet, new substitution string, %f, current file/folder path, responds to dialog.
-onSelectonChanged, responds to selections from popup-menu, %c %d %f %u %w
Here looking forward to 2018!
2017-12:
Added three macro-like commands used for testing the existence of
proceedures and variables: __DEF_PROC__, __DEF_VAR__ and __DEF_GLOBAL__
gnocl::tree/list
o changed command onSelectionChanged to selectionChanged.
o new option -keys, keywords or tags use in saving off column data.
o sub-command getFullist has new options, -keys, return list data as ro
gnocl::fileChooserDialog
o Fixed problem of widget failing to return and empty string when cancel button selected.
gnocl::winfo
o gnocl::winfo geometry has new option, -tagged. This will return geometry as a tagged list.
eg: puts [gnocl::winfo geometry $wid -tagged] returns:
x val y val w val h val
This option simplifies up value setting from using list of scan operations by using arrays or dicts.
eg:
array set geometry [gnocl::winfo geometry $wid -tagged]
gnocl::frame
o new command, remove
gnocl::font
o new command, returns tagged list of attributes from font description string.
gnocl::screen
o new sub-command: resolution
gnoclk::labelEdit, gnocl::labelText, gnocl::labelWidget
o new options: -visible
gnocl::labelWidget
o new options: -visible, -widgetWidthGroup
gnocl::labelEntry
o new options: -onFocusIn, -OnFocusOut, -innerBorder, -heightRequest
-onExpose
o additional substitution strings %t, %p.
gnocl::window
o added "remove" command
gnocl::expander
o added "remove" command
o new command, activate
o %t, %p and %c added to -onActivate callback substitution strings
o added option -tooltip
gnocl::progressBar
o new options, -variable and -textVariable
Module re-written to creat parameters file for the widget creation.
-onClicked
o added %x, %y, %w and %h subsitution strings.
gnocl::aboutDialog
o added -x, -y, -width and -height options.
gnocl::fileChooserButton
gnocl::folderChooserButton
o added -onFileSet and -onSelectionChanged.
-onFileSet, new substitution string, %f, current file/folder path, responds to dialog.
-onSelectonChanged, responds to selections from popup-menu, %c %d %f %u %w
Thursday, November 30, 2017
Recent Changes, to the sources
Latest Nightly build now available from SourceForge. Lots of work done over the past 6 weeks, and here's the gist from the project NEWS.
2017-11:
gnocl::paned
o added -min, -max
gnocl::treeList
o appending row to image columntype now supports %& percent-string (icon-theme).
gnocl::image
o -image options now supports %& (icon-theme) percent string.
gnocl::button
o -icon options now supports %& (icon-theme) percent string.
o -iconSize, set size of icon, default = 22.
gnocl::toolPalette
o drag and drop between itemgroups now works. Unecessary options removed.
gnocl::recentFilter
o new command, allow the creation and manipulation of filters for use in recent menus, dialogs and widgets.
gnocl::paned
o added commands pack, remove.
gnocl::notebook
o tab tearoff now fully supported, closing tearing window restores tabs to original notebook.
tearoff window closes when last tab removed.
o added -detachable, -reorderable, and -enablePopup.
gnocl::dialog
o will now close without setting -onResponse option.
o added -action and -content (same as -child).
o problems with -icon fixed.
gnocl::messageDialog
o added gnocl::message as synonym for gnocl::messageDialog.
o module source renamed from msgDialog.c to message.c
gnocl::radioButton, gnocl::menuRadioItem
o added %g substitution implemented in callback
gnocl::menuItem
o clash between markup and percept mnemonics resolved, markup removed for %_ strings.
gnocl::menuCheckItem
o -radio, choose between button or tick (default).
o onToggled renamed to toggle, now works correctly
o %g substitution implemented in callback.
gnocl::checkButton
o %g substitution implemented in callback.
gnocl::screen
o new sub-command, primary.
gnocl::menu
o completed code for addBegin and addEnd
although may prove of limited value in scripts, the following commands have been added:
deactivate, itemActivate, select, reposition, get
2017-10:
Widget subcommands "options" and "commands" removed from all objects. Use gnocl:: options|commands.
gnocl::fontSelectionDialog
o module completely revised, commands not permissible while dialog running.
gnocl::fontSelection
o added options: -data, -name, -tooltip, -widthRequest, -heightRequest and -onClicked
gnocl::iconView
o BUG FIX: -tooltip option no longer requires setting when adding icons.
configure sub-command now works properly
-selectionMode fully implemented
NEW COMMANDS: get, select, getSelection
gnoc::infoBar
Module tidied up, ineffectual calls to Gtk api removed.
Available options are:
-child, -type, -buttons, -actionWisdgets, -data, -onResponse, -onShowHelp,
-visible, -sensitive, -name, -heightRequest, -widthRequest, -tooltip
2017-11:
gnocl::paned
o added -min, -max
gnocl::treeList
o appending row to image columntype now supports %& percent-string (icon-theme).
gnocl::image
o -image options now supports %& (icon-theme) percent string.
gnocl::button
o -icon options now supports %& (icon-theme) percent string.
o -iconSize, set size of icon, default = 22.
gnocl::toolPalette
o drag and drop between itemgroups now works. Unecessary options removed.
gnocl::recentFilter
o new command, allow the creation and manipulation of filters for use in recent menus, dialogs and widgets.
gnocl::paned
o added commands pack, remove.
gnocl::notebook
o tab tearoff now fully supported, closing tearing window restores tabs to original notebook.
tearoff window closes when last tab removed.
o added -detachable, -reorderable, and -enablePopup.
gnocl::dialog
o will now close without setting -onResponse option.
o added -action and -content (same as -child).
o problems with -icon fixed.
gnocl::messageDialog
o added gnocl::message as synonym for gnocl::messageDialog.
o module source renamed from msgDialog.c to message.c
gnocl::radioButton, gnocl::menuRadioItem
o added %g substitution implemented in callback
gnocl::menuItem
o clash between markup and percept mnemonics resolved, markup removed for %_ strings.
gnocl::menuCheckItem
o -radio, choose between button or tick (default).
o onToggled renamed to toggle, now works correctly
o %g substitution implemented in callback.
gnocl::checkButton
o %g substitution implemented in callback.
gnocl::screen
o new sub-command, primary.
gnocl::menu
o completed code for addBegin and addEnd
although may prove of limited value in scripts, the following commands have been added:
deactivate, itemActivate, select, reposition, get
2017-10:
Widget subcommands "options" and "commands" removed from all objects. Use gnocl::
gnocl::fontSelectionDialog
o module completely revised, commands not permissible while dialog running.
gnocl::fontSelection
o added options: -data, -name, -tooltip, -widthRequest, -heightRequest and -onClicked
gnocl::iconView
o BUG FIX: -tooltip option no longer requires setting when adding icons.
configure sub-command now works properly
-selectionMode fully implemented
NEW COMMANDS: get, select, getSelection
gnoc::infoBar
Module tidied up, ineffectual calls to Gtk api removed.
Available options are:
-child, -type, -buttons, -actionWisdgets, -data, -onResponse, -onShowHelp,
-visible, -sensitive, -name, -heightRequest, -widthRequest, -tooltip
Saturday, October 07, 2017
September News
The codebase is currently undergoing a deep clean-up with a number of internal modifications and enhancements to largely yet unannounced features.
2017-09:
o added gnocl::widgets, returns a list of available widget classes.
gnocl::commands will now return only a list of non-widget creating commands.
o commands and options calls to widgets will return lists of relevant options, without creating object instance.
e.g. puts [gnocl::button options] ; puts [gnocl::button commands]
More complex widget such as gnocl::text with sub-object may have more options, e.g: [puts [gnocl::text tagOptions].
o gnocl::commands will now return only a list of non-widget creating commands.
o gnocl::info new sub-commands:
cursors returns list of available cursors, and
subStrings returns list of callback substitution string and their meanings.
2017-09:
o added gnocl::widgets, returns a list of available widget classes.
gnocl::commands will now return only a list of non-widget creating commands.
o commands and options calls to widgets will return lists of relevant options, without creating object instance.
e.g. puts [gnocl::button options] ; puts [gnocl::button commands]
More complex widget such as gnocl::text with sub-object may have more options, e.g: [puts [gnocl::text tagOptions].
o gnocl::commands will now return only a list of non-widget creating commands.
o gnocl::info new sub-commands:
cursors returns list of available cursors, and
subStrings returns list of callback substitution string and their meanings.
Thursday, August 24, 2017
Displaying Tcl dict contents in a gnocl::list widget
The following script shows how to display the contents of a simple Tcl dict within a gnocl::list widget.
#!/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"
package require Gnocl
namespace eval pkg {}
#---------------
# Create a gnocl::list displaying the contents of a Tcl dict.
#---------------
# Arguments:
# val dict data to display.
# args
# Returns:
# wid of gnocl::list containing the dict data.
#
proc pkg::dict2list { vals } {
set res ""
# get a complete list of info keys
set c key
dict for {id info} $vals {
foreach {a b} $info {
if { [string first $a $c] == -1 } { lappend c $a }
}
}
set headings [lsort -unique $c]
set res [gnocl::list -titles $c]
# populate the list
dict for {id info} $vals {
set row2 [string repeat "{} " [llength $c]]
set row2 [lreplace $row2 0 0 $id]
foreach {a b} $info {
set d [lsearch $c $a]
set row2 [lreplace $row2 $d $d $b]
}
$res add [list $row2]
set row ""
}
return $res
}
#---------------
# Add a new column to an existing list or tree
# Create new widget, add data and insert into parent container.
#---------------
# Arguments:
# wid gnocl::list/gnocl::tree to modify
# title title for new column
# type data type
# Returns:
# wid widget id of replacement object
#
proc pkg::addColumn { wid title type } {
set titles [$wid cget -titles]
set types [$wid cget -types]
set data [$wid getFullList]
lappend titles $title
lappend types $type
set parent [gnocl::winfo parent $wid]
$wid delete
set wid [gnocl::list -titles $titles -types $types]
$wid add $data
$parent configure -child $wid
return $wid
}
#---------------
# Script Main Function
#---------------
# Arguments:
# args
# Returns:
# none
#
proc main { args } {
dict set employeeInfo 12345-A forenames "Joe"
dict set employeeInfo 12345-A surname "Schmoe"
dict set employeeInfo 12345-A street "147 Short Street"
dict set employeeInfo 12345-A city "Springfield"
dict set employeeInfo 12345-A phone "555-1234"
dict set employeeInfo 98372-J forenames "Anne"
dict set employeeInfo 98372-J surname "Other"
dict set employeeInfo 98372-J street "32995 Oakdale Way"
dict set employeeInfo 98372-J city "Springfield"
dict set employeeInfo 98372-J phone "555-8765"
set lst [pkg::dict2list $employeeInfo]
gnocl::window -child $lst -setSize 0.25 -width 800 -y 500 -x 100
# add an extra column to the list
set lst [pkg::addColumn $lst email string]
}
main
Recent Changes
Just a few additions and enhancements to the 0.9.96 code over the past couple of months. Latest sources available at Sourceforge.
2017-08:
gnocl::tree, gnocl::list
o cget -types now works.
o FIXED: crashing when getFullList called on model with 0 rows.
gnocl::text
o -onPopulatePopup Substitution options %r, %c and %t changed to %R(ow), %C(olumn) and %T(ags),
and %t reallocated to return id of widget toplevel window.
2017-07:
gnocl::entry
o added -onButtonPress and -onButtonRelease
o added getSelectionBounds for consistency with the text widget
gnocl::toolBar
o menuButton -icon can now be reconfigured.
gnocl::text
o FIXED: problems with serialize/deserialize, now tests for valid filename.
gnocl::comboEntry
o added -baseColor
2017-06:
gnocl::labelText
o added -orientation -leftMargin -rightMargin -margins -paragraphSpacing -lineSpacing -justify
o new commands getSelection
gnocl::text
o set -wrapMode default to word.
gnocl::statusBar
o added -baseFont
2017-05:
gnocl::tree, gnocl::list
o added %S to -onButtonRelease and -onButtonPress substitutions strings, returns a list of the selected items
gnocl::pixbuf
o new load option, -data, will create pixbufs from inline xpm data, e.g. menu icons.
gnocl::notebook
o -onFocusOut handler, now supports %g %p %t %w %D substitution strings. Where 'D' is direction.
gnocl::eventBox, gnocl::fixed and gnocl::window
o completed support for the -onAdd and -onRemove events, ie. adding or removing child widget to or from a container.
gnocl::image
o new options -scale, -constrain, -constrainWidth, -constrainHeight, -data
2017-08:
gnocl::tree, gnocl::list
o cget -types now works.
o FIXED: crashing when getFullList called on model with 0 rows.
gnocl::text
o -onPopulatePopup Substitution options %r, %c and %t changed to %R(ow), %C(olumn) and %T(ags),
and %t reallocated to return id of widget toplevel window.
2017-07:
gnocl::entry
o added -onButtonPress and -onButtonRelease
o added getSelectionBounds for consistency with the text widget
gnocl::toolBar
o menuButton -icon can now be reconfigured.
gnocl::text
o FIXED: problems with serialize/deserialize, now tests for valid filename.
gnocl::comboEntry
o added -baseColor
2017-06:
gnocl::labelText
o added -orientation -leftMargin -rightMargin -margins -paragraphSpacing -lineSpacing -justify
o new commands getSelection
gnocl::text
o set -wrapMode default to word.
gnocl::statusBar
o added -baseFont
2017-05:
gnocl::tree, gnocl::list
o added %S to -onButtonRelease and -onButtonPress substitutions strings, returns a list of the selected items
gnocl::pixbuf
o new load option, -data, will create pixbufs from inline xpm data, e.g. menu icons.
gnocl::notebook
o -onFocusOut handler, now supports %g %p %t %w %D substitution strings. Where 'D' is direction.
gnocl::eventBox, gnocl::fixed and gnocl::window
o completed support for the -onAdd and -onRemove events, ie. adding or removing child widget to or from a container.
gnocl::image
o new options -scale, -constrain, -constrainWidth, -constrainHeight, -data
Subscribe to:
Posts (Atom)
-
Given this module some attention today. Added some of the more package wide options to the module and created customised handler for settin...
-
Over the past few programming sessions I've been working on producing a central point, a dashboard, around which it's possible to se...
-
The contents of a GtkTextBuffer can be saved as serialized binary file. Whilst converting such a file to ascii may be problematic if the bu...