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.

    gnocl::tree & gnocl::list
        o added -textColor and -textColour
        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.
        o improved error checking to the -innerBorder option, a list of 4 integers must be supplied.
        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
        o fixed (?) intermittent segmentation crash occurring during widget destruction.

        o modified -tabs options, set to spaces rather than pixels, based upon current -basefont. Apply after widget realized.
        o added -onPush, -onPop; unpack, messageArea
        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

        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
        o added options -labelWidget, -useMarkup, -labelFill

        o repaired some broken compilation dependencies.

        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.
        o the -text option will now accept markup strings.
        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.        
        o added subcommands: commands, options and commands   
        o fixed problem with setting the -useMarkup and -align options
        o option -linear default set at 1
        o added -licences and -wrapLicence synonyms.
        o bug fix, -backgroundImage now works without causing a fatal crash. 
        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.


The earlier version of the GnoclSpellCheck module as developed on my ancient 32-bit workstation running OpenSuse 11.2 (yes, I said that it was ancient). The problem arising from using legacy equipment is that when packages like Gnocl are developed, not only can various elements cease to work (i.e GtkSpell 2 does not run at all on a Gnome 3 desktop or under Ubuntu Mate) but later libraries such as GtkSpell 3 are complete re-writes and can, as I've found, have their own bugs! A new Gnome speller, gspell is under development but this requires the bleeding edge Gtk3 libraries which, apart from being incompatible with the Gtk+2 libraries against which Gnocl is built, these latest versions are not currently part of the stable releases. So, I thought, build my own. So, I did. Rather than using the C-api for either Ispell, Aspell or Hunspell, I've just used a simple data pipe. These three packages give varying suggestions for misspelt words so, the eventual front end will enable the user to pick which engine they want to use.

Here's a screen shot of the development program.  All the key elements are present: check as you type, errors are marked up, popup menus contain alternatives.  Just a little tweaking needed (if possible) to offset the error underline as the window manager doesn't seem to adequately refresh to layout to remove artefacts.

Currently working on a GUI for the full checker based upon the LibreOffice model.