tkAppInit.c
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /* 
  2.  * tkAppInit.c --
  3.  *
  4.  * Provides a default version of the Tcl_AppInit procedure for
  5.  * use in wish and similar Tk-based applications.
  6.  *
  7.  * Copyright (c) 1993 The Regents of the University of California.
  8.  * Copyright (c) 1994-1997 Sun Microsystems, Inc.
  9.  *
  10.  * See the file "license.terms" for information on usage and redistribution
  11.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  12.  *
  13.  * RCS: @(#) $Id: tkAppInit.c,v 1.7 2002/06/21 20:24:29 dgp Exp $
  14.  */
  15. #include "tk.h"
  16. #include "locale.h"
  17. #ifdef TK_TEST
  18. extern int Tktest_Init _ANSI_ARGS_((Tcl_Interp *interp));
  19. #endif /* TK_TEST */
  20. /*
  21.  *----------------------------------------------------------------------
  22.  *
  23.  * main --
  24.  *
  25.  * This is the main program for the application.
  26.  *
  27.  * Results:
  28.  * None: Tk_Main never returns here, so this procedure never
  29.  * returns either.
  30.  *
  31.  * Side effects:
  32.  * Whatever the application does.
  33.  *
  34.  *----------------------------------------------------------------------
  35.  */
  36. int
  37. main(argc, argv)
  38.     int argc; /* Number of command-line arguments. */
  39.     char **argv; /* Values of command-line arguments. */
  40. {
  41.     /*
  42.      * The following #if block allows you to change the AppInit
  43.      * function by using a #define of TCL_LOCAL_APPINIT instead
  44.      * of rewriting this entire file.  The #if checks for that
  45.      * #define and uses Tcl_AppInit if it doesn't exist.
  46.      */
  47.     
  48. #ifndef TK_LOCAL_APPINIT
  49. #define TK_LOCAL_APPINIT Tcl_AppInit    
  50. #endif
  51.     extern int TK_LOCAL_APPINIT _ANSI_ARGS_((Tcl_Interp *interp));
  52.     
  53.     /*
  54.      * The following #if block allows you to change how Tcl finds the startup
  55.      * script, prime the library or encoding paths, fiddle with the argv,
  56.      * etc., without needing to rewrite Tk_Main()
  57.      */
  58.     
  59. #ifdef TK_LOCAL_MAIN_HOOK
  60.     extern int TK_LOCAL_MAIN_HOOK _ANSI_ARGS_((int *argc, char ***argv));
  61.     TK_LOCAL_MAIN_HOOK(&argc, &argv);
  62. #endif
  63.     Tk_Main(argc, argv, TK_LOCAL_APPINIT);
  64.     return 0; /* Needed only to prevent compiler warning. */
  65. }
  66. /*
  67.  *----------------------------------------------------------------------
  68.  *
  69.  * Tcl_AppInit --
  70.  *
  71.  * This procedure performs application-specific initialization.
  72.  * Most applications, especially those that incorporate additional
  73.  * packages, will have their own version of this procedure.
  74.  *
  75.  * Results:
  76.  * Returns a standard Tcl completion code, and leaves an error
  77.  * message in the interp's result if an error occurs.
  78.  *
  79.  * Side effects:
  80.  * Depends on the startup script.
  81.  *
  82.  *----------------------------------------------------------------------
  83.  */
  84. int
  85. Tcl_AppInit(interp)
  86.     Tcl_Interp *interp; /* Interpreter for application. */
  87. {
  88.     if (Tcl_Init(interp) == TCL_ERROR) {
  89. return TCL_ERROR;
  90.     }
  91.     if (Tk_Init(interp) == TCL_ERROR) {
  92. return TCL_ERROR;
  93.     }
  94.     Tcl_StaticPackage(interp, "Tk", Tk_Init, Tk_SafeInit);
  95. #ifdef TK_TEST
  96.     if (Tktest_Init(interp) == TCL_ERROR) {
  97. return TCL_ERROR;
  98.     }
  99.     Tcl_StaticPackage(interp, "Tktest", Tktest_Init,
  100.             (Tcl_PackageInitProc *) NULL);
  101. #endif /* TK_TEST */
  102.     /*
  103.      * Call the init procedures for included packages.  Each call should
  104.      * look like this:
  105.      *
  106.      * if (Mod_Init(interp) == TCL_ERROR) {
  107.      *     return TCL_ERROR;
  108.      * }
  109.      *
  110.      * where "Mod" is the name of the module.
  111.      */
  112.     /*
  113.      * Call Tcl_CreateCommand for application-specific commands, if
  114.      * they weren't already created by the init procedures called above.
  115.      */
  116.     /*
  117.      * Specify a user-specific startup file to invoke if the application
  118.      * is run interactively.  Typically the startup file is "~/.apprc"
  119.      * where "app" is the name of the application.  If this line is deleted
  120.      * then no user-specific startup file will be run under any conditions.
  121.      */
  122.     Tcl_SetVar(interp, "tcl_rcFileName", "~/.wishrc", TCL_GLOBAL_ONLY);
  123.     return TCL_OK;
  124. }