Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | New version of TIP #510 from René Zaumseil. Complete rewrite, with tkpath now included. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
1acb7ad7a52ab9c7f1c61206c9c65767 |
User & Date: | fvogel 2018-11-30 21:32:50.534 |
Context
2018-12-03
| ||
07:59 | merge wordsmithing branch "kbk-527-redaction" check-in: 5dab3d4c27 user: sebres tags: trunk | |
2018-11-30
| ||
21:32 | New version of TIP #510 from René Zaumseil. Complete rewrite, with tkpath now included. check-in: 1acb7ad7a5 user: fvogel tags: trunk | |
2018-11-27
| ||
15:58 | TIP 527 almost ready check-in: 54c0b81bab user: sebres tags: trunk | |
Changes
Changes to index.json.
︙ | ︙ | |||
12 13 14 15 16 17 18 | "517":{"url":"./tip/517.md","keywords":"tk menu","created":"13-Sept-2018","post-history":"","state":"Final","tk-branch":"tip-517","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 517: Add -activerelief Configuration Option to the menu widget","author":["Francois Vogel <[email protected]>"],"is-jest":false}, "516":{"url":"./tip/516.md","keywords":"Tcl, TclOO","state":"Final","type":"Project","author":["Donal K. Fellows <[email protected]>"],"vote-results":"4/0/5 accepted","votes-for":"DKF, JN, JD, AK","votes-against":"none","created":"7-Sept-2018","title":"# TIP 516: More OO Slot Operations","post-history":"","tcl-branch":"tip-516","vote":"Done","tcl-version":"8.7","votes-present":"BG, KBK, DGP, FV, SL","is-jest":false}, "515":{"url":"./tip/515.md","state":"Final","type":"Project","author":["Jan Nijtmans <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"7-Sept-2018","title":"# TIP 515: Level Value Reform","post-history":"","tcl-branch":"tip-515","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false}, "514":{"url":"./tip/514.md","keywords":"Tcl","created":"20-Aug-2018","post-history":"","state":"Final","tcl-branch":"tip-514","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 514: Platform differences in handling int/wide","author":["Jan Nijtmans <[email protected]>"],"is-jest":false}, "513":{"url":"./tip/513.md","keywords":"Tcl,data structure","created":"02-Aug-2017","post-history":"","state":"Draft","implementation-url":"https://core.tcl.tk/tips/doc/trunk/attach/513/agendas.tcl","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 513: Better support for 'agendas' as arrays, dictionaries or lists","author":["Florian Murr <[email protected]>"],"is-jest":false}, "512":{"url":"./tip/512.md","keywords":"Tcl","created":"25-June-2018","post-history":"","state":"Final","tcl-branch":"tip-512","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 512: No stub for Tcl_SetExitProc()","author":["Jan Nijtmans <[email protected]>"],"is-jest":false}, "511":{"url":"./tip/511.md","keywords":"Tcl,threads","state":"Accepted","type":"Project","author":["Christian Werner <[email protected]>"],"vote-results":"4/0/5 accepted","votes-for":"DKF, BG, KBK, JN, JD, SL","votes-against":"none","created":"14-June-2018","title":"# TIP 511: Implement Tcl_AsyncMarkFromSignal()","post-history":"","implementation-url":"https://www.androwish.org/index.html/info/40790af1e8e4ec9f","vote":"Done","tcl-version":"8.7","votes-present":"DGP, FV, AK","is-jest":false}, | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | "517":{"url":"./tip/517.md","keywords":"tk menu","created":"13-Sept-2018","post-history":"","state":"Final","tk-branch":"tip-517","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 517: Add -activerelief Configuration Option to the menu widget","author":["Francois Vogel <[email protected]>"],"is-jest":false}, "516":{"url":"./tip/516.md","keywords":"Tcl, TclOO","state":"Final","type":"Project","author":["Donal K. Fellows <[email protected]>"],"vote-results":"4/0/5 accepted","votes-for":"DKF, JN, JD, AK","votes-against":"none","created":"7-Sept-2018","title":"# TIP 516: More OO Slot Operations","post-history":"","tcl-branch":"tip-516","vote":"Done","tcl-version":"8.7","votes-present":"BG, KBK, DGP, FV, SL","is-jest":false}, "515":{"url":"./tip/515.md","state":"Final","type":"Project","author":["Jan Nijtmans <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"7-Sept-2018","title":"# TIP 515: Level Value Reform","post-history":"","tcl-branch":"tip-515","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false}, "514":{"url":"./tip/514.md","keywords":"Tcl","created":"20-Aug-2018","post-history":"","state":"Final","tcl-branch":"tip-514","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 514: Platform differences in handling int/wide","author":["Jan Nijtmans <[email protected]>"],"is-jest":false}, "513":{"url":"./tip/513.md","keywords":"Tcl,data structure","created":"02-Aug-2017","post-history":"","state":"Draft","implementation-url":"https://core.tcl.tk/tips/doc/trunk/attach/513/agendas.tcl","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 513: Better support for 'agendas' as arrays, dictionaries or lists","author":["Florian Murr <[email protected]>"],"is-jest":false}, "512":{"url":"./tip/512.md","keywords":"Tcl","created":"25-June-2018","post-history":"","state":"Final","tcl-branch":"tip-512","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 512: No stub for Tcl_SetExitProc()","author":["Jan Nijtmans <[email protected]>"],"is-jest":false}, "511":{"url":"./tip/511.md","keywords":"Tcl,threads","state":"Accepted","type":"Project","author":["Christian Werner <[email protected]>"],"vote-results":"4/0/5 accepted","votes-for":"DKF, BG, KBK, JN, JD, SL","votes-against":"none","created":"14-June-2018","title":"# TIP 511: Implement Tcl_AsyncMarkFromSignal()","post-history":"","implementation-url":"https://www.androwish.org/index.html/info/40790af1e8e4ec9f","vote":"Done","tcl-version":"8.7","votes-present":"DGP, FV, AK","is-jest":false}, "510":{"url":"./tip/510.md","":"might be to just co-distribute, just as TDBC is with Tcl","keywords":"Tk","state":"Draft","vote-summary":"Rejected 1/3/1","type":"Project","tk-branch":"tip-510","author":["René Zaumseil <[email protected]>"],"votes-against":"KBK, JN, FV","votes-for":"DKF","created":"5-Jun-2018","vote-comments":"code not yet ready, needs porting to macOS; alternate","title":"# TIP 510: Add Rbc and Tkpath widgets to Tk","post-history":"","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false}, "509":{"url":"./tip/509.md","keywords":"Tcl,threads","state":"Final","type":"Project","author":["Frédéric Bonnet <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"24-May-2018","title":"# TIP 509: Implement reentrant mutexes on all platforms","post-history":"","tcl-branch":"tip-509","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false}, "508":{"url":"./tip/508.md","keywords":"Tcl,array","state":"Final","type":"Project","author":["Frédéric Bonnet <[email protected]>"],"vote-results":"9/0/0 accepted","votes-for":"DKF, BG, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"13-May-2018","title":"# TIP 508: New subcommand [array default]","post-history":"","tcl-branch":"tip-508","vote":"Done","tcl-version":"8.7","votes-present":"none","is-jest":false}, "507":{"url":"./tip/507.md","keywords":"Tk","created":"9-May-2018","post-history":"","state":"Draft","tk-branch":"tip-507","tcl-version":"8.7","vote":"","type":"Project","title":"# TIP 507: Include simple SVG support with nanosvg","author":["René Zaumseil <[email protected]>"],"is-jest":false}, "506":{"url":"./tip/506.md","state":"Final","vote-summary":"Accepted 5/0/1","type":"Project","author":["Don Porter <[email protected]>"],"votes-for":"DKF, KBK, JN, DGP, SL","votes-against":"none","created":"30-Mar-2018","title":"# TIP 506: Purge RefCount Macros","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-506","votes-present":"BG, FV","is-jest":false}, "505":{"url":"./tip/505.md","state":"Final","type":"Project","author":["Don Porter <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"26-Mar-2018","title":"# TIP 505: Make [lreplace] Accept All Out-of-Range Index Values","post-history":"","tcl-branch":"tip-505","vote":"Done","tcl-version":"8.6.9","votes-present":"BG","is-jest":false}, "504":{"url":"./tip/504.md","keywords":"Tcl,string,insert","obsoletes":"475","created":"21-Mar-2018","post-history":"","state":"Draft","tcl-branch":"dgp-string-insert","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 504: New subcommand [string insert]","author":["Don Porter <[email protected]>"],"is-jest":false}, "503":{"url":"./tip/503.md","created":"05-Feb-2018","post-history":"","state":"Final","tcl-branch":"tip-503","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 503: End Tcl 8.3 Source Compatibility Support","author":["Don Porter <[email protected]>"],"is-jest":false}, |
︙ | ︙ | |||
525 526 527 528 529 530 531 | "4":{"url":"./tip/4.md","created":"26-Oct-2000","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 4: Tcl Release and Distribution Philosophy","discussions-to":"news:comp.lang.tcl","author":["Brent Welch <[email protected]>","Donal K. Fellows <[email protected]>","Larry W. Virden <[email protected]>","Larry W. Virden <[email protected]>"],"is-jest":false}, "3":{"url":"./tip/3.md","created":"14-Sep-2000","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 3: TIP Format","author":["Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false}, "2":{"url":"./tip/2.md","created":"12-Sep-2000","post-history":"","state":"Draft","vote":"Pending","type":"Process","title":"# TIP 2: TIP Guidelines","author":["Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>","Don Porter <[email protected]>","Mo DeJong <[email protected]>","Larry W. Virden <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false}, "1":{"url":"./tip/1.md","created":"14-Sep-2000","post-history":"","state":"Active","vote":"No voting","type":"Informational","title":"# TIP 1: TIP Index","author":["TIP Editor <[email protected]>"],"is-jest":false}, "0":{"url":"./tip/0.md","created":"11-Dec-2000","post-history":"","state":"Final","vote":"Done","type":"Process","title":"# TIP 0: Tcl Core Team Basic Rules","author":["John Ousterhout <[email protected]>"],"is-jest":false}, "@min": 0, "@max": 527 | | | 525 526 527 528 529 530 531 532 | "4":{"url":"./tip/4.md","created":"26-Oct-2000","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 4: Tcl Release and Distribution Philosophy","discussions-to":"news:comp.lang.tcl","author":["Brent Welch <[email protected]>","Donal K. Fellows <[email protected]>","Larry W. Virden <[email protected]>","Larry W. Virden <[email protected]>"],"is-jest":false}, "3":{"url":"./tip/3.md","created":"14-Sep-2000","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 3: TIP Format","author":["Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false}, "2":{"url":"./tip/2.md","created":"12-Sep-2000","post-history":"","state":"Draft","vote":"Pending","type":"Process","title":"# TIP 2: TIP Guidelines","author":["Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>","Don Porter <[email protected]>","Mo DeJong <[email protected]>","Larry W. Virden <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false}, "1":{"url":"./tip/1.md","created":"14-Sep-2000","post-history":"","state":"Active","vote":"No voting","type":"Informational","title":"# TIP 1: TIP Index","author":["TIP Editor <[email protected]>"],"is-jest":false}, "0":{"url":"./tip/0.md","created":"11-Dec-2000","post-history":"","state":"Final","vote":"Done","type":"Process","title":"# TIP 0: Tcl Core Team Basic Rules","author":["John Ousterhout <[email protected]>"],"is-jest":false}, "@min": 0, "@max": 527 }, "@timestamp": 1543613497} |
Changes to index.md.
︙ | ︙ | |||
257 258 259 260 261 262 263 | <td valign='top'><a href='https://www.androwish.org/index.html/info/40790af1e8e4ec9f'>Link</a></td> </tr> <tr class='project projectdraft projectdraft87 project87'> <td valign='top'><a href='./tip/510.md'>510</a></td> <td valign='top'>Project</td> <td valign='top'>8.7</td> <td valign='top'>Draft</td> | | | 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 | <td valign='top'><a href='https://www.androwish.org/index.html/info/40790af1e8e4ec9f'>Link</a></td> </tr> <tr class='project projectdraft projectdraft87 project87'> <td valign='top'><a href='./tip/510.md'>510</a></td> <td valign='top'>Project</td> <td valign='top'>8.7</td> <td valign='top'>Draft</td> <td valign='top'># TIP 510: Add Rbc and Tkpath widgets to Tk</td> <td valign='top'><a href='/tk/timeline?r=tip-510'>Link</a></td> </tr> <tr class='project projectfinal projectfinal87 project87'> <td valign='top'><a href='./tip/509.md'>509</a></td> <td valign='top'>Project</td> <td valign='top'>8.7</td> <td valign='top'>Final</td> |
︙ | ︙ |
Changes to tip/510.md.
|
| | > | > > | > > > > > > > > > > > > > > > > > > > | | | > > | > | > | > > > > > | > > | > > > > > > | > > > | | | < < < < | < < | < < < < < < < | < | < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | > | > > | > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | # TIP 510: Add Rbc and Tkpath widgets to Tk 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 - C-source code will be put in `.../generic/rbc/` - `rcb*.[ch]` graph widget and vector command - `tk*.[ch]` tkpath widget - Tcl-source code will be put in `.../library/` - [`graph.tcl`](https://core.tcl.tk/tk/doc/tip-510/library/graph.tcl) graph widget bindings - [`path.tcl`](https://core.tcl.tk/tk/doc/tip-510/library/path.tcl) path widget helper function under **::path** - Documentaion files will be put in `.../doc/` - [`graph.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/graph.n.md) graph widget documentation - [`vector.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/vector.n.md) graph::vector command documentation - [`path.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/path.n.md) path widget documentation - Test files will be put in `.../tests/rbc/` - [`graph.test`](https://core.tcl.tk/tk/doc/tip-510/tests/rbc/graph.test) graph widget tests - [`graph_vector.test`](https://core.tcl.tk/tk/doc/tip-510/tests/rbc/graph_vector.test) graph::vector command tests - [`path.test`](https://core.tcl.tk/tk/doc/tip-510/tests/rbc/path.test) path widget tests 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`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/rbcInt.h) and [`tkPathInt.h`]((https://core.tcl.tk/tk/doc/tip-510/generic/rbc/tkPathInt.h). No functionality is currently exported. # Discussion See also discussion at the [wiki](http://wiki.tcl.tk/55360). 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 - Mac implementation of **graph** widget. May be borrow code from **path** - Remove or change old code in `generic/rbc/rbc*` files <http://code.activestate.com/lists/tcl-core/20384/> - Hardcoded usage of compiler and libraries in [`win/Makefile.in`](https://core.tcl.tk/tk/doc/tip-510/win/Makefile.in), [`win/makefile.vc`](https://core.tcl.tk/tk/doc/tip-510/win/makefile.vc) and [`unix/Makefile.in`](https://core.tcl.tk/tk/doc/tip-510/unix/Makefile.in) (search for "#RZ TODO"). - Add **path** files in Mac implementation. It works at least in [Androwish][]. - Which platforms should be used in **path** - SDL/AGG: platform independent, more work is needed using [`tkSDLAGGPath.cpp`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/tkSDLAGGPath.cpp). See in [Androwish][] - GDI+ on Windows => working with [`tkWinGDIPlusPath.cpp`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/`tkWinGDIPlusPath.cpp) - Cairo on unix => working with [`tkUnixCairoPath.c`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/tkUnixCairoPath.c) - For Mac see [`tkMacOSXPath.c`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/tkMacOSXPath.c) - Provide demos - Add more **path** tests - Is it necessary to translate the documentation into man format? - It is currently not possible to use unique abbreviations of slass method names p.e. "graph .g; .g conf" A workaround would be to add all those method names. May be this can be solved in tcl::oo directly? 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](https://core.tcl.tk/tk/timeline?r=tip-510). Test files are available in the .../tests/rbc/ directory. Documentation is available in md-Format in the .../doc/ directory. # Alternatives - Wait on new [BLT][]. - Develop widgets in extensions. # Copyright This document has been placed in the public domain. [Androwish]: <http://www.androwish.org/index.html/dir?ci=acc27dd8488dc770&name=jni/tkpath> [BLT]: <https://sourceforge.net/projects/blt/> [Rbc]: <https://sourceforge.net/projects/rbctoolkit/> [SVG]: <http://www.w3.org/TR/SVG11/> [Tkpath]: <https://sourceforge.net/projects/tclbitprint/> |