Fixed AddToProj procedure for file browser tree

Disable OpComplite procedure
This commit is contained in:
Sergey Kalinin 2018-02-22 15:45:46 +03:00
parent 9f4ee1ad33
commit 830bcfeb2f
5 changed files with 102 additions and 147 deletions

View File

@ -1,14 +1,16 @@
######################################################### ##########################################################
# Tcl/Tk Project Manager # Tcl/Tk Project Manager
# Distributed under GNU Public License # Distributed under GNU Public License
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru # Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru
# Author: Sergey Kalinin banzaj28@yandex.ru # Author: Sergey Kalinin banzaj28@yandex.ru
######################################################### ##########################################################
0.4.5 0.4.5
22.02.2018 22.02.2018
- Refactoring Settigs procedure source code - Refactoring Settigs procedure source code
- Some changes into messages files (localisation) - Some changes into messages files (localisation)
- Fixed AddToProj procedure for file browser tree
- Disable OpComplite procedure
20.02.2018 20.02.2018
- Refactoring auto update file structure (tree). Now structure updated when file was saving - Refactoring auto update file structure (tree). Now structure updated when file was saving
@ -388,8 +390,3 @@ characters to the right of the insertion cursor.
- Fix small error with delete project procedure - Fix small error with delete project procedure
- Fix uncorrect cursor position counter into editor - Fix uncorrect cursor position counter into editor

View File

@ -20,6 +20,29 @@ proc GetOp {} {
set opList(method) "\{\} \{\n\n\}" set opList(method) "\{\} \{\n\n\}"
set opList(class) "\{\n\n\}" set opList(class) "\{\n\n\}"
} }
## COMPLITE PRODEDURE AND OPERATOR ##
proc OpComplite {text fileExt node} {
global opList autoFormat fileList
if {$node == "newproj" || $node == "settings" || $node == "about"} {return}
set pos [$text index insert]
set line [lindex [split $pos "."] 0]
set posNum [lindex [split $pos "."] 1]
set string [$text get $line.0 $pos]
set first [string wordstart $string [expr $posNum-1]]
set op [string range $string $first $posNum]
if {[info exists opList($op)] == 1} {
if {[string match "*\{" [$text get $pos $line.end]] != 1} {
$text insert $pos $opList($op)
set x [expr $posNum + 2]
$text mark set insert $line.$posNum
$text see $line.$posNum
} else {
return
}
}
}
## Alexander Dederer (aka Korwin) dederer-a@mail.ru ## ## Alexander Dederer (aka Korwin) dederer-a@mail.ru ##
## SETTING DEFAULT STYLE FOR TEXT WIDGET ## ## SETTING DEFAULT STYLE FOR TEXT WIDGET ##
proc SetDefStyle { text args } { proc SetDefStyle { text args } {
@ -364,28 +387,6 @@ proc Replace {text incr} {
} }
# focus -force .replace # focus -force .replace
} }
## COMPLITE PRODEDURE AND OPERATOR ##
proc OpComplite {text fileExt node} {
global opList autoFormat fileList
if {$node == "newproj" || $node == "settings" || $node == "about"} {return}
set pos [$text index insert]
set line [lindex [split $pos "."] 0]
set posNum [lindex [split $pos "."] 1]
set string [$text get $line.0 $pos]
set first [string wordstart $string [expr $posNum-1]]
set op [string range $string $first $posNum]
if {[info exists opList($op)] == 1} {
if {[string match "*\{" [$text get $pos $line.end]] != 1} {
$text insert $pos $opList($op)
set x [expr $posNum + 2]
$text mark set insert $line.$posNum
$text see $line.$posNum
} else {
return
}
}
}
## OPEN AND CLOSE BRACE HIGHLIGHT ## ## OPEN AND CLOSE BRACE HIGHLIGHT ##
proc BraceHighLight {text} { proc BraceHighLight {text} {
set pos [$text index insert] set pos [$text index insert]
@ -416,37 +417,6 @@ proc PageTab {key} {
} }
} }
proc _PageTab {} {
global noteBook tree fileList editor
set nodeList [$noteBook pages 0 end]
set length [llength $nodeList]
set node [$noteBook raise]
set nodeIndex [$noteBook index $node]
if {$nodeIndex == [expr $length-1]} {
set nextNode [$noteBook page 0]
} else {
set nextNode [$noteBook page [expr $nodeIndex + 1]]
}
$noteBook raise $nextNode
if {$nextNode == "newproj" || $nextNode == "settings" || $nextNode == "about" || $nextNode == "debug"} {
return
} else {
$tree selection set $nextNode
$tree see $nextNode
set item [$tree itemcget $nextNode -data]
focus -force $noteBook.f$nextNode.text
LabelUpdate .frmStatus.frmHelp.lblHelp "[FileAttr $item]"
LabelUpdate .frmStatus.frmFile.lblFile "[file size $item] b."
if {[lindex $fileList($nextNode) 1] == 0} {
LabelUpdate .frmStatus.frmProgress.lblProgress ""
$noteBook itemconfigure $node -foreground $editor(nbNormal)
} else {
LabelUpdate .frmStatus.frmProgress.lblProgress [::msgcat::mc "File modify"]
$noteBook itemconfigure $node -foreground $editor(nbModify)
}
}
}
## RAISED NOTEBOOK TAB IF CLICK MOUSE BUTTON ## ## RAISED NOTEBOOK TAB IF CLICK MOUSE BUTTON ##
proc PageRaise {tree node} { proc PageRaise {tree node} {
global noteBook fileList editor nodeEdit noteBookFiles global noteBook fileList editor nodeEdit noteBookFiles
@ -744,7 +714,7 @@ proc EditFile {tree node fileName} {
bind $text <Key-space> { bind $text <Key-space> {
if {$nodeEdit == ""} {return} if {$nodeEdit == ""} {return}
set textEdit "$noteBook.f$nodeEdit.text" set textEdit "$noteBook.f$nodeEdit.text"
OpComplite $textEdit $fileExt $nodeEdit #OpComplite $textEdit $fileExt $nodeEdit
if {[lindex $fileList($nodeEdit) 1] == 0} { if {[lindex $fileList($nodeEdit) 1] == 0} {
set fileList($nodeEdit) [list [lindex $fileList($nodeEdit) 0] 1] set fileList($nodeEdit) [list [lindex $fileList($nodeEdit) 0] 1]
LabelUpdate .frmStatus.frmProgress.lblProgress [::msgcat::mc "File modify"] LabelUpdate .frmStatus.frmProgress.lblProgress [::msgcat::mc "File modify"]
@ -981,6 +951,3 @@ proc ReadFileStructure {mod line lineNumber tree node} {
#################################### ####################################
GetOp GetOp

View File

@ -129,9 +129,9 @@ menubutton .frmMenu.mnuFile -text [::msgcat::mc "File"] -menu .frmMenu.mnuFile.m
set m [menu .frmMenu.mnuFile.m -bg $editor(bg) -fg $editor(fg)] set m [menu .frmMenu.mnuFile.m -bg $editor(bg) -fg $editor(fg)]
$m add cascade -label [::msgcat::mc "New"] -menu $m.new -font $fontNormal $m add cascade -label [::msgcat::mc "New"] -menu $m.new -font $fontNormal
set mn [menu $m.new -bg $editor(bg) -fg $editor(fg)] set mn [menu $m.new -bg $editor(bg) -fg $editor(fg)]
$mn add command -label [::msgcat::mc "New file"] -command {AddToProjDialog file}\ $mn add command -label [::msgcat::mc "New file"] -command {AddToProjDialog file [$noteBookFiles raise]}\
-font $fontNormal -accelerator "Ctrl+N" -font $fontNormal -accelerator "Ctrl+N"
$mn add command -label [::msgcat::mc "New directory"] -command {AddToProjDialog directory}\ $mn add command -label [::msgcat::mc "New directory"] -command {AddToProjDialog directory [$noteBookFiles raise]}\
-font $fontNormal -accelerator "Ctrl+N" -font $fontNormal -accelerator "Ctrl+N"
$mn add command -label [::msgcat::mc "New project"] -command {NewProjDialog "new"}\ $mn add command -label [::msgcat::mc "New project"] -command {NewProjDialog "new"}\
-font $fontNormal -font $fontNormal
@ -222,8 +222,8 @@ bind . <F8> {MakeProj compile proj}
bind . <Control-F8> {MakeProj compile file} bind . <Control-F8> {MakeProj compile file}
bind . <F9> {MakeProj run proj} bind . <F9> {MakeProj run proj}
bind . <Control-F9> {MakeProj run file} bind . <Control-F9> {MakeProj run file}
bind . <Control-ograve> {AddToProjDialog file} bind . <Control-ograve> {AddToProjDialog file [$noteBookFiles raise]}
bind . <Control-n> {AddToProjDialog file} bind . <Control-n> {AddToProjDialog file [$noteBookFiles raise]}
#bind . <Control-ocircumflex> AddToProjDialog #bind . <Control-ocircumflex> AddToProjDialog
#bind . <Control-a> AddToProjDialog #bind . <Control-a> AddToProjDialog
bind . <Control-eacute> Quit bind . <Control-eacute> Quit
@ -315,12 +315,14 @@ bind $frmTree.tree.c <Return> {
TreeDoubleClick $tree $node TreeDoubleClick $tree $node
} }
$noteBookFiles bindtabs <ButtonRelease-1> "FileNotePageRaise [$noteBookFiles raise]"
## POPUP FILE-MENU ## ## POPUP FILE-MENU ##
set m .popupFile set m .popupFile
menu $m -font $fontNormal -bg $editor(bg) -fg $editor(fg) menu $m -font $fontNormal -bg $editor(bg) -fg $editor(fg)
$m add command -label [::msgcat::mc "New file"] -command {AddToProjDialog file}\ $m add command -label [::msgcat::mc "New file"] -command {AddToProjDialog file [$noteBookFiles raise]}\
-font $fontNormal -accelerator "Ctrl+N" -font $fontNormal -accelerator "Ctrl+N"
$m add command -label [::msgcat::mc "New directory"] -command {AddToProjDialog directory}\ $m add command -label [::msgcat::mc "New directory"] -command {AddToProjDialog directory [$noteBookFiles raise]}\
-font $fontNormal -accelerator "Alt + Ctrl+N" -font $fontNormal -accelerator "Alt + Ctrl+N"
$m add command -label [::msgcat::mc "Open"] -command {FileDialog [$noteBookFiles raise] open}\ $m add command -label [::msgcat::mc "Open"] -command {FileDialog [$noteBookFiles raise] open}\
-font $fontNormal -accelerator "Ctrl+O" -state disable -font $fontNormal -accelerator "Ctrl+O" -state disable
@ -342,7 +344,7 @@ $m add command -label [::msgcat::mc "Compile file"] -command {MakeProj compile f
$m add command -label [::msgcat::mc "Run file"] -command {MakeProj run file} -font $fontNormal \ $m add command -label [::msgcat::mc "Run file"] -command {MakeProj run file} -font $fontNormal \
-accelerator "Ctrl+F9" -accelerator "Ctrl+F9"
$m add separator $m add separator
$m add command -label [::msgcat::mc "Add to existing project"] -command {AddToProjDialog ""} \ $m add command -label [::msgcat::mc "Add to existing project"] -command {AddToProjDialog "" [$noteBookFiles raise]} \
-font $fontNormal -state disable -font $fontNormal -state disable
$m add command -label [::msgcat::mc "Add as new project"] -command {OpenProj [$noteBookFiles raise]} -font $fontNormal $m add command -label [::msgcat::mc "Add as new project"] -command {OpenProj [$noteBookFiles raise]} -font $fontNormal
@ -393,11 +395,3 @@ if {[info exists workingProject]} {
} }
} }

View File

@ -1,12 +1,10 @@
####################################### ##################################################
# Tcl/Tk Project Manager # Tcl/Tk Project Manager
# Distributed under GNU Public License # Distributed under GNU Public License
# Author: Serge Kalinin banzaj28@yandex.ru # Author: Serge Kalinin banzaj28@yandex.ru
# Copyright (c) "https://nuk-svk.ru", 2018, # Copyright (c) "https://nuk-svk.ru", 2018,
# Home: https://bitbucket.org/svk28/projman # Home: https://bitbucket.org/svk28/projman
####################################### ##################################################
## ADD FILE INTO PROJECTS ##
proc NewProj {type proj l} { proc NewProj {type proj l} {
global fontNormal fontBold tree projDir workDir activeProject fileList noteBook imgDir prjDir global fontNormal fontBold tree projDir workDir activeProject fileList noteBook imgDir prjDir
@ -499,21 +497,23 @@ proc AddNewProjectIntoTree {proj} {
} }
} }
proc AddToProj {fileName mode} { ## ADD FILE INTO PROJECTS ##
global projDir workDir activeProject tree noteBook fontNormal imgDir tree proc AddToProj {fileName mode workingTree} {
global projDir workDir activeProject noteBook fontNormal imgDir
set type [string trim [file extension $fileName] {.}] set type [string trim [file extension $fileName] {.}]
destroy .addtoproj destroy .addtoproj
set node [$tree selection get] set node [$workingTree selection get]
set fullPath [$tree itemcget $node -data] #puts "$fileName $mode $workingTree $node"
set fullPath [$workingTree itemcget $node -data]
if {[file isdirectory $fullPath] == 1} { if {[file isdirectory $fullPath] == 1} {
set dir $fullPath set dir $fullPath
set parentNode $node set parentNode $node
} else { } else {
set dir [file dirname $fullPath] set dir [file dirname $fullPath]
set parentNode [$tree parent $node] set parentNode [$workingTree parent $node]
} }
#puts "$node $parentNode $workingTree $fullPath"
if {$type == "tcl"} { if {$type == "tcl"} {
set img "tcl" set img "tcl"
@ -548,12 +548,12 @@ proc AddToProj {fileName mode} {
set name [file rootname $fileName] set name [file rootname $fileName]
set ext [string range [file extension $fileName] 1 end] set ext [string range [file extension $fileName] 1 end]
set subNode "$name$dot$ext" set subNode "$name$dot$ext"
$tree insert end $parentNode $subNode -text $fileName \ $workingTree insert end $parentNode $subNode -text $fileName \
-data [file join $dir $fileName] -open 1\ -data [file join $dir $fileName] -open 1\
-image [Bitmap::get [file join $imgDir $img.gif]]\ -image [Bitmap::get [file join $imgDir $img.gif]]\
-font $fontNormal -font $fontNormal
if {[$tree itemcget $activeProject -open] == 0} { if {[$workingTree itemcget $parentNode -open] == 0} {
$tree itemconfigure $activeProject -open 1 $workingTree itemconfigure $parentNode -open 1
} }
set file [file join $dir $fileName] set file [file join $dir $fileName]
@ -565,17 +565,25 @@ proc AddToProj {fileName mode} {
EditFile [GetTreeForNode $subNode] $subNode [file join $dir $fileName] EditFile [GetTreeForNode $subNode] $subNode [file join $dir $fileName]
} }
## ADD FILE INTO PROJECT DIALOG## ## ADD FILE INTO PROJECT DIALOG##
proc AddToProjDialog {mode} { proc AddToProjDialog {mode node} {
global projDir workDir activeProject imgDir tree mod global projDir workDir activeProject imgDir mod workingTree
set mod $mode set mod $mode
if {$activeProject == ""} { if {$node eq "files"} {
set answer [tk_messageBox\ set workingTree .frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles
-message "[::msgcat::mc "Not found active project"]"\ } elseif {$node eq "projects"} {
-type ok -icon warning] set workingTree .frmBody.frmCat.noteBook.fprojects.frmTree.tree
case $answer { } else {
ok {return 0} puts "Error node"
} return
} }
# if {$activeProject == ""} {
# set answer [tk_messageBox\
# -message "[::msgcat::mc "Not found active project"]"\
# -type ok -icon warning]
# case $answer {
# ok {return 0}
# }
# }
set w .addtoproj set w .addtoproj
if {[winfo exists $w]} { if {[winfo exists $w]} {
@ -596,17 +604,19 @@ proc AddToProjDialog {mode} {
entry $w.frmCanv.entImgTcl entry $w.frmCanv.entImgTcl
pack $w.frmCanv.lblImgTcl $w.frmCanv.entImgTcl -expand true -padx 5 -pady 5 -side top pack $w.frmCanv.lblImgTcl $w.frmCanv.entImgTcl -expand true -padx 5 -pady 5 -side top
button $w.frmBtn.btnOk -text [::msgcat::mc "Create"] -relief groove -command { button $w.frmBtn.btnOk -text [::msgcat::mc "Create"] -relief groove \
AddToProj [.addtoproj.frmCanv.entImgTcl get] $mod -command {AddToProj [.addtoproj.frmCanv.entImgTcl get] $mod $workingTree}
}
button $w.frmBtn.btnCancel -text [::msgcat::mc "Close"] -command "destroy $w" -relief groove button $w.frmBtn.btnCancel -text [::msgcat::mc "Close"] -command "destroy $w" -relief groove
pack $w.frmBtn.btnOk $w.frmBtn.btnCancel -padx 2 -pady 2 -fill x -side left pack $w.frmBtn.btnOk $w.frmBtn.btnCancel -padx 2 -pady 2 -fill x -side left
bind $w <Escape> "destroy .addtoproj" bind $w <Escape> "destroy .addtoproj"
bind $w.frmCanv.entImgTcl <Return> { bind $w.frmCanv.entImgTcl <Return> {
AddToProj [.addtoproj.frmCanv.entImgTcl get] $mod AddToProj [.addtoproj.frmCanv.entImgTcl get] $mod $workingTree
} }
focus -force $w.frmCanv.entImgTcl focus -force $w.frmCanv.entImgTcl
puts "$node $workingTree $mode"
#unset type #unset type
} }
proc AddToProjDialog_ {} { proc AddToProjDialog_ {} {
@ -987,27 +997,3 @@ proc InsertTitle {newFile type} {
close $pipe close $pipe
} }

View File

@ -387,8 +387,13 @@ proc GetProj {tree} {
## SHOW PUP-UP MENUS ## ## SHOW PUP-UP MENUS ##
proc PopupMenuFileTree {treeFiles x y} { proc PopupMenuFileTree {treeFiles x y} {
#global fontNormal fontBold imgDir activeProject #global fontNormal fontBold imgDir activeProject
#set node [$treeFiles selection get]
if {[$treeFiles selection get] != ""} {
set node [$treeFiles selection get] set node [$treeFiles selection get]
$treeFiles selection set $node $treeFiles selection set $node
} else {
return
}
#set item [$treeFiles itemcget $node -data] #set item [$treeFiles itemcget $node -data]
if {[info exists fileList($node)] != 1} { if {[info exists fileList($node)] != 1} {
# set fileList($node) $item # set fileList($node) $item
@ -398,16 +403,14 @@ proc PopupMenuFileTree {treeFiles x y} {
proc PopupMenuTree {x y} { proc PopupMenuTree {x y} {
global tree fontNormal fontBold imgDir activeProject global tree fontNormal fontBold imgDir activeProject
if {[$tree selection get] != ""} {
set node [$tree selection get] set node [$tree selection get]
if {$node ==""} {
set answer [tk_messageBox\
-message "[::msgcat::mc "Not found active project"]"\
-type ok -icon warning]
case $answer {
ok {return 0}
}
}
$tree selection set $node $tree selection set $node
} else {
return
}
#$tree selection set $node
set item [$tree itemcget $node -data] set item [$tree itemcget $node -data]
if {[string range $item 0 2] == "prj"} { if {[string range $item 0 2] == "prj"} {
set activeProject [string range $item 4 end] set activeProject [string range $item 4 end]
@ -425,7 +428,7 @@ proc PopupMenuTree {x y} {
## OPEN TREE PROCEDURE ## OPEN TREE PROCEDURE
proc TreeOpen {node} { proc TreeOpen {node} {
global fontNormal tree projDir workDir activeProject fileList noteBook findString imgDir fontBold global fontNormal tree projDir workDir activeProject fileList noteBook findString imgDir fontBold
set tree [GetTreeForNode $node]
$tree selection set $node $tree selection set $node
set item [$tree itemcget $node -data] set item [$tree itemcget $node -data]
if {[string range $item 0 2] == "prj"} { if {[string range $item 0 2] == "prj"} {
@ -449,7 +452,7 @@ proc TreeOpen {node} {
## CLOSE TREE PROCEDURE ## ## CLOSE TREE PROCEDURE ##
proc TreeClose {node} { proc TreeClose {node} {
global fontNormal tree projDir workDir activeProject fileList noteBook findString imgDir fontBold global fontNormal tree projDir workDir activeProject fileList noteBook findString imgDir fontBold
set tree [GetTreeForNode $node]
$tree selection set $node $tree selection set $node
set item [$tree itemcget $node -data] set item [$tree itemcget $node -data]
if {[string range $item 0 2] == "prj"} { if {[string range $item 0 2] == "prj"} {
@ -582,7 +585,15 @@ proc GetTreeForNode {node} {
} }
} }
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
}
}