Исправлен выход окна со списком функций за пределы экрана. Поиск и замена теперь работает. Добавлены некоторые иконки для файлов
This commit is contained in:
parent
d4f11b11de
commit
a67916273c
|
@ -104,3 +104,8 @@
|
||||||
- Added "View"->"Editors word wrap" menu and procedure
|
- Added "View"->"Editors word wrap" menu and procedure
|
||||||
- Added bindings "Ctrl+PgUp" and "Ctrl+PgDown" for next or prior tab selecting
|
- Added bindings "Ctrl+PgUp" and "Ctrl+PgDown" for next or prior tab selecting
|
||||||
- Added "Close file" dialog
|
- Added "Close file" dialog
|
||||||
|
|
||||||
|
01/09/2022
|
||||||
|
- Added search function name into Function navigation whem press key
|
||||||
|
- Added find and replace dialog
|
||||||
|
- Fixed correct placement the Function dialog
|
||||||
|
|
140
lib/editor.tcl
140
lib/editor.tcl
|
@ -335,8 +335,8 @@ namespace eval Editor {
|
||||||
# set symNumbers [expr $selEndRow - $selBeginRow]
|
# set symNumbers [expr $selEndRow - $selBeginRow]
|
||||||
set symNumbers [expr [lindex [split $selEnd "."] 1] - [lindex [split $selBegin "."] 1]]
|
set symNumbers [expr [lindex [split $selEnd "."] 1] - [lindex [split $selBegin "."] 1]]
|
||||||
# puts "Selection $selectionText"
|
# puts "Selection $selectionText"
|
||||||
if {$selectionText eq "-"} {
|
if [string match "-*" $selectionText] {
|
||||||
set selectionText "\\$selectionText"
|
set selectionText "\$selectionText"
|
||||||
}
|
}
|
||||||
set lstFindIndex [$txt search -all "$selectionText" 0.0]
|
set lstFindIndex [$txt search -all "$selectionText" 0.0]
|
||||||
foreach ind $lstFindIndex {
|
foreach ind $lstFindIndex {
|
||||||
|
@ -473,12 +473,13 @@ namespace eval Editor {
|
||||||
#bind $txt <Shift-Button-4> "%W xview scroll -2 units"
|
#bind $txt <Shift-Button-4> "%W xview scroll -2 units"
|
||||||
#bind $txt <Shift-Button-5> "%W xview scroll 2 units"
|
#bind $txt <Shift-Button-5> "%W xview scroll 2 units"
|
||||||
bind $txt <Button-1><ButtonRelease-1> "Editor::SelectionHighlight $txt"
|
bind $txt <Button-1><ButtonRelease-1> "Editor::SelectionHighlight $txt"
|
||||||
|
# bind $txt <<Selection>> "Editor::SelectionHighlight $txt"
|
||||||
bind $txt <<Modified>> "SetModifiedFlag $w"
|
bind $txt <<Modified>> "SetModifiedFlag $w"
|
||||||
bind $txt <<Selection>> "Editor::SelectionGet $txt"
|
# bind $txt <<Selection>> "Editor::SelectionGet $txt"
|
||||||
bind $txt <Control-i> ImageBase64Encode
|
bind $txt <Control-i> ImageBase64Encode
|
||||||
bind $txt <Control-u> "Editor::SearchBrackets %W"
|
bind $txt <Control-u> "Editor::SearchBrackets %W"
|
||||||
bind $txt <Control-J> "Editor::GoToFunction $w"
|
bind $txt <Control-J> "catch {Editor::GoToFunction $w}"
|
||||||
bind $txt <Control-j> "Editor::GoToFunction $w"
|
bind $txt <Control-j> "catch {Editor::GoToFunction $w}"
|
||||||
bind $txt <Alt-w> "$txt delete {insert wordstart} {insert wordend}"
|
bind $txt <Alt-w> "$txt delete {insert wordstart} {insert wordend}"
|
||||||
bind $txt <Alt-r> "$txt delete {insert linestart} {insert lineend}"
|
bind $txt <Alt-r> "$txt delete {insert linestart} {insert lineend}"
|
||||||
bind $txt <Alt-b> "$txt delete {insert linestart} insert"
|
bind $txt <Alt-b> "$txt delete {insert linestart} insert"
|
||||||
|
@ -574,7 +575,7 @@ namespace eval Editor {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
proc FindFunction {findString} {
|
proc FindFunction {findString} {
|
||||||
global nbEditor
|
global nbEditor
|
||||||
puts $findString
|
puts $findString
|
||||||
set pos "0.0"
|
set pos "0.0"
|
||||||
|
@ -714,7 +715,27 @@ namespace eval Editor {
|
||||||
# }
|
# }
|
||||||
# }
|
# }
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
#---------------------------------------------------------
|
||||||
|
# Поиск по списку по первой букве
|
||||||
|
# Richard Suchenwirth 2001-03-1
|
||||||
|
# https://wiki.tcl-lang.org/page/Listbox+navigation+by+keyboard
|
||||||
|
proc ListBoxSearch {w key} {
|
||||||
|
if [regexp {[-A-Za-z0-9_]} $key] {
|
||||||
|
set n 0
|
||||||
|
foreach i [$w get 0 end] {
|
||||||
|
if [string match -nocase $key* $i] {
|
||||||
|
$w see $n
|
||||||
|
$w selection clear 0 end
|
||||||
|
$w selection set $n
|
||||||
|
$w activate $n
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
incr n
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
# Диалоговое окно со списком процедур или функций в редактируемом тексте
|
# Диалоговое окно со списком процедур или функций в редактируемом тексте
|
||||||
proc GotoFunctionDialog {w x y args} {
|
proc GotoFunctionDialog {w x y args} {
|
||||||
|
@ -763,19 +784,28 @@ namespace eval Editor {
|
||||||
# focus $Editor::txt.t
|
# focus $Editor::txt.t
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
bind $win.lBox <Any-Key> {Editor::ListBoxSearch %W %A}
|
||||||
|
# Определям расстояние до края экрана (основного окна) и если
|
||||||
|
# оно меньше размера окна со списком то сдвигаем его вверх
|
||||||
|
set winGeom [winfo reqheight $win]
|
||||||
|
set topHeight [winfo height .]
|
||||||
|
# puts "$x, $y, $winGeom, $topHeight"
|
||||||
|
if [expr [expr $topHeight - $y] < $winGeom] {
|
||||||
|
set y [expr $topHeight - $winGeom]
|
||||||
|
}
|
||||||
wm geom $win +$x+$y
|
wm geom $win +$x+$y
|
||||||
}
|
}
|
||||||
proc FindReplaceText {findString replaceString case regexp} {
|
proc FindReplaceText {findString replaceString regexp} {
|
||||||
global nbEditor
|
global nbEditor
|
||||||
set txt [$nbEditor select].frmText.t
|
set txt [$nbEditor select].frmText.t
|
||||||
|
$txt tag remove sel 1.0 end
|
||||||
# $txt see $pos
|
# $txt see $pos
|
||||||
# set pos [$txt search -nocase $findString $line.$x end]
|
# set pos [$txt search -nocase $findString $line.$x end]
|
||||||
set options ""
|
set options ""
|
||||||
# $txt see 1.0
|
# $txt see 1.0
|
||||||
set pos [$txt index insert]
|
set pos [$txt index insert]
|
||||||
set allLines [$txt count -lines 1.0 end]
|
set allLines [$txt count -lines 1.0 end]
|
||||||
puts "$pos $allLines"
|
# puts "$pos $allLines"
|
||||||
set line [lindex [split $pos "."] 0]
|
set line [lindex [split $pos "."] 0]
|
||||||
|
|
||||||
if [expr $line == $allLines] {
|
if [expr $line == $allLines] {
|
||||||
|
@ -785,37 +815,54 @@ namespace eval Editor {
|
||||||
set x [lindex [split $pos "."] 1]
|
set x [lindex [split $pos "."] 1]
|
||||||
# incr x $incr
|
# incr x $incr
|
||||||
|
|
||||||
puts "$findString -> $replaceString, $case, $regexp, $pos"
|
# puts "$findString -> $replaceString, $regexp, $pos, $line.$x"
|
||||||
|
set matchIndexPair ""
|
||||||
if {$case ne ""} {
|
if {$regexp eq "-regexp"} {
|
||||||
lappend options $case
|
# puts "$txt search -all -nocase -regexp {$findString} $line.$x end"
|
||||||
|
set lstFindIndex [$txt search -all -nocase -regexp -count matchIndexPair "$findString" $line.$x end]
|
||||||
|
} else {
|
||||||
|
# puts "$txt search -all -nocase {$findString} $line.$x end"
|
||||||
|
set lstFindIndex [$txt search -all -nocase -count matchIndexPair $findString $line.$x end]
|
||||||
|
# set symNumbers [string length "$findString"]
|
||||||
}
|
}
|
||||||
if {$regexp ne ""} {
|
puts $lstFindIndex
|
||||||
lappend options $regexp
|
puts $matchIndexPair
|
||||||
|
# set lstFindIndex [$txt search -all "$selectionText" 0.0]
|
||||||
|
set i 0
|
||||||
|
foreach ind $lstFindIndex {
|
||||||
|
set selFindLine [lindex [split $ind "."] 0]
|
||||||
|
set selFindRow [lindex [split $ind "."] 1]
|
||||||
|
# set endInd "$selFindLine.[expr $selFindRow + $symNumbers]"
|
||||||
|
set endInd "$selFindLine.[expr [lindex $matchIndexPair $i] + $selFindRow]"
|
||||||
|
puts "$ind; $selFindLine, $selFindRow; $endInd "
|
||||||
|
if {$replaceString ne ""} {
|
||||||
|
$txt replace $ind $endInd $replaceString
|
||||||
|
}
|
||||||
|
$txt tag add sel $ind $endInd
|
||||||
|
incr i
|
||||||
}
|
}
|
||||||
|
|
||||||
# set pos [$txt search $options $findString $pos end]
|
# set pos [$txt search $options $findString $pos end]
|
||||||
set pos [$txt search $options $findString $line.$x end]
|
|
||||||
|
|
||||||
$txt mark set insert $pos
|
# $txt mark set insert $pos
|
||||||
$txt see $pos
|
$txt see $pos
|
||||||
puts $pos
|
# puts $pos
|
||||||
# highlight the found word
|
# # highlight the found word
|
||||||
set line [lindex [split $pos "."] 0]
|
# set line [lindex [split $pos "."] 0]
|
||||||
# set x [lindex [split $pos "."] 1]
|
# set x [lindex [split $pos "."] 1]
|
||||||
# set x [expr {$x + [string length $findString]}]
|
# set x [expr {$x + [string length $findString]}]
|
||||||
# $txt tag remove sel 1.0 end
|
# $txt tag remove sel 1.0 end
|
||||||
# $txt tag add sel $pos $line.end
|
# $txt tag add sel $pos $line.end
|
||||||
# #$text tag configure sel -background $editor(selectbg) -foreground $editor(fg)
|
# #$text tag configure sel -background $editor(selectbg) -foreground $editor(fg)
|
||||||
# $txt tag raise sel
|
$txt tag raise sel
|
||||||
# focus -force $txt.t
|
# # focus -force $txt.t
|
||||||
# Position
|
# # Position
|
||||||
return 1
|
# return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Find and replace text dialog
|
# Find and replace text dialog
|
||||||
proc FindDialog {w} {
|
proc FindDialog {w} {
|
||||||
global editors lexers nbEditor nocaseSet regexpSet
|
global editors lexers nbEditor regexpSet
|
||||||
variable txt
|
variable txt
|
||||||
variable win
|
variable win
|
||||||
variable show
|
variable show
|
||||||
|
@ -827,7 +874,7 @@ namespace eval Editor {
|
||||||
set txt $w.frmText.t
|
set txt $w.frmText.t
|
||||||
set win .finddialog
|
set win .finddialog
|
||||||
set regexpSet ""
|
set regexpSet ""
|
||||||
set nocaseSet "-nocase"
|
# set nocaseSet "-nocase"
|
||||||
|
|
||||||
if { [winfo exists $win] } { destroy $win }
|
if { [winfo exists $win] } { destroy $win }
|
||||||
toplevel $win
|
toplevel $win
|
||||||
|
@ -840,12 +887,16 @@ namespace eval Editor {
|
||||||
set show($win.entryReplace) false
|
set show($win.entryReplace) false
|
||||||
|
|
||||||
|
|
||||||
ttk::button $win.bForward -image forward_20x20 -command "puts $findString"
|
ttk::button $win.bForward -image forward_20x20 -command {
|
||||||
ttk::button $win.bBackward -image backward_20x20 -command "puts $replaceString"
|
Editor::FindReplaceText "$findString" "" $regexpSet
|
||||||
ttk::button $win.bDone -image done_20x20 -command {
|
}
|
||||||
puts "$findString -> $replaceString, $nocaseSet, $regexpSet"
|
ttk::button $win.bBackward -state disable -image backward_20x20 -command "puts $replaceString"
|
||||||
|
ttk::button $win.bDone -image done_20x20 -state disable -command {
|
||||||
|
puts "$findString -> $replaceString, $regexpSet"
|
||||||
|
}
|
||||||
|
ttk::button $win.bDoneAll -image doneall_20x20 -command {
|
||||||
|
Editor::FindReplaceText "$findString" "$replaceString" $regexpSet
|
||||||
}
|
}
|
||||||
ttk::button $win.bDoneAll -image doneall_20x20
|
|
||||||
ttk::button $win.bReplace -image replace_20x20 \
|
ttk::button $win.bReplace -image replace_20x20 \
|
||||||
-command {
|
-command {
|
||||||
puts $Editor::show($Editor::win.entryReplace)
|
puts $Editor::show($Editor::win.entryReplace)
|
||||||
|
@ -861,20 +912,17 @@ namespace eval Editor {
|
||||||
}
|
}
|
||||||
ttk::checkbutton $win.chkRegexp -text "Regexp" \
|
ttk::checkbutton $win.chkRegexp -text "Regexp" \
|
||||||
-variable regexpSet -onvalue "-regexp" -offvalue ""
|
-variable regexpSet -onvalue "-regexp" -offvalue ""
|
||||||
ttk::checkbutton $win.chkCase -text "Case Sensitive" \
|
# ttk::checkbutton $win.chkCase -text "Case Sensitive" \
|
||||||
-variable nocaseSet -onvalue "" -offvalue "-nocase"
|
# -variable nocaseSet -onvalue "" -offvalue "-nocase"
|
||||||
|
|
||||||
grid $win.entryFind -row 0 -column 0 -columnspan 2 -sticky nsew
|
grid $win.entryFind -row 0 -column 0 -columnspan 2 -sticky nsew
|
||||||
grid $win.bForward -row 0 -column 3 -sticky e
|
grid $win.bForward -row 0 -column 3 -sticky e
|
||||||
grid $win.bBackward -row 0 -column 4 -sticky e
|
grid $win.bBackward -row 0 -column 4 -sticky e
|
||||||
grid $win.bReplace -row 0 -column 5 -sticky e
|
grid $win.bReplace -row 0 -column 5 -sticky e
|
||||||
grid $win.chkRegexp -row 2 -column 0 -sticky w
|
grid $win.chkRegexp -row 2 -column 0 -sticky w
|
||||||
grid $win.chkCase -row 2 -column 1 -sticky w
|
# grid $win.chkCase -row 2 -column 1 -sticky w
|
||||||
|
|
||||||
# puts "[grid bbox $win] [grid size $win]"
|
# set reqWidth [winfo reqwidth $win]
|
||||||
# pack $win.lBox -expand true -fill y -side left
|
|
||||||
# pack $win.yscroll -side left -expand false -fill y
|
|
||||||
|
|
||||||
set boxX [expr [winfo rootx $w] + [expr [winfo width $nbEditor] - 350]]
|
set boxX [expr [winfo rootx $w] + [expr [winfo width $nbEditor] - 350]]
|
||||||
set boxY [expr [winfo rooty $w] + 10]
|
set boxY [expr [winfo rooty $w] + 10]
|
||||||
|
|
||||||
|
@ -889,19 +937,11 @@ namespace eval Editor {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
bind $win.entryFind <Return> {
|
bind $win.entryFind <Return> {
|
||||||
# set findString [$win.entryFind get]
|
Editor::FindReplaceText "$findString" "" $regexpSet
|
||||||
Editor::FindReplaceText "$findString" "" $nocaseSet $regexpSet
|
|
||||||
# destroy .gotofunction
|
|
||||||
# $Editor::txt tag remove sel 1.0 end
|
|
||||||
# focus $Editor::txt.t
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
bind $win.entryReplace <Return> {
|
bind $win.entryReplace <Return> {
|
||||||
# set findString [$win.entryFind get]
|
Editor::FindReplaceText "$findString" "$replaceString" $regexpSet
|
||||||
Editor::FindReplaceText {$findString} {$replaceString} $nocaseSet $regexpSet
|
|
||||||
# destroy .gotofunction
|
|
||||||
# $Editor::txt tag remove sel 1.0 end
|
|
||||||
# focus $Editor::txt.t
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -187,6 +187,16 @@ namespace eval FileOper {
|
||||||
lappend lstFiles $file
|
lappend lstFiles $file
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach file [glob -nocomplain .?*] {
|
||||||
|
if {$file ne ".."} {
|
||||||
|
lappend rList [list [file join $directory $file]]
|
||||||
|
if [file isdirectory $file] {
|
||||||
|
lappend lstDir $file
|
||||||
|
} else {
|
||||||
|
lappend lstFiles $file
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
# Sort lists and insert into tree
|
# Sort lists and insert into tree
|
||||||
if {[info exists lstDir] && [llength $lstDir] > 0} {
|
if {[info exists lstDir] && [llength $lstDir] > 0} {
|
||||||
foreach f [lsort $lstDir] {
|
foreach f [lsort $lstDir] {
|
||||||
|
|
|
@ -708,43 +708,77 @@ image create photo replace_20x20 -data {
|
||||||
}
|
}
|
||||||
|
|
||||||
image create photo doneall_20x20 -data {
|
image create photo doneall_20x20 -data {
|
||||||
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
|
||||||
Hzli2b839nCKAAAAAElFTkSuQmCC
|
Hzli2b839nCKAAAAAElFTkSuQmCC
|
||||||
}
|
}
|
||||||
image create photo done_20x20 -data {
|
image create photo done_20x20 -data {
|
||||||
iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||||
kT1Iw1AUhU9bpVUqDnYQEcxQnSyIioiTVqEIFUKt0KqDyUv/oElDkuLiKLgWHPxZrDq4OOvq4CoI
|
kT1Iw1AUhU9bpVUqDnYQEcxQnSyIioiTVqEIFUKt0KqDyUv/oElDkuLiKLgWHPxZrDq4OOvq4CoI
|
||||||
gj8gjk5Oii5S4n1JoUWMFx7v47x7Du/dB/jrZaaaHWOAqllGKhEXMtlVIfiKEIbQBR9mJGbqc6KY
|
gj8gjk5Oii5S4n1JoUWMFx7v47x7Du/dB/jrZaaaHWOAqllGKhEXMtlVIfiKEIbQBR9mJGbqc6KY
|
||||||
hGd93VMf1V2MZ3n3/Vk9Ss5kgE8gnmW6YRFvEE9tWjrnfeIIK0oK8TnxqEEXJH7kuuzyG+eCw36e
|
hGd93VMf1V2MZ3n3/Vk9Ss5kgE8gnmW6YRFvEE9tWjrnfeIIK0oK8TnxqEEXJH7kuuzyG+eCw36e
|
||||||
GTHSqXniCLFQaGO5jVnRUIkniaOKqlG+P+OywnmLs1qusuY9+QvDOW1lmeu0BpHAIpYgQoCMKkoo
|
GTHSqXniCLFQaGO5jVnRUIkniaOKqlG+P+OywnmLs1qusuY9+QvDOW1lmeu0BpHAIpYgQoCMKkoo
|
||||||
w0KMdo0UEyk6j3v4Bxy/SC6ZXCUwciygAhWS4wf/g9+zNfMT425SOA50vtj2xzAQ3AUaNdv+Prbt
|
w0KMdo0UEyk6j3v4Bxy/SC6ZXCUwciygAhWS4wf/g9+zNfMT425SOA50vtj2xzAQ3AUaNdv+Prbt
|
||||||
xgkQeAautJa/UgemP0mvtbToEdC7DVxctzR5D7jcAfqfdMmQHClAy5/PA+9n9E1ZoO8W6F5z59Y8
|
xgkQeAautJa/UgemP0mvtbToEdC7DVxctzR5D7jcAfqfdMmQHClAy5/PA+9n9E1ZoO8W6F5z59Y8
|
||||||
x+kDkKZZJW+Ag0NgpEDZ6x7vDrXP7d+e5vx+AHqMcqqG+o//AAAABmJLR0QAAAAAAAD5Q7t/AAAA
|
x+kDkKZZJW+Ag0NgpEDZ6x7vDrXP7d+e5vx+AHqMcqqG+o//AAAABmJLR0QAAAAAAAD5Q7t/AAAA
|
||||||
CXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH5ggfDAgpt7K1NwAAAZ9JREFUOMtjYBgFgw4wk6Mp
|
CXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH5ggfDAgpt7K1NwAAAZ9JREFUOMtjYBgFgw4wk6Mp
|
||||||
JytrQ3hExNLfv39fePDgwX0GBoa/MDkmUg1Lio8v1tbV9f/18yfj5cuXYxgYGLiR5UkyMDo62lBH
|
JytrQ3hExNLfv39fePDgwX0GBoa/MDkmUg1Lio8v1tbV9f/18yfj5cuXYxgYGLiR5UkyMDo62lBH
|
||||||
X7/r39+/DJs3bXr65s2bq4yMjF+Q1bAQ7bKkJG4FeflDXFxcTDu3b/947MSJHQwMDEv+////G6cL
|
X7/r39+/DJs3bXr65s2bq4yMjF+Q1bAQ7bKkJG4FeflDXFxcTDu3b/947MSJHQwMDEv+////G6cL
|
||||||
01JSpnV3d//1cvfKZ2Bg4EOWExIUPCkuIcFz4fz5n+s3bjzMwMCwjIGB4S66xSgu/Pj5810uLi4m
|
01JSpnV3d//1cvfKZ2Bg4EOWExIUPCkuIcFz4fz5n+s3bjzMwMCwjIGB4S66xSgu/Pj5810uLi4m
|
||||||
Owfb/revX/xW09Y+tnjx4hsZaWmTVNXUtJ88fvx3+YoV5xkYGFYwMDDsJxjLV69evSksKGirrqEh
|
Owfb/revX/xW09Y+tnjx4hsZaWmTVNXUtJ88fvx3+YoV5xkYGFYwMDDsJxjLV69evSksKGirrqEh
|
||||||
JyIm5r527drt/t7+Vkamxg3fv337v2zJkruPnz5dwsjIOJeBgeEfNgMZsYjJ5eXmntHW0RG9dePm
|
JyIm5r527drt/t7+Vkamxg3fv337v2zJkruPnz5dwsjIOJeBgeEfNgMZsYjJ5eXmntHW0RG9dePm
|
||||||
F3FJCU4eHh7m1atXv9y/f/8SBgaGDgYGhjekpMOPb96+3a2kqJisoKjIycHBwXT44MEvm7ds2c7A
|
F3FJCU4eHh7m1atXv9y/f/8SBgaGDgYGhjekpMOPb96+3a2kqJisoKjIycHBwXT44MEvm7ds2c7A
|
||||||
wDCNgYHhPjlpl4mBgcGwtaXlb15u7i8GBoadDAwMXjDJoKAgLnLSMAMDA4M+1FXxWCxkGS1oaAMA
|
wDCNgYHhPjlpl4mBgcGwtaXlb15u7i8GBoadDAwMXjDJoKAgLnLSMAMDA4M+1FXxWCxkGS1oaAMA
|
||||||
XcmM9siOlSAAAAAASUVORK5CYII=
|
XcmM9siOlSAAAAAASUVORK5CYII=
|
||||||
}
|
}
|
||||||
|
image create photo gitlab_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||||
|
kTtIw1AUhv+mlapUHOwg4pChdrIgKuKoVShChVArtOpgctMXNDEkKS6OgmvBwcdi1cHFWVcHV0EQ
|
||||||
|
fIA4OjkpukiJ5yaFFjEeONyP/57/cO65gNCoMs0KjQGabpuZVFLM5VfE8Ct6EKCMIyQzy5iVpDR8
|
||||||
|
4+ueainuEryXf92f0acWLAYEROIZZpg28Trx1KZtcN4njrKyrBKfE4+aNCDxI9cVj984l1wWeM+o
|
||||||
|
mc3MEUeJxVIHKx3MyqZGPEkcUzWd+gs5j1XOW5y1ao215uQvjBT05SWuUw4jhQUsQoIIBTVUUIWN
|
||||||
|
BJ06KRYydJ/08Q+5folcCrkqYOSYxwY0yK4f/A9+79YqTox7nSJJoOvFcT5GgPAu0Kw7zvex4zRP
|
||||||
|
gOAzcKW3/RsNYPqT9Hpbix0B/dvAxXVbU/aAyx1g8MmQTdmVgpRCsQi8n9E35YGBW6B31dtb6x6n
|
||||||
|
D0CWdpW+AQ4OgXiJeq/5vLu7c2//1rT29wMHtHJ8neobVgAAAAZiS0dEAAAAAAAA+UO7fwAAAAlw
|
||||||
|
SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YJAQknBRwbKk4AAAFMSURBVCjPhY49L0NxFMZ/599b
|
||||||
|
raYloQYiIaRSDAaD0KTdDCwmL/0CFoOkGolvIEJiNfIVOkt8BYmFMJaoUI2X3t7b/zHceg3xTOec
|
||||||
|
5/mdc6Clh5XRBf7QV88AVJfSs/Uah38BrzWO7hdH5j4Az6Xo1Uk8Lo9N/QxX8+lJv07c98z6J9Ag
|
||||||
|
A+D7duMn0HDZAmi6kgGQ19XRbO1aTwDCEb2zys5XwAhFz5UkQEev5MTup0r2UeapBIHKZQjPDepw
|
||||||
|
1NIzpEGTBNOpJWOjkmUAiAXzeNJ+bI93t8IxYBBsu+QMT1pCgBTgQCT++U4kIeC0PAGetGScwkW+
|
||||||
|
WbYLolpnGIyjOG3gtFmMURgGVRrNG807hYu8vG/Tvf4uPxw7lmcmXs6CcWxcIcFV6CU6LcXTW1qH
|
||||||
|
vsnbTW03y6wLRkJ9euAUztf4T7qZntHN9Mxv3hvLfnJEdS1UGQAAAABJRU5ErkJggg==
|
||||||
|
}
|
||||||
|
image create photo bitbucket_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||||
|
kTtIw1AUhv+mlapUHOwg4pChdrIgKuKoVShChVArtOpgctMXNDEkKS6OgmvBwcdi1cHFWVcHV0EQ
|
||||||
|
fIA4OjkpukiJ5yaFFjEeONyP/57/cO65gNCoMs0KjQGabpuZVFLM5VfE8Ct6EKCMIyQzy5iVpDR8
|
||||||
|
4+ueainuEryXf92f0acWLAYEROIZZpg28Trx1KZtcN4njrKyrBKfE4+aNCDxI9cVj984l1wWeM+o
|
||||||
|
mc3MEUeJxVIHKx3MyqZGPEkcUzWd+gs5j1XOW5y1ao215uQvjBT05SWuUw4jhQUsQoIIBTVUUIWN
|
||||||
|
BJ06KRYydJ/08Q+5folcCrkqYOSYxwY0yK4f/A9+79YqTox7nSJJoOvFcT5GgPAu0Kw7zvex4zRP
|
||||||
|
gOAzcKW3/RsNYPqT9Hpbix0B/dvAxXVbU/aAyx1g8MmQTdmVgpRCsQi8n9E35YGBW6B31dtb6x6n
|
||||||
|
D0CWdpW+AQ4OgXiJeq/5vLu7c2//1rT29wMHtHJ8neobVgAAAAZiS0dEAAAAAAAA+UO7fwAAAAlw
|
||||||
|
SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YJAQk4GytOGbMAAAFRSURBVCjPlZA9L0RBGIWfmfvO
|
||||||
|
rtilER8RNmh0IiEqlUIr8ZUo/AO1QjQK0RJR+BdqLa0IuyHLEisRX4kgd22y97qv6i67q+BNpjhn
|
||||||
|
Zp5zZszkpo7c+Izwx2mynJ+umINYixcxDmz+FVBRtoAqwPpKjn9Ms+X8p7YTGQr/ASQ8TmsAa3Om
|
||||||
|
KIa3aoLHITAaL//pYe/5tsjjdYH7yzzTg2FNoAC0CpcvAaMA5Yjui1VzFB/oX7rtfQ9CgkqFMAju
|
||||||
|
l6fcc00DgPeQ49hQZWB3Xztj3ZJMDEnCIc7Rk042PFcAPpWTn+beGTOz22H2tVRpzz2VnbgIjZRQ
|
||||||
|
w+yvgEyKQrH0bV757KhawsBDnANVVJU2sbm7OoAFGOsiX082xiAixPXFOUqSbGhgAdYXzE3S4jdA
|
||||||
|
rK1eFpdgfjj9+x8A9DWzmPfpaEiwHlaEJo0+NhZTD/X7X+YcdHg7MQcwAAAAAElFTkSuQmCC
|
||||||
|
}
|
||||||
|
|
|
@ -27,6 +27,10 @@ namespace eval Tree {
|
||||||
# puts ">>>>>>>>>>> [string tolower $text]; [string match {*docker*} [string tolower $text]]"
|
# puts ">>>>>>>>>>> [string tolower $text]; [string match {*docker*} [string tolower $text]]"
|
||||||
if {[string match {*docker*} [string tolower $text]]} {
|
if {[string match {*docker*} [string tolower $text]]} {
|
||||||
set findImg [::FindImage docker]
|
set findImg [::FindImage docker]
|
||||||
|
} elseif {[string match {*gitlab*} [string tolower $text]]} {
|
||||||
|
set findImg [::FindImage gitlab]
|
||||||
|
} elseif {[string match {*bitbucket*} [string tolower $text]]} {
|
||||||
|
set findImg [::FindImage bitbucket]
|
||||||
}
|
}
|
||||||
if {$fileExt ne "" || $findImg ne ""} {
|
if {$fileExt ne "" || $findImg ne ""} {
|
||||||
set image $findImg
|
set image $findImg
|
||||||
|
@ -41,6 +45,8 @@ namespace eval Tree {
|
||||||
set image [::FindImage debian]
|
set image [::FindImage debian]
|
||||||
} elseif {[string match {*redhat*} [string tolower [file tail $item]]]} {
|
} elseif {[string match {*redhat*} [string tolower [file tail $item]]]} {
|
||||||
set image [::FindImage redhat]
|
set image [::FindImage redhat]
|
||||||
|
} elseif {[string match {*gitlab*} [string tolower [file tail $item]]]} {
|
||||||
|
set image [::FindImage gitlab]
|
||||||
} else {
|
} else {
|
||||||
set image pixel
|
set image pixel
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ exec wish "$0" -- "$@"
|
||||||
######################################################
|
######################################################
|
||||||
# Version: 2.0.0
|
# Version: 2.0.0
|
||||||
# Release: alpha
|
# Release: alpha
|
||||||
# Build: 31082022165947
|
# Build: 01092022165308
|
||||||
######################################################
|
######################################################
|
||||||
|
|
||||||
# определим текущую версию, релиз и т.д.
|
# определим текущую версию, релиз и т.д.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user