summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/tkappinit.c51
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