Hello.vfs/ Hello.vfs/lib/Hello.vfs is where our code will go and Hello.vfs/lib is where any extensions may be placed.2. Create the main.tcl file under the Hello.vfs directory. Let's get starkit up and running, by putting the following code into the file:
package require starkit
if {[starkit::startup] ne "sourced"} {
source [file join $starkit::topdir hello.tcl]
}Two things are notable about the above code. The starkit::startup function must be called to initialize the starkit. It returns a value that tells you something about the running environment. Handling 'sourced' like this enables you to load the vfs into a running interpreter for interactive debugging (ie: start tkcon, source the kit file and call the program initialization functions manually). The starkit::topdir variable is initialized by starkit::startup to give the path to the top of the vfs tree. This method should always be used to find this location as it handles details on how the starkit/starpack/vfstree has been loaded.3. Now we create our application in simple Tcl/Tk. No need to deal with or know about Starkit from here on out. We do, however, have to take special consideration during the sourcing of other files. Create this hello.tcl file under the Hello.vfs directory: package require Tk
# Get the current scripts directory
# Source in the supporting file with the current scripts
# directory as it's base
source [file join $starkit::topdir funcs.tcl]
# The example code
button .hello -text "Say Hello" -command { sayHello "World" }
pack .hello -padx 5 -pady 5 -expand 1 -fill both4. Create the "sourced" file, funcs.tcl also in the Hello.vfs directory: # Supporting functions
proc sayHello {toWho} {
tk_messageBox -icon info -type ok -title "Saying Hello" -message "Hello, $toWho"
}5. Now you can wrap it with the sdx command:sdx wrap Hello.kit6. and run your new multi-file Starkit:
tclkit Hello.kitNow, the nice thing about this method is that you can also develop/test/run/deploy code as a standard Tcl/Tk app as well.
wish Hello.vfs/main.tclor
tclkit Hello.vfs/main.tclor even
tkcon Hello.vfs/main.tclare all equivalent to running a wrapped version
tclkit Hello.kitIn the end my directory entire project structure looks like:
HelloProject/ HelloProject/Hello.vfs/ HelloProject/Hello.vfs/main.tcl HelloProject/Hello.vfs/hello.tcl HelloProject/Hello.vfs/funcs.tcl HelloProject/Hello.vfs/lib/At a later date (once I have it all working) I'll add in my Makefile that gives me simple commands like:
make kit make exe make run-tcl make run-kit make run-exeThis page was created by a novice, so your milage may vary. Please, comment on this if you have further instructions or better ways of doing it.
Category Tclkit | Category Deployment