TIP 510: Add Rbc and Tkpath widgets to Tk

Login
Author:         RenĂ© Zaumseil <[email protected]>
State:          Draft
Type:           Project
Vote:           Done
Created:        5-Jun-2018
Post-History:   
Keywords:       Tk
Tcl-Version:    8.7
Tk-Branch:      tip-510
Vote-Summary:   Rejected 1/3/1
Votes-For:      DKF
Votes-Against:  KBK, JN, FV
Votes-Present:  BG
Vote-Comments:  code not yet ready, needs porting to macOS; alternate
                might be to just co-distribute, just as TDBC is with Tcl

Abstract

Rbc aka "Refactored BLT Components" have graph widgets and Tk commands which are missing in Tk.

Tkpath is a 2D-canvas like widget modelled after SVG.

This TIP intends to add the following command to Tk:

rbc::graph, rbc::stripchart and rbc::barchart as graph

To get the original functionality a -style option will be added. This option can only be set on creation time.

rbc::vector as graph::vector

The vector is currently only used inside the graph widget. The namespace hidden version leaves room for a first class command with the same name.

rbc::winop snap as tk snap

Only the snap functionality is needed here. The busy command already exists as "tk busy" :)

tkp::canvas as path

The new path widget will contain the SVG like items and an additional window item to include other windows. Support functions will be placed in the ::path namespace.

Rationale

Rbc commands

Tk has already adopted some of BLT/Rbc commands. Still missing are the above mentioned commands.

Rbc is available on sourceforge and github, but the development is stalled.

BLT, the orignal source, is at sourceforge. The author G. Howlett makes sporadic changes. Then there are large times without activity. It is not possible to estimate when a new version will be ready.

Modernizing Rbc and including it in Tk will give some great new widgets. There is also less risk because Rbc is already used in different projects.

Tkpath

The original developer of Tkpath passed away. There are some mirrors, but with no real development. More information could be found on https://wiki.tcl-lang.org/page/tkpath.

The intent of Tkpath was to substitute the Tk canvas. This leads to problems with advanced features (matrix transformations). Therefore the new path widget will only contain SVG like items. The only exception is the window item. This item is necessary to embed other widgets.

Specification

Files

The new files are added to the makefiles. The calls to the initialization functions are in tkWindow.c

::oo::class widgets

The new widgets graph and path are implemented as oo::class. This will make it easy to extent the functionality. As an example see the file .../library/graph.tcl in which the method binding of the graph widget is implemented.

C Interface

Alle new functionality is in the two header files rbcInt.h and tkPathInt.h. No functionality is currently exported.

Discussion

See also discussion at the wiki.

A first voting was rejected, mostly because of the missing Mac implementation. See:

http://code.activestate.com/lists/tcl-core/20357/
http://code.activestate.com/lists/tcl-core/20368/

and with some analysis from Donal:

http://code.activestate.com/lists/tcl-core/20384/

Open issues

Any help especially with the Mac implementation would be great!

And could please look someone with configure foo at the Makefile's

Implementation

A patch implementing these changes is available in the fossil repository in the tip-510 branch.

Test files are available in the .../tests/rbc/ directory.

Documentation is available in md-Format in the .../doc/ directory.

Alternatives

Copyright

This document has been placed in the public domain.