mirror of
https://github.com/Anjok07/ultimatevocalremovergui.git
synced 2024-11-28 09:21:03 +01:00
161 lines
6.1 KiB
Tcl
161 lines
6.1 KiB
Tcl
#
|
|
# tkdnd_compat.tcl --
|
|
#
|
|
# This file implements some utility procedures, to support older versions
|
|
# of the TkDND package.
|
|
#
|
|
# This software is copyrighted by:
|
|
# George Petasis, National Centre for Scientific Research "Demokritos",
|
|
# Aghia Paraskevi, Athens, Greece.
|
|
# e-mail: petasis@iit.demokritos.gr
|
|
#
|
|
# The following terms apply to all files associated
|
|
# with the software unless explicitly disclaimed in individual files.
|
|
#
|
|
# The authors hereby grant permission to use, copy, modify, distribute,
|
|
# and license this software and its documentation for any purpose, provided
|
|
# that existing copyright notices are retained in all copies and that this
|
|
# notice is included verbatim in any distributions. No written agreement,
|
|
# license, or royalty fee is required for any of the authorized uses.
|
|
# Modifications to this software may be copyrighted by their authors
|
|
# and need not follow the licensing terms described here, provided that
|
|
# the new terms are clearly indicated on the first page of each file where
|
|
# they apply.
|
|
#
|
|
# IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
|
|
# FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
|
|
# ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
|
|
# DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
|
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
# THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
|
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
# FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
|
|
# IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
|
|
# NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
|
|
# MODIFICATIONS.
|
|
#
|
|
|
|
namespace eval compat {
|
|
|
|
};# namespace compat
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Command ::dnd
|
|
# ----------------------------------------------------------------------------
|
|
proc ::dnd {method window args} {
|
|
switch $method {
|
|
bindtarget {
|
|
switch [llength $args] {
|
|
0 {return [tkdnd::compat::bindtarget0 $window]}
|
|
1 {return [tkdnd::compat::bindtarget1 $window [lindex $args 0]]}
|
|
2 {return [tkdnd::compat::bindtarget2 $window [lindex $args 0] \
|
|
[lindex $args 1]]}
|
|
3 {return [tkdnd::compat::bindtarget3 $window [lindex $args 0] \
|
|
[lindex $args 1] [lindex $args 2]]}
|
|
4 {return [tkdnd::compat::bindtarget4 $window [lindex $args 0] \
|
|
[lindex $args 1] [lindex $args 2] [lindex $args 3]]}
|
|
}
|
|
}
|
|
cleartarget {
|
|
return [tkdnd::compat::cleartarget $window]
|
|
}
|
|
bindsource {
|
|
switch [llength $args] {
|
|
0 {return [tkdnd::compat::bindsource0 $window]}
|
|
1 {return [tkdnd::compat::bindsource1 $window [lindex $args 0]]}
|
|
2 {return [tkdnd::compat::bindsource2 $window [lindex $args 0] \
|
|
[lindex $args 1]]}
|
|
3 {return [tkdnd::compat::bindsource3 $window [lindex $args 0] \
|
|
[lindex $args 1] [lindex $args 2]]}
|
|
}
|
|
}
|
|
clearsource {
|
|
return [tkdnd::compat::clearsource $window]
|
|
}
|
|
drag {
|
|
return [tkdnd::_init_drag 1 $window "press" 0 0 0 0]
|
|
}
|
|
}
|
|
error "invalid number of arguments!"
|
|
};# ::dnd
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Command compat::bindtarget
|
|
# ----------------------------------------------------------------------------
|
|
proc compat::bindtarget0 {window} {
|
|
return [bind $window <<DropTargetTypes>>]
|
|
};# compat::bindtarget0
|
|
|
|
proc compat::bindtarget1 {window type} {
|
|
return [bindtarget2 $window $type <Drop>]
|
|
};# compat::bindtarget1
|
|
|
|
proc compat::bindtarget2 {window type event} {
|
|
switch $event {
|
|
<DragEnter> {return [bind $window <<DropEnter>>]}
|
|
<Drag> {return [bind $window <<DropPosition>>]}
|
|
<DragLeave> {return [bind $window <<DropLeave>>]}
|
|
<Drop> {return [bind $window <<Drop>>]}
|
|
}
|
|
};# compat::bindtarget2
|
|
|
|
proc compat::bindtarget3 {window type event script} {
|
|
set type [normalise_type $type]
|
|
::tkdnd::drop_target register $window [list $type]
|
|
switch $event {
|
|
<DragEnter> {return [bind $window <<DropEnter>> $script]}
|
|
<Drag> {return [bind $window <<DropPosition>> $script]}
|
|
<DragLeave> {return [bind $window <<DropLeave>> $script]}
|
|
<Drop> {return [bind $window <<Drop>> $script]}
|
|
}
|
|
};# compat::bindtarget3
|
|
|
|
proc compat::bindtarget4 {window type event script priority} {
|
|
return [bindtarget3 $window $type $event $script]
|
|
};# compat::bindtarget4
|
|
|
|
proc compat::normalise_type { type } {
|
|
switch $type {
|
|
text/plain -
|
|
{text/plain;charset=UTF-8} -
|
|
Text {return DND_Text}
|
|
text/uri-list -
|
|
Files {return DND_Files}
|
|
default {return $type}
|
|
}
|
|
};# compat::normalise_type
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Command compat::bindsource
|
|
# ----------------------------------------------------------------------------
|
|
proc compat::bindsource0 {window} {
|
|
return [bind $window <<DropTargetTypes>>]
|
|
};# compat::bindsource0
|
|
|
|
proc compat::bindsource1 {window type} {
|
|
return [bindsource2 $window $type <Drop>]
|
|
};# compat::bindsource1
|
|
|
|
proc compat::bindsource2 {window type script} {
|
|
set type [normalise_type $type]
|
|
::tkdnd::drag_source register $window $type
|
|
bind $window <<DragInitCmd>> "list {copy} {%t} \[$script\]"
|
|
};# compat::bindsource2
|
|
|
|
proc compat::bindsource3 {window type script priority} {
|
|
return [bindsource2 $window $type $script]
|
|
};# compat::bindsource3
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Command compat::cleartarget
|
|
# ----------------------------------------------------------------------------
|
|
proc compat::cleartarget {window} {
|
|
};# compat::cleartarget
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Command compat::clearsource
|
|
# ----------------------------------------------------------------------------
|
|
proc compat::clearsource {window} {
|
|
};# compat::clearsource
|