Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Friday, August 28, 2020

August News

A bit late, but a couple of updates in July. The text search applying to whole words may present some issues where pattern matching on sub-strings was used. A later version may see the introduction of a -subString option.

 2020-07:
    gnocl::label
        o new options: -editable, boolean. Use in conjunction with the edit command.
         -onEnter, -onLeave, allows reaction to potential label rollover effects.
    gnocl::text
        o search will now ignore word embedded search patterns, i.e. search whole word only.

Monday, July 20, 2020

Gnocl Dashboard



Over the past few programming sessions I've been working on producing a central point, a dashboard, around which it's possible to see the various Gnocl widgets and commands in operation. In many ways like the demo script which shipped with the earlier releases of Gnocl but offers much more. The introspection functionality provides details of the various options and sub-commands of each Gnocl procedure which are displayed under the associated tab. Sample scripts are included for each item which offers newcomers a clearer insight into how make the most of what's on offer.

June News


Just a few updates and resolutions with the sources.


2020-06:
    gnocl::spinButton
        o %d substitution now works with -onValueChanged
    gnocl::info
        o new sub-command, compileDate
          returns date and time when gnocl.so compiled
    gnocl::entry
        o added %t (text contents) and %v (validate command) to -onChanged -onKeyPress subsitutions strings
        o problems with undo/redo commands resolved
        o command listStack now returns entry undo/redo stack
    gnocl::tickerTape
        o start, stop and deleted commands now work properly
    gnocl::richTextToolBar
        o problems with delete command now resolved.

Saturday, January 16, 2010

gnocl::text and the new gnocl::textBuffer object

Yesterday was a day mixed with annoyances - a whole pile of them and the coding was no exception. Next time, make sure the documentation referred to matches the version of installed on your system! I wasted a good couple of hours trying to implement support for the GtkTexBuffer "paste-done" event but no matter how I checked and re-wrote the code it would stil crash my scripts!!!! Why? This signal is implemented since Version 2.15 and I have version 2.14 installed! That's what happens when one fails to check which set of docs are bookmarked in the browser. Ok, I've just commented out the relevant code for now, just until I upgrade to Gtk+ 2.19 or whatever its up to now!
Today, however, I thought that I'd take a look at implementing a new module, gnocl::textBuffer using the prototype gnocl::assistant module builder mentioned earlier in this blog. Worked a treat, only needed a couple of tweeks and its working well.
This new module enables the script to create multiple text buffers to be created and registered with the interpreter. Nice! This value of this lies in decluttering the UI. Different docs currently open for editing can be accessed through a menu rather than using tabs or new edit windows. Really nice stuff. This has also required th addition of a new gnocl::text option '-buffer' which enables the script to interactively switch between buffers. This script shows how it works.

#---------------
# test-text-buffer.tcl
#---------------
# William J Giddings
# 16/Jan/2010
#---------------
#!/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"
#---------------

package require Gnocl

set box1 [gnocl::box -orientation vertical]
set box2 [gnocl::box ]
$box1 add $box2

set txt [gnocl::text \
-baseFont {Sans 14} \
-editable no \
-text "Come to me in the silence of the night\nChristina Rossetti (1830-1894)" \
-scrollbar always]

foreach {i j} {0 Title 1 Verse-1 2 Verse-2 3 Verse-3} {
set rad($i) [gnocl::radioButton \
-text $j \
-variable buff \
-onValue $i]
$rad($i) configure -onToggled { $txt configure -buffer $tbuf($buff) }
$box2 add [set rad($i)]
}

$box1 add $txt -fill {1 1} -expand 1

gnocl::window -child $box1 -defaultWidth 480 -defaultHeight 240 -onDestroy {exit}

set verse(0) [$txt get start end]

set verse(1) {Come to me in the silence of the night;
Come to me in the speaking silence of a dream;
Come with soft rounded cheeks and eyes as bright
As sunlight on a stream;
Come back in tears,
O memory, hope, love of finished years.}

set verse(2) {O dream how sweet, too sweet, too bitter sweet,
Whose wakening should have been in Paradise,
Where souls brimfull of love abide and meet;
Where thirsting longing eyes
Watch the slow door
That opening, letting in, lets out no more.}

set verse(3) {Yet come to me in dreams that I may live
My very life again cold in death:
Come back to me in dreams, that I may give
Pulse for pulse, breath for breath:
Speak low, lean low,
As long ago. my love, how long ago.}

set tbuf(0) [gnocl::textBuffer -text $verse(0)]
set tbuf(1) [gnocl::textBuffer -text $verse(1)]
set tbuf(2) [gnocl::textBuffer -text $verse(2)]
set tbuf(3) [gnocl::textBuffer -text $verse(3)]

gnocl::mainLoop

And here's a snapshot:



Reblog this post [with Zemanta]

json_shell_utils.tcl