Wednesday, October 06, 2010

gnocl::stockItem

Gtk has support for stock items as well as loading graphics into containers. What has been needed for sometime is the creation of application specific stock items. This is now possible with the new gnocl::stockItem command. Although there's a lot of fiddly work done 'under the bonnet', the Tcl binding is quite simple:

gnocl::stockItem add -label News -icon [pwd]/news.png

The stock item can then be repeatedly accessed, all resizing etc out large graphics is all taken care of! For example:

set but4 [gnocl::button -icon "%#News" -text News]

The next step is to allow the creation of stockitems from pixbufs. This might be useful to someone for creating widget buttons that need refreshing.

Tuesday, October 05, 2010

gnocl::toggleButton new option -icon

Hitherto support for the gnocl::toggleButton was minimal. It displayed as text label and that was it. Like other widgets in its class, the togglebutton is also capable of displaying an icon. This it can now do via the new -icon option. All the ususal string formatting options apply.

Sunday, October 03, 2010

gnocl::toolbar menubutton item

Just finished putting the final touches together on implementing this new addition to the toolbar options. The Gtk+ toolbar menu button offers an interesting way of tackling things. As expected it provides the option to select items from a pull-down menu but it also allows a widget to be embedded in the menu item too. The only issue I had was getting the signal handlers working for the icon widget. Somehow I've got separate click signal handlers for both the widget and menu down arrow. Ok, there's a "show-menu" signal for the menu which is what is really called for, but who knows? It might be useful to someone so I'll leave it in.

It's late now (1am) and so I think its best to leave the documentation till the morning.

Saturday, September 25, 2010

gnocl::toolbar -updating

The toolbar has received my attention this week. Apart from the menubutton item requiring inclusion, the core of this module relies upon library functions deprecated since Gtk 2.4! Don't worry about script incompatibilities however as these are not an issue. I'm currently re-working the innards of this module to bring it up to date and when its completed the changes will only externally appear as a set of increased commands and options.



Monday, September 20, 2010

gnocl::abiwidget -job done!!

Well, I've now completed the implementation of all the available signal bindings supported by the Abiwidget API. There are some notable lacunae (gaps) in the level of support offered by the API is itself. Certain features that I would have expected such as document clear (rather than open a new Abiword window), document set-up, text highlighting, and direct table cel addressing would have been most desirable. As would direct access to print functions too! But, lets hope that there's more to come in this area as the last update to the module appears (maybe I'm wrong) to have been completed in 2007.

Anyway, here the latest screenshot showing entries and toggles providing feedback on the various settings of  the displayed text.




I quite like Abiword and will be exploring how to use it within some of my text processing applications. There are some 'quirks' such as the undo/redo operations and the canvas can leave drag lines a little when scrolling, but hey, that's something that can be lived with.

Finally, my gnocl megawidgets package has a rich text editing bar. This could do with revisting in order to enable it to be used in conjunction with with this new widget.




Sunday, September 19, 2010

gnocl::abiwidget signal bindings

After eating a great dinner cooked by my wife and watching tonight's episode of X-Factor, I came back to my machine and completed the first batch of signal bindings. These simply return boolean values - ideal for setting against variables to control button toggle  (i.e.. text formatting) or activation (i.e. undo/redo).

-onBold
-onItalic
-onUnderline
-onOverline
-onTopline
-onBottomline
-onSuperscript
-onSubscript
-onCanUndo
-onCanRedo
-onIsDirty
-onLeftAlign
-onCenterAlign
-onRightAlign
-onJustifyAlign
-onTextSelected
-onImageSelected
-onSelectionCleared
-onEnterSelection
-onLeaveSelection
-onTableState


The percentage substitution strings for these items current have two items %w (widget name) and %v value 0 or 1. It's probably an academic exercise only, but I think that I will add a further item. %t for signal/event type. But, that will have to wait till the morning.

The code is available from the SourceForge nightly build.

gnocl::widget -almost done ----- progress so far

The list below provides an overview of the current gnocl::abiwidget commands and any relevant subcommands. Looking at the abiwidget source code shows that there are no 'properties' as typically associated with Gtk+ widgets. This is understandable really as what appears to be here is access to the functionality branched into from the Abiword control loop. This is great as it results in speedy completion of this package. What is strikingly apparent is that there are (at least so far anyway) no options. Nor are there any styles. In practical terms this is a megawidget. Certain functionality is not directly obvious, print for example, but the default Abiword key bindings are still in place (Ctrl-P for instance will bring up the print dialog). Unless something else turns up when I read through the code, then such functionality might be evoked using a signal emit. Interestingly, I found no 'clear' function. Ctrl-N will result in a fully rendered Abiword window!

The next step for me is to implement signal handlers. These were probably set up for the management of toggle buttons etc. As there are are only three signal callback prototypes, again I think that this will be simple to complete.

As detailed documentation for the Abiwidget is practically none-existent, the behaviour of some of these commands needs a little more observation before deciding what's actually happening. Most of them, however, are self-explanatory.

    o load
    o save
    o clear (stub-only)
    o class
    o delete
    o undo
    o redo
    o cut
    o copy
    o paste
        o subcommand
            special

    o align
        o subcommand
            center
            justify
            right
            left

    o select
        o subcommands
            all
            block
            line
            word
            bob
            bod
            bol
            bow
            eob
            eod
            eol
            eow
            left
            right
            nextLine
            pageDown
            prevLine
            screenDown
            screenUp
            to

    o erase
        o subcommands
            bob
            bod
            bol
            bow
            eob
            eod
            eol
            eow
            left
            right

    o insert
        o subcommands
            data
            space
            table
            image

    o edit
        o subcommands
            header
            footer

    o file
        o subcommands
            open
            save

    o remove
        o subcommands
            header
            footer

    o toggle
        o subcommands
            bold
            underLine
            bottomLine
            insertMode
            italic
            overLine
            plain
            strike
            sub
            super
            topLine
            unindent
            bullets
            numbering

    o view
        o subcommands
            marks
            print
            normal
            onLine

    o moveto
        o subcommands
            bob
            bod
            bol
            bop
            bow
            eob
            eod
            eol
            eow
            left
            right
            nextLine
            nextPage
            nextScreen
            prevLine
            prevPage
            prevScreen

    o zoom
        o subcommands
            whole
            width

    o set
        o subcommands
            showMargin
            wordSelections
            fontName
            fontSize
            style
            textColor
            zoom
            page
            authors

    o get
        o subcommands
            showMargin
            wordSelections
            fontNames
            zoom
            page
            pageCount
            pointer
            authors

    o find
        o subcommands
            string
            prev
            next


json_shell_utils.tcl