Tuesday, February 07, 2017

Recent Changes - January 2017

The past month has seen focus placed upon tidying up some features working around GdkPixbuf support, work which I expect will continue well into February. The functionality examined seeks to address the creation of  graphics for use in applications documentation so that, for instance, in developing documentation for Gnocl itself, the interpreter will return lists of widget options and sub-commands along with screenshots of widget and windows in operation.

As can also seen from the change list below, a new file option '~' has been implemented. When Tcl scripts are 'wrapped' using FreeWrap or TclKit, Gtk api calls cannot directly access files within the VFS (which is transparent to Tcl itself). This functionality is achieved by first extracting files to the /tmp directory a location outside the VFS, from where they then can be accessed.

2017-01:
    gnocl::pixBuf
        o new commands paste, snapshot, windowshot.
        o get drawAble
        o bug fixed in composite
    gnocl::window
        o New command snapShot - take screenshot of the window for documentation purpose.
    New %-string type '~'. Denoting file existing within a TclVFS directory structure.

Friday, January 06, 2017

December 2016 Changes

A summary of the past months changes to the gnocl core module. These enhancements offer a extra means of fine-tuning the appearance of gnocl base applications.

  New commands:
        o gnocl::property, set and override application wide settings.
        o gnocl::data, set and get additional widget data associations.
    gnocl::checkButton
        o added -widthGroup
    gnocl::radioButton
        o added options -normalBackgroundColor and -prelightBackgroundColor
    New command gnocl::license, returns configurable BDS style licence for use with Gnocl or Gnocl derived projects.
    gnocl::window
        o beep sub-command functionality restored.
    New convenience widget: gnocl::labelWidget, much like gnocl::labelEntry and gnocl::labelText, useful for creating dialogs.
    Note, labelWidget can only contain one child, which is destroyed if replaced.


Please contact me directly if you want a of the current 64-bit build.

Now that the new year in underway the focus of attention has moved to addressing some of the challenges associated with wrapping gnocl into executables generated by TclKit and Freewrap. Quite stealthily, Tcl accesses VFS (virtual file systems) at a level below the standard Tcl file opts commands. So, whilst Tcl commands like 'open' can directly access wrapped files, Gtk cannot. Accessing files can be achived by first unpacking object and then loading, something which can be done in either pure Tcl or internally in C within the gnocl core which is now being implemented.

Other options to look out for in January include the ability to convert and load images stores in an ascii format.

Sunday, December 18, 2016

November Source Enhancements

The following enhancements were made to the gnocl core during November, expanding the ability to configure and extract settings from a number of key widgets.

2016-11:
    gnocl::list
        o added -textColor and -gridLines, available options: none, horizontal, vertical, or both.
        o added column options: -spacing, -sortIndicator, -expand, -fixedWidth, -sortId, -sortOrder
        o added cel options: -xAlign, -yAlign, -sensitive
    gnocl::tree / gnocl::list
        o added getRow subcommand, implemented cget -titles functionality.
        o new options -horizontalSeparator and -verticalSeparator
    gnocl::fontSelectionDialog
        o -title option now works correctly.
    gnocl::entry
        o added -textColor, -textColour
        o new command: activate. Convenience function to emit 'activate' event.
    gnocl::text
        o added -insensitiveBaseColor / -insensitiveBaseColor, override style default.
    gnocl::comboBox
        o added -heightGroup
    gnocl::checkButton
        o added -baseFont, -heightGroup options

    -onButton* events
        o new substitution item %o, the bottom-left corner of the widget on screen, accurate placement of popups etc.

Tuesday, November 15, 2016

October Source Enhancements

During October the following areas of functionality were added to the development sources.  

2016-10:
    New commands: gnocl::buttonBox, gnocl::vButtonBox and gnocl::hButtonBox.
    gnocl::fontButton, gnocl::table
        o added -widthRequest, -heightRequest
    gnocl::box/vBox/hBox
        o calling cget -children now works if box -label options set (ie, box in a frame)
        o added -onDestroy, enable clearup on TCL side following widget destruction
    gnocl::table
        o added parent command

Saturday, October 01, 2016

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.