Compare commits

...

4 Commits

12 changed files with 263 additions and 123 deletions

View File

@ -1,10 +1,10 @@
# About
## About
ProjMan (aka "Tcl/Tk Project Manager") is a editor for programming in TCL/Tk (and other language).
It includes a file manager, a source editor with syntax highlighting and code navigation, a context-sensitive help system, Git support, and much more.
Working an Linux and Windows.
# Support languages
## Support languages
Highlightning and source code navigation:
@ -22,13 +22,88 @@ Highlightning:
* HTML
* XML
# Requirements
## Requirements
For UNIX-like OS
Tcl/Tk >= 8.6 http://tcl.tk
tcllib, tklib
# Credits
## Getting source code
Download the source code archive https://git.nuk-svk.ru/svk/projman/archive/master.tar.gz
Or use git:
```
git clone https://git.nuk-svk.ru/svk/projman.git
```
## Build package
```
cd projman/debian/
./build-deb-projman.sh
cd projman/redhat/
./build-rpm-projman.sh
```
## Install
Use package manager for you system:
Debian ```sudo dpkg -i projman_2.0.0-alpha_amd64.deb```
Redhat ```sudo rpm -Uhv projman_2.0.0-alpha_amd64.rpm```
## Usage
Running command (need full path to the each file or folder):
Open files
```
projman ~/tmp/test.tcl ~/tmp/2.go ...
```
Open folders
```
projman ~/projects/projman ...
```
Or type "projman" into terminal, Or choose the name of the program "Projman" on the Start menu.
### Keyboard shortcut
- Ctrl-N - Create new file
- Ctrl-O - Open file
- Ctrl-W - Close editor (file)
- Ctrl-K - Open folder
- Ctrl-Q - Quit from ProjMan
- Ctrl-J - Show procedures (functions) list for navigation in open editor
- Ctrl-L - Find and display files where the variable is defined, the name of which is located under the cursor in the editor
- Ctrl-F - Search text in open editor
- Ctrl-[ - Move the line (or selected lines) one position (see config tabSize=4) to the right
- Ctrl-] - Move the line (or selected lines) one position to the left
- Ctrl-, - Comment the line (or selected lines)
- Ctrl-. - Uncomment the line (or selected lines)
- Ctrl-I - Insert base64 encoded image into edited text
- Ctrl-G - Go to line dialog
- Ctrl-C - Copy selected text into buffer
- Ctrl-V - Paste text from buffer
- Alt-P - Show/Hide the file tree panel
- Alt-W - Delete the current word
- Alt-E - Delete text from current position to end of line
- Alt-B - Delete text from current position to begin of line
- Alt-R - Delete current line
- Alt-Y - Copy current line into buffer
- Alt-S - Split the edited window horizontally
## Credits
Sergey Kalinin - author
svk@nuk-svk.ru

View File

@ -3,10 +3,10 @@
cd ../
VERSION=$(grep Version projman.tcl | grep -oE '\b[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}\b')
RELEASE=$(grep Release projman.tcl | grep -oE '\b[0-9A-Za-z]{1,3}\b')
RELEASE=$(grep Release projman.tcl | grep -oE '[0-9A-Za-z]+$')
BUILD_DATE=$(date +%d%m%Y%H%M%S)
TXT="# Build: ${BUILD_DATE}"
echo "$VERSION, $RELEASE, $BUILD_DATE"
sed -i "/# Build:.*/c$TXT" projman.tcl
cp projman.tcl projman
@ -25,4 +25,3 @@ dpkg-buildpackage
rm -v projman
rm -r -v debian/{projman,.debhelper}

4
debian/install vendored
View File

@ -3,5 +3,5 @@ lib/*.tcl /usr/share/projman/lib
lib/msgs/* /usr/share/projman/lib/msgs
theme /usr/share/projman/
README.md /usr/share/doc/projman
debian/projman.desktop /usr/share/applications
projman-48.png /usr/share/pixmaps
projman.desktop /usr/share/applications
projman.png /usr/share/pixmaps

View File

@ -92,8 +92,11 @@ namespace eval Git {
global cfgVariables activeProject
set cmd exec
set d [pwd]
if {$activeProject ne ""} {
if {$activeProject ne "" && [file isdirectory $activeProject] == 1} {
cd $activeProject
if ![file exists .git] {
return
}
} else {
return ""
}
@ -127,7 +130,14 @@ namespace eval Git {
proc Status {} {
global cfgVariables activeProject
cd $activeProject
if [file isdirectory $activeProject] {
cd $activeProject
if ![file exists .git] {
return
}
} else {
return false
}
set cmd exec
lappend cmd $cfgVariables(gitCommand)
lappend cmd "status"
@ -239,6 +249,10 @@ namespace eval Git {
# puts "$cmd"
catch $cmd pipe
puts $pipe
if [regexp -nocase -- {^fatal:} $pipe match] {
ShowMessage "Command: '$cmd' error" $pipe
return
}
foreach line [split $pipe "\n"] {
# puts "$line"
lappend res $line
@ -385,6 +399,40 @@ namespace eval Git {
puts $pipe
return
}
proc Config {repo user email} {
global activeProject cfgVariables
# puts $values
set cmd exec
lappend cmd $cfgVariables(gitCommand)
lappend cmd "config"
lappend cmd $repo
lappend cmd $dir
puts $cmd
# catch $cmd pipe
# puts $pipe
return
}
proc Init {} {
global activeProject cfgVariables
# puts $values
if [file isdirectory $activeProject] {
cd $activeProject
} else {
return false
}
set cmd exec
lappend cmd $cfgVariables(gitCommand)
lappend cmd "init"
lappend cmd $activeProject
puts $cmd
catch $cmd pipe
if [regexp -nocase -- {^fatal:} $pipe match] {
ShowMessage "Command: '$cmd' error" $pipe
return
}
}
proc Key {k fr} {
# puts [Editor::Key $k]
@ -572,6 +620,7 @@ namespace eval Git {
}
proc CloneDialog {} {
global activeProject
set win .clone
set x [winfo rootx .frmWork]
set y [winfo rooty .frmWork]
@ -608,10 +657,20 @@ namespace eval Git {
ReadFilesFromDirectory $repoDir $repoDir
destroy .clone
}
ttk::button $win.btnInit -compound left -image new_20x20 \
-text [::msgcat::mc "Init repository"] -command {
Git::Init
FileOper::ReadFolder $activeProject
ReadFilesFromDirectory $activeProject $activeProject
destroy .clone
}
grid $win.entUrl -row 0 -column 0 -columnspan 2 -sticky new
grid $win.entFolder -row 1 -column 0 -sticky new
grid $win.btnFolder -row 1 -column 1 -sticky e
grid $win.btnFolder -row 1 -column 1 -sticky ew
grid $win.btnClone -row 2 -column 0 -columnspan 2 -sticky new
grid $win.btnInit -row 3 -column 0 -columnspan 2 -sticky new
bind $win <Escape> "destroy $win"
@ -639,7 +698,7 @@ namespace eval Git {
}
return
}
if {[info exists activeProject] == 0} {
if {[info exists activeProject] == 0 || [file exists [file join $activeProject .git]] == 0} {
Git::CloneDialog
return
}

View File

@ -1279,3 +1279,19 @@ image create photo folder_24x24 -data {
LAKAPM8XA7qug+d5mAX4vh9qrdE0zUHXMgiCDz7d6QFxMQfU9aCtgH8EIIRo1xU8OgVYa43rCp7+
IuE4js+zT0Vd12dSymtK6UET3ff93fqP76VXznxN1iafwLQAAAAASUVORK5CYII=
}
image create photo new_20x20 -data {
iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw0AcxV9TtVoqDlYQcchQHcSCqIijVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
BD9AHJ2cFF2kxP8lhRaxHhz34929x907QKgWmWa1jQGabpvJeExMZ1bEwCuC6EMXRtAhM8uYlaQE
Wo6ve/j4ehflWa3P/Tm61azFAJ9IPMMM0yZeJ57atA3O+8RhVpBV4nPiUZMuSPzIdcXjN855lwWe
GTZTyTniMLGYb2KliVnB1IgniSOqplO+kPZY5bzFWSuWWf2e/IWhrL68xHWag4hjAYuQIEJBGRso
wkaUVp0UC0naj7XwD7h+iVwKuTbAyDGPEjTIrh/8D353a+Umxr2kUAxof3GcjyEgsAvUKo7zfew4
tRPA/wxc6Q1/qQpMf5JeaWiRI6BnG7i4bmjKHnC5A/Q/GbIpu5KfppDLAe9n9E0ZoPcWCK56vdX3
cfoApKirxA1wcAgM5yl7rcW7O5t7+/dMvb8fS2tyl3d3iOIAAAAGYktHRAD/AP8A/6C9p5MAAAAJ
cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmChUJLAVnNEmdAAABEElEQVQ4y+2TsUoEMRRFz5sd
MwvaiD+xja0g+gnTz/b2NhZ+hY2dfyBMm6+wslCbbSSVIGy9EyZ5NhsYxB3jKmLhhRQhh5v3cl/g
X78ia+3cWjvPYcscSFXPQwhT4B5YAGETW2QWKX3f7wFHwM4YmGuIqspnZl8yzJV8FECM8UJEhmcz
VS299y/GmKWIRFXVoiiu6rq+HQ1FVTWEMA0h7KYLjTGlqkqMsfTe7yfOOXcKPAJPKSjZUPkMOE5v
1rbtZYyxbJrmBlgCccDeAQ9APzY2C+A5baqqOuu67gB4BVpgNWD7ZDZmGIazJiIR0HVlq3eGW6Ws
6/UzP0VErp1zJ1uNzYgOgckwgO9qktvR39YbIoJqCGWh7C4AAAAASUVORK5CYII=
}

View File

@ -32,6 +32,7 @@
::msgcat::mcset ru "Comments" "Коментарии"
::msgcat::mcset ru "Comment selected" "Закоментировать"
::msgcat::mcset ru "Uncomment selected" "Раскоментировать"
::msgcat::mcset ru "Clone repository" "Клонировать репозиторий"
::msgcat::mcset ru "Column" "Столбец"
::msgcat::mcset ru "Commit" "Коммита"
::msgcat::mcset ru "Commit description" "Описание коммита"
@ -103,6 +104,7 @@
::msgcat::mcset ru "Image dir" "Каталог изображений"
::msgcat::mcset ru "Indent foreground" "Подсветка отступа"
::msgcat::mcset ru "Indent background" "Подсветка отступа"
::msgcat::mcset ru "Init repository" "Создать репозиторий"
::msgcat::mcset ru "Insert" "Вставка"
::msgcat::mcset ru "In" "В"
::msgcat::mcset ru "Insert image" "Вставить изображение"

View File

@ -8,4 +8,4 @@ Type=Application
StartupNotify=true
MimeType=text/plain;
Categories=Development;TextEditor;
Icon=projman-48
Icon=projman

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -1,108 +0,0 @@
Name: projman
Version: 0.4.5
Release: rh1
Summary: Tcl/Tk Project Manager
License: GPL
Group: Development/Tcl
Url: https://bitbucket.org/svk28/projman
BuildArch: noarch
Source: %name-%version-%release.tar.gz
Requires: tcl, tk, bwidget, tcl-img
%description
This programm is Integrated Development Environment for Tcl/Tk language programming. Include - project manager, text and source editor with syntax highlightning, archive (tar.gz) and PRM builder and more.
%description -l ru_RU.UTF8
Интегрированная среда для программирования на Tcl/Tk. Включает в себя - менеджер проектов, полнофункциональный редактор, систему навигации по файлам и структуре файлов и многое другое.
%prep
%setup -n %name
%build
%install
mkdir -p $RPM_BUILD_ROOT{%_bindir,%_datadir/%name/{img,msgs,/lib/highlight}}
install -p -m755 projman.tcl $RPM_BUILD_ROOT%_bindir/%name
install -p -m644 *.tcl $RPM_BUILD_ROOT%_datadir/%name/
install -p -m644 lib/highlight/*.tcl $RPM_BUILD_ROOT%_datadir/%name/highlight/
install -p -m644 *.conf $RPM_BUILD_ROOT%_datadir/%name/
install -p -m644 img/*.* $RPM_BUILD_ROOT%_datadir/%name/img/
install -p -m644 msgs/*.* $RPM_BUILD_ROOT%_datadir/%name/msgs/
# Menu support
#mkdir -p $RPM_BUILD_ROOT/usr/lib/menu
#cat > $RPM_BUILD_ROOT%_libdir/menu/%name << EOF
#?package(%name): needs=x11 icon="projman.png" section="Applications/Development/Development environments" title=ProjMan longtitle="Tcl/Tk Project Manager" command=projman
#EOF
#mdk icons
#install -d $RPM_BUILD_ROOT{%_iconsdir,%_liconsdir,%_miconsdir}
#install -p -m644 img/icons/%name.png $RPM_BUILD_ROOT%_iconsdir/
#install -p -m644 img/icons/large/%name.png $RPM_BUILD_ROOT%_liconsdir/
#install -p -m644 img/icons/mini/%name.png $RPM_BUILD_ROOT%_miconsdir/
%post
%update_menus
%postun
%clean_menus
%files
%doc INSTALL CHANGELOG TODO COPYING README THANKS
%doc hlp/ru/*
%_bindir/%name
%_datadir/%name
#%_libdir/menu/%name
#%_iconsdir/%name.png
#%_liconsdir/%name.png
#%_miconsdir/%name.png
%changelog
* Fri Feb 16 2018 Sergey Kalinin <banzaj@altlinux.ru> 0.4.5
- Added saving main window geometry into projman.conf file when close programm
- Fixed AutoComplite precedure for TCL/TK-projects
- Added colored icon for main window
- Fixed "Close all" procedure if opened files from projects and file browser
- Fixed parsing some procedure name like ::proc::name or proc_na::me(aa) and parameters {{} {} {}}
- Added opening last active project when project run
- Fixed Windows OS running without installation
- Added gray theme
- Fixed work with file from directory (FileBrowser function).
- Auto indent added for () [] braces
- File Browser added. Now we will edited any file without project
- Tcl, Perl, PHP highlight comment procedure fixed
- Help file Text.html utf-8 encoding
- Change hotkeys "Control+," "Control+." "Control+/" (commect selected, uncoment selected, select all)
- Add new function Comments/Uncomment selected text
- Added binding mouse button: click on notebook tab highlight opened file name in tree
- Change "Paste from Clipboard" function
- Change popup editor menu (undo, redo, copy, paste, cut functions)
- Change Logo and About dialog
- Russian help files was conerting into utf-8 encode
- Change help file load procedure
- Fixed paste text highlight
- Fixed setting edited flag when paste the text from buffer
- Remove ctags support
- Added gitk (gui for git) support
- Changes color setting dialog into "Setting"
- Actualizing information into "About" dialog
- Corrected color settings for all widgets
- Change default color scheme
- Remove ctag, change autocomplitt procedure
* Wed Feb 13 2008 Sergey Kalinin <banzaj@altlinux.ru> 0.3.8-alt1
- Added text encoding support from koi8-r,cpp1251,cp866 to UTF-8
* Tue Feb 20 2007 Sergey Kalinin <banzaj@altlinux.ru> 0.3.7-alt4
- Fixed setiings dialog
- Fixed saved settings parameter
* Wed Oct 18 2006 Sergey Kalinin <banzaj@altlinux.ru> 0.3.7-alt3
- Remove SuperText widget now use native TEXT

View File

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

View File

@ -0,0 +1,42 @@
#!/bin/bash
RPM_BUILD_DIR=${HOME}/rpmbuild
mkdir -p ${RPM_BUILD_DIR}/{SOURCES,RPMS,SRPMS,SPECS,RPMS/noarch}
cd ../
VERSION=$(grep "Version" projman.tcl | grep -oE '\b[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}\b')
RELEASE=$(grep "# Release" projman.tcl | grep -oE '[0-9A-Za-z]+$')
BUILD_DATE=$(date +%d%m%Y%H%M%S)
TXT="# Build: ${BUILD_DATE}"
sed -i "/# Build:.*/c$TXT" projman.tcl
cp projman.tcl projman
sed -i "s+^set\ dir(lib)+set\ dir(lib)\ /usr/share/projman/lib ;#+g" projman
sed -i "s+\[pwd\]+/usr/share/projman+g" projman
CUR_DIR=$(pwd)
cd ../
tar --exclude='.git' --exclude='debian' --exclude='redhat' --exclude='projman.tcl' -czf ${RPM_BUILD_DIR}/SOURCES/projman-${VERSION}-${RELEASE}.tar.gz projman
cd ${CUR_DIR}
cp redhat/projman.spec ${RPM_BUILD_DIR}/SPECS/projman.spec
sed -i "s/.*Version:.*/Version:\t${VERSION}/" ${RPM_BUILD_DIR}/SPECS/projman.spec
sed -i "s/.*Release:.*/Release:\t${RELEASE}/" ${RPM_BUILD_DIR}/SPECS/projman.spec
rpmbuild -ba "${RPM_BUILD_DIR}/SPECS/projman.spec"
# cp ${RPM_BUILD_DIR}/RPMS/noarch/projman-${VERSION}-${RELEASE}.noarch.rpm /files/
# cp ${RPM_BUILD_DIR}/SRPMS/projman-${VERSION}-${RELEASE}.src.rpm /files/
rm -v projman
rm -r -v ${RPM_BUILD_DIR}/SPECS/projman.spec
rm -r -v ${RPM_BUILD_DIR}/SOURCES/projman-${VERSION}-${RELEASE}.tar.gz
rm -r -v ${RPM_BUILD_DIR}/BUILD/projman

View File

@ -0,0 +1,55 @@
Name: projman
Version: 2.0.0
Release: rh1
Summary: Tcl/Tk Project Manager
License: GPL
Group: Development/Tcl
Url: https://nuk-svk.ru
BuildArch: noarch
Source: %name-%version-%release.tar.gz
Requires: tcl, tk, tklib, tcllib
%description
This a editor for programming in TCL/Tk (and other language). It includes a file manager, a source editor with syntax highlighting and code navigation, a context-sensitive help system, Git support, and much more.
%description -l ru_RU.UTF8
Интегрированная среда для программирования на Tcl/Tk. Включает в себя - менеджер проектов, полнофункциональный редактор, систему навигации по файлам и структуре файлов и многое другое.
%prep
%setup -n %name
%build
%install
mkdir -p $RPM_BUILD_ROOT%_bindir
mkdir -p $RPM_BUILD_ROOT%_datadir/%name/lib/msgs
mkdir -p $RPM_BUILD_ROOT%_datadir/%name/theme
mkdir -p $RPM_BUILD_ROOT%{_datarootdir}/applications
install -p -m755 projman $RPM_BUILD_ROOT%_bindir/%name
install -p -m755 tkregexp.tcl $RPM_BUILD_ROOT%_bindir/tkregexp
# install -p -m644 *.tcl $RPM_BUILD_ROOT%_datadir/%name/
install -p -m644 lib/*.tcl $RPM_BUILD_ROOT%_datadir/%name/lib/
install -p -m644 lib/msgs/*.* $RPM_BUILD_ROOT%_datadir/%name/lib/msgs/
install -p -m644 theme/*.tcl $RPM_BUILD_ROOT%_datadir/%name/theme
install -p -m644 projman.desktop $RPM_BUILD_ROOT%{_datarootdir}/applications
%post
%update_menus
%postun
%clean_menus
%files
%doc INSTALL CHANGELOG TODO LICENSE README.md
%_bindir/%name
%_bindir/tkregexp
%_datarootdir/applications/%name.desktop
%_datadir/%name
%changelog
* Mon Nov 28 2022 Sergey Kalinin <svk@nuk-svk.ru> 2.0.0
- Initial release