6 Commits

8 changed files with 71 additions and 20 deletions

2
.gitignore vendored
View File

@@ -8,4 +8,4 @@ debian/*.tmp
debian/errors debian/errors
*.tmp *.tmp
errors errors
test.tcl test.*

17
debian/changelog vendored
View File

@@ -1,17 +1,8 @@
projman (2.0.0-beta6) stable; urgency=medium projman (2.0.0-beta6) stable; urgency=medium
* Добавил обновление информации в просмотрщике MD при сохранении открытого в редакторе файла. * Добавлена логика для работы с troff/groff файлами
* Добавил настройку команды для troff файлов (по умолчанию groff)
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 8 Apr 2026 18:17:24 +0300 * Добавлена иконка для troff файлов
projman (2.0.0-beta6) stable; urgency=medium
* Новая сборка
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 8 Apr 2026 16:50:52 +0300
projman (2.0.0-beta6) stable; urgency=medium
* Добавлены настройки для просмотрщика MD в части касаемой ссылок и выделения текста. * Добавлены настройки для просмотрщика MD в части касаемой ссылок и выделения текста.
* Добавлена обработка тэгов выдеоления текста курсивом или тодщиной. Релизована обработка показа ссылок и вызова брузера при щелчке на ссылке. * Добавлена обработка тэгов выдеоления текста курсивом или тодщиной. Релизована обработка показа ссылок и вызова брузера при щелчке на ссылке.
* Добавлены процедуры отображение подсказок и запуска броузера для ссылок. * Добавлены процедуры отображение подсказок и запуска броузера для ссылок.
@@ -558,5 +549,7 @@ projman (2.0.0-alfa0) stable; urgency=medium

View File

@@ -75,6 +75,7 @@ RB=ruby
HTM=firefox HTM=firefox
HTML=firefox HTML=firefox
LUA=lua LUA=lua
TROFF=groff
\[Debug\] \[Debug\]
debug=false debug=false
debugOut=stdout debugOut=stdout

View File

@@ -1462,7 +1462,25 @@ namespace eval Editor {
} }
set fileType [string toupper [string trimleft [file extension $fileFullPath] "."]] set fileType [string toupper [string trimleft [file extension $fileFullPath] "."]]
if {$fileType eq ""} {set fileType "Unknown"} # Set file type if file extention is digits
switch -regexp -- $fileType {
[[:digit:]]+ {
if {[FileOper::GetFileMimeType $fileFullPath] eq "troff"} {
set fileType TROFF
} else {
set fileType "Unknow"
}
}
^$ {
if {[FileOper::GetFileMimeType $fileFullPath] eq "troff"} {
set fileType TROFF
} else {
set fileType "Unknow"
}
}
}
DebugPuts "Editor::Editor: file type is \"$fileType\""
# if {$fileType eq ""} {set fileType "Unknown"}
ExecutorCommandPathSetting $fileType ExecutorCommandPathSetting $fileType
@@ -1510,7 +1528,7 @@ namespace eval Editor {
puts $fileFullPath puts $fileFullPath
} }
# puts [$w.panelTxt panes] # puts [$w.panelTxt panes]
DebugPuts "$w $fileType $nb $fileFullPath" DebugPuts "Editor::SplitEditorForExecute: $w $fileType $nb $fileFullPath"
# set fileType [string toupper [string trimleft [file extension $filePath] "."]] # set fileType [string toupper [string trimleft [file extension $filePath] "."]]

View File

@@ -7,7 +7,6 @@
# Working with files module # Working with files module
###################################################### ######################################################
namespace eval FileOper { namespace eval FileOper {
global packages global packages
variable types variable types
@@ -47,6 +46,9 @@ namespace eval FileOper {
proc GetFileMimeType {fileFullPath {opt ""}} { proc GetFileMimeType {fileFullPath {opt ""}} {
global cfgVariables global cfgVariables
if [regexp -nocase -- {untitled} $fileFullPath mattch] {
return text
}
# Проверям наличие программы в системе, если есть то добавляем опции # Проверям наличие программы в системе, если есть то добавляем опции
# если нет то используем тиклевый пакет # если нет то используем тиклевый пакет
if [file exists $cfgVariables(fileTypeCommand)] { if [file exists $cfgVariables(fileTypeCommand)] {
@@ -67,6 +69,7 @@ namespace eval FileOper {
if [regexp -nocase -- {(\w+)/([\w\-_\.]+); charset=([[:alnum:]-]+)} $pipe m fType fExt fCharset] { if [regexp -nocase -- {(\w+)/([\w\-_\.]+); charset=([[:alnum:]-]+)} $pipe m fType fExt fCharset] {
DebugPuts "$fType $fExt $fCharset" DebugPuts "$fType $fExt $fCharset"
} }
switch $opt { switch $opt {
"charset" { "charset" {
if [info exists fCharset] { if [info exists fCharset] {
@@ -76,7 +79,13 @@ namespace eval FileOper {
} }
# линуксовый file не всегда корректно определяет тип файла # линуксовый file не всегда корректно определяет тип файла
# используем пакет из tcl # используем пакет из tcl
lassign [::fileutil::fileType $fileFullPath] fType fBinaryType fBinaryInterp if { $fType eq "text" && $fExt eq "troff"} {
set fType $fExt
set fBinaryType "text"
set fBinaryInterp "groff"
} else {
lassign [::fileutil::fileType $fileFullPath] fType fBinaryType fBinaryInterp
}
DebugPuts "File type is $fType, $fBinaryType, $fBinaryInterp" DebugPuts "File type is $fType, $fBinaryType, $fBinaryInterp"
set ext [string tolower [file extension $fileFullPath]] set ext [string tolower [file extension $fileFullPath]]
@@ -140,6 +149,9 @@ namespace eval FileOper {
} }
} }
} }
"troff" {
return troff
}
"empty" { "empty" {
return text return text
} }
@@ -536,7 +548,7 @@ namespace eval FileOper {
set fileType [FileOper::GetFileMimeType $fileFullPath] set fileType [FileOper::GetFileMimeType $fileFullPath]
} }
# puts "$fileType <<<<<<<<<<<" DebugPuts "FileOper::Edit: file type is \"$fileType\""
switch $fileType { switch $fileType {
"text" { "text" {

View File

@@ -1968,3 +1968,14 @@ image create photo cpp_16x12 -data {
AAALEwEAmpwYAAAAB3RJTUUH6gIGDxU21/OqSAAAADVJREFUCNd9jUEOACAIw7D7/58VmNF4sAco AAALEwEAmpwYAAAAB3RJTUUH6gIGDxU21/OqSAAAADVJREFUCNd9jUEOACAIw7D7/58VmNF4sAco
CbCIm5FsBTwsd+kmgVQu87p3OLfg/9AJJPFhAjDkAJmwKBolAAAAAElFTkSuQmCC CbCIm5FsBTwsd+kmgVQu87p3OLfg/9AJJPFhAjDkAJmwKBolAAAAAElFTkSuQmCC
} }
image create photo troff_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IB2cksfwAAAARnQU1BAACx
jwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dE
AAAAAAAA+UO7fwAAAAlwSFlzAAAAWAAAAFgBeNpLYgAAAAd0SU1FB+oEDw0yFseUVqEAAAEXSURB
VCjPfZE/S4JxEMc/p4/EU489Bg5BSDgECdZQU7QF0hYUuLm1+yJqj15AS2+gRWhraWvIQcEKwnIw
bIt80OcPT9fSY49pfuE47nf34X53J0xRuaxJd/G1ilCpXeS34znjx2v0sLx6SHdwRcZcB0lEOfkL
oKqEoXJz+0Hz0eO+5VHaMbm+HO+eiAf1hsNbzyefS+EMlWLBnPjuCBgMQ3rvPhnboPHgMpeCwtoM
4Lnt0ndC0gtJ6k8BRyULyzL+B0QUz4eT8zssU9jfs6ct8Hfol47P1uY8nW4RP1AytjEbyK2ksG2D
LxWqx1kSIsySfvYDPT3rarPlaFzxG40BgO4e1BTSUVHcJoYWQJayGxXoSxTHbKRvV5VqA9sEagYA
AAAASUVORK5CYII=
}

View File

@@ -925,6 +925,22 @@ proc Execute {filePath w activeEditor} {
# Added executor from config # Added executor from config
set fileType [string toupper [string trimleft [file extension $filePath] "."]] set fileType [string toupper [string trimleft [file extension $filePath] "."]]
switch -regexp -- $fileType {
[[:digit:]]+ {
if {[FileOper::GetFileMimeType $filePath] eq "troff"} {
set fileType TROFF
} else {
set fileType "Unknow"
}
}
^$ {
if {[FileOper::GetFileMimeType $filePath] eq "troff"} {
set fileType TROFF
} else {
set fileType "Unknow"
}
}
}
if {[info exists cfgVariables($fileType)] != 0 && $cfgVariables($fileType) ne ""} { if {[info exists cfgVariables($fileType)] != 0 && $cfgVariables($fileType) ne ""} {
$w.frame.text insert end "$cfgVariables($fileType) %f" $w.frame.text insert end "$cfgVariables($fileType) %f"
} }
@@ -1131,7 +1147,7 @@ proc ExecutorCommandPathSetting {fileType} {
} }
if {[info exists cfgVariables($fileType)] == 0} { if {[info exists cfgVariables($fileType)] == 0} {
set cfgVariables($fileType) "" set cfgVariables($fileType) ""
DebugPuts $cfgVariables($fileType) DebugPuts "ExecutorCommandPathSetting: cfgVariables($fileType) = $cfgVariables($fileType)"
} }
} }

View File

@@ -10,7 +10,7 @@ exec wish8.6 "$0" -- "$@"
###################################################### ######################################################
# Version: 2.0.0 # Version: 2.0.0
# Release: beta6 # Release: beta6
# Build: 08042026181732 # Build: 21042026112230
###################################################### ######################################################
# определим текущую версию, релиз и т.д. # определим текущую версию, релиз и т.д.