⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tkunixsam42.c

📁 linux 下的源代码分析阅读器 red hat公司新版
💻 C
字号:
/* * tkUnixSam42.c -- * *	Initializes the Tk stand-alone module Tk version 4.2. * * Copyright (c) 1996, Expert Interface Technologies * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */#include <tkPort.h>#include <tkInt.h>#if defined(__WIN32__) || defined(_WIN32)#   define SAMTK_WINDOWS#else#   if defined(MAC_TCL)#	define SAMTK_MAC#   else#	define SAMTK_UNIX#       include <tkUnixInt.h>#   endif#endifint			SamTk_Init _ANSI_ARGS_((Tcl_Interp *interp));#include "tkSamLib.c"static intSamTkPlatformInit(interp)    Tcl_Interp * interp;{#ifdef SAMTK_UNIX    TkCreateXEventSource();#endif    Tcl_Eval(interp, "set tk_library {}");    return LoadScripts(interp);}/* * The variables and table below are used to parse arguments from * the "argv" variable in Tk_Init. */static int synchronize;static char *name;static char *display;static char *geometry;static char *colormap;static char *visual;static int rest = 0;static Tk_ArgvInfo argTable[] = {    {"-colormap", TK_ARGV_STRING, (char *) NULL, (char *) &colormap,	"Colormap for main window"},    {"-display", TK_ARGV_STRING, (char *) NULL, (char *) &display,	"Display to use"},    {"-geometry", TK_ARGV_STRING, (char *) NULL, (char *) &geometry,	"Initial geometry for window"},    {"-name", TK_ARGV_STRING, (char *) NULL, (char *) &name,	"Name to use for application"},    {"-sync", TK_ARGV_CONSTANT, (char *) 1, (char *) &synchronize,	"Use synchronous mode for display server"},    {"-visual", TK_ARGV_STRING, (char *) NULL, (char *) &visual,	"Visual for main window"},    {"--", TK_ARGV_REST, (char *) 1, (char *) &rest,	"Pass all remaining arguments through to script"},    {(char *) NULL, TK_ARGV_END, (char *) NULL, (char *) NULL,	(char *) NULL}};intTksam_Init(interp)    Tcl_Interp *interp;		/* Interpreter to initialize. */{    char *p;    int argc, code;    char **argv, *args[20];    Tcl_DString class;    char buffer[30];    /*     * If there is an "argv" variable, get its value, extract out     * relevant arguments from it, and rewrite the variable without     * the arguments that we used.     */    synchronize = 0;    name = display = geometry = colormap = visual = NULL;     p = Tcl_GetVar2(interp, "argv", (char *) NULL, TCL_GLOBAL_ONLY);    argv = NULL;    if (p != NULL) {	if (Tcl_SplitList(interp, p, &argc, &argv) != TCL_OK) {	    argError:	    Tcl_AddErrorInfo(interp,		    "\n    (processing arguments in argv variable)");	    return TCL_ERROR;	}	if (Tk_ParseArgv(interp, (Tk_Window) NULL, &argc, argv,		argTable, TK_ARGV_DONT_SKIP_FIRST_ARG|TK_ARGV_NO_DEFAULTS)		!= TCL_OK) {	    ckfree((char *) argv);	    goto argError;	}	p = Tcl_Merge(argc, argv);	Tcl_SetVar2(interp, "argv", (char *) NULL, p, TCL_GLOBAL_ONLY);	sprintf(buffer, "%d", argc);	Tcl_SetVar2(interp, "argc", (char *) NULL, buffer, TCL_GLOBAL_ONLY);	ckfree(p);    }    /*     * Figure out the application's name and class.     */    if (name == NULL) {	name = Tcl_GetVar(interp, "argv0", TCL_GLOBAL_ONLY);	if ((name == NULL) || (*name == 0)) {	    name = "tk";	} else {	    p = strrchr(name, '/');	    if (p != NULL) {		name = p+1;	    }	}    }    Tcl_DStringInit(&class);    Tcl_DStringAppend(&class, name, -1);    p = Tcl_DStringValue(&class);    if (islower(*p)) {	*p = toupper((unsigned char) *p);    }    /*     * Create an argument list for creating the top-level window,     * using the information parsed from argv, if any.     */    args[0] = "toplevel";    args[1] = ".";    args[2] = "-class";    args[3] = Tcl_DStringValue(&class);    argc = 4;    if (display != NULL) {	args[argc] = "-screen";	args[argc+1] = display;	argc += 2;	/*	 * If this is the first application for this process, save	 * the display name in the DISPLAY environment variable so	 * that it will be available to subprocesses created by us.	 */	if (Tk_GetNumMainWindows() == 0) {	    Tcl_SetVar2(interp, "env", "DISPLAY", display, TCL_GLOBAL_ONLY);	}    }    if (colormap != NULL) {	args[argc] = "-colormap";	args[argc+1] = colormap;	argc += 2;    }    if (visual != NULL) {	args[argc] = "-visual";	args[argc+1] = visual;	argc += 2;    }    args[argc] = NULL;    code = TkCreateFrame((ClientData) NULL, interp, argc, args, 1, name);    Tcl_DStringFree(&class);    if (code != TCL_OK) {	goto done;    }    Tcl_ResetResult(interp);    if (synchronize) {	XSynchronize(Tk_Display(Tk_MainWindow(interp)), True);    }    /*     * Set the geometry of the main window, if requested.  Put the     * requested geometry into the "geometry" variable.     */    if (geometry != NULL) {	Tcl_SetVar(interp, "geometry", geometry, TCL_GLOBAL_ONLY);	code = Tcl_VarEval(interp, "wm geometry . ", geometry, (char *) NULL);	if (code != TCL_OK) {	    goto done;	}    }    if (Tcl_PkgRequire(interp, "Tcl", TCL_VERSION, 1) == NULL) {	code = TCL_ERROR;	goto done;    }    code = Tcl_PkgProvide(interp, "Tk", TK_VERSION);    if (code != TCL_OK) {	goto done;    }    /*     * Invoke platform-specific initialization.     */    code = SamTkPlatformInit(interp);    done:    if (argv != NULL) {	ckfree((char *) argv);    }    return code;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -