netgen/ng/Togl2.1
Matthias Hochsteger 025f8750be GUI support from Python and some cleanup
Squashed commit of the following:

commit 5058ceb9351548937487aa94073e7f59236ae9fe
Merge: d37f0af 2da1465
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 19:33:55 2017 +0200

    Merge remote-tracking branch 'origin/master' into native_tcl_macos

commit d37f0afcc1389c0c3ec0899da9c1af158c926ca5
Author: Matthias <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 19:27:12 2017 +0200

    link gui to netgen, some fixes

commit 297141455cd4fab81709c13d6253ad8114beee4a
Author: Matthias <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 19:02:47 2017 +0200

    windows fixes

commit 9bf290a60835f29762b15ee3b722da132678f90c
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 18:59:53 2017 +0200

    More cleanup, proper code separation

     ... between netgen exectuable and gui library

commit f46d438d3c9dd32f9f94642b4ec00b85611ef1dd
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 14:03:53 2017 +0200

    fix typos

commit b3d301ff4e321189aef469bff77f7cffa7b69e98
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 13:32:57 2017 +0200

    also link tk to togl on windows...

commit c3519abee7b041e45c913a45999ed2d29d4ff325
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 13:30:16 2017 +0200

    link TCL to togl on windows

commit 80b607436b45f38f4bac2708a78ef03561ad44e5
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 13:26:45 2017 +0200

    linkt TCL only to netgen executable

commit 080139a431e949e14cb9f05194e19c5129aca3d3
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 13:20:36 2017 +0200

    fix dll ex/import

commit dd68efacb01fbbbe3f136168f12fed41fa3c3c8a
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 13:15:39 2017 +0200

    fix dll export

commit 9023b9ca49b4c2b99f228f64564990e2d0246b8c
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 12:06:14 2017 +0200

    use system tcl/tk on MacOS, but download tcl/tk for windows

commit 16eb4c1b01eb5229f93274791187b2c666bb8b8e
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 12:01:36 2017 +0200

    more cleanup

commit 6df5b82a7d9a1177a755446d563d6c4b98ff6329
Merge: af23786 2b0d3f0
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 11:45:42 2017 +0200

    Merge remote-tracking branch 'origin/master' into native_tcl_macos

commit af2378637a6513de3b50841ed6314cd7e12f7205
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Wed May 10 11:45:40 2017 +0200

    some cleanup

commit 81bbe117efe25df53c71f9ae603c50ee4557703a
Author: Joachim Schöberl <joachim.schoeberl@tuwien.ac.at>
Date:   Tue May 9 20:14:46 2017 +0200

    tk-gui

commit 387e6da678661dd3b9d75d696733f46fe43d789a
Merge: e658b5b e653d8e
Author: Joachim Schöberl <joachim.schoeberl@tuwien.ac.at>
Date:   Tue May 9 18:49:20 2017 +0200

    Merge remote-tracking branch 'origin/gui_from_python' into native_tcl_macos

commit e658b5b2c1ac3264f4165b5f6d2b821b3b1b0926
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Tue May 9 18:30:35 2017 +0200

    use native tcl on macos

commit e653d8e6789d20e24b16a68bf760415940e881f8
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Mon May 8 16:37:23 2017 +0200

    next fix

commit f663c80b00754d141a02fa6abde2077c841bbafb
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Mon May 8 16:23:21 2017 +0200

    Fix symbol export on windows

commit 70d99782423d33d3fa6f80e758a7377d0cb52840
Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at>
Date:   Mon May 8 15:14:56 2017 +0200

    GUI support from Python

    Enables experimental support for starting the Netgen GUI from Python
    directly.
    To use it, just import the gui module:
    > import netgen.gui
2017-05-10 19:34:42 +02:00
..
doc merge ttk branch to master 2016-02-08 15:53:16 +01:00
GL_unused merge ttk branch to master 2016-02-08 15:53:16 +01:00
tclconfig merge ttk branch to master 2016-02-08 15:53:16 +01:00
Xmu merge ttk branch to master 2016-02-08 15:53:16 +01:00
aclocal.m4 merge ttk branch to master 2016-02-08 15:53:16 +01:00
ben.rgb merge ttk branch to master 2016-02-08 15:53:16 +01:00
CMakeLists.txt GUI support from Python and some cleanup 2017-05-10 19:34:42 +02:00
configure merge ttk branch to master 2016-02-08 15:53:16 +01:00
configure.in merge ttk branch to master 2016-02-08 15:53:16 +01:00
double.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
double.tcl merge ttk branch to master 2016-02-08 15:53:16 +01:00
gears.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
gears.tcl merge ttk branch to master 2016-02-08 15:53:16 +01:00
image.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
image.h merge ttk branch to master 2016-02-08 15:53:16 +01:00
index.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
index.tcl merge ttk branch to master 2016-02-08 15:53:16 +01:00
LICENSE merge ttk branch to master 2016-02-08 15:53:16 +01:00
Makefile.in merge ttk branch to master 2016-02-08 15:53:16 +01:00
multisample.tcl merge ttk branch to master 2016-02-08 15:53:16 +01:00
overlay.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
overlay.tcl merge ttk branch to master 2016-02-08 15:53:16 +01:00
pbuffer.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
pbuffer.tcl merge ttk branch to master 2016-02-08 15:53:16 +01:00
pkgIndex.tcl.in merge ttk branch to master 2016-02-08 15:53:16 +01:00
README.bin merge ttk branch to master 2016-02-08 15:53:16 +01:00
README.stubs merge ttk branch to master 2016-02-08 15:53:16 +01:00
stereo.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
stereo.tcl merge ttk branch to master 2016-02-08 15:53:16 +01:00
texture.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
texture.tcl merge ttk branch to master 2016-02-08 15:53:16 +01:00
togl_ws.h.in merge ttk branch to master 2016-02-08 15:53:16 +01:00
togl.c GUI support from Python and some cleanup 2017-05-10 19:34:42 +02:00
togl.decls merge ttk branch to master 2016-02-08 15:53:16 +01:00
togl.h merge ttk branch to master 2016-02-08 15:53:16 +01:00
Togl.py merge ttk branch to master 2016-02-08 15:53:16 +01:00
toglAGL.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
toglDecls.h merge ttk branch to master 2016-02-08 15:53:16 +01:00
toglFont.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
toglGLX.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
toglNSOpenGL.c fixes for nsopengl 2016-02-22 09:21:47 +01:00
toglProcAddr.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
toglpy.h merge ttk branch to master 2016-02-08 15:53:16 +01:00
toglStubInit.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
toglStubLib.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
toglWGL.c merge ttk branch to master 2016-02-08 15:53:16 +01:00
tree2.rgba merge ttk branch to master 2016-02-08 15:53:16 +01:00

This version of Togl is entirely free from
dependencies on Tcl/Tk's internal functions. It uses the public stubs
interface, witch means that the same binary works with any stubs-aware
wish (i.e. version >= 8.1)

It has been tested on Windows NT/2000 and Linux for several Tcl/Tk versions up
to 8.4a3. I haven't been able to test the Mac port, it propably needs mending 
but I can't see why it shouldn't work in principle.

Implementation wise, what differs from Togl 1.5 is that Togl_MakeWindowExist()
is replaced by Togl_CreateWindow(), a function that gets registered in Tk as a callback for window creation. In Tk/Tk 8.4a3, there is a new public API call 
Tk_SetClassProcs() to register this callback, but for earlier versions of Tk 
one needs to do this using some pointer magic.
There is a run-time check to determine which method to use, hence the 
same binary runs on all versions of Wish from 8.1 and up. For this to 
work you need to compile against the headers from Tcl/Tk 8.4a3 or later, or
the binary will only work for Tcl/Tk 8.1-8.4a2.
The tk8.4a3 public headers (tk8.4a3.h + tkDecls.h) are included for
conveniance, and they are used if the flag -DUSE_LOCAL_TK_H is specified.

Jonas Beskow, December 2001