145 lines
4.5 KiB
Tcl
145 lines
4.5 KiB
Tcl
|
#########################################################
|
||
|
# Tk LaTeX Editor
|
||
|
# Distributed under GNU Public License
|
||
|
# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru
|
||
|
# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru
|
||
|
#########################################################
|
||
|
|
||
|
proc FindModule {} {
|
||
|
global module dir font tcl_platform color preview_cmd convert_cmd
|
||
|
set menu [menu .frmMenu.mnuModule.m -background $color(bg)]
|
||
|
set moduleName ""
|
||
|
|
||
|
foreach m {tkcvs tkdiff dvi ps pdf html} {
|
||
|
if [info exists convert_cmd($m)] {
|
||
|
scan $convert_cmd($m) "%s" moduleName
|
||
|
FindExtMod_ convert_$m $moduleName
|
||
|
}
|
||
|
if [info exists preview_cmd($m)] {
|
||
|
scan $preview_cmd($m) "%s" moduleName
|
||
|
FindExtMod_ preview_$m $moduleName
|
||
|
} else {
|
||
|
FindExtMod $m $m
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
## Find external programms ##
|
||
|
proc FindExtMod {m cmd} {
|
||
|
global module dir font tcl_platform color preview_cmd convert_cmd
|
||
|
if {$tcl_platform(platform) == "unix"} {
|
||
|
set string [exec whereis $cmd]
|
||
|
scan $string "%s%s" v module($m)
|
||
|
if {[info exists module($m)] && [file isdirectory $module($m)] == 0} {
|
||
|
puts "Find external programm $module($m)"
|
||
|
.frmMenu.mnuModule.m add command -label [::msgcat::mc "$m"] -command "DoModule $m" \
|
||
|
-font $font(normal)
|
||
|
} else {
|
||
|
set module($m) ""
|
||
|
}
|
||
|
} elseif {$tcl_platform(platform) == "mac"} {
|
||
|
set module($m) $cmd
|
||
|
} elseif {$tcl_platform(platform) == "windows"} {
|
||
|
set module($m) $cmd
|
||
|
}
|
||
|
}
|
||
|
proc FindExtMod_ {m cmd} {
|
||
|
global module dir font tcl_platform color preview_cmd convert_cmd
|
||
|
if {$tcl_platform(platform) == "unix"} {
|
||
|
set string [exec whereis $cmd]
|
||
|
scan $string "%s%s" v module($m)
|
||
|
if {[info exists module($m)] && [file isdirectory $module($m)] == 0} {
|
||
|
puts "Find external programm $module($m)"
|
||
|
} else {
|
||
|
set module($m) ""
|
||
|
}
|
||
|
} elseif {$tcl_platform(platform) == "mac"} {
|
||
|
set module($m) $cmd
|
||
|
} elseif {$tcl_platform(platform) == "windows"} {
|
||
|
set module($m) $cmd
|
||
|
}
|
||
|
}
|
||
|
|
||
|
## RUNNING MODULE ##
|
||
|
proc DoModule {mod} {
|
||
|
global tcl_platform
|
||
|
global module dir tree
|
||
|
case $mod {
|
||
|
tkcvs {
|
||
|
set pipe [open "|$module(tkcvs) -dir $dir(doc)" "r"]
|
||
|
fileevent $pipe readable
|
||
|
fconfigure $pipe -buffering none -blocking no
|
||
|
}
|
||
|
tkdiff {
|
||
|
set selFiles [$tree selection get]
|
||
|
if {[llength $selFiles] == 0} {
|
||
|
set answer [tk_messageBox\
|
||
|
-message "[::msgcat::mc "Don't selected file"]"\
|
||
|
-type ok -icon warning\
|
||
|
-title [::msgcat::mc "Warning"]]
|
||
|
case $answer {
|
||
|
ok {return 0}
|
||
|
}
|
||
|
}
|
||
|
if {[llength $selFiles] == 1} {
|
||
|
if {$selFiles != ""} {
|
||
|
set file1 [$tree itemcget $selFiles -data]
|
||
|
}
|
||
|
set command "-r $file1"
|
||
|
}
|
||
|
if {[llength $selFiles] == 2} {
|
||
|
if {[lindex $selFiles 0] != ""} {
|
||
|
set file1 [$tree itemcget [lindex $selFiles 0] -data]
|
||
|
}
|
||
|
if {[lindex $selFiles 1] != ""} {
|
||
|
set file2 [$tree itemcget [lindex $selFiles 1] -data]
|
||
|
}
|
||
|
set command "$file1 $file2"
|
||
|
}
|
||
|
if {[llength $selFiles] > 2} {
|
||
|
set answer [tk_messageBox\
|
||
|
-message "[::msgcat::mc "Must be one or two file select!"]"\
|
||
|
-type ok -icon info\
|
||
|
-title [::msgcat::mc "Warning"]]
|
||
|
case $answer {
|
||
|
ok {return 0}
|
||
|
}
|
||
|
}
|
||
|
set pipe [open "|$module(tkdiff) $command" "r"]
|
||
|
fileevent $pipe readable
|
||
|
fconfigure $pipe -buffering none -blocking no
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
proc EndProc {module file} {
|
||
|
if {[eof $file]} {
|
||
|
catch [close $file] msg
|
||
|
if {$msg != ""} {
|
||
|
puts $msg
|
||
|
Message "$module\n [::msgcat::mc "Program failed"]: $msg\n";
|
||
|
} else {
|
||
|
Message "$module\n [::msgcat::mc "Program finished successfully"]\n"
|
||
|
}
|
||
|
} else {
|
||
|
read $file
|
||
|
}
|
||
|
}
|
||
|
|
||
|
proc Message {message} {
|
||
|
global font
|
||
|
set answer [MessageDlg .msg -parent .\
|
||
|
-message "$message"\
|
||
|
-type ok -icon warning\
|
||
|
-font $font(normal)\
|
||
|
-title [::msgcat::mc "Warning"]]
|
||
|
case $answer {
|
||
|
ok {return 0}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|