New version of ProjMan
This commit is contained in:
424
lib/about.tcl
424
lib/about.tcl
@@ -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
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
||||
|
@@ -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
82
lib/config.tcl
Normal 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
|
||||
}
|
1515
lib/editor.tcl
1515
lib/editor.tcl
File diff suppressed because it is too large
Load Diff
@@ -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
180
lib/files.tcl
Normal 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
164
lib/gui.tcl
Normal 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
|
||||
# #
|
||||
|
327
lib/help.tcl
327
lib/help.tcl
@@ -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
44
lib/highlight.tcl
Normal 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 {"'`}
|
||||
}
|
||||
}
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
|
1437
lib/html_lib.tcl
1437
lib/html_lib.tcl
File diff suppressed because it is too large
Load Diff
126
lib/image_library.tcl
Normal file
126
lib/image_library.tcl
Normal 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=
|
||||
}
|
@@ -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}"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
389
lib/main.tcl
389
lib/main.tcl
@@ -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 {
|
||||
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
|
||||
}
|
||||
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
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
223
lib/menu.tcl
223
lib/menu.tcl
@@ -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
133
lib/msgs/de.msg
Normal 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
188
lib/msgs/en.msg
Normal 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
135
lib/msgs/fr.msg
Normal 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
192
lib/msgs/ru.msg
Normal 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
38
lib/notebook.tcl
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
106
lib/pane.tcl
106
lib/pane.tcl
@@ -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]
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
1016
lib/projects.tcl
1016
lib/projects.tcl
File diff suppressed because it is too large
Load Diff
672
lib/settings.tcl
672
lib/settings.tcl
@@ -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
|
||||
}
|
||||
|
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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]]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
103
lib/toolbar.tcl
103
lib/toolbar.tcl
@@ -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"]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
433
lib/tree.tcl
433
lib/tree.tcl
@@ -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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user