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

📄 dragsite.tcl

📁 一个用TCL/TK写的用于verilog的集成编辑环境.
💻 TCL
字号:
# ------------------------------------------------------------------------------#  dragsite.tcl#  This file is part of Unifix BWidget Toolkit#  $Id: dragsite.tcl,v 1.7 1999/07/09 08:10:29 eric Exp $# ------------------------------------------------------------------------------#  Index of commands:#     - DragSite::include#     - DragSite::setdrag#     - DragSite::register#     - DragSite::_begin_drag#     - DragSite::_init_drag#     - DragSite::_end_drag#     - DragSite::_update_operation# ------------------------------------------------------------------------------namespace eval DragSite {    Widget::declare DragSite {        {-dragevent     Enum   1  0 {1 2 3}}        {-draginitcmd   String "" 0}        {-dragendcmd    String "" 0}    }    variable _topw ".drag"    variable _tabops    variable _state    variable _x0    variable _y0    bind BwDrag1 <ButtonPress-1> {DragSite::_begin_drag press  %W %s %X %Y}    bind BwDrag1 <B1-Motion>     {DragSite::_begin_drag motion %W %s %X %Y}    bind BwDrag2 <ButtonPress-2> {DragSite::_begin_drag press  %W %s %X %Y}    bind BwDrag2 <B2-Motion>     {DragSite::_begin_drag motion %W %s %X %Y}    bind BwDrag3 <ButtonPress-3> {DragSite::_begin_drag press  %W %s %X %Y}    bind BwDrag3 <B3-Motion>     {DragSite::_begin_drag motion %W %s %X %Y}    proc use {} {}}# ------------------------------------------------------------------------------#  Command DragSite::include# ------------------------------------------------------------------------------proc DragSite::include { class type event } {    set dragoptions {        {-dragenabled Boolean 0  0}        {-draginitcmd String  "" 0}        {-dragendcmd  String  "" 0}    }    lappend dragoptions \        [list -dragtype  String $type  0] \        [list -dragevent Enum   $event 0 {1 2 3}]    Widget::declare $class $dragoptions}# ------------------------------------------------------------------------------#  Command DragSite::setdrag#  Widget interface to register# ------------------------------------------------------------------------------proc DragSite::setdrag { path subpath initcmd endcmd {force 0}} {    set cen       [Widget::hasChanged $path -dragenabled en]    set cdragevt  [Widget::hasChanged $path -dragevent   dragevt]    if { $en } {        if { $force || $cen || $cdragevt } {            register $subpath \                -draginitcmd $initcmd \                -dragendcmd  $endcmd  \                -dragevent   $dragevt        }    } else {        register $subpath    }}# ------------------------------------------------------------------------------#  Command DragSite::register# ------------------------------------------------------------------------------proc DragSite::register { path args } {    upvar \#0 DragSite::$path drag    if { [info exists drag] } {        bind $path $drag(evt) {}        unset drag    }    Widget::init DragSite .drag$path $args    set event   [Widget::getoption .drag$path -dragevent]    set initcmd [Widget::getoption .drag$path -draginitcmd]    set endcmd  [Widget::getoption .drag$path -dragendcmd]    set tags    [bindtags $path]    set idx     [lsearch $tags "BwDrag*"]    Widget::destroy .drag$path    if { $initcmd != "" } {        if { $idx != -1 } {            bindtags $path [lreplace $tags $idx $idx BwDrag$event]        } else {            bindtags $path [concat $tags BwDrag$event]        }        set drag(initcmd) $initcmd        set drag(endcmd)  $endcmd        set drag(evt)     $event    } elseif { $idx != -1 } {        bindtags $path [lreplace $tags $idx $idx]    }}# ------------------------------------------------------------------------------#  Command DragSite::_begin_drag# ------------------------------------------------------------------------------proc DragSite::_begin_drag { event source state X Y } {    variable _x0    variable _y0    variable _state    switch -- $event {        press {            set _x0    $X            set _y0    $Y            set _state "press"        }        motion {            if { ![string compare $_state "press"] } {                if { abs($_x0-$X) > 3 || abs($_y0-$Y) > 3 } {                    set _state "done"                    _init_drag $source $state $X $Y                }            }        }    }}# ------------------------------------------------------------------------------#  Command DragSite::_init_drag# ------------------------------------------------------------------------------proc DragSite::_init_drag { source state X Y } {    variable _topw    upvar \#0 DragSite::$source drag    destroy  $_topw    toplevel $_topw    wm withdraw $_topw    wm overrideredirect $_topw 1    set info [uplevel \#0 $drag(initcmd) [list $source $X $Y .drag]]    if { $info != "" } {        set type [lindex $info 0]        set ops  [lindex $info 1]        set data [lindex $info 2]        if { [winfo children $_topw] == "" } {            if { ![string compare $type "BITMAP"] || ![string compare $type "IMAGE"] } {                label $_topw.l -image [Bitmap::get dragicon] -relief flat -bd 0            } else {                label $_topw.l -image [Bitmap::get dragfile] -relief flat -bd 0            }            pack  $_topw.l        }        wm geometry $_topw +[expr $X+1]+[expr $Y+1]        wm deiconify $_topw        tkwait visibility $_topw        BWidget::grab  set $_topw        BWidget::focus set $_topw        bindtags $_topw [list $_topw DragTop]        DropSite::_init_drag $_topw $drag(evt) $source $state $X $Y $type $ops $data    } else {        destroy $_topw    }}# ------------------------------------------------------------------------------#  Command DragSite::_end_drag# ------------------------------------------------------------------------------proc DragSite::_end_drag { source target op type data result } {    variable _topw    upvar \#0 DragSite::$source drag    BWidget::grab  release $_topw    BWidget::focus release $_topw    destroy $_topw    if { $drag(endcmd) != "" } {        uplevel \#0 $drag(endcmd) [list $source $target $op $type $data $result]    }}

⌨️ 快捷键说明

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