🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.tcl
Article #145

Re: [Q] Tcl/Tk + C

#145
From: kabe
Date: Sun, 01 Jun 1997 00:00
139 lines
4173 bytes
$B$+$Y!wElKLBg3X$G$9!#(B
Tk$B$b>/$7JY6/$7$F$_$^$7$?!#(B

$B%5%s%W%k$r:G8e$K$D$1$^$9!#(B
$B%3!<%k%P%C%/4X?t$,#CB&$K$"$kNc$G$9!#(B
$B0UCO$G(BTcl_Eval$B$r;H$o$:$K=q$$$F$"$j$^$9!#(B

Tk$B$F!"(BTcl$B$HFHN)$+$H;W$C$F$?$iA4A3$=$s$J$3$H$J$$$s$G$9$M!D(B

$B!t550f$5$s$N%5%s%W%k$O(BTk_CreateMainWindow$B$r;HMQ$7$F$$$k$?$a(B
$B!t(BTk4.1$B0J9_$G$O$?$V$s%3%s%Q%$%k$G$-$^$;$s(B
$B!t:#$O(B Tk_Init $B$r;H$&$h$&$G$9(B
------------------------------------------------------------------------------
 $B$+$Y(B@dais.is.tohoku.ac.jp                     $B#V#E#G#A(B $B#S#y#s#t#e#m#s(B MCMXCI
             $B!V<+J,$O%l!<%5!<$@$C$F$$$&$N$+$$!)(B $B$?$$$7$?$3$H$J$$$8$c$J$$$+!#!W(B
------------------------------------------------------------------------------
::::::::::::::
slider.c
::::::::::::::
/*
 * proc scaleCommand {x} {puts "slider value = $x"}
 * scale .s -command scaleCommand
 * pack .s
 */

#include <stdio.h>
#include <stdarg.h>
#include <tk.h>

static char *scaleCmdName = "scaleCommand";
static int ScaleCommandCallback( ClientData cd, Tcl_Interp *interp, int argc, char *argv[]);

static int Tcl_VarCmd( Tcl_Interp *interp, Tcl_CmdProc *proc, ClientData cd, ... );

int
main(int argc, char *argv[])
{
	Tcl_Interp	*interp;
	Tk_Window	toplevel;

	/* extracts from Tk_Main below */

	/* Initialize Tcl interpreter */
	Tcl_FindExecutable(argv[0]);
	interp = Tcl_CreateInterp();

	/* parse options here if needed */

#if TCL_MAJOR_VERSION < 8
	Tcl_Init(interp);
#endif

	/* Initialize Tk */
	/* application name/class determined from "argv0" (not set here)*/
	Tk_Init(interp);
	toplevel = Tk_MainWindow(interp);

	/* Create commands & widgets */
	Tcl_CreateCommand(interp, scaleCmdName, ScaleCommandCallback, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL );
	Tcl_VarCmd(interp, Tk_ScaleCmd, toplevel,
		".s",
		"-command", scaleCmdName,
		(char*)NULL );
	Tcl_VarCmd(interp, Tk_PackCmd, toplevel,
		".s",
		(char*)NULL);

	/* Main Loop */
	Tk_MainLoop();

	Tcl_DeleteInterp(interp);
	Tcl_Exit(0);

	/*NOTREACHED*/
	return 0;
}

static int
ScaleCommandCallback( ClientData cd, Tcl_Interp *interp, int argc, char *argv[])
{
	long	val;
	printf("slider value = %s\n", argv[1]);
	return TCL_OK;
}


static int
Tcl_VarCmd( Tcl_Interp *interp, Tcl_CmdProc *proc, ClientData cd, ... )
{
	va_list	pvar;
	int	argc = 0;
	char	*argv[20];

	va_start(pvar, cd);
	argv[argc++] = "[Var]";
	for( ; argc<20 && (argv[argc] = va_arg(pvar, char*)); argc++) ;
	return (*proc)(cd, interp, argc, argv);
}

::::::::::::::
Imakefile
::::::::::::::
XCOMM
XCOMM
XCOMM

/* Set this according to --enable-shared during Tcl/Tk installation */
#ifndef SharedTclTk
#define SharedTclTk YES
#endif

/* Set these to the --prefix during Tcl/Tk installation */
TCLDIR = /usr/local/tcl8.0
TKDIR  = /usr/local/tk8.0

#if SharedTclTk
TCLLIB = -L$(TCL_LIBDIR) -ltcl8.0
TKLIB = -L$(TK_LIBDIR) -ltk8.0
#else
/* SunOS demands *.so for -ltcl7.5 */
TCLLIB = $(TCL_LIBDIR)/libtcl7.5.a
TKLIB = $(TK_LIBDIR)/libtk4.1.a
#endif

LOCAL_LIBRARIES = $(TKLIB) $(TCLLIB) $(XLIB) MathLibrary
INCLUDES  = $(TCL_INCLUDES) $(TK_INCLUDES)

TCL_INCLUDES = -I$(TCLDIR)/include
TK_INCLUDES  = -I$(TKDIR)/include
TCL_LIBDIR   = $(TCLDIR)/lib
TK_LIBDIR    = $(TKDIR)/lib

CDEBUGFLAGS=-g

XCOMM This only works for SVR4
CCENVSETUP = LD_RUN_PATH=$(USRLIBDIR):$(TCL_LIBDIR):$(TK_LIBDIR)

SimpleProgramTarget(slider)
Technical Details
Message-ID: <5mq7dh$6sd@masamune.dais.is.tohoku.ac.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <f1273232-3105970217270001@d044192.aif.or.jp> <nhv67vzbz1z.fsf@mickey08.mickey.ai.kyutech.ac.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 15a83d,4e6e55e90f0f3f74
X-Google-Attributes: gid15a83d,public
From: kabe@dais.is.tohoku.ac.jp
Subject: Re: [Q] Tcl/Tk + C
Date: 1997/06/01
Message-ID: <5mq7dh$6sd@masamune.dais.is.tohoku.ac.jp>
X-Deja-AN: 245295522
Sender: kabe@masamune.dais.is.tohoku.ac.jp
References: <f1273232-3105970217270001@d044192.aif.or.jp> <nhv67vzbz1z.fsf@mickey08.mickey.ai.kyutech.ac.jp>
Organization: Design and Analysis of Information Systems, Biosystem Information Sciences, Department of System Information Sciences, Graduate School of Information Sciences,Tohoku University, Sendai 980, Japan
Newsgroups: fj.lang.tcl