databaseview_project.tcl

来自「一个跨平台的TCL/TK可视开发环境类似VC. TCL/TK是一个跨平台的脚本」· TCL 代码 · 共 827 行 · 第 1/2 页

TCL
827
字号
#!/bin/sh

# the next line restarts using wish\

exec wish "$0" "$@" 



if {![info exists vTcl(sourcing)]} {



    # Provoke name search

    catch {package require bogus-package-name}

    set packageNames [package names]



    package require BWidget

    switch $tcl_platform(platform) {

	windows {

	}

	default {

	    option add *ScrolledWindow.size 14

	}

    }

    

    package require Tk

    switch $tcl_platform(platform) {

	windows {

            option add *Button.padY 0

	}

	default {

            option add *Scrollbar.width 10

            option add *Scrollbar.highlightThickness 0

            option add *Scrollbar.elementBorderWidth 2

            option add *Scrollbar.borderWidth 2

	}

    }

    

        # tablelist is required

        package require tablelist

    

}



#############################################################################

# Visual Tcl v1.60 Project

#





#################################

# VTCL LIBRARY PROCEDURES

#



if {![info exists vTcl(sourcing)]} {

#############################################################################

## Library Procedure:  Window



proc ::Window {args} {

    ## This procedure may be used free of restrictions.

    ##    Exception added by Christian Gavin on 08/08/02.

    ## Other packages and widget toolkits have different licensing requirements.

    ##    Please read their license agreements for details.



    global vTcl

    foreach {cmd name newname} [lrange $args 0 2] {}

    set rest    [lrange $args 3 end]

    if {$name == "" || $cmd == ""} { return }

    if {$newname == ""} { set newname $name }

    if {$name == "."} { wm withdraw $name; return }

    set exists [winfo exists $newname]

    switch $cmd {

        show {

            if {$exists} {

                wm deiconify $newname

            } elseif {[info procs vTclWindow$name] != ""} {

                eval "vTclWindow$name $newname $rest"

            }

            if {[winfo exists $newname] && [wm state $newname] == "normal"} {

                vTcl:FireEvent $newname <<Show>>

            }

        }

        hide    {

            if {$exists} {

                wm withdraw $newname

                vTcl:FireEvent $newname <<Hide>>

                return}

        }

        iconify { if $exists {wm iconify $newname; return} }

        destroy { if $exists {destroy $newname; return} }

    }

}

#############################################################################

## Library Procedure:  ::vTcl::widgets::bwidgets::scrollchildsite::widgetProc



namespace eval ::vTcl::widgets::bwidgets::scrollchildsite {

proc widgetProc {w args} {

        set command [lindex $args 0]

        set args [lrange $args 1 end]

        set children [winfo children $w]

        set child [lindex $children 0]



        ## we have renamed the default widgetProc _<widgetpath>

        if {$command == "configure" && $args == ""} {

            if {$children == ""} {

                return [concat [uplevel _$w configure]  [list {-xscrollcommand xScrollCommand ScrollCommand {} {}}]  [list {-yscrollcommand yScrollCommand ScrollCommand {} {}}]]

            } else {

                return [concat [uplevel _$w configure]  [list [$child configure -xscrollcommand]]  [list [$child configure -yscrollcommand]]]

            }

        } elseif {$command == "configure" && [llength $args] > 1} {

            return [uplevel $child configure $args]

        } elseif {[string match ?view $command]} {

            return [uplevel $child $command $args]

        }



        uplevel _$w $command $args

    }

}

#############################################################################

## Library Procedure:  vTcl::widgets::bwidgets::scrolledwindow::createCmd



namespace eval vTcl::widgets::bwidgets::scrolledwindow {

proc createCmd {target args} {

        eval ScrolledWindow $target $args

        ## create a frame where user can insert widget to scroll

        frame $target.f -class ScrollChildsite



        ## change the widget procedure

        rename ::$target.f ::_$target.f

        proc ::$target.f {command args}  "eval ::vTcl::widgets::bwidgets::scrollchildsite::widgetProc $target.f \$command \$args"

    }

}

#############################################################################

## Library Procedure:  vTcl::widgets::core::megawidget::cgetProc



namespace eval vTcl::widgets::core::megawidget {

proc cgetProc {w args} {

        ## This procedure may be used free of restrictions.

        ##    Exception added by Christian Gavin on 08/08/02.

        ## Other packages and widget toolkits have different licensing requirements.

        ##    Please read their license agreements for details.



        upvar ::${w}::widgetProc  widgetProc



        set option [lindex $args 0]

        switch -- $option {

            -class         {return MegaWidget}

            -widgetProc    {return $widgetProc}

            default        {error "unknown option $option"}

        }

    }

}

#############################################################################

## Library Procedure:  vTcl::widgets::core::megawidget::configureProc



namespace eval vTcl::widgets::core::megawidget {

proc configureProc {w args} {

        ## This procedure may be used free of restrictions.

        ##    Exception added by Christian Gavin on 08/08/02.

        ## Other packages and widget toolkits have different licensing requirements.

        ##    Please read their license agreements for details.



        upvar ::${w}::widgetProc  widgetProc



        if {[lempty $args]} {

            return [concat [configureProc $w -class]  [configureProc $w -widgetProc]]

        }

        if {[llength $args] == 1} {

            set option [lindex $args 0]

            switch -- $option {

                -class {

                    return [list "-class class Class Frame MegaWidget"]

                }

                -widgetProc {

                    return [list "-widgetProc widgetproc WidgetProc {} [list $widgetProc]"]

                }

                default {

                    error "unknown option $option"

                }

            }

        }



        foreach {option value} $args {

            if {$option == "-widgetProc"} {

                set widgetProc $value

            }

        }

    }

}

#############################################################################

## Library Procedure:  vTcl::widgets::core::megawidget::createCmd



namespace eval vTcl::widgets::core::megawidget {

proc createCmd {path args} {

        ## This procedure may be used free of restrictions.

        ##    Exception added by Christian Gavin on 08/08/02.

        ## Other packages and widget toolkits have different licensing requirements.

        ##    Please read their license agreements for details.



        frame $path -class MegaWidget

        namespace eval ::$path "set widgetProc {}"



        ## change the widget procedure

        rename ::$path ::_$path

        proc ::$path {command args}  "eval ::vTcl::widgets::core::megawidget::widgetProc $path \$command \$args"



        ## widgetProc specified ? if so, store it

        if {[llength $args] == 2 && [lindex $args 0] == "-widgetProc"} {

            upvar ::${path}::widgetProc  widgetProc

            set widgetProc [lindex $args 1]

        }

        

        return $path

    }

}

#############################################################################

## Library Procedure:  vTcl::widgets::core::megawidget::widgetProc



namespace eval vTcl::widgets::core::megawidget {

proc widgetProc {w args} {

        ## This procedure may be used free of restrictions.

        ##    Exception added by Christian Gavin on 08/08/02.

        ## Other packages and widget toolkits have different licensing requirements.

        ##    Please read their license agreements for details.



        if {[llength $args] == 0} {

            ## If no arguments, returns the path the alias points to

            return $w

        }



        set command [lindex $args 0]

        set args [lrange $args 1 end]

        switch $command {

            configure {

                return [eval configureProc $w $args]

            }

            cget {

                return [eval cgetProc $w $args]

            }

            widget {

                ## this calls the custom widgetProc

                upvar ::${w}::widgetProc  widgetProc

                return [eval $widgetProc $w $args]

            }

            default {

                ## we have renamed the default widgetProc _<widgetpath>

                uplevel _$w $command $args

            }

        }

    }

}

#############################################################################

## Library Procedure:  vTcl:DefineAlias



proc ::vTcl:DefineAlias {target alias widgetProc top_or_alias cmdalias} {

    ## This procedure may be used free of restrictions.

    ##    Exception added by Christian Gavin on 08/08/02.

    ## Other packages and widget toolkits have different licensing requirements.

    ##    Please read their license agreements for details.



    global widget

    set widget($alias) $target

    set widget(rev,$target) $alias

    if {$cmdalias} {

        interp alias {} $alias {} $widgetProc $target

    }

    if {$top_or_alias != ""} {

        set widget($top_or_alias,$alias) $target

        if {$cmdalias} {

            interp alias {} $top_or_alias.$alias {} $widgetProc $target

        }

    }

}

#############################################################################

## Library Procedure:  vTcl:DoCmdOption



proc ::vTcl:DoCmdOption {target cmd} {

    ## This procedure may be used free of restrictions.

    ##    Exception added by Christian Gavin on 08/08/02.

    ## Other packages and widget toolkits have different licensing requirements.

    ##    Please read their license agreements for details.



    ## menus are considered toplevel windows

    set parent $target

    while {[winfo class $parent] == "Menu"} {

        set parent [winfo parent $parent]

    }



    regsub -all {\%widget} $cmd $target cmd

    regsub -all {\%top} $cmd [winfo toplevel $parent] cmd



    uplevel #0 [list eval $cmd]

}

#############################################################################

## Library Procedure:  vTcl:FireEvent



proc ::vTcl:FireEvent {target event {params {}}} {

    ## This procedure may be used free of restrictions.

    ##    Exception added by Christian Gavin on 08/08/02.

    ## Other packages and widget toolkits have different licensing requirements.

    ##    Please read their license agreements for details.



    ## The window may have disappeared

    if {![winfo exists $target]} return

    ## Process each binding tag, looking for the event

    foreach bindtag [bindtags $target] {

        set tag_events [bind $bindtag]

        set stop_processing 0

        foreach tag_event $tag_events {

            if {$tag_event == $event} {

                set bind_code [bind $bindtag $tag_event]

                foreach rep "\{%W $target\} $params" {

                    regsub -all [lindex $rep 0] $bind_code [lindex $rep 1] bind_code

                }

                set result [catch {uplevel #0 $bind_code} errortext]

                if {$result == 3} {

                    ## break exception, stop processing

                    set stop_processing 1

                } elseif {$result != 0} {

                    bgerror $errortext

                }

                break

            }

        }

        if {$stop_processing} {break}

    }

}

#############################################################################

## Library Procedure:  vTcl:Toplevel:WidgetProc



proc ::vTcl:Toplevel:WidgetProc {w args} {

    ## This procedure may be used free of restrictions.

    ##    Exception added by Christian Gavin on 08/08/02.

    ## Other packages and widget toolkits have different licensing requirements.

    ##    Please read their license agreements for details.



    if {[llength $args] == 0} {

        ## If no arguments, returns the path the alias points to

        return $w

    }

    set command [lindex $args 0]

    set args [lrange $args 1 end]

    switch -- [string tolower $command] {

        "setvar" {

            foreach {varname value} $args {}

            if {$value == ""} {

                return [set ::${w}::${varname}]

            } else {

                return [set ::${w}::${varname} $value]

            }

        }

        "hide" - "show" {

            Window [string tolower $command] $w

        }

        "showmodal" {

            ## modal dialog ends when window is destroyed

            Window show $w; raise $w

            grab $w; tkwait window $w; grab release $w

        }

        "startmodal" {

            ## ends when endmodal called

            Window show $w; raise $w

            set ::${w}::_modal 1

            grab $w; tkwait variable ::${w}::_modal; grab release $w

        }

        "endmodal" {

            ## ends modal dialog started with startmodal, argument is var name

            set ::${w}::_modal 0

            Window hide $w

        }

        default {

            uplevel $w $command $args

        }

    }

}

#############################################################################

## Library Procedure:  vTcl:WidgetProc



proc ::vTcl:WidgetProc {w args} {

    ## This procedure may be used free of restrictions.

    ##    Exception added by Christian Gavin on 08/08/02.

    ## Other packages and widget toolkits have different licensing requirements.

    ##    Please read their license agreements for details.



    if {[llength $args] == 0} {

        ## If no arguments, returns the path the alias points to

        return $w

    }



    set command [lindex $args 0]

    set args [lrange $args 1 end]

    uplevel $w $command $args

}

#############################################################################

## Library Procedure:  vTcl:toplevel



proc ::vTcl:toplevel {args} {

    ## This procedure may be used free of restrictions.

    ##    Exception added by Christian Gavin on 08/08/02.

    ## Other packages and widget toolkits have different licensing requirements.

    ##    Please read their license agreements for details.



    uplevel #0 eval toplevel $args

    set target [lindex $args 0]

    namespace eval ::$target {set _modal 0}

}

}





if {[info exists vTcl(sourcing)]} {



proc vTcl:project:info {} {

    set base .top79

    namespace eval ::widgets::$base {

        set set,origin 1

        set set,size 1

        set runvisible 1

    }

    namespace eval ::widgets::$base.meg80 {

        array set save {-class 1 -widgetProc 1}

    }

    set site_3_0 $base.meg80

⌨️ 快捷键说明

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