123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- # -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
- #
- # $Id: Init.tcl,v 1.18 2008/02/28 04:35:16 hobbs Exp $
- #
- # Init.tcl --
- #
- # Initializes the Tix library and performes version checking to ensure
- # the Tcl, Tk and Tix script libraries loaded matches with the binary
- # of the respective packages.
- #
- # Copyright (c) 1993-1999 Ioi Kim Lam.
- # Copyright (c) 2000-2001 Tix Project Group.
- # Copyright (c) 2004 ActiveState
- #
- # See the file "license.terms" for information on usage and redistribution
- # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- #
- namespace eval ::tix {
- }
- proc tixScriptVersion {} { return $::tix_version }
- proc tixScriptPatchLevel {} { return $::tix_patchLevel }
- proc ::tix::Init {dir} {
- global tix env tix_library tcl_platform auto_path
- if {[info exists tix(initialized)]} {
- return
- }
- if {![info exists tix_library]} {
- # we're running from stand-alone module.
- set tix_library ""
- } elseif {[file isdir $tix_library]} {
- if {![info exists auto_path] ||
- [lsearch $auto_path $tix_library] == -1} {
- lappend auto_path $tix_library
- }
- }
- # STEP 1: Version checking
- #
- #
- package require Tcl 8.4
- package require -exact Tix 8.4.3
- # STEP 2: Initialize file compatibility modules
- #
- foreach file {
- fs.tcl
- Tix.tcl Event.tcl
- Balloon.tcl BtnBox.tcl
- CObjView.tcl ChkList.tcl
- ComboBox.tcl Compat.tcl
- Console.tcl Control.tcl
- DefSchm.tcl DialogS.tcl
- DirBox.tcl DirDlg.tcl
- DirList.tcl DirTree.tcl
- DragDrop.tcl DtlList.tcl
- EFileBox.tcl EFileDlg.tcl
- FileBox.tcl FileCbx.tcl
- FileDlg.tcl FileEnt.tcl
- FloatEnt.tcl
- Grid.tcl HList.tcl
- HListDD.tcl IconView.tcl
- LabEntry.tcl LabFrame.tcl
- LabWidg.tcl ListNBk.tcl
- Meter.tcl MultView.tcl
- NoteBook.tcl OldUtil.tcl
- OptMenu.tcl PanedWin.tcl
- PopMenu.tcl Primitiv.tcl
- ResizeH.tcl SGrid.tcl
- SHList.tcl SListBox.tcl
- STList.tcl SText.tcl
- SWidget.tcl SWindow.tcl
- Select.tcl Shell.tcl
- SimpDlg.tcl StackWin.tcl
- StatBar.tcl StdBBox.tcl
- StdShell.tcl TList.tcl
- Tree.tcl
- Utils.tcl VResize.tcl
- VStack.tcl VTree.tcl
- Variable.tcl WInfo.tcl
- } {
- uplevel \#0 [list source [file join $dir $file]]
- }
- # STEP 3: Initialize the Tix application context
- #
- tixAppContext tix
- # DO NOT DO THIS HERE !!
- # This causes the global defaults to be altered, which may not
- # be desirable. The user can call this after requiring Tix if
- # they wish to use different defaults.
- #
- #tix initstyle
- # STEP 4: Initialize the bindings for widgets that are implemented in C
- #
- foreach w {
- HList TList Grid ComboBox Control FloatEntry
- LabelEntry ScrolledGrid ScrolledListBox
- } {
- tix${w}Bind
- }
- rename ::tix::Init ""
- }
- # tixWidgetClassEx --
- #
- # This procedure is similar to tixWidgetClass, except it
- # performs a [subst] on the class declaration before evaluating
- # it. This gives us a chance to specify platform-specific widget
- # default without using a lot of ugly double quotes.
- #
- # The use of subst'able entries in the class declaration should
- # be restrained to widget default values only to avoid producing
- # unreadable code.
- #
- # Arguments:
- # name - The name of the class to declare.
- # classDecl - Various declarations about the class. See documentation
- # of tixWidgetClass for details.
- proc tixWidgetClassEx {name classDecl} {
- tixWidgetClass $name [uplevel [list subst $classDecl]]
- }
- #
- # Deprecated tix* functions
- #
- interp alias {} tixFileJoin {} file join
- interp alias {} tixStrEq {} string equal
- proc tixTrue {args} { return 1 }
- proc tixFalse {args} { return 0 }
- proc tixStringSub {var fromStr toStr} {
- upvar 1 var var
- set var [string map $var [list $fromStr $toStr]]
- }
- proc tixGetBoolean {args} {
- set len [llength [info level 0]]
- set nocomplain 0
- if {$len == 3} {
- if {[lindex $args 0] ne "-nocomplain"} {
- return -code error "wrong \# args:\
- must be [lindex [info level 0] 0] ?-nocomplain? string"
- }
- set nocomplain 1
- set val [lindex $args 1]
- } elseif {$len != 2} {
- return -code error "wrong \# args:\
- must be [lindex [info level 0] 0] ?-nocomplain? string"
- } else {
- set val [lindex $args 0]
- }
- if {[string is boolean -strict $val] || $nocomplain} {
- return [string is true -strict $val]
- } elseif {$nocomplain} {
- return 0
- } else {
- return -code error "\"$val\" is not a valid boolean"
- }
- }
- interp alias {} tixVerifyBoolean {} tixGetBoolean
- proc tixGetInt {args} {
- set len [llength [info level 0]]
- set nocomplain 0
- set trunc 0
- for {set i 1} {$i < $len-1} {incr i} {
- set arg [lindex $args 0]
- if {$arg eq "-nocomplain"} {
- set nocomplain 1
- } elseif {$arg eq "-trunc"} {
- set trunc 1
- } else {
- return -code error "wrong \# args: must be\
- [lindex [info level 0] 0] ?-nocomplain? ?-trunc? string"
- }
- }
- if {$i != $len-1} {
- return -code error "wrong \# args: must be\
- [lindex [info level 0] 0] ?-nocomplain? ?-trunc? string"
- }
- set val [lindex $args end]
- set code [catch {expr {round($val)}} res]
- if {$code} {
- if {$nocomplain} {
- return 0
- } else {
- return -code error "\"$val\" cannot be converted to integer"
- }
- }
- if {$trunc} {
- return [expr {int($val)}]
- } else {
- return $res
- }
- }
- proc tixFile {option filename} {
- set len [string length $option]
- if {$len > 1 && [string equal -length $len $option "tildesubst"]} {
- set code [catch {file normalize $filename} res]
- if {$code == 0} {
- set filename $res
- }
- } elseif {$len > 1 && [string equal -length $len $option "trimslash"]} {
- # normalize extra slashes
- set filename [file join $filename]
- if {$filename ne "/"} {
- set filename [string trimright $filename "/"]
- }
- } else {
- return -code error "unknown option \"$option\",\
- must be tildesubst or trimslash"
- }
- return $filename
- }
- interp alias {} tixRaiseWindow {} raise
- #proc tixUnmapWindow {w} { }
- #
- # if tix_library is not defined, we're running in SAM mode. ::tix::Init
- # will be called later by the Tix_Init() C code.
- #
- if {[info exists tix_library]} {
- ::tix::Init [file dirname [info script]]
- }
|