148 lines
5.1 KiB
Tcl
148 lines
5.1 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 InsertTableDialog {} {
|
||
|
global nb font files findString replaceString text dir color
|
||
|
set node [$nb raise]
|
||
|
if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} {
|
||
|
return
|
||
|
}
|
||
|
#set file $files($node)
|
||
|
set w .table
|
||
|
set text "$nb.f$node.f.text"
|
||
|
# set findString ""
|
||
|
# destroy the find window if it already exists
|
||
|
if {[winfo exists $w]} {
|
||
|
destroy $w
|
||
|
}
|
||
|
set colNum 1
|
||
|
set posTable "center"
|
||
|
set align "center"
|
||
|
set line "full"
|
||
|
toplevel $w
|
||
|
wm transient $w $nb.f$node
|
||
|
wm title $w [::msgcat::mc "Add table"]
|
||
|
wm resizable $w 0 0
|
||
|
|
||
|
set f1 [frame $w.frmAlign -borderwidth 1 -relief raised -background $color(bg)]
|
||
|
set f2 [frame $w.frmTable -borderwidth 1 -relief raised -background $color(bg)]
|
||
|
set f3 [frame $w.frmBtn -borderwidth 1 -background $color(bg)]
|
||
|
set f4 [frame $w.frmCol -borderwidth 1 -relief raised -background $color(bg)]
|
||
|
set f5 [frame $w.frmPos -borderwidth 1 -relief raised -background $color(bg)]
|
||
|
pack $f4 $f1 $f2 $f5 $f3 -side top -fill x -expand true
|
||
|
|
||
|
label $f4.lblCol -text [::msgcat::mc "Input number of columns"] -background $color(bg)
|
||
|
SpinBox $f4.spinCol -textvariable colNum -range {1 100 1} -helptext "Columns" -background $color(bg)
|
||
|
pack $f4.lblCol $f4.spinCol -side top -fill x -pady 2 -padx 2
|
||
|
|
||
|
label $f1.lbl -text [::msgcat::mc "Alignment"] -background $color(bg)
|
||
|
pack $f1.lbl -side top -fill x
|
||
|
foreach btn {center left right} {
|
||
|
radiobutton $f1.btn$btn -text [::msgcat::mc "Align $btn"] -variable align\
|
||
|
-value $btn -font $font(normal) -selectcolor $color(selectbg) -background $color(bg)
|
||
|
pack $f1.btn$btn -side top -anchor w
|
||
|
}
|
||
|
|
||
|
label $f5.lblPos -text [::msgcat::mc "Table position"] -background $color(bg)
|
||
|
pack $f5.lblPos -side top -fill x
|
||
|
foreach tbl {top bottom center} {
|
||
|
image create photo img_$tbl -file [file join $dir(img) table_$tbl.gif]
|
||
|
radiobutton $f5.btn$tbl -variable table -indicatoron 0 -background $color(bg)\
|
||
|
-font $font(normal) -image img_$tbl -value $tbl -selectcolor $color(selectbg)
|
||
|
pack $f5.btn$tbl -side left -anchor n -pady 2
|
||
|
}
|
||
|
|
||
|
label $f2.lblLine -text [::msgcat::mc "Line type"] -background $color(bg)
|
||
|
pack $f2.lblLine -side top -fill x
|
||
|
foreach tbl {empty full double cols lines} {
|
||
|
image create photo img_$tbl -file [file join $dir(img) table_$tbl.gif]
|
||
|
radiobutton $f2.btn$tbl -variable line -indicatoron 0 -background $color(bg)\
|
||
|
-font $font(normal) -image img_$tbl -value $tbl -selectcolor $color(selectbg)
|
||
|
pack $f2.btn$tbl -side left -anchor n -pady 2
|
||
|
}
|
||
|
|
||
|
|
||
|
button $f3.btnAdd -text "[::msgcat::mc "Insert"] - Enter" -font $font(normal)\
|
||
|
-relief groove -background $color(bg) -command {
|
||
|
InsertTable $colNum $table $line $align
|
||
|
destroy .table
|
||
|
}
|
||
|
button $f3.btnCancel -text "[::msgcat::mc "Cancel"] - Esc" -command "destroy $w"\
|
||
|
-font $font(normal) -relief groove -background $color(bg)
|
||
|
pack $f3.btnAdd $f3.btnCancel\
|
||
|
-side left -padx 2 -pady 2 -fill x
|
||
|
|
||
|
bind $w <Return> ""
|
||
|
bind $w <F4> ""
|
||
|
bind $w <Escape> "destroy $w"
|
||
|
}
|
||
|
|
||
|
proc InsertTable {colNum posTable line align} {
|
||
|
global dir font color nb
|
||
|
set node [$nb raise]
|
||
|
if {$node == ""} {return}
|
||
|
set text "$nb.f$node.f.text"
|
||
|
set pos [$text index insert]
|
||
|
set curLine [lindex [split $pos "."] 0]
|
||
|
set cursor [lindex [split $pos "."] 1]
|
||
|
set editLine [$text get $curLine.0 $pos]
|
||
|
set header "\\begin\{tabular\}"
|
||
|
set footer "\\end\{tabular\}"
|
||
|
|
||
|
if {$line == "double"} {
|
||
|
set split "||"
|
||
|
set lineEnd "\\\\ \\hline\n"
|
||
|
} elseif {$line == "full"} {
|
||
|
set split "|"
|
||
|
set lineEnd "\\\\ \\hline\n"
|
||
|
} elseif {$line == "empty"} {
|
||
|
set split " "
|
||
|
set lineEnd "\\\\\n"
|
||
|
} elseif {$line == "cols"} {
|
||
|
set split "|"
|
||
|
set lineEnd "\\\\\n"
|
||
|
} elseif {$line == "lines"} {
|
||
|
set split " "
|
||
|
set lineEnd "\\\\ \\hline\n"
|
||
|
} else {
|
||
|
set split " "
|
||
|
set lineEnd "\\\\\n"
|
||
|
}
|
||
|
switch -- $posTable {
|
||
|
top {set position "t"}
|
||
|
bottom {set position "b"}
|
||
|
center {set position "c"}
|
||
|
}
|
||
|
switch -- $align {
|
||
|
center {set colAlign "c"}
|
||
|
left {set colAlign "l"}
|
||
|
right {set colAlign "r"}
|
||
|
}
|
||
|
set count 0
|
||
|
set count_ 0
|
||
|
while {$colNum > $count} {
|
||
|
append columns "$split$colAlign"
|
||
|
incr count
|
||
|
}
|
||
|
while {$colNum > [expr $count_+1]} {
|
||
|
append body "& "
|
||
|
incr count_
|
||
|
}
|
||
|
|
||
|
append columns $split
|
||
|
|
||
|
$text insert $pos "$header\[$position\]\{$columns\} $lineEnd\t$body$lineEnd$footer"
|
||
|
$text mark set insert [expr $curLine +1].1
|
||
|
$text see insert
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|