Skip to main content

Recent changes to the development sources


The last time the recent changes were posted was sometime during March this year.  So, to put matters right, here's a list of the recent changes. Mostly enhancements plus one or two bug fixes.


2016-09:
    gnocl::tree & gnocl::list
        o added -textColor and -textColour
    gnocl::text
        o new command, wordCount, return size of buffer in words.
        o new command, magnify. Increase/decrease basefont height by specified amount in pixels (e.g. 1 or -1), or "reset", to set to default.
    gnocl::box, gnocl::vBox, gnocl::hBox
        o new command, getPos. Returns postilion of child widget packed into box, or -1 if not found.
    gnocl::entry
        o improved error checking to the -innerBorder option, a list of 4 integers must be supplied.
    gnocl::statusBar
        o low priority command 'remove' renamed to 'subtract', this allows the 'remove' keyword to be used for removal of widgets embedded in a statusbar with the add command.
    gnocl::dialog, gnocl::fileChooserDialog
        o added -transient option
    gnocl::button
        o fixed (?) intermittent segmentation crash occurring during widget destruction.

2016-08:
    gnocl::text
        o modified -tabs options, set to spaces rather than pixels, based upon current -basefont. Apply after widget realized.
    gnocl::statusBar
        o added -onPush, -onPop; unpack, messageArea
    gnocl::progressBar
        o added -ellipsize, -baseFont, -ySpacing, -xSpacing,
        o added -steps to offer automation of the bar growth,
          prefined number of stages and advance progress with command "step".
        o added command "reset", same as using -fraction 0.0

2016-07:
    gnocl::dialog
        o new option -justification.
    gnocl::tree / gnocl::list
        o added %d substitution string to -onSelectionChanged callback.
        o module function insertRow renamed to appendRow
        o cget -titles now works
    gnocl::expander
        o added options -labelWidget, -useMarkup, -labelFill

2016-05:
    makefile
        o repaired some broken compilation dependencies.

2016-04:
    gnocl::pango
        o added subcommand escape and options -all, -basic, -extended and -offtags.
    Added %d substitution string to the -onExpose option.
    New widget, gnocl::frame. Labelled container for a single object.
    Added "centre" to the list of alignment options.
    gnocl::menuItem
        o the -text option will now accept markup strings.
    gnocl::comboEntry
        o new command getEntry, convert existing combo entry widget to a gnocl::entry object. Returns entry widget-id.
        o added option, -entryWidget. Replaces current combo widget with a new entry item.        
    gnocl::box
        o added subcommands: commands, options and commands   
    gnocl::labelEntry
        o fixed problem with setting the -useMarkup and -align options
    gnocl::assistant
        o option -linear default set at 1
    gnocl::aboutDialog
        o added -licences and -wrapLicence synonyms.
    gnocl::splashScreen
        o bug fix, -backgroundImage now works without causing a fatal crash. 
    gnocl::text
        o added -textColor (textColour), set text default colour.
        o new subcommands, addChild and moveChild. Place widget in text at specified position, opts: -mark, -position and -coords.
          When creating widgets such as gnocl::list, use -widthRequest option to set child width.

Comments

Popular posts from this blog

Simple Runtime Debugging Message Dialog

At times it's useful to see what values variables hold, or offer some pause point before the code goes elsewhere before causing havoc. Its possible to write output to the terminal but this can get lost in copious forms of other outputs, besides, there's no pausing the script execution either. The following proc creates a custom dialog which displays ad message along with the point in the calling script from which it was invoked. ## simple runtime debugging feedback dialog, alternative to console based gnocl::msg # @param msg message to display # @returns none # proc xxx::msg {txt} { set frame [info frame -1] append msg "Message:\n\n" append msg " $txt \n\n\n" append msg "Called from:\n\n" append msg "Proc:\t[lindex [info level -1] 0]\n" append msg "File:\t[file tail [dict get $frame file]]\n" append msg "Line:\t[dict get $frame line]\n" gnocl::dialog \ -type info \ -text $msg

Creating a button box with right aligned widgets

The dialog widget has its own internal functionaluty to create and position buttons at the bottom right corner of the window container. When creating these for ourselves it must be born in mind that default settings for fill and expand are both 0.5. Failing to set these will always place the child objects in the centre, regardless of alignment. For most cases these defaults are acceptable but, to create that dialog-button arrangement, use the following snippet as a model!   # to right align completely, set expand and fill to 0 set hbox [gnocl::hBox] set b1 [gnocl::button -text Select \                -data $lst                 -onClicked { puts DO-SOMETHING-WITH-%d} ] set b2 [gnocl::button -text Cancel -onClicked { puts DONE! } ] $vbox add $hbox -expand 0 -fill 0 -align right $hbox add $b1 $hbox add $b2

Changing Namespaces

I've been toying with the idea of changing the namespace used by gnocl, to something simplier, a proposition much more appealing now that I've begun migration to Gtk3 and soon to Gtk4. The changes from Gtk2 to Gtk4 will be subtantial due to many chages occuring within the Gtk api. Before committing myself, I thought how it would be useful to swap namespaces on the fly. So, here's a first quick solution:   package require -exact Gnocl 0.9.96 proc xxxx {ns1 ns2}  {     namespace eval ::${ns2} {}     set map [list $ns1 $ns2]          foreach type {commands vars procs } {         foreach item [info $type ${ns1}::*] {             set err ""             catch { rename $item [string map $map $item] } err             if { $err != "" } { puts $err }         }     }          namespace delete $ns1 } xxxx g set b1 [g::button -text BUTTON] set w1 [g::window -child $b1] set l1 [g::label -text rename] $w1 configure -child $l1 -title TEST