tk-latex-editor/lib/modules/tree.tcl

182 lines
6.0 KiB
Tcl
Executable File

######################################################
# TkTeXEditor
# Distributed under GNU Public License
# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru
# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru
######################################################
######################################################
# #
# Working with trees (insert\update\deleted) nodes #
# #
######################################################
## PROJECTS & FILE TREE ##
proc InsertTreeNode {file dirName} {
global tree font dir
set dot "_"
set name [file rootname $file]
set ext [string range [file extension $file] 1 end]
regsub -all -nocase -- {/| |\.} $dirName $dot nodeEnd
regsub -all -nocase -- { |\.} $name $dot name
set subNode "$nodeEnd$dot$name$dot$ext"
if {[$tree exists $subNode] == 1} {
return $subNode
}
$tree insert end root $subNode -text $file \
-data [file join $dirName $file] -open 1\
-image [Bitmap::get [file join $dir(img) tex.gif]]\
-font $font(normal)
$tree configure -redraw 1
return $subNode
}
## INSERT NODE INTO FILES TREE FOR INCLUDED FILES
proc InsertTreeSubNode {file rootNode dirName} {
global tree font dir files
set dot "_"
set name [file rootname $file]
set ext [string range [file extension $file] 1 end]
if {$ext == ""} {
#puts "$file - ÎÅÔ ÒÁÓÛÉÒÑÌÏ×ËÉ"
set ext "tex"
set file $file.$ext
#puts $file
}
regsub -all -nocase -- {/| |\.} $dirName $dot nodeEnd
regsub -all -nocase -- { |\.} $name $dot name
set subNode "$nodeEnd$dot$name$dot$ext"
#set subNode "$nodeEnd$dot$ext"
#puts "file - $file\n"
#puts "dirName - $dirName\n"
#puts "rootNode - $rootNode\n"
#puts "nodeEnd - $nodeEnd\n"
#puts "name - $name\n"
#puts "subnode - $subNode\n"
if {[$tree exists $subNode] == 1} {
if {[$tree parent $subNode] == "root"} {
$tree delete $subNode
} else {
return
}
}
$tree insert end $rootNode $subNode -text $file \
-data [file join $dirName $file] -open 1\
-image [Bitmap::get [file join $dir(img) tex.gif]]\
-font $font(normal)
$tree configure -redraw 1
return $subNode
}
## DOCUMENT STRUCTURE TREE ##
proc InsertNode {node parentNode text image lineNumber} {
global treeStruct font dir
set dot "_"
$treeStruct insert end $parentNode $node -text [string trimleft $text "\*\{"] \
-data " $lineNumber$dot$text" -open 1\
-font $font(normal)\
-image [Bitmap::get [file join $dir(img) $image.gif]]
$treeStruct configure -redraw 1
#return $subNode
}
## TREE ONE CLICKING PROCEDURE ##
proc TreeOneClick {node} {
global dir nb tree activeFile status files
$tree selection set $node
set activeFile $node
set file [$tree itemcget $node -data]
#puts "TreeOneClick - $file";# debug
if {[file exists $file] == 0} {
set answer [tk_messageBox -message "$file [::msgcat::mc "File not found"]"\
-type ok -icon warning -title [::msgcat::mc "Warning"]]
case $answer {
ok {return}
}
}
$status(fileAttr) configure -text [FileAttr [$tree itemcget $node -data]]
#$status(encode) configure -text "[lindex $files($activeFile) 2]"
PageRaise $node
puts "$node\nnodes - [$tree nodes $node]"
}
proc TreeStructOneClick {node} {
global dir nb treeStruct activeFile status files ver release
$treeStruct selection set $node
set findString [$treeStruct itemcget $node -data]
set star [string range $findString [expr [string first "_" $findString] + 1] [expr [string first "_" $findString] + 1]]
set lineNumber [string range $findString 0 [expr [string first "_" $findString]-1]]
set str [string range $node 0 [expr [string first "_" $node]-1]]
if {$star == "\*"} {
set findString [string range $findString [expr [string first "_" $findString]+2] end]
set findString "$str\*$findString\}"
} else {
set findString [string range $findString [expr [string first "_" $findString]+1] end]
set findString "$str\{$findString\}"
}
#$treeStruct selection get $node
set text "$nb.f$activeFile.f.text"
wm title . "TkLaTeXEditor $ver$release - [lindex $files($activeFile) 0]"
FindProc $text $findString $node
$status(pos) configure -text [$text index insert];# cursor position
}
proc TreeDoubleClick {} {
}
proc NodeInsert {file} {
global tree font dir files
set dot "_"
# ËÁÔÁÌÏÇ
set dirName [file dirname $file]
# ÉÍÑ ÆÁÊÌÁ
set name [file rootname $file]
# ÒÁÓÛÉÒÅÎÉÅ
set ext [string range [file extension $file] 1 end]
if {$ext == ""} {
#puts "$file - ÎÅÔ ÒÁÓÛÉÒÑÌÏ×ËÉ"
set ext "tex"
set file $file.$ext
#puts $file
}
regsub -all -nocase -- {/| |\.} $dirName $dot nodeEnd
regsub -all -nocase -- { |\.} $name $dot name
if {} {
}
set subNode "$nodeEnd$dot$name$dot$ext"
#set subNode "$nodeEnd$dot$ext"
#puts "file - $file\n"
#puts "dirName - $dirName\n"
#puts "rootNode - $rootNode\n"
#puts "nodeEnd - $nodeEnd\n"
#puts "name - $name\n"
#puts "subnode - $subNode\n"
if {[$tree exists $subNode] == 1} {
if {[$tree parent $subNode] == "root"} {
$tree delete $subNode
} else {
return
}
}
$tree insert end $rootNode $subNode -text $file \
-data [file join $dirName $file] -open 1\
-image [Bitmap::get [file join $dir(img) tex.gif]]\
-font $font(normal)
$tree configure -redraw 1
return $subNode
}