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 %{
13This module provides the Tk_AppInit() function needed to build a
14new version of the wish executable.   Like tclsh.i, this file should
15not be used with dynamic loading.  To make an interface file work with
16both static and dynamic loading, put something like this in your
17interface file :
18
19     #ifdef STATIC
20     %include <wish.i>
21     #endif
22
23A startup file may be specified by defining the symbol SWIG_RcFileName
24as 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
38char *SWIG_RcFileName = "~/.wishrc";
39#endif
40
41#ifdef MAC_TCL
42extern int	MacintoshInit _ANSI_ARGS_((void));
43extern 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
65int 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
127int 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
143extern int main();
144#endif
145
146%}
147
148
149
150