From 830bcfeb2f01065866b7584bc62b23653d31c31e Mon Sep 17 00:00:00 2001 From: Sergey Kalinin Date: Thu, 22 Feb 2018 15:45:46 +0300 Subject: [PATCH] Fixed AddToProj procedure for file browser tree Disable OpComplite procedure --- CHANGELOG | 11 +++--- lib/editor.tcl | 81 +++++++++++++------------------------------ lib/main.tcl | 24 +++++-------- lib/projects.tcl | 90 ++++++++++++++++++++---------------------------- lib/tree.tcl | 43 ++++++++++++++--------- 5 files changed, 102 insertions(+), 147 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 6a315a3..7be7047 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,14 +1,16 @@ -######################################################### +########################################################## # Tcl/Tk Project Manager # Distributed under GNU Public License # Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru # Author: Sergey Kalinin banzaj28@yandex.ru -######################################################### +########################################################## 0.4.5 22.02.2018 - Refactoring Settigs procedure source code - Some changes into messages files (localisation) +- Fixed AddToProj procedure for file browser tree +- Disable OpComplite procedure 20.02.2018 - 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 uncorrect cursor position counter into editor - - - - - diff --git a/lib/editor.tcl b/lib/editor.tcl index 0b1cc89..84ec991 100644 --- a/lib/editor.tcl +++ b/lib/editor.tcl @@ -20,6 +20,29 @@ proc GetOp {} { set opList(method) "\{\} \{\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 ## ## SETTING DEFAULT STYLE FOR TEXT WIDGET ## proc SetDefStyle { text args } { @@ -364,28 +387,6 @@ proc Replace {text incr} { } # 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 ## proc BraceHighLight {text} { 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 ## proc PageRaise {tree node} { global noteBook fileList editor nodeEdit noteBookFiles @@ -744,7 +714,7 @@ proc EditFile {tree node fileName} { bind $text { if {$nodeEdit == ""} {return} set textEdit "$noteBook.f$nodeEdit.text" - OpComplite $textEdit $fileExt $nodeEdit + #OpComplite $textEdit $fileExt $nodeEdit if {[lindex $fileList($nodeEdit) 1] == 0} { set fileList($nodeEdit) [list [lindex $fileList($nodeEdit) 0] 1] LabelUpdate .frmStatus.frmProgress.lblProgress [::msgcat::mc "File modify"] @@ -981,6 +951,3 @@ proc ReadFileStructure {mod line lineNumber tree node} { #################################### GetOp - - - diff --git a/lib/main.tcl b/lib/main.tcl index 6847c6c..367429c 100644 --- a/lib/main.tcl +++ b/lib/main.tcl @@ -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)] $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}\ +$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}\ +$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 @@ -222,8 +222,8 @@ bind . {MakeProj compile proj} bind . {MakeProj compile file} bind . {MakeProj run proj} bind . {MakeProj run file} -bind . {AddToProjDialog file} -bind . {AddToProjDialog file} +bind . {AddToProjDialog file [$noteBookFiles raise]} +bind . {AddToProjDialog file [$noteBookFiles raise]} #bind . AddToProjDialog #bind . AddToProjDialog bind . Quit @@ -315,12 +315,14 @@ bind $frmTree.tree.c { TreeDoubleClick $tree $node } +$noteBookFiles bindtabs "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}\ +$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}\ +$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 @@ -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 \ -accelerator "Ctrl+F9" $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 $m add command -label [::msgcat::mc "Add as new project"] -command {OpenProj [$noteBookFiles raise]} -font $fontNormal @@ -393,11 +395,3 @@ if {[info exists workingProject]} { } } - - - - - - - - diff --git a/lib/projects.tcl b/lib/projects.tcl index 621f5ac..ac3ba3d 100644 --- a/lib/projects.tcl +++ b/lib/projects.tcl @@ -1,12 +1,10 @@ -####################################### -# Tcl/Tk Project Manager -# Distributed under GNU Public License +################################################## +# Tcl/Tk Project Manager +# Distributed under GNU Public License # Author: Serge Kalinin banzaj28@yandex.ru # Copyright (c) "https://nuk-svk.ru", 2018, # Home: https://bitbucket.org/svk28/projman -####################################### -## ADD FILE INTO PROJECTS ## - +################################################## proc NewProj {type proj l} { global fontNormal fontBold tree projDir workDir activeProject fileList noteBook imgDir prjDir @@ -499,21 +497,23 @@ proc AddNewProjectIntoTree {proj} { } } -proc AddToProj {fileName mode} { - global projDir workDir activeProject tree noteBook fontNormal imgDir tree +## ADD FILE INTO PROJECTS ## +proc AddToProj {fileName mode workingTree} { + global projDir workDir activeProject noteBook fontNormal imgDir set type [string trim [file extension $fileName] {.}] destroy .addtoproj - set node [$tree selection get] - set fullPath [$tree itemcget $node -data] - + set node [$workingTree selection get] + #puts "$fileName $mode $workingTree $node" + set fullPath [$workingTree itemcget $node -data] if {[file isdirectory $fullPath] == 1} { set dir $fullPath set parentNode $node } else { set dir [file dirname $fullPath] - set parentNode [$tree parent $node] + set parentNode [$workingTree parent $node] } + #puts "$node $parentNode $workingTree $fullPath" if {$type == "tcl"} { set img "tcl" @@ -548,12 +548,12 @@ proc AddToProj {fileName mode} { set name [file rootname $fileName] set ext [string range [file extension $fileName] 1 end] 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\ -image [Bitmap::get [file join $imgDir $img.gif]]\ -font $fontNormal - if {[$tree itemcget $activeProject -open] == 0} { - $tree itemconfigure $activeProject -open 1 + if {[$workingTree itemcget $parentNode -open] == 0} { + $workingTree itemconfigure $parentNode -open 1 } set file [file join $dir $fileName] @@ -565,17 +565,25 @@ proc AddToProj {fileName mode} { EditFile [GetTreeForNode $subNode] $subNode [file join $dir $fileName] } ## ADD FILE INTO PROJECT DIALOG## -proc AddToProjDialog {mode} { - global projDir workDir activeProject imgDir tree mod +proc AddToProjDialog {mode node} { + global projDir workDir activeProject imgDir mod workingTree set mod $mode - if {$activeProject == ""} { - set answer [tk_messageBox\ - -message "[::msgcat::mc "Not found active project"]"\ - -type ok -icon warning] - case $answer { - ok {return 0} - } + if {$node eq "files"} { + set workingTree .frmBody.frmCat.noteBook.ffiles.frmTreeFiles.treeFiles + } elseif {$node eq "projects"} { + set workingTree .frmBody.frmCat.noteBook.fprojects.frmTree.tree + } else { + 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 if {[winfo exists $w]} { @@ -596,17 +604,19 @@ proc AddToProjDialog {mode} { entry $w.frmCanv.entImgTcl 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 { - AddToProj [.addtoproj.frmCanv.entImgTcl get] $mod - } + button $w.frmBtn.btnOk -text [::msgcat::mc "Create"] -relief groove \ + -command {AddToProj [.addtoproj.frmCanv.entImgTcl get] $mod $workingTree} + 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 bind $w "destroy .addtoproj" bind $w.frmCanv.entImgTcl { - AddToProj [.addtoproj.frmCanv.entImgTcl get] $mod + AddToProj [.addtoproj.frmCanv.entImgTcl get] $mod $workingTree } focus -force $w.frmCanv.entImgTcl + puts "$node $workingTree $mode" + #unset type } proc AddToProjDialog_ {} { @@ -987,27 +997,3 @@ proc InsertTitle {newFile type} { close $pipe } - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/tree.tcl b/lib/tree.tcl index 76b702c..6af2f39 100644 --- a/lib/tree.tcl +++ b/lib/tree.tcl @@ -387,8 +387,13 @@ proc GetProj {tree} { ## SHOW PUP-UP MENUS ## proc PopupMenuFileTree {treeFiles x y} { #global fontNormal fontBold imgDir activeProject - set node [$treeFiles selection get] - $treeFiles selection set $node + #set node [$treeFiles selection get] + if {[$treeFiles selection get] != ""} { + set node [$treeFiles selection get] + $treeFiles selection set $node + } else { + return + } #set item [$treeFiles itemcget $node -data] if {[info exists fileList($node)] != 1} { # set fileList($node) $item @@ -398,16 +403,14 @@ proc PopupMenuFileTree {treeFiles x y} { proc PopupMenuTree {x y} { global tree fontNormal fontBold imgDir activeProject - 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} - } + if {[$tree selection get] != ""} { + set node [$tree selection get] + $tree selection set $node + } else { + return } - $tree selection set $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] @@ -425,7 +428,7 @@ proc PopupMenuTree {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"} { @@ -449,7 +452,7 @@ proc TreeOpen {node} { ## 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"} { @@ -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 + } +}