All Projects → nsf → Gothic

nsf / Gothic

Licence: mit
Tcl/Tk Go bindings

Programming Languages

go
31211 projects - #10 most used programming language

Tcl/Tk Go bindings.

VERSION NOTICE

Recently Tcl/Tk 8.6 were released. I use them as a default, if you still have Tcl/Tk 8.5 use go get -tags tcl85 github.com/nsf/gothic.

DESCRIPTION

In its current state the bindings are a bit Tk-oriented. You can't create an interpreter instance without Tk. In future it's likely it will be changed.

The API is very simple. In the package you have one type and one function:

type Interpreter struct func NewInterpreter (init interface{}) *Interpreter

In order to launch an interpreter you have to call the "NewInterpreter" function, it will make a new instance of a tcl/tk interpreter in a separate goroutine, execute "init", block in Tk's main loop and then the function returns a pointer to the new instance of an "Interpreter".

"init" could be a string with tcl commands that are executed before Tk's main loop, or a function with this signature: "func (*Interpreter)". This function gets executed the same way as the string, that is - before Tk's main loop.

Here are the methods of the "Interpreter":

func (*Interpreter) ErrorFilter(filt func(error) error) func (*Interpreter) Eval(args ...interface{}) error func (*Interpreter) EvalAs(out interface{}, args ...interface{}) error func (*Interpreter) Set(name string, val interface{}) error func (*Interpreter) UploadImage(name string, img image.Image) error func (*Interpreter) RegisterCommand(name string, cbfunc interface{}) error func (*Interpreter) UnregisterCommand(name string) error func (*Interpreter) RegisterCommands(name string, val interface{}) error func (*Interpreter) UnregisterCommands(name string) error

As it was stated before, the "Interpreter" is being executed in a separate goroutine and each method is completely thread-safe. Also every method is synchronous. It will queue commands for execution and wait for their completion.

That's it. See "examples" directory it has the use cases for most of the API.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].