diff options
-rw-r--r-- | Modules/tkappinit.c | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/Modules/tkappinit.c b/Modules/tkappinit.c index fba28c5..56556c7 100644 --- a/Modules/tkappinit.c +++ b/Modules/tkappinit.c @@ -1,14 +1,22 @@ -/* appinit.c -- Tcl and Tk application initialization. */ +/* appinit.c -- Tcl and Tk application initialization. + + The function Tcl_AppInit() below initializes various Tcl packages. + It is called for each Tcl interpreter created by _tkinter.create(). + It needs to be compiled with -DWITH_<package> flags for each package + that you are statically linking with. You may have to add sections + for packages not yet listed below. + + Note that those packages for which Tcl_StaticPackage() is called with + a NULL first argument are known as "static loadable" packages to + Tcl but not actually initialized. To use these, you have to load + it explicitly, e.g. tkapp.eval("load {} Blt"). + */ #include <tcl.h> #include <tk.h> -#ifdef WITH_BLT -#include "blt.h" -#endif - int -Tcl_AppInit (interp) +Tcl_AppInit(interp) Tcl_Interp *interp; { Tk_Window main; @@ -34,31 +42,44 @@ Tcl_AppInit (interp) #ifdef WITH_PIL /* 0.2b5 and later -- not yet released as of May 14 */ { - extern void TkImaging_Init(Tcl_Interp *interp); + extern void TkImaging_Init(Tcl_Interp *); TkImaging_Init(interp); + /* XXX TkImaging_Init() doesn't have the right return type */ + /*Tcl_StaticPackage(interp, "Imaging", TkImaging_Init, NULL);*/ } #endif #ifdef WITH_PIL_OLD /* 0.2b4 and earlier */ { extern void TkImaging_Init(void); - TkImaging_Init(); + /* XXX TkImaging_Init() doesn't have the right prototype */ + /*Tcl_StaticPackage(interp, "Imaging", TkImaging_Init, NULL);*/ } #endif #ifdef WITH_TIX - if (Tix_Init (interp) == TCL_ERROR) { - fprintf(stderr, "Tix_Init error: #s\n", interp->result); - return TCL_ERROR; + { + extern int Tix_Init(Tcl_Interp *); + /* XXX Is there no Tix_SafeInit? */ + Tcl_StaticPackage(NULL, "Tix", Tix_Init, NULL); } #endif #ifdef WITH_BLT - if (Blt_Init(interp) != TCL_OK) { - fprintf(stderr, "BLT_Init error: #s\n", interp->result); - return TCL_ERROR; + { + extern int Blt_Init(Tcl_Interp *); + extern int Blt_SafeInit(Tcl_Interp *); + Tcl_StaticPackage(NULL, "Blt", Blt_Init, Blt_SafeInit); + } +#endif + +#ifdef WITH_TOGL + { + /* XXX I've heard rumors that this doesn't work */ + extern int Togl_Init(Tcl_Interp *); + /* XXX Is there no Togl_SafeInit? */ + Tcl_StaticPackage(NULL, "Togl", Togl_Init, NULL); } - Tcl_StaticPackage(interp, "Blt", Blt_Init, Blt_SafeInit); #endif #ifdef WITH_XXX |