From ef87b881560b165fc54869332ac95e429df3c349 Mon Sep 17 00:00:00 2001 From: Sergey Kalinin Date: Mon, 10 Nov 2025 13:00:43 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=B7=D0=BD=D0=B0=D1=87=D0=B8?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=B8=D0=B7=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debian/changelog | 24 ++++++++- lib/git.tcl | 2 +- lib/procedure.tcl | 135 ++++++++++++++++++++++++++++++++++++++++------ projman.tcl | 2 +- 4 files changed, 143 insertions(+), 20 deletions(-) diff --git a/debian/changelog b/debian/changelog index b310c89..f4f32aa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,29 @@ projman (2.0.0-alpha20) stable; urgency=medium * Исправил сохранение и закрытие нового файла. Теперь при сохранении файл будет переоткрыт под новым именем. + * Добавил проверку пакета Img. И поправил проверку типов изображений + * Переделал сигналы и сочетания + * Небольшие исправления + * Добавлен перевод фокуса ввода на прежнее окно после закрытия диалога выполнения. + * Добавлена передача сигналов для закрытия запущенного процесса + * Изменил виджет текста в окне псевдо-терминала. Добавил подстановку имени файла к командную строку по шаблону %f + * Добавлен диалог настроек + * Добавил псевдо-терминал + * Добавлен диалог при открытии файлов отличных от текстовых + * Поправил тему оформления + * Исправлена работа в windows + * Уменьшил колдичество выводимой отладочной информации + * Добавлено определение пути до git в зависимости от платформы. + * Исправлено создание файла конфигурации + * Исправлено создание файла конфигурации. Добавлены номера версий в вызов tclsh8.6 и wish8.6. Убрана зависимость на Threads. + * Исправлено чтение структуры проекта при открытии из меню 'Открыть недавнее' + * Bugfix release + * Bug fix with varhelper + * Added the "Open Recent" menu. The "recentlyEditedFolders" option in the configuration file contains a list of recently opened directories. The procedures for working with this list have also been added. + * Косметические изменения. + * Исправлены ошибки при вставке кавычек - -- Sergey Kalinin Fri, 31 Oct 2025 18:56:38 +0300 + -- Калинин Сергей Валерьевич Thu, 30 Jan 2025 12:19:56 +0300 projman (2.0.0-alpha19) stable; urgency=medium @@ -396,4 +417,3 @@ projman (2.0.0-alfa0) stable; urgency=medium - diff --git a/lib/git.tcl b/lib/git.tcl index 08a7a06..3d55a01 100644 --- a/lib/git.tcl +++ b/lib/git.tcl @@ -23,7 +23,7 @@ namespace eval Git { } if {[catch {exec {*}$cmd} git_path]} { puts "Git не найден в системе" - set cfgVariables(gitCommand) "Git not found" + set cfgVariables(gitCommand) "" return } set git_path [string trim $git_path] diff --git a/lib/procedure.tcl b/lib/procedure.tcl index 6cb52a2..3e5139f 100644 --- a/lib/procedure.tcl +++ b/lib/procedure.tcl @@ -826,6 +826,44 @@ proc MakeTGZ {} { } } + +# Процедура для проверки, находится ли редактирование в последней строке +proc IsLastLine {widget} { + set current_line [lindex [split [$widget index insert] .] 0] + set last_line [lindex [split [$widget index end-1c] .] 0] + return [expr {$current_line == $last_line}] +} + +# Процедура для проверки выделения в последней строке +proc IsSelectionInLastLine {widget} { + if {![$widget tag ranges sel]} { + return 0 + } + + set last_line [lindex [split [$widget index end-1c] .] 0] + set sel_start_line [lindex [split [$widget index sel.first] .] 0] + set sel_end_line [lindex [split [$widget index sel.last] .] 0] + + return [expr {$sel_start_line == $last_line && $sel_end_line == $last_line}] +} + +# Процедура-обертка для проверки последней строки +proc CheckLastLineAndRun {txt w filePath} { + # Проверяем, находится ли курсор в последней строке + set current_line [lindex [split [$txt index insert] .] 0] + set last_line [lindex [split [$txt index end-1c] .] 0] + + if {$current_line == $last_line} { + # Разрешаем выполнение в последней строке + $txt insert insert "\n" + Run $w $filePath + } else { + # Запрещаем в других строках + bell + $txt mark set insert end + } +} + ## MAKE PROJ PROCEDURE (RUNNING PROJECT) ## proc Execute {filePath w activeEditor} { global activeProject cfgVariables @@ -845,35 +883,98 @@ proc Execute {filePath w activeEditor} { frame $w.frame -borderwidth 2 -relief ridge -background $cfgVariables(backGround) pack $w.frame -side top -fill both -expand true - - ctext $w.frame.text -yscrollcommand "$w.frame.yscroll set" \ + set txt $w.frame.text + ctext $txt -yscrollcommand "$w.frame.yscroll set" -linemap 0 \ -bg $cfgVariables(backGround) -fg $cfgVariables(foreground) \ - -relief sunken -wrap word -highlightthickness 0 -font $cfgVariables(font)\ + -relief sunken -wrap word -highlightthickness 0 -font $cfgVariables(font) \ -selectborderwidth 0 -selectbackground $cfgVariables(selectbg) -width 10 -height 10 + scrollbar $w.frame.yscroll -relief sunken -borderwidth {1} -width {10} -takefocus 0 \ - -command "$w.frame.text yview" -background $cfgVariables(backGround) - Highlight::ExecuteColorized $w.frame.text + -command "$txt yview" -background $cfgVariables(backGround) + Highlight::ExecuteColorized $txt - pack $w.frame.text -side left -fill both -expand true + pack $txt -side left -fill both -expand true pack $w.frame.yscroll -side left -fill y - bind $w.frame.text [list Run $w $filePath] - bind $w.frame.text [list CloseExecuteDialog $w $activeEditor] - bind $w.frame.text [list CloseExecuteDialog $w $activeEditor] + bind $txt [list Run $w $filePath] + bind $txt [list CloseExecuteDialog $w $activeEditor] + bind $txt [list CloseExecuteDialog $w $activeEditor] # focus -force $w.frmBtn.btnOk # $noteBook raise $node # insert debug data into text widget # - $w.frame.text tag configure bold -font $cfgVariables(fontBold) - $w.frame.text tag configure error -font $cfgVariables(fontBold) -foreground red - $w.frame.text tag add bold 0.0 0.end + $txt tag configure bold -font $cfgVariables(fontBold) + $txt tag configure error -font $cfgVariables(fontBold) -foreground red + $txt tag add bold 0.0 0.end - $w.frame.text insert end "[::msgcat::mc "Enter command for execute file"] $filePath >\n" + $txt insert end "[::msgcat::mc "Enter command for execute file"] $filePath >\n" set pos [$w.frame.text index insert] set lineNum [lindex [split $pos "."] 0] - $w.frame.text insert 0.0 "======================================================================================\n" - $w.frame.text tag add bold $lineNum.0 $lineNum.end - Highlight::ExecuteColorized $w.frame.text + $txt insert 0.0 "======================================================================================\n" + $txt tag add bold $lineNum.0 $lineNum.end + Highlight::ExecuteColorized $txt # focus -force $w.frame.text + + # Привязки событий для защиты от редактирования + # bind $txt { + # if {![IsLastLine %W]} { + # break + # } + # } + # bind $txt { + # # Разрешаем Enter только в последней строке + # if {![IsLastLine %W]} { + # break + # } else { + # list Run $w $filePath + # } + # } + # bind $txt [list CheckLastLineAndRun $txt $w $filePath] + # + # bind $txt { + # if {[%W tag ranges sel] ne ""} { + # if {![IsSelectionInLastLine %W]} { + # break + # } + # } else { + # if {![IsLastLine %W]} { + # break + # } + # } + # } + # bind $txt { + # if {[%W tag ranges sel] ne ""} { + # if {![IsSelectionInLastLine %W]} { + # break + # } + # } else { + # if {![IsLastLine %W]} { + # break + # } + # } + # } + # # Защита от вставки + # bind $txt <> { + # if {[%W tag ranges sel] ne ""} { + # if {![IsSelectionInLastLine %W]} { + # break + # } + # } else { + # if {![IsLastLine %W]} { + # break + # } + # } + # } + # # Защита от вырезания + # bind $txt <> { + # if {[%W tag ranges sel] ne ""} { + # if {![IsSelectionInLastLine %W]} { + # break + # } + # } else { + # break + # } + # } + focus -force $w.frame.text.t } @@ -970,6 +1071,8 @@ proc SendSignal {pid signal} { } } + + # Правка файла настроек proc Settings {} { global dir diff --git a/projman.tcl b/projman.tcl index 0915cee..e08b830 100755 --- a/projman.tcl +++ b/projman.tcl @@ -10,7 +10,7 @@ exec wish8.6 "$0" -- "$@" ###################################################### # Version: 2.0.0 # Release: alpha20 -# Build: 31102025185656 +# Build: 07112025145212 ###################################################### # определим текущую версию, релиз и т.д.