New version of ProjMan

This commit is contained in:
svkalinin
2022-07-21 10:56:46 +03:00
parent faf594ce9b
commit e68aeddbd5
2595 changed files with 14193 additions and 12688 deletions

View File

@@ -1,424 +0,0 @@
######################################################
# projman
# Distributed under GNU Public License
# Author: Sergey Kalinin s.v.kalinin28@gmail.com
# Copyright (c) "https://nuk-svk.ru", 2018,
# https://bitbucket.org/svk28/projman
######################################################
## ABOUT PROGRAMM DIALOG ##
proc AboutDialog {} {
global docDir imgDir tree noteBook ver fontNormal dataDir env editor rootDir
set w {}
# prevent double creation "About" page
if { [catch {set w [$noteBook insert end about -text [::msgcat::mc "About ..."]]} ] } {
$noteBook raise about
return
}
frame $w.frmImg -borderwidth 2 -relief ridge -background white
#image create photo imgLogo -format png -file [file join $imgDir projman.png]
image create photo imgLogo -data {
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
AABJRU5ErkJggg==
}
# image create photo imgAbout -format png -file [file join $imgDir icons large projman.png]
label $w.frmImg.lblImgLogo -image imgLogo -border 0
#label $w.frmImg.lblImg -image imgAbout
pack $w.frmImg.lblImgLogo -side top -pady 5 -padx 5
frame $w.frmlbl -borderwidth 2 -relief ridge
label $w.frmlbl.lblVersion -text "[::msgcat::mc Version] $ver"
label $w.frmlbl.lblCompany -text "License: GPL"
label $w.frmlbl.lblAuthorName -text "[::msgcat::mc Author]: Sergey Kalinin"
label $w.frmlbl.lblEmail -text "[::msgcat::mc E-mail]: banzaj28@yandex.ru"
label $w.frmlbl.lblWWWhome -text "[::msgcat::mc "Home page"]: https://nuk-svk.ru"
label $w.frmlbl.lblWWWgit -text "Git repository: https://bitbucket.org/svk28/projman"
pack $w.frmlbl.lblVersion $w.frmlbl.lblCompany $w.frmlbl.lblAuthorName \
$w.frmlbl.lblEmail $w.frmlbl.lblWWWhome $w.frmlbl.lblWWWgit -side top -padx 5
frame $w.frmThanks -borderwidth 2 -relief ridge
label $w.frmThanks.lblThanks -text "[::msgcat::mc Thanks]" -font $fontNormal
text $w.frmThanks.txtThanks -width 10 -height 10 -font $fontNormal\
-selectborderwidth 0 -selectbackground #55c4d1 -width 10
pack $w.frmThanks.lblThanks -pady 5
pack $w.frmThanks.txtThanks -fill both -expand true
frame $w.frmBtn -borderwidth 2 -relief ridge
button $w.frmBtn.btnOk -text [::msgcat::mc "Close"] -borderwidth {1} \
-command {
$noteBook delete about
$noteBook raise [$noteBook page end]
}
pack $w.frmBtn.btnOk -pady 2
pack $w.frmImg -side top -fill x
pack $w.frmlbl -side top -expand true -fill both
pack $w.frmThanks -side top -expand true -fill both
pack $w.frmBtn -side top -fill x
bind $w <KeyRelease-Return> "$noteBook delete about"
bind $w <Escape> "$noteBook delete about"
bind $w <Return> {$noteBook delete about}
#
bind $w.frmlbl.lblWWWhome <Enter> {
.frmBody.frmWork.noteBook.fabout.frmlbl.lblWWWhome configure -fg blue -cursor hand1
LabelUpdate .frmStatus.frmHelp.lblHelp "Goto https://nuk-svk.ru"
}
bind $w.frmlbl.lblWWWhome <Leave> {
.frmBody.frmWork.noteBook.fabout.frmlbl.lblWWWhome configure -fg $editor(fg)
LabelUpdate .frmStatus.frmHelp.lblHelp ""
}
bind $w.frmlbl.lblWWWhome <ButtonRelease-1> {GoToURL "https://nuk-svk.ru"}
bind $w.frmlbl.lblWWWgit <Enter> {
.frmBody.frmWork.noteBook.fabout.frmlbl.lblWWWgit configure -fg blue -cursor hand1
LabelUpdate .frmStatus.frmHelp.lblHelp "Goto https://bitbucket.org/svk28/projman"
}
bind $w.frmlbl.lblWWWgit <Leave> {
.frmBody.frmWork.noteBook.fabout.frmlbl.lblWWWgit configure -fg $editor(fg)
LabelUpdate .frmStatus.frmHelp.lblHelp ""
}
bind $w.frmlbl.lblWWWgit <ButtonRelease-1> {GoToURL "https://bitbucket.org/svk28/projman"}
#
bind $w.frmlbl.lblEmail <Enter> {
.frmBody.frmWork.noteBook.fabout.frmlbl.lblEmail configure -fg blue -cursor hand1
LabelUpdate .frmStatus.frmHelp.lblHelp "Send email \"banzaj28@yandex.ru\""
}
bind $w.frmlbl.lblEmail <Leave> {
.frmBody.frmWork.noteBook.fabout.frmlbl.lblEmail configure -fg $editor(fg)
LabelUpdate .frmStatus.frmHelp.lblHelp ""
}
bind $w.frmlbl.lblEmail <ButtonRelease-1> {SendEmail "banzaj28@yandex.ru"}
$noteBook raise about
focus $w.frmBtn.btnOk
if {[file exists [file join $rootDir THANKS]] == 1} {
set file [open [file join $rootDir THANKS] r]
} else {
set file [open [file join $docDir THANKS] r]
}
while {[gets $file line]>=0} {
$w.frmThanks.txtThanks insert end "$line\n"
}
close $file
$w.frmThanks.txtThanks configure -state disable
}

View File

@@ -1,82 +0,0 @@
#######################################################################
# Baloon help
# Author: Alexander Dederer
# Usage:
# Set balloon tips to widget:
# balloon $widget set "Hello World"
# balloon [button .exit -text "exit" -command exit] set "Hello world"
#
# Clear ballon tips from widget:
# balloon $widget clear
#
# Show balloon tips on widget:
# balloon $widget show "Hello World"
#######################################################################
proc balloon { widget action args } {
global BALLOON fontNormal
switch -- $action {
set {
if { $args != {{}} } {
balloon $widget clear
#bind $widget <Any-Enter> "after 1000 [list balloon %W show $args mousepointer %X %Y]"
#bind $widget <Any-Leave> "catch { destroy %W.balloon }"
bind $widget <Enter> " balloon $widget show $args "
bind $widget <Leave> " wm withdraw .bubble "
}
}
show {
if ![winfo exists .bubble] {
toplevel .bubble -relief flat -background black -bd 1
wm withdraw .bubble
update
array set attrFont [font actual fixed]
set attrFont(-size) [expr $attrFont(-size) - 2]
eval pack [message .bubble.txt -aspect 5000 -bg lightyellow \
-font $fontNormal -text [lindex $args 0]]
#-font [array get attrFont] -text [lindex $args 0]]
pack .bubble.txt
wm transient .bubble .
wm overrideredirect .bubble 1
bind .bubble <Enter> "wm withdraw .bubble"
} ;# if
if {$args == ""} { wm withdraw .bubble }
set text [lindex $args 0]
set BALLOON $text
switch $text {
"" { wm withdraw .bubble ; update }
"default" {
after 1000 "raise_balloon $widget {$text}"
after 7000 "if { \$BALLOON == {$text} } { wm withdraw .bubble ; update }"
}
} ;# switch
}
clear {
catch { destroy .balloon }
bind $widget <Enter> {}
bind $widget <Leave> {}
}
} ;# switch action
} ;# proc balloon
proc raise_balloon {widget text} {
global BALLOON
if { $BALLOON != $text } { wm withdraw .bubble ; update ; return }
set cur_widget [winfo containing [winfo pointerx .] [winfo pointery .]]
if { $cur_widget != $widget } { return }
raise .bubble
.bubble.txt configure -text $text
set b_x [expr [winfo pointerx .] - [winfo reqwidth .bubble]/2]
set b_y [expr [winfo pointery .] + 15]
wm geometry .bubble +$b_x+$b_y
wm deiconify .bubble
update
} ;# proc raise_balloon

View File

@@ -1,190 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# Distrubuted under GPL #
# Copyright (c) "Sergey Kalinin", 2002, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
# AutoCompletition Procedure #
# Author Alex DEDERER #
###########################################################
proc auto_completition { widget } {
set start_word [$widget get "insert - 1 chars wordstart" insert]
set box [$widget bbox insert]
set box_x [expr [lindex $box 0] + [winfo rootx $widget] ]
set box_y [expr [lindex $box 1] + [winfo rooty $widget] + [lindex $box 3] ]
set cnt 0
set pos "1.0"
set last_pos ""
set pattern "$start_word\\w*"
set list_word($start_word) 1
while { ([set start [$widget search -count cnt -regexp -- $pattern $pos end]] != "") } {
set word [$widget get $start "$start + $cnt chars"]
if { ![string equal $start_word $word] } { set list_word($word) 1 }
set pos [$widget index "$pos + [expr $cnt + 1] chars"]
if { [string equal $last_pos $pos] } { break }
set last_pos $pos
} ;# while
bindtags $widget [list CompletitionBind [winfo toplevel $widget] $widget Text sysAfter all]
bind CompletitionBind <Escape> "bindtags $widget {[list [winfo toplevel $widget] $widget Text sysAfter all]}; catch { destroy .aCompletition }"
bind CompletitionBind <Key> { auto_completition_key %W %K %A ; break}
eval auto_completition_win $box_x $box_y [array names list_word]
} ;# proc auto_completition
## PROCEDURE LIST ##
## by BanZaj ##
proc auto_completition_proc { widget } {
global procList activeProject noteBook varList wishOpList
set nodeEdit [$noteBook raise]
if {$nodeEdit == "" || $nodeEdit == "newproj" || $nodeEdit == "about" || $nodeEdit == "debug"} {
return
}
#puts $procList()
set start_word [string tolower [$widget get "insert - 1 chars wordstart" insert]]
set box [$widget bbox insert]
set box_x [expr [lindex $box 0] + [winfo rootx $widget] ]
set box_y [expr [lindex $box 1] + [winfo rooty $widget] + [lindex $box 3] ]
set cnt 0
set pos "1.0"
set last_pos ""
puts "$start_word"
#puts [regsub -all -- "\$" $start_word "\\\$" word]
#puts $word
#set list_word($start_word) 1
#puts $varList($activeProject)
#puts $procList($activeProject)
#puts [lindex $wishOpList 0]
if {[info exists procList($activeProject)]} {
set workList $procList($activeProject)
if [info exists workList] {
set len [llength $workList]
set i 0
while {$len >=$i} {
set line [lindex $workList $i]
scan $line "%s" word
if {[string match "$start_word*" [string tolower $word]]} {
set list_word($word) $i
}
incr i
}
}
}
set i 0
while {$i <= [llength $wishOpList]} {
set word [lindex $wishOpList $i]
if {[string match "$start_word*" [string tolower $word]]} {
set list_word($word) $i
}
incr i
}
bindtags $widget [list CompletitionBind [winfo toplevel $widget] $widget Text sysAfter all]
bind CompletitionBind <Escape> "bindtags $widget {[list [winfo toplevel $widget] $widget Text sysAfter all]}; catch { destroy .aCompletition }"
bind CompletitionBind <Key> {auto_completition_key %W %K %A ; break}
eval auto_completition_win $box_x $box_y [array names list_word]
} ;# proc auto_completition_proc
proc auto_completition_win { x y args} {
set win .aCompletition
if { [winfo exists $win] } { destroy $win }
toplevel $win
wm transient $win .
wm overrideredirect $win 1
listbox $win.lBox -width 30 -border 2 -yscrollcommand "$win.yscroll set" -border 1
scrollbar $win.yscroll -orient vertical -command "$win.lBox yview" -width 13 -border 1
pack $win.lBox -expand true -fill y -side left
pack $win.yscroll -side left -expand false -fill y
foreach { word } $args {
$win.lBox insert end $word
} ;# foreach | insert all word
catch { $win.lBox activate 0 ; $win.lBox selection set 0 0 }
if { [set height [llength $args]] > 10 } { set height 10 }
$win.lBox configure -height $height
bind $win <Escape> " destroy $win "
bind $win.lBox <Escape> " destroy $win "
wm geom $win +$x+$y
} ;# auto_completition_win
proc auto_completition_key { widget K A } {
set win .aCompletition
set ind [$win.lBox curselection]
switch -- $K {
Prior {
set up [expr [$win.lBox index active] - [$win.lBox cget -height]]
if { $up < 0 } { set up 0 }
$win.lBox activate $up
$win.lBox selection clear 0 end
$win.lBox selection set $up $up
}
Next {
set down [expr [$win.lBox index active] + [$win.lBox cget -height]]
if { $down >= [$win.lBox index end] } { set down end }
$win.lBox activate $down
$win.lBox selection clear 0 end
$win.lBox selection set $down $down
}
Up {
set up [expr [$win.lBox index active] - 1]
if { $up < 0 } { set up 0 }
$win.lBox activate $up
$win.lBox selection clear 0 end
$win.lBox selection set $up $up
}
Down {
set down [expr [$win.lBox index active] + 1]
if { $down >= [$win.lBox index end] } { set down end }
$win.lBox activate $down
$win.lBox selection clear 0 end
$win.lBox selection set $down $down
}
Return {
$widget delete "insert - 1 chars wordstart" "insert wordend - 1 chars"
$widget insert "insert" [$win.lBox get [$win.lBox curselection]]
eval [bind CompletitionBind <Escape>]
}
default {
$widget insert "insert" $A
eval [bind CompletitionBind <Escape>]
}
}
} ;# proc auto_completition_key

82
lib/config.tcl Normal file
View File

@@ -0,0 +1,82 @@
######################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "", 2022, https://nuk-svk.ru
######################################################
# The config file procedures
# create
# copy
# save
######################################################
namespace eval Config {} {
variable cfgINISections
variable cfgVariables
}
if [info exists env(LANG)] {
set locale $env(LANG)
} else {
set locale "en"
}
set ::configDefault "\[General\]
locale=$locale
cfgModifyDate=''
\[GUI\]
theme=dark
toolBarShow=true
menuShow=true
filesPanelShow=true
geometry=1024x768
\[Editor\]
autoFormat=true
font=courier 10 normal roman
fontBold=courier 10 bold roman
backGround=#333333
foreground=#cccccc
selectbg=#10a410a410a4
nbNormal=#000000
nbModify=#ffff5d705d70
lineNumberFG=#a9a9a9
selectBorder=0
# must be: none, word or char
editorWrap=word
lineNumberShow=true
tabSize=4
"
proc Config::create {dir} {
set cfgFile [open [file join $dir projman.ini] "w+"]
puts $cfgFile $::configDefault
close $cfgFile
}
proc Config::read {dir} {
set cfgFile [ini::open [file join $dir projman.ini] "r"]
foreach section [ini::sections $cfgFile] {
foreach key [ini::keys $cfgFile $section] {
lappend ::cfgINIsections($section) $key
set ::cfgVariables($key) [ini::value $cfgFile $section $key]
}
}
ini::close $cfgFile
}
proc Config::write {dir} {
set cfgFile [ini::open [file join $dir projman.ini] "w"]
foreach section [array names ::cfgINIsections] {
foreach key $::cfgINIsections($section) {
ini::set $cfgFile $section $key $::cfgVariables($key)
}
}
set systemTime [clock seconds]
# Set a config modify time (i don't know why =))'
ini::set $cfgFile "General" cfgModifyDate [clock format $systemTime -format "%D %H:%M:%S"]
# Save an top level window geometry into config
ini::set $cfgFile "GUI" geometry [wm geometry .]
ini::commit $cfgFile
ini::close $cfgFile
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,647 +0,0 @@
#!
######################################################
# projman
# Distributed under GNU Public License
# Author: Sergey Kalinin s.v.kalinin28@gmail.com
# Copyright (c) "https://nuk-svk.ru"
# 2018, https://bitbucket.org/svk28/projman
######################################################
## FILE OPERATION ##
proc FileDialog {nbNode operation} {
global noteBook noteBookFiles fontNormal fontBold
global fileList projDir activeProject imgDir editor
set dot "_"
set types {
{"Tcl files" {.tcl}}
{"Tk files" {.tk}}
{"Rivet files" {.rvt}}
{"TclHttpd Template" {.tml}}
{"Sql files" {.sql}}
{"Html files" {.html}}
{"Text files" {.txt}}
{"JAVA files" {.java}}
{"PERL files" {.pl}}
{"PHP files" {.php}}
{"FORTRAN files" {.for}}
{"CAML or ML files" {.ml}}
{"CAML or ML interface files" {.mli}}
{"Ruby files" {.rb}}
{"Text files" {} TEXT}
{"All files" *}
}
variable tree
if {$nbNode eq "files"} {
set tree .frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles
} elseif {$nbNode eq "projects"} {
set tree .frmBody.frmCat.noteBook.fprojects.frmTree.tree
}
puts "node $nbNode , Tree - $tree"
if {$operation == "open"} {
set dir $projDir
set fullPath [tk_getOpenFile -initialdir $dir -filetypes $types -parent $noteBook]
set file [string range $fullPath [expr [string last "/" $fullPath]+1] end]
regsub -all "." $file "_" node
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set name [file rootname $file]
set ext [string range [file extension $file] 1 end]
set node "$name$dot$ext"
EditFile $tree $node $fullPath
return 1
} elseif {$operation == "delete"} {
set node [$tree selection get]
set fullPath [$tree itemcget $node -data]
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set answer [tk_messageBox -message "[::msgcat::mc "Delete file"] \"$file\"?"\
-type yesno -icon question -default yes]
case $answer {
yes {
FileDialog $tree close
file delete -force "$fullPath"
$tree delete $node
$tree configure -redraw 1
return 0
}
}
} elseif {$operation == "close"} {
set node [$noteBook raise]
if {$node == "newproj" || $node == "settings" || $node == "about" || $node == "debug"} {
$noteBook delete $node
set node [$noteBook raise]
return
} else {
if {$node == ""} {return}
if {[info exists fileList($node)] == 0} {return}
set fullPath [lindex $fileList($node) 0]
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set text "$noteBook.f$node.text"
}
} elseif {$operation == "close" && [info exists files] == 0} {
return
} else {
set node [$noteBook raise]
puts $node
if {$node == ""} {return}
if {[info exists fileList($node)] == 0} {return}
set fullPath [lindex $fileList($node) 0]
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set text "$noteBook.f$node.text"
}
set name [file rootname $file]
set ext [string range [file extension $file] 1 end]
set treeSubNode "$name$dot$ext"
set img [GetImage $file]
if {$operation == "open"} {
set fullPath [tk_getOpenFile -initialdir $dir -filetypes $types -parent $noteBook]
puts $fullPath
set file [string range $fullPath [expr [string last "/" $fullPath]+1] end]
regsub -all "." $file "_" node
$noteBook insert end $node -text "$file"
EditFile $node $fullPath
} elseif {$operation == "save"} {
if {$name == "untitled"} {
set file [tk_getSaveFile -initialdir $dir -filetypes \
$types -parent $text -initialfile $file \
-defaultextension .$ext]
set contents [$text get 0.0 end]
set fhandle [open "$file" "w"]
puts $fhandle $contents nonewline
close $fhandle
file delete [file join $dir $name.$ext]
#$tree delete $treeSubNode
unset fileList($node)
# change data into tree and notebook
set dir [file dirname $file]
set file [file tail $file]
set name [file rootname $file]
set ext [string range [file extension $file] 1 end]
$tree itemconfigure $treeSubNode -text $name
set treeSubNode "$activeProject$dot$name$dot$ext"
#$tree insert end $activeProject $treeSubNode -text "$file" \
#-data "[file join $dir $file]" -open 1\
#-image [Bitmap::get [file join $imgDir $img.gif]]\
#-font $fontNormal
set nbNode [$noteBook raise]
$noteBook itemconfigure $nbNode -text $file
set fileList($nbNode) [list $file 0]
} else {
set fhandle [open [file join $dir $file] "w"]
set lineNumber 1
# Progress start
# LabelUpdate .frmStatus.frmProgress.lblProgress "[::msgcat::mc "Opened file in progress"]"
set linesCount [$text count -lines $lineNumber.0 end]
######## change the active tree if file opened from different tree ######
if {[$tree exists $node] == 0 && $tree eq ".frmBody.frmCat.noteBook.fprojects.frmTree.tree"} {
set tree .frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles
} elseif {[$tree exists $node] == 0 && $tree eq ".frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles" } {
set tree .frmBody.frmCat.noteBook.fprojects.frmTree.tree
} else {
#return
}
########## end ########
foreach item [$tree nodes $node] {
puts $item
$tree delete $item
}
for {set lineNumber 1} {$lineNumber <= $linesCount} {incr lineNumber} {
set line [$text get $lineNumber.0 $lineNumber.end]
#puts $line
puts $fhandle $line
ReadFileStructure "updateFile" $line $lineNumber $tree $node
#exit
}
close $fhandle
EditFlag $node [file join $dir $file] 0
}
} elseif {$operation == "save_all"} {
set i 0
set nodeList [$noteBook pages 0 end]
set length [llength $nodeList]
while {$i < $length} {
set nbNode [lindex $nodeList $i]
if {[info exists fileList($nbNode)] == 1} {
set text "$noteBook.f$nbNode.text"
set savedFile [lindex $fileList($nbNode) 0]
set contents [$text get 0.0 end]
set fhandle [open [file join $dir $savedFile] "w"]
puts $fhandle $contents nonewline
close $fhandle
EditFlag $nbNode [file join $dir $savedFile] 0
}
incr i
}
} elseif {$operation == "close"} {
# delete file name from fileList array #
if {$node == "newproj" || $node == "settings" || $node == "about" || $node == "debug"} {
$noteBook delete $node
set node [$noteBook raise]
return
}
set tree [GetTreeForNode $node]
set editFlag [lindex $fileList($node) 1]
set closedFile [file tail [lindex $fileList($node) 0]]
if {$editFlag == 1} {
set answer [tk_messageBox\
-message "$closedFile [::msgcat::mc "File was modifyed. Save?"]"\
-type yesnocancel -icon warning\
-title [::msgcat::mc "Warning"]]
case $answer {
yes {
FileDialog $tree save
# FileDialog close
}
no {
set index 0
set nl [$tree nodes $node 0 end]
if {$nl != ""} {
foreach n $nl {
$tree delete $n
}
}
$noteBook delete $node
unset fileList($node)
$noteBook raise [$noteBook page $index]
set node [$noteBook raise]
}
cancel {
return 0
}
}
} else {
set index 0
set nl [$tree nodes $node 0 end]
if {$nl != ""} {
foreach n $nl {
$tree delete $n
}
}
#puts $node
$noteBook delete $node
unset fileList($node)
$noteBook raise [$noteBook page $index]
set node [$noteBook raise]
}
if {$node != ""} {
if {$node == "newproj" || $node == "settings" || $node == "about" || $node == "debug"} {
$noteBook delete $node
} else {
focus -force $noteBook.f$node
}
set tree [GetTreeForNode $node]
focus $tree
$tree selection set $node
} else {
LabelUpdate .frmStatus.frmLine.lblLine ""
LabelUpdate .frmStatus.frmFile.lblFile ""
LabelUpdate .frmStatus.frmOvwrt.lblOvwrt ""
LabelUpdate .frmStatus.frmProgress.lblProgress ""
}
} elseif {$operation == "close_all"} {
set nodeList [$noteBook pages 0 end]
$noteBook raise [$noteBook page 0]
set nbNode [$noteBook raise]
set tree [GetTreeForNode $nbNode]
if {$tree eq ".frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles"} {
$noteBookFiles raise files
} elseif {$tree eq ".frmBody.frmCat.noteBook.fprojects.frmTree.tree"} {
$noteBookFiles raise projects
}
while {$nbNode != ""} {
if {$nbNode == "newproj" || $nbNode == "settings" || $nbNode == "about" || $nbNode == "debug"} {
$noteBook delete $nbNode
$noteBook raise [$noteBook page 0]
set nbNode [$noteBook raise]
}
if {[info exists fileList($nbNode)] == 1} {
set editFlag [lindex $fileList($nbNode) 1]
if {$editFlag == 1} {
set f [lindex $fileList($nbNode) 0]
set f [file tail $f]
set answer [tk_messageBox\
-message "$f [::msgcat::mc "File was modifyed. Save?"]"\
-type yesnocancel -icon warning\
-title [::msgcat::mc "Warning"]]
case $answer {
yes {
FileDialog $tree save
}
no {}
cancel {return cancel}
}
}
set tree [GetTreeForNode $nbNode]
set nl [$tree nodes $nbNode 0 end]
if {$nl != ""} {
foreach n $nl {
$tree delete $n
}
}
$noteBook delete $nbNode
$noteBook raise [$noteBook page 0]
unset fileList($nbNode)
set nbNode [$noteBook raise]
}
}
LabelUpdate .frmStatus.frmLine.lblLine ""
LabelUpdate .frmStatus.frmFile.lblFile ""
LabelUpdate .frmStatus.frmOvwrt.lblOvwrt ""
} elseif {$operation == "save_as"} {
set file [tk_getSaveFile -initialdir $dir -filetypes \
$types -parent $text -initialfile $file]
if {$file != ""} {
set contents [$text get 0.0 end]
set fhandle [open $file "w"]
puts $fhandle $contents nonewline
close $fhandle
set dir [file dirname $file]
set file [file tail $file]
set name [string range $file 0 [expr [string last "." $file]-1]]
if {[string last "." $file] == -1} {
set ext [string range [file extension $file] 1 end]
} else {
set ext ""
}
set treeSubNode "$activeProject$dot$name$dot$ext"
$tree insert end $activeProject $treeSubNode -text "$file" \
-data "[file join $dir $file]" -open 1\
-image [Bitmap::get [file join $imgDir $img.gif]]\
-font $fontNormal
set nbNode [$noteBook raise]
$noteBook itemconfigure $nbNode -text $file
set fileList($nbNode) [list $file 0]
}
return 0
}
}
namespace eval FileOperation {
global types noteBook fontNormal fontBold fileList noteBook projDir activeProject imgDir editor rootDir
}
set types {
{"Tcl files" {.tcl}}
{"Tk files" {.tk}}
{"Rivet files" {.rvt}}
{"TclHttpd Template" {.tml}}
{"Sql files" {.sql}}
{"Html files" {.html}}
{"Text files" {.txt}}
{"JAVA files" {.java}}
{"PERL files" {.pl}}
{"PHP files" {.php}}
{"FORTRAN files" {.for}}
{"CAML or ML files" {.ml}}
{"CAML or ML interface files" {.mli}}
{"Ruby files" {.rb}}
{"Text files" {} TEXT}
{"All files" *}
}
set dot "_"
proc FileOperation::Open {} {
global tree node types dot env noteBook fontNormal fontBold fileList noteBook projDir activeProject imgDir editor rootDir
# set dir $projDir
set dir $env(HOME)
set fullPath [tk_getOpenFile -initialdir $dir -filetypes $types -parent $noteBook]
set file [string range $fullPath [expr [string last "/" $fullPath]+1] end]
regsub -all "." $file "_" node
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set name [file rootname $file]
set ext [string range [file extension $file] 1 end]
set node "$name$dot$ext"
EditFile .frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles $node $fullPath
return 1
}
proc FileOperation::Close {} {
set node [$noteBook raise]
if {$node == "newproj" || $node == "settings" || $node == "about" || $node == "debug"} {
$noteBook delete $node
set node [$noteBook raise]
return
} else {
if {$node == ""} {return}
if {[info exists fileList($node)] == 0} {return}
set fullPath [lindex $fileList($node) 0]
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set text "$noteBook.f$node.text"
}
}
proc FileOperation::Save {} {
}
proc FileOperation::SaveAll {} {
}
proc FileOperation::Delete {} {
set node [$tree selection get]
set fullPath [$tree itemcget $node -data]
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set answer [tk_messageBox -message "[::msgcat::mc "Delete file"] \"$file\"?"\
-type yesno -icon question -default yes]
case $answer {
yes {
FileDialog $tree close
file delete -force "$fullPath"
$tree delete $node
$tree configure -redraw 1
return 0
}
}
}
## FILE OPERATION ##
proc FileOperation::FileDialog {tree operation} {
global noteBook fontNormal fontBold fileList noteBook projDir activeProject imgDir editor
set dot "_"
set types {
{"Tcl files" {.tcl}}
{"Tk files" {.tk}}
{"Rivet files" {.rvt}}
{"TclHttpd Template" {.tml}}
{"Sql files" {.sql}}
{"Html files" {.html}}
{"Text files" {.txt}}
{"JAVA files" {.java}}
{"PERL files" {.pl}}
{"PHP files" {.php}}
{"FORTRAN files" {.for}}
{"CAML or ML files" {.ml}}
{"CAML or ML interface files" {.mli}}
{"Ruby files" {.rb}}
{"Text files" {} TEXT}
{"All files" *}
}
if {$operation == "open"} {
FileOperation::Open
} elseif {$operation == "delete"} {
FileOperation::Delete
} elseif {$operation == "close"} {
FileOperation::Close
} elseif {$operation == "close" && [info exists files] == 0} {
return
} else {
set node [$noteBook raise]
puts $node
if {$node == ""} {return}
if {[info exists fileList($node)] == 0} {return}
set fullPath [lindex $fileList($node) 0]
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set text "$noteBook.f$node.text"
}
set name [file rootname $file]
set ext [string range [file extension $file] 1 end]
set treeSubNode "$name$dot$ext"
set img [GetImage $file]
if {$operation == "open"} {
set fullPath [tk_getOpenFile -initialdir $dir -filetypes $types -parent $noteBook]
puts $fullPath
set file [string range $fullPath [expr [string last "/" $fullPath]+1] end]
regsub -all "." $file "_" node
$noteBook insert end $node -text "$file"
EditFile $node $fullPath
} elseif {$operation == "save"} {
if {$name == "untitled"} {
set file [tk_getSaveFile -initialdir $dir -filetypes \
$types -parent $text -initialfile $file \
-defaultextension .$ext]
set contents [$text get 0.0 end]
set fhandle [open "$file" "w"]
puts $fhandle $contents nonewline
close $fhandle
file delete [file join $dir $name.$ext]
#$tree delete $treeSubNode
unset fileList($node)
# change data into tree and notebook
set dir [file dirname $file]
set file [file tail $file]
set name [file rootname $file]
set ext [string range [file extension $file] 1 end]
$tree itemconfigure $treeSubNode -text $name
set treeSubNode "$activeProject$dot$name$dot$ext"
#$tree insert end $activeProject $treeSubNode -text "$file" \
#-data "[file join $dir $file]" -open 1\
#-image [Bitmap::get [file join $imgDir $img.gif]]\
#-font $fontNormal
set nbNode [$noteBook raise]
$noteBook itemconfigure $nbNode -text $file
set fileList($nbNode) [list $file 0]
} else {
set contents [$text get 0.0 end]
set fhandle [open [file join $dir $file] "w"]
puts $fhandle $contents nonewline
close $fhandle
EditFlag $node [file join $dir $file] 0
}
} elseif {$operation == "save_all"} {
set i 0
set nodeList [$noteBook pages 0 end]
set length [llength $nodeList]
while {$i < $length} {
set nbNode [lindex $nodeList $i]
if {[info exists fileList($nbNode)] == 1} {
set text "$noteBook.f$nbNode.text"
set savedFile [lindex $fileList($nbNode) 0]
set contents [$text get 0.0 end]
set fhandle [open [file join $dir $savedFile] "w"]
puts $fhandle $contents nonewline
close $fhandle
EditFlag $nbNode [file join $dir $savedFile] 0
}
incr i
}
} elseif {$operation == "close"} {
# delete file name from fileList array #
if {$node == "newproj" || $node == "settings" || $node == "about" || $node == "debug"} {
$noteBook delete $node
set node [$noteBook raise]
return
}
set editFlag [lindex $fileList($node) 1]
set closedFile [file tail [lindex $fileList($node) 0]]
if {$editFlag == 1} {
set answer [tk_messageBox\
-message "$closedFile [::msgcat::mc "File was modifyed. Save?"]"\
-type yesnocancel -icon warning\
-title [::msgcat::mc "Warning"]]
case $answer {
yes {
FileDialog $tree save
# FileDialog close
}
no {
set index 0
set nl [$tree nodes $node 0 end]
if {$nl != ""} {
foreach n $nl {
$tree delete $n
}
}
$noteBook delete $node
unset fileList($node)
$noteBook raise [$noteBook page $index]
set node [$noteBook raise]
}
cancel {
return 0
}
}
} else {
set index 0
set nl [$tree nodes $node 0 end]
if {$nl != ""} {
foreach n $nl {
$tree delete $n
}
}
#puts $node
$noteBook delete $node
unset fileList($node)
$noteBook raise [$noteBook page $index]
set node [$noteBook raise]
}
if {$node != ""} {
if {$node == "newproj" || $node == "settings" || $node == "about" || $node == "debug"} {
$noteBook delete $node
} else {
focus -force $noteBook.f$node
}
$tree selection set $node
} else {
LabelUpdate .frmStatus.frmLine.lblLine ""
LabelUpdate .frmStatus.frmFile.lblFile ""
LabelUpdate .frmStatus.frmOvwrt.lblOvwrt ""
LabelUpdate .frmStatus.frmProgress.lblProgress ""
}
} elseif {$operation == "close_all"} {
set nodeList [$noteBook pages 0 end]
$noteBook raise [$noteBook page 0]
set nbNode [$noteBook raise]
while {$nbNode != ""} {
if {$nbNode == "newproj" || $nbNode == "settings" || $nbNode == "about" || $nbNode == "debug"} {
$noteBook delete $nbNode
$noteBook raise [$noteBook page 0]
set nbNode [$noteBook raise]
}
if {[info exists fileList($nbNode)] == 1} {
set editFlag [lindex $fileList($nbNode) 1]
if {$editFlag == 1} {
set f [lindex $fileList($nbNode) 0]
set f [file tail $f]
set answer [tk_messageBox\
-message "$f [::msgcat::mc "File was modifyed. Save?"]"\
-type yesnocancel -icon warning\
-title [::msgcat::mc "Warning"]]
case $answer {
yes {
FileDialog $tree save
}
no {}
cancel {return cancel}
}
}
set nl [$tree nodes $nbNode 0 end]
if {$nl != ""} {
foreach n $nl {
$tree delete $n
}
}
$noteBook delete $nbNode
$noteBook raise [$noteBook page 0]
unset fileList($nbNode)
set nbNode [$noteBook raise]
}
}
LabelUpdate .frmStatus.frmLine.lblLine ""
LabelUpdate .frmStatus.frmFile.lblFile ""
LabelUpdate .frmStatus.frmOvwrt.lblOvwrt ""
} elseif {$operation == "save_as"} {
set file [tk_getSaveFile -initialdir $dir -filetypes \
$types -parent $text -initialfile $file]
if {$file != ""} {
set contents [$text get 0.0 end]
set fhandle [open $file "w"]
puts $fhandle $contents nonewline
close $fhandle
set dir [file dirname $file]
set file [file tail $file]
set name [string range $file 0 [expr [string last "." $file]-1]]
if {[string last "." $file] == -1} {
set ext [string range [file extension $file] 1 end]
} else {
set ext ""
}
set treeSubNode "$activeProject$dot$name$dot$ext"
$tree insert end $activeProject $treeSubNode -text "$file" \
-data "[file join $dir $file]" -open 1\
-image [Bitmap::get [file join $imgDir $img.gif]]\
-font $fontNormal
set nbNode [$noteBook raise]
$noteBook itemconfigure $nbNode -text $file
set fileList($nbNode) [list $file 0]
}
return 0
}
}

180
lib/files.tcl Normal file
View File

@@ -0,0 +1,180 @@
######################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "", 2022, https://nuk-svk.ru
######################################################
# Working with files module
######################################################
namespace eval FileOper {
variable types
set ::types {
{"All files" *}
}
proc OpenDialog {} {
global env
set dir $env(HOME)
set fullPath [tk_getOpenFile -initialdir $dir -filetypes $::types -parent .]
set file [string range $fullPath [expr [string last "/" $fullPath]+1] end]
regsub -all "." $file "_" node
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set name [file rootname $file]
set ext [string range [file extension $file] 1 end]
if {$fullPath != ""} {
puts $fullPath
return $fullPath
} else {
return
}
}
proc OpenFolderDialog {} {
global env
#global tree node types dot env noteBook fontNormal fontBold fileList noteBook projDir activeProject imgDir editor rootDir
# set dir $projDir
set dir $env(HOME)
set fullPath [tk_chooseDirectory -initialdir $dir -parent .]
set file [string range $fullPath [expr [string last "/" $fullPath]+1] end]
regsub -all "." $file "_" node
set dir [file dirname $fullPath]
# EditFile .frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles $node $fullPath
puts $fullPath
return $fullPath
}
proc Close {} {
global nbEditor modified tree
set nbItem [$nbEditor select]
if {$nbItem == ""} {return}
if {$modified($nbItem) eq "true"} {
Save
}
$nbEditor forget $nbItem
destroy $nbItem
set treeItem "file::[string range $nbItem [expr [string last "." $nbItem] +1] end ]"
if {[$tree parent $treeItem] eq "" } {
$tree delete $treeItem
}
}
proc Save {} {
global nbEditor tree env
set nbEditorItem [$nbEditor select]
puts "Saved editor text: $nbEditorItem"
if [string match "*untitled*" $nbEditorItem] {
set filePath [tk_getSaveFile -initialdir $env(HOME) -filetypes $::types -parent .]
if {$filePath eq ""} {
return
}
set fileName [string range $filePath [expr [string last "/" $filePath]+1] end]
puts "$filePath, $fileName"
set treeitem [Tree::InsertItem $tree {} $filePath "file" $fileName]
} else {
set treeItem "file::[string range $nbEditorItem [expr [string last "." $nbEditorItem] +1] end ]"
set filePath [Tree::GetItemID $tree $treeItem]
}
set editedText [$nbEditorItem.frmText.t get 0.0 end]
set f [open $filePath "w+"]
puts -nonewline $f $editedText
puts "$f was saved"
close $f
ResetModifiedFlag $nbEditorItem
}
proc SaveAll {} {
}
proc Delete {} {
set node [$tree selection get]
set fullPath [$tree itemcget $node -data]
set dir [file dirname $fullPath]
set file [file tail $fullPath]
set answer [tk_messageBox -message "[::msgcat::mc "Delete file"] \"$file\"?"\
-type yesno -icon question -default yes]
case $answer {
yes {
FileDialog $tree close
file delete -force "$fullPath"
$tree delete $node
$tree configure -redraw 1
return 0
}
}
}
proc ReadFolder {dir} {
global tree
puts "Read the folder $dir"
set rList ""
if {[catch {cd $dir}] != 0} {
return ""
}
set parent [Tree::InsertItem $tree {} $dir "directory" $dir]
# if {[ $tree item $parent -open] eq "false"} {
# $tree item $parent -open true
# } else {
# $tree item $parent -open false
# }
# Getting an files and directorues lists
foreach file [glob -nocomplain *] {
lappend rList [list [file join $dir $file]]
if [file isdirectory $file] {
lappend lstDir $file
} else {
lappend lstFiles $file
}
}
# Sort lists and insert into tree
if {[info exists lstDir] && [llength $lstDir] > 0} {
foreach f [lsort $lstDir] {
puts " Tree insert item: [Tree::InsertItem $tree $parent [file join $dir $f] "directory" $f]"
}
}
if {[info exists lstFiles] && [llength $lstFiles] > 0} {
foreach f [lsort $lstFiles] {
puts "Tree insert item: [Tree::InsertItem $tree $parent [file join $dir $f] "file" $f]"
}
}
}
proc ReadFile {fileFullPath itemName} {
set txt $itemName.frmText.t
if ![string match "*untitled*" $itemName] {
set file [open "$fileFullPath" r]
$txt insert end [chan read -nonewline $file]
close $file
}
# Delete emty last line
if {[$txt get {end-1 line} end] eq "\n" || [$txt get {end-1 line} end] eq "\r\n"} {
$txt delete {end-1 line} end
puts ">[$txt get {end-1 line} end]<"
}
}
proc Edit {fileFullPath} {
global nbEditor tree
set filePath [file dirname $fileFullPath]
set fileName [file tail $fileFullPath]
regsub -all {\.|/|\\|\s} $fileFullPath "_" itemName
set itemName "$nbEditor.$itemName"
puts [Tree::InsertItem $tree {} $fileFullPath "file" $fileName]
if {[winfo exists $itemName] == 0} {
NB::InsertItem $nbEditor $fileFullPath "file"
Editor::Editor $fileFullPath $nbEditor $itemName
ReadFile $fileFullPath $itemName
$itemName.frmText.t highlight 1.0 end
ResetModifiedFlag $itemName
}
$nbEditor select $itemName
focus -force $itemName.frmText.t
return $itemName
}
}

164
lib/gui.tcl Normal file
View File

@@ -0,0 +1,164 @@
######################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "", 2022, https://nuk-svk.ru
######################################################
# GUI module
#######################################################
if {[info exists cfgVariables(geometry)]} {
wm geometry . $cfgVariables(geometry)
} else {
wm geometry . 1024x768
}
# Заголовок окна
wm title . "ProjMan \($projmanVersion-$projmanRelease\)"
wm iconname . "ProjMan"
# иконка окна (берется из файла lib/imges.tcl)
wm iconphoto . projman
wm protocol . WM_DELETE_WINDOW Quit
wm overrideredirect . 0
#wm positionfrom . user
bind . <Control-q> Quit
bind . <Control-Q> Quit
bind . <Control-eacute> Quit
bind . <Insert> Add
bind . <Delete> Del
bind . <Control-Return> Edit
bind . <F1> ShowHelpDialog
bind . <Control-n> Editor::New
bind . <Control-N> Editor::New
bind . <Control-o> {
set filePath [FileOper::OpenDialog]
if {$filePath != ""} {
FileOper::Edit $filePath
}
}
bind . <Control-O> {
set filePath [FileOper::OpenDialog]
if {$filePath != ""} {
FileOper::Edit $filePath
}
}
bind . <Control-k> {
set folderPath [FileOper::OpenFolderDialog]
if {$folderPath != ""} {
FileOper::ReadFolder $folderPath
}
}
bind . <Control-K> {
set folderPath [FileOper::OpenFolderDialog]
if {$folderPath != ""} {
FileOper::ReadFolder $folderPath
}
}
bind . <Control-s> {FileOper::Save}
bind . <Control-S> {FileOper::Save}
#ttk::style configure TPanedwindow -background blue
#ttk::style configure Sash -sashthickness 5
#ttk::style configure TButton -padding 60 -relief flat -bg black
#ttk::style configure Custom.Treeview -foreground red
#ttk::style configure Custom.Treeview -rowheight 20
if [info exists cfgVariables(theme)] {
ttk::style theme use $cfgVariables(theme)
}
frame .frmMenu -border 1 -relief raised -highlightthickness 0
frame .frmBody -border 1 -relief raised -highlightthickness 0
frame .frmStatus -border 1 -relief sunken
pack .frmMenu -side top -padx 1 -fill x
pack .frmBody -side top -padx 1 -fill both -expand true
pack .frmStatus -side top -padx 1 -fill x
# pack .panel -expand true -fill both
# pack propagate .panel false
#pack [label .frmMenu.lbl -text "ddd"]
pack [label .frmStatus.lbl2 -text "ddd"]
menubutton .frmMenu.mnuFile -text [::msgcat::mc "File"] -menu .frmMenu.mnuFile.m
GetFileMenu [menu .frmMenu.mnuFile.m]
menubutton .frmMenu.mnuEdit -text [::msgcat::mc "Edit"] -menu .frmMenu.mnuEdit.m
GetEditMenu [menu .frmMenu.mnuEdit.m]
menubutton .frmMenu.mnuView -text [::msgcat::mc "View"] -menu .frmMenu.mnuView.m
GetViewMenu [menu .frmMenu.mnuView.m]
pack .frmMenu.mnuFile .frmMenu.mnuEdit .frmMenu.mnuView -side left
menubutton .frmMenu.mnuHelp -text [::msgcat::mc "Help"] -menu .frmMenu.mnuHelp.m
pack .frmMenu.mnuHelp -side right
set frmTool [ttk::frame .frmBody.frmTool]
ttk::panedwindow .frmBody.panel -orient horizontal -style TPanedwindow
pack propagate .frmBody.panel false
pack .frmBody.frmTool -side left -fill y
pack .frmBody.panel -side left -fill both -expand true
ttk::button $frmTool.btn_tree -command ViewFilesTree -image tree_32x32
pack $frmTool.btn_tree -side top -padx 1 -pady 1
# #label $frmTool.lbl_logo -image tcl
# pack $frmTool.btn_quit -side bottom -padx 5 -pady 5
# #pack $frmTool.lbl_logo -side bottom -padx 5 -pady 5
#
# # Дерево с полосами прокрутки
set frmTree [ttk::frame .frmBody.frmTree]
ttk::scrollbar $frmTree.hsb1 -orient horizontal -command {$frmTree.tree xview}
ttk::scrollbar $frmTree.vsb1 -orient vertical -command [list $frmTree.tree yview]
set tree [ttk::treeview $frmTree.tree -show tree \
-xscrollcommand {$frmTree.hsb1 set} -yscrollcommand [list $frmTree.vsb1 set]]
bind $tree <Double-ButtonPress-1> {Tree::DoublePressItem $tree}
bind $tree <ButtonRelease> {Tree::PressItem $tree}
grid $tree -row 0 -column 0 -sticky nsew
grid $frmTree.vsb1 -row 0 -column 1 -sticky nsew
grid $frmTree.hsb1 -row 1 -column 0 -sticky nsew
grid columnconfigure $frmTree 0 -weight 1
grid rowconfigure $frmTree 0 -weight 1
set frm_work [ttk::frame .frm_work]
set nbEditor [ttk::notebook $frm_work.nbEditor]
#grid $nbEditor -row 0 -column 0 -sticky nsew
pack $nbEditor -fill both -expand true
# Create an image CLOSE for tab
ttk::style element create close_button image close_10x10 -height 12 -width 12 -sticky e -padding {10 0}
ttk::style layout TNotebook.Tab {
Notebook.tab -sticky nswe -children {
Notebook.padding -expand 1 -sticky nswe -children {
Notebook.label
-expand 1 -sticky nesw -side left close_button -side right
}
}
}
bind TNotebook <Button-1> "NB::CloseTab %W %x %y\;[bind TNotebook <Button-1>]"
# ttk::scrollbar $nbEditor.hsb1 -orient horizontal -command [list $frm_tree.work xview]
# ttk::scrollbar $fbEditor.vsb1 -orient vertical -command [list $frm_tree.work yview]
# set tree [ttk::treeview $frm_tree.tree -show tree \
# -xscrollcommand [list $frm_tree.hsb1 set] -yscrollcommand [list $frm_tree.vsb1 set]]
#
# # назначение обработчика нажатия кнопкой мыши
# #bind $frm_tree.tree <ButtonRelease> "TreePress %x %y %X %Y $frm_tree.tree"
# bind $frm_tree.tree <ButtonRelease> "TreePress $frm_tree.tree"
#.panel add $frmTool -weight 1
if {$cfgVariables(toolBarShow) eq "true"} {
.frmBody.panel add $frmTree -weight 0
}
.frmBody.panel add $frm_work -weight 1
# #

View File

@@ -1,327 +0,0 @@
##!/usr/bin/wish
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# help module #
# Copyright (c) "Sergey Kalinin", 2002, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
#package require BWidget
#package require msgcat
## GETTING TABLES OF CONTENT ##
#set homeDir "$env(HOME)/projects/tcl/projman"
#set docDir "$env(HOME)/projects/tcl/projman/hlp"
#set imgDir "$env(HOME)/projects/tcl/projman/img"
#set msgDir "$env(HOME)/projects/tcl/projman/msgs"
#set workDir "$env(HOME)/.projman"
#source $workDir/projman.conf
source [file join $dataDir html_lib.tcl]
#source [file join $dataDir htmllib.tcl]
set sourceEncode "utf-8"
## LOAD MESSAGES FILE? LANGUAGE AND NEDDED FILES ##
#source $homeDir/html.tcl
#::msgcat::mclocale $locale
#::msgcat::mcload $msgDir
proc HlpTreeOneClick {node} {
global fontNormal hlpTree wordList hlpNoteBook findString imgDir fontBold fontNormal
global lstSearch nodeParent
$hlpTree selection set $node
set nodeParent [$hlpTree parent $node]
set item [$hlpTree itemcget $node -data]
set file [string range $item 4 end]
#puts "$file" ;#debuf info
if {[string range $item 0 2] == "toc"} {
# $hlpTree configure
}
if {[$hlpTree itemcget $node -open] == 1} {
$hlpTree itemconfigure $node -open 0
} elseif {[$hlpTree itemcget $node -open] == 0} {
$hlpTree itemconfigure $node -open 1
}
if {[string range $item 0 2] == "doc"} {
GetContent $file
}
}
## GETTING TABLE OF CONTENT ##
proc GetTOC {} {
global docDir hlpTree imgDir fontNormal lstSearch arr sourceEncode editor
if {[catch {cd $docDir}] != 0} {
return ""
}
foreach dir [lsort [glob -nocomplain *]] {
if {[file isdirectory $dir] == 1} {
foreach file [lsort [glob -nocomplain [file join $dir *toc.html]]] {
set fileName [file join $file]
set tocFile [open $fileName r]
fconfigure $tocFile -encoding binary
set dot "_"
set nodeParent [file dirname $fileName]
while {[gets $tocFile line]>=0} {
set a ""
set b ""
set line [encoding convertfrom $sourceEncode $line]
if {[regexp -nocase "<title>.+\</title>" $line a]} {
if {[regexp ">.+\<" $line a]} {
set length [string length $a]
set title [string range $a 1 [expr $length-2]]
$hlpTree insert end root $nodeParent -text "$title" -font $fontNormal \
-fill $editor(fg) \
-data "toc_$nodeParent" -open 0\
-image [Bitmap::get [file join $imgDir books.gif]]
}
} elseif {[regexp -nocase -all -line -- {(<a href=)(|\")(.+\.[a-zA-Z]+)(\">|>)(.+)(</a><br>)} $line match v1 v2 v3 v4 v5 v6]} {
regsub -all {[ :]} $v5 "_" subNode
set subNode "$nodeParent$dot$subNode"
if {[info exists arr($subNode)] == 0} {
set arr($subNode) [file join $dir $v3]
}
set data [file join $dir $v3]
$hlpTree insert end "$nodeParent" $subNode -text "$v5"\
-font $fontNormal -data "doc_$data" -open 0\
-fill $editor(fg) \
-image [Bitmap::get [file join $imgDir file.gif]]
$lstSearch insert end $v3
} else {
break
}
}
} ;# foreach
}
}
$hlpTree configure -redraw 1
}
proc SearchWord {word} {
global arr nBookTree
set word [string tolower [string trim $word]]
puts $word
$nBookTree raise hlpSearch
InsertEnt .help.frmBody.frmCat.nBookTree.fhlpSearch.frmScrhEnt.entSearch $word
foreach wrd [array names arr] {
set name "[file rootname [file tail $arr($wrd)]]"
set file "$arr($wrd)"
if {[string match "$word*" [string tolower $name]] == 1} {
GetContent $file
}
}
}
## GETTING CONTENT FROM FILES ##
proc GetContent {file} {
global docDir hlpNoteBook fontNormal sourceEncode editor
$hlpNoteBook raise [$hlpNoteBook page 0]
set node [$hlpNoteBook raise]
if {$node != ""} {
$hlpNoteBook delete hlpHTML
}
set nbTitle ""
set html ""
set file [open $file r]
fconfigure $file -encoding binary
while {[gets $file line]>=0} {
set line [encoding convertfrom $sourceEncode $line]
if {[regexp -nocase "<title>.+\</title>" $line a]} {
if {[regexp ">.+\<" $a a]} {
set length [string length $a]
set nbTitle [string range $a 1 [expr $length-2]]
#puts $nbTitle
#puts $a
}
}
append html $line\n
}
set frmHTML [$hlpNoteBook insert end hlpHTML -text $nbTitle]
set txt [text $frmHTML.txtHTML -yscrollcommand "$frmHTML.yscroll set" \
-relief sunken -wrap word -highlightthickness 0 -font $fontNormal\
-selectborderwidth 0 -selectbackground #55c4d1 -width 10]
scrollbar $frmHTML.yscroll -relief sunken -borderwidth {1} -width {10} -takefocus 0\
-command "$frmHTML.txtHTML yview"
pack $txt -side left -fill both -expand true
pack $frmHTML.yscroll -side left -fill y
$hlpNoteBook raise hlpHTML
focus -force $txt
# $txt configure -state disabled
HM::init_win $txt
HM::set_link_callback LinkCallback
HM::set_state $txt -size 0
HM::set_indent $txt 1.2
HM::parse_html $html "HM::render $txt"
# HM::tag_title .help "Help - $nbTitle"
$txt configure -state disabled
}
## GOTO URL PROCEDURE ##
proc LinkCallback {w url} {
global docDir nodeParent
set url "[file join $docDir $nodeParent $url]"
if {[catch {open $url r} oHTML]} {
tk_messageBox -title "[::msgcat::mc "Error open URL"]"\
-message "[::msgcat::mc "Can't found file:"] $url"\
-icon error -type ok
} else {
GetContent $url
}
}
## autor DEDERER ##
proc LinkCallback_ {w url} {
global docDir
set url "[file join $docDir $url]"
if {[catch {open $url r} oHTML]} {
tk_messageBox -title "[::msgcat::mc "Error open URL"]"\
-message "[::msgcat::mc "Can't founf file: $url"]"\
-icon error -type ok
} else {
set html [read $oHTML]
$w configure -state normal
HM::reset_win $w
HM::parse_html $html "HM::render $w"
$w configure -state disable
}
# HM::render [winfo toplevel $w] $url
}
## MAIN HELP WINDOW ##
proc TopLevelHelp {} {
global fontNormal fontBold hlpTree hlpNoteBook nBookTree homeDir docDir lstSearch w frmSrchList
global imgDir color editor
set w .help
set w_exist [winfo exists $w]
if !$w_exist {
toplevel $w
# wm resizable .help 0 0
wm geometry $w 900x800+0+0
wm title $w [::msgcat::mc "Help"]
# wm protocol $w WM_DELETE_WINDOW {destroy .msg .help}
#wm geometry . 600x400+0+0
wm title $w [::msgcat::mc "Help"]
frame $w.frmMenu -border 1 -relief raised
frame $w.frmTool -border 1 -relief raised
frame $w.frmBody -border 1 -relief raised
frame $w.frmStatus -border 1 -relief sunken
pack $w.frmMenu -side top -padx 1 -fill x
pack $w.frmTool -side top -padx 1 -fill x
pack $w.frmBody -side top -padx 1 -fill both -expand true
pack $w.frmStatus -side top -padx 1 -fill x
button $w.frmTool.btnBack -relief groove -font $fontBold -command Back -state disable
button $w.frmTool.btnForward -relief groove -font $fontBold -command Forward -state disable
button $w.frmTool.btnRefresh -relief groove -font $fontBold -command Refresh -state disable
button $w.frmTool.btnPrint -relief groove -font $fontBold -command Print -state disable
image create photo imgBack -format gif -file [file join $imgDir back.gif]
image create photo imgForward -format gif -file [file join $imgDir forward.gif]
image create photo imgRefresh -format gif -file [file join $imgDir refresh.gif]
image create photo imgPrint -format png -file [file join $imgDir printer.png]
$w.frmTool.btnBack configure -image imgBack
$w.frmTool.btnForward configure -image imgForward
$w.frmTool.btnRefresh configure -image imgRefresh
$w.frmTool.btnPrint configure -image imgPrint
pack $w.frmTool.btnBack $w.frmTool.btnForward $w.frmTool.btnRefresh $w.frmTool.btnPrint\
-side left -fill x
set frmCat [frame $w.frmBody.frmCat -border 1 -relief sunken]
pack $frmCat -side left -fill y
set frmWork [frame $w.frmBody.frmWork -border 1 -relief sunken]
pack $frmWork -side left -fill both -expand true
set nBookTree [NoteBook $frmCat.nBookTree -font $fontNormal -bg $editor(bg) -fg $editor(fg)]
pack $nBookTree -fill both -expand true -padx 2 -pady 2
set frmTreeNb [$nBookTree insert end hlpTree -text "[::msgcat::mc "Contents"]"]
set frmSearch [$nBookTree insert end hlpSearch -text "[::msgcat::mc "Search"]"]
$nBookTree raise hlpTree
set frmScrlX [frame $frmTreeNb.frmScrlX -border 0 -relief sunken]
set frmTree [frame $frmTreeNb.frmTree -border 1 -relief sunken]
set hlpTree [Tree $frmTree.tree \
-relief sunken -borderwidth 1 -width 20 -highlightthickness 0\
-redraw 0 -dropenabled 1 -dragenabled 1 -dragevent 3 \
-yscrollcommand {.help.frmBody.frmCat.nBookTree.fhlpTree.frmTree.scrlY set} \
-xscrollcommand {.help.frmBody.frmCat.nBookTree.fhlpTree.frmScrlX.scrlX set} \
-selectbackground "#55c4d1" \
-droptypes {
TREE_NODE {copy {} move {} link {}}
LISTBOX_ITEM {copy {} move {} link {}}
} -opencmd "" -closecmd ""]
pack $frmTree -side top -fill y -expand true
pack $frmScrlX -side top -fill x
scrollbar $frmTree.scrlY -command {$hlpTree yview} \
-borderwidth {1} -width {10} -takefocus 0
pack $hlpTree $frmTree.scrlY -side left -fill y
scrollbar $frmScrlX.scrlX -command {$hlpTree xview} \
-orient horizontal -borderwidth {1} -width {10} -takefocus 0
pack $frmScrlX.scrlX -fill x -expand true
set frmSrchList [frame $frmSearch.frmScrhList -border 0 -relief sunken]
set frmSrchEnt [frame $frmSearch.frmScrhEnt -border 0 -relief sunken]
set frmSrchScrollX [frame $frmSearch.frmScrhScrollX -border 0 -relief sunken]
pack $frmSrchEnt -side top -fill x
pack $frmSrchList -side top -fill both -expand true
pack $frmSrchScrollX -side top -fill x
entry $frmSrchEnt.entSearch
set lstSearch [listbox $frmSrchList.lstSearch -font $fontNormal\
-yscrollcommand {.help.frmBody.frmCat.nBookTree.fhlpSearch.frmScrhList.scrListY set}\
-xscrollcommand {.help.frmBody.frmCat.nBookTree.fhlpSearch.frmScrhScrollX.scrListX set}\
-selectmode single -selectbackground #55c4d1 -selectborderwidth 0]
scrollbar $frmSrchList.scrListY -command\
{$frmSrchList.lstSearch yview} -borderwidth {1} -width {10} -takefocus 0
pack $frmSrchEnt.entSearch -side top -fill x -expand true
pack $frmSrchList.lstSearch -side left -fill both -expand true
pack $frmSrchList.scrListY -side left -fill y
scrollbar $frmSrchScrollX.scrListX -orient horizontal -command\
{$frmSrchList.lstSearch xview} -borderwidth {1} -width {10} -takefocus 0
pack $frmSrchScrollX.scrListX -fill x
# $hlpTree bindText <ButtonRelease-4> [puts %k]
# $hlpTree bindText <ButtonRelease-3> [puts %k]
# bind $frmTree <ButtonPress-4> {$frmSrchList.lstSearch xview}
# $hlpTree bindText <Double-ButtonPress-1> "HlpTreeDoubleClick [$hlpTree selection get]"
# $hlpTree bindImage <Double-ButtonPress-1> "HlpTreeDoubleClick [$hlpTree selection get]"
$hlpTree bindText <ButtonPress-1> "HlpTreeOneClick [$hlpTree selection get]"
$hlpTree bindImage <ButtonPress-1> "HlpTreeOneClick [$hlpTree selection get]"
bind .help <Escape> "destroy .help"
# bind $frmSrchEnt.entSearch <KeyRelease>\
# {SearchWord [Text .help.frmBody.frmCat.nBookTree.fhlpSearch.frmScrhEnt.entSearch]}
#bind $w <Escape> exit
#bind $frmTree <Down> {TreeClick [$hlpTree selection get]}
#bind $frmTree <Up> {TreeClick [$hlpTree selection get]}
#bind $frmTree <Return> {TreeClick [$hlpTree selection get]}
bind $frmTree.tree.c <Button-4> "$hlpTree yview scroll -3 units"
bind $frmTree.tree.c <Button-5> "$hlpTree yview scroll 3 units"
bind $frmTree.tree.c <Shift-Button-4> "$hlpTree xview scroll -2 units"
bind $frmTree.tree.c <Shift-Button-5> "$hlpTree xview scroll 2 units"
set hlpNoteBook [NoteBook $frmWork.hlpNoteBook -font $fontNormal -bg $editor(bg) -fg $editor(fg)]
pack $hlpNoteBook -fill both -expand true -padx 2 -pady 2
GetTOC
}
}
##################################################
#TopLevelHelp
#GetTOC
#GetContent $docDir/tcl.toc.html

44
lib/highlight.tcl Normal file
View File

@@ -0,0 +1,44 @@
######################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "", 2022, https://nuk-svk.ru
######################################################
namespace eval Highlight {} {
proc TCL {txt} {
ctext::addHighlightClass $txt widgets purple [list ctext button label text frame toplevel scrollbar checkbutton canvas listbox menu menubar menubutton radiobutton scale entry message tk_chooseDir tk_getSaveFile tk_getOpenFile tk_chooseColor tk_optionMenu]
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
ctext::addHighlightClass $txt stackControl #19a2a6 [info commands]
ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\$"
ctext::addHighlightClass $txt variable_funcs gold {set global variable unset}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
}
proc Default {txt} {
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z\-_]+}
ctext::addHighlightClass $txt stackControl #19a2a6 [info commands]
ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\$"
ctext::addHighlightClass $txt variable_funcs gold {set global variable unset}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
}
proc SH {txt} {
ctext::addHighlightClassForRegexp $txt flags orange {-+[a-zA-Z\-_]+}
ctext::addHighlightClass $txt stackControl #19a2a6 {if fi else elseif then while case esac do in exit source echo}
ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\$"
ctext::addHighlightClassForRegexp $txt vars_extended #4471ca {\$\{[a-zA-Z0-9\_\-:\./\$\{\}]+\}}
ctext::addHighlightClass $txt variable_funcs gold {set export}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
}
}

View File

@@ -1,219 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
set beginQuote "0.0"
set endQuote "2.0"
set endQuotePrev "0.0"
proc HighLightML {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook
global editor color
global beginQuote endQuote endQuotePrev
set startIndex 0
$text tag configure bold -font $editor(fontBold)
$text tag configure className -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
$text tag configure sql -font $editor(fontBold) -foreground $color(sql)
set keyWord [info commands]
# for OOP extention
foreach n {let match compile load exception function bol begin end then type done with class method attribute constructor destructor invariant attribute binding new delete extends final finally implements import interface native new private protected public static super this throw synchronized throws transient try volatile void else} {lappend keyWord $n}
set dataType {list abstract boolean byte char double float int long short}
set sqlOperators {select from where and or count sum in order cast as by}
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
set className ""
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $sqlOperators [string trim $word]] != -1} {
$text tag add sql $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="let" || [string trim $word]=="extends" || [string trim $word]=="implements"} {
$text tag add className $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# key binding highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<.*?>" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
# if {[regexp "\%.*? " $workLine a b]}
if {[regexp "\%" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
## COMENTS ##
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices {(^|\t|;| )\(\*} $workLine begin]} {
set p [lindex $begin 0]
$text tag add comments $lineNumber.[expr $p - 0] $lineNumber.end
} elseif {[regexp -indices {(^|\t|;| )\*} $workLine beginIndex]} {
set beginQuote "$lineNumber.[lindex $beginIndex 0]"
set endQuote [$text search -forward -regexp -- {\*\)} $beginQuote end]
if {$endQuote != ""} {
$text tag add comments $beginQuote "$endQuote + 2 chars"
} else {
$text tag add comments $beginQuote end
}
set endQuotePrev [$text search -backward -regexp -- {\*\)} [expr $lineNumber - 1].end 0.0]
if {$endQuotePrev != ""} {
$text tag remove comments "$endQuotePrev + 2 chars" $beginQuote
}
} elseif {[regexp -indices {\*\)} $workLine endIndex]} {
set endQuote "$lineNumber.[lindex $endIndex 1]"
set beginQuote [$text search -backward -regexp -- {\(\*} $endQuote 0.0]
if {$beginQuote != ""} {
$text tag add comments $beginQuote "$endQuote + 1 chars"
} else {
$text tag add comments 0.0 "$endQuote + 1 chars"
}
set beginQuoteNext [$text search -forward -regexp -- {\(\*} $endQuote end]
if {$beginQuoteNext != ""} {
$text tag remove comments "$endQuote + 2 chars" $beginQuoteNext
}
} else {
if {[lindex [split $beginQuote "."] 0] <= $lineNumber && [lindex [split $endQuote "."] 0] >= $lineNumber} {
#$text tag add comments $lineNumber.0 $lineNumber.end
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
}
# DEDERER
# hightlight [, {, }, ], ( , )
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|{|}|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bold $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# parameter for command hightlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -- {\s-\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
}

View File

@@ -1,220 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
set beginQuote "0.0"
set endQuote "2.0"
set endQuotePrev "0.0"
proc HighLightErl {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook
global editor color
global beginQuote endQuote endQuotePrev
set startIndex 0
$text tag configure bold -font $editor(fontBold)
$text tag configure className -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
$text tag configure sql -font $editor(fontBold) -foreground $color(sql)
set keyWord [info commands]
# for OOP extention
foreach n {let match compile load exception function bol begin end then type done with class method attribute constructor destructor invariant attribute binding new delete extends final finally implements import interface native new private protected public static super this throw synchronized throws transient try volatile void else} {lappend keyWord $n}
set dataType {list abstract boolean byte char double float int long short}
set sqlOperators {select from where and or count sum in order cast as by}
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
set className ""
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $sqlOperators [string trim $word]] != -1} {
$text tag add sql $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="let" || [string trim $word]=="extends" || [string trim $word]=="implements"} {
$text tag add className $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# key binding highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<.*?>" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
# if {[regexp "\%.*? " $workLine a b]}
if {[regexp "\%" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
## COMENTS ##
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices {(^|\t|;| )\(\*} $workLine begin]} {
set p [lindex $begin 0]
$text tag add comments $lineNumber.[expr $p - 0] $lineNumber.end
} elseif {[regexp -indices {(^|\t|;| )\*} $workLine beginIndex]} {
set beginQuote "$lineNumber.[lindex $beginIndex 0]"
set endQuote [$text search -forward -regexp -- {\*\)} $beginQuote end]
if {$endQuote != ""} {
$text tag add comments $beginQuote "$endQuote + 2 chars"
} else {
$text tag add comments $beginQuote end
}
set endQuotePrev [$text search -backward -regexp -- {\*\)} [expr $lineNumber - 1].end 0.0]
if {$endQuotePrev != ""} {
$text tag remove comments "$endQuotePrev + 2 chars" $beginQuote
}
} elseif {[regexp -indices {\*\)} $workLine endIndex]} {
set endQuote "$lineNumber.[lindex $endIndex 1]"
set beginQuote [$text search -backward -regexp -- {\(\*} $endQuote 0.0]
if {$beginQuote != ""} {
$text tag add comments $beginQuote "$endQuote + 1 chars"
} else {
$text tag add comments 0.0 "$endQuote + 1 chars"
}
set beginQuoteNext [$text search -forward -regexp -- {\(\*} $endQuote end]
if {$beginQuoteNext != ""} {
$text tag remove comments "$endQuote + 2 chars" $beginQuoteNext
}
} else {
if {[lindex [split $beginQuote "."] 0] <= $lineNumber && [lindex [split $endQuote "."] 0] >= $lineNumber} {
#$text tag add comments $lineNumber.0 $lineNumber.end
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
}
# DEDERER
# hightlight [, {, }, ], ( , )
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|{|}|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bold $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# parameter for command hightlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -- {\s-\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
}

View File

@@ -1,214 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
set beginQuote "0.0"
set endQuote "2.0"
set endQuotePrev "0.0"
proc HighLightFORTRAN {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook
global editor color
global beginQuote endQuote endQuotePrev
set startIndex 0
$text tag configure bold -font $editor(fontBold)
$text tag configure className -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments) ;#-background $editor(bg)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
$text tag configure label -background $color(label)
$text tag configure six -foreground $color(sixFG) -background $color(sixBG)
$text tag configure operator -background $editor(bg)
set keyWord [info commands]
# for OOP extention
foreach n {program function subroutine entry block data implicit integer real double precision complex\
logical character dimension common equivalence parameter external intrinsic save data goto assign if then\
else elseif endif end do while enddo continue stop pause end open close read write print\
inquire rewind backspace endfile format call return include} {lappend keyWord $n}
#set dataType {list abstract boolean byte char double float int long short}
set dataType ""
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
set className ""
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="class" || [string trim $word]=="extends" || [string trim $word]=="implements"} {
$text tag add className $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# key binding highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<.*?>" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b] || [regexp "\'.*?\'" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
# if {[regexp "\%.*? " $workLine a b]}
if {[regexp "\%" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
$text tag remove label $lineNumber.0 $lineNumber.end
$text tag add label $lineNumber.0 $lineNumber.5
$text tag remove six $lineNumber.0 $lineNumber.5
$text tag remove six $lineNumber.6 $lineNumber.end
$text tag add six $lineNumber.5 $lineNumber.6
$text tag remove operator $lineNumber.6 $lineNumber.end
$text tag add operator $lineNumber.7 $lineNumber.71
$text tag remove comments $lineNumber.72 $lineNumber.end
$text tag add comments $lineNumber.72 $lineNumber.end
## COMENTS ##
set workLine [$text get $lineNumber.0 $lineNumber.end]
#if {[regexp -indices -nocase {^(c|\*)} $workLine word]}
if {[regexp -indices -nocase {^(c|\*)} $workLine word]} {
set p [lindex $word 1]
#puts "$p $lineNumber -- $workLine"
$text tag remove label $lineNumber.0 $lineNumber.end
$text tag remove operator $lineNumber.0 $lineNumber.end
$text tag add comments $lineNumber.$p $lineNumber.end
$text tag remove six $lineNumber.5 $lineNumber.6
#puts [$text dump -tag $lineNumber.0 $lineNumber.end]
#$text tag raise comments
#puts [$text tag ranges comments]
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices -nocase {\!} $workLine word]} {
set p [lindex $word 1]
if {([string index $workLine [expr $p + 1]] == "\'") || ([string index $workLine [expr $p + 1]] == "\"")} {
} else {
#$text tag add comments $lineNumber.$p $lineNumber.end
}
} else {
#$text tag remove comments $lineNumber.0 $lineNumber.end
}
# DEDERER
# hightlight [, {, }, ], ( , )
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|{|}|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bold $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# parameter for command hightlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -- {\s-\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
}

View File

@@ -1,106 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
proc HighLightHTML {text line lineNumber node} {
global fontNormal editorFontBold tree imgDir fontBold
global editor color
set startIndex 0
# bind text tags for highlightning #
$text tag configure bold -font $editor(fontBold)
$text tag configure procName -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
# incr lineNumber
set keyWord [info commands]
# for OOP extention
foreach n {class method attribute constructor destructor invariant attribute binding new delete} {
lappend keyWord $n
}
# add comment #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<\!--.+-->" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add coments $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# get keywords
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "(</?\[a-zA-Z0-9\]+\[> \t\])|>" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add keyWord $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# get variables
set workLine $line
set startPos 0
while {$workLine != ""} {
if {[regexp "\[a-zA-Z0-9\]+=" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add variable $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# get strings
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".+\"" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
}

View File

@@ -1,211 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
set beginQuote "0.0"
set endQuote "2.0"
set endQuotePrev "0.0"
proc HighLightJAVA {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook
global editor color
global beginQuote endQuote endQuotePrev
set startIndex 0
$text tag configure bold -font $editor(fontBold)
$text tag configure className -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
$text tag configure sql -font $editor(fontBold) -foreground $color(sql)
set keyWord [info commands]
# for OOP extention
foreach n {class method attribute constructor destructor invariant attribute binding new delete extends final finally implements import interface native new private protected public static super this throw synchronized throws transient try volatile void else} {lappend keyWord $n}
set dataType {list abstract boolean byte char double float int long short}
set sqlOperators {select from where and or count sum in order cast as by}
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
set className ""
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $sqlOperators [string trim $word]] != -1} {
$text tag add sql $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="class" || [string trim $word]=="extends" || [string trim $word]=="implements"} {
$text tag add className $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# key binding highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<.*?>" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
# if {[regexp "\%.*? " $workLine a b]}
if {[regexp "\%" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
## COMENTS ##
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices "(^|\t|;| )//" $workLine begin]} {
set p [lindex $begin 0]
$text tag add comments $lineNumber.[expr $p - 0] $lineNumber.end
} elseif {[regexp -indices {(^|\t|;| )/\*} $workLine beginIndex]} {
set beginQuote "$lineNumber.[lindex $beginIndex 0]"
set endQuote [$text search -forward -regexp -- {\*/} $beginQuote end]
if {$endQuote != ""} {
$text tag add comments $beginQuote "$endQuote + 2 chars"
} else {
$text tag add comments $beginQuote end
}
set endQuotePrev [$text search -backward -regexp -- {\*/} [expr $lineNumber - 1].end 0.0]
if {$endQuotePrev != ""} {
$text tag remove comments "$endQuotePrev + 2 chars" $beginQuote
}
} elseif {[regexp -indices {\*/} $workLine endIndex]} {
set endQuote "$lineNumber.[lindex $endIndex 1]"
set beginQuote [$text search -backward -regexp -- {/\*} $endQuote 0.0]
if {$beginQuote != ""} {
$text tag add comments $beginQuote "$endQuote + 1 chars"
} else {
$text tag add comments 0.0 "$endQuote + 1 chars"
}
set beginQuoteNext [$text search -forward -regexp -- {/\*} $endQuote end]
if {$beginQuoteNext != ""} {
$text tag remove comments "$endQuote + 2 chars" $beginQuoteNext
}
} else {
if {[lindex [split $beginQuote "."] 0] <= $lineNumber && [lindex [split $endQuote "."] 0] >= $lineNumber} {
#$text tag add comments $lineNumber.0 $lineNumber.end
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
}
# DEDERER
# hightlight [, {, }, ], ( , )
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|{|}|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bold $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# parameter for command hightlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -- {\s-\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
}

View File

@@ -1,201 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
set beginQuote "0.0"
set endQuote "2.0"
set endQuotePrev "0.0"
proc HighLightPERL {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook
global editor color
global beginQuote endQuote endQuotePrev
set startIndex 0
$text tag configure bold -font $editor(fontBold)
$text tag configure className -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
$text tag configure sql -font $editor(fontBold) -foreground $color(sql)
set keyWord [info commands]
# for OOP extention
foreach n {print my use sub printf substr ord class method attribute constructor destructor invariant attribute binding new delete extends final finally implements import interface native new private protected public static super this throw synchronized throws transient try volatile void else } {lappend keyWord $n}
set dataType {list abstract boolean byte char double float int long short}
set sqlOperators {select from where and or count sum in order cast as by}
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
set className ""
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $sqlOperators [string trim $word]] != -1} {
$text tag add sql $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="class" || [string trim $word]=="extends" || [string trim $word]=="implements" || [string trim $word]=="use"} {
$text tag add className $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# key binding highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<.*?>" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\@\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b] || [regexp "\'.*?\'" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
# if {[regexp "\%.*? " $workLine a b]}
if {[regexp "\%" $workLine a b] || [regexp "(\-\>)" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# DEDERER
# hightlight [, {, }, ], ( , )
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|{|}|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bold $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# parameter for command hightlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -- {\s-\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
## COMENTS ##
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices "(^|\t|;| )#" $workLine word]} {
set p [lindex $word 1]
$text tag add comments $lineNumber.$p $lineNumber.end
$text tag raise comments
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
}

View File

@@ -1,271 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
proc HighLightPHP {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook
global editor color
global beginQuote endQuote endQuotePrev
# set pos [$text index insert]
# set lineNumber [lindex [split $pos "."] 0]
set startIndex 0
# bind text tags for highlightning #
$text tag configure bold -font $editor(fontBold)
$text tag configure procName -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
$text tag configure rivet -foreground $color(bindKey) -font $editor(fontBold) -foreground "#ff8800" ;#-background "#c6c6c6"
$text tag configure sql -font $editor(fontBold) -foreground $color(sql)
# incr lineNumber
set keyWord [info commands]
# for OOP extention
foreach n {class method attribute constructor destructor invariant attribute binding new delete \
mcset mc mclocale mcpreferences mcload mcunknown configure match else elseif} {
lappend keyWord $n
}
foreach n {var include_once include function case echo select from where in order by and or} {
lappend keyWord $n
}
set dataType {true false}
set sqlOperators {select from where and or count sum in order cast as by}
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $sqlOperators [string trim $word]] != -1} {
$text tag add sql $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="proc"} {
$text tag add procName $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
set workLine $line
while {$workLine != ""} {
if {[regexp {(\{|\[)[a-zA-Z\\_:]+} $workLine word v]} {
set word [string trim $word $v]
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="proc"} {
$text tag add procName $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# key binding highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "(</?\[a-zA-Z0-9\]+\[> \t\])|>" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add keyWord $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\%" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# DEDERER
# hightlight [, {, }, ]
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|{|}|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bold $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\<\?|\?>} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add rivet $lineNumber.$start $lineNumber.end
set startPos $end
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# parameter for command hightlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -- {\s-\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<!.+>" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add coments $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# add comment #
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices "(^|\t|;| )//" $workLine begin]} {
set p [lindex $begin 0]
$text tag add comments $lineNumber.[expr $p - 0] $lineNumber.end
} elseif {[regexp -indices {(^|\t|;| )/\*} $workLine beginIndex]} {
set beginQuote "$lineNumber.[lindex $beginIndex 0]"
set endQuote [$text search -forward -regexp -- {\*/} $beginQuote end]
if {$endQuote != ""} {
$text tag add comments $beginQuote "$endQuote + 2 chars"
} else {
$text tag add comments $beginQuote end
}
set endQuotePrev [$text search -backward -regexp -- {\*/} [expr $lineNumber - 1].end 0.0]
if {$endQuotePrev != ""} {
$text tag remove comments "$endQuotePrev + 2 chars" $beginQuote
}
} elseif {[regexp -indices {\*/} $workLine endIndex]} {
set endQuote "$lineNumber.[lindex $endIndex 1]"
set beginQuote [$text search -backward -regexp -- {/\*} $endQuote 0.0]
if {$beginQuote != ""} {
$text tag add comments $beginQuote "$endQuote + 1 chars"
} else {
$text tag add comments 0.0 "$endQuote + 1 chars"
}
set beginQuoteNext [$text search -forward -regexp -- {/\*} $endQuote end]
if {$beginQuoteNext != ""} {
$text tag remove comments "$endQuote + 2 chars" $beginQuoteNext
}
} else {
if {[lindex [split $beginQuote "."] 0] <= $lineNumber && [lindex [split $endQuote "."] 0] >= $lineNumber} {
#$text tag add comments $lineNumber.0 $lineNumber.end
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
}
}

View File

@@ -1,236 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
proc HighLightRIVET {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook
global editor color
# set pos [$text index insert]
# set lineNumber [lindex [split $pos "."] 0]
set startIndex 0
# bind text tags for highlightning #
$text tag configure bold -font $editor(fontBold)
$text tag configure sql -font $editor(fontBold) -foreground $color(sql)
$text tag configure procName -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
$text tag configure rivet -foreground $color(bindKey) -font $editor(fontBold) -foreground "#ff8800" ;#-background "#c6c6c6"
# incr lineNumber
set keyWord [info commands]
# for OOP extention
foreach n {class method attribute constructor destructor invariant attribute binding new delete \
mcset mc mclocale mcpreferences mcload mcunknown configure match else elseif} {
lappend keyWord $n
}
set dataType {true false}
set sqlOperators {select from where and or count sum in order cast as by}
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $sqlOperators [string tolower [string trim $word]]] != -1} {
$text tag add sql $lineNumber.$startPos $lineNumber.[expr $endPos - 1]
}
if {[string trim $word]=="proc"} {
$text tag add procName $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
set workLine $line
while {$workLine != ""} {
if {[regexp {(\{|\[)[a-zA-Z\\_:]+} $workLine word v]} {
set word [string trim $word $v]
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="proc"} {
$text tag add procName $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# key binding highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "(</?\[a-zA-Z0-9\]+\[> \t\])|>" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add keyWord $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b] || [regexp "\'.*?\'" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\%" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# add comment #
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices "(^|\t|;| )#" $workLine word]} {
set p [lindex $word 1]
$text tag add comments $lineNumber.$p $lineNumber.end
$text tag raise comments
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
# DEDERER
# hightlight [, {, }, ]
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|{|}|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bold $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\<\?|\?>} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add rivet $lineNumber.$start $lineNumber.end
set startPos $end
} else {
break
}
}
# parameter for command hightlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -- {\s-\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<!.+>" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add coments $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
}

View File

@@ -1,189 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
set beginQuote "0.0"
set endQuote "2.0"
set endQuotePrev "0.0"
proc HighLightRUBY {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook
global editor color
global beginQuote endQuote endQuotePrev
set startIndex 0
$text tag configure bold -font $editor(fontBold)
$text tag configure procName -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
$text tag configure sql -font $editor(fontBold) -foreground $color(sql)
set keyWord [info commands]
# for OOP extention
foreach n {class method attribute constructor destructor invariant attribute binding new delete extends final finally implements import interface native new private protected public static super this throw synchronized throws transient try volatile void else def end slots require} {lappend keyWord $n}
set dataType {list abstract boolean byte char double float int long short}
set sqlOperators {select from where and or count sum in order cast as by}
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
set className ""
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="class"} {
$text tag add procName $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
puts "$text tag add procName $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]"
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# key binding highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<.*?>" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\@\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
# if {[regexp "\%.*? " $workLine a b]}
if {[regexp "\%" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
## COMENTS ##
# add comment #
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices "(^|\t|;| )#" $workLine word]} {
set p [lindex $word 1]
$text tag add comments $lineNumber.$p $lineNumber.end
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
# DEDERER
# hightlight [, {, }, ], ( , )
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|{|}|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bold $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# parameter for command hightlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -- {\s-\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
}

View File

@@ -1,202 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# TCL highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
set beginQuote "0.0"
set endQuote "2.0"
set endQuotePrev "0.0"
proc HighLightSHELL {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook systemCmdList
global editor color
global beginQuote endQuote endQuotePrev
set startIndex 0
$text tag configure bold -font $editor(fontBold)
$text tag configure className -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
$text tag configure sql -font $editor(fontBold) -foreground $color(sql)
set keyWord [info commands]
foreach n $systemCmdList {lappend keyWord $n}
# for OOP extention
foreach n {if else then fi for done do while lt gt} {lappend keyWord $n}
set dataType {list abstract boolean byte char double float int long short}
set sqlOperators {select from where and or count sum in order cast as by}
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
set className ""
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $sqlOperators [string trim $word]] != -1} {
$text tag add sql $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="class" || [string trim $word]=="extends" || [string trim $word]=="implements" || [string trim $word]=="use"} {
$text tag add className $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b] || [regexp "\'.*?\'" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #regexp -nocase -all -- {\$({|)[a-zA-Z0-9]+(:-|)(.+?}|)} string match v1 v2 v3
#[regexp "\\$\[a-zA-Z0-9\\_\-\]+" $workLine a] ||
set startPos 0
set workLine $line
while {$workLine != ""} {
if [regexp -nocase -all -- {\$({|)([a-zA-Z0-9_\-]+)(:-|)(.+?}|\}|)} $workLine match v1 a v3 v4] {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\@\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
# if {[regexp "\%.*? " $workLine a b]}
if {[regexp "\%" $workLine a b] || [regexp "(\-\>)" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# DEDERER
# hightlight [, {, }, ], ( , )
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|{|}|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bold $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# parameter for command hightlight regexp -nocase -all -- {\s-+\w+(?=\s)} string match
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -nocase -all -- {\s-+\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
## COMENTS ##
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices "(^|\t|;| )#" $workLine word]} {
set p [lindex $word 1]
$text tag add comments $lineNumber.$p $lineNumber.end
$text tag raise comments
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
}

View File

@@ -1,136 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# version 0.0.1 #
# SPEC highlight file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
proc HighLightSPEC {text line lineNumber node} {
global fontNormal editorFontBold fontBold tree imgDir noteBook
global editor color
# set pos [$text index insert]
# set lineNumber [lindex [split $pos "."] 0]
set startIndex 0
# bind text tags for highlightning #
# foreach tag {bold procName comments string number variable} {
# $text tag remove $tag $lineNumber.0 $lineNumber.end
# }
$text tag configure bold -font $editor(fontBold)
$text tag configure procName -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
# $text tag configure bold -font $fontBold
# $text tag configure procName -font $editorFontBold -foreground blue
# $text tag configure keyWord -foreground #0000a8
# $text tag configure comments -foreground #9b9b9b
# $text tag configure variable -foreground #e50000
# $text tag configure string -foreground #168400
# $text tag configure braceHighLight -font $editorFontBold -foreground green -background black
# $text tag configure brace -foreground brown
# $text tag configure percent -foreground #a500c6
foreach n {define name version release description prep setup build install post postun clean files defattr changelog doc} {
lappend keyWord $n
}
# add comment #
if {[string range [string trim $line] 0 0] == "#"} {
$text tag add comments $lineNumber.0 $lineNumber.end
return 0
}
set a ""
regexp "^( |\t|\%)*(\[a-z\]|\[A-Z\]|\[0-9\]|_|:|~|\\.|/)+" $line a
if {$a != ""} {
# gets name
set b ""
regexp "^( |\t|\%)*" $line b
set nameStart [string length $b]
set nameEnd [string length $a]
set name [string range $a [string length $b] end]
# is it keyword?
if {[lsearch $keyWord $name] != -1} {
incr nameStart $startIndex
incr nameEnd $startIndex
$text tag add keyWord $lineNumber.$nameStart $lineNumber.$nameEnd
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# string { } highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\{.*?\}" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
# if {[regexp "\%.*? " $workLine a b]}
if {[regexp "\%" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
#find [
# set i [string first "\[" $line]
# if {$i != -1} {
# incr i
# set line [string range $line $i end]
# incr i $startIndex
# set l [HighLight $text $line $i $node]
# eval lappend res $l
# }
# return $res
}

View File

@@ -1,236 +0,0 @@
###########################################
# Tcl/Tk Project Manager
# version 0.0.1
# TCL highlight file
# Copyright (c) Sergey Kalinin 2001, http://nuk-svk.ru
# Author: Sergey Kalinin (aka BanZaj) banzaj28@gmail.com
###########################################
proc HighLightTCL {text line lineNumber node} {
global fontNormal fontBold editorFontBold tree imgDir noteBook
global editor color
set startIndex 0
# bind text tags for highlightning #
$text tag configure bold -font $editor(fontBold)
$text tag configure procName -font $editor(fontBold) -foreground $color(procName)
$text tag configure keyWord -foreground $color(keyWord)
$text tag configure comments -foreground $color(comments)
$text tag configure variable -foreground $color(var)
$text tag configure string -foreground $color(string)
$text tag configure braceHighLight -font $editor(fontBold)\
-foreground $color(braceBG) -background $color(braceFG)
$text tag configure brace -foreground $color(brace)
$text tag configure bracequad -foreground $color(bracequad)
$text tag configure percent -foreground $color(percent)
$text tag configure bindKey -foreground $color(bindKey)
# incr lineNumber
set keyWord [info commands]
# for OOP extention
foreach n {class method attribute constructor destructor invariant attribute binding new delete \
mcset mc mclocale mcpreferences mcload mcunknown configure match else elseif} {
lappend keyWord $n
}
set dataType {true false}
set a ""
set startPos 0
set endPos 0
set length 0
set workLine $line
while {$workLine != ""} {
if {[regexp "(^|\t| )\[a-zA-Z\\_:\]+" $workLine word]} {
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[lsearch $dataType [string trim $word]] != -1} {
$text tag add bold $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="proc"} {
#$text tag add procName $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# Procedure name highlight
set workLine $line
while {$workLine != ""} {
#regexp -nocase -all -line -- {proc (::|)(\w+)(::|)(\w+) \{(.*)\} \{} $workLine match v1 v2 v3 v4 params
set endPos [string first "\{" $workLine]
#puts $workLine
if {[regexp -nocase -all -line -- {proc (::|)(\w+)(::|-|_|)(\w+)(.+) \{(.*)\} \{} $workLine match v1 v2 v3 v4 v5 params]} {
set word "$v1$v2$v3$v4$v5"
#puts $word
set length [string length $word]
set startPos [string first [string trim $word] $line]
#set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
#puts "$length $startPos $endPos\n$workLine"
$text tag add procName $lineNumber.$startPos $lineNumber.$endPos
set startPos [expr $endPos + 1]
} else {
break
}
}
set workLine $line
while {$workLine != ""} {
if {[regexp {(\{|\[)[a-zA-Z\\_:]+} $workLine word v]} {
set word [string trim $word $v]
set length [string length $word]
set startPos [string first [string trim $word] $line]
set endPos [expr $startPos + $length]
set workLine [string range $workLine $length end]
if {[lsearch $keyWord [string trim $word]] != -1} {
$text tag add keyWord $lineNumber.$startPos $lineNumber.$endPos
}
if {[string trim $word]=="proc"} {
$text tag add procName $lineNumber.[expr $startPos + $length] $lineNumber.[string wordend $line [expr $startPos + $length +2]]
}
set startPos [expr $endPos + 1]
} else {
break
}
}
# key binding highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "<.*?>" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# variable highlight #
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\\$\[a-zA-Z\\_:\]+" $workLine a]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
if {$a != ""} {
$text tag add variable $lineNumber.$start $lineNumber.$end
}
set startPos $end
} else {
break
}
}
# string " " highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\".*?\"" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add string $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# persent % highlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\%" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add percent $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp "\{|\}" $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add brace $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
$text tag lower brace
break
}
}
# DEDERER
# hightlight [, {, }, ]
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp {\(|\[|\]|\)} $workLine a b]} {
set start [string first $a $workLine]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bracequad $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
$text tag lower bracequad
break
}
}
# parameter for command hightlight
set startPos 0
set workLine $line
while {$workLine != ""} {
if {[regexp -- {\s-\w+(?=\s)} $workLine a b]} {
set start [expr [string first $a $workLine] + 1]
set end $start
incr end [string length $a]
set workLine [string range $workLine $end end]
incr start $startPos
incr end $startPos
$text tag add bindKey $lineNumber.$start $lineNumber.$end
set startPos $end
} else {
break
}
}
# add comment #
set workLine [$text get $lineNumber.0 $lineNumber.end]
if {[regexp -indices "(^|\t|;| )#" $workLine word]} {
set p [lindex $word 1]
$text tag add comments $lineNumber.$p $lineNumber.end
$text tag raise comments
} else {
$text tag remove comments $lineNumber.0 $lineNumber.end
}
}

File diff suppressed because it is too large Load Diff

126
lib/image_library.tcl Normal file
View File

@@ -0,0 +1,126 @@
######################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "", 2022, https://nuk-svk.ru
######################################################
# Base64 encoded Images library
######################################################
image create photo projman -data {
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
AAAASUVORK5CYII=
}
image create photo folder -data {
R0lGODlhEAANAOMMAAAAABwcHC4uLlxcXGpqant7e4ODg4aGhqGhoaioqLCwsLe3t///////////
/////yH5BAEKAA8ALAAAAAAQAA0AAAQ48Ell6pA4v5WqKYSGKZ33HUiKhA9ivp4AtDAs07V5u3k8
8z3DLlgZEo3BG0HAbDqZgdkDQK1arREAOw==
}
image create photo imgFile -data {
R0lGODlhCwANAPcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O
Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh
ISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0
NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdH
R0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpa
WltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1t
bW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CA
gIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOT
k5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaam
pqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5
ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zM
zM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f
3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy
8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH5BAEAAKoALAAAAAALAA0A
AAg5AFUJHEhQIICDCA8OBPCvoUOGBh0+VMgw4UNVDCVerHhQIgCMGjf+S5jxY8aQJkdaHAkyJEuS
JAMCADs=
}
image create photo tree_32x32 -data {
iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw1AUhU9TpaIVBzuIdMhQnSyIFXHUKhShQqgVWnUweekfNDEkKS6OgmvBwZ/FqoOLs64OroIg
+APi6OSk6CIl3pcUWsT44PI+znvncN99gNCoMs3qGgc03TYzqaSYy6+IoVeE0EcVRUJmljErSWn4
rq97BPh+F+dZ/vf+XP1qwWJAQCSeYYZpE68TT23aBud94ggryyrxOfGYSQ0SP3Jd8fiNc8llgWdG
zGxmjjhCLJY6WOlgVjY14knimKrplC/kPFY5b3HWqjXW6pO/MFzQl5e4ThVFCgtYhAQRCmqooAob
cdp1Uixk6Dzp4x92/RK5FHJVwMgxjw1okF0/+B/8nq1VTEx4SeEk0P3iOB8jQGgXaNYd5/vYcZon
QPAZuNLb/o0GMP1Jer2txY6AgW3g4rqtKXvA5Q4w9GTIpuxKQSqhWATez+ib8sDgLdC76s2tdY7T
ByBLs0rfAAeHwGiJstd83t3TObd/77Tm9wNyw3KnzSNOGAAAAAZiS0dEAJ8AMACxMhhtNAAAAAlw
SFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+YHCwkONjcAirYAAAAZdEVYdENvbW1lbnQAQ3JlYXRl
ZCB3aXRoIEdJTVBXgQ4XAAAAyklEQVRYw+2VMQ7DIAxFf9KcoVfIKdrJUm6TnqU9Ry8QiY0DdPaW
OXvndmFAWQDVtdzKlhBCIPiY7wfg8WPR5YMQwkv6ACLqWtb31jI0KJwxp34BwBYydErt2OyhvZeI
6C4o7AYg/p2HGMBa8/YVwRKCtrRRNFVlmnwaCkKu2h7qC7e4ENH5i3yaAYytVTZp8qnGQ2uWpWl/
I9Uny8o1prZZ+8sWAA9hDfyJIBaCpHPIOeQccg45h5xDziHnkBUOmYtDYX5Ma55agt4p2lAY80lC
JwAAAABJRU5ErkJggg==
}
image create photo close_12x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw1AUhU9TpaIVBzuIdMhQnSyIFXHUKhShQqgVWnUweekfNDEkKS6OgmvBwZ/FqoOLs64OroIg
+APi6OSk6CIl3pcUWsT44PI+znvncN99gNCoMs3qGgc03TYzqaSYy6+IoVeE0EcVRUJmljErSWn4
rq97BPh+F+dZ/vf+XP1qwWJAQCSeYYZpE68TT23aBud94ggryyrxOfGYSQ0SP3Jd8fiNc8llgWdG
zGxmjjhCLJY6WOlgVjY14knimKrplC/kPFY5b3HWqjXW6pO/MFzQl5e4ThVFCgtYhAQRCmqooAob
cdp1Uixk6Dzp4x92/RK5FHJVwMgxjw1okF0/+B/8nq1VTEx4SeEk0P3iOB8jQGgXaNYd5/vYcZon
QPAZuNLb/o0GMP1Jer2txY6AgW3g4rqtKXvA5Q4w9GTIpuxKQSqhWATez+ib8sDgLdC76s2tdY7T
ByBLs0rfAAeHwGiJstd83t3TObd/77Tm9wNyw3KnzSNOGAAAAAZiS0dEAJ8AMACxMhhtNAAAAAlw
SFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+YHCww0DNJuT5YAAAAZdEVYdENvbW1lbnQAQ3JlYXRl
ZCB3aXRoIEdJTVBXgQ4XAAAATUlEQVQoz52QQQ4AMQgCR9/rc/xv99SkIdWN5QgoqGXmAogIo8H2
uRKdGcCU0CTVrBIqrtx24ky1ru+tojPEe6XR0aO3dubbkP+ZVfsAVVNBhh3Rb78AAAAASUVORK5C
YII=
}
image create photo close_10x10 -data {
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw1AUhU9TpaIVBzuIdMhQnSyIFXHUKhShQqgVWnUweekfNDEkKS6OgmvBwZ/FqoOLs64OroIg
+APi6OSk6CIl3pcUWsT44PI+znvncN99gNCoMs3qGgc03TYzqaSYy6+IoVeE0EcVRUJmljErSWn4
rq97BPh+F+dZ/vf+XP1qwWJAQCSeYYZpE68TT23aBud94ggryyrxOfGYSQ0SP3Jd8fiNc8llgWdG
zGxmjjhCLJY6WOlgVjY14knimKrplC/kPFY5b3HWqjXW6pO/MFzQl5e4ThVFCgtYhAQRCmqooAob
cdp1Uixk6Dzp4x92/RK5FHJVwMgxjw1okF0/+B/8nq1VTEx4SeEk0P3iOB8jQGgXaNYd5/vYcZon
QPAZuNLb/o0GMP1Jer2txY6AgW3g4rqtKXvA5Q4w9GTIpuxKQSqhWATez+ib8sDgLdC76s2tdY7T
ByBLs0rfAAeHwGiJstd83t3TObd/77Tm9wNyw3KnzSNOGAAAAAZiS0dEAJ8AMACxMhhtNAAAAAlw
SFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+YHCww2COc16Q0AAAAZdEVYdENvbW1lbnQAQ3JlYXRl
ZCB3aXRoIEdJTVBXgQ4XAAAARElEQVQY05WPwQ0AIAgDr2zNBIytLxPToNE+j9KCMnMAVJVotObh
oDMByMFKdqZb4r6oU5XfHTzqr/rpmc7UtcTJ5GwCGLsw4txYqA4AAAAASUVORK5CYII=
}

View File

@@ -1,75 +0,0 @@
proc ImageViewer {f w node} {
global tab_label noteBook factor im1 im2 editor
set factor($node) 1.0
frame $w.f -bg $editor(bg)
pack $w.f -side left -fill both -expand true
canvas $w.f.c -xscrollcommand "$w.f.x set" -yscrollcommand "$w.y set" -bg $editor(bg)
scrollbar $w.f.x -ori hori -command "$w.f.c xview" -bg $editor(bg)
scrollbar $w.y -ori vert -command "$w.f.c yview" -bg $editor(bg)
pack $w.f.c -side top -fill both -expand true
pack $w.f.x -side top -fill x
pack $w.y -side left -fill y
bind $w.f.c <Button-4> "%W yview scroll -3 units"
bind $w.f.c <Button-5> "%W yview scroll 3 units"
bind $w.f.c <Shift-Button-4> "%W xview scroll -2 units"
bind $w.f.c <Shift-Button-5> "%W xview scroll 2 units"
bind $w.f.c <Control-Button-4> "scale $w.f.c 0.5 $node"
bind $w.f.c <Control-Button-5> "scale $w.f.c 2 $node"
#$w.scrwin setwidget $w.scrwin.f
openImg $f $w.f.c $node
set tab_label [$noteBook itemcget $node -text]
balloon $w.f.c set "Mouse wheel up/down - vertiÓal scrolling the image\n\
Shift + mouse wheel up/down - horizontal image scrolling\n\
Control + mouse wheel up/down is a scale image -/+"
}
proc openImg {fn w node} {
global im1
set im1 [image create photo -file $fn]
#scale $w
list [file size $fn] bytes, [image width $im1]x[image height $im1]
$w create image 1 1 -image $im1 -anchor nw -tag img
}
proc scale {w {n 1} node} {
global im1 im2 factor noteBook tab_label
set factor($node) [expr {$factor($node) * $n}]
$w delete img
catch {image delete $im2}
set im2 [image create photo]
if {$factor($node)>=1} {
set f [expr int($factor($node))]
$im2 copy $im1 -zoom $f $f
} else {
set f [expr round(1./$factor($node))]
$im2 copy $im1 -subsample $f $f
}
$w create image 1 1 -image $im2 -anchor nw -tag img
$noteBook itemconfigure $node -text "$tab_label (size x$factor($node))"
$w config -scrollregion [$w bbox all]
}
proc ImageBase64Encode {text} {
global env
set types {
{"PNG" {.png}}
{"GIF" {.gif}}
{"JPEG" {.jpg}}
{"BMP" {.bmp}}
{"All files" *}
}
set img [tk_getOpenFile -initialdir $env(HOME) -filetypes $types -parent .]
if {$img ne ""} {
set f [open $img]
fconfigure $f -translation binary
set data [base64::encode [read $f]]
close $f
# base name on root name of the image file
set name [file root [file tail $img]]
$text insert [Position] "image create photo $name -data {\n$data\n}"
}
}

View File

@@ -1,389 +0,0 @@
###########################################################
# Tcl/Tk Project Manager #
# Distrubuted under GPL #
# Copyright (c) "Sergey Kalinin", 2002, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
Modules
## MAIN INTERFACE ##
#
if {[info exists topLevelGeometry]} {
wm geometry . $topLevelGeometry
} else {
wm geometry . 1200x1024+0+0
}
wm title . "Tcl/Tk Project Manager $ver"
wm iconname . "Tcl/Tk Project Manager $ver"
#image create photo icon -format png -file [file join $imgDir icons large projman.png]
image create photo icon -data {
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
WXMAAAsSAAALEgHS3X78AAAAB3RJTUUH1AoBATAgUp33UQAAE4hJREFUeJy1WmmQW9WV/t6T9KTW
rlarW+q92+72hgMYG6iAsQGzBsZJjMFZPZmaSWAqM1QWhsxUSM0kVYHJ/EgqVFKpVFIwIWAgTGKc
gMGGtIndbru9dWP3vqg37ct70tPblzs/JLW7jW2aUDlV94ek++79vnvOPdsT8FeIquKu/n4kLRZ8
FgBjmvh8Pg/9l7/E5JYt+AoA21+z7t9KKAD00sHz+PVjj+EdAFtyOXhZFrG77sIBAF8C0F6ZR61w
fCyxfghoS2WObemGsRj8r7yCkwDmamqw96c/xczhw3gJwOsApMqz1sqwVMZSsASAXhkGALPyHfnY
BJ544gm6o6PD19XVtba5ufkxv9//paW/nzlzBsePfzPqdIqjXq9Rl0gk/umHP8RrAN6rgKcA7ATw
o9tvv9337LPP1nav6bbksjmcPTuAH/znM8jMjw0WTP5JXpJZlIysCmQJBRUmtCVkViTLVPjkk0/S
27ZtC9fV1f2rjbE9mcllML8wD4parmkrPYixUTcY25F329uPt+zdS34A4A8A5Mrm9tdee23T/fff
v///eqJ1L74VhV1n0Ww7Q3bv3gVZ5Kif/+pHGJuc0YpT8YNF03xBJfQkVHpG0zQJWCTyoWJZ+uGh
hx6yNjQ0XDcxMfH4K6++ElBUhZJkiaJAwWItT6UoCoKow2rzYvPmic59LwliImH/i2maMcMwVADm
0NBQ47r1nzj8uaeO1v/PC6OYnOMwFtMwPT2rn+37nd7Y3GLd+6XHsGFNm4UrTq0pydL9Pn8w2N6y
Oh0Oh2W3223m8/kVaWIZgbfffpv67W9/Wzh06FCczbOhAluwzs3OOWVJpqw2K8XYGVitVlgsblht
VqzrPoTfvdbi8bh9NlmWp0VRZB999FF86sGdb37mO8e7ek4tAKRykIZMpMkXJ/OJyRSvqN6Sptr8
oVasvWYD7IzBdLau6di69Y7mW27d6iYULY9PTAi6phn4kLthucx3RNf1tGEYFxRFkfL5vDWfyztE
QXQGagOU2+0GTdOwWAjstj/hSE+YUhSliWXZSUmS5t54441vfvm/Tuw6cjq2fNX4H2bAnXtB17S3
87lc0FUjN4bqDGuNdx26Oq7F5k3z9k3Xb17tD3RfNzY944xGZ7ICX+CBq9+LSwlQlYmGoigCy7LT
hJAxh8Nhs1gsrX6/v8Yf8Je1QKeQSfdjaKgBC7EFks1kZ/bs2SOnjFXP/OIPUcuy/fixEub3vQDg
eQBTiiTNtbemr3n6+++FD/zRi0BoNeyMjpbIv+PdI2tcU7MzrbGFqFMV1ZxpmEUCol6JxKVeiFQm
yii7N4njuGJjY6PXbrdvFgWxVtM02O12mMYkZmcdaGxqhN1ht/JF/saHH/lc5z/+ZMS2aDYAYCrA
/MtHAPIqgBkADIAzkxPmr2xW89nT/edA6FZ0rgpD6K9BIhGD20vXeXy2T8lcDQXdhKzLgwSEBaDg
kst9KYGq/0dFdQYA3el05ux2u+pwOGChLSgWi6AIi2zWC3/Aj9pgrWVycrJzOOlanyte4jwyR2ZX
NTnf7e/PXef3+7/61FNP/ezll1/Of2pnW8uFoeMm4+mkF5IpCMUhcJmNWL8hgFZfE/h8Ojgonb2f
6ApllmxENbT3CQi3hARZZkL79u1zPv3007fv2rUr9Pzzz3MVIgQAaWtrawlHwne2d7ZHvD4vhoeG
USzEICte+LytMAwDPp/PPDFbXxPL6csVynhk0vjAjgPvze9e28xsmhw952cYxr9rT+0/j46rHsq2
FYlYGoOnJhGPcQAFtLe0obWpDYRSnLKiNbtcQWdL12oPZaHypUKhSsBcSoDasmVL2GKxPOd0OTfd
e++99ltvvdX91ltvcZ2dnd62tratzS3N2yNNkYAgCJienIaiUOjuugnBYD1MYqI2UGf+/hRjNUx6
CQEKsLjdsmI4kjkJN3eUeEVkfY0tLTdu3Tbf+tqBIAp5gszCgmFqMmeoSpHNszZJkqz1kSa4fSGE
m9pqNm68vi3SHLmBZmzOfDY7I0tS1cTNKgHaarVGJFn6fl19XUswGNzk8/rWPfDAA36Px9Ok6dq9
HZ0dm/wBv2VsdAzxWBybt9yKG264ESzHwmq1Ip4DdWLavRT9clFZ41tfWGP0HDnivuXuHfVc9gB1
8KADhXzWcDpsqSLHns5msxdURaFYjg/IBrHW+P3Yesst2L71k47mprBP1bU1qiA6Z2dmhlC+p1r1
DlDZbNYSi8WosdExR1t7W7PD7mhwe93X+Py+mEGMkNfnZXK5HFiWRag+hO6ubthsNkiShBpnDRTT
tFwt7ti1GaWt9RFnscSDsQ1QBw94wOdypLGxPp1Opk5MTEz0K7KSsFgsmQbaFi4UixFVU6HoBoql
Ejra23GvzRZ4509vfAHA7wGUAMiLlziZTNK6roMv8Qg1hChZkRlFVuo1TaurC9VRTpcT0WgUyXgS
d955JwK1AYyPj8Nqs6LGWQO2JCxHbKoAzSx+3LElUnP23FmKNgycPtqDCwMqWprCmXgi3jt4bvCY
LMvjAFL19fVuB2OV+CKLTDKDkYlpcFwePB/G8WPHMDU1dQGAH4ADAL1IIJvN5op88elcPneTw+64
Y+MnNsLG2CiL1WKpra2FKIgQeAHBYBBtbW2gKRqqqoJhGFAUBUJfDCk2iGhvZDCRrN5lE7vuXk/9
cf9+CEIJr/9+Dozdx8Zk+cjZM2d7dV0fAxAFwLnd7tPFAncsx+ZDump4KJqGSXeh5/DbONbbB7ZQ
6MdFD0kWd9V13VAUZUyRlZQsy75MOtM6MDBA+fw+KtIYQYEtQBAE+AN+UBSFhdgCDNOAx+sBMQkm
FxSMxMsnfq3/fWMyX0cbpHw+NSSL27oV9B3pQTyZJrTVkUslU4fGRsd6TdOsgs8AEHK5HFcqlWKS
IAQKBbYVIPbJkVGjv7dvoFAo9BmqegaETAFIAhAXvRAqEZiiqAKAaY7jkrqu29KpdOBk30n69KnT
GB4eVjVdMw3DoEVJpGqDtfB5fYhOR8GVDFyIuQCdx13XKNS5eANVTXa3tPM4/e5LiMcTJJ5KZRVF
eTeTyfQBGAcwXQEvolwfkIp9xzVFqS1yXF1qYeGsyPNHDFU9CULGASwA4AAoS1MJAkA3TVMSRTGv
KMqMaZpRWZYThBBHPp/n06n0iVw2F5+amnKMDI8YdsZON4QbrJ9+8NM4emIA78fcqNFncdct66hj
o5WTUbOgos+jyOXNZDab1XS9R5KkPgBjS8ALVZPAxWKnCGBWU9ULuq6fWzJ/HkAOZS9kWi8hYKBc
lBiqqkr5fD5vt9snHA7HSVmW/QDkYrFIFYtFPwD3wTcP3lYoFK7dtv3BUMl5I2hqHjXgYHcGynsQ
AxH5IEJBL4nOsnnDNP8C4ASA0SuAB8oBSq2c8CCAWQB2lCNwsaKdxWh8uVyIVCboABRFUYqKoiQA
OHExOlsAOFmWPU9MctupCwvf2N+zAICChxFh0K4yAYpGPvh5/OQ/1lGP/cPuJID3AUygnBNVzWYp
+KqYS0BKlf0MlC+vjiX50JVq4qoajcppiJVFqgQolJOyhK7rejInfqP6YEs9s2QZCrIKuGwqPB6P
U1EUqVQq5SqnK+GizV8Jg1YZ1JJ5y+ZficDliAAXS1AKgGKz2TS3y7WumE9VSSHktSDFyosLuKxl
C7n2+mub+QK/bWBg4EI+n7+0yL/a/h8A/VEIXG4h6plnnrH19vbWKIryaRchX2NIiar+7GBoqKqx
+KCT0cEXeXR1dzEW2nJTNpc9XCgU5g3DqJrP5UxoxbJSAkuF2nHHHTtcTueu031921sbI+0um7IY
UnS1BItxEQ9DSigJJbg9boTDYd89993zWQCZRDxBZTKZeZRNSftrSVyupLwicACW69au9auC8Eg4
3PCVtlUdDS7GS2mahEPnDVCUBXdsUPVpro6OpspptceM4tbrQpAVGYFAwOLz+SLhcHgjTdMdxWJx
UhAECctd6EeSlWqAevHFF90zMzON42cH756fX/gMrwrO6zduhE4RxNMJ0Jobpj0Mm9VWAoi/+qBd
j5tW6w00VTF5hmHsre2t60GhVdd1ZuDcwM/T6fQYyi6yWjquWFaiAWrz5s2e7tWr7w/V1X3PVeN6
2G11NLMcZ5memsbb77yDHMuSlBgwdWsdfdsaMRcXgt5oqnwPbuooiXx+nu7u7qZtjA2EEFgsFng8
HsbldLWZphkUBGGuVCoVcdFFrlgTH0aA+vJXvuxtjITvnY9Gv0UZ5s3dXe1uf8BNy5KMo30ncH5k
hKTT6VyobQsKei2zfa2UlemGwNCsCkpjjXZmYHBsdDTX2dnpb2pqsmq6tkjC7XHbnS5nKzGJTxTE
WIXER+rOXc2EqB//+Mdev99/VzIW+1ZybmHz7GyU1mUJPq8L0wuzKIgiQFFZURQPu2zK9ZCpdbTV
YdY4yrGgRr6Q3vPIboRCIXz9X75+8vHHH7+5c3WnvcgXYZomGIZBW3ubhxByHwDQNP2rWCx2HuU4
sSJzupIGqO3bt/stwH1el+s7tV7fZjdjp0zDwOjUJA6+04PeE/1E1bQ0TdOHdF3vY3wdMm/p3Nzq
nE0wnpb6c5MSNBNc7xj8N7TJ2Ldv33Pj4+NUR0dHS2NTo03V1EVNeH1eu9PlbKMp2q+qapLneY4Q
siJzuhwB6rvf+26gpanpHqFY/HYmntjk87oRCgYgiRKGRscwMjlhqpqW0jTtiK7rfT09PQ/Gk9zw
aNpze3ugmO/qXlP3l8ECYPP7DF3zbGxIjxw9evRljuPOzszM1DU3N7e0tLTYNG2ZOTF2u72Zoiif
ruuZUqnEGYbxoeb0gcbWnocf9q9fu+6eumDdt01Fu0ERJCSSCcQTCZwbGcL0zLwhCXJS07VjAI4B
GNu9e/em43P1j07EVFik6dSGdWvr3xssAAA2NIqKlOw/OjExcQBALJ/Pz8UWYsFIJNLS3NRs0w0d
pmku3gnGzjQREK+u6VlRFDld11fcmaP2fO4Rj9vtuo8vFJ+oCwRuCAT8YCwWxJNJ9Pb349z753Wu
UEyCoM8kZi8BGQEwYxjGoN1Z+8WhecoisvPZz9y9MfTmSQ4AsHOzKb7+6q9f1HX9OMo5VSGXyy2k
UqnahoaG5kgkwhBCYJomrFYrXG6Xg2GYRhC4NU3LCYLA6bp+xc7cYkHztce+6ujsaH/ATlu/U0jn
rhdKPHweJyRZxHg0ionojM4LQsIk5knd1HsJyDAqWeXQ0NDszruuF3mF2bGQLEoP372K2d9bsDGk
YGzwj505dar/VZSzUANlV8nlcrl4gSsEA4FAUzgcZkzThCzJsFqt8Hq9DoZhGgkhHlVTM6IgFq5E
YrGtsn5Nd9jv9vxCL0nXBt1+5LJZTE1P4dTgIIbHJ3RJlhOGYZw0TfMYgGGU8/TFSuro0aNntt+8
FrJu3fZ321ZJr/RkXd2+mczJP7/0nKIoh1DO+6utS50QwuXz+TRf5P0+ry8SDAbthUIBsiTD6XTC
4/U4GIZpggmPLMtpQRDYavt+KYkqAWs2k/3iqsbGv3fV2BHwB5DPcxgcHcbA0LBeKBYThmGcJIQc
I4QMVcCnsbwM1C8MnjxRoFpsD9zW2frHnpGa1OBzrytS8TmUq6iqVElohmFwLMtmS6WSz+PxNIZC
IbsoitBUDU6nE16f12G325tN0/RKkhTneb5AyPJGbzWttZmG8dLGrm5/Q6QZmVwG8/NzmMtmdEmW
E4qinDRNcyn4S2vYquikMHzi3554omPo6HMX5mYm/hfAeXzQny+S0DSN4zguI4qit7a2NhIOhx2i
IELTyiQ8Po+9xlHTbJpmgOf5GVEUl5JYJOCgKOq/XU4XXE4vJqcnMDQ2arClUtJisfSJotgLYCl4
4TLgF0ns3bs3pCjK6mPHjr1YIXo5qZJQVVXlCoVCVigJ3tra2sZIJGLneR7ZbBbRaBSKotgN3WhJ
JVMjLMsmKmtqqOTAFAA7Y7fX14ZCm0Ynx5HnOEPQtEQ6kzmqKEqfaZpLbf5q4AEAN954o+ZyuT57
8ODBtwDwV5p3KQmO47KlUskbDAabmpqb7CPDI/jzu3/G+rXr0d7ezsiK7E+n0hcURcmjXHIaVQK0
y+WKudwuaWJiIioryhQo6myxWDxhmuYorm42H5Dh4eHCjh079h44cOAwgPzV5l6GRJplWV8kHGl2
1jiZrtVd2LlzJ9xeN+bn50NTk1MnJUlKoFzcL/ZGdUEQJqPR6POyojSomuawCIJaAZ0GwK4UPABE
o1E9GAyyAGqxvJ69khgon2hWEIQz58+fv4Zl2Zsfeugh982fvBklqYT3B9+HIimMaZp+AG6U8zjK
Wllc13Wd53l+GkDKNE2raZrVNzViZfGPUvoRr9c71tra2jw3N3caF2vqlZDIa5r2p9nZ2VW/+c1v
du3fv9/T1d2F6alptLa2ghBSfXlOAxffxlQ7ADyALIAUyqdf7R585LqV47gT99xzzydQ7umsVKrt
lBnTNH/W1NT0pizL4pGeI/B4PBgdHX2N5/kFlA9WBz6YC1Xt0cDHLLgpisomEolrpqenz1VArVSq
GKREInGuWCwe1jStJx6PHyoUCkOEkBkAMZQrOO1j/9niKkIBCOFibv9Rn2UAuFBupXtQ/r+GUlmP
Q6Up9rck8HGFwvI/m9CoBD8sqdr+H8azwnc3xO1JAAAAAElFTkSuQmCC
}
wm iconphoto . icon
wm protocol . WM_DELETE_WINDOW Quit
wm overrideredirect . 0
wm positionfrom . user
#wm resizable . 0 0
frame .frmMenu -border 1 -relief raised -background $editor(bg) -highlightthickness 0
frame .frmTool -border 1 -relief raised -background $editor(bg) -highlightthickness 0
frame .frmBody -border 1 -relief raised -background $editor(bg) -highlightthickness 0
frame .frmStatus -border 1 -relief sunken -bg $editor(bg)
if {[info exists menuShow]==1 && $menuShow eq "Yes"} {
pack .frmMenu -side top -padx 1 -fill x
}
pack .frmTool -side top -padx 1 -fill x
pack .frmBody -side top -padx 1 -fill both -expand true
pack .frmStatus -side top -padx 1 -fill x
########## CREATE MENU LINE ##########
menubutton .frmMenu.mnuFile -text [::msgcat::mc "File"] -menu .frmMenu.mnuFile.m -font $fontNormal -bg $editor(bg) -fg $editor(fg)
set m [menu .frmMenu.mnuFile.m -bg $editor(bg) -fg $editor(fg)]
GetFileMenu $m
##.frmMenu 'Project' ##
menubutton .frmMenu.mnuProj -text [::msgcat::mc "Project"] -menu .frmMenu.mnuProj.m -font $fontNormal -bg $editor(bg) -fg $editor(fg)
set m [menu .frmMenu.mnuProj.m -bg $editor(bg) -fg $editor(fg)]
GetProjMenu $m
##.frmMenu 'Edit' ##
menubutton .frmMenu.mnuEdit -text [::msgcat::mc "Edit"] -menu .frmMenu.mnuEdit.m -font $fontNormal -bg $editor(bg) -fg $editor(fg)
## BUILDING EDIT-MENU FOR MAIN AND POP-UP MENU ##
GetMenu [menu .frmMenu.mnuEdit.m -bg $editor(bg) -fg $editor(fg)];# main edit menu
GetMenu [menu .popMnuEdit -bg $editor(bg) -fg $editor(fg)] ;# pop-up edit menu
## VIEW MENU ##
menubutton .frmMenu.mnuView -text [::msgcat::mc "View"] -menu .frmMenu.mnuView.m -font $fontNormal -bg $editor(bg) -fg $editor(fg)
set m [menu .frmMenu.mnuView.m -bg $editor(bg) -fg $editor(fg)]
GetViewMenu $m
##.frmMenu Settings ##
menubutton .frmMenu.mnuCVS -text [::msgcat::mc "Modules"] -menu .frmMenu.mnuCVS.m \
-font $fontNormal -state normal -bg $editor(bg) -fg $editor(fg)
set m [menu .frmMenu.mnuCVS.m -bg $editor(bg) -fg $editor(fg)]
GetModulesMenu $m
menubutton .frmMenu.mnuHelp -text [::msgcat::mc "Help"] -menu .frmMenu.mnuHelp.m \
-underline 0 -font $fontNormal -bg $editor(bg) -fg $editor(fg)
set m [menu .frmMenu.mnuHelp.m -bg $editor(bg) -fg $editor(fg)]
GetHelpMenu $m
pack .frmMenu.mnuFile .frmMenu.mnuProj .frmMenu.mnuEdit .frmMenu.mnuView .frmMenu.mnuCVS -side left
pack .frmMenu.mnuHelp -side right
## Bind command ##
bind . <F1> ShowHelp
bind . <F5> UpdateTree
bind . <F6> MakeRPM
bind . <F7> MakeTGZ
bind . <F8> {MakeProj compile proj}
bind . <Control-F8> {MakeProj compile file}
bind . <F9> {MakeProj run proj}
bind . <Control-F9> {MakeProj run file}
bind . <Control-ograve> {AddToProjDialog file [$noteBookFiles raise]}
bind . <Control-n> {AddToProjDialog file [$noteBookFiles raise]}
#bind . <Control-ocircumflex> AddToProjDialog
#bind . <Control-a> AddToProjDialog
bind . <Control-eacute> Quit
bind . <Control-q> Quit
bind . <Control-ccedilla> PrintDialog
bind . <Control-p> PrintDialog
bind . <Control-o> FileOperation::Open
bind . <Control-O> FileOperation::Open
set sepIndex 0
########## STATUS BAR ##########
set frm1 [frame .frmStatus.frmHelp -bg $editor(bg)]
set frm2 [frame .frmStatus.frmActive -bg $editor(bg)]
set frm3 [frame .frmStatus.frmProgress -relief sunken -bg $editor(bg)]
set frm4 [frame .frmStatus.frmLine -bg $editor(bg)]
set frm5 [frame .frmStatus.frmFile -bg $editor(bg)]
set frm6 [frame .frmStatus.frmOvwrt -bg $editor(bg)]
pack $frm1 $frm4 $frm6 $frm2 $frm5 -side left -fill x
pack $frm3 -side left -fill x -expand true
label $frm1.lblHelp -width 25 -relief sunken -font $fontNormal \
-anchor w -bg $editor(bg) -fg $editor(fg)
pack $frm1.lblHelp -fill x
label $frm4.lblLine -width 10 -relief sunken -font $fontNormal \
-anchor w -bg $editor(bg) -fg $editor(fg)
pack $frm4.lblLine -fill x
label $frm2.lblActive -width 25 -relief sunken -font $fontNormal \
-anchor center -bg $editor(bg) -fg $editor(fg)
pack $frm2.lblActive -fill x
label $frm3.lblProgress -relief sunken -font $fontNormal \
-anchor w -bg $editor(bg) -fg $editor(fg)
pack $frm3.lblProgress -fill x
label $frm5.lblFile -width 10 -relief sunken -font $fontNormal \
-anchor w -bg $editor(bg) -fg $editor(fg)
pack $frm5.lblFile -fill x
label $frm6.lblOvwrt -width 10 -relief sunken -font $fontNormal \
-anchor center -bg $editor(bg) -fg $editor(fg)
pack $frm6.lblOvwrt -fill x
########## PROJECT-FILE-FUNCTION TREE ##################
#set frmCat [frame .frmBody.frmCat -border 1 -relief sunken -bg $editor(bg)]
set frmCat [frame .frmBody.frmCat -border 0 -relief flat -highlightthickness 0]
pack $frmCat -side left -fill y -fill both
#set frmWork [frame .frmBody.frmWork -border 1 -relief sunken -bg $editor(bg)]
set frmWork [frame .frmBody.frmWork -border 0 -relief flat -highlightthickness 0]
pack $frmWork -side left -fill both -expand true
## CREATE PANE ##
pane::create .frmBody.frmCat .frmBody.frmWork -percent 0.20
# NoteBook - Projects and Files
#################### WORKING AREA ####################
set noteBookFiles [NoteBook $frmCat.noteBook -font $fontNormal -side top -bg $editor(bg) -fg $editor(fg) \
-activebackground $editor(bg) -activeforeground $editor(fg)]
pack $noteBookFiles -fill both -expand true -padx 2 -pady 2
set nbProjects [$noteBookFiles insert end projects -text [::msgcat::mc "Projects"] \
-activebackground $editor(bg) -activeforeground $editor(fg)]
set nbFiles [$noteBookFiles insert end files -text [::msgcat::mc "Files"] \
-activebackground $editor(bg) -activeforeground $editor(fg)]
#set frmButtonBoxTreeProj [frame $nbFiles.frmButtonBoxTreeProj]
#pack $frmButtonBoxTreeProj -side top -fill both -expand true
set bBoxProjectTree [ButtonBox $nbProjects.bboxProjectTree -spacing 0 -padx 1 -pady 1 -bg $editor(bg)]
#add_toolbar_button $bBoxProjectTree new_project.png {NewProj new "" ""} [::msgcat::mc "New project"]
#add_toolbar_button $bBoxProjectTree del_project.png DelProj [::msgcat::mc "Delete project"]
add_toolbar_button $bBoxProjectTree project_settings.png {NewProj edit $activeProject ""} [::msgcat::mc "Project settings"]
add_toolbar_button $bBoxProjectTree sort.png {SortTree [$noteBookFiles raise]} [::msgcat::mc "Sort tree"]
pack $bBoxProjectTree -side top -pady 4 -anchor w
# Create FileTree
#FileTree::create $nbFiles
set frmTreeFiles [ScrolledWindow $nbFiles.frmTreeFiles -bd 0 -bg $editor(bg) -background $editor(bg)]
set treeFiles [
Tree $frmTreeFiles.treeFiles \
-relief sunken -borderwidth 0 -width 5 -highlightthickness 1\
-redraw 0 -dropenabled 1 -dragenabled 1 -dragevent 3 \
-background $editor(bg) -selectbackground $editor(selectbg) -selectforeground white\
-droptypes {
TREE_NODE {copy {} move {} link {}}
LISTBOX_ITEM {copy {} move {} link {}}
} -opencmd {TreeOpen} \
-closecmd {TreeClose}
]
$frmTreeFiles setwidget $treeFiles
pack $frmTreeFiles -side top -fill both -expand true
$treeFiles bindText <ButtonPress-1> "TreeOneClick $treeFiles [$treeFiles selection get]"
$treeFiles bindImage <ButtonPress-1> "TreeOneClick $treeFiles [$treeFiles selection get]"
$treeFiles bindImage <Double-ButtonPress-1> "TreeDoubleClick $treeFiles [$treeFiles selection get]"
$treeFiles bindText <Double-ButtonPress-1> "TreeDoubleClick $treeFiles [$treeFiles selection get]"
GetAllDirs $treeFiles
$treeFiles bindText <Shift-Button-1> {$treeFiles selection add $treeFiles [$treeFiles selection get]}
# Added menu
GetMenuFileTree [menu .popMenuFileTree -bg $editor(bg) -fg $editor(fg)] ;# pop-up edit menu
bind $frmTreeFiles.treeFiles.c <Button-3> {catch [PopupMenuFileTree $treeFiles %X %Y]}
# Create Project tree
set frmTree [ScrolledWindow $nbProjects.frmTree -bd 0 -bg $editor(bg)]
global tree noteBook
set tree [Tree $frmTree.tree \
-relief sunken -borderwidth 0 -width 3 -height 5 -highlightthickness 1\
-redraw 0 -dropenabled 1 -dragenabled 1 -dragevent 3 \
-background $editor(bg) -selectbackground $editor(selectbg) -selectforeground white\
-droptypes {
TREE_NODE {copy {} move {} link {}}
LISTBOX_ITEM {copy {} move {} link {}}
} -opencmd {TreeOpen} -closecmd {TreeClose}]
$frmTree setwidget $tree
pack $frmTree -side top -fill both -expand true
$noteBookFiles raise projects
$tree bindText <Double-ButtonPress-1> "TreeDoubleClick $tree [$tree selection get]"
$tree bindText <ButtonPress-1> "TreeOneClick $tree [$tree selection get]"
$tree bindImage <Double-ButtonPress-1> "TreeDoubleClick $tree [$tree selection get]"
$tree bindImage <ButtonPress-1> "TreeOneClick $tree [$tree selection get]"
$tree bindText <Shift-Button-1> {$tree selection add [$tree selection get]}
bind $frmTree.tree.c <Control-acircumflex> {FileDialog [$noteBookFiles raise] delete}
bind $frmTree.tree.c <Control-d> {FileDialog [$noteBookFiles raise] delete}
bind $frmTree.tree.c <Return> {
set node [$tree selection get]
TreeOneClick $tree $node
TreeDoubleClick $tree $node
}
$noteBookFiles bindtabs <ButtonRelease-1> "FileNotePageRaise [$noteBookFiles raise]"
## POPUP FILE-MENU ##
set m .popupFile
menu $m -font $fontNormal -bg $editor(bg) -fg $editor(fg)
$m add command -label [::msgcat::mc "New file"] -command {AddToProjDialog file [$noteBookFiles raise]}\
-font $fontNormal -accelerator "Ctrl+N"
$m add command -label [::msgcat::mc "New directory"] -command {AddToProjDialog directory [$noteBookFiles raise]}\
-font $fontNormal -accelerator "Alt + Ctrl+N"
$m add command -label [::msgcat::mc "Open"] -command {FileDialog [$noteBookFiles raise] open}\
-font $fontNormal -accelerator "Ctrl+O" -state disable
$m add command -label [::msgcat::mc "Save"] -command {FileDialog [$noteBookFiles raise] save}\
-font $fontNormal -accelerator "Ctrl+S"
$m add command -label [::msgcat::mc "Save as"] -command {FileDialog [$noteBookFiles raise] save_as}\
-font $fontNormal -accelerator "Ctrl+A"
$m add command -label [::msgcat::mc "Save all"] -command {FileDialog [$noteBookFiles raise] save_all}\
-font $fontNormal
$m add command -label [::msgcat::mc "Close"] -command {FileDialog [$noteBookFiles raise] close}\
-font $fontNormal -accelerator "Ctrl+W"
$m add command -label [::msgcat::mc "Close all"] -command {FileDialog [$noteBookFiles raise] close_all}\
-font $fontNormal
$m add command -label [::msgcat::mc "Delete"] -command {FileDialog [$noteBookFiles raise] delete}\
-font $fontNormal -accelerator "Ctrl+D"
$m add separator
$m add command -label [::msgcat::mc "Compile file"] -command {MakeProj compile file} \
-font $fontNormal -accelerator "Ctrl+F8"
$m add command -label [::msgcat::mc "Run file"] -command {MakeProj run file} -font $fontNormal \
-accelerator "Ctrl+F9"
$m add separator
$m add command -label [::msgcat::mc "Add to existing project"] -command {AddToProjDialog "" [$noteBookFiles raise]} \
-font $fontNormal -state disable
$m add command -label [::msgcat::mc "Add as new project"] -command {OpenProj [$noteBookFiles raise]} -font $fontNormal
## POPUP PROJECT-MENU ##
set m [menu .popupProj -font $fontNormal -bg $editor(bg) -fg $editor(fg)]
GetProjMenu $m
## TABS popups ##
set m .popupTabs
menu $m -font $fontNormal -bg $editor(bg) -fg $editor(fg)
$m add command -label [::msgcat::mc "Close"] -command {FileDialog [$noteBookFiles raise] close}\
-font $fontNormal -accelerator "Ctrl+W"
$m add command -label [::msgcat::mc "Close all"] -command {FileDialog [$noteBookFiles raise] close_all}\
-font $fontNormal
bind $frmTree.tree.c <Button-3> {catch [PopupMenuTree %X %Y]}
######### DEDERER: bind Wheel Scroll ##################
bind $frmTree.tree.c <Button-4> "$tree yview scroll -3 units"
bind $frmTree.tree.c <Button-5> "$tree yview scroll 3 units"
bind $frmTree.tree.c <Shift-Button-4> "$tree xview scroll -2 units"
bind $frmTree.tree.c <Shift-Button-5> "$tree xview scroll 2 units"
#################### WORKING AREA ####################
set noteBook [NoteBook $frmWork.noteBook -font $fontNormal -side top -bg $editor(bg) -fg $editor(fg)]
pack $noteBook -fill both -expand true -padx 2 -pady 2
$noteBook bindtabs <ButtonRelease-1> "PageRaise $tree [$noteBook raise]"
$noteBook bindtabs <Button-3> {catch [PopupMenuTab .popupTabs %X %Y]}
#bind . <Control-udiaeresis> PageTab
#bind . <Control-M> PageTab
bind . <Control-Next> {PageTab 1}
bind . <Control-Prior> {PageTab -1}
##################################################
CreateToolBar
GetProj $tree
$tree configure -redraw 1
set activeProject ""
focus -force $tree
# Opened last active project
if {[info exists workingProject]} {
if {$workingProject ne ""} {
.frmBody.frmCat.noteBook.fprojects.frmTree.tree opentree $workingProject
}
}

View File

@@ -1,185 +1,64 @@
######################################################
# Tcl/Tk Project Manager
#!/usr/bin/wish
######################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin banzaj28@yandex.ru
# Copyright (c) "https://nuk-svk.ru", 2018, https://bitbucket.org/svk28/projman
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "", 2022, https://nuk-svk.ru
######################################################
#
# Menu file
#
# Generate menu module
######################################################
proc PopupMenuTab {menu x y} {
tk_popup $menu $x $y
}
# File tree pop-up menu
proc GetMenuFileTree {m} {
global fontNormal
}
# Project menu
proc GetProjMenu {m} {
global fontNormal
$m add command -label [::msgcat::mc "Project settings"] -command {NewProj edit $activeProject ""}\
-font $fontNormal
$m add separator
$m add command -label [::msgcat::mc "Open project"] -command {OpenProj "projects"} -font $fontNormal
$m add command -label [::msgcat::mc "New project"] -command {NewProj new "" ""} -font $fontNormal
$m add command -label [::msgcat::mc "Delete project"] -command DelProj -font $fontNormal
$m add separator
$m add command -label [::msgcat::mc "Add to project"] \
-command {AddToProjDialog ""} -font $fontNormal -state disable
$m add command -label [::msgcat::mc "Delete from project"]\
-command {FileDialog delete} -font $fontNormal -state disable
$m add separator
$m add command -label [::msgcat::mc "Make archive"] -command MakeTGZ -font $fontNormal -accelerator "F7"
$m add command -label [::msgcat::mc "Make RPM"] -command MakeRPM -font $fontNormal -accelerator "F6"
$m add separator
$m add command -label [::msgcat::mc "Compile"] -command {MakeProj compile proj} -font $fontNormal -accelerator "F8"
$m add command -label [::msgcat::mc "Run"] -command {MakeProj run proj} -font $fontNormal -accelerator "F9"
}
# Edit menu
proc GetMenu {m} {
global fontNormal fontBold imgDir editor
$m add command -label [::msgcat::mc "Undo"] -font $fontNormal -accelerator "Ctrl+Z"\
-state normal -command {TextOperation undo}
$m add command -label [::msgcat::mc "Redo"] -font $fontNormal -accelerator "Ctrl+G"\
-state normal -command {TextOperation redo}
$m add separator
$m add command -label [::msgcat::mc "Procedure name complit"] -font $fontNormal -accelerator "Ctrl+J" -state normal\
-command {
set nb "$noteBook.f[$noteBook raise]"
auto_completition_proc $nb.text
unset nb
}
$m add separator
$m add command -label [::msgcat::mc "Copy"] -font $fontNormal -accelerator "Ctrl+C"\
-command {TextOperation copy}
$m add command -label [::msgcat::mc "Paste"] -font $fontNormal -accelerator "Ctrl+V"\
-command {TextOperation paste}
$m add command -label [::msgcat::mc "Cut"] -font $fontNormal -accelerator "Ctrl+X"\
-command {TextOperation cut}
$m add separator
$m add command -label [::msgcat::mc "Select all"] -font $fontNormal -accelerator "Ctrl+/"\
-command {
set nb [$noteBook raise]
if {$nb == "" || $nb == "newproj" || $nb == "about" || $nb == "debug"} {
return
}
set nb "$noteBook.f$nb"
SelectAll $nb.text
unset nb
}
$m add command -label [::msgcat::mc "Comment selected"] -font $fontNormal -accelerator "Ctrl+,"\
-command {TextOperation comment}
$m add command -label [::msgcat::mc "Uncomment selected"] -font $fontNormal -accelerator "Ctrl+." \
-command {TextOperation uncomment}
$m add separator
$m add command -label [::msgcat::mc "Goto line"] -command GoToLine -font $fontNormal -accelerator "Ctrl+g"
$m add separator
$m add command -label [::msgcat::mc "Find"] -command Find -font $fontNormal -accelerator "Ctrl+F"
$m add command -label [::msgcat::mc "Replace"] -command ReplaceDialog -font $fontNormal\
-accelerator "Ctrl+R"
$m add cascade -label [::msgcat::mc "Encode"] -menu $m.encode -font $fontNormal
set me [menu $m.encode -bg $editor(bg) -fg $editor(fg)]
$me add command -label [::msgcat::mc "KOI8-R"] -command {TextEncode koi8-r} -font $fontNormal
$me add command -label [::msgcat::mc "CP1251"] -command {TextEncode cp1251} -font $fontNormal
$me add command -label [::msgcat::mc "CP866"] -command {TextEncode cp866} -font $fontNormal
$m add separator
$m add command -label [::msgcat::mc "Insert image"] -font $fontNormal -accelerator "Ctrl+I" \
-command {
set nb [$noteBook raise]
if {$nb == "" || $nb == "newproj" || $nb == "about" || $nb == "debug"} {
return
}
set nb "$noteBook.f$nb"
ImageBase64Encode $nb.text
unset nb
}
}
proc GetViewMenu {m} {
global fontNormal fontBold imgDir editor
$m add checkbutton -label [::msgcat::mc "Show the Menu"] -font $fontNormal -state normal\
-offvalue "No" -onvalue "Yes" -variable showMenu -command {ToolBar}
$m add checkbutton -label [::msgcat::mc "Toolbar"] -font $fontNormal -state normal\
-offvalue "No" -onvalue "Yes" -variable toolBar -command {ToolBar}
$m add command -label [::msgcat::mc "Split edit window"] -font $fontNormal -accelerator "F4" -state disable\
-command SplitWindow
$m add separator
$m add command -label [::msgcat::mc "Refresh"] -font $fontNormal -accelerator "F5" -state normal\
-command UpdateTree
}
proc GetModulesMenu {m} {
global fontNormal fontBold imgDir editor module activeProject
if {[info exists module(tkcvs)]} {
$m add command -label "TkCVS" -command {DoModule tkcvs} -font $fontNormal
}
if {[info exists module(tkdiff)]} {
$m add command -label "TkDIFF+" -command {DoModule tkdiff} -font $fontNormal
}
if {[info exists module(tkregexp)]} {
$m add command -label "TkREGEXP" -command {DoModule tkregexp} -font $fontNormal
}
if {[info exists module(gitk)]} {
$m add command -label "Gitk" -font $fontNormal -command {
DoModule gitk
GetTagList [file join $workDir $activeProject.tags] ;# geting tag list
}
}
}
proc GetHelpMenu {m} {
global fontNormal fontBold imgDir editor
$m add command -label [::msgcat::mc "Help"] -command ShowHelp \
-accelerator F1 -font $fontNormal
$m add command -label [::msgcat::mc "About ..."] -command AboutDialog \
-font $fontNormal
}
proc GetFileMenu {m} {
global fontNormal fontBold imgDir editor noteBookFiles noteBook
$m add cascade -label [::msgcat::mc "New"] -menu $m.new -font $fontNormal
set mn [menu $m.new -bg $editor(bg) -fg $editor(fg)]
$mn add command -label [::msgcat::mc "New file"] -command {AddToProjDialog file [$noteBookFiles raise]}\
-font $fontNormal -accelerator "Ctrl+N"
$mn add command -label [::msgcat::mc "New directory"] -command {AddToProjDialog directory [$noteBookFiles raise]}\
-font $fontNormal -accelerator "Ctrl+N"
$mn add command -label [::msgcat::mc "New project"] -command {NewProjDialog "new"}\
-font $fontNormal
$m add command -label [::msgcat::mc "New file"] -command Editor::New\
-accelerator "Ctrl+N"
$m add command -label [::msgcat::mc "Open file"] -accelerator "Ctrl+O" -command {
set filePath [FileOper::OpenDialog]
if {$filePath != ""} {
FileOper::Edit $filePath
}
}
$m add command -label [::msgcat::mc "Open folder"] -accelerator "Ctrl+K" -command {
set folderPath [FileOper::OpenFolderDialog]
if {$folderPath != ""} {
FileOper::ReadFolder $folderPath
}
}
$m add command -label [::msgcat::mc "Save file"] -command {FileOper::Save}\
-accelerator "Ctrl+S"
#$m add command -label [::msgcat::mc "Open"] -command {FileDialog $tree open}\
#-font $fontNormal -accelerator "Ctrl+O" -state disable
$m add command -label [::msgcat::mc "Save"] -command {FileDialog [$noteBookFiles raise] save}\
-font $fontNormal -accelerator "Ctrl+S"
$m add command -label [::msgcat::mc "Save as"] -command {FileDialog [$noteBookFiles raise] save_as}\
-font $fontNormal
$m add command -label [::msgcat::mc "Save all"] -command {FileDialog [$noteBookFiles raise] save_all}\
-font $fontNormal
$m add command -label [::msgcat::mc "Close"] -command {FileDialog [$noteBookFiles raise] close}\
-font $fontNormal -accelerator "Ctrl+W"
$m add command -label [::msgcat::mc "Close all"] -command {FileDialog [$noteBookFiles raise] close_all}\
-font $fontNormal
$m add command -label [::msgcat::mc "Delete"] -command {FileDialog [$noteBookFiles raise] delete}\
-font $fontNormal -accelerator "Ctrl+D"
$m add separator
$m add command -label [::msgcat::mc "Compile file"] -command {MakeProj compile file} -font $fontNormal -accelerator "Ctrl+F8"
$m add command -label [::msgcat::mc "Run file"] -command {MakeProj run file} -font $fontNormal -accelerator "Ctrl+F9"
$m add separator
$m add command -label [::msgcat::mc "Print"] -command PrintDialog\
-font $fontNormal -accelerator "Ctrl+P"
$m add separator
$m add command -label [::msgcat::mc "Settings"] -command {Settings $noteBook} -font $fontNormal
$m add separator
$m add command -label [::msgcat::mc "Exit"] -command Quit -font $fontNormal -accelerator "Ctrl+Q"
$m add command -label [::msgcat::mc "Exit"] -command Quit -accelerator "Ctrl+Q"
}
proc GetEditMenu {m} {
$m add command -label [::msgcat::mc "Undo"] -command Undo\
-accelerator "Ctrl+Z"
$m add command -label [::msgcat::mc "Redo"] -command Redo\
-accelerator "Ctrl+Y"
$m add separator
$m add command -label [::msgcat::mc "Copy"] -command Copy\
-accelerator "Ctrl+C"
$m add command -label [::msgcat::mc "Paste"] -command Paste\
-accelerator "Ctrl+V"
$m add command -label [::msgcat::mc "Cut"] -command Cut\
-accelerator "Ctrl+Z"
$m add separator
$m add command -label [::msgcat::mc "Find"] -command Find\
-accelerator "Ctrl+F"
$m add command -label [::msgcat::mc "Replace"] -command Replace\
-accelerator "Ctrl+R"
$m add separator
$m add command -label [::msgcat::mc "Find in files"] -command File::Find\
-accelerator "Ctrl+Shift+F"
$m add command -label [::msgcat::mc "Replace in files"] -command File::Replace\
-accelerator "Ctrl+Shift+RV"
}
proc GetViewMenu {m} {
$m add command -label [::msgcat::mc "View files tree"] -command ViewFilesTree
$m add command -label [::msgcat::mc "View line numbers"] -command ViewLineNumbers
}

133
lib/msgs/de.msg Normal file
View File

@@ -0,0 +1,133 @@
###########################################################
# Tcl/Tk Project Manager #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
# german messages file #
# Author: Roman Schaller <r.schaller@gmx.ch> #
###########################################################
::msgcat::mcset de "About ..." "<22>ber ..."
::msgcat::mcset de "Add to project" "Zu Projekt hinzuf<75>gen"
::msgcat::mcset de "Author" "Autor"
::msgcat::mcset de "Text autoformat" "Text autoformat"
::msgcat::mcset de "Cancel" "Abbrechen"
::msgcat::mcset de "Can't found file:" "Datei nicht gefunden:"
::msgcat::mcset de "Close" "Schliessen"
::msgcat::mcset de "Close all" "Alles Schliessen"
::msgcat::mcset de "Close Project Manager?" "Project Manager Schliessen?"
::msgcat::mcset de "Company" "Firma"
::msgcat::mcset de "Contents" "Inhalt"
::msgcat::mcset de "Copy" "Kopieren"
::msgcat::mcset de "Copy into clipboard" "In Zwischenablage kopieren"
::msgcat::mcset de "Create backup files" "Backup-Dateien erstellen"
::msgcat::mcset de "Create new project" "Neuse Projekt erstellen"
::msgcat::mcset de "Create new file" "Neue Datei erstellen"
::msgcat::mcset de "Create directory" "Verzeichnis erstelle"
::msgcat::mcset de "Curent directory" "Aktuelles Verzeichnis"
::msgcat::mcset de "Cut" "Ausschneiden"
::msgcat::mcset de "Cut into clipboard" "In Zwischenablage ausschneiden"
::msgcat::mcset de "CVS commit"
::msgcat::mcset de "CVS update"
::msgcat::mcset de "Delete" "L<>schen"
::msgcat::mcset de "Delete backup files" "Backup-Dateien l<>schen"
::msgcat::mcset de "Delete project" "Projekt l<>schen"
::msgcat::mcset de "Delete from project" "Von Projekt entfernen"
::msgcat::mcset de "Docs dir" "Dok Verzeichnis"
::msgcat::mcset de "Don't selected file"
::msgcat::mcset de "E-mail"
::msgcat::mcset de "Edit" "Bearbeiten"
::msgcat::mcset de "Editor font" "Editor Schriftart"
::msgcat::mcset de "Editor font bold Editor Schriftart fett"
::msgcat::mcset de "Error open URL"
::msgcat::mcset de "Exit" "Beenden"
::msgcat::mcset de "File" "Datei"
::msgcat::mcset de "File already exists. Overwrite?" "Datei besteht bereits. <20>berschreiben?"
::msgcat::mcset de "File modify" "Datei bearbeiten"
::msgcat::mcset de "File was modifyed. Close?" "Datei wurde ge<67>ndert. Trotzdem schliessen?"
::msgcat::mcset de "File was modifyed. Save?" "Datei wurde ge<67>ndert. Jetzt speichern?"
::msgcat::mcset de "File saved" "Datei gespeichert"
::msgcat::mcset de "Find" "Suchen"
::msgcat::mcset de "Font normal" "Schrift normal"
::msgcat::mcset de "Font bold" "Schrift fett"
::msgcat::mcset de "Goto line" "Gehezu Zeile"
::msgcat::mcset de "Help" "Hilfe"
::msgcat::mcset de "Home dir" "Home Verzeichnis"
::msgcat::mcset de "Home page" "Homepage"
::msgcat::mcset de "Image dir" "Image Verzeichnis"
::msgcat::mcset de "Insert" "Einf<6E>gen"
::msgcat::mcset de "Interface language" "Interface Sprache"
::msgcat::mcset de "Install Tcl/Tk Project Manager" "Tcl/Tk Project Manager installieren"
::msgcat::mcset de "Line number" "Zeilennummer"
::msgcat::mcset de "Make RPM" "RPM erstellen"
::msgcat::mcset de "Make archive" "Archiv erstellen"
::msgcat::mcset de "Make backup files" "Backup-Dateien erstellen"
::msgcat::mcset de "Must be one file select!" "Eine Datei muss ausgew<65>hlt sein!"
::msgcat::mcset de "Must be one or two file select!" "Eine oder zwei Dateien m<>ssen ausgew<65>hlt sein!"
::msgcat::mcset de "Modifying the Registry..."
::msgcat::mcset de "Modules" "Module"
::msgcat::mcset de "New" "Neu"
::msgcat::mcset de "New file" "Neue Datei"
::msgcat::mcset de "New project" "Neues Projekt"
::msgcat::mcset de "Not implemented yet" "Noch nicht implementiert"
::msgcat::mcset de "Not found active project" "Kein aktives Projekt gefunden"
::msgcat::mcset de "Open" "<22>ffnen"
::msgcat::mcset de "Open file" "Datei <20>ffnen"
::msgcat::mcset de "Open project" "Projekt <20>ffnen"
::msgcat::mcset de "Opened file in progress" "Ge<47>ffnete Datei in Bearbeitung"
::msgcat::mcset de "Overwrite" "<22>berschreiben"
::msgcat::mcset de "Paste" "Einf<6E>gen"
::msgcat::mcset de "Paste from clipboard" "Von Zwischenablage einf<6E>gen"
::msgcat::mcset de "Print ..." "Drucken ..."
::msgcat::mcset de "Print" "Drucken"
::msgcat::mcset de "Print command" "Druck-Befehl"
::msgcat::mcset de "Print selected text" "Markierter Text drucken"
::msgcat::mcset de "Program finished successfully" "Programm wurde erfolgreich beendet"
::msgcat::mcset de "Program failed" "Ausf<73>hrung fehlgeschlagen"
::msgcat::mcset de "Programm output" "Programm Ausgabe"
::msgcat::mcset de "Project" "Projekt"
::msgcat::mcset de "Projects" "Projekte"
::msgcat::mcset de "Project settings" "Projekt einstellungen"
::msgcat::mcset de "Project name" "Projekt-Name"
::msgcat::mcset de "Project file" "Projekt-Datei"
::msgcat::mcset de "Project dir" "Projekt-Verzeichnis"
::msgcat::mcset de "Question" "Frage"
::msgcat::mcset de "Quit without saving?" "Beenden ohne zu speichern?"
::msgcat::mcset de "Redo" "Wiederherstellen"
::msgcat::mcset de "Refresh" "Auffrischen"
::msgcat::mcset de "Replace" "Ersetzen"
::msgcat::mcset de "Replace with" "Ersetzen mit"
::msgcat::mcset de "Replace all" "Alles ersetzen"
::msgcat::mcset de "Release"
::msgcat::mcset de "RPM dir" "RPM Verzeichnis"
::msgcat::mcset de "RPM file mask" "RPM Datei Maske"
::msgcat::mcset de "Run" "Ausf<73>hren"
::msgcat::mcset de "Running project" "Projekt ausf<73>hren"
::msgcat::mcset de "Running file"
::msgcat::mcset de "Save" "Speichern"
::msgcat::mcset de "Save as" "Speichern unter"
::msgcat::mcset de "Save file" "Datei speichern"
::msgcat::mcset de "Save file as" "Datei speichern unter"
::msgcat::mcset de "Save all" "Alles speichern"
::msgcat::mcset de "Search" "Suchen"
::msgcat::mcset de "Select" "Ausw<73>hlen"
::msgcat::mcset de "Select directory" "Verzeichnis ausw<73>hlen"
::msgcat::mcset de "Selected directory" "Ausgew<65>hltes Verzeichnis"
::msgcat::mcset de "Settings" "Einstellungen"
::msgcat::mcset de "Show backup files" "Backup-Dateien anzeigen"
::msgcat::mcset de "Interpretator" "Interpreter"
::msgcat::mcset de "TGZ dir" "TGZ Verzeichnis"
::msgcat::mcset de "TGZ file mask" "TGZ Datei Maske"
::msgcat::mcset de "Thanks" "Danksagung"
::msgcat::mcset de "Toolbar" "Symbolleiste"
::msgcat::mcset de "Undo" "R<>ckg<6B>ngig"
::msgcat::mcset de "Update"
::msgcat::mcset de "Version"
::msgcat::mcset de "View" "Ansicht"
::msgcat::mcset de "Warning" "Warnung"
::msgcat::mcset de "Was replacement"
::msgcat::mcset de "Work dir" "Arbeitsverzeichnis"

188
lib/msgs/en.msg Normal file
View File

@@ -0,0 +1,188 @@
###########################################################
# Tcl/Tk Project Manager #
# english messages file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
::msgcat::mcset en "About ..."
::msgcat::mcset en "Add as new project"
::msgcat::mcset en "Add to existing project"
::msgcat::mcset en "Add to project"
::msgcat::mcset en "Archive dir"
::msgcat::mcset en "Archive file mask"
::msgcat::mcset en "Author"
::msgcat::mcset en "Braces"
::msgcat::mcset en "Quad braces"
::msgcat::mcset en "Braces background"
::msgcat::mcset en "Braces foreground"
::msgcat::mcset en "Cancel"
::msgcat::mcset en "Can't found file:"
::msgcat::mcset en "Close"
::msgcat::mcset en "Close all"
::msgcat::mcset en "Close Project Manager?"
::msgcat::mcset en "Comments"
::msgcat::mcset en "Comment selected"
::msgcat::mcset en "Uncomment selected"
::msgcat::mcset en "Company"
::msgcat::mcset en "Compiler"
::msgcat::mcset en "Compile"
::msgcat::mcset en "Compile project"
::msgcat::mcset en "Compile file"
::msgcat::mcset en "Contents"
::msgcat::mcset en "Copy"
::msgcat::mcset en "Copy into clipboard"
::msgcat::mcset en "Create backup files"
::msgcat::mcset en "Create new project"
::msgcat::mcset en "Create new file"
::msgcat::mcset en "Create directory"
::msgcat::mcset en "Curent directory"
::msgcat::mcset en "Cut"
::msgcat::mcset en "Cut into clipboard"
::msgcat::mcset en "CVS commit"
::msgcat::mcset en "CVS update"
::msgcat::mcset en "Delete"
::msgcat::mcset en "Delete backup files"
::msgcat::mcset en "Delete project"
::msgcat::mc "with all files"
::msgcat::mc "If press \"Yes\" will deleted all files!"
::msgcat::mc "If press \"No\" will deleted only proj-file"
::msgcat::mcset en "Delete from project"
::msgcat::mcset en "Docs dir"
::msgcat::mcset en "Don't selected file"
::msgcat::mcset en "E-mail"
::msgcat::mcset en "Edit"
::msgcat::mcset en "Editor"
::msgcat::mcset en "Editor background"
::msgcat::mcset en "Editor foreground"
::msgcat::mcset en "Editor font"
::msgcat::mcset en "Editor font bold"
::msgcat::mcset en "Error open URL"
::msgcat::mcset en "Editor settings"
::msgcat::mcset en "Exit"
::msgcat::mcset en "File"
::msgcat::mcset en "File already exists. Overwrite?"
::msgcat::mcset en "File modify"
::msgcat::mcset en "File was modifyed. Close?"
::msgcat::mcset en "File was modifyed. Save?"
::msgcat::mcset en "File saved"
::msgcat::mcset en "Files"
::msgcat::mcset en "Find"
::msgcat::mcset en "Font normal"
::msgcat::mcset en "Font bold"
::msgcat::mcset en "FTP server"
::msgcat::mcset en "FTP user"
::msgcat::mcset en "FTP password"
::msgcat::mcset en "Goto line"
::msgcat::mcset en "Help"
::msgcat::mcset en "Home dir"
::msgcat::mcset en "Home page"
::msgcat::mcset en "Image dir"
::msgcat::mcset en "Indent foreground"
::msgcat::mcset en "Indent background"
::msgcat::mcset en "Interface language"
::msgcat::mcset en "Insert image"
::msgcat::mcset en "Install Tcl/Tk Project Manager"
::msgcat::mcset en "Input file name"
::msgcat::mcset en "Key bindings"
::msgcat::mcset en "Label"
::msgcat::mcset en "Language"
::msgcat::mcset en "Line number"
::msgcat::mcset en "Main"
::msgcat::mcset en "Make RPM"
::msgcat::mcset en "Make archive"
::msgcat::mcset en "Make backup files"
::msgcat::mcset en "Main settings"
::msgcat::mcset en "Modifying the Registry..."
::msgcat::mcset en "Must be one file select!"
::msgcat::mcset en "Must be one or two file select!"
::msgcat::mcset en "Modules"
::msgcat::mcset en "Network"
::msgcat::mcset en "New"
::msgcat::mcset en "New directory"
::msgcat::mcset en "New file"
::msgcat::mcset en "New project"
::msgcat::mcset en "Not implemented yet"
::msgcat::mcset en "Not found active project"
::msgcat::mcset en "Open"
::msgcat::mcset en "Open file"
::msgcat::mcset en "Open project"
::msgcat::mcset en "Opened file in progress"
::msgcat::mcset en "Operators"
::msgcat::mcset en "Overwrite"
::msgcat::mcset en "Parameters"
::msgcat::mcset en "Subparameters"
::msgcat::mcset en "Paste"
::msgcat::mcset en "Paste from clipboard"
::msgcat::mcset en "Percent"
::msgcat::mcset en "Print ..."
::msgcat::mcset en "Print"
::msgcat::mcset en "Print command"
::msgcat::mcset en "Print selected text"
::msgcat::mcset en "Program finished successfully"
::msgcat::mcset en "Procedure name"
::msgcat::mcset en "Procedure name complit"
::msgcat::mcset en "Program failed"
::msgcat::mcset en "Programm output"
::msgcat::mcset en "Project"
::msgcat::mcset en "Projects"
::msgcat::mcset en "Project settings"
::msgcat::mcset en "Project name"
::msgcat::mcset en "Project file"
::msgcat::mcset en "Project dir"
::msgcat::mcset en "Project type"
::msgcat::mcset en "Question"
::msgcat::mcset en "Quit without saving?"
::msgcat::mcset en "Quote string"
::msgcat::mcset en "Redo"
::msgcat::mcset en "Refresh"
::msgcat::mcset en "Replace"
::msgcat::mcset en "Replace with"
::msgcat::mcset en "Replace all"
::msgcat::mcset en "Release"
::msgcat::mcset en "RPM directory"
::msgcat::mcset en "RPM file mask"
::msgcat::mcset en "Run"
::msgcat::mcset en "Running project"
::msgcat::mcset en "Running file"
::msgcat::mcset en "Run file"
::msgcat::mcset en "Save"
::msgcat::mcset en "Save as"
::msgcat::mcset en "Save file"
::msgcat::mcset en "Save file as"
::msgcat::mcset en "Save all"
::msgcat::mcset en "Search"
::msgcat::mcset en "Select"
::msgcat::mcset en "Select all"
::msgcat::mcset en "Select directory"
::msgcat::mcset en "Selected directory"
::msgcat::mcset en "Selection color"
::msgcat::mcset en "Settings"
::msgcat::mcset en "Show backup files"
::msgcat::mcset en "Show dot files"
::msgcat::mcset en "Show the Menu"
::msgcat::mcset en "Split edit window"
::msgcat::mcset en "SQL commands"
::msgcat::mcset en "Interpretator"
::msgcat::mcset en "Text autoformat"
::msgcat::mcset en "Thanks"
::msgcat::mcset en "Title normal"
::msgcat::mcset en "Title modify"
::msgcat::mcset en "Toolbar"
::msgcat::mcset en "Undo"
::msgcat::mcset en "Update"
::msgcat::mcset en "Variables"
::msgcat::mcset en "Version"
::msgcat::mcset en "View"
::msgcat::mcset en "Warning"
::msgcat::mcset en "Was replacement"
::msgcat::mcset en "Word wrapping"
::msgcat::mcset en "Work dir"

135
lib/msgs/fr.msg Normal file
View File

@@ -0,0 +1,135 @@
###########################################################
# Tcl/Tk Project Manager #
# french messages file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
# Traduction: Michel SALVAGNIAC michel.salvagniac@free.fr #
###########################################################
# french messages file #
# Author: Michel SALVAGNIAC <michel.salvagniac@free.fr> #
###########################################################
::msgcat::mcset fr "About ..." "A propos..."
::msgcat::mcset fr "Add to project" "Ajouter au projet"
::msgcat::mcset fr "Author" "Auteur"
::msgcat::mcset fr "Text autoformat" "Autoformatage du texte"
::msgcat::mcset fr "Cancel" "Annuler"
::msgcat::mcset fr "Can't found file:" "Ne peut trouver le fichier:"
::msgcat::mcset fr "Close" "Fermer"
::msgcat::mcset fr "Close all" "Tout fermer"
::msgcat::mcset fr "Close Project Manager?" "Fermer Project Manager?"
::msgcat::mcset fr "Company" "Compagnie"
::msgcat::mcset fr "Contents" "Contenu"
::msgcat::mcset fr "Copy" "Copier"
::msgcat::mcset fr "Copy into clipboard" "Copier dans le Presse-papiers"
::msgcat::mcset fr "Create backup files" "Créer une copie de sauvegarde"
::msgcat::mcset fr "Create new project" "Créer nouveau projet"
::msgcat::mcset fr "Create new file" "Créer nouveau fichier"
::msgcat::mcset fr "Create directory" "Créer répertoire"
::msgcat::mcset fr "Curent directory" "Répertoire courant"
::msgcat::mcset fr "Cut" "Couper"
::msgcat::mcset fr "Cut into clipboard" "Couper dans le Presse-papiers"
::msgcat::mcset fr "CVS commit" "Ecriture CVS"
::msgcat::mcset fr "CVS update" "Mise à jour CVS"
::msgcat::mcset fr "Delete" "Effacer"
::msgcat::mcset fr "Delete backup files" "Effacer les fichiers de sauvegarde"
::msgcat::mcset fr "Delete project" "Effacer projet"
::msgcat::mcset fr "Delete from project" "Effacer du projet"
::msgcat::mcset fr "Docs dir" "Répertoire de la doc"
::msgcat::mcset fr "Don't selected file" "Fichier non sélectionné"
::msgcat::mcset fr "E-mail" "E-mail"
::msgcat::mcset fr "Edit" "Editer"
::msgcat::mcset fr "Editor font" "Police"
::msgcat::mcset fr "Editor font bold" "Police gras"
::msgcat::mcset fr "Error open URL" "Erreur à l'ouverture de l'URL"
::msgcat::mcset fr "Exit" "Quitter"
::msgcat::mcset fr "File" "Fichier"
::msgcat::mcset fr "File already exists. Overwrite?" "Le fichier existe déja. Ecraser?"
::msgcat::mcset fr "File modify" "Modification de fichier"
::msgcat::mcset fr "File was modifyed. Close?" "Le fichier a été modifié. Fermer?"
::msgcat::mcset fr "File was modifyed. Save?" "Le fichier a été modifié. Enregistrer?"
::msgcat::mcset fr "File saved" "Fichier enregistré"
::msgcat::mcset fr "Find" "Trouver"
::msgcat::mcset fr "Font normal" "Police normale"
::msgcat::mcset fr "Font bold" "Police grasse"
::msgcat::mcset fr "Goto line" "Aller à la ligne"
::msgcat::mcset fr "Help" "Aide"
::msgcat::mcset fr "Home dir" "Répertoire Home"
::msgcat::mcset fr "Home page" "Page d'accueil"
::msgcat::mcset fr "Image dir" "Répertoire des images"
::msgcat::mcset fr "Insert" "Insérer"
::msgcat::mcset fr "Interface language" "Langage d'interface"
::msgcat::mcset fr "Install Tcl/Tk Project Manager" "Installer Tcl/Tk Project Manager"
::msgcat::mcset fr "Line number" "Ligne numéro"
::msgcat::mcset fr "Make RPM" "Construire RPM"
::msgcat::mcset fr "Make archive" "Construire archive"
::msgcat::mcset fr "Make backup files" "Faire des sauvegardes"
::msgcat::mcset fr "Must be one file select!" "Vous devez choisir un fichier!"
::msgcat::mcset fr "Must be one or two file select!" "Vous devez choisir un ou deux fichiers!"
::msgcat::mcset fr "Modifying the Registry..."
::msgcat::mcset fr "Modules" "Modules"
::msgcat::mcset fr "New" "Nouveau"
::msgcat::mcset fr "New file" "Nouveau fichier"
::msgcat::mcset fr "New project" "Nouveau projet"
::msgcat::mcset fr "Not implemented yet" "Pas encore implémenté..."
::msgcat::mcset fr "Not found active project" "Pas de projet actif"
::msgcat::mcset fr "Open" "Ouvrir"
::msgcat::mcset fr "Open file" "Ouvrir fichier"
::msgcat::mcset fr "Open project" "Ouvrir projet"
::msgcat::mcset fr "Opened file in progress" "Ouverture en cours"
::msgcat::mcset fr "Overwrite" "Ecraser"
::msgcat::mcset fr "Paste" "Coller"
::msgcat::mcset fr "Paste from clipboard" "Coller du Presse-papiers"
::msgcat::mcset fr "Print ..." "Imprimer..."
::msgcat::mcset fr "Print" "Imprimer"
::msgcat::mcset fr "Print command" "Commande d'impression"
::msgcat::mcset fr "Print selected text" "Imprimer le texte sélectionné"
::msgcat::mcset fr "Program finished successfully" "Programme terminé avec succès"
::msgcat::mcset fr "Program failed" "Programme a échoué"
::msgcat::mcset fr "Programm output" "Sortie du programme"
::msgcat::mcset fr "Project" "Projet"
::msgcat::mcset fr "Projects" "Projets"
::msgcat::mcset fr "Project settings" "Réglages du projet"
::msgcat::mcset fr "Project name" "Nom du projet"
::msgcat::mcset fr "Project file" "Fichier projet"
::msgcat::mcset fr "Project dir" "Répertoire du projet"
::msgcat::mcset fr "Question" "Question"
::msgcat::mcset fr "Quit without saving?" "Quitter sans sauvegarder?"
::msgcat::mcset fr "Redo" "Refaire"
::msgcat::mcset fr "Refresh" "Rafraichir"
::msgcat::mcset fr "Releace" "Remplacer"
::msgcat::mcset fr "Replace with" "Remplacer avec"
::msgcat::mcset fr "Replace all" "Remplacer tout"
::msgcat::mcset fr "Release" "Révision"
::msgcat::mcset fr "RPM dir" "Répertoire RPM"
::msgcat::mcset fr "RPM file mask" "fichiers RPM"
::msgcat::mcset fr "Run" "Executer"
::msgcat::mcset fr "Running project" "Exécute le projet"
::msgcat::mcset fr "Save" "Enregistrer"
::msgcat::mcset fr "Save as" "Enregistrer sous"
::msgcat::mcset fr "Save file" "Enregistrer fichier"
::msgcat::mcset fr "Save file as" "Enregistrer fichier sous"
::msgcat::mcset fr "Save all" "Tout enregistrer"
::msgcat::mcset fr "Search" "Rechercher"
::msgcat::mcset fr "Select" "Choisir"
::msgcat::mcset fr "Select directory" "Choisir un répertoire"
::msgcat::mcset fr "Selected directory" "Répertoire choisi"
::msgcat::mcset fr "Settings" "Paramètres"
::msgcat::mcset fr "Show backup files" "Montrer fichiers de sauvegarde"
::msgcat::mcset fr "Interpretator" "Interpréteur"
::msgcat::mcset fr "TGZ dir" "Répertoire TGZ"
::msgcat::mcset fr "TGZ file mask" "fichiers TGZ"
::msgcat::mcset fr "Thanks" "Remerciements"
::msgcat::mcset fr "Toolbar" "Barre d'outils"
::msgcat::mcset fr "Undo" "Défaire"
::msgcat::mcset fr "Update" "Mise à jour"
::msgcat::mcset fr "Version" "Version"
::msgcat::mcset fr "View" "Vue"
::msgcat::mcset fr "Warning" "Avertissement"
::msgcat::mcset fr "Was replacement" "A été remplacé"
::msgcat::mcset fr "Work dir" "Répertoire de travail"

192
lib/msgs/ru.msg Normal file
View File

@@ -0,0 +1,192 @@
###########################################################
# Tcl/Tk Project Manager #
# russian messages file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
::msgcat::mcset ru "About ..." "О программе"
::msgcat::mcset ru "Add as new project" "Добавить как Новый Проект"
::msgcat::mcset ru "Add to existing project" "Добавить в существующий проект"
::msgcat::mcset ru "Add to project" "Добавить в проект"
::msgcat::mcset ru "Archive created in" "Архив помещен в"
::msgcat::mcset ru "Archive directory" "Каталог c архивами"
::msgcat::mcset ru "Archive file mask" "Маска архива"
::msgcat::mcset ru "Author" "Автор"
::msgcat::mcset ru "Braces" "Скобки"
::msgcat::mcset ru "Quad braces" "Квадратные скобки"
::msgcat::mcset ru "Braces background" "Фон скобки"
::msgcat::mcset ru "Braces foreground" "Цвет скобки"
::msgcat::mcset ru "Cancel" "Отмена"
::msgcat::mcset ru "Can't found file:" "Не найден файл:"
::msgcat::mcset ru "Close" "Закрыть"
::msgcat::mcset ru "Close all" "Закрыть все"
::msgcat::mcset ru "Close Project Manager?" "Выйти из программы?"
::msgcat::mcset ru "Comments" "Коментарии"
::msgcat::mcset ru "Comment selected" "Закоментировать"
::msgcat::mcset ru "Uncomment selected" "Раскоментировать"
::msgcat::mcset ru "Company" "Компания"
::msgcat::mcset ru "Compiler" "Компилятор"
::msgcat::mcset ru "Compile" "Компиляция"
::msgcat::mcset ru "Compile project" "Компиляция проекта"
::msgcat::mcset ru "Compile file" "Компиляция файла"
::msgcat::mcset ru "Contents" "Содержание"
::msgcat::mcset ru "Copy" "Скопировать"
::msgcat::mcset ru "Copy into clipboard" "Скопировать в буфер"
::msgcat::mcset ru "Create" "Создать"
::msgcat::mcset ru "Create new project" "Создать новый проект"
::msgcat::mcset ru "Create new file" "Создать новый файл"
::msgcat::mcset ru "Create directory" "Создать директорию"
::msgcat::mcset ru "Create backup files" "Создавать временные файлы"
::msgcat::mcset ru "Curent directory" "Текущий каталог"
::msgcat::mcset ru "Cut" "Вырезать"
::msgcat::mcset ru "Cut into clipboard" "Вырезать в буфер"
::msgcat::mcset ru "CVS commit" "Поместить в CVS"
::msgcat::mcset ru "CVS update" "Обновить из CVS"
::msgcat::mcset ru "Delete" "Удалить"
::msgcat::mcset ru "Delete file" "Удалить файл"
::msgcat::mcset ru "Delete backup files" "Удалять временные файлы"
::msgcat::mcset ru "Delete project" "Удалить проект"
::msgcat::mcset ru "with all files" "вместе с файлами"
::msgcat::mcset ru "If press \"Yes\" will deleted all files!" "Если нажать \"Да\" будут удалены все файлы"
::msgcat::mcset ru "If press \"No\" will deleted only proj-file" "Если нажать \"Нет\" будет удалён только файл проекта"
::msgcat::mcset ru "Delete from project" "Удалить из проекта"
::msgcat::mcset ru "Docs dir" "Каталог документации"
::msgcat::mcset ru "Don't selected file" "Не определен файл"
::msgcat::mcset ru "E-mail" "Эл. почта"
::msgcat::mcset ru "Edit" "Редактирование"
::msgcat::mcset ru "Editor" "Редактор"
::msgcat::mcset ru "Editor background" "Цвет фона"
::msgcat::mcset ru "Editor foreground" "Цвет шрифта"
::msgcat::mcset ru "Editor font" "Шрифт редактора"
::msgcat::mcset ru "Editor font bold" "Шрифт редактора жирный"
::msgcat::mcset ru "Editor settings" "Настройки редактора"
::msgcat::mcset ru "Encode" "Перекодировка"
::msgcat::mcset ru "Error open URL" "Ошибка открытия URL"
::msgcat::mcset ru "Exit" "Выход"
::msgcat::mcset ru "File" "Файл"
::msgcat::mcset ru "Files" "Файлы"
::msgcat::mcset ru "File already exists. Overwrite?" "Файл уже существует. Переписать?"
::msgcat::mcset ru "File was modifyed. Close?" "Файл был изменен. Закрыть?"
::msgcat::mcset ru "File was modifyed. Save?" "Файл был изменен. Сохранить?"
::msgcat::mcset ru "File modify" "Файл изменен"
::msgcat::mcset ru "File saved" "Файл сохранен"
::msgcat::mcset ru "Find" "Найти"
::msgcat::mcset ru "Find in files" "Найти в файлах"
::msgcat::mcset ru "Font normal" "Нормальный шрифт"
::msgcat::mcset ru "Font bold" "Жирный шрифт"
::msgcat::mcset ru "FTP password" "FTP пароль"
::msgcat::mcset ru "FTP server" "FTP сервер"
::msgcat::mcset ru "FTP user" "FTP пользователь"
::msgcat::mcset ru "Goto line" "Перейти к ..."
::msgcat::mcset ru "Help" "Помощь"
::msgcat::mcset ru "Home dir" "Домашний каталог"
::msgcat::mcset ru "Home page" "Домашняя страница"
::msgcat::mcset ru "Image dir" "Каталог изображений"
::msgcat::mcset ru "Indent foreground" "Подсветка отступа"
::msgcat::mcset ru "Indent background" "Подсветка отступа"
::msgcat::mcset ru "Insert" "Вставка"
::msgcat::mcset ru "Insert image" "Вставить изображение"
::msgcat::mcset ru "Interface language" "Язык интерфейса"
::msgcat::mcset ru "Interpetator" "Интерпретатор"
::msgcat::mcset ru "Install Tcl/Tk Project Manager" "Установка Tcl/Tk Project Manager"
::msgcat::mcset ru "Input file name" "Введите имя файла"
::msgcat::mcset ru "Key bindings" "Назначения клавиш"
::msgcat::mcset ru "Label" "Метка"
::msgcat::mcset ru "Language" "Язык"
::msgcat::mcset ru "Line number" "Номер строки"
::msgcat::mcset ru "Make RPM" "Создать RPM"
::msgcat::mcset ru "Make archive" "Создать архив"
::msgcat::mcset ru "Make backup files" "Создавать временные файлы"
::msgcat::mcset ru "Main" "Общие"
::msgcat::mcset ru "Main settings" "Общие настройки"
::msgcat::mcset ru "Modules" "Модули"
::msgcat::mcset ru "Modifying the Registry..." "Внесение изменений в реестр"
::msgcat::mcset ru "Must be one file select!" "Вы должны выбрать только один файл"
::msgcat::mcset ru "Must be one or two file select!" "Вы должны выбрать один или два файла"
::msgcat::mcset ru "Network" "Сеть"
::msgcat::mcset ru "New" "Новый"
::msgcat::mcset ru "New directory" "Новый каталог"
::msgcat::mcset ru "New file" "Новый файл"
::msgcat::mcset ru "New project" "Новый проект"
::msgcat::mcset ru "Not implemented yet" "Данная функция пока не реализована"
::msgcat::mcset ru "Not found active project" "Не определен активный проект"
::msgcat::mcset ru "Open" "Открыть"
::msgcat::mcset ru "Open file" "Открыть файл"
::msgcat::mcset ru "Open folder" "Открыть папку"
::msgcat::mcset ru "Open project" "Открыть проект"
::msgcat::mcset ru "Opened file in progress" "Открытие файла"
::msgcat::mcset ru "Operators" "Операторы"
::msgcat::mcset ru "Overwrite" "Замена"
::msgcat::mcset ru "Parameters" "Параметры"
::msgcat::mcset ru "Subparameters" "Субпараметры"
::msgcat::mcset ru "Paste" "Вставить"
::msgcat::mcset ru "Paste from clipboard" "Вставить из буфера"
::msgcat::mcset ru "Percent" "Знак процента"
::msgcat::mcset ru "Print ..." "Печать ..."
::msgcat::mcset ru "Print" "Печать"
::msgcat::mcset ru "Print command" "Команда печати"
::msgcat::mcset ru "Print selected text" "Печатать выделенный текст"
::msgcat::mcset ru "Procedure name" "Имя процедуры"
::msgcat::mcset ru "Procedure name complit" "Автодобивка процедуры"
::msgcat::mcset ru "Program finished successfully" "Выполнение завершено"
::msgcat::mcset ru "Program failed" "Ошибка выполнения"
::msgcat::mcset ru "Programm output" "Вывод программы"
::msgcat::mcset ru "Project" "Проект"
::msgcat::mcset ru "Projects" "Проекты"
::msgcat::mcset ru "Project settings" "Установки проекта"
::msgcat::mcset ru "Project name" "Название проекта"
::msgcat::mcset ru "Project file" "Файл проекта"
::msgcat::mcset ru "Project dir" "Каталог проекта"
::msgcat::mcset ru "Project type" "Тип проекта"
::msgcat::mcset ru "Quit without saving?" "Выйти без сохранения?"
::msgcat::mcset ru "Question" "Вопрос"
::msgcat::mcset ru "Quote string" "Строка в кавычках"
::msgcat::mcset ru "Redo" "Повторить"
::msgcat::mcset ru "Refresh" "Обновить"
::msgcat::mcset ru "Replace" "Замена"
::msgcat::mcset ru "Replace in files" "Заменить в файлах"
::msgcat::mcset ru "Replace with" "Заменить на"
::msgcat::mcset ru "Replace all" "Заменить все"
::msgcat::mcset ru "Release" "Выпуск"
::msgcat::mcset ru "RPM directory" "Каталог RPM"
::msgcat::mcset ru "RPM file mask" "Маска RPM"
::msgcat::mcset ru "Run" "Выполнить"
::msgcat::mcset ru "Run file" "Запустить файл"
::msgcat::mcset ru "Running project" "Выполнение проекта"
::msgcat::mcset ru "Running file" "Выполнение файла"
::msgcat::mcset ru "Save" "Сохранить"
::msgcat::mcset ru "Save file" "Сохранить файл"
::msgcat::mcset ru "Save file as" "Сохранить файл как ..."
::msgcat::mcset ru "Save as" "Сохранить как ..."
::msgcat::mcset ru "Save all" "Сохранить все"
::msgcat::mcset ru "Search" "Поиск"
::msgcat::mcset ru "Select" "Выбрать"
::msgcat::mcset ru "Select all" "Выделить все"
::msgcat::mcset ru "Select directory" "Выбор директории"
::msgcat::mcset ru "Selected directory" "Директория"
::msgcat::mcset ru "Selection color" "Цвет выделения"
::msgcat::mcset ru "Settings" "Установки"
::msgcat::mcset ru "Show backup files" "Показывать временные файлы"
::msgcat::mcset ru "Show the Menu" "Показывать меню"
::msgcat::mcset ru "Show dot files" "Показывать скрытые файлы"
::msgcat::mcset ru "Split edit window" "Разделить окно редактора"
::msgcat::mcset ru "SQL commands" "SQL команды"
::msgcat::mcset ru "Text autoformat" "Автоформат текста"
::msgcat::mcset ru "Thanks" "Благодарности"
::msgcat::mcset ru "Title normal" "Файл нормальный"
::msgcat::mcset ru "Title modify" "Файл изменен"
::msgcat::mcset ru "Toolbar" "Панель инструментов"
::msgcat::mcset ru "Undo" "Отменить"
::msgcat::mcset ru "Update" "Обновить"
::msgcat::mcset ru "Variables" "Переменные"
::msgcat::mcset ru "Version" "Версия"
::msgcat::mcset ru "View" "Вид"
::msgcat::mcset ru "View files tree" "Показывать дерево файлов"
::msgcat::mcset ru "View line numers" "Показывать номера строк"
::msgcat::mcset ru "Warning" "Внимание"
::msgcat::mcset ru "Was replacement" "Было заменено"
::msgcat::mcset ru "Word wrapping" "Перенос слов"
::msgcat::mcset ru "Work dir" "Рабочий каталог"

38
lib/notebook.tcl Normal file
View File

@@ -0,0 +1,38 @@
######################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "", 2022, https://nuk-svk.ru
######################################################
#
# Operation with NoteBook widget module
#
######################################################
namespace eval NB {
proc InsertItem {nb item type} {
switch $type {
file {
regsub -all {\.|/|\\|\s} $item "_" itemName
if [winfo exists $nb.$itemName] {
set fm $nb.$itemName
} else {
set fm [ttk::frame $nb.$itemName]
pack $fm -side top -expand true -fill both
$nb add $fm -text [file tail $item];# -image close_12x12 -compound right
$nb select $fm
}
}
}
puts "NB item - $fm"
return $fm
}
proc CloseTab {w x y} {
if {[$w identify $x $y] == "close_button"} {
puts "Hurrah! Close tab [$w index @$x,$y] plz."
FileOper::Close
}
}
}

View File

@@ -1,106 +0,0 @@
package provide pane 1.0
namespace eval pane {
namespace export create
proc create { f1 f2 args } {
global editor
set t(-orient) vertical
set t(-percent) 0.25
set t(-gripcolor) $editor(bg)
set t(-gripposition) 0.95
set t(-gripcursor) crosshair
set t(-in) [winfo parent $f1]
array set t $args
set master $t(-in)
upvar #0 [namespace current]::Pane$master pane
array set pane [array get t]
if {! [string match v* $pane(-orient)] } {
set pane(-gripcursor) sb_v_double_arrow
set height 5 ; set width 3000
} else {
set pane(-gripcursor) sb_h_double_arrow
set height 3000 ; set width 5
}
set pane(1) $f1
set pane(2) $f2
set pane(grip) [frame $master.grip -background $pane(-gripcolor) \
-width $width -height $height \
-bd 0 -relief raised -cursor $pane(-gripcursor)]
if {! [string match v* $pane(-orient)] } {
set pane(D) Y
place $pane(1) -in $master -x 0 -rely 0.0 -anchor nw -relwidth 1.0 -height -1
place $pane(2) -in $master -x 0 -rely 1.0 -anchor sw -relwidth 1.0 -height -1
place $pane(grip) -in $master -anchor c -relx $pane(-gripposition)
} else {
set pane(D) X
place $pane(1) -in $master -relx 0.0 -y 0 -anchor nw -relheight 1.0 -width -1
place $pane(2) -in $master -relx 1.0 -y 0 -anchor ne -relheight 1.0 -width -1
place $pane(grip) -in $master -anchor c -rely 0 ;#$pane(-gripposition)
}
$master configure -background gray50
bind $master <Configure> [list [namespace current]::PaneGeometry $master]
bind $pane(grip) <ButtonPress-1> \
[list [namespace current]::PaneDrag $master %$pane(D)]
bind $pane(grip) <B1-Motion> \
[list [namespace current]::PaneDrag $master %$pane(D)]
bind $pane(grip) <ButtonRelease-1> \
[list [namespace current]::PaneStop $master]
[namespace current]::PaneGeometry $master
}
proc PaneDrag { master D } {
upvar #0 [namespace current]::Pane$master pane
if {[info exists pane(lastD)]} {
set delta [expr double($pane(lastD) - $D) \
/ $pane(size)]
set pane(-percent) [expr $pane(-percent) - $delta]
if {$pane(-percent) < 0.0} {
set pane(-percent) 0.0
} elseif {$pane(-percent) > 1.0} {
set pane(-percent) 1.0
}
[namespace current]::PaneGeometry $master
}
set pane(lastD) $D
}
proc PaneStop { master } {
upvar #0 [namespace current]::Pane$master pane
catch {unset pane(lastD)}
}
proc PaneGeometry { master } {
upvar #0 [namespace current]::Pane$master pane
if {$pane(D) == "X"} {
place $pane(1) -relwidth $pane(-percent)
place $pane(2) -relwidth [expr 1.0 - $pane(-percent)]
place $pane(grip) -relx $pane(-percent)
set pane(size) [winfo width $master]
} else {
place $pane(1) -relheight $pane(-percent)
place $pane(2) -relheight [expr 1.0 - $pane(-percent)]
place $pane(grip) -rely $pane(-percent)
set pane(size) [winfo height $master]
}
}
}

View File

@@ -1,694 +1,73 @@
###########################################################
# Tcl/Tk Project Manager #
# Distributed under GPL #
# all procedure file #
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
# Author: Sergey Kalinin banzaj28@yandex.ru #
###########################################################
######################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "", 2022, https://nuk-svk.ru
######################################################
#
# All procedures module
#
######################################################
## INSERT TEXT INTO ENTRY BOmX ##
proc InsertEnt {entry text} {
$entry delete 0 end
$entry insert end $text
}
## GET TEXT FROM ENTRY WIDGET ##
proc Text {entry} {
set text [$entry get]
}
## FONT SELECTOR DIALOG ##
proc SelectFontDlg {font text} {
set font [SelectFont .fontdlg -parent . -font $font]
if { $font != "" } {
InsertEnt $text $font
}
}
## STATUS BAR OR ANYTHING LABEL TEXT UPDATE ##
proc LabelUpdate {widget value} {
global fontNormal
$widget configure -text $value -font $fontNormal
}
proc PopupMenuEditor {x y} {
tk_popup .popMnuEdit $x $y
}
## GETTING FILE ATTRIBUTES ##
proc FileAttr {file} {
global tcl_platform
set fileAttribute ""
# get file modify time
if {$tcl_platform(platform) == "windows"} {
set unixTime [file mtime $file]
set modifyTime [clock format $unixTime -format "%d/%m/%Y, %H:%M"]
append fileAttribute $modifyTime
} elseif {$tcl_platform(platform) == "mac"} {
} elseif {$tcl_platform(platform) == "unix"} {
set unixTime [file mtime $file]
set modifyTime [clock format $unixTime -format "%d/%m/%Y, %H:%M"]
append fileAttribute $modifyTime
}
# get file size
set size [file size $file]
if {$size < 1024} {
set fileSize "$size b"
}
if {$size >= 1024} {
set s [expr ($size.0) / 1024]
set dot [string first "\." $s]
set int [string range $s 0 [expr $dot - 1]]
set dec [string range $s [expr $dot + 1] [expr $dot + 2]]
set fileSize "$int.$dec Kb"
}
if {$size >= 1048576} {
set s [expr ($size.0) / 1048576]
set dot [string first "\." $s]
set int [string range $s 0 [expr $dot - 1]]
set dec [string range $s [expr $dot + 1] [expr $dot + 2]]
set fileSize "$int.$dec Mb"
}
append fileAttribute ", $fileSize"
}
## CLOSE FILE ##
proc CloseFile {} {
global docDir imgDir tree noteBook ver fontNormal node
set w [$noteBook itemcget page option insert end settings -text [::msgcat::mc "Settings"]]
$noteBook raise settings
}
## GET LOCALE NAMES FROM MESSAGES FILE ##
proc GetLocale {} {
global msgDir localeList
set localeList ""
if {[catch {cd $msgDir}] != 0} {
return ""
}
foreach file [lsort [glob -nocomplain *.msg]] {
lappend localeList [list [file rootname $file]]
}
return $localeList
}
## MAKING TAR ARCHIVE ##
proc MakeTGZ {} {
global activeProject tgzDir tgzNamed workDir projDir env tcl_platform
if {$activeProject == ""} {
set answer [tk_messageBox\
-message [::msgcat::mc "Not found active project"]\
-type ok -icon warning\
-title [::msgcat::mc "Warning"]]
case $answer {
ok {return 0}
}
}
FileDialog tree save_all
set file [open [file join $workDir $activeProject.proj] r]
while {[gets $file line]>=0} {
scan $line "%s" keyWord
set string [string range $line [string first "\"" $line] [string last "\"" $line]]
set string [string trim $string "\""]
if {$keyWord == "ProjectDirName"} {
set dir "$string"
}
if {$keyWord == "ProjectVersion"} {
set version "$string"
}
if {$keyWord == "ProjectRelease"} {
set release "$string"
}
}
close $file
set res [split $tgzNamed "-"]
set name [lindex $res 0]
set ver [lindex $res 1]
set rel [lindex $res 2]
if {$name == "projectName"} {
set name $activeProject
}
if {$ver == "version"} {
append name "-$version"
}
if {$rel == "release"} {
append name "-$release"
}
# multiplatform featuring #
if {$tcl_platform(platform) == "windows"} {
append name ".zip"
} elseif {$tcl_platform(platform) == "mac"} {
append name ".zip"
} elseif {$tcl_platform(platform) == "unix"} {
append name ".tar.gz"
}
catch {cd $projDir} res
if {[file exists [file join $tgzDir $name]] == 1} {
set answer [tk_messageBox\
-message "[::msgcat::mc "File already exists. Overwrite?"] \"$name\" ?"\
-type yesno -icon question -default yes\
-title [::msgcat::mc "Question"]]
case $answer {
yes {file delete [file join $tgzDir $name]}
no {return 0}
}
}
# multiplatform featuring #
if {$tcl_platform(platform) == "windows"} {
catch [exec pkzip -r -p [file join $tgzDir $name] [file join $activeProject *]] err
} elseif {$tcl_platform(platform) == "mac"} {
catch [exec zip -c [file join $tgzDir $name] $activeProject] err
} elseif {$tcl_platform(platform) == "unix"} {
catch [exec tar -czvf [file join $tgzDir $name] $activeProject] err
}
# message dialog #
set msg "[::msgcat::mc "Archive created in"] [file join $tgzDir $name]"
set icon info
set answer [tk_messageBox\
-message "$msg"\
-type ok -icon $icon]
case $answer {
ok {return 0}
}
}
## MAKING RPM ##
proc MakeRPM {} {
global activeProject tgzDir tgzNamed workDir projDir env tcl_platform
set answer [tk_messageBox\
-message "[::msgcat::mc "Not implemented yet"]"\
-type ok -icon info]
case $answer {
ok {return 0}
}
if {$activeProject == ""} {
set answer [tk_messageBox\
-message "[::msgcat::mc "Not found active project"]"\
-type ok -icon warning -title [::msgcat::mc "Warning"]]
case $answer {
ok {return 0}
}
}
set file [open [file join $workDir $activeProject.proj] r]
while {[gets $file line]>=0} {
scan $line "%s" keyWord
set string [string range $line [string first "\"" $line] [string last "\"" $line]]
set string [string trim $string "\""]
if {$keyWord == "ProjectDirName"} {
set dir "$string"
}
if {$keyWord == "ProjectVersion"} {
set version "$string"
}
if {$keyWord == "ProjectRelease"} {
set release "$string"
}
}
close $file
set res [split $tgzNamed "-"]
set name [lindex $res 0]
set ver [lindex $res 1]
set rel [lindex $res 2]
if {$name == "projectName"} {
set name $activeProject
}
if {$ver == "version"} {
append name "-$version"
}
if {$rel == "release"} {
append name "-$release"
}
append name ".tar.gz"
catch {cd $projDir} res
if {[file exists $tgzDir/$name] == 1} {
set answer [tk_messageBox\
-message "[::msgcat::mc "File already exists. Overwrite?"] \"$name\" ?"\
-type yesno -icon question -default yes]
case $answer {
yes {file delete $tgzDir/$name}
no {return 0}
}
}
catch [exec tar -czvf $tgzDir/$name $activeProject] pipe
}
## PROGRESS DIALOG ##
proc Progress {oper} {
global progval
if {$oper == "start"} {
set prg [ProgressBar .frmStatus.frmProgress.lblProgress.progress\
-variable progval -type infinite -borderwidth 0]
pack $prg -side left -fill both -expand true
} elseif {$oper == "stop"} {
destroy .frmStatus.frmProgress.lblProgress.progress
}
# ProgUpdate
}
proc ProgUpdate { } {
global progval
set progval 5
}
## SHOW HELP WINDOW ##
proc ShowHelp {} {
global dataDir
if {[winfo exists .help] == 1} {
focus -force .help
raise .help
} else {
TopLevelHelp
}
if {[catch {set word [selection get]} error] != 0} {
set word " "
} else {
puts $word
TopLevelHelp
SearchWord $word
}
}
## EXEC EXTERNAL BROWSER AND GOTO URL ##
proc GoToURL {url} {
global env tcl_platform
if {$tcl_platform(platform) == "windows"} {
set pipe [open "|iexplore $url" "r"]
} elseif {$tcl_platform(platform) == "mac"} {
set pipe [open "|iexplore $url" "r"]
} elseif {$tcl_platform(platform) == "unix"} {
#$env(BROWSER)
#set pipe [open "|$env(BROWSER) $url" "r"]
launchBrowser $url
return
}
fileevent $pipe readable
fconfigure $pipe -buffering none -blocking no
}
proc launchBrowser {url} {
global tcl_platform
if {$tcl_platform(platform) eq "windows"} {
set command [list {*}[auto_execok start] {}]
if {[file isdirectory $url]} {
set url [file nativename [file join $url .]]
}
} elseif {$tcl_platform(os) eq "Darwin"} {
set command [list open]
} else {
set command [list xdg-open]
}
exec {*}$command $url &
}
## SEND EMAIL PROCEDURE ##
proc SendEmail {mail} {
global env tcl_platform
if {$tcl_platform(platform) == "windows"} {
} elseif {$tcl_platform(platform) == "mac"} {
} elseif {$tcl_platform(platform) == "unix"} {
set pipe [open "|xdg-open $mail" "r"]
fileevent $pipe readable
fconfigure $pipe -buffering none -blocking no
}
}
## QUIT PROJECT MANAGER PROCEDURE ##
proc Quit {} {
global workDir activeProject
set v [FileDialog tree close_all]
if {$v == "cancel"} {
return
global dir
Config::write $dir(cfg)
exit
}
proc ViewFilesTree {} {
global cfgVariables
if {$cfgVariables(toolBarShow) eq "true"} {
.frmBody.panel forget .frmBody.frmTree
set cfgVariables(toolBarShow) false
} else {
# copy projman.conf file and rewrite them
# open projman.conf file and write current main window geometry
file copy -force [file join $workDir projman.conf] [file join $workDir projman.conf.old]
set file [open [file join $workDir projman.conf.old] RDONLY]
set file1 [open [file join $workDir projman.conf] WRONLY]
while {[gets $file line]>=0} {
if {[regexp -nocase -all -- {set topLevelGeometry} $line match]} {
puts $file1 "set topLevelGeometry \"[winfo geometry .]\""
} elseif {[regexp -nocase -all -- {set workingProject} $line match]} {
puts "set workingProject \"$activeProject\""
puts $file1 "set workingProject \"$activeProject\""
puts "Current project - $activeProject"
} else {
puts "> $line"
puts $file1 "$line"
}
}
exit
.frmBody.panel insert 0 .frmBody.frmTree
set cfgVariables(toolBarShow) true
}
}
## PRINT DIALOG ##
proc PrintDialog {} {
global fontNormal fontBold selectPrint
set wp .print
# destroy the print window if it already exists
if {[winfo exists $wp]} {
destroy $wp
}
# create the new "find" window
toplevel $wp
wm transient $wp .
wm title $wp [::msgcat::mc "Print ..."]
wm resizable $wp 0 0
frame $wp.frmLbl
frame $wp.frmEnt
frame $wp.frmField
frame $wp.frmBtn
pack $wp.frmLbl $wp.frmEnt $wp.frmField $wp.frmBtn -side top -fill x
label $wp.frmLbl.lblPrint -text [::msgcat::mc "Print command"] -font $fontNormal
pack $wp.frmLbl.lblPrint -fill x -expand true -padx 2
entry $wp.frmEnt.entPrint -font $fontNormal
pack $wp.frmEnt.entPrint -fill x -expand true -padx 2
checkbutton $wp.frmField.chkSelect -text [::msgcat::mc "Print selected text"] -variable selectPrint\
-font $fontNormal -onvalue true -offvalue false ;#-command Check
pack $wp.frmField.chkSelect -fill x -expand true -padx 2
button $wp.frmBtn.btnPrint -text [::msgcat::mc "Print"] -font $fontNormal -width 12 -relief groove\
-command {
Print [.print.frmEnt.entPrint get]
destroy .print
}
button $wp.frmBtn.btnCancel -text [::msgcat::mc "Cancel"] -font $fontNormal -width 12 -relief groove\
-command "destroy .print"
pack $wp.frmBtn.btnPrint $wp.frmBtn.btnCancel -side left -padx 2 -pady 2 -fill x -expand true
InsertEnt $wp.frmEnt.entPrint "lpr"
bind $wp <Escape> "destroy .print"
}
## PRINT COMMAND ##
proc Print {command} {
global noteBook fontNormal fontBold fileList selectPrint tmpDir
set node [$noteBook raise]
set text "$noteBook.f$node.frame.text"
set command lpr
if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} {
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 {$selectPrint == "true"} {
set selIndex [$text tag ranges sel]
set start [lindex $selIndex 0]
set end [lindex $selIndex 1]
set prnText [$text get $start $end]
set file [file join $tmpDir projprn.tmp]
set f [open $file "w"]
puts $f $prnText
close $f
# Enable/Disabled line numbers in editor
proc ViewLineNumbers {} {
global cfgVariables nbEditor
# Changed global settigs
if {$cfgVariables(lineNumberShow) eq "true"} {
set cfgVariables(lineNumberShow) false
} else {
set file [lindex $fileList($node) 0]
set cfgVariables(lineNumberShow) true
}
set pipe [open "|$command $file" "r"]
fileevent $pipe readable
fconfigure $pipe -buffering none -blocking no
}
## GETTING EXTERNAL MODULES ##
proc Modules {} {
global tcl_platform
global module tclDir dataDir binDir
# TkDIFF loading
foreach m {tkcvs tkdiff gitk tkregexp} {
if {$tcl_platform(platform) == "unix"} {
if {$m == "tkregexp"} {
set module($m) "[file join $binDir tkregexp.tcl]"
break
}
set string [exec whereis $m]
scan $string "%s%s" v module($m)
if {[info exists module($m)] && [file isdirectory $module($m)] == 0} {
puts "Find $module($m)"
} else {
set module($m) ""
}
}
}
}
## RUNNING MODULE ##
proc DoModule {mod} {
global tcl_platform
global module activeProject projDir tree tclDir dataDir workDir
if {$activeProject == ""} {
set answer [tk_messageBox\
-message "[::msgcat::mc "Not found active project"]"\
-type ok -icon warning\
-title [::msgcat::mc "Warning"]]
case $answer {
ok {return 0}
}
}
set file [open [file join $workDir $activeProject.proj] r]
while {[gets $file line]>=0} {
scan $line "%s" keyWord
set string [string range $line [string first "\"" $line] [string last "\"" $line]]
set string [string trim $string "\""]
if {$keyWord == "ProjectName"} {
set projName "$string"
}
if {$keyWord == "ProjectFileName"} {
set projFileName "$string"
}
if {$keyWord == "ProjectDirName"} {
set dir "$string"
}
if {$keyWord == "ProjectCompiler"} {
set projCompiler "$string"
}
if {$keyWord == "ProjectInterp"} {
set projInterp "$string"
}
}
close $file
#puts "project dir - $dir"
set curDir [pwd]
case $mod {
tkcvs {
set pipe [open "|$module(tkcvs) -dir $dir" "r"]
fileevent $pipe readable
fconfigure $pipe -buffering none -blocking no
}
tkdiff {
set files [$tree selection get]
if {[llength $files] == 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 $files] == 1} {
if {$files != ""} {
set file1 [$tree itemcget $files -data]
}
set command "-r $file1"
}
if {[llength $files] == 2} {
if {[lindex $files 0] != ""} {
set file1 [$tree itemcget [lindex $files 0] -data]
}
if {[lindex $files 1] != ""} {
set file2 [$tree itemcget [lindex $files 1] -data]
}
set command "$file1 $file2"
}
if {[llength $files] > 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
}
tkregexp {
set files [$tree selection get]
if {[llength $files] == 0} {
set command ""
} elseif {[llength $files] == 1} {
if {$files != ""} {
set file [$tree itemcget $files -data]
}
set command "$file"
} else {
set answer [tk_messageBox\
-message "[::msgcat::mc "Must be one file select!"]"\
-type ok -icon info\
-title [::msgcat::mc "Warning"]]
case $answer {
ok {return 0}
}
}
puts "$module(tkregexp) $command"
set pipe [open "|$module(tkregexp) $command" "r"]
fileevent $pipe readable
fconfigure $pipe -buffering none -blocking no
}
gitk {
cd $dir
#puts "========== $projDir $dir $curDir"
set pipe [open "|$module(gitk)" "r"]
fileevent $pipe readable
fconfigure $pipe -buffering none -blocking no
}
# apply changes for opened tabs
foreach node [$nbEditor tabs] {
$node.frmText.t configure -linemap $cfgVariables(lineNumberShow)
}
}
proc SelectDir {dir} {
global projDir workDir openProjDir
set dirName [tk_chooseDirectory -initialdir $dir\
-title "[::msgcat::mc "Select directory"]"\
-parent .]
return $dirName
proc Del {} {
return
}
## TOOLBAR ON/OFF PROCEDURE ##
proc ToolBar {} {
global toolBar
if {$toolBar == "Yes"} {
CreateToolBar
} elseif {$toolBar == "No"} {
destroy .frmTool.btnNew .frmTool.btnSave .frmTool.btnSaveAs .frmTool.btnSaveAll\
.frmTool.btnCopy .frmTool.btnPaste .frmTool.btnCut .frmTool.btnDo .frmTool.btnPrint\
.frmTool.btnDoFile .frmTool.btnTGZ .frmTool.btnHelp .frmTool.btnClose
.frmTool configure -height 1
proc YScrollCommand {txt canv} {
$txt yview
$canv yview"
}
proc ResetModifiedFlag {w} {
global modified nbEditor
$w.frmText.t edit modified false
set modified($w) "false"
set lbl [string trimleft [$nbEditor tab $w -text] "* "]
puts "ResetModifiedFlag: $lbl"
$nbEditor tab $w -text $lbl
}
proc SetModifiedFlag {w} {
global modified nbEditor
#$w.frmText.t edit modified false
set modified($w) "true"
set lbl [$nbEditor tab $w -text]
puts "SetModifiedFlag: $w; $modified($w); >$lbl<"
if {[regexp -nocase -all -- {^\*} $lbl match] == 0} {
set lbl "* $lbl"
}
$nbEditor tab $w -text $lbl
}
## LOADING HIGHLIGHT FILES ##
proc HighLight {ext text line lineNumber node} {
global font tree color noteBook hlDir
if {[file exists [file join $hlDir $ext.tcl]] == 1} {
HighLight[string toupper $ext] $text $line $lineNumber $node
} elseif {($ext == "htm") || ($ext == "xml") || ($ext == "fm") || ($ext == "html")} {
HighLightHTML $text $line $lineNumber $node
} elseif {($ext == "pl")} {
HighLightPERL $text $line $lineNumber $node
} elseif {($ext == "for")} {
HighLightFORTRAN $text $line $lineNumber $node
} elseif {($ext == "ml") || ($ext == "mli")} {
HighLightML $text $line $lineNumber $node
} elseif {($ext == "rvt") || ($ext == "tml")} {
HighLightRIVET $text $line $lineNumber $node
} elseif {($ext == "php") || ($ext == "phtml")} {
HighLightPHP $text $line $lineNumber $node
} elseif {($ext == "rb")} {
HighLightRUBY $text $line $lineNumber $node
} elseif {($ext == "sh")} {
HighLightSHELL $text $line $lineNumber $node
} else {
HighLightTCL $text $line $lineNumber $node
}
}
## GET IMAGE FOR tree AND notebook WIDGETS ##
proc GetImage {fileName} {
global imgDir
if {[file isdirectory $fileName] == 1} {
set img "folder"
set data "dir"
} elseif {[string match "*.tcl" $fileName] == 1} {
set img "tcl"
set data "src"
} elseif {[string match "*.tk" $fileName] == 1} {
set img "tk"
set data "src"
} elseif {[string match "*.rvt" $fileName] == 1} {
set img "rvt"
set data "src"
} elseif {[string match "*.tex" $fileName] == 1} {
set img "tex"
set data "src"
} elseif {[string match "*.html" $fileName] == 1 || [string match "*.htm" $fileName] == 1} {
set img "html"
set data "src"
} elseif {[string match "*.gif" $fileName] == 1 || [string match "*.xpm" $fileName] == 1 || \
[string match "*.png" $fileName] == 1 || [string match "*.jpg" $fileName] == 1 || \
[string match "*.xbm" $fileName] == 1 || [string match "*.jpeg" $fileName] == 1 || \
[string match "*.bmp" $fileName] == 1} {
set img "img"
set data "img"
} elseif {[string match "*.xml" $fileName] == 1} {
set img "xml"
set data "xml"
} elseif {[string match "*.java" $fileName] == 1 || [string match "*.ja" $fileName] == 1} {
set img "java"
set data "src"
} elseif {[string match "*.c" $fileName] == 1} {
set img "c"
set data "src"
} elseif {[string match "*.cpp" $fileName] == 1} {
set img "cpp"
set data "src"
} elseif {[string match "*.spec" $fileName] == 1} {
set img "rpm"
set data "src"
} elseif {[string match "*.pl" $fileName] == 1} {
set img "perl"
set data "src"
} elseif {[string match "*.for" $fileName] == 1 || [string match "*.f" $fileName] == 1} {
set img "fortran"
set data "src"
} elseif {[string match "*.ml" $fileName] == 1 || [string match "*.mli" $fileName] == 1} {
set img "caml"
set data "src"
} elseif {[string match "*.tml" $fileName] == 1 || [string match "*.rvt" $fileName] == 1} {
set img "tclhtml"
set data "src"
} elseif {[string match "*.php" $fileName] == 1 || [string match "*.phtml" $fileName] == 1} {
set img "php"
set data "src"
} elseif {[string match "*.rb" $fileName] == 1} {
set img "ruby"
set data "src"
} else {
set img "file"
set data "txt"
}
return $img
}
proc GetExtention {node} {
global fileList
set ext [string range [file extension [file tail [lindex $fileList($node) 0]]] 1 end]
return $ext
}
# Get system command name from PATH environment variable
proc GetSystemCommand {} {
global tcl_platform env systemCmdList
switch -exact -- $tcl_platform(platform) {
"unix" {
foreach path [split $env(PATH) ":"] {
foreach commandName [lsort [glob -nocomplain [file join $path *]]] {
lappend systemCmdList [file tail $commandName]
}
}
}
"windows" {
foreach path [split $env(PATH) ";"] {
foreach commandName [lsort [glob -nocomplain [file join $path *]]] {
lappend systemCmdList [file tail $commandName]
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,672 +0,0 @@
######################################################
# Tcl/Tk project Manager
# Distributed under GNU Public License
# Author: Sergey Kalinin banzaj28@yandex.ru
# Home page: http://nuk-svk.ru
######################################################
proc ColorSelect {ent w} {
set color [SelectColor::menu $w.color [list below $w] -color [$w cget -background]]
if {[string length $color]} {
$ent configure -foreground $color
InsertEnt $ent $color
}
}
## SHOW SELECTED COLOR IN DIALOG ##
proc ConfigureEnt {col} {
global editor color
global main editFrm network
$editFrm.frmColorEditFG.txtColorEditFG configure -background $col
$editFrm.frmColorProc.txtColorProc configure -background $col -fg $color(procName)
$editFrm.frmColorKeyWord.txtColorKeyWord configure -background $col -fg $color(keyWord)
$editFrm.frmColorParam.txtColorParam configure -background $col -fg $color(param)
$editFrm.frmColorSubParam.txtColorSubParam configure -background $col -fg $color(subParam)
$editFrm.frmColorComments.txtColorComments configure -background $col -fg $color(comments)
$editFrm.frmColorVar.txtColorVar configure -background $col -fg $color(var)
$editFrm.frmColorString.txtColorString configure -background $col -fg $color(string)
$editFrm.frmColorBrace.txtColorBrace configure -background $col -fg $color(brace)
$editFrm.frmColorBraceQuad.txtColorBraceQuad configure -background $col -fg $color(bracequad)
$editFrm.frmColorBraceBG.txtColorBraceBG configure -background $col -fg $color(braceBG)
$editFrm.frmColorBraceFG.txtColorBraceFG configure -background $col -fg $color(braceFG)
$editFrm.frmColorPercent.txtColorPercent configure -background $col -fg $color(percent)
$editFrm.frmColorBindKey.txtColorBindKey configure -background $col -fg $color(bindKey)
$editFrm.frmColorLabel.txtColorLabel configure -background $col -fg $color(label)
$editFrm.frmColorSixFG.txtColorSixFG configure -background $col -fg $color(sixFG)
$editFrm.frmColorSixBG.txtColorSixBG configure -background $col -fg $color(sixBG)
$editFrm.frmColorSQL.txtColorSQL configure -background $col -fg $color(sql)
}
## READ CONFIG FILE ##
proc LoadSettings {} {
global fontNormal imgDir workDir msgDir
global editor color nb
global main editFrm network menuShow
global toolBar autoFormat backUpDel backUpCreate backUpShow showDotFiles localeSet localeList wrapSet wrapList
## load .conf file ##
set file [open [file join $workDir projman.conf] r]
while {[gets $file line]>=0} {
scan $line "%s%s%s" trash keyWord var
if {$trash == "set"} {
set var [string trim $var "\""]
switch $keyWord {
fontNormal {
set v [string trim [string range $line [string first $var $line] end] "\""]
InsertEnt $main.frmFontNormal.txtFontNormal "$v"
}
fontBold {
set v [string trim [string range $line [string first $var $line] end] "\""]
InsertEnt $main.frmFontBold.txtFontBold "$v"
}
locale {
set localeIndex [lsearch -exact $localeList "$var"]
if {$localeIndex != -1} {
$main.frmLocale.txtLocale setvalue @$localeIndex
} else {
puts "$var.msg file not found into $msgDir"
}
}
menuShow {
if {$var == "Yes"} {
set menuShow "true"
} else {
set menuShow "false"
}
}
toolBar {
if {$var == "Yes"} {
set toolBar "true"
} else {
set toolBar "false"
}
}
backUpFileShow {
if {$var == "Yes"} {
set backUpShow "true"
} else {
set backUpShow "false"
}
}
backUpFileCreate {
if {$var == "Yes"} {
set backUpCreate "true"
} else {
set backUpCreate "false"
}
}
backUpFileDel {
if {$var == "Yes"} {
set backUpDel "true"
} else {
set backUpDel "false"
}
}
dotFileShow {
if {$var == "Yes"} {
set showDotFiles "true"
} else {
set showDotFiles "false"
}
}
projDir {InsertEnt $main.frmProjDir.txtProjDir "$var"}
rpmDir {InsertEnt $main.frmRpmDir.txtRpmDir "$var"}
tgzDir {InsertEnt $main.frmTgzDir.txtTgzDir "$var"}
rpmNamed {InsertEnt $main.frmRpmNamed.txtRpmNamed "$var"}
tgzNamed {InsertEnt $main.frmTgzNamed.txtTgzNamed "$var"}
autoFormat {if {$var == "Yes"} {set autoFormat "true"} else {set autoFormat "false"}}
"editor(wrap)" {
set wrapIndex [lsearch -exact $wrapList "$var"]
if {$wrapIndex != -1} {
$editFrm.frmWrap.txtWrap setvalue @$wrapIndex
}
unset wrapIndex
}
"editor(bg)" {
InsertEnt $editFrm.frmColorEditBG.txtColorEditBG "$var"
ConfigureEnt $var
}
"editor(fg)" {InsertEnt $editFrm.frmColorEditFG.txtColorEditFG "$var"}
"editor(selectbg)" {InsertEnt $editFrm.frmColorSelectBG.txtColorSelectBG "$var"}
"editor(nbNormal)" {InsertEnt $editFrm.frmColorNbNormal.txtColorNbNormal "$var"}
"editor(nbModify)" {InsertEnt $editFrm.frmColorNbModify.txtColorNbModify "$var"}
"color(procName)" {InsertEnt $editFrm.frmColorProc.txtColorProc "$var"}
"color(keyWord)" {InsertEnt $editFrm.frmColorKeyWord.txtColorKeyWord "$var"}
"color(param)" {InsertEnt $editFrm.frmColorParam.txtColorParam "$var"}
"color(subParam)" {InsertEnt $editFrm.frmColorSubParam.txtColorSubParam "$var"}
"color(comments)" {InsertEnt $editFrm.frmColorComments.txtColorComments "$var"}
"color(var)" {InsertEnt $editFrm.frmColorVar.txtColorVar "$var"}
"color(string)" {InsertEnt $editFrm.frmColorString.txtColorString "$var"}
"color(brace)" {InsertEnt $editFrm.frmColorBrace.txtColorBrace "$var"}
"color(bracequad)" {InsertEnt $editFrm.frmColorBraceQuad.txtColorBraceQuad "$var"}
"color(braceBG)" {InsertEnt $editFrm.frmColorBraceBG.txtColorBraceBG "$var"}
"color(braceFG)" {InsertEnt $editFrm.frmColorBraceFG.txtColorBraceFG "$var"}
"color(percent)" {InsertEnt $editFrm.frmColorPercent.txtColorPercent "$var"}
"color(bindKey)" {InsertEnt $editFrm.frmColorBindKey.txtColorBindKey "$var"}
"color(label)" {InsertEnt $editFrm.frmColorLabel.txtColorLabel "$var"}
"color(sixFG)" {InsertEnt $editFrm.frmColorSixFG.txtColorSixFG "$var"}
"color(sixBG)" {InsertEnt $editFrm.frmColorSixBG.txtColorSixBG "$var"}
"color(sql)" {InsertEnt $editFrm.frmColorSQL.txtColorSQL "$var"}
}
if {$keyWord == "editor(fontBold)"} {
set v [string trim [string range $line [string first $var $line] end] "\""]
InsertEnt $editFrm.frmEditorFontBold.txtEditorFontBold "$v"
}
if {$keyWord == "editor(font)"} {
set v [string trim [string range $line [string first $var $line] end] "\""]
InsertEnt $editFrm.frmEditorFont.txtEditorFont "$v"
}
}
}
close $file
}
## SAVE SETTINGS PROCEDURE ##
proc SaveSettings {} {
global editor color workDir topLevelGeometry
global main editFrm network wrapSet
file copy -force [file join $workDir projman.conf] [file join $workDir projman.conf.old]
set file [open [file join $workDir projman.conf] w]
puts $file "###########################################################"
puts $file "# TCL/Tk Project Manager #"
puts $file "# version $ver #"
puts $file "# #"
puts $file "# Copyright \(c\) \"Sergey Kalinin\", 2001, http://nuk-svk.ru #"
puts $file "# Authors: Sergey Kalinin \(aka BanZaj\) banzaj28@yandex.ru #"
puts $file "###########################################################\n"
puts $file "# Modification date: [exec date]"
puts $file "###########################################################\n"
puts $file "set topLevelGeometry \"$topLevelGeometry\""
puts $file "# Normal Font"
puts $file "set fontNormal \"[$main.frmFontNormal.txtFontNormal get]\""
puts $file "# Bold Font #"
puts $file "set fontBold \"[$main.frmFontBold.txtFontBold get]\""
puts $file "# ToolBar on/off \(Yes/No\)"
if {$toolBar == "false"} {
puts $file "set toolBar \"No\"\n"
} else {
puts $file "set toolBar \"Yes\"\n"
}
puts $file "# Menu on/off \(Yes/No\)"
if {$menuShow == "false"} {
puts $file "set menuShow \"No\"\n"
} else {
puts $file "set menuShow \"Yes\"\n"
}
if {$backUpShow == "false"} {
puts $file "set backUpFileShow \"No\""
} else {
puts $file "set backUpFileShow \"Yes\""
}
if {$backUpCreate == "false"} {
puts $file "set backUpFileCreate \"No\""
} else {
puts $file "set backUpFileCreate \"Yes\""
}
if {$backUpDel == "false"} {
puts $file "set backUpFileDelete \"No\""
} else {
puts $file "set backUpFileDelete \"Yes\""
}
if {$showDotFiles == "false"} {
puts $file "set dotFileShow \"No\""
} else {
puts $file "set dotFileShow \"Yes\""
}
puts $file "\n# Don't edit this line"
puts $file "# Directorys Settings #"
puts $file "set projDir \"[$main.frmProjDir.txtProjDir get]\""
puts $file "set rpmDir \"[$main.frmRpmDir.txtRpmDir get]\""
puts $file "set tgzDir \"[$main.frmTgzDir.txtTgzDir get]\""
puts $file "# File mask #"
puts $file "set rpmNamed \"[$main.frmRpmNamed.txtRpmNamed get]\""
puts $file "set tgzNamed \"[$main.frmTgzNamed.txtTgzNamed get]\""
puts $file "\n# Locale setting\nset locale \"$localeSet\""
if {$autoFormat == "false"} {
puts $file "set autoFormat \"No\"\n"
} else {
puts $file "set autoFormat \"Yes\"\n"
}
puts $file "# Editor Font #"
puts $file "set editor(font) \"[$frm_17.txtEditorFont get]\""
puts $file "# Editor Bold Font #"
puts $file "set editor(fontBold) \"[$frm_18.txtEditorFontBold get]\""
puts $file "# background color #"
puts $file "set editor(bg) \"[$editFrm.frmColorEditBG.txtColorEditBG get]\""
puts $file "# foreground color #"
puts $file "set editor(fg) \"[$editFrm.frmColorEditFG.txtColorEditFG get]\""
puts $file "# selection background color #"
puts $file "set editor(selectbg) \"[$editFrm.frmColorSelectBG.txtColorSelectBG get]\""
puts $file "# NoteBook title normal font color #"
puts $file "set editor(nbNormal) \"[$editFrm.frmColorNbNormal.txtColorNbNormal get]\""
puts $file "# NoteBook title modify font color #"
puts $file "set editor(nbModify) \"[$editFrm.frmColorNbModify.txtColorNbModify get]\""
puts $file "# selection border width #"
puts $file "set editor(selectBorder) \"0\""
puts $file "# Editor wraping #"
puts $file "# must be: none, word or char"
puts $file "set editor(wrap) \"$wrapSet\""
puts $file "## SOURCE CODE HIGHLIGTNING ##"
puts $file "set color(procName) \"[$editFrm.frmColorProc.txtColorProc get]\""
puts $file "set color(keyWord) \"[$editFrm.frmColorKeyWord.txtColorKeyWord get]\""
puts $file "set color(param) \"[$editFrm.frmColorCParam.txtColorParam get]\""
puts $file "set color(subParam) \"[$editFrm.frmColorSubParam.txtColorSubParam get]\""
puts $file "set color(comments) \"[$editFrm.frmColorComments.txtColorComments get]\""
puts $file "set color(var) \"[$editFrm.frmColorVar.txtColorVar get]\""
puts $file "set color(string) \"[$editFrm.frmColorString.txtColorString get]\""
puts $file "set color(brace) \"[$editFrm.frmColorBrace.txtColorBrace get]\""
puts $file "set color(bracequad) \"[$editFrm.frmColorBraceQuad.txtColorBraceQuad get]\""
puts $file "set color(braceBG) \"[$editFrm.frmColorBraceBG.txtColorBraceBG get]\""
puts $file "set color(braceFG) \"[$editFrm.frmColorBraceFG.txtColorBraceFG get]\""
puts $file "set color(percent) \"[$editFrm.frmColorPercent.txtColorPercent get]\""
puts $file "set color(bindKey) \"[$editFrm.frmColorBindKey.txtColorBindKey get]\""
puts $file "set color(label) \"[$editFrm.frmColorLabel.txtColorLabel get]\""
puts $file "set color(sixFG) \"[$editFrm.frmColorSixFG.txtColorSixFG get]\""
puts $file "set color(sixBG) \"[$editFrm.frmColorSixBG.txtColorSixBG get]\""
puts $file "set color(sql) \"[$editFrm.frmColorSQL.txtColorSQL get]\""
puts $file "\nset workingProject \"\""
close $file
$noteBook delete settings
$noteBook raise [$noteBook page end]
}
proc Settings {nBook} {
global fontNormal fontBold imgDir workDir
global editor color nb topLevelGeometry
global main editFrm network menuShow
global toolBar autoFormat backUpDel backUpCreate backUpShow showDotFiles localeSet localeList wrapSet wrapList
set topLevelGeometry [winfo geometry .]
if {[$nBook index settings] != -1} {
$nBook delete settings
}
set w [$nBook insert end settings -text [::msgcat::mc "Settings"]]
$nBook raise settings
# destroy the find window if it already exists
frame $w.frmMain -borderwidth 1
pack $w.frmMain -side top -fill both -expand true
frame $w.frmBtn -borderwidth 1
pack $w.frmBtn -side top -fill x
set nb [NoteBook $w.frmMain.noteBook -font $fontBold \
-side bottom -bg $editor(bg) -fg $editor(fg)]
pack $nb -fill both -expand true -padx 2 -pady 2
button $w.frmBtn.btnFind -text [::msgcat::mc "Save"] \
-font $fontNormal -width 12 -relief flat \
-bg $editor(bg) -fg $editor(fg) -command {
file copy -force [file join $workDir projman.conf] [file join $workDir projman.conf.old]
set file [open [file join $workDir projman.conf] w]
puts $file "###########################################################"
puts $file "# TCL/Tk Project Manager #"
puts $file "# version $ver #"
puts $file "# #"
puts $file "# Copyright \(c\) \"Sergey Kalinin\", 2001, http://nuk-svk.ru #"
puts $file "# Authors: Sergey Kalinin \(aka BanZaj\) banzaj28@yandex.ru #"
puts $file "###########################################################"
puts $file "# Modification date: [exec date]"
puts $file "###########################################################\n"
puts $file "set topLevelGeometry \"$topLevelGeometry\""
puts $file "# Normal Font"
puts $file "set fontNormal \"[$main.frmFontNormal.txtFontNormal get]\""
puts $file "# Bold Font #"
puts $file "set fontBold \"[$main.frmFontBold.txtFontBold get]\""
puts $file "# ToolBar on/off \(Yes/No\)"
if {$toolBar == "false"} {
puts $file "set toolBar \"No\"\n"
} else {
puts $file "set toolBar \"Yes\"\n"
}
puts $file "# Menu on/off \(Yes/No\)"
if {$menuShow == "false"} {
puts $file "set menuShow \"No\"\n"
} else {
puts $file "set menuShow \"Yes\"\n"
}
if {$backUpShow == "false"} {
puts $file "set backUpFileShow \"No\""
} else {
puts $file "set backUpFileShow \"Yes\""
}
if {$backUpCreate == "false"} {
puts $file "set backUpFileCreate \"No\""
} else {
puts $file "set backUpFileCreate \"Yes\""
}
if {$backUpDel == "false"} {
puts $file "set backUpFileDelete \"No\""
} else {
puts $file "set backUpFileDelete \"Yes\""
}
if {$showDotFiles == "false"} {
puts $file "set dotFileShow \"No\""
} else {
puts $file "set dotFileShow \"Yes\""
}
puts $file "\n# Don't edit this line"
puts $file "# Directorys Settings #"
puts $file "set projDir \"[$main.frmProjDir.txtProjDir get]\""
puts $file "set rpmDir \"[$main.frmRpmDir.txtRpmDir get]\""
puts $file "set tgzDir \"[$main.frmTgzDir.txtTgzDir get]\""
puts $file "# File mask #"
puts $file "set rpmNamed \"[$main.frmRpmNamed.txtRpmNamed get]\""
puts $file "set tgzNamed \"[$main.frmTgzNamed.txtTgzNamed get]\""
puts $file "\n# Locale setting\nset locale \"$localeSet\""
if {$autoFormat == "false"} {
puts $file "set autoFormat \"No\"\n"
} else {
puts $file "set autoFormat \"Yes\"\n"
}
puts $file "# Editor Font #"
puts $file "set editor(font) \"[$editFrm.frmEditorFont.txtEditorFont get]\""
puts $file "# Editor Bold Font #"
puts $file "set editor(fontBold) \"[$editFrm.frmEditorFontBold.txtEditorFontBold get]\""
puts $file "# background color #"
puts $file "set editor(bg) \"[$editFrm.frmColorEditBG.txtColorEditBG get]\""
puts $file "# foreground color #"
puts $file "set editor(fg) \"[$editFrm.frmColorEditFG.txtColorEditFG get]\""
puts $file "# selection background color #"
puts $file "set editor(selectbg) \"[$editFrm.frmColorSelectBG.txtColorSelectBG get]\""
puts $file "# NoteBook title normal font color #"
puts $file "set editor(nbNormal) \"[$editFrm.frmColorNbNormal.txtColorNbNormal get]\""
puts $file "# NoteBook title modify font color #"
puts $file "set editor(nbModify) \"[$editFrm.frmColorNbModify.txtColorNbModify get]\""
puts $file "# selection border width #"
puts $file "set editor(selectBorder) \"0\""
puts $file "# Editor wraping #"
puts $file "# must be: none, word or char"
puts $file "set editor(wrap) \"$wrapSet\""
puts $file "## SOURCE CODE HIGHLIGTNING ##"
puts $file "set color(procName) \"[$editFrm.frmColorProc.txtColorProc get]\""
puts $file "set color(keyWord) \"[$editFrm.frmColorKeyWord.txtColorKeyWord get]\""
puts $file "set color(param) \"[$editFrm.frmColorParam.txtColorParam get]\""
puts $file "set color(subParam) \"[$editFrm.frmColorSubParam.txtColorSubParam get]\""
puts $file "set color(comments) \"[$editFrm.frmColorComments.txtColorComments get]\""
puts $file "set color(var) \"[$editFrm.frmColorVar.txtColorVar get]\""
puts $file "set color(string) \"[$editFrm.frmColorString.txtColorString get]\""
puts $file "set color(brace) \"[$editFrm.frmColorBrace.txtColorBrace get]\""
puts $file "set color(bracequad) \"[$editFrm.frmColorBraceQuad.txtColorBraceQuad get]\""
puts $file "set color(braceBG) \"[$editFrm.frmColorBraceBG.txtColorBraceBG get]\""
puts $file "set color(braceFG) \"[$editFrm.frmColorBraceFG.txtColorBraceFG get]\""
puts $file "set color(percent) \"[$editFrm.frmColorPercent.txtColorPercent get]\""
puts $file "set color(bindKey) \"[$editFrm.frmColorBindKey.txtColorBindKey get]\""
puts $file "set color(label) \"[$editFrm.frmColorLabel.txtColorLabel get]\""
puts $file "set color(sixFG) \"[$editFrm.frmColorSixFG.txtColorSixFG get]\""
puts $file "set color(sixBG) \"[$editFrm.frmColorSixBG.txtColorSixBG get]\""
puts $file "set color(sql) \"[$editFrm.frmColorSQL.txtColorSQL get]\""
puts $file "\nset workingProject \"\""
close $file
#destroy $w
.frmBody.frmWork.noteBook delete settings
}
button $w.frmBtn.btnCancel -text [::msgcat::mc "Close"] -relief flat -width 12\
-font $fontNormal -command "destroy $w; $nBook delete settings " -bg $editor(bg) -fg $editor(fg)
pack $w.frmBtn.btnFind $w.frmBtn.btnCancel -fill x -padx 5 -pady 5 -side right
################## MAIN PREF ##########################
set main [$nb insert end main -text "[::msgcat::mc "Main"]"]
set scrwin [ScrolledWindow $main.scrwin -relief flat -bd 2 -bg $editor(bg)]
#pack $scrwin -fill both -expand true
set scrfrm [ScrollableFrame $main.frm -bg $editor(bg) -constrainedwidth true]
pack $scrwin -fill both -expand true
pack $scrfrm -fill both -expand true
$scrwin setwidget $scrfrm
set main [$scrfrm getframe]
label $main.lblWinTitle -text [::msgcat::mc "Main settings"] -height 2 -font $fontBold
pack $main.lblWinTitle -side top -fill x -expand true
#### BEGIN Fonts settings ####
set fontWidgets {
FontNormal {Font normal}
FontBold {Font bold}
}
foreach {widgetName widgetText} $fontWidgets {
set frm [frame $main.frm$widgetName -bg $editor(bg)]
label $frm.lbl$widgetName -text [::msgcat::mc $widgetText] -width 30 -anchor w \
-font $fontNormal -fg $editor(fg) -bg $editor(bg)
entry $frm.txt$widgetName
button $frm.btn$widgetName -borderwidth {1} -font $fontNormal \
-command "SelectFontDlg \"$fontBold\" $main.frm$widgetName.txt$widgetName" \
-image [Bitmap::get [file join $imgDir font_selector.gif]]
pack $frm.lbl$widgetName -side left
pack $frm.txt$widgetName -side left -fill x -expand true
pack $frm.btn$widgetName -side left
pack $frm -side top -fill both -expand true -padx 5 -pady 2
unset frm
}
#### END #####
set frm_5 [frame $main.frmLocale -bg $editor(bg)]
label $frm_5.lblLocale -text [::msgcat::mc "Interface language"]\
-width 30 -anchor w -font $fontNormal -fg $editor(fg) -bg $editor(bg)
set combo [ComboBox $frm_5.txtLocale \
-textvariable localeSet -command "puts 123"\
-selectbackground "#55c4d1" -selectborderwidth 0\
-values [GetLocale]]
pack $frm_5.lblLocale -side left
pack $frm_5.txtLocale -side left ;#-fill x -expand true
pack $frm_5 -side top -fill both -expand true -padx 5 -pady 2
#### BEGIN directory widgets builder ###
set dirWidgets {
ProjDir Projects
RpmDir {RPM directory}
TgzDir {Archive directory}
}
foreach {widgetName widgetText} $dirWidgets {
set frm [frame $main.frm$widgetName -bg $editor(bg)]
label $frm.lbl$widgetName -text [::msgcat::mc "$widgetText"] \
-width 30 -anchor w -font $fontNormal -fg $editor(fg)
entry $frm.txt$widgetName
button $frm.btn$widgetName -borderwidth {1} -font $fontNormal \
-image [Bitmap::get [file join $imgDir folder.gif]]\
-command "DirInsertIntoEnt $main.frm$widgetName.txt$widgetName $workDir"
pack $frm.lbl$widgetName -side left
pack $frm.txt$widgetName -side left -fill x -expand true
pack $frm.btn$widgetName -side left
pack $frm -side top -fill both -expand true -padx 5 -pady 2
unset frm
}
# little workaround hack
proc DirInsertIntoEnt {widget dir} {
InsertEnt $widget [SelectDir $dir]
}
######### END #########
#### BEGIN file mask widgets builder ###
set fileMaskWidgets {
RpmNamed {RPM file mask}
TgzNamed {Archive file mask}
}
foreach {widgetName widgetText} $fileMaskWidgets {
set frm [frame $main.frm$widgetName -bg $editor(bg)]
label $frm.lbl$widgetName -text [::msgcat::mc "$widgetText"] -width 30 -anchor w\
-font $fontNormal -fg $editor(fg)
entry $frm.txt$widgetName
pack $frm.lbl$widgetName -side left
pack $frm.txt$widgetName -side left -fill x -expand true
pack $frm -side top -fill both -expand true -padx 5 -pady 2
unset frm
}
######### END ##########
### BEGIN CheckBox widgets build ####
set cbWidgets {
MenuShow menuShow {Show the Menu}
ToolBar toolBar {Toolbar}
BackUpShow backUpShow {Show backup files}
BackUpCreate backUpCreate {Create backup files}
BackUpDel backUpDel {Delete backup files}
DotFilesShow dotFileShow {Show dot files}
}
foreach {widgetName confVar widgetText} $cbWidgets {
set frm [frame $main.frm$widgetName -bg $editor(bg)]
label $frm.lbl$widgetName -text [::msgcat::mc "$widgetText"]\
-width 30 -anchor w -font $fontNormal -fg $editor(fg)
checkbutton $frm.chk$widgetName -text "" -variable $confVar \
-font $fontNormal -onvalue true -offvalue false
pack $frm.lbl$widgetName -side left
pack $frm.chk$widgetName -side left
pack $frm -side top -fill both -expand true -padx 5 -pady 2
unset frm
}
######### END ##########
#################### EDITOR PREF #########################
set editFrm [$nb insert end editor -text "[::msgcat::mc "Editor"]"]
set scrwin [ScrolledWindow $editFrm.scrwin -relief flat -bd 2 -bg $editor(bg)]
set scrfrm [ScrollableFrame $editFrm.frm -bg $editor(bg) -constrainedwidth true]
pack $scrwin -fill both -expand true -fill both
pack $scrfrm -fill both -expand true -fill both
$scrwin setwidget $scrfrm
set editFrm [$scrfrm getframe]
label $editFrm.lblTitle -text [::msgcat::mc "Editor settings"] -height 2 -font $fontBold
pack $editFrm.lblTitle -side top -fill x -expand true
### BEGIN editor fonts settings field builder ####
set fontWidgets {
EditorFont {Editor font}
EditorFontBold {Editor font bold}
}
foreach {widgetName widgetText} $fontWidgets {
set frm [frame $editFrm.frm$widgetName -bg $editor(bg)]
label $frm.lbl$widgetName -text [::msgcat::mc "$widgetText"] -width 30\
-anchor w -font $fontNormal
entry $frm.txt$widgetName
button $frm.btn$widgetName -borderwidth {1} -font $fontNormal \
-command "SelectFontDlg \"$editor(font)\" $editFrm.frm$widgetName.txt$widgetName" \
-image [Bitmap::get [file join $imgDir font_selector.gif]]
pack $frm.lbl$widgetName -side left
pack $frm.txt$widgetName -side left -fill x -expand true
pack $frm.btn$widgetName -side left
pack $frm -side top -fill x -expand true -padx 5 -pady 2
unset frm
}
#### END ####
set frm_21 [frame $editFrm.frmColorEditBG -bg $editor(bg)]
label $frm_21.lblColorEditBG -text [::msgcat::mc "Editor background"]\
-width 30 -anchor w -font $fontNormal
entry $frm_21.txtColorEditBG
button $frm_21.btnColorEditBG -borderwidth {1} -font $fontNormal \
-text "Select color" -image [Bitmap::get [file join $imgDir color_selector.gif]]\
-command {
ColorSelect $editFrm.frmColorEditBG.txtColorEditBG $editFrm.frmColorEditBG.btnColorEditBG
ConfigureEnt [Text $editFrm.frmColorEditBG.txtColorEditBG]
}
pack $frm_21.lblColorEditBG -side left
pack $frm_21.txtColorEditBG -side left -fill x -expand true
pack $frm_21.btnColorEditBG -side left
set frm_15 [frame $editFrm.frmAutoFormat -bg $editor(bg)]
label $frm_15.lblAutoFormat -text [::msgcat::mc "Text autoformat"]\
-width 30 -anchor w -font $fontNormal
checkbutton $frm_15.chkAutoFormat -text "" -variable autoFormat \
-font $fontNormal -onvalue true -offvalue false
pack $frm_15.lblAutoFormat -side left
pack $frm_15.chkAutoFormat -side left
set wrapList [list none word char]
set frm_28 [frame $editFrm.frmWrap -bg $editor(bg)]
label $frm_28.lblWrap -text [::msgcat::mc "Word wrapping"]\
-width 30 -anchor w -font $fontNormal
set combo2 [ComboBox $frm_28.txtWrap\
-textvariable wrapSet -command "puts 123"\
-selectbackground "#55c4d1" -selectborderwidth 0\
-values "$wrapList"]
pack $frm_28.lblWrap -side left
pack $combo2 -side left
pack $frm_15 $frm_28 $frm_21 -side top -fill x -expand true -padx 5 -pady 2
#### BEGIN of Color setting label and entry build ####
set colorWidgets {
EditFG {Editor foreground}
Proc {Procedure name}
KeyWord {Operators}
Param {Parameters}
SubParam {Subparameters}
Comments {Comments}
Var {Variables}
String {Quote string}
Brace {Braces}
BraceBG {Braces background}
BraceFG {Braces foreground}
Percent Percent
BindKey {Key bindings}
SelectBG {Selection color}
NbNormal {Title normal}
NbModify {Title modify}
Label {Label}
SixFG {Indent foreground}
SixBG {Indent background}
SQL {SQL commands}
BraceQuad {Quad braces}
}
foreach {widgetName widgetText} $colorWidgets {
set frm [frame $editFrm.frmColor$widgetName -bg $editor(bg)]
puts "$frm >$widgetName> $widgetText"
label $frm.lblColor$widgetName -text "[::msgcat::mc $widgetText]"\
-width 30 -anchor w -font $fontNormal
entry $frm.txtColor$widgetName -background $editor(bg)
button $frm.btnColor$widgetName -borderwidth {1} -font $fontNormal \
-command "ColorSelect $frm.txtColor$widgetName $frm.txtColor$widgetName" \
-text "[::msgcat::mc $widgetText]"\
-image [Bitmap::get [file join $imgDir color_selector.gif]]
pack $frm.lblColor$widgetName -side left
pack $frm.txtColor$widgetName -side left -fill x -expand true
pack $frm.btnColor$widgetName -side left
pack $frm -side top -fill x -expand true -padx 5 -pady 2
}
#### END ####
################### NETWORK PREF #########################
set network [$nb insert end network -text "[::msgcat::mc "Network"]" -state disabled]
set scrwin [ScrolledWindow $network.scrwin -relief groove -bd 2]
set scrfrm [ScrollableFrame $network.frm]
pack $scrwin -fill both -expand true
pack $scrfrm -fill both -expand true
$scrwin setwidget $scrfrm
set network [$scrfrm getframe]
set frm_29 [frame $network.frmFtpServer]
label $frm_29.lblFtpServer -text [::msgcat::mc "FTP server"] -width 30\
-anchor w -font $fontNormal
entry $frm_29.txtFtpServer
pack $frm_29.lblFtpServer -side left
pack $frm_29.txtFtpServer -side left -fill x -expand true
set frm_30 [frame $network.frmFtpUser]
label $frm_30.lblFtpUser -text [::msgcat::mc "FTP user"] -width 30\
-anchor w -font $fontNormal
entry $frm_30.txtFtpUser
pack $frm_30.lblFtpUser -side left
pack $frm_30.txtFtpUser -side left -fill x -expand true
set frm_31 [frame $network.frmFtpUserPass]
label $frm_31.lblFtpUserPass -text [::msgcat::mc "FTP password"] -width 30\
-anchor w -font $fontNormal
entry $frm_31.txtFtpUserPass
pack $frm_31.lblFtpUserPass -side left
pack $frm_31.txtFtpUserPass -side left -fill x -expand true
pack $frm_29 $frm_30 $frm_31 -side top -fill x
$nb raise main
# Read a config file #
LoadSettings
}

View File

@@ -1,388 +0,0 @@
# supertext.tcl v1.01
#
# Copyright (c) 1998 Bryan Oakley
# All Rights Reserved
#
# this code is freely distributable, but is provided as-is with
# no waranty expressed or implied.
# send comments to oakley@channelpoint.com
# What is this?
#
# This is a replacement for (or superset of , or subclass of, ...)
# the tk text widget. Its big feature is that it supports unlimited
# undo. It also has two poorly documented options: -preproc and
# -postproc.
# The entry point to this widget is supertext::text; it takes all of
# the same arguments as the standard text widget and exhibits all of
# the same behaviors. The proc supertext::overrideTextCommand may be
# called to have the supertext widget be used whenever the command
# "text" is used (ie: it imports supertext::text as the command "text").
# Use at your own risk...
# To access the undo feature, use ".widget undo". It will undo the
# most recent insertion or deletion. On windows and the mac
# this command is bound to <Control-z>; on unix it is bound to
# <Control-_>
# if you are lucky, you might find documentation here:
# http://www1.clearlight.com/~oakley/tcl/supertext.html
package provide supertext 1.01
namespace eval supertext {
variable undo
variable undoIndex
variable text "::text"
variable preProc
variable postProc
namespace export text
}
# this proc is probably attempting to be more clever than it should...
# When called, it will (*gasp*) rename the tk command "text" to "_text_",
# then import our text command into the global scope.
#
# Use at your own risk!
proc supertext::overrideTextCommand {} {
variable text
set text "::_text_"
rename ::text $text
uplevel #0 namespace import supertext::text
}
proc supertext::text {w args} {
variable text
variable undo
variable undoIndex
variable preProc
variable postProc
# this is what we will rename our widget proc to...
set original __$w
# do we have any of our custom options? If so, process them and
# strip them out before sending them to the real text command
if {[set i [lsearch -exact $args "-preproc"]] >= 0} {
set j [expr $i + 1]
set preProc($original) [lindex $args $j]
set args [lreplace $args $i $j]
} else {
set preProc($original) {}
}
if {[set i [lsearch -exact $args "-postproc"]] >= 0} {
set j [expr $i + 1]
set postProc($original) [lindex $args $j]
set args [lreplace $args $i $j]
} else {
set postProc($original) {}
}
# let the text command create the widget...
eval $text $w $args
# now, rename the resultant widget proc so we can create our own
rename ::$w $original
# here's where we create our own widget proc.
proc ::$w {command args} \
"namespace eval supertext widgetproc $w $original \$command \$args"
# set up platform-specific binding for undo; the only one I'm
# really sure about is winders; the rest will stay the same for
# now until someone has a better suggestion...
switch $::tcl_platform(platform) {
unix {
event add <<Undo>> <Control-z>
event add <<Undo>> <Control-Z>
}
windows {
event add <<Undo>> <Control-z>
event add <<Undo>> <Control-Z>
}
macintosh {
event add <<Undo>> <Control-z>
event add <<Undo>> <Control-Z>
}
}
bind $w <<Undo>> "$w undo"
set undo($original) {}
set undoIndex($original) -1
set clones($original) {}
return $w
}
# this is the command that we associate with a supertext widget.
proc supertext::widgetproc {this w command args} {
variable undo
variable undoIndex
variable preProc
variable postProc
# these will be the arguments to the pre and post procs
set originalCommand $command
set originalArgs $args
# is there a pre-proc? If so, run it. If there is a problem,
# die. This is potentially bad, because once there is a problem
# in a preproc the user must fix the preproc -- there is no
# way to unconfigure the preproc. Oh well. The other choice
# is to ignore errors, but then how will the caller know if
# the proc fails?
if {[info exists preProc($w)] && $preProc($w) != ""} {
if {[catch "$preProc($w) command args" error]} {
return -code error "error during processing of -preproc: $error"
}
}
# if the command is "undo", we need to morph it into the appropriate
# command for undoing the last item on the stack
if {$command == "undo"} {
if {$undoIndex($w) == ""} {
# ie: last command was anything _but_ an undo...
set undoIndex($w) [expr [llength $undo($w)] -1]
}
# if the index is pointing to a valid list element,
# lets undo it...
if {$undoIndex($w) < 0} {
# nothing to undo...
bell
} else {
# data is a list comprised of a command token
# (i=insert, d=delete) and parameters related
# to that token
set data [lindex $undo($w) $undoIndex($w)]
if {[lindex $data 0] == "d"} {
set command "delete"
} else {
set command "insert"
}
set args [lrange $data 1 end]
# adjust the index
incr undoIndex($w) -1
}
}
# now, process the command (either the original one, or the morphed
# undo command
switch $command {
reset_undo {
set undo($w) ""
set undoIndex($w) ""
set result {}
}
configure {
# we have to deal with configure specially, since the
# user could try to configure the -preproc or -postproc
# options...
if {[llength $args] == 0} {
# first, the case where they just type "configure"; lets
# get it out of the way
set list [$w configure]
lappend list [list -preproc preproc Preproc {} $preProc($w)]
lappend list [list -postproc postproc Postproc {} $postProc($w)]
set result $list
} elseif {[llength $args] == 1} {
# this means they are wanting specific configuration
# information
set option [lindex $args 0]
if {$option == "-preproc"} {
set result [list -preproc preproc Preproc {} $preProc($w)]
} elseif {$option == "-postproc"} {
set result [list -postproc postproc Postproc {} $postProc($w)]
} else {
if {[catch "$w $command $args" result]} {
regsub $w $result $this result
return -code error $result
}
}
} else {
# ok, the user is actually configuring something...
# we'll deal with our special options first
if {[set i [lsearch -exact $args "-preproc"]] >= 0} {
set j [expr $i + 1]
set preProc($w) [lindex $args $j]
set args [lreplace $args $i $j]
set result {}
}
if {[set i [lsearch -exact $args "-postproc"]] >= 0} {
set j [expr $i + 1]
set postProc($w) [lindex $args $j]
set args [lreplace $args $i $j]
set result {}
}
# now, process any remaining args
if {[llength $args] > 0} {
if {[catch "$w $command $args" result]} {
regsub $w $result $this result
return -code error $result
}
}
}
}
undo {
# if an undo command makes it to here, that means there
# wasn't anything to undo; this effectively becomes a
# no-op
set result {}
}
insert {
if {[catch {set index [text_index $w [lindex $args 0]]}]} {
set index [lindex $args 0]
}
# since the insert command can have an arbitrary number
# of strings and possibly tags, we need to ferret that out
# now... what a pain!
set myargs [lrange $args 1 end]
set length 0
while {[llength $myargs] > 0} {
incr length [string length [lindex $myargs 0]]
if {[llength $myargs] > 1} {
# we have a tag...
set myargs [lrange $myargs 2 end]
} else {
set myargs [lrange $myargs 1 end]
}
}
# now, let the real widget command do the dirty work
# of inserting the text. If we fail, do some munging
# of the error message so the right widget name appears...
if {[catch "$w $command $args" result]} {
regsub $w $result $this result
return -code error $result
}
# we need this for the undo stack; index2 couldn't be
# computed until after we inserted the data...
set index2 [text_index $w "$index + $length chars"]
if {$originalCommand == "undo"} {
# let's do a "see" so what we just did is visible;
# also, we'll move the insertion cursor to the end
# of what we just did...
$w see $index2
$w mark set insert $index2
} else {
# since the original command wasn't undo, we need
# to reset the undoIndex. This means that the next
# time an undo is called for we'll start at the
# end of the stack
set undoIndex($w) ""
}
# add a delete command on the undo stack.
lappend undo($w) "d $index $index2"
}
delete {
# this converts the insertion index into an absolute address
set index [text_index $w [lindex $args 0]]
# lets get the data we are about to delete; we'll need
# it to be able to undo it (obviously. Duh.)
set data [eval $w get $args]
# add an insert on the undo stack
lappend undo($w) [list "i" $index $data]
if {$originalCommand == "undo"} {
# let's do a "see" so what we just did is visible;
# also, we'll move the insertion cursor to a suitable
# spot
$w see $index
$w mark set insert $index
} else {
# since the original command wasn't undo, we need
# to reset the undoIndex. This means that the next
# time an undo is called for we'll start at the
# end of the stack
set undoIndex($w) ""
}
# let the real widget command do the actual deletion. If
# we fail, do some munging of the error message so the right
# widget name appears...
if {[catch "$w $command $args" result]} {
regsub $w $result $this result
return -code error $result
}
}
default {
# if the command wasn't one of the special commands above,
# just pass it on to the real widget command as-is. If
# we fail, do some munging of the error message so the right
# widget name appears...
if {[catch "$w $command $args" result]} {
regsub $w $result $this result
return -code error $result
}
}
}
# is there a post-proc? If so, run it.
if {[info exists postProc($w)] && $postProc($w) != ""} {
if {[catch "$postProc($w) originalCommand originalArgs" error]} {
return -code error "error during processing of -postproc: $error"
}
}
# we're outta here! (I think this is faster than a
# return, though I'm not 100% sure on this...)
set result $result
}
# this returns a normalized index (ie: line.column), with special
# handling for the index "end"; to undo something we pretty much
# _have_ to have a precise row and column number.
proc supertext::text_index {w i} {
if {$i == "end"} {
set index [$w index "end-1c"]
} else {
set index [$w index $i]
}
return $index
}

View File

@@ -1,56 +0,0 @@
#########################################################
# Tcl/Tk project Manager
# Distributed under GNU Public License
# Author: Sergey Kalinin banzaj28@yandex.ru
# Copyright (c) "Sergey Kalinin", 2002, http://nuk-svk.ru
#########################################################
proc GetTagList {tagFile} {
global tmpDir projDir workDir procList activeProject
if {[file exists $tagFile] == 0} {
return
}
set file [open $tagFile r]
set procList($activeProject) ""
while {[gets $file line]>=0} {
scan $line "%s%s" proc procFile
if {[regexp -nocase -all -- {\s\{.*?\}+\s} $line par]} {
if [info exists procList($activeProject)] {
lappend procList($activeProject) [list $proc $par $procFile]
} else {
set procList($activeProject) [list [list $proc $par $procFile]]
}
}
}
}
proc GetTagList_ {tagFile} {
global tmpDir projDir workDir procList activeProject
if {[file exists $tagFile] == 0} {
return
}
set projName [file rootname $tagFile]
set file [open $tagFile r]
set procList($projName) ""
while {[gets $file line]>=0} {
scan $line "%s%s" proc procFile
if {[regexp -nocase -all -- {\s\{.*?\}+\s} $line par]} {
if [info exists procList($projName)] {
lappend procList($projName) [list $proc $par $procFile]
} else {
set procList($projName) [list [list $proc $par $procFile]]
}
}
}
}

View File

@@ -1,103 +0,0 @@
#!/usr/bin/wish
######################################################
# Tcl/Tk Project Manager
# Distributed under GNU Public License
# Author: Sergey Kalinin banzaj28@yandex.ru
# Copyright (c) "https://nuk-svk.ru", 2018
# Home: https://bitbucket.org/svk28/projman
######################################################
#
# Toolbar create procedures
#
######################################################
proc Separator {} {
global sepIndex editor
set f [frame .frmTool.separator$sepIndex -width 15 -border 1 \
-background $editor(bg) -relief raised]
incr sepIndex 1
return $f
}
proc CreateToolBar {} {
global toolBar fontNormal fontBold noteBook tree imgDir editor
if {$toolBar == "Yes"} {
set bboxFile [ButtonBox .frmTool.bboxFile -spacing 0 -padx 1 -pady 1 -bg $editor(bg)]
add_toolbar_button $bboxFile new.png {AddToProjDialog file [$noteBookFiles raise]} [::msgcat::mc "Create new file"]
#add_toolbar_button $bboxFile open.png {FileDialog $tree open} [::msgcat::mc "Open file"]
add_toolbar_button $bboxFile save.png {FileDialog $tree save} [::msgcat::mc "Save file"]
add_toolbar_button $bboxFile save_as.png {FileDialog $tree save_as} [::msgcat::mc "Save file as"]
add_toolbar_button $bboxFile save_all.png {FileDialog $tree save_all} [::msgcat::mc "Save all"]
add_toolbar_button $bboxFile printer.png {PrintDialog} [::msgcat::mc "Print ..."]
add_toolbar_button $bboxFile close.png {FileDialog $tree close} [::msgcat::mc "Close"]
set bboxEdit [ButtonBox .frmTool.bboxEdit -spacing 0 -padx 5 -pady 1 -bg $editor(bg)]
add_toolbar_button $bboxEdit copy.png {TextOperation copy} [::msgcat::mc "Copy into clipboard"]
add_toolbar_button $bboxEdit cut.png {TextOperation cut} [::msgcat::mc "Cut into clipboard"]
add_toolbar_button $bboxEdit paste.png {TextOperation paste} [::msgcat::mc "Paste from clipboard"]
add_toolbar_button $bboxEdit undo.png {TextOperation undo} [::msgcat::mc "Undo"]
add_toolbar_button $bboxEdit redo.png {TextOperation redo} [::msgcat::mc "Redo"]
set bboxProj [ButtonBox .frmTool.bboxProj -spacing 0 -padx 1 -pady 1 -bg $editor(bg)]
add_toolbar_button $bboxProj doit.png {MakeProj run proj} [::msgcat::mc "Running project"]
add_toolbar_button $bboxProj doit_file.png {MakeProj run file} [::msgcat::mc "Running file"]
add_toolbar_button $bboxProj archive.png {MakeTGZ} [::msgcat::mc "Make TGZ"]
set bboxHelp [ButtonBox .frmTool.bboxHelp -spacing 0 -padx 1 -pady 1 -bg $editor(bg)]
add_toolbar_button $bboxHelp help.png {ShowHelp} [::msgcat::mc "Help"]
# GoTo field
set frm [frame .frmTool.frmGoto -bg $editor(bg) -border 0 ]
GoToLineButton $frm
pack $bboxFile [Separator] $bboxEdit [Separator] $bboxProj [Separator] $bboxHelp [Separator] $frm -side left -anchor w
# Create menubutton and menu
image create photo menu.png -format png -file [file join $imgDir menu.png]
menubutton .frmTool.menu -menu .frmTool.menu.m -font $fontNormal -bg $editor(bg) -fg $editor(fg) \
-image menu.png
set m [menu .frmTool.menu.m -bg $editor(bg) -fg $editor(fg)]
GetFileMenu $m
$m add separator
$m add cascade -label [::msgcat::mc "Project"] -menu $m.project -font $fontNormal
GetProjMenu [menu $m.project -bg $editor(bg) -fg $editor(fg)]
$m add cascade -label [::msgcat::mc "Edit"] -menu $m.edit -font $fontNormal
GetMenu [menu $m.edit -bg $editor(bg) -fg $editor(fg)]
#$m add cascade -label [::msgcat::mc "View"] -menu $m.view -font $fontNormal
#GetViewMenu [menu $m.view -bg $editor(bg) -fg $editor(fg)]
$m add cascade -label [::msgcat::mc "Modules"] -menu $m.modules -font $fontNormal
GetModulesMenu [menu $m.modules -bg $editor(bg) -fg $editor(fg)]
$m add cascade -label [::msgcat::mc "Help"] -menu $m.help -font $fontNormal
GetHelpMenu [menu $m.help -bg $editor(bg) -fg $editor(fg)]
pack .frmTool.menu -side right
}
}
## TOOLBAR ##
proc add_toolbar_button {path icon command helptext} {
global editor imgDir
image create photo $icon -format png -file [file join $imgDir $icon]
$path add -image $icon \
-highlightthickness 0 -takefocus 0 -relief link -bd 1 -activebackground $editor(bg)\
-padx 2 -pady 2 -command $command -helptext $helptext
}
# Separator for toolbar
proc GoToLineButton {w} {
global noteBook fontNormal editor
label $w.text -text [::msgcat::mc "Line number"] -font $fontNormal \
-bg $editor(bg) -fg $editor(fg)
entry $w.entGoTo -width 6 -validate key -validatecommand "ValidNumber %W %P" \
-bg $editor(bg) -fg $editor(fg) -relief sunken -border 1 -highlightthickness 0
pack $w.text $w.entGoTo -side left -padx 2 -pady 2
bind $w.entGoTo <Return> "+ToolBarGoToLineNumber $w"
balloon $w.entGoTo set [::msgcat::mc "Goto line"]
}

View File

@@ -1,87 +0,0 @@
######################################################
# Tcl/Tk Project Manager
# Distributed under GNU Public License
# Author: Serge Kalinin banzaj28@yandex.ru
# Copyright (c) "https://nuk-svk.ru"
# 2018, https://bitbucket.org/svk28/projman
######################################################
#
# Transliterate cyrilic symbols into latins
#
######################################################
proc Translit {line} {
return [
string map {
"А" "A"
"Б" "B"
"В" "V"
"Г" "G"
"Д" "D"
"Е" "E"
"Ё" "E"
"Ж" "ZH"
"З" "Z"
"И" "I"
"Й" "J"
"К" "K"
"Л" "L"
"М" "M"
"Н" "N"
"О" "O"
"П" "P"
"Р" "R"
"С" "S"
"Т" "T"
"У" "U"
"Ф" "F"
"Х" "H"
"Ч" "CH"
"Ш" "SH"
"Щ" "SCH"
"Ь" ""
"Ы" "Y"
"Ъ" ""
"Э" "E"
"Ю" "U"
"Я" "IA"
"а" "a"
"б" "b"
"в" "v"
"г" "g"
"д" "d"
"е" "e"
"ё" "e"
"ж" "zh"
"з" "z"
"и" "i"
"й" "j"
"к" "k"
"л" "l"
"м" "m"
"н" "n"
"о" "o"
"п" "p"
"р" "r"
"с" "s"
"т" "t"
"у" "u"
"ф" "f"
"х" "h"
"ц" "c"
"ч" "ch"
"ш" "sh"
"щ" "sch"
"ь" ""
"ы" "y"
"ъ" ""
"э" "e"
"ю" "u"
"я" "ia"
} $line
]
}

View File

@@ -1,389 +1,86 @@
#####################################################
# Tcl/Tk Project Manager
#!/usr/bin/wish
######################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin s.v.kalinin28@gmail.com
# Copyright (c) "https://nuk-svk.ru", 2018
# Git repo: https://bitbucket.org/svk28/projman
####################################################
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "", 2022, https://nuk-svk.ru
######################################################
#
# Procedure for operation wwith Tree widget
# Tree widget working module
#
####################################################
######################################################
proc GetAllDirs {treeFiles} {
global projDir workDir fontNormal imgDir module env
set rList ""
set rootDir $env(HOME)
if {[catch {cd $rootDir}] != 0} {
return ""
}
set rootNode [$treeFiles insert end root $rootDir -text "$rootDir" -font $fontNormal \
-data "dir_root" -open 1\
-image [Bitmap::get [file join $imgDir folder.gif]]]
GetFiles $treeFiles $rootNode [file join $rootDir]
$treeFiles configure -redraw 1
}
proc GetFilesSubdir {tree node dir} {
global fontNormal projDir workDir activeProject imgDir
global backUpFileShow dotFileShow
set rList ""
puts "$tree $node $dir"
if {[catch {cd $dir}] != 0} {
return ""
}
if {$dotFileShow eq "Yes"} {
foreach file [lsort [glob -nocomplain .*]] {
if {$file != "." || $file != ".."} {
lappend rList [list [file join $dir $file]]
set fileName [file join $dir $file]
GetFile $tree $fileName $parent
namespace eval Tree {
proc InsertItem {tree parent item type text} {
# set img [GetImage $fileName]
set dot "_"
puts "$tree $parent $item $type $text"
switch $type {
file {
regsub -all {\.|/|\\|\s} $item "_" subNode
puts $subNode
set image imgFile
}
directory {
regsub -all {\.|/|\\|\s} $item "_" subNode
puts $subNode
set image folder
}
}
}
foreach file [lsort [glob -nocomplain *]] {
lappend rList [list [file join $dir $file]]
set fileName [file join $dir $file]
GetFile $tree $fileName $parent
}
$tree itemconfigure $node -open 1
}
## GETTING FILES FROM PROJECT DIR AND INSERT INTO TREE WIDGET ##
proc GetFile {tree fileName parent} {
global fontNormal backUpFileShow dotFileShow imgDir
set img [GetImage $fileName]
set dot "_"
regsub -all {\.|/|\\} $fileName "_" subNode
puts $subNode
if {[$tree exists $subNode] != 1} {
$tree insert end $parent $subNode -text [file tail $fileName] \
-data $fileName -open 1\
-image [Bitmap::get [file join $imgDir $img.gif]]\
-font $fontNormal
}
}
proc GetFiles {tree parent dir} {
global fontNormal backUpFileShow dotFileShow imgDir
set rList ""
puts "$dir $parent $tree"
if {[catch {cd $dir}] != 0} {
return ""
}
if {$dotFileShow eq "Yes"} {
foreach file [lsort [glob -nocomplain .*]] {
if {$file != "." || $file != ".."} {
lappend rList [list [file join $dir $file]]
set fileName [file join $dir $file]
GetFile $tree $fileName $parent
}
append id $type "::" $subNode
puts $id
if ![$tree exists $id] {
$tree insert $parent end -id "$id" -text $text -values "$item" -image $image
}
return "$id"
}
foreach file [lsort [glob -nocomplain *]] {
lappend rList [list [file join $dir $file]]
set fileName [file join $dir $file]
GetFile $tree $fileName $parent
}
$tree configure -redraw 1
}
## GETTING PROJECT NAMES FROM DIR AND PUTS INTO
proc GetProj {tree} {
global projDir workDir fontNormal imgDir module
set rList ""
#set tree .frmBody.frmCat.noteBook.fprojects.frmTree.tree
proc DoublePressItem {tree} {
set id [$tree selection]
$tree tag remove selected
$tree item $id -tags selected
if {[catch {cd $workDir}] != 0} {
return ""
}
foreach proj [lsort [glob -nocomplain *.proj]] {
lappend rList [list [file join $workDir $proj]]
set projFile [open [file join $workDir $proj] r]
set prjName [file rootname $proj]
while {[gets $projFile line]>=0} {
scan $line "%s" keyWord
set string [string range $line [string first "\"" $line] [string last "\"" $line]]
set string [string trim $string "\""]
if {$keyWord == "ProjectName"} {
regsub -all " " $string "_" project
set projName "$string"
set values [$tree item $id -values]
set key [lindex [split $id "::"] 0]
if {$values eq "" || $key eq ""} {return}
puts "$key $tree $values"
switch $key {
directory {
FileOper::ReadFolder $values
}
if {$keyWord == "ProjectDirName"} {
set projList($prjName) [file dirname $string]
#puts "$tree $projList($prjName) - $prjName - $string"
$tree insert end root $prjName -text "$projName" -font $fontNormal \
-data "prj_$prjName" -open 0\
-image [Bitmap::get [file join $imgDir folder.gif]]
#puts "GetFiles $tree $prjName $string"
GetFiles $tree $prjName $string
#$tree itemconfigure $prjName -open 1
file {
FileOper::Edit $values
# $tree item $id -open false
}
}
}
$tree configure -redraw 1
}
## SHOW PUP-UP MENUS ##
proc PopupMenuFileTree {treeFiles x y} {
if {[$treeFiles selection get] != ""} {
set node [$treeFiles selection get]
$treeFiles selection set $node
} else {
return
}
if {[info exists fileList($node)] != 1} {
tk_popup .popupFile $x $y
}
}
proc PopupMenuTree {x y} {
global tree fontNormal fontBold imgDir activeProject
if {[$tree selection get] != ""} {
set node [$tree selection get]
$tree selection set $node
} else {
return
}
#$tree selection set $node
set item [$tree itemcget $node -data]
if {[string range $item 0 2] == "prj"} {
set activeProject [string range $item 4 end]
.frmStatus.frmActive.lblActive configure -text [$tree itemcget $node -text] -font $fontBold
tk_popup .popupProj $x $y
return
}
if {[info exists fileList($node)] != 1} {
# set fileList($node) $item
tk_popup .popupFile $x $y
}
}
## OPEN TREE PROCEDURE
proc TreeOpen {node} {
global fontNormal tree projDir workDir activeProject fileList noteBook findString imgDir fontBold
set tree [GetTreeForNode $node]
$tree selection set $node
set item [$tree itemcget $node -data]
if {[string range $item 0 2] == "prj"} {
set activeProject [string range $item 4 end]
#puts $activeProject
.frmStatus.frmActive.lblActive configure -text [$tree itemcget $node -text] -font $fontBold
$tree itemconfigure $node -image [Bitmap::get [file join $imgDir openfold.gif]]
if {[file exists [file join $workDir $activeProject.tags]] == 1} {
GetTagList [file join $workDir $activeProject.tags] ;# geting tag list
} else {
DoModule ctags
}
}
if {[info exists fileList($node)] != 1} {
set fileList($node) $item
if {[file isdirectory $item] == 1} {
$tree itemconfigure $node -image [Bitmap::get [file join $imgDir openfold.gif]]
}
}
}
## CLOSE TREE PROCEDURE ##
proc TreeClose {node} {
global fontNormal tree projDir workDir activeProject fileList noteBook findString imgDir fontBold
set tree [GetTreeForNode $node]
$tree selection set $node
set item [$tree itemcget $node -data]
if {[string range $item 0 2] == "prj"} {
$tree itemconfigure $node -image [Bitmap::get [file join $imgDir folder.gif]]
}
if {[info exists fileList($node)] != 1} {
if {[file isdirectory $item] == 1} {
$tree itemconfigure $node -image [Bitmap::get [file join $imgDir folder.gif]]
}
}
}
## TREE ONE CLICK PROCEDURE ##
proc TreeOneClick {tree node} {
global noteBook fontNormal projDir workDir activeProject fileList noteBook findString imgDir fontBold
$tree selection get
$tree selection set $node
set item [$tree itemcget $node -data]
if {[string range $item 0 2] == "prj"} {
set activeProject [string range $item 4 end]
.frmStatus.frmActive.lblActive configure -text [$tree itemcget $node -text] -font $fontBold
if {[file exists [file join $workDir $activeProject.tags]] == 1} {
GetTagList [file join $workDir $activeProject.tags] ;# geting tag list
}
return
} elseif {[file isdirectory $item] == 1} {
if {[$noteBook index $node] == -1} {
return
}
} elseif {[file isfile $item] == 1 } {
LabelUpdate .frmStatus.frmHelp.lblHelp [FileAttr $item]
if {[$noteBook index $node] != -1} {
PageRaise $tree $node
if {[file exists $item] == 1} {
proc PressItem {tree} {
set id [$tree selection]
$tree tag remove selected
$tree item $id -tags selected
set values [$tree item $id -values]
set key [lindex [split $id "::"] 0]
if {$values eq "" || $key eq ""} {return}
puts "$key $tree $values"
switch $key {
directory {
FileOper::ReadFolder $values
# $tree item $id -open false
}
file {
FileOper::Edit $values
}
}
} elseif {[string range $item 0 2] == "prc"} {
set parent [$tree parent $node]
set file [$tree itemcget $parent -data]
set fileExt [string range [file extension $file] 1 end]
if {[info exists fileList($parent)] == 0} {
EditFile $parent $file
}
PageRaise $tree $parent
$tree selection set $node
set text "$noteBook.f$parent.text"
set index1 [expr [string first "_" $item]+1]
set index2 [expr [string last "_" $item]11]
if {$fileExt == "java" || $fileExt == "ja"} {
set findString "class [string range $item $index1 $index2] "
} elseif {$fileExt == "perl" || $fileExt == "pl"} {
set findString "sub [string range $item $index1 $index2]"
} elseif {$fileExt == "ml" || $fileExt == "mli"} {
set findString "let [string range $item $index1 $index2]"
} elseif {$fileExt == "php" || $fileExt == "phtml"} {
set findString "function [string range $item $index1 $index2]"
#puts $findString
#return
} elseif {$fileExt == "rb"} {
set findString "class [string range $item $index1 $index2]"
} else {
set findString "proc [string range $item $index1 $index2] "
}
FindProc $text $findString $node
focus -force $text
}
#
}
## TREE DOUBLE CLICK PROCEDURE ##
proc TreeDoubleClick {tree node} {
global fontNormal projDir workDir activeProject fileList noteBook findString imgDir fontBold noteBook
$tree selection set $node
set item [$tree itemcget $node -data]
if {[$tree itemcget $node -open ] == 1} {
puts " $item $tree itemcget $node -open"
$tree closetree $node
} elseif {[$tree itemcget $node -open ] == 0} {
puts " $item $tree itemcget $node -open"
$tree opentree $node
}
$tree opentree $node
if {[string range $item 0 2] == "prj"} {
# node is project
set activeProject [string range $item 4 end]
.frmStatus.frmActive.lblActive configure -text [$tree itemcget $node -text] -font $fontBold
#GetFilesSubdir $tree $node $item
} elseif {[file isdirectory $item] ==1} {
# node is directory
GetFiles $tree $node $item
#puts "GetFiles $tree $node $item"
} elseif {[string range $item 0 2] == "prc"} {
# node is procedure (class, function, etc)
$tree selection set $node
set parent [$tree parent $node]
if {[info exists fileList($parent)] != 1} {
set file [$tree itemcget $parent -data]
EditFile $parent $file
$noteBook raise $parent
} else {
$noteBook raise $parent
}
set text "$noteBook.f$parent.text"
set index1 [expr [string first "_" $item]+1]
set index2 [expr [string last "_" $item]11]
set findString "proc [string range $item $index1 $index2] "
FindProc $text $findString $node
focus -force $text
} elseif {[file isfile $item] == 1} {
#puts [$noteBook index $node]
if {[$noteBook index $node] != -1} {
#puts "File тута $node"
puts "fileList($node) $fileList($node)"
} else {
EditFile $tree $node $item
}
} else {
return
}
}
## UPDATE TREE ##
proc UpdateTree {} {
global tree
$tree delete [$tree nodes root]
GetProj $tree
}
proc GetTreeForNode {node} {
if {[.frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles exists $node] ==1} {
return .frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles
} elseif {[.frmBody.frmCat.noteBook.fprojects.frmTree.tree exists $node] ==1} {
return .frmBody.frmCat.noteBook.fprojects.frmTree.tree
}
}
proc FileNotePageRaise {nb s} {
global workingTree
if {$nb eq "files"} {
set workingTree .frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles
} elseif {$nb eq "projects"} {
set workingTree .frmBody.frmCat.noteBook.fprojects.frmTree.tree
} else {
puts "Error node"
return
}
}
proc SortTree {nbNode} {
global fontNormal imgDir
if {$nbNode eq "files"} {
set tree .frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles
} elseif {$nbNode eq "projects"} {
set tree .frmBody.frmCat.noteBook.fprojects.frmTree.tree
}
SortTreeNodes $tree [$tree selection get]
}
proc SortTreeNodes {tree rootNode} {
global fontNormal imgDir
foreach i [lsort [$tree nodes $rootNode]] {
#puts "$i [$tree itemcget $i -data]"
set nodeData [$tree itemcget $i -data]
set nodeText [$tree itemcget $i -text]
set nodeImage [$tree itemcget $i -image]
set subNodeList [$tree nodes $i]
if {$subNodeList ne "" } {
foreach j $subNodeList {
lappend nodes($j) [$tree itemcget $j -data]
lappend nodes($j) [$tree itemcget $j -text]
lappend nodes($j) [$tree itemcget $j -image]
#puts "--$nodes($i)"
}
}
$tree delete $i
$tree insert end $rootNode $i -text "$nodeText" -font $fontNormal \
-data $nodeData -open 0\
-image $nodeImage
#-image [Bitmap::get [file join $imgDir folder.gif]]
if {[info exists nodes]} {
foreach g [array names nodes] {
#puts ">$rootNode >> $nodes($g)"
#puts ">>> [lindex $nodes($g) 0] : [lindex $nodes($g) 1] : [lindex $nodes($g) 2]"
#puts "$tree insert end $i $g -text [lindex $nodes($g) 1] -font $fontNormal \
#-data [lindex $nodes($g) 0] -open 0\
#-image [lindex $nodes($g) 2]"
$tree insert end $i $g -text [lindex $nodes($g) 1] -font $fontNormal \
-data [lindex $nodes($g) 0] -open 0\
-image [lindex $nodes($g) 2]
#SortTreeNodes $tree $g
}
unset nodes
proc GetItemID {tree item} {
if [$tree exists $item] {
return [$tree item $item -values]
}
}
#puts $nodeList
}