Compare commits

2 Commits

7 changed files with 101 additions and 54 deletions

3
.gitignore vendored
View File

@@ -7,4 +7,5 @@ debian/projman.debhelper.log
debian/*.tmp debian/*.tmp
debian/errors debian/errors
*.tmp *.tmp
errors errors
test.tcl

14
debian/changelog vendored
View File

@@ -1,3 +1,15 @@
projman (2.0.0-beta6) stable; urgency=medium
* Добавил обновление информации в просмотрщике MD при сохранении открытого в редакторе файла.
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 8 Apr 2026 18:17:24 +0300
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 projman (2.0.0-beta6) stable; urgency=medium
* Добавлены настройки для просмотрщика MD в части касаемой ссылок и выделения текста. * Добавлены настройки для просмотрщика MD в части касаемой ссылок и выделения текста.
@@ -546,3 +558,5 @@ projman (2.0.0-alfa0) stable; urgency=medium

View File

@@ -97,6 +97,7 @@ codeBlockFont=Monospace 10 italic
textBG=#333333 textBG=#333333
linkFont={Droid Sans Mono} 10 bold linkFont={Droid Sans Mono} 10 bold
linkFG=#54bcff linkFG=#54bcff
runViewer=true
" "
proc Config::create {dir} { proc Config::create {dir} {
set cfgFile [open [file join $dir projman.ini] "w+"] set cfgFile [open [file join $dir projman.ini] "w+"]

View File

@@ -1511,6 +1511,15 @@ namespace eval Editor {
} }
# puts [$w.panelTxt panes] # puts [$w.panelTxt panes]
DebugPuts "$w $fileType $nb $fileFullPath" DebugPuts "$w $fileType $nb $fileFullPath"
# set fileType [string toupper [string trimleft [file extension $filePath] "."]]
# Execute the MD-file viewer
if {$fileType eq "MD" && $cfgVariables(runViewer) eq "true"} {
ShowMD $fileFullPath
return
}
if [winfo exists $w.frmText2] { if [winfo exists $w.frmText2] {
$w.panelTxt forget $w.frmText2 $w.panelTxt forget $w.frmText2
destroy $w.frmText2 destroy $w.frmText2

View File

@@ -395,6 +395,14 @@ namespace eval FileOper {
# puts "$f was saved" # puts "$f was saved"
close $f close $f
ResetModifiedFlag $nbEditorItem $nbEditorWindow ResetModifiedFlag $nbEditorItem $nbEditorWindow
# Проверяем если в редакторе открыт MD-файл и запущен его просмотрщик
if {[string toupper [string trimleft [file extension $filePath] "."]] eq "MD" && [winfo exists .viewer]} {
if {[wm title .viewer] eq $filePath} {
ShowMD $filePath true
}
}
if {[file tail $filePath] eq "projman.ini"} { if {[file tail $filePath] eq "projman.ini"} {
Config::read $dir(cfg) Config::read $dir(cfg)
} }

View File

@@ -9,61 +9,66 @@
# #
###################################################### ######################################################
proc ShowMD {fileFullPath} { proc ShowMD {fileFullPath {reload "false"}} {
global cfgVariables global cfgVariables
set win .viewer set win .viewer
if {$reload eq "false"} {
set parentGeometry [wm geometry .] set parentGeometry [wm geometry .]
set parentWidth [winfo width .] set parentWidth [winfo width .]
set parentHeight [winfo height .] set parentHeight [winfo height .]
set parentX [winfo x .] set parentX [winfo x .]
set parentY [winfo y .] set parentY [winfo y .]
# Устанавливаем размеры нового окна (меньше на 200)
set newWidth [expr {$parentWidth - 200}]
set newHeight [expr {$parentHeight - 200}]
# Вычисляем позицию для центрирования относительно родительского окна
set x [expr {$parentX + ($parentWidth - $newWidth) / 2}]
set y [expr {$parentY + ($parentHeight - $newHeight) / 2}]
# Применяем геометрию
# Устанавливаем размеры нового окна (меньше на 200) if { [winfo exists $win] } { destroy $win; return false }
set newWidth [expr {$parentWidth - 200}] toplevel $win
set newHeight [expr {$parentHeight - 200}] # wm title $win "[::msgcat::mc "Help"]"
wm title $win $fileFullPath
wm geometry $win ${newWidth}x${newHeight}+${x}+${y}
wm overrideredirect $win 0
set frm [ttk::frame $win.frmHelp]
pack $frm -expand 1 -fill both
set txt [text $frm.txt -wrap $cfgVariables(editorWrap) -background $cfgVariables(textBG) \
-xscrollcommand "$win.h set" -yscrollcommand "$frm.v set" -font $cfgVariables(viewerFont)]
pack $txt -side left -expand 1 -fill both
pack [ttk::scrollbar $frm.v -command "$frm.txt yview"] -side right -fill y
ttk::scrollbar $win.h -orient horizontal -command "$frm.txt xview"
if {$cfgVariables(editorWrap) eq "none"} {
pack $win.h -side bottom -fill x
# Вычисляем позицию для центрирования относительно родительского окна }
set x [expr {$parentX + ($parentWidth - $newWidth) / 2}] bind .viewer <Escape> {destroy .viewer}
set y [expr {$parentY + ($parentHeight - $newHeight) / 2}]
$txt tag configure h1 -font $cfgVariables(h1Font)
# Применяем геометрию $txt tag configure h2 -font $cfgVariables(h2Font)
$txt tag configure h3 -font $cfgVariables(h3Font)
if { [winfo exists $win] } { destroy $win; return false } $txt tag configure h4 -font $cfgVariables(h4Font)
toplevel $win $txt tag configure h5 -font $cfgVariables(h5Font)
wm title $win "[::msgcat::mc "Help"]" $txt tag configure h6 -font $cfgVariables(h6Font)
wm geometry $win ${newWidth}x${newHeight}+${x}+${y} $txt tag configure mdList -font $cfgVariables(mdListFont)
wm overrideredirect $win 0 $txt tag configure codeBlock -foreground $cfgVariables(codeBlockFG) \
-background $cfgVariables(codeBlockBG) -font $cfgVariables(codeBlockFont)
set frm [ttk::frame $win.frmHelp] $txt tag configure italic -font $cfgVariables(italicFont)
pack $frm -expand 1 -fill both $txt tag configure bold -font $cfgVariables(boldFont)
$txt tag configure italicBold -font $cfgVariables(italicBoldFont)
set txt [text $frm.txt -wrap $cfgVariables(editorWrap) -background $cfgVariables(textBG) \ $txt tag configure link -foreground $cfgVariables(linkFG) -font $cfgVariables(linkFont)
-xscrollcommand "$win.h set" -yscrollcommand "$frm.v set" -font $cfgVariables(viewerFont)] $txt tag configure quote -background $cfgVariables(codeBlockBG)
pack $txt -side left -expand 1 -fill both } else {
pack [ttk::scrollbar $frm.v -command "$frm.txt yview"] -side right -fill y set txt .viewer.frmHelp.txt
ttk::scrollbar $win.h -orient horizontal -command "$frm.txt xview" $txt delete 0.0 end
if {$cfgVariables(editorWrap) eq "none"} {
pack $win.h -side bottom -fill x
} }
bind .viewer <Escape> {destroy .viewer}
$txt tag configure h1 -font $cfgVariables(h1Font)
$txt tag configure h2 -font $cfgVariables(h2Font)
$txt tag configure h3 -font $cfgVariables(h3Font)
$txt tag configure h4 -font $cfgVariables(h4Font)
$txt tag configure h5 -font $cfgVariables(h5Font)
$txt tag configure h6 -font $cfgVariables(h6Font)
$txt tag configure mdList -font $cfgVariables(mdListFont)
$txt tag configure codeBlock -foreground $cfgVariables(codeBlockFG) \
-background $cfgVariables(codeBlockBG) -font $cfgVariables(codeBlockFont)
$txt tag configure italic -font $cfgVariables(italicFont)
$txt tag configure bold -font $cfgVariables(boldFont)
$txt tag configure italicBold -font $cfgVariables(italicBoldFont)
$txt tag configure link -foreground $cfgVariables(linkFG) -font $cfgVariables(linkFont)
set codeBlockBegin false set codeBlockBegin false
set f [open "$fileFullPath" r] set f [open "$fileFullPath" r]
@@ -102,6 +107,13 @@ proc ShowMD {fileFullPath} {
ProcessLineWithURL $line $txt $result ProcessLineWithURL $line $txt $result
} elseif {$textTag eq "markable"} { } elseif {$textTag eq "markable"} {
ProcessLineWithMark $line $txt $result ProcessLineWithMark $line $txt $result
} elseif {$textTag eq "quote"} {
set symList [split [lindex $result 2] ">"]
for {set i 1} { $i < [llength $symList]} {incr i} {
$txt insert end " " quote
$txt insert end " "
}
$txt insert end [lindex $result 1]\n
} else { } else {
$txt insert end "[lindex $result 1]\n" $textTag $txt insert end "[lindex $result 1]\n" $textTag
} }
@@ -299,6 +311,11 @@ proc MarkDownParser {line} {
set result [ExtractURL $line {\[([^\]]+)\]\(([^)]+)\)}] set result [ExtractURL $line {\[([^\]]+)\]\(([^)]+)\)}]
return [list link $result] return [list link $result]
} }
# Quoted text
if [regexp -nocase -line -- {(^>(?:>|\s)*)(.*)$} $line match v1 v2] {
puts "Quoted text $match"
return [list quote $v2 $v1]
}
return [list {} $line] return [list {} $line]
@@ -381,6 +398,3 @@ proc ExtractBlocks {line pattern} {
} }
return $result return $result
} }

View File

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