⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynhelp.tcl

📁 一个用TCL/TK写的用于verilog的集成编辑环境.
💻 TCL
字号:
# ------------------------------------------------------------------------------#  dynhelp.tcl#  This file is part of Unifix BWidget Toolkit#  $Id: dynhelp.tcl,v 1.3 1999/07/09 08:09:38 eric Exp $# ------------------------------------------------------------------------------#  Index of commands:#     - DynamicHelp::configure#     - DynamicHelp::include#     - DynamicHelp::sethelp#     - DynamicHelp::register#     - DynamicHelp::_motion_balloon#     - DynamicHelp::_motion_info#     - DynamicHelp::_leave_info#     - DynamicHelp::_menu_info#     - DynamicHelp::_show_help#     - DynamicHelp::_init# ------------------------------------------------------------------------------namespace eval DynamicHelp {    Widget::declare DynamicHelp {        {-foreground  TkResource black         0 label}        {-background  TkResource "#FFFFC0"     0 label}        {-borderwidth TkResource 1             0 label}        {-justify     TkResource left          0 label}        {-font        TkResource "helvetica 8" 0 label}        {-delay       Int        600           0 {=100 =2000}}        {-bd          Synonym    -borderwidth}        {-bg          Synonym    -background}        {-fg          Synonym    -foreground}    }    proc use {} {}    variable _registered    variable _top     ".help_shell"    variable _id      ""     variable _delay   600    variable _current ""    variable _saved    Widget::init DynamicHelp $_top {}    bind BwHelpBalloon <Enter>   {DynamicHelp::_motion_balloon enter  %W %X %Y}    bind BwHelpBalloon <Motion>  {DynamicHelp::_motion_balloon motion %W %X %Y}    bind BwHelpBalloon <Leave>   {DynamicHelp::_motion_balloon leave  %W %X %Y}    bind BwHelpBalloon <Button>  {DynamicHelp::_motion_balloon button %W %X %Y}    bind BwHelpBalloon <Destroy> {catch {unset DynamicHelp::_registered(%W)}}    bind BwHelpVariable <Enter>   {DynamicHelp::_motion_info %W}    bind BwHelpVariable <Motion>  {DynamicHelp::_motion_info %W}    bind BwHelpVariable <Leave>   {DynamicHelp::_leave_info  %W}    bind BwHelpVariable <Destroy> {catch {unset DynamicHelp::_registered(%W)}}    bind BwHelpMenu <<MenuSelect>> {DynamicHelp::_menu_info select %W}    bind BwHelpMenu <Unmap>        {DynamicHelp::_menu_info unmap  %W}    bind BwHelpMenu <Destroy>      {catch {unset DynamicHelp::_registered(%W)}}}# ------------------------------------------------------------------------------#  Command DynamicHelp::configure# ------------------------------------------------------------------------------proc DynamicHelp::configure { args } {    variable _top    variable _delay    set res [Widget::configure $_top $args]    if { [Widget::hasChanged $_top -delay val] } {        set _delay $val    }    return $res}# ------------------------------------------------------------------------------#  Command DynamicHelp::include# ------------------------------------------------------------------------------proc DynamicHelp::include { class type } {    set helpoptions {        {-helptext String "" 0}        {-helpvar  String "" 0}}    lappend helpoptions [list -helptype Enum $type 0 {balloon variable}]    Widget::declare $class $helpoptions}# ------------------------------------------------------------------------------#  Command DynamicHelp::sethelp# ------------------------------------------------------------------------------proc DynamicHelp::sethelp { path subpath {force 0}} {    set ctype [Widget::hasChanged $path -helptype htype]    set ctext [Widget::hasChanged $path -helptext htext]    set cvar  [Widget::hasChanged $path -helpvar  hvar]    if { $force || $ctype || $ctext || $cvar } {        switch $htype {            balloon {                return [register $subpath balloon $htext]            }            variable {                return [register $subpath variable $hvar $htext]            }        }        return [register $subpath $htype]    }}# ------------------------------------------------------------------------------#  Command DynamicHelp::register# ------------------------------------------------------------------------------proc DynamicHelp::register { path type args } {    variable _registered    if { [winfo exists $path] } {        set evt  [bindtags $path]        set idx  [lsearch $evt "BwHelp*"]        set evt  [lreplace $evt $idx $idx]        switch $type {            balloon {                set text [lindex $args 0]                if { $text != "" } {                    set _registered($path) $text                    lappend evt BwHelpBalloon                } else {                    catch {unset _registered($path)}                }                bindtags $path $evt                return 1            }            variable {                set var  [lindex $args 0]                set text [lindex $args 1]                if { $text != "" && $var != "" } {                    set _registered($path) [list $var $text]                    lappend evt BwHelpVariable                } else {                    catch {unset _registered($path)}                }                bindtags $path $evt                return 1            }            menu {                set cpath [BWidget::clonename $path]                if { [winfo exists $cpath] } {                    set path $cpath                }                set var [lindex $args 0]                if { $var != "" } {                    set _registered($path) [list $var]                    lappend evt BwHelpMenu                } else {                    catch {unset _registered($path)}                }                bindtags $path $evt                return 1            }            menuentry {                set cpath [BWidget::clonename $path]                if { [winfo exists $cpath] } {                    set path $cpath                }                if { [info exists _registered($path)] } {                    if { [set index [lindex $args 0]] != "" } {                        set text  [lindex $args 1]                        set idx   [lsearch $_registered($path) [list $index *]]                        if { $text != "" } {                            if { $idx == -1 } {                                lappend _registered($path) [list $index $text]                            } else {                                set _registered($path) [lreplace $_registered($path) $idx $idx [list $index $text]]                            }                        } else {                            set _registered($path) [lreplace $_registered($path) $idx $idx]                        }                    }                    return 1                }                return 0            }        }        catch {unset _registered($path)}        bindtags $path $evt        return 1    } else {        catch {unset _registered($path)}        return 0    }}# ------------------------------------------------------------------------------#  Command DynamicHelp::_motion_balloon# ------------------------------------------------------------------------------proc DynamicHelp::_motion_balloon { type path x y } {    variable _top    variable _id    variable _delay    variable _current    if { $_current != $path && $type == "enter" } {        set _current $path        set type "motion"        destroy $_top    }    if { $_current == $path } {        if { $_id != "" } {            after cancel $_id            set _id ""        }        if { $type == "motion" } {            if { ![winfo exists $_top] } {                set _id [after $_delay "DynamicHelp::_show_help $path $x $y"]            }        } else {            destroy $_top            set _current ""        }    }}# ------------------------------------------------------------------------------#  Command DynamicHelp::_motion_info# ------------------------------------------------------------------------------proc DynamicHelp::_motion_info { path } {    variable _registered    variable _current    variable _saved    if { $_current != $path && [info exists _registered($path)] } {        if { ![info exists _saved] } {            set _saved [GlobalVar::getvar [lindex $_registered($path) 0]]        }        GlobalVar::setvar [lindex $_registered($path) 0] [lindex $_registered($path) 1]        set _current $path    }}# ------------------------------------------------------------------------------#  Command DynamicHelp::_leave_info# ------------------------------------------------------------------------------proc DynamicHelp::_leave_info { path } {    variable _registered    variable _current    variable _saved    if { [info exists _registered($path)] } {        GlobalVar::setvar [lindex $_registered($path) 0] $_saved    }    unset _saved    set _current ""    }# ------------------------------------------------------------------------------#  Command DynamicHelp::_menu_info#    Version of R1v1 restored, due to lack of [winfo ismapped] and <Unmap>#    under windows for menu.# ------------------------------------------------------------------------------proc DynamicHelp::_menu_info { event path } {    variable _registered     if { [info exists _registered($path)] } {        set index [$path index active]        if { [string compare $index "none"] &&             [set idx [lsearch $_registered($path) [list $index *]]] != -1 } {            GlobalVar::setvar [lindex $_registered($path) 0] \                [lindex [lindex $_registered($path) $idx] 1]        } else {            GlobalVar::setvar [lindex $_registered($path) 0] ""        }    }}# ------------------------------------------------------------------------------#  Command DynamicHelp::_show_help# ------------------------------------------------------------------------------proc DynamicHelp::_show_help { path x y } {    variable _top    variable _registered    variable _id    variable _delay    if { [info exists _registered($path)] } {        destroy  $_top        toplevel $_top -relief flat \            -bg [Widget::getoption $_top -foreground] \            -bd [Widget::getoption $_top -borderwidth]        wm overrideredirect $_top 1        wm transient $_top        wm withdraw $_top        label $_top.label -text $_registered($path) \            -relief flat -bd 0 -highlightthickness 0 \            -foreground [Widget::getoption $_top -foreground] \            -background [Widget::getoption $_top -background] \            -font       [Widget::getoption $_top -font] \            -justify    [Widget::getoption $_top -justify]        pack $_top.label -side left        update idletasks        set  scrwidth  [winfo vrootwidth  .]        set  scrheight [winfo vrootheight .]        set  width     [winfo reqwidth  $_top]        set  height    [winfo reqheight $_top]        incr y 12        incr x 8        if { $x+$width > $scrwidth } {            set x [expr $scrwidth - $width]        }        if { $y+$height > $scrheight } {            set y [expr $y - 12 - $height]        }        wm geometry  $_top "+$x+$y"        update idletasks        wm deiconify $_top    }}

⌨️ 快捷键说明

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