Добавлен диалог перехода по номеру строки Ctrl-G

master
svkalinin 2022-11-10 15:36:34 +03:00
parent 3cbc7c1f48
commit 3a792d7774
4 changed files with 58 additions and 7 deletions

View File

@ -720,7 +720,7 @@ namespace eval Editor {
#$txt tag bind Sel <Control-/> {puts ">>>>>>>>>>>>>>>>>>>"}
#bind $txt <Control-slash> {puts "/////////////////"}
# #bind $txt <Control-g> GoToLine
# bind $txt <Control-g> {focus .frmTool.frmGoto.entGoTo; .frmTool.frmGoto.entGoTo delete 0 end}
bind $txt <Control-g> "Editor::GoToLineNumberDialog $txt"
bind $txt <Control-agrave> "Editor::FindDialog $w"
bind $txt <Control-f> "Editor::FindDialog $txt"
bind $txt <Control-F> "Editor::FindDialog $txt"
@ -1302,6 +1302,57 @@ namespace eval Editor {
$text see insert
}
proc GoToLineNumberDialog {w} {
global editors lexers
variable txt
variable win
# set txt $w.frmText.t
set txt $w
set win .gotoline
set box [$txt bbox insert]
set x [expr [lindex $box 0] + [winfo rootx $txt] ]
set y [expr [lindex $box 1] + [winfo rooty $txt] + [lindex $box 3] ]
if { [winfo exists $win] } { destroy $win }
toplevel $win
wm transient $win .
wm overrideredirect $win 1
ttk::entry $win.ent
pack $win.ent -expand true -fill y -side left
bind $win <Escape> {
destroy $Editor::win
focus -force $Editor::txt.t
break
}
bind $win.ent <Escape> {
destroy $Editor::win
focus -force $Editor::txt.t
break
}
bind $win.ent <Return> {
set lineNumber [.gotoline.ent get]
# $txt see insert $lineNumber
puts $Editor::txt
$Editor::txt mark set insert $lineNumber.0
$Editor::txt see insert
focus $Editor::txt.t
destroy .gotoline
break
}
# Определям расстояние до края экрана (основного окна) и если
# оно меньше размера окна со списком то сдвигаем его вверх
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
focus $win.ent
}
proc EditorWidget {fr fileType} {
global cfgVariables editors

View File

@ -15,7 +15,7 @@ namespace eval FileOper {
{"All files" *}
}
proc GetFileType {fileFullPath {opt ""}} {
proc GetFileMimeType {fileFullPath {opt ""}} {
global cfgVariables
# Проверям наличие программы в системе, если есть то добавляем опции
# если нет то используем тиклевый пакет
@ -32,7 +32,7 @@ namespace eval FileOper {
# lappend cmd $activeProject
lappend cmd $fileFullPath
catch $cmd pipe
puts $pipe
# puts $pipe
if [regexp -nocase -- {(\w+)/([[:alnum:]-]+); charset=([[:alnum:]-]+)} $pipe m fType fExt fCharset] {
puts "$fType $fExt $fCharset"
}
@ -360,7 +360,7 @@ namespace eval FileOper {
return false
} else {
# puts [::fileutil::magic::filetype $fileFullPath]
set fileType [FileOper::GetFileType $fileFullPath]
set fileType [FileOper::GetFileMimeType $fileFullPath]
}
switch $fileType {
"text" {
@ -393,7 +393,7 @@ namespace eval FileOper {
$itemName.frmText.t.t see 1.0
focus -force $itemName.frmText.t.t
.frmStatus.lblSize configure -text [GetFileAttr $fileFullPath "size"]
.frmStatus.lblEncoding configure -text [GetFileType $fileFullPath "charset"]
.frmStatus.lblEncoding configure -text [GetFileMimeType $fileFullPath "charset"]
return $itemName
}

View File

@ -81,7 +81,7 @@ pack .frmStatus -side top -padx 1 -fill x
#pack [label .frmMenu.lbl -text "ddd"]
pack [ttk::label .frmStatus.lblGitLogo -justify left] -side left
pack [ttk::label .frmStatus.lblGit] -side left -exp and true -fill x
pack [ttk::label .frmStatus.lblGit] -side left -expand true -fill x
bind .frmStatus.lblGit <Button-1><ButtonRelease-1> {
Git::BranchDialog %X %Y
}

View File

@ -10,7 +10,7 @@ exec wish "$0" -- "$@"
######################################################
# Version: 2.0.0
# Release: alpha
# Build: 09112022170027
# Build: 10112022153556
######################################################
# определим текущую версию, релиз и т.д.