diff options
Diffstat (limited to 'library/zincText.tcl')
-rw-r--r-- | library/zincText.tcl | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/library/zincText.tcl b/library/zincText.tcl deleted file mode 100644 index 2e235c5..0000000 --- a/library/zincText.tcl +++ /dev/null @@ -1,191 +0,0 @@ -# -# ZincText - Zinc extension for text input on text items and fields -# -# $Id$ -# -# AUTHOR -# -# Patrick Lecoanet <lecoanet@cena.fr> -# (and documentation by Christophe Mertz <mertz@cena.fr>) -# -# Copyright (c) 2002 - 2003 CENA, Patrick Lecoanet -# -# This code is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This code is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with this code; if not, write to the Free -# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# -# SYNOPSIS -# -# package require zincText; -# -# zn_TextBindings $zinc -# -# $zinc addtag text withtag $a_text -# $zinc addtag text withtag $a_track -# $zinc addtag text withtag $a_waypoint -# $zinc addtag text withtag $a_tabular -# -# -# DESCRIPTION -# -# This module implements text input with the mouse and keyboard 'a la emacs'. -# Text items must have the 'text' tag and must of course be sensitive. -# Track, waypoint and tabular items have fields and these fields can -# be edited the same way. Only sensitive fields can be edited. the following -# interactions are supported: -# -# <click 1> To set the cursor position -# <click 2> To paste the current selection -# <drag 1> To make a selection -# <shift drag 1> To extend the current selection -# <shift 1> To extend the current selection -# <left arrow>, -# <right arrow> To move the cursor to the left or to the right -# <up arrow>, -# <down arrow> To move the cursor up or down a line -# <ctrl+a>, -# <home> To move the cursor at the begining of the line -# <ctrl+e> -# <end> To move the cursor at the end of the line -# <meta+<>, -# <meta+>> To move the cursor at the beginning / end of the text -# <BackSpace> -# <ctrl+h> To delete the char just before the cursor -# <Delete> To delete the char just after the cursor -# <Return> To insert a return char. This does not validate the input! -# -# - -proc zn_TextBindings {zinc} { - $zinc bind text <1> "startSel $zinc %x %y" - $zinc bind text <2> "pasteSel $zinc %x %y" - $zinc bind text <B1-Motion> "extendSel $zinc %x %y" - $zinc bind text <Shift-B1-Motion> "extendSel $zinc %x %y" - $zinc bind text <Shift-1> "$zinc select adjust current @%x,%y" - $zinc bind text <Left> "moveCur $zinc -1" - $zinc bind text <Right> "moveCur $zinc 1" - $zinc bind text <Up> "setCur $zinc up" - $zinc bind text <Down> "setCur $zinc down" - $zinc bind text <Control-a> "setCur $zinc bol" - $zinc bind text <Home> "setCur $zinc bol" - $zinc bind text <Control-e> "setCur $zinc eol" - $zinc bind text <End> "setCur $zinc eol" - $zinc bind text <Meta-less> "setCur $zinc 0" - $zinc bind text <Meta-greater> "setCur $zinc end" - $zinc bind text <KeyPress> "insertKey $zinc %A" - $zinc bind text <Shift-KeyPress> "insertKey $zinc %A" - $zinc bind text <Return> "insertChar $zinc \\n" - $zinc bind text <BackSpace> "textDel $zinc -1" - $zinc bind text <Control-h> "textDel $zinc -1" - $zinc bind text <Delete> "textDel $zinc 0" -} - - -proc pasteSel {w x y} { - set item [$w focus] - - if {[llength $item] != 0} { - catch {$w insert [lindex $item 0] [lindex $item 1] @$x,$y [selection get]} - } -} - - -proc insertChar {w c} { - set item [$w focus] - set selItem [$w select item] - - if {[llength $item] == 0} { - return; - } - - if {([llength $selItem]!= 0) && - ([lindex $selItem 0] == [lindex $item 0]) && - ([lindex $selItem 1] == [lindex $item 1])} { - $w dchars [lindex $item 0] [lindex $item 1] sel.first sel.last - } - $w insert [lindex $item 0] [lindex $item 1] insert $c -} - - -proc insertKey {w c} { - if {! [binary scan $c {c} code]} { - return - } - set code [expr $code & 0xFF] - if {($code < 32) || ($code == 128)} { - puts "rejet $code" - return - } - - insertChar $w $c -} - - -proc setCur {w where} { - set item [$w focus] - - if {[llength $item] != 0} { - $w cursor [lindex $item 0] [lindex $item 1] $where - } -} - - -proc moveCur {w dir} { - set item [$w focus] - - if {[llength $item] != 0} { - set index [$w index [lindex $item 0] [lindex $item 1] insert] - $w cursor [lindex $item 0] [lindex $item 1] [expr $index + $dir] - } -} - - -proc startSel {w x y} { - set part [$w currentpart t] - - $w cursor current $part @$x,$y - $w focus current $part - focus $w - $w select from current $part @$x,$y -} - - -proc extendSel {w x y} { - set part [$w currentpart t] - - $w select to current $part @$x,$y -} - - -proc textDel {w dir} { - set item [$w focus] - set selItem [$w select item] - - if {[llength $item] == 0} { - return; - } - - if {([llength $selItem] != 0) && - ([lindex $selItem 0] == [lindex $item 0]) && - ([lindex $selItem 1] == [lindex $item 1])} { - $w dchars [lindex $item 0] [lindex $item 1] sel.first sel.last - } else { - set ind [expr [$w index [lindex $item 0] [lindex $item 1] insert] + $dir] - if { $ind >= 0 } { - $w dchars [lindex $item 0] [lindex $item 1] $ind $ind - } - } -} - -package provide zincText 1.0 |