125 lines
4.4 KiB
Tcl
125 lines
4.4 KiB
Tcl
|
######################################################
|
||
|
# TkTeXEditor
|
||
|
# Distributed under GNU Public License
|
||
|
# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru
|
||
|
# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru
|
||
|
######################################################
|
||
|
|
||
|
######################################################
|
||
|
# #
|
||
|
# Notebook tabs procedures and other #
|
||
|
# #
|
||
|
######################################################
|
||
|
|
||
|
|
||
|
## CLICKING TUBULAR HEADER PROCEDURE ##
|
||
|
proc ClickTab {node} {
|
||
|
global nb files activeFile tree ver files status release
|
||
|
set node [$nb raise]
|
||
|
if {($node == "") || ($node == "debug")} {return}
|
||
|
set activeFile $node
|
||
|
set text "$nb.f$node.f.text"
|
||
|
set fullPath [lindex $files($node) 0]
|
||
|
wm title . "TkLaTeXEditor $ver$release - $fullPath"
|
||
|
set folder [file dirname $fullPath]
|
||
|
set file [file tail $fullPath]
|
||
|
set ext [string trim [file extension $file] {.}]
|
||
|
set name [file rootname $file]
|
||
|
$tree selection set $node
|
||
|
$tree see $node
|
||
|
UpdateStruct $fullPath $node
|
||
|
focus -force $text
|
||
|
unset text fullPath folder file ext name
|
||
|
## status bar information update ##
|
||
|
$status(fileAttr) configure -text "[FileAttr [lindex $files($node) 0]]"
|
||
|
$status(fileSize) configure -text "[file size [lindex $files($node) 0]] b."
|
||
|
$status(encode) configure -text "[lindex $files($node) 2]"
|
||
|
$status(pos) configure -text [$nb.f$node.f.text index insert];# cursor position
|
||
|
}
|
||
|
|
||
|
## NOTEBOOK PAGE SWITCHER ##
|
||
|
proc PageTab {key} {
|
||
|
global nb
|
||
|
set len [llength [$nb pages]]
|
||
|
if {$len > 0} {
|
||
|
set newIndex [expr [$nb index [$nb raise]] + $key]
|
||
|
if {$newIndex < 0} {
|
||
|
set newIndex [expr $len - 1]
|
||
|
} elseif {$newIndex >= $len} {
|
||
|
set newIndex 0
|
||
|
}
|
||
|
$nb see [lindex [$nb pages] $newIndex]
|
||
|
$nb raise [lindex [$nb pages] $newIndex]
|
||
|
PageRaise [lindex [$nb pages] $newIndex]
|
||
|
}
|
||
|
}
|
||
|
## RAISED NOTEBOOK TAB IF CLICK MOUSE BUTTON ##
|
||
|
proc PageRaise {node} {
|
||
|
global nb tree files status activeFile ver release
|
||
|
set parentNode [$tree parent $node]
|
||
|
if {$node == "debug"} {return}
|
||
|
if {[$tree exists $node] ==1 && [info exists files($node)] != 1} {
|
||
|
EditFile [$tree itemcget $node -data] ;# open editor if file don't open
|
||
|
} elseif {[$tree exists $node] ==0} {
|
||
|
set file [file tail [lindex $files($node) 0]]
|
||
|
set fileDir [file dirname [lindex $files($node) 0]]
|
||
|
set node [InsertTreeSubNode "$file" $parentNode $fileDir]
|
||
|
}
|
||
|
$nb raise $node
|
||
|
|
||
|
set activeFile $node
|
||
|
#puts "node - $node\nparent - $parentNode"
|
||
|
$tree selection set $node
|
||
|
$tree see $node
|
||
|
set item [$tree itemcget $node -data]
|
||
|
focus -force $nb.f$node.f.text
|
||
|
catch [$status(pos) configure -text [$nb.f$node.f.text index insert]] ;# cursor position
|
||
|
## status bar information update ##
|
||
|
$status(fileAttr) configure -text "[FileAttr $item]"
|
||
|
$status(fileSize) configure -text "[file size $item] b."
|
||
|
$status(encode) configure -text "[lindex $files($node) 2]"
|
||
|
$status(pos) configure -text [$nb.f$node.f.text index insert];# cursor position
|
||
|
UpdateStruct [lindex $files($node) 0] $node;# exec structure updating
|
||
|
wm title . "TkLaTeXEditor $ver$release - [lindex $files($node) 0]"
|
||
|
unset item
|
||
|
}
|
||
|
|
||
|
|
||
|
## CLOSE PROGRAMM PROCEDURE ##
|
||
|
proc Quit {} {
|
||
|
if {[FileDialog quit_close_all] == 0} {
|
||
|
return
|
||
|
} else {
|
||
|
exit
|
||
|
}
|
||
|
}
|
||
|
|
||
|
## AUTOSAVE AND AUTOREFRESH TIMERS PROCEDURE ##
|
||
|
set activeTimer(refresh) ""
|
||
|
set activeTimer(autosave) ""
|
||
|
proc Timer {file type} {
|
||
|
global timers activeFile activeTimer
|
||
|
if [info exists activeFile] {
|
||
|
} else {
|
||
|
return
|
||
|
}
|
||
|
if {$type == "refresh"} {
|
||
|
after cancel $activeTimer(refresh) ;# close previouse task
|
||
|
set activeTimer(refresh) [after $timers(refresh) {UpdateStruct $file $activeFile}]
|
||
|
} elseif {$type == "autosave"} {
|
||
|
after cancel $activeTimer(autosave) ;# close previouse task
|
||
|
set activeTimer(autosave) [after $timers(autosave) {FileDialog save_all}]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
proc GetExtention {file} {
|
||
|
global fileList
|
||
|
set ext [string range [file extension [file tail $file]] 1 end]
|
||
|
return $ext
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|