import source from 1.3.40
[external/swig.git] / Lib / tcl / wish.i
1 /* -----------------------------------------------------------------------------
2  * See the LICENSE file for information on copyright, usage and redistribution
3  * of SWIG, and the README file for authors - http://www.swig.org/release.html.
4  *
5  * wish.i
6  *
7  * SWIG File for making wish
8  * ----------------------------------------------------------------------------- */
9
10 #ifdef AUTODOC
11 %subsection "wish.i"
12 %text %{
13 This module provides the Tk_AppInit() function needed to build a 
14 new version of the wish executable.   Like tclsh.i, this file should
15 not be used with dynamic loading.  To make an interface file work with
16 both static and dynamic loading, put something like this in your
17 interface file :
18
19      #ifdef STATIC
20      %include <wish.i>
21      #endif
22
23 A startup file may be specified by defining the symbol SWIG_RcFileName
24 as follows (this should be included in a code-block) :
25
26      #define SWIG_RcFileName    "~/.mywishrc"
27 %}
28 #endif
29
30 %{
31
32
33 /* Initialization code for wish */
34
35 #include <tk.h>
36
37 #ifndef SWIG_RcFileName
38 char *SWIG_RcFileName = "~/.wishrc";
39 #endif
40
41 #ifdef MAC_TCL
42 extern int      MacintoshInit _ANSI_ARGS_((void));
43 extern int      SetupMainInterp _ANSI_ARGS_((Tcl_Interp *interp));
44 #endif
45
46 /*
47  *----------------------------------------------------------------------
48  *
49  * Tcl_AppInit --
50  *
51  *      This procedure performs application-specific initialization.
52  *      Most applications, especially those that incorporate additional
53  *      packages, will have their own version of this procedure.
54  *
55  * Results:
56  *      Returns a standard Tcl completion code, and leaves an error
57  *      message in interp->result if an error occurs.
58  *
59  * Side effects:
60  *      Depends on the startup script.
61  *
62  *----------------------------------------------------------------------
63  */
64
65 int Tcl_AppInit(Tcl_Interp *interp)
66 {
67 #ifndef MAC_TCL
68     Tk_Window main;
69     main = Tk_MainWindow(interp);
70 #endif
71     /*
72      * Call the init procedures for included packages.  Each call should
73      * look like this:
74      *
75      * if (Mod_Init(interp) == TCL_ERROR) {
76      *     return TCL_ERROR;
77      * }
78      *
79      * where "Mod" is the name of the module.
80      */
81
82     if (Tcl_Init(interp) == TCL_ERROR) {
83         return TCL_ERROR;
84     }
85
86     if (Tk_Init(interp) == TCL_ERROR) {
87         return TCL_ERROR;
88     }
89
90     /*
91      * Call Tcl_CreateCommand for application-specific commands, if
92      * they weren't already created by the init procedures called above.
93      */
94
95     if (SWIG_init(interp) == TCL_ERROR) {
96       return TCL_ERROR;
97     }
98     
99 #ifdef MAC_TCL
100     SetupMainInterp(interp);
101 #endif
102         
103     /*
104      * Specify a user-specific startup file to invoke if the application
105      * is run interactively.  Typically the startup file is "~/.apprc"
106      * where "app" is the name of the application.  If this line is deleted
107      * then no user-specific startup file will be run under any conditions.
108      */
109
110 #if TCL_MAJOR_VERSION >= 8 || TCL_MAJOR_VERSION == 7 && TCL_MINOR_VERSION >= 5
111    Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY);
112 #else
113    tcl_RcFileName = SWIG_RcFileName;
114 #endif
115
116 /* For Macintosh might also want this */
117
118 #ifdef MAC_TCL
119 #ifdef SWIG_RcRsrcName
120     Tcl_SetVar(interp, (char *) "tcl_rcRsrcName",SWIG_RcRsrcName,TCL_GLOBAL_ONLY);
121 #endif
122 #endif
123     return TCL_OK;
124 }
125
126 #if TK_MAJOR_VERSION >= 4
127 int main(int argc, char **argv) {
128
129 #ifdef MAC_TCL
130   char *newArgv[2];
131   if (MacintoshInit() != TCL_OK) {
132       Tcl_Exit(1);
133   }
134   argc = 1;
135   newArgv[0] = "Wish";
136   newArgv[1] = NULL;
137   argv = newArgv;
138 #endif
139   Tk_Main(argc, argv, Tcl_AppInit);
140   return(0);
141 }
142 #else
143 extern int main();
144 #endif
145
146 %}
147
148
149