Compare commits

..

91 Commits

Author SHA1 Message Date
svk
53869b8fe4 Обновить README.md
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2025-01-30 12:19:56 +03:00
svk
6854093ee1 Обновить README.md
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
2025-01-30 12:18:14 +03:00
svk
202f8d3d82 Обновить README.md
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
Исправлено описание и добавлены изображения
2025-01-30 12:14:09 +03:00
svk
7afdd33c58 Обновить README.md
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2024-10-31 19:48:30 +03:00
74e288d596 Новая сборка
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2024-08-22 15:18:59 +03:00
17636c13e3 changelog-gen.tcl: Добавлена генерация текстового журнала изменений 2024-08-22 15:09:19 +03:00
7d0c5796e5 build-deb-projman.sh: добавлена генерация changelog из git log 2024-08-22 13:38:52 +03:00
79c2e6f1dc changelog-gen.tcl: Вывод в файл вынесен в отдельную процедуру 2024-08-22 13:18:49 +03:00
2024aa86ba changelog-gen.tcl: Добавлено создание резервной копии выходного файла. Исправлен вывод в файл. 2024-08-22 13:12:28 +03:00
cb5c21c077 changelog-gen.tcl: Добавлены опции командной строки, добавлен вывод в файл 2024-08-22 13:01:17 +03:00
6b5d116743 Добавлен запуск changelog-gen при сборке пакета 2024-08-22 11:04:37 +03:00
6fc78c75b3 Добавлено чстение журнала начиная с определенной даты 2024-08-22 10:30:33 +03:00
4a3394183f Новая сборка 2024-08-22 10:29:44 +03:00
Калинин Сергей Валерьевич
e1db775b3b Генерация списка изменений для debian приведена к корректному виду
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2024-08-20 13:30:43 +03:00
Калинин Сергей Валерьевич
42349a4701 Генерация списка изменений для debian приведена к корректному виду 2024-08-20 13:28:51 +03:00
Калинин Сергей Валерьевич
f6bbc530bb Исправлен фокус при создании нового файла. #3
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2024-07-29 17:31:07 +03:00
svkalinin
c9e804b614 Исправлена неправильная замена выражение при поиске, если есть несколько совпадений в строке.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2024-07-17 12:28:30 +03:00
svkalinin
4bf10a1d30 Исправлена неправильная замена выражение при поиске, если есть несколько совпадений в строке. 2024-07-17 12:11:53 +03:00
svkalinin
f68cd75600 Реализовал базовые функции генератора журнала изменений
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2024-07-02 14:24:14 +03:00
svk
9ad7523e7c Финальный тест сборки
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 5s
2024-06-27 14:44:47 +03:00
svk
ea988f6b8d Обновить .gitea/workflows/build.yml
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 7s
2024-06-27 13:29:10 +03:00
svk
23de123a0b Обновить .gitea/workflows/build.yml
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
2024-06-27 13:25:16 +03:00
svk
b287ee5551 Обновить .gitea/workflows/build.yml
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
2024-06-27 13:24:03 +03:00
svk
dc9837b7c2 Обновить .gitea/workflows/build.yml
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s
2024-06-27 13:13:08 +03:00
svk
2caba8db1a Попытка загрузки собранного пакета
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s
2024-06-27 13:10:23 +03:00
svk
299638b1f8 Обновить .gitea/workflows/build.yml
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s
2024-06-27 12:53:09 +03:00
svk
56e7168d8e Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 4s
2024-06-27 12:52:10 +03:00
svk
b0a3292d9f Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 14s
2024-06-27 12:47:05 +03:00
svk
93dd90e355 Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 4s
2024-06-27 12:45:22 +03:00
svk
aff70dd8b7 Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 13s
2024-06-27 12:44:31 +03:00
svk
dea2ff0023 Обновить .gitea/workflows/build.yml
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
2024-06-27 12:43:20 +03:00
svk
6361043c25 Обновить .gitea/workflows/build.yml
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 3s
2024-06-27 12:41:34 +03:00
svk
4f8e7e306d Обновить debian/build-deb-projman.sh
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 4s
2024-06-26 16:22:29 +03:00
svk
b42977f416 Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 5s
2024-06-26 16:18:45 +03:00
svk
78c5f3784b Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 3s
2024-06-26 16:17:27 +03:00
svk
65c4213836 Обновить .gitea/workflows/build.yml
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
2024-06-26 16:16:30 +03:00
svk
993c1f7e3e Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 4s
2024-06-26 16:15:32 +03:00
svk
29bdac41fe Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 4s
2024-06-26 16:13:20 +03:00
svk
ad3aac9b4b Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 3s
2024-06-26 16:12:16 +03:00
svk
2e36bbc100 Обновить .gitea/workflows/build.yml
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 6s
2024-06-26 16:00:54 +03:00
svk
190ec5200f Обновить .gitea/workflows/build.yml
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s
2024-06-26 15:58:14 +03:00
svk
b495161d81 Обновить .gitea/workflows/build.yml
Some checks failed
Projman build the packages / Projman-Build (push) Failing after 1m2s
2024-06-26 15:53:21 +03:00
svk
faeeef6048 Обновить .gitea/workflows/build.yml
Some checks failed
Projman build the packages / Projman-Build (push) Failing after 12s
2024-06-26 13:02:29 +03:00
svk
8e496cb6bd Обновить .gitea/workflows/build.yml
Some checks are pending
Projman build the packages / Projman-Build (push) Waiting to run
2024-06-26 12:59:04 +03:00
svk
cfb29d6038 Обновить .gitea/workflows/build.yml
Some checks failed
Projman build the packages / Projman-Build (push) Has been cancelled
2024-06-26 12:39:02 +03:00
svk
6051f6821a Обновить .gitea/workflows/build.yml
Some checks failed
Projman build the packages / Projman-Build (push) Has been cancelled
2024-06-26 12:35:54 +03:00
svkalinin
6f99707fd7 Добавлена иконка для jinja template
Some checks are pending
Projman build the packages / Projman-Build (push) Waiting to run
2024-06-24 10:15:38 +03:00
svkalinin
d17aef0878 Исправил остатки слияния веток
Some checks failed
Projman build the packages / Projman-Build (push) Has been cancelled
2024-05-17 10:46:08 +03:00
svkalinin
397117e770 Исправлено некорректное определение типа файла при открытии 2024-05-17 10:40:21 +03:00
svkalinin
09d8a06f9e Исправлено некорректное определение типа файла при открытии. 2024-05-17 10:34:53 +03:00
svk
72abc2b84f Обновить .gitea/workflows/build.yml 2023-10-30 10:44:37 +03:00
svk
8bd48159d6 revert 61f2bca699
revert Обновить .gitea/workflows/build.yml

TEst actions
2023-10-30 09:55:41 +03:00
svk
61f2bca699 Обновить .gitea/workflows/build.yml
TEst actions
2023-10-30 09:46:02 +03:00
svk
55fe5c3023 Fix 2023-07-30 12:11:49 +03:00
svk
d04d419548 Fix 2023-07-30 12:01:24 +03:00
svk
bc56f02a35 TEst 2023-07-30 11:49:45 +03:00
svk
791a4c59a3 Test gitea actions 2023-07-30 11:44:41 +03:00
svk
f21e750967 Gitea actions add 2023-07-30 11:33:52 +03:00
svkalinin
3ee60f48c3 Merge branch 'master' of https://git.nuk-svk.ru/svk/projman 2023-07-27 13:04:32 +03:00
svkalinin
496514649a Исправил открытие файлов с разными путями (~/ ./ ../) 2023-07-27 13:03:02 +03:00
svk
336a05cd61 Добавил изображений программы 2023-02-23 13:46:56 +03:00
svkalinin
06c6205177 Исправлена ошибка при создании нового файла. 2023-02-06 09:27:38 +03:00
svk
6180a35718 Test 2022-12-22 19:59:05 +03:00
svk
0b92e4a1f0 Изменил(а) на '.woodpecker/.build.yml' 2022-12-22 19:48:06 +03:00
svk
87ae490b94 Изменил(а) на '.woodpecker/.build.yml' 2022-12-22 19:42:53 +03:00
svkalinin
005f832b7a Test 2022-12-21 16:53:44 +03:00
svkalinin
9b2477c954 Тесты 2022-12-21 16:34:00 +03:00
svkalinin
2328090962 Fix 2022-12-21 16:16:38 +03:00
svkalinin
9d86d26b2b Fix 2022-12-21 16:09:47 +03:00
svkalinin
a7af815ce4 Woodpecker test 2022-12-21 16:06:36 +03:00
svkalinin
b6afcc4c5f Добавил пиктограммы файлов 2022-12-21 14:59:40 +03:00
svkalinin
8de8ec16be Исправил процедуру Files::CloseAll ('Закрыть всё') 2022-12-20 12:38:22 +03:00
svkalinin
cb6cefd8ac Добавлена поддержка Lua 2022-12-19 15:29:30 +03:00
svkalinin
0fe4541dc0 Исправлена процедура (рас)комментирования 2022-12-19 15:29:17 +03:00
svkalinin
3467d6a89a Исправил ошибку при выходе в процедуре (Congig::Write) 2022-12-16 15:00:52 +03:00
svkalinin
3bf3b80e38 Добавил раскраски в ruby 2022-12-16 10:11:07 +03:00
svkalinin
a1248f6941 Добавлена возможность многострочных комментариев, если это поддерживается языком (html, go, ruby).
Добавлен параметр для включения данной фунциональности в меню и в конфиге.
2022-12-16 09:33:01 +03:00
svkalinin
777eaa01e5 В Ruby lexer добавлен поиск переменных коде. 2022-12-15 12:18:18 +03:00
svkalinin
2043a03c0b Новая сборка 2022-12-15 12:12:00 +03:00
svkalinin
d215c1ca25 Немного почистил. Добавлен поиск переменных по питоньим исходникам (lexer) 2022-12-15 11:59:05 +03:00
svkalinin
6f85de472a Еще одно исправление подсветки для INI 2022-12-09 15:45:23 +03:00
svkalinin
c929e53803 Новая сборка 2022-12-09 15:35:46 +03:00
svkalinin
c738d496e6 Исправлене подсветки комментариев в INI 2022-12-09 15:34:06 +03:00
svkalinin
fa55ce53c6 Новая сборка 2022-12-09 15:31:14 +03:00
svkalinin
6327d45a5c Изменения в подсветке для INI 2022-12-09 15:25:47 +03:00
svkalinin
52a0edfec8 fix 2022-12-09 15:04:28 +03:00
svkalinin
5319c475d9 Добавил подсветку для Desktop и Spec файлов 2022-12-09 15:02:53 +03:00
svkalinin
f2926cd047 Добавил вывод отладочной инфы в процедуру 2022-12-09 12:04:53 +03:00
svkalinin
84735e0dee Исправил подсветку комментариев в TCL 2022-12-09 11:51:24 +03:00
svkalinin
508933006e Оптимизация процедур 2022-12-09 11:34:54 +03:00
svkalinin
28ceaf1c67 Добавлена подсветка и навигация по HTML. Исправлена подсветка XML 2022-12-09 11:25:34 +03:00
21 changed files with 1530 additions and 275 deletions

View File

@@ -1,25 +0,0 @@
---
kind: pipeline
type: exec
name: default
platform:
os: linux
arch: amd64
steps:
- name: build DEB
commands:
- cd debian
- ./build-deb-projman.sh
- name: build RPM
commands:
- cd ../redhat
- ./build-rpm.sh
trigger:
event:
include:
- push

View File

@@ -0,0 +1,17 @@
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: tcl-tk-builder
steps:
- name: Build the packages
run: |
git clone ${{ vars.main_url }}${{ gitea.repository }}
pwd
cd projman/debian
./build-deb-projman.sh
cd ../../
curl --user ${{ vars.user}}:${{vars.api_token}} --upload-file "$(ls -1| grep projman | grep -E 'deb$')" ${{vars.main_url}}api/packages/${{vars.user}}/debian/pool/bookworm/main/upload
- run: echo "This job's status is ${{ job.status }}."

2
.gitignore vendored
View File

@@ -4,3 +4,5 @@ debian/update-desktop-database
debian/projman.substvars
debian/files
debian/projman.debhelper.log
debian/*.tmp
*.tmp

444
CHANGELOG
View File

@@ -1,136 +1,350 @@
######################################################
# Tcl/Tk Project manager 2.0
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svl.ru
# Home page: https://nuk-svk.ru
######################################################
projman (2.0.0-alfa16)
20/06/2022
- Beginning the project
Sergey Kalinin <svk@nuk-svk.ru> Thu, 22 Aug 2024 15:09:19 +0300
- changelog-gen.tcl: Добавлена генерация текстового журнала изменений
- build-deb-projman.sh: добавлена генерация changelog из git log
- changelog-gen.tcl: Вывод в файл вынесен в отдельную процедуру
- changelog-gen.tcl: Добавлено создание резервной копии выходного файла. Исправлен вывод в файл.
- changelog-gen.tcl: Добавлены опции командной строки
- Добавлен запуск changelog-gen при сборке пакета
- Добавлено чстение журнала начиная с определенной даты
- Новая сборка
13/07/2022
- Added open file dialog
- Added open folder dialog
- Added save file function
- Added a command line argument support (open file(s) or folder(s))
- Added TCL and BASH highlite
- Added a configuration file (progman.ini) and a procedure for reading/saving them
Sergey Kalinin <svkalinin@samsonpost.ru> Tue, 20 Aug 2024 13:30:43 +0300
- Генерация списка изменений для debian приведена к корректному виду
- Генерация списка изменений для debian приведена к корректному виду
- Исправлен фокус при создании нового файла. #3
14/07/2022
- Added On/Off viewing toolbar
- Added On/Off viewing line numbers bar
- Added a Comment/Uncomment text support
- Added text auto format
Калинин Сергей Валерьевич <svkalinin@samsonpost.ru> Wed, 17 Jul 2024 12:28:30 +0300
- Исправлена неправильная замена выражение при поиске
- Исправлена неправильная замена выражение при поиске
- Реализовал базовые функции генератора журнала изменений
15/07/2022
- Added a close file (tab) function with Ctrl+w
- Added a insert/remove the tabspace
- Fixed comment/uncomment selected text
svk <svkalinin@samsonpost.ru> Mon, 24 Jun 2024 10:15:38 +0300
- Добавлена иконка для jinja template
- Исправил остатки слияния веток
- Исправлено некорректное определение типа файла при открытии.
20/07/2022
- Fixed indent text
- Fixed insert " and '
- Added a main window geometry option into config, and autosave current geometry
<svk@nuk-svk.ru> Mon, 30 Oct 2023 09:46:02 +0300
- Gitea actions add
21/07/2022
- Added Save file dialog before tab was closed
- Added Save file dialog when exiting, if file was modify
22/07/2022
- Added GO highlight
27/07/2022
- Fixed comment/uncomment procedure (last line in selected text)
- Fixed error with save new (untitled) file
svk <svkalinin@samsonpost.ru> Thu, 27 Jul 2023 13:04:32 +0300
- Merge branch 'master' of https://git.nuk-svk.ru/svk/projman
- Исправил открытие файлов с разными путями (~/ ./ ../)
01/08/2022
- Added inserting base64 encoded image
- Added read the file structure and inserting into tree
- Added GUI font, and GUI foreground color setting
- Added tcl and go files images
- Added image for file type (extention)
svkalinin <svk@nuk-svk.ru> Thu, 23 Feb 2023 13:46:56 +0300
- Добавил изображений программы
03/08/2022
- Added some files icon
- Fix finded procedure (function) (tree click)
- Fix showing position in statusbar
svk <svkalinin@samsonpost.ru> Mon, 6 Feb 2023 09:27:38 +0300
- Исправлена ошибка при создании нового файла.
12/08/2022
- Fixed comment/uncomment procedure depending on the file type
- Added About dialog
- Fixed read structure (procedure names like Proc:Name)
15/08/2022
- Added open/close braces highlight
- Fixed GO structure reader
svk <svkalinin@samsonpost.ru> Wed, 21 Dec 2022 16:53:44 +0300
- Добавил пиктограммы файлов
- Исправил процедуру Files::CloseAll ('Закрыть всё')
- Добавлена поддержка Lua
- Исправлена процедура (рас)комментирования
- Исправил ошибку при выходе в процедуре (Congig::Write)
- Добавил раскраски в ruby
- Добавлена возможность многострочных комментариев
- В Ruby lexer добавлен поиск переменных коде.
- Новая сборка
- Немного почистил. Добавлен поиск переменных по питоньим исходникам (lexer)
- Еще одно исправление подсветки для INI
- Новая сборка
- Исправлене подсветки комментариев в INI
- Новая сборка
- Изменения в подсветке для INI
- Добавил подсветку для Desktop и Spec файлов
- Добавил вывод отладочной инфы в процедуру
- Исправил подсветку комментариев в TCL
- Оптимизация процедур
- Добавлена подсветка и навигация по HTML. Исправлена подсветка XML
- Новая сборка
- Добавил иконку для изображений
- Добавил иконки для perl
- Исправлена подсветка и навигация по коду для Ruby
- Обновил список изменений
- Исправлено сохранение сессии в редакторе (открытие папки и файлов при следующем запуске)
- Добавлена новая секция UserSession
- Исправление ошибки при открытии файла
- Добавлена поддержка INI-файлов (подсветка
- Добавлена поддержка perl
- Добавил икогнку для файлов git
- Новая сборка
- Добавлены иконуи для ключей и сертификатов. Изменен поиск иконки (вощзвращает теерь с размером)
- Новая чборка
- Реализован двухпанельный режим работы (вертиикальное разделение)
- ДОбавил сборку в drone
- Исправлена ошибка при открытии ansible.cfg
- Добавил деактивацию кнопки 'Создать репу' если не выбран активный проект (не открыто ни одного каталога/папки)
- Добавлены команды git init и git config (зачаток). Изменен диалог клонирования репозитория (добавлена кнопка Создать репозиторий)
- Исправил ошибку git при открытии файла или каталога если репозиторий не инициализирован (нет .git каталога внутри проекта)
- Переименовал файл
- Добавил скриты сборки rpm
- Добавлено обрамление выделенного текста прии нажатии '_' в markdown
- Исправление подсветки
- Добавлена поддержка markdown (подсветка
- Обновил описание
- Новая сборка
- Исправлена ошибка с закрытием файлов в редакторе при закрытии папки
- Новая сборка
- Переделана процедура определения активного проекта. Исправлено определение ветки git. Теперь можно нормально работать в двух и более открытых проектах (каталогах/папках)
- Новая сборка
- Доделан вид диалога поиска по файлам
- Исправлен поиск имени функции
- Новая сборка
- Добавлен диалог клонирования репозитория
- Добавил разделитель
- Исправлено переключение вкладок при закрытии
- Исправлено закрытиие вкладки Git по нажатию соотв. кнопки в панели инструментов
- Добавлен пункт 'Закрыть всё'
- Новая сборка
- Исправлено соответствие открытого файла в редакторе и выделение этого файла в дереве
- Исправлено переключение отображения панели (лево/право) в без перезапуска программы.
- Украшательства интерфейса - Реакция на нажатие кнопки в панели инструментов теперь зависит от контекста
- Добавлено включение отключение отображения Меню
- Добавлено копирование текущей строки в буфер по Atl+Y
- Исправлена ошибка с отображением файловой панели
- Добавлены и исправлены функции отображения меню
- Фикс
- Добавлен параметр statusBarShow - показ строки статуса
- Добавлены переводы
- Добавлена проверка параметров вызова файл или просто строка
- Новая сборка
- Добавлен вывод сообщений об ошибке в диалоге
- Добавлено обновления списка файлов в дереве
- Добавлена процедура вывода информационного сообщения
- Добавлена команда Git::Reset (git reset _file_) на кнопке в диалоге. Для отмены 'git add'
- Добавлена кнопка Обновление в диалог работы с Git
- Исправление процедуры поиска наименования функции
- Фиксы диалога работы с Git (работа с выделенными файлами в списках)
- Фиксы и тесты работы с git
- Исправление выборанескольких файлов в диалоге Git
- Новая сборка
- Украшательства
- Новая сборка
- Исправление рег. выражения чтения файлов командой git status
- Настройки темы
- Исправлено рег. выпражение определения mime типа файла
- Ntvs
- Новая сборка
- Добавил очистку текстовых полей при добавлении файлов в коммит
- Исправрелдение Git::Commit (индексация всех файлов в проекте)
- Изменения
- Исправления глюков
- Украшательства строки статуса
- Добавлен просмотрщик изображений
- Добавил рамку кону ввода номера
- Добавлен диалог перехода по номеру строки Ctrl-G
- Добавлено определение типа файла
- Новая сборка
- Добавил удаление артефактов сборки пакета
- Новая сборка
- Добавлена подсветка имен файлов в выводе git show
- Новая сборка
- Допилдивание процедуры автоввода имен переменных
- Небольшие правки в подсказках по переменным
- Новая сборка
- Исправлена подсветка SHELL переменных а YAML файлах (ansible
- Новая сборка. Добавлена подсказка по переменным при вводе.
- Добавлено определение символа переменной
- Определение коррректного положения встроенного окна
- Новая сборка
- Добавлен вывод подсказки при вводе переменных
- Добавлены опции для включсения полджсказок по переменным и процедурам
- Новая сборка
- Исправления гуя
- Добавил диалог создания и переключения git-веток
- Создание ветки
- Новые иконки
- Косметические изменения
- Починил push
- Добавлены новые иконки
- Обработка ошибок
- Новая сборка
- Исправлена ошибка при клике на списке с файлами
- New build
- Сделал просмотр изменений из истории
- Добавлено обновление лога изменений
- Новый билд
- Исправление обновления диалога
- Добавлен перевод
- git reflog
- Добавлен интерфейс работы с Git
- Новый релиз
- Исправил ошибку если нет изменений
- Начало работ по поддержке git
- New build
- Bug fix
- Добавлен диалог поиска строки в файлах в текущем каталоге. Используется 'grep -r'.
- Добавлены настройки для системной команды поиска в фвайлах
- Добавлено рекурсивное чтение каталога при открытии. Диалог поиска теперь работает раздельно при разделении окна. Диалог навигации по функци так-же работает раздельно
- Добавлены ключевые слова для подстветки питона
- Добавлена проверка на отсутствие файла и удаление из дерева
16/08/2022
- Added selection of all words in the text by clicking on the any word
17/08/2022
- Added "Vew Panel" menu and "Panel side" (left/right)
- Changed standard Tk menu on TTK::menu
- Added config options filesPanelPlace (left/right)
- Fixed ViewFilesTree procedure with rigth variable filesPanelShow (true/false)
svkalinin <svk@nuk-svk.ru> Sun, 18 Sep 2022 10:46:59 +0300
- Добавлен поиск переменной в тексте после открытия файла где она указана
- Исправлена ошибка при запуске
22/08/2022
- Fixed clicking on proc or func names into tree if file was closed
Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 16 Sep 2022 16:37:17 +0300
- Новая сборка
- Исправил сохранение открытого каталога в настройках
- Рефакторинг
- Переделал дилог навигации по переменным
- Добавлен еще один каталог с переменными - default
- Добавлено сохранение состояния редактора (открытые каталоги
- Изменения в диалоге поиска
- Отображение горизонтальной полосы прокрутки в зависимости от переноса строк в редакторе
- Установка фокуса на текст в редакторе при щелчке на заголовок вкладки
- Сделал перемещение курсора в такуюже позицию в тексте при разделении окна редактора
- Добавлено горизонтальное разделение окна редактора. Исправлено удаление строки по Alt+R - реперь строка удаляется полностью вместе с символами переноса. Исправлено сохранение нового файла (untitled) но всеравно как-то криво.
- Изменения по чтению и отображению переменных по файлам. Причесал диалог
23/08/2022
- Added procedure and function navigation window by Ctrl+j pressed on editor
- Fixed correctly focused on editor text widget
Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 2 Sep 2022 17:01:53 +0300
- Добавил поддержку ruby
- Исправлен выход окна со списком функций за пределы экрана. Поиск и замена теперь работает. Добавлены некоторые иконки для файлов
- Начало реализации процедуры поиска и замены (поиск криво но работает)
- Исправлено закерытие вкладки по щелчку мыши. Добавлена настройка переноса строк в редакторе. Добавлены сочетания клавиш ctrl+pgup cntrl+pgdown для переключения между вкладками редактора. Добавлен диалог закрытия папки (каталога)
- Укоротил имя корневого каталога в дереве
- Добавлены ключиевые слова GO
- Исправлена подсветка ключевых слов tcl и добавлены виджеты
- Исправлена некорректная установка иконки на каталог
- Добавлены горячие клавиши для удаления слова
- Добавлены сочетания клавиш для удаления слова
24/08/2022
- Fixed ReadStructure procedure (added lexer)
svkalinin <svk@nuk-svk.ru> Fri, 26 Aug 2022 12:36:14 +0300
- Изменил(а) на 'README.md'
25/08/2022
- Fixed focus on the editor window after clicking Escape in the function selection dialog
- Change color scheme for FindFunction dialog
- Added sh icon (for shell scripts)
- Fixed lexers for find procedures and functions
svk <svkalinin@samsonpost.ru> Fri, 26 Aug 2022 12:29:19 +0300
- Добавлена поддержка python. Обновлена библиотека иконок.
- Исправлена установка фокуса на окно диалога GotoFunctionDialog и обратно на текст. Переделан механизм чтения структуры файла и добавлены команды для sh (bash)
- Добавлены настройки темы для диалога навигации по функциям
- Добавлена иконка shell (*.sh)
- Исправлено комментирование строк
- Добавлен диалог навигации по структуре (процедурам) по Ctrl+F. Исправлена ошибка при закрытии файлов (функции из дерева теперь удаляются).
- Добавил цвет фона для панели с номерами строк
26/08/2022
- Update image library (added some icons)
- Added hot keys:
- Alt+p - Show/Hide additional panel
- Alt+w - delete word on the cursor below
- Alt+r - delete row
- Alt+b - delete text beetween line Begin and cursor
- Alt+e - delete text between cursor and line End
- Fix close braces indent
svkalinin <svk@nuk-svk.ru> Wed, 17 Aug 2022 21:37:06 +0300
- Убрал доки по tcl
- Слегка поменял стиль оформления
30/08/2022
- Fix the clicked by the close button on a tab
- Added "View"->"Editors word wrap" menu and procedure
- Added bindings "Ctrl+PgUp" and "Ctrl+PgDown" for next or prior tab selecting
- Added "Close file" dialog
Sergey Kalinin <svkalinin@samsonpost.ru> Wed, 17 Aug 2022 16:52:22 +0300
- Добавлен выбор расположения боковой панели
- Добавлено выделение всех слов в тексте по двойному щелчку мышой на любом слове
- Исправлено чтение структуры GO файлов: корректное отображение в дереве функций возвращающих значения разных типов
- Добавлена подсветка скобок
- Новая сборка
- Исправлены процедуры comment/uncomment
- Изменены имена переенных
- Изменены имена переменных
- Добавлена запись номера сборки (build) в исходник
- Добавлено меню Помощь -> О программе. Добавлено окно 'О программе'
- Исправлен поиск процедуры в тексте по клику в дереве
- Исправлен поиск процедуры в тексте по клику в дереве. Исправлено отображение позиции курсора в строке статуса
- ДОбавлены иконки для некоторых типов файлов
- Добавлено отображение структуры исходника в дереве (функции (go) и процедуры (tcl))
- Добавлено кодирование изображения в base64 и вставка в редактируемый текст
- Добавлены шрифт и цвет шриыта для общего интерфейса
- Исправлено комментирование выделенного фрагмента (последняя строка) Исправлено закрытие untitled вкладок
- Исправлено комментирование выделенных строк
- Добавлена подсветка для GO
- Исправлено подключение требуемой процедуры подсветки
- Убрал вставку закрывающихся кавычек в пустой строке. Ибо пока глючит.
- Добавлен диалог сохранения файла при закрытии вкладки редактора и при выходе из программы если есть несохраненные файлы
- Исправлен рабочий каталог
- Добавлены переводы для диалога
- Исправлен скрипт сборки пакета для Debian
- Исправил скрипт сборки пакета. Добавил .gitignore
01/09/2022
- Added search function name into Function navigation whem press key
- Added find and replace dialog
- Fixed correct placement the Function dialog
svkalinin <svk@nuk-svk.ru> Thu, 21 Jul 2022 12:18:29 +0300
- Изменил(а) на 'README.md'
14/09/2022
- Added procedure for the horizontal split a text window
- Fixed untitled file saved
- Fixed Alt+R (delete row), now will are deleted row with a "\n\r" symbols
20/10/200
- Added Git support: add and commit changes, show git log, show each commit...
svk <svkalinin@samsonpost.ru> Thu, 21 Jul 2022 12:15:19 +0300
- Change readme
- Added Dark theme
- New version of ProjMan
- Some changes into GUI (tabs)
11/11/2022
- Added GoTo Line dialog
- Fixed Git commit procedure
- Added variable and procedure helper
svkalinin <banzaj28@yandex.ru> Thu, 5 Jul 2018 08:41:18 +0300
- Fixed error if file was not select
- README.md отредактирован онлайн на Bitbucket
18/11/2022
- Add Refresh button into Git Dialog
- Fixed FindFunction
Sergey Kalinin <banzaj28@yandex.ru> Sat, 24 Mar 2018 12:20:27 +0300
- Rename readme
07/12/2022
- Added Perl language support
- Added INI-files support
- Added MD-files structure navigation
- Fixed saving user session and opening files and folders at the next start
- Added buttons "Git clone" and "Git init" in the dialog box displayed when the Git button is pressed
Sergey <banzaj28@yandex.ru> Sat, 24 Mar 2018 12:17:09 +0300
- README отредактирован онлайн на Bitbucket
- Added sort procedure for projects tree
- Added small toolbar into project tree
- Added insert base64 encoded image into source code
- Some GUI change
- Change messages files
- Added Menu button into tollbar and Hide/Show options into config
- Added procedure arguments into tree Change read config procedure (error fixed) Fixed error when project running
- Some Fix
- GoToNumber entry small change
- GoToLine procedure tuning
- Added GoTo line into toolbar Fixed fileinfo update when tree one click Fixed bug with opened files have extention is a upper case
- Critical fix again
Sergey Kalinin <banzaj28@yandex.ru> Sat, 24 Feb 2018 18:16:01 +0300
- Critical bug fixed with create project
- Refactoring all procedures is the Tree working
Sergey <svk@s.kalinin-nb> Sat, 24 Feb 2018 12:22:08 +0300
- Fixed Add new file if name was existing into tree
svk <banzaj28@yandex.ru> Fri, 23 Feb 2018 11:58:39 +0300
- Rename archive projman-latest
- Fixed AddToProj procedure for file browser tree Disable OpComplite procedure
- Refactoring Settigs procedure source code Some changes into messages files (localisation)
- Added option "constrainedwidth true" for ScrollableFrame
- Fix saving "Show dot files" option Fixed correctly highlightning procedure names
- Refactoring auto update file structure (tree). Now structure updated when file was saving Refactoring "Settings" dialog
- Fix "New file" proc ctrl+n hotkey
- - Fixed edit files into root node from file browser tree - Change "Delete project" dialog and procedure
- Refactoring "Add New Projects" "Project Settings" (e.t.c.) dialogs Added "Add as new project" dialog for file browser Add popup menu for file browser Fixed some highlight bug
- Fixed runing on Win7 without installation
- Added opening last active project when project run
- Fixed parsing procedure with names like ::proc::name or proc_na::me(aa) and parameters {{} {} {}}
- Put logo and icon images into source code
- 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
- Added saving main window geometry into projman.conf file when close programm
- Merge branch 'master' of https://bitbucket.org/svk28/projman
- Delete temp file
- bitbucket-pipelines.yml отредактирован онлайн на Bitbucket
- change docker image
- add apt
- bitbucket-pipelines.yml отредактирован онлайн на Bitbucket
- Initial Bitbucket Pipelines configuration
- Add web site into Readme
- Added gray theme Fixed work with file from directory but not project.
- Some FileDialog fixes
- File Browser added
- Auto indent added for () [] braces
- Some changes
- Change hotkeys "Control+
- Add comment/uncomment selected text
- Tcl
- - Russian help files was conerting into utf-8 encode
- Change Logo and About dialog (added new homepage and git repo addresses)
- Added binding mouse button: click on notebook tab highlight opened file name in tree Change "Paste from Clipboard" function Change popup editor menu (undo
- Modules load procedure changes
- Remove some files
- GiTK running fixed
- Fixed paste text highlight Fixed setting edited flag when paste the text from buffer Change authors email and home page
Sergey Kalinin <svk@kalinin.carfix> Mon, 22 Jan 2018 17:54:18 +0300
- - Remove ctags support - Added gitk (gui for git) support
- Change version into Install.tcl script
svk <svk@l0001h.office> Fri, 12 Jan 2018 13:44:26 +0300
- README отредактирован онлайн на Bitbucket
- test.tcl deleted online with Bitbucket
Sergey Kalinin <banzaj28@gmail.com> Mon, 19 Oct 2015 14:22:09 +0300
- some bugs in install.tcl fixed
svk28 <ksv@L-AO-TEH1.DALS.local> Mon, 19 Oct 2015 13:37:21 +0300
- Initial commit with contributors
- Initial release

View File

@@ -1,9 +0,0 @@
######################################################
# Tcl/Tk Project manager 2.0
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svl.ru
# Home page: https://nuk-svk.ru
######################################################

View File

@@ -16,6 +16,7 @@ Highlightning and source code navigation:
* Shell (BASH)
* Markdown
* YAML (Ansible support)
* Lua
Highlightning:
@@ -28,10 +29,49 @@ For UNIX-like OS
Tcl/Tk >= 8.6 http://tcl.tk
tcllib, tklib
## Screenshots
- Navigation the source code structure, and syntax highlighting
![projman_go_codenav.png](https://nuk-svk.ru/images/projman_go_codenav.png)
![projman_tcl_vars.png](https://nuk-svk.ru/images/projman_tcl_vars.png)
![projman_tcl_codenav.png](https://nuk-svk.ru/images/projman_tcl_codenav.png)
![projman_syntax_highlight.png](https://nuk-svk.ru/images/projman_syntax_highlight.png)
![projman_html.png](https://nuk-svk.ru/images/projman_html.png)
- Hints when entering names of variables and procedures
![projman_proc_vars.png](https://nuk-svk.ru/images/projman_proc_vars.png)
- Searching for a variable definition in ansible files
- Navigation the ansible source code structure
![projman_yaml_variables.png](https://nuk-svk.ru/images/projman_yaml_variables.png)
- Navigation the markdown source code structure
![projman_md_codenav.png](https://nuk-svk.ru/images/projman_md_codenav.png)
- Git dialog (commit history)
- Git dialog (changes)
![projman_git.png](https://nuk-svk.ru/images/projman_git.png)
- Flexible interface configuration
![projman_gui_flexibility.png](https://nuk-svk.ru/images/projman_gui_flexibility.png)
- Find/Replace dialog
![projman_find_replace.png](https://nuk-svk.ru/images/projman_find_replace.png)
- Global searching dialog
![projman_global_search.png](https://nuk-svk.ru/images/projman_global_search.png)
## Getting source code
Download the source code archive https://git.nuk-svk.ru/svk/projman/archive/master.tar.gz
Download the source code https://git.nuk-svk.ru/svk/projman/
Or use git:

337
changelog-gen.tcl Executable file
View File

@@ -0,0 +1,337 @@
#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec tclsh "$0" -- "$@"
######################################################################
# ProjMan 2
# Distributed under GNU Public License
# Author: Sergey Kalinin svk@nuk-svk.ru
# Copyright (c) "SVK", 2024, https://nuk-svk.ru
#######################################################################
# Changelog generator from the Git commit history.
# For DEB and RPM packages
# usage a git command:
#
# git log --abbrev-commit --all --pretty='%h, %ad, %an, %ae, %s, %b'
#######################################################################
# puts $tcl_platform(platform)
# Устанавливаем рабочий каталог, если его нет то создаём.
# Согласно спецификации XDG проверяем наличие переменных и каталогов
if [info exists env(XDG_CONFIG_HOME)] {
set dir(cfg) [file join $env(XDG_CONFIG_HOME) changelog-gen]
} elseif [file exists [file join $env(HOME) .config]] {
set dir(cfg) [file join $env(HOME) .config changelog-gen]
} else {
#set dir(cfg) [file join $env(HOME) .changelog-gen]
}
if {[file exists $dir(cfg)] == 0} {
file mkdir $dir(cfg)
}
# Use whereis command for finding the git executable file.
# for unix-like operating systems
proc GetGitCommandUnix {} {
global gitCommand
set cmd "whereis -b git"
catch "exec $cmd" result
# puts $result
if {$result ne ""} {
set fields [split $result ":"]
# puts $fields
if {[lindex $fields 1] ne ""} {
# puts [lindex $fields 1]
set gitCommand "[string trim [lindex $fields 1]]"
} else {
puts "GIT command not found"
exit
}
}
}
# Setting the git-command for windows family OS
proc GetGitCommandWindows {} {
global gitCommand
set gitCommand "c:/git/bin/git.exe"
}
switch $tcl_platform(platform) {
unix {GetGitCommandUnix}
windows {GetGitCommandWindows}
}
proc ReadGitLog {} {
global args gitCommand lastCommitTimeStampSec
set cmd exec
set i 0
lappend cmd "$gitCommand"
lappend cmd "log"
lappend cmd "--abbrev-commit"
# Проверяем была ли запись для данного проекта если была то к времени последнего коммита прибавляем 1 сек.
# и получаем журнал после этой даты
if {[info exists lastCommitTimeStampSec] && [info exists args(--last)]} {
lappend cmd "--after='[clock format [clock add $lastCommitTimeStampSec 1 second] -format {%a, %e %b %Y %H:%M:%S %z}]'"
}
lappend cmd "--all"
lappend cmd "--pretty='%h, %ad, %an, %ae, %s, %b'"
# puts $cmd
catch $cmd pipe
# puts $pipe
set outBuffer ""
foreach line [split $pipe "\n"] {
# puts $line
# set line [string trim $line]
set line [string trim [string trim $line] {'}]
if {[regexp -nocase -all -- {^[0-9a-z]+} $line match]} {
set outBuffer $line
if {$outBuffer ne ""} {
lappend res [list $i $outBuffer]
incr i
}
# puts $outBuffer
} else {
if {$line ne ""} {
append outBuffer ". " $line
}
}
}
# puts $res
if [info exists res] {
return $res
} else {
puts "\nRepository '$args(--project-name)' do not have any changes\n"
exit
}
}
proc StoreProjectInfo {timeStamp} {
global dir args
set cfgFile [open [file join $dir(cfg) $args(--project-name).conf] "w+"]
puts $cfgFile "# set args(--project-version) \"$args(--project-version)\""
puts $cfgFile "# set args(--project-release) \"$args(--project-release)\""
puts $cfgFile "set lastCommitTimeStamp \"$timeStamp\""
puts $cfgFile "set lastCommitTimeStampSec [clock scan $timeStamp]"
close $cfgFile
}
proc GenerateChangelogDEB {} {
global args
# puts "GenerateChangelogDEB"
set lastCommitTimeStamp ""
set commiter ""
set commitText ""
# ReadGitLog
set lst [lsort -integer -index 0 [ReadGitLog]]
# puts $lst
# exit
set outText ""
foreach l $lst {
set index [lindex $l 0]
set line [lindex $l 1]
# puts "$index - $line"
set record [split $line ","]
set timeStamp [string trim [lindex $record 1]]
set email [string trim [lindex $record 3]]
if {$lastCommitTimeStamp eq ""} {
set lastCommitTimeStamp [string trim [lindex $record 1]]
}
set timeStamp [clock format [clock scan $timeStamp] -format {%a, %e %b %Y %H:%M:%S %z}]
# puts "> $commiter"
if {$index == 0} {
puts "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n"
append outText "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n"
set commiter [lindex $record 2]
StoreProjectInfo $timeStamp
# puts "\n \[ [string trim $commiter] \]"
}
# puts ">> $commiter"
if {$commiter ne [lindex $record 2]} {
puts "\n -- [string trim $commiter] <$email> $timeStamp"
append outText "\n -- [string trim $commiter] <$email> $timeStamp\n"
puts "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n"
append outText "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n"
set commiter [lindex $record 2]
# puts "\n \[ [string trim $commiter] \]"
}
set commitTex [lindex $record 4]
puts " * $commitTex"
append outText " * $commitTex\n"
}
puts "\n -- [string trim $commiter] <$email> $timeStamp"
append outText "\n -- [string trim $commiter] <$email> $timeStamp\n"
return $outText
}
proc GenerateChangelogRPM {} {
puts "GenerateChangelogRPM"
}
proc GenerateChangelogTXT {} {
global args
set lastCommitTimeStamp ""
set commiter ""
set commitText ""
set lst [lsort -integer -index 0 [ReadGitLog]]
puts "$args(--project-name) ($args(--project-version)-$args(--project-release)"
foreach l $lst {
set index [lindex $l 0]
set line [lindex $l 1]
# puts "$index - $line"
set record [split $line ","]
set timeStamp [string trim [lindex $record 1]]
set email [string trim [lindex $record 3]]
if {$lastCommitTimeStamp eq ""} {
set lastCommitTimeStamp [string trim [lindex $record 1]]
}
set timeStamp [clock format [clock scan $timeStamp] -format {%a, %e %b %Y %H:%M:%S %z}]
# puts "> $commiter"
if {$index == 0} {
append outText "$args(--project-name) ($args(--project-version)-$args(--project-release))\n"
set commiter [lindex $record 2]
puts "\n[string trim $commiter] <$email> $timeStamp"
append outText "\n[string trim $commiter] <$email> $timeStamp\n"
StoreProjectInfo $timeStamp
}
if {$commiter ne [lindex $record 2]} {
puts "\n[string trim $commiter] <$email> $timeStamp"
append outText "\n[string trim $commiter] <$email> $timeStamp\n"
set commiter [lindex $record 2]
}
set commitTex [lindex $record 4]
puts " - $commitTex"
append outText " - $commitTex\n"
}
return $outText
}
# puts [ReadGitLog]
proc ShowHelp {} {
puts "\nChangelog generator from the Git commit history. For DEB and RPM packages"
puts "Usage:\n"
puts "\tchangelog-gen \[options\]\n"
puts "Where options:"
puts "\t--project-name - name of project (package) "
puts "\t--project-version - package version"
puts "\t--project-release - package release name (number)"
puts "\t--deb - debian package format of changelog"
puts "\t--rpm - rpm package format of changelog"
puts "\t--txt - plain text changelog out"
puts "\t--out-file - changelog file name"
puts "\t--last - The timestamp since the last launch of this program for a given project"
}
proc StoreChangeLog {outText} {
global args
if [file exists $args(--out-file)] {
file copy -force $args(--out-file) "$args(--out-file).tmp"
set origOutFile [open "$args(--out-file).tmp" "r"]
set origText [read $origOutFile]
close $origOutFile
set outFile [open $args(--out-file) "w"]
puts $outFile $outText
puts $outFile $origText
close $outFile
if [info exists args(--last)] {
set outFile [open $args(--out-file) "r+"]
puts $outFile $outText
close $outFile
} else {
set outFile [open $args(--out-file) "w+"]
puts $outFile $outText
close $outFile
}
} else {
set outFile [open $args(--out-file) "w+"]
puts $outFile $outText
close $outFile
}
}
set arglen [llength $argv]
set index 0
while {$index < $arglen} {
set arg [lindex $argv $index]
switch -exact $arg {
--project-name {
set args($arg) [lindex $argv [incr index]]
}
--project-version {
set args($arg) [lindex $argv [incr index]]
}
--project-release {
set args($arg) [lindex $argv [incr index]]
}
--deb {
set args($arg) true
}
--rpm {
set args($arg) true
}
--txt {
set args($arg) true
}
--out-file {
set args($arg) [lindex $argv [incr index]]
}
--last {
set args($arg) true
}
--help {
ShowHelp
exit
}
default {
set filename [lindex $argv $index]
}
}
incr index
}
if ![info exists args(--project-name)] {
puts "You mast set --project-name option\n"
exit
}
if ![info exists args(--project-version)] {
puts "You mast set --project-version option\n"
exit
}
if ![info exists args(--project-release)] {
puts "You mast set --project-release option\n"
exit
}
if [file exists [file join $dir(cfg) $args(--project-name).conf]] {
source [file join $dir(cfg) $args(--project-name).conf]
}
foreach arg [array names args] {
puts "$arg $args($arg)"
}
if [info exists args(--deb)] {
set outText [GenerateChangelogDEB]
if [info exists args(--out-file)] {
StoreChangeLog $outText
}
}
if [info exists args(--rpm)] {
GenerateChangelogRPM
}
if [info exists args(--txt)] {
set outText [GenerateChangelogTXT]
if [info exists args(--out-file)] {
StoreChangeLog $outText
}
}

View File

@@ -10,7 +10,9 @@ echo "$VERSION, $RELEASE, $BUILD_DATE"
sed -i "/# Build:.*/c$TXT" projman.tcl
cp projman.tcl projman
cp changelog-gen.tcl changelog-gen
./changelog-gen.tcl --project-name projman --project-version ${VERSION} --project-release ${RELEASE} --out-file debian/changelog --deb --last
sed -i "s+^set\ dir(lib)+set\ dir(lib)\ /usr/share/projman/lib ;#+g" projman
@@ -19,9 +21,9 @@ sed -i "s+\[pwd\]+/usr/share/projman+g" projman
tar czf ../projman_${VERSION}.orig.tar.gz .
dpkg-buildpackage
dpkg-buildpackage -d
#cp ../projman_${VERSION}-${RELEASE}_amd64.deb /files/
rm -v projman
rm -v projman changelog-gen
rm -r -v debian/{projman,.debhelper}

339
debian/changelog vendored
View File

@@ -1,5 +1,338 @@
projman (2.0.0-alpha) stable; urgency=medium
projman (2.0.0-alpha16) stable; urgency=medium
* Initial release
* build-deb-projman.sh: добавлена генерация changelog из git log
* changelog-gen.tcl: Вывод в файл вынесен в отдельную процедуру
* changelog-gen.tcl: Добавлено создание резервной копии выходного файла. Исправлен вывод в файл.
* changelog-gen.tcl: Добавлены опции командной строки
* changelog-gen.tcl: Добавлена генерация текстового журнала изменений
* Добавлен запуск changelog-gen при сборке пакета
* Добавлено чстение журнала начиная с определенной даты
* Новая сборка
-- Sergey Kalinin <svk@nuk-svk.ru> Thu, 22 Aug 2024 13:38:52 +0300
projman (2.0.0-alfa15) stable; urgency=medium
* Генерация списка изменений для debian приведена к корректному виду
* Исправлен фокус при создании нового файла. #3
-- Калинин Сергей Валерьевич <svkalinin@samsonpost.ru> Wed, 17 Jul 2024 12:28:30 +0300
projman (2.0.0-alfa14) stable; urgency=medium
* Исправлена неправильная замена выражение при поиске
* Реализовал базовые функции генератора журнала изменений
-- svkalinin <svk@nuk-svk.ru> Thu, 27 Jun 2024 14:44:47 +0300
projman (2.0.0-alfa13) stable; urgency=medium
* Добавлена иконка для jinja template
* Исправил остатки слияния веток
* Исправлено некорректное определение типа файла при открытии.
-- svkalinin <svk@nuk-svk.ru> Mon, 30 Oct 2023 10:44:37 +0300
projman (2.0.0-alfa12) stable; urgency=medium
* Обновить .gitea/workflows/build.yml
* Gitea actions add
-- svk <svkalinin@samsonpost.ru> Thu, 27 Jul 2023 13:04:32 +0300
projman (2.0.0-alfa11) stable; urgency=medium
* Merge branch 'master' of https://git.nuk-svk.ru/svk/projman
* Исправил открытие файлов с разными путями (~/ ./ ../)
-- svkalinin <svk@nuk-svk.ru> Thu, 23 Feb 2023 13:46:56 +0300
projman (2.0.0-alfa10) stable; urgency=medium
* Добавил изображений программы
-- svk <svkalinin@samsonpost.ru> Mon, 6 Feb 2023 09:27:38 +0300
projman (2.0.0-alfa9) stable; urgency=medium
* Исправлена ошибка при создании нового файла.
-- svkalinin <svk@svk.home> Thu, 22 Dec 2022 19:59:05 +0300
projman (2.0.0-alfa8) stable; urgency=medium
* Добавил пиктограммы файлов
* Исправил процедуру Files::CloseAll ('Закрыть всё')
* Добавлена поддержка Lua
* Исправлена процедура (рас)комментирования
* Исправил ошибку при выходе в процедуре (Congig::Write)
* Добавил раскраски в ruby
* Добавлена возможность многострочных комментариев
* В Ruby lexer добавлен поиск переменных коде.
* Новая сборка
* Немного почистил. Добавлен поиск переменных по питоньим исходникам (lexer)
* Еще одно исправление подсветки для INI
* Новая сборка
* Исправлене подсветки комментариев в INI
* Новая сборка
* Изменения в подсветке для INI
* fix
* Добавил подсветку для Desktop и Spec файлов
* Добавил вывод отладочной инфы в процедуру
* Исправил подсветку комментариев в TCL
* Оптимизация процедур
* Добавлена подсветка и навигация по HTML. Исправлена подсветка XML
* Новая сборка
* Добавил иконку для изображений
* Добавил иконки для perl
* Fix
* Исправлена подсветка и навигация по коду для Ruby
* Обновил список изменений
* Исправлено сохранение сессии в редакторе (открытие папки и файлов при следующем запуске)
* Добавлена новая секция UserSession
* Исправление ошибки при открытии файла
* Добавлена поддержка INI-файлов (подсветка
* Добавлена поддержка perl
* Добавил икогнку для файлов git
* Новая сборка
* Добавлены иконуи для ключей и сертификатов. Изменен поиск иконки (вощзвращает теерь с размером)
* Новая чборка
* Реализован двухпанельный режим работы (вертиикальное разделение)
* Test
* Тесты
* TEsting drone build
* ДОбавил сборку в drone
* Исправлена ошибка при открытии ansible.cfg
* Добавил деактивацию кнопки 'Создать репу' если не выбран активный проект (не открыто ни одного каталога/папки)
* Добавлены команды git init и git config (зачаток). Изменен диалог клонирования репозитория (добавлена кнопка Создать репозиторий)
* Исправил ошибку git при открытии файла или каталога если репозиторий не инициализирован (нет .git каталога внутри проекта)
* Переименовал файл
* Добавил скриты сборки rpm
* Добавлено обрамление выделенного текста прии нажатии '_' в markdown
* Исправление подсветки
* Добавлена поддержка markdown (подсветка
* Обновил описание
* Новая сборка
* Исправлена ошибка с закрытием файлов в редакторе при закрытии папки
* Новая сборка
* Переделана процедура определения активного проекта. Исправлено определение ветки git. Теперь можно нормально работать в двух и более открытых проектах (каталогах/папках)
* Новая сборка
* Доделан вид диалога поиска по файлам
* Исправлен поиск имени функции
* Новая сборка
* Добавлен диалог клонирования репозитория
* Добавил разделитель
* Исправлено переключение вкладок при закрытии
* Исправлено закрытиие вкладки Git по нажатию соотв. кнопки в панели инструментов
* Добавлен пункт 'Закрыть всё'
* Новая сборка
* Исправлено соответствие открытого файла в редакторе и выделение этого файла в дереве
* Исправлено переключение отображения панели (лево/право) в без перезапуска программы.
* Украшательства интерфейса - Реакция на нажатие кнопки в панели инструментов теперь зависит от контекста
* Добавлено включение отключение отображения Меню
* Добавлено копирование текущей строки в буфер по Atl+Y
* Исправлена ошибка с отображением файловой панели
* Добавлены и исправлены функции отображения меню
* Фикс
* Добавлен параметр statusBarShow - показ строки статуса
* Добавлены переводы
* Добавлена проверка параметров вызова файл или просто строка
* Новая сборка
* Добавлен вывод сообщений об ошибке в диалоге
* Добавлено обновления списка файлов в дереве
* Добавлена процедура вывода информационного сообщения
* Добавлена команда Git::Reset (git reset _file_) на кнопке в диалоге. Для отмены 'git add'
* Добавлена кнопка Обновление в диалог работы с Git
* Исправление процедуры поиска наименования функции
* Фиксы диалога работы с Git (работа с выделенными файлами в списках)
* Test
* Фиксы и тесты работы с git
* test
* Исправление выборанескольких файлов в диалоге Git
* Новая сборка
* Украшательства
* Новая сборка
* Исправление рег. выражения чтения файлов командой git status
* Настройки темы
* Исправлено рег. выпражение определения mime типа файла
* Ntvs
* Новая сборка
* Добавил очистку текстовых полей при добавлении файлов в коммит
* Исправрелдение Git::Commit (индексация всех файлов в проекте)
* Изменения
* Фиксы
* Test
* Исправления глюков
* Украшательства строки статуса
* Добавлен просмотрщик изображений
* Добавил рамку кону ввода номера
* Добавлен диалог перехода по номеру строки Ctrl-G
* Добавлено определение типа файла
* Новая сборка
* Добавил удаление артефактов сборки пакета
* Новая сборка
* Fix
* Добавлена подсветка имен файлов в выводе git show
* Новая сборка
* Допилдивание процедуры автоввода имен переменных
* Небольшие правки в подсказках по переменным
* Новая сборка
* Исправлена подсветка SHELL переменных а YAML файлах (ansible
* Fix
* Новая сборка. Добавлена подсказка по переменным при вводе.
* Добавлено определение символа переменной
* fackup
* Определение коррректного положения встроенного окна
* Новая сборка
* Добавлен вывод подсказки при вводе переменных
* Добавлены опции для включсения полджсказок по переменным и процедурам
* Новая сборка
* Исправления гуя
* Fix
* Фикс
* Добавил диалог создания и переключения git-веток
* Создание ветки
* Фикс
* Новые иконки
* Косметические изменения
* Ченю push
* Ченю push
* Починил push
* Добавлены новые иконки
* Обработка ошибок
* Обработка ошибок
* Новая сборка
* Исправлена ошибка при клике на списке с файлами
* New build
* Сделал просмотр изменений из истории
* Добавлено обновление лога изменений
* Новый билд
* Исправление обновления диалога
* Fix
* Добавлен перевод
* git reflog
* Добавлен интерфейс работы с Git
* Новый релиз
* Исправил ошибку если нет изменений
* Начало работ по поддержке git
* New build
* Bug fix
* Добавлен диалог поиска строки в файлах в текущем каталоге. Используется 'grep -r'.
* Добавлены настройки для системной команды поиска в фвайлах
* Добавлено рекурсивное чтение каталога при открытии. Диалог поиска теперь работает раздельно при разделении окна. Диалог навигации по функци так-же работает раздельно
* Добавлены ключевые слова для подстветки питона
* Добавлена проверка на отсутствие файла и удаление из дерева
-- svkalinin <svk@nuk-svk.ru> Sun, 18 Sep 2022 10:46:59 +0300
projman (2.0.0-alfa7) stable; urgency=medium
* Добавлен поиск переменной в тексте после открытия файла где она указана
* Исправлена ошибка при запуске
-- Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 16 Sep 2022 16:37:17 +0300
projman (2.0.0-alfa6) stable; urgency=medium
* Новая сборка
* Исправил сохранение открытого каталога в настройках
* Рефакторинг
* Переделал дилог навигации по переменным
* Исправил ошибку
* Добавлен еще один каталог с переменными - default
* Добавлено сохранение состояния редактора (открытые каталоги
* Изменения в диалоге поиска
* Изменения в диалоге поиска
* Отображение горизонтальной полосы прокрутки в зависимости от переноса строк в редакторе
* Установка фокуса на текст в редакторе при щелчке на заголовок вкладки
* Сделал перемещение курсора в такуюже позицию в тексте при разделении окна редактора
* Добавлено горизонтальное разделение окна редактора. Исправлено удаление строки по Alt+R - реперь строка удаляется полностью вместе с символами переноса. Исправлено сохранение нового файла (untitled) но всеравно как-то криво.
* Изменения по чтению и отображению переменных по файлам. Причесал диалог
-- svkalinin <svk@nuk-svk.ru> Fri, 2 Sep 2022 21:42:40 +0300
projman (2.0.0-alfa5) stable; urgency=medium
* Добавил поддержку ruby
* Исправлен выход окна со списком функций за пределы экрана. Поиск и замена теперь работает. Добавлены некоторые иконки для файлов
* Начало реализации процедуры поиска и замены (поиск криво но работает)
* Fix
* Исправлено закерытие вкладки по щелчку мыши. Добавлена настройка переноса строк в редакторе. Добавлены сочетания клавиш ctrl+pgup cntrl+pgdown для переключения между вкладками редактора. Добавлен диалог закрытия папки (каталога)
* Укоротил имя корневого каталога в дереве
* Добавлены ключиевые слова GO
* Исправлена подсветка ключевых слов tcl и добавлены виджеты
* Исправлена некорректная установка иконки на каталог
* Добавлены горячие клавиши для удаления слова
* Добавлены сочетания клавиш для удаления слова
-- svkalinin <svk@nuk-svk.ru> Fri, 26 Aug 2022 12:36:14 +0300
projman (2.0.0-alfa4) stable; urgency=medium
* Добавлена поддержка python. Обновлена библиотека иконок.
* Исправлена установка фокуса на окно диалога GotoFunctionDialog и обратно на текст. Переделан механизм чтения структуры файла и добавлены команды для sh (bash)
* Добавлены настройки темы для диалога навигации по функциям
* Добавлена иконка shell (*.sh)
* Исправлено комментирование строк
* Добавлен диалог навигации по структуре (процедурам) по Ctrl+F. Исправлена ошибка при закрытии файлов (функции из дерева теперь удаляются).
* Добавил цвет фона для панели с номерами строк
-- svkalinin <svk@nuk-svk.ru> Wed, 17 Aug 2022 21:37:06 +0300
projman (2.0.0-alfa3) stable; urgency=medium
* Убрал доки по tcl
* Слегка поменял стиль оформления
-- Sergey Kalinin <svkalinin@samsonpost.ru> Wed, 17 Aug 2022 16:52:22 +0300
projman (2.0.0-alfa2) stable; urgency=medium
* Добавлен выбор расположения боковой панели
* Добавлено выделение всех слов в тексте по двойному щелчку мышой на любом слове
* Исправлено чтение структуры GO файлов: корректное отображение в дереве функций возвращающих значения разных типов
* Добавлена подсветка скобок
* Новая сборка
* Исправлены процедуры comment/uncomment
* Изменены имена переенных
* Изменены имена переменных
* Добавлена запись номера сборки (build) в исходник
* Добавлено меню Помощь -> О программе. Добавлено окно 'О программе'
* Исправлен поиск процедуры в тексте по клику в дереве
* Исправлен поиск процедуры в тексте по клику в дереве. Исправлено отображение позиции курсора в строке статуса
* ДОбавлены иконки для некоторых типов файлов
* Добавлено отображение структуры исходника в дереве (функции (go) и процедуры (tcl))
* Добавлено кодирование изображения в base64 и вставка в редактируемый текст
* Добавлены шрифт и цвет шриыта для общего интерфейса
* Исправлено комментирование выделенного фрагмента (последняя строка) Исправлено закрытие untitled вкладок
* Исправлено комментирование выделенных строк
* Добавлена подсветка для GO
* Добавлена подстка для GO
* Исправлено подключение требуемой процедуры подсветки
* Убрал вставку закрывающихся кавычек в пустой строке. Ибо пока глючит.
* Добавлен диалог сохранения файла при закрытии вкладки редактора и при выходе из программы если есть несохраненные файлы
* Исправлен рабочий каталог
* Добавлены переводы для диалога
* Исправлен скрипт сборки пакета для Debian
* Убрал лишнее
* Исправил скрипт сборки пакета. Добавил .gitignore
* Исправил скрипт сборки пакета. Добавил .gitignore
-- svkalinin <svk@nuk-svk.ru> Thu, 21 Jul 2022 12:18:29 +0300
projman (2.0.0-alfa1) stable; urgency=medium
* Изменил(а) на 'README.md'
-- svk <svkalinin@samsonpost.ru> Thu, 21 Jul 2022 12:15:19 +0300
projman (2.0.0-alfa0) stable; urgency=medium
* Change readme
* Added Dark theme
* New version of ProjMan
* New version of ProjMan
* Some changes into GUI (tabs)
-- svkalinin <banzaj28@yandex.ru> Thu, 5 Jul 2018 08:41:18 +0300
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 20 Jul 2022 16:56:31 +0300

1
debian/install vendored
View File

@@ -1,4 +1,5 @@
projman /usr/bin/
changelog-gen /usr/bin/
lib/*.tcl /usr/share/projman/lib
lib/msgs/* /usr/share/projman/lib/msgs
theme /usr/share/projman/

View File

@@ -60,6 +60,7 @@ lineNumberShow=true
tabSize=4
procedureHelper=false
variableHelper=true
multilineComments=true
\[UserSession\]
opened=
editedFiles=
@@ -101,7 +102,10 @@ proc Config::write {dir} {
# Добавим пути к открытым в редакторе файлам в переменную
if [info exists editors] {
foreach i [dict keys $editors] {
lappend edited [dict get $editors $i fileFullPath]
# puts [dict get $editors $i]
if [dict exists $editors $i fileFullPath] {
lappend edited [dict get $editors $i fileFullPath]
}
}
if [info exists edited] {
ini::set $cfgFile "UserSession" editedFiles $edited

View File

@@ -20,30 +20,55 @@ namespace eval Editor {
# Comment one string or selected string
proc Comment {txt fileType} {
global lexers
global lexers cfgVariables
set selIndex [$txt tag ranges sel]
set pos [$txt index insert]
set lineNum [lindex [split $pos "."] 0]
set PosNum [lindex [split $pos "."] 1]
# set posNum [lindex [split $pos "."] 1]
set useMultiLine false
if [dict exists $lexers $fileType commentSymbol] {
set symbol [dict get $lexers $fileType commentSymbol]
} else {
set symbol "#"
}
puts "Select : $selIndex"
if {[dict exists $lexers $fileType commentMultilineSymbolBegin] == 1 && $cfgVariables(multilineComments) eq "true"} {
set symbolBegin [dict get $lexers $fileType commentMultilineSymbolBegin]
} else {
set symbolBegin ""
}
if {[dict exists $lexers $fileType commentMultilineSymbolEnd] == 1 && $cfgVariables(multilineComments) eq "true"} {
set symbolEnd [dict get $lexers $fileType commentMultilineSymbolEnd]
} else {
set symbolEnd ""
}
# puts "Select : $selIndex"
if {$selIndex != ""} {
set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
# Если выделенно больше одной строки то включаем многострочный комментарий
if {$lineBegin < $lineEnd} {
set useMultiLine true
}
set posBegin [lindex [split [lindex $selIndex 1] "."] 0]
set posEnd [lindex [split [lindex $selIndex 1] "."] 1]
if {$lineEnd == $lineNum && $posEnd == 0} {
set lineEnd [expr $lineEnd - 1]
}
for {set i $lineBegin} {$i <=$lineEnd} {incr i} {
#$txt insert $i.0 "# "
regexp -nocase -indices -- {^(\s*)(.*?)} [$txt get $i.0 $i.end] match v1 v2
$txt insert $i.[lindex [split $v2] 0] "$symbol "
if {$symbolEnd ne ""} {
$txt insert $lineEnd.end "\n$symbolEnd"
set lineEnd [expr $lineEnd + 2]
}
if {$symbolBegin ne ""} {
$txt insert $lineBegin.0 "$symbolBegin\n"
}
if {$symbolBegin eq "" && $symbolEnd eq ""} {
for {set i $lineBegin} {$i <= $lineEnd} {incr i} {
#$txt insert $i.0 "# "
regexp -nocase -indices -- {^(\s*)(.*?)} [$txt get $i.0 $i.end] match v1 v2
$txt insert $i.[lindex [split $v2] 0] "$symbol "
}
}
$txt tag add comments $lineBegin.0 $lineEnd.end
$txt tag raise comments
@@ -62,14 +87,14 @@ namespace eval Editor {
set lineNum [lindex [split $pos "."] 0]
set posNum [lindex [split $pos "."] 1]
if {[info procs GetComment:$fileType] ne ""} {
set commentProcedure "GetComment:$fileType"
} else {
set commentProcedure {GetComment:Unknown}
}
# set commentProcedure "GetComment"
# if {[info procs GetComment:$fileType] ne ""} {
# set commentProcedure "GetComment"
# } else {
# set commentProcedure {GetComment:Unknown}
# }
set commentProcedure "GetComment"
# puts "$fileType, $commentProcedure"
puts "$fileType, $commentProcedure"
if {$selIndex != ""} {
set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
@@ -80,7 +105,7 @@ namespace eval Editor {
}
for {set i $lineBegin} {$i <=$lineEnd} {incr i} {
set str [$txt get $i.0 $i.end]
set commentSymbolIndex [$commentProcedure $str]
set commentSymbolIndex [$commentProcedure $fileType $str]
if {$commentSymbolIndex != 0} {
$txt delete $i.[lindex $commentSymbolIndex 0] $i.[lindex $commentSymbolIndex 1]
}
@@ -91,7 +116,7 @@ namespace eval Editor {
} else {
set posNum [lindex [split $pos "."] 1]
set str [$txt get $lineNum.0 $lineNum.end]
set commentSymbolIndex [$commentProcedure $str]
set commentSymbolIndex [$commentProcedure $fileType $str]
if {$commentSymbolIndex != 0} {
$txt delete $lineNum.[lindex $commentSymbolIndex 0] $lineNum.[lindex $commentSymbolIndex 1]
}
@@ -101,35 +126,47 @@ namespace eval Editor {
}
proc GetComment {fileType str} {
global lexers
puts [dict get $lexers $fileType commentSymbol]
if {[dict exists $lexers $fileType commentSymbol] == 0} {
return
# puts [dict get $lexers $fileType commentSymbol]
if [dict exists $lexers $fileType commentSymbol] {
# return
set symbol [dict get $lexers $fileType commentSymbol]
} else {
set symbol "#"
}
regsub -all {\{} $str "\\{" str
regsub -all {\}} $str "\\}" str
regsub -all {\[} $str {\\[} str
regsub -all {\]} $str {\\]} str
if {[regexp -nocase -indices -- {(^| )([dict get $lexers $fileType commentSymbol]\s)(.+)} $str match v1 v2 v3]} {
puts "$match, $v1, $v2, $v3"
set cmd "regexp -nocase -indices -- {(^|\s+)\\s*($symbol\\s*)(.*)} {$str} match v1 v2 v3"
puts $cmd
# puts [eval $cmd]
if [eval $cmd] {
puts "$match, $v2, $v3"
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
} else {
return 0
}
}
proc GetComment:TCL {str} {
if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 v2 v3]} {
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
} else {
return 0
}
}
proc GetComment:GO {str} {
# puts ">>>>>>>$str"
if {[regexp -nocase -indices -- {(^| |\t)(//\s)(.+)} $str match v1 v2 v3]} {
# puts ">>>> $match $v1 $v2 $v3"
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
} else {
return 0
}
}
# proc GetComment:TCL {str} {
# if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 v2 v3]} {
# return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
# } else {
# return 0
# }
# }
# proc GetComment:GO {str} {
# # puts ">>>>>>>$str"
# if {[regexp -nocase -indices -- {(^| |\t)(//\s)(.+)} $str match v1 v2 v3]} {
# # puts ">>>> $match $v1 $v2 $v3"
# return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
# } else {
# return 0
# }
# }
proc GetComment:Unknown {str} {
if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 v2 v3]} {
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
@@ -338,19 +375,12 @@ namespace eval Editor {
proc SelectionHighlight {txt} {
variable selectionText
$txt tag remove lightSelected 1.0 end
set selBegin [lindex [$txt tag ranges sel] 0]
set selEnd [lindex [$txt tag ranges sel] 1]
if {$selBegin ne "" && $selEnd ne ""} {
set selectionText [$txt get $selBegin $selEnd]
# set selBeginRow [lindex [split $selBegin "."] 1]
# set selEndRow [lindex [split $selEnd "."] 1]
# puts "$selBegin, $selBeginRow; $selEnd, $selEndRow"
# set symNumbers [expr $selEndRow - $selBeginRow]
set symNumbers [expr [lindex [split $selEnd "."] 1] - [lindex [split $selBegin "."] 1]]
# puts "Selection $selectionText"
if [string match "-*" $selectionText] {
set selectionText "\$selectionText"
}
@@ -359,7 +389,6 @@ namespace eval Editor {
set selFindLine [lindex [split $ind "."] 0]
set selFindRow [lindex [split $ind "."] 1]
set endInd "$selFindLine.[expr $selFindRow + $symNumbers]"
# puts "$ind; $symNumbers; $selFindLine, $selFindRow; $endInd "
$txt tag add lightSelected $ind $endInd
}
}
@@ -369,6 +398,7 @@ namespace eval Editor {
set win .varhelper
# if { [winfo exists $win] == 0 } { return }
set ind [$win.lBox curselection]
puts ">>>>>>>>>>>> VarHelperBind <<<<<<<<<<<<<<<<"
switch -- $K {
Prior {
@@ -413,27 +443,22 @@ namespace eval Editor {
}
} ;# proc auto_completition_key
proc VarHelperEscape {w} {
puts "VarHelperEscape"
bindtags $w.t [list [winfo parent $w.t] $w.t Text sysAfter all]
puts ">>>>>>>>>>>> VarHelperEscape <<<<<<<<<<<<<<<<"
# bindtags $w [list [winfo parent $w] $w Text sysAfter all]
bindtags $w [list [winfo toplevel $w] $w Ctext sysAfter all]
catch { destroy .varhelper }
puts [bindtags $w]
puts [bind $w]
puts [bindtags $w.t]
puts [bind $w.t]
}
proc VarHelper {x y w word wordType} {
global editors lexers variables
variable txt
variable win
# set txt $w.frmText.t
# блокировка открытия диалога если запущен другой
if [winfo exists .findVariables] {
return
}
set txt $w
set win .varhelper
# set win .varhelper
puts "$x $y $w $word $wordType"
set fileType [dict get $editors $txt fileType]
@@ -502,20 +527,38 @@ namespace eval Editor {
}
}
# unset item
# puts $findedVars
bindtags $txt [list VarHelperBind [winfo toplevel $txt] $txt Ctext sysAfter all]
# bindtags $txt [list VarHelperBind [winfo toplevel $txt] $txt Ctext sysAfter all]
# bindtags $txt.t [list VarHelperBind [winfo parent $txt.t] $txt.t Text sysAfter all]
bind VarHelperBind <Escape> "Editor::VarHelperEscape $txt; break"
# bindtags $txt.t {[list [winfo parent $txt.t] $txt.t Text sysAfter all]};
# bindtags $txt {[list [winfo toplevel $txt] $txt Ctext sysAfter all]};
# catch { destroy .varhelper }"
bind VarHelperBind <Key> {Editor::VarHelperKey $Editor::txt %K %A; break}
if { [winfo exists $win] } { destroy $win }
# bind VarHelperBind <Escape> "Editor::VarHelperEscape $txt.t; break"
# # bindtags $txt.t {[list [winfo parent $txt.t] $txt.t Text sysAfter all]};
# # bindtags $txt {[list [winfo toplevel $txt] $txt Ctext sysAfter all]};
# # catch { destroy .varhelper }"
# bind VarHelperBind <Key> {Editor::VarHelperKey %W %K %A; break}
#
if {$findedVars eq ""} {
return
}
# puts $findedVars
VarHelperDialog $x $y $w $word $findedVars
}
proc VarHelperDialog {x y w word findedVars} {
global editors lexers variables
variable txt
variable win
# puts ">>>>>>>>>>>>>$x $y $w $word $findedVars"
# set txt $w.frmText.t
# блокировка открытия диалога если запущен другой
# if [winfo exists .findVariables] {
# return
# }
# if { [winfo exists $win] } { destroy $win }
set txt $w
set win .varhelper
# if {$findedVars eq ""} {
# return
# }
toplevel $win
wm transient $win .
wm overrideredirect $win 1
@@ -542,15 +585,13 @@ namespace eval Editor {
focus -force $Editor::txt.t
break
}
# bind $win.lBox <Return> {
# set findString [dict get $lexers [dict get $editors $Editor::txt fileType] procFindString]
# set values [.varhelper.lBox get [.varhelper.lBox curselection]]
# regsub -all {PROCNAME} $findString $values str
# Editor::FindFunction $Editor::txt "$str"
# destroy .varhelper.lBox
# # focus $Editor::txt.t
# break
# }
bind VarHelperBind <Control-Return> {
$Editor::txt delete "insert - 1 chars wordstart" "insert wordend - 1 chars"
$Editor::txt insert "insert" [.varhelper.lBox get [.varhelper.lBox curselection]]
# eval [bind VarHelperBind <Escape>]
Editor::VarHelperEscape $Editor::txt
break
}
# Определям расстояние до края экрана (основного окна) и если
# оно меньше размера окна со списком то сдвигаем его вверх
@@ -735,6 +776,7 @@ namespace eval Editor {
# set txt $w.frmText.t
bind $txt <KeyRelease> "catch {Editor::ReleaseKey %K $txt $fileType}"
bind $txt <KeyPress> "Editor::PressKey %K $txt"
bind $txt <Control-eacute> Quit
bind $txt <Control-igrave> "Editor::SelectionPaste $txt"
bind $txt <Control-v> "Editor::SelectionPaste $txt"
bind $txt <Control-l> "SearchVariable $txt; break"
@@ -882,7 +924,8 @@ namespace eval Editor {
set nbEditorItem [NB::InsertItem $nbEditor $fileFullPath "file"]
# puts "$nbEditorItem, $nbEditor"
Editor $fileFullPath $nbEditor $nbEditorItem
SetModifiedFlag $nbEditorItem
SetModifiedFlag $nbEditorItem $nbEditor
focus -force $nbEditorItem.frmText.t.t
}
proc ReadStructure {txt treeItemName} {
@@ -1131,20 +1174,32 @@ namespace eval Editor {
set lstFindIndex [$txt search -all -nocase -count matchIndexPair $findString $line.$x end]
# set symNumbers [string length "$findString"]
}
# puts $lstFindIndex
puts $lstFindIndex
# puts $matchIndexPair
# set lstFindIndex [$txt search -all "$selectionText" 0.0]
# Найдем разницу в длине строк для установки правильного
# индекса для выделения текста после вставки
set stringLengthDiff [expr [string length $findString] - [string length $replaceString]]
set i 0
foreach ind $lstFindIndex {
foreach ind [lsort -dictionary -decreasing $lstFindIndex] {
set selFindLine [lindex [split $ind "."] 0]
set selFindRow [lindex [split $ind "."] 1]
# set endInd "$selFindLine.[expr $selFindRow + $symNumbers]"
set endInd "$selFindLine.[expr [lindex $matchIndexPair $i] + $selFindRow]"
# puts "$ind; $selFindLine, $selFindRow; $endInd "
puts "$ind; $selFindLine, $selFindRow; $endInd "
if {$replaceString ne ""} {
$txt replace $ind $endInd $replaceString
# Вычисляем индекс вхождения строки после замены для выделения в тексте
if {$stringLengthDiff > 0} {
$txt tag add sel $ind "$endInd - [expr [tcl::mathfunc::abs $stringLengthDiff]] chars"
} else {
$txt tag add sel $ind "$endInd + [expr [tcl::mathfunc::abs $stringLengthDiff]] chars"
}
} else {
$txt tag add sel $ind $endInd
}
$txt tag add sel $ind $endInd
incr i
}
.finddialog.lblCounter configure -text "[::msgcat::mc "Finded"]: $i"

View File

@@ -31,7 +31,8 @@ namespace eval FileOper {
# lappend cmd $activeProject
lappend cmd $fileFullPath
catch $cmd pipe
# puts $cmd
catch $cmd pipe
# puts $pipe
if [regexp -nocase -- {(\w+)/([\w\-_\.]+); charset=([[:alnum:]-]+)} $pipe m fType fExt fCharset] {
puts "$fType $fExt $fCharset"
@@ -43,11 +44,14 @@ namespace eval FileOper {
}
}
}
# линуксовый file не всегда корректно определяет тип файла
# используем пакет из tcl
lassign [::fileutil::fileType $fileFullPath] fType fBinaryType fBinaryInterp
puts "File type is $fType, $fBinaryType, $fBinaryInterp"
switch $fType {
"application" {
if {$fExt ne "json"} {
return false
}
"binary" {
return false
}
"text" {
return text
@@ -201,11 +205,10 @@ namespace eval FileOper {
if {[lsearch -exact [.frmWork.panelNB panes] .frmWork.nbEditor2] != -1} {
.frmWork.panelNB forget .frmWork.nbEditor2
}
foreach nbItem [array names modified] {
if {[info exists modified($nbItem)] == 1 && $modified($nbItem) eq "true"} {
catch {$nbEditor select $nbItem}
# puts "close tab $nbItem"
if {[Close] eq "cancel"} {return "cancel"}
foreach nbItem [$nbEditor tabs] {
catch {$nbEditor select $nbItem}
if {[Close] eq "cancel"} {
return "cancel"
}
}
}
@@ -394,7 +397,7 @@ namespace eval FileOper {
if {[file exists $fileFullPath] == 0} {
return false
} else {
# puts [::fileutil::magic::filetype $fileFullPath]
puts "$fileFullPath File type [::fileutil::magic::filetype $fileFullPath]"
set fileType [FileOper::GetFileMimeType $fileFullPath]
}
switch $fileType {

View File

@@ -26,7 +26,6 @@ bind . <Control-Q> Quit
bind . <Control-eacute> Quit
bind . <Insert> Add
bind . <Delete> Del
bind . <Control-Return> Edit
bind . <F1> ShowHelpDialog
bind . <Control-n> Editor::New
bind . <Control-N> Editor::New

View File

@@ -13,9 +13,11 @@ namespace eval Highlight {} {
ctext::addHighlightClass $txt variable_funcs gold {set global variable unset}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)(\w)+?(\s|$)}
ctext::addHighlightClassForRegexp $txt comments #666666 {(^|;)\s*(#)[^\n\r]*}
ctext::addHighlightClass $txt bool #3e803b {null false true}
}
proc Default {txt} {
@@ -53,12 +55,13 @@ namespace eval Highlight {} {
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
ctext::addHighlightClass $txt bool #3e803b {nil false true}
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
}
proc PY {txt} {
ctext::addHighlightClassForRegexp $txt flags orange {-+[a-zA-Z\-_]+}
ctext::addHighlightClass $txt stackControl #19a2a6 {if else: elif for while case switch def import from return make break defer continue package len print with open try: except: in}
ctext::addHighlightClass $txt stackControl #19a2a6 {if else elif for while case switch def import from return make break defer continue package len print with open try: except: in}
ctext::addHighlightClass $txt types #7187d5 {string int int16 int32 int64 float bool byte}
ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\&"
ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\*"
@@ -68,6 +71,7 @@ namespace eval Highlight {} {
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
}
proc YAML {txt} {
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {\s*?[\w]+:}
@@ -77,35 +81,49 @@ namespace eval Highlight {} {
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
}
proc YML {txt} {
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {\s*?[\w]+:}
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)(\{|)[\.a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt varsansible #4471ca {(\{\{)(\s*?|)[\.a-zA-Z0-9\_\-]+((\s*?|))(\}\})}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
Highlight::YAML $txt
}
proc XML {txt} {
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {(<|<\\)*?[\w]+>}
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {(<|<\\)*?[\w]+(/|)(>)}
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
# ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
# ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
ctext::addHighlightClassForSpecialChars $txt tags #666666 {<>/}
ctext::addHighlightClassForSpecialChars $txt tags lightgreen {<>/}
}
proc HTML {txt} {
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {(<|</)([\w]+)}
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt paths lightblue {(\s)([\w]+)(=)}
ctext::addHighlightClassForSpecialChars $txt tags lightgreen {<>/}
ctext::addHighlightClassForRegexp $txt comments #666666 {(<\!--)\s*(.+)\s*(-->)}
}
proc HTM {txt} {
Highlight::HTML $txt
}
proc RB {txt} {
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
ctext::addHighlightClass $txt stackControl #19a2a6 {def end class if else for while case when require module begin rescue self return include}
ctext::addHighlightClass $txt stackControl #19a2a6 {def end class if else for while case when require module begin rescue self return include unless raise private new do synchronize}
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-\[\]]+}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
ctext::addHighlightClassForRegexp $txt dog #0082ff {(@)[\.a-zA-Z0-9\_\-]+}
ctext::addHighlightClass $txt bool #7e5fb3 {nil false true}
}
proc MD {txt} {
ctext::addHighlightClassForRegexp $txt comments #666666 {^\s+?(#|//).*$}
ctext::addHighlightClassForRegexp $txt lists #4471ca {(\*|-|\+)+}
@@ -130,14 +148,47 @@ namespace eval Highlight {} {
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
ctext::addHighlightClassForRegexp $txt namespaces #0093ff {->|\+\+|::}
}
proc INI {txt} {
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
ctext::addHighlightClassForRegexp $txt stackControl #4471ca {^(\s*?)\[[\.a-zA-Z0-9\_\-\[\]]+\]}
ctext::addHighlightClassForRegexp $txt stackControl #4471ca {^(\s*?)\[[\.a-zA-Z0-9\_\-\[\]\s\.:]+\]}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt dog #0082ff {(@)[\.a-zA-Z0-9\_\-\[\]]+}
ctext::addHighlightClassForRegexp $txt colors #68ceff {(#|//)[^\n\r]*}
ctext::addHighlightClassForRegexp $txt keyword #19a2a6 {^(\s*?)[a-zA-Z0-9\_\-]+(\s*?=)}
ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)[\w]+?}
ctext::addHighlightClassForRegexp $txt keyword #19a2a6 {^(\s*?).+(\s*?=)}
ctext::addHighlightClassForSpecialChars $txt equal #0082ff {=}
ctext::addHighlightClassForRegexp $txt comments #666666 {(^\s*#|^\s*;|\s+;)[^\n\r]*}
ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)(\w)+?(\s|$)}
}
proc DESKTOP {txt} {
Highlight::INI $txt
}
proc SPEC {txt} {
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z0-9]+}
ctext::addHighlightClassForRegexp $txt macros #0082ff {(%)[\.a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt var #4471ca {(\$)[\.a-zA-Z0-9\_\-\[\]]+}
# ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)[^\n\r]*}
ctext::addHighlightClassForRegexp $txt keyword #68ceff {^(\s*?)[a-zA-Z0-9\_\-]+(\s*?:)}
ctext::addHighlightClassForSpecialChars $txt equal #0082ff {=}
ctext::addHighlightClassForRegexp $txt changelog lightgreen {^(\s*?)(\*|\-)(.+?)$}
ctext::addHighlightClass $txt shelcommand #19a2a6 {if fi else elseif then while case esac do in exit source echo package mkdir ls rm sed awk grep date jq zip tar gzip mount umount test make curl git iconv less gcc scp rsync cut tr function install}
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
}
proc LUA {txt} {
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
ctext::addHighlightClass $txt stackControl #19a2a6 {and break do else elseif end false for function goto if in local nil not or repeat return then true until while}
# ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-\[\]]+}
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp $txt comments #666666 {(--)[^\n\r]*}
ctext::addHighlightClassForRegexp $txt namespaces #0093ff {->|\+\+|::}
ctext::addHighlightClass $txt bool #3e803b {null false true}
}
}

View File

@@ -596,6 +596,22 @@ image create photo debian_16x12 -data {
rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO
RK5CYII=
}
image create photo deb_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC
5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM
qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF
FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03
T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP
0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw
SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgYBD440/mcAAADnSURBVCjPlZIxbsIwGIU/O6Ei
CEGkzukJOkRi4A7sCIYuPQlcgx2J0FNwBNQVpogVRKuqCQhsFixZjkHwNj89f37/LwtuKCPV9vmE
Sj743rg54RpTuq2Qww+QA2/G17AV8DpkKW4CJnRqbc5HgII4+mRR+hrZkNAGmMsmMOM9EYS58dyx
KgBbX/QDxSo3sDFIX65iFsQRgGJ1Mt4Y5Ai0D1Bp8MI2AsoWf/VfmmVGqiVRY07x787vbRAQ7AB6
rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO
RK5CYII=
}
image create photo redhat_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
@@ -615,6 +631,26 @@ image create photo redhat_16x12 -data {
09XnzifcAaBGuUTHS9CB0kq/EeiqEzh36yeGZvgH5pLddZ5feAf2OYwxhVgpYDyx5dANP+pfyyXc
JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B
fWB7/vyA9Yr/YLa1I25OKGgYfz6Rjbv9EqdKrq/6GWz7DaI/0EnQtYARAAAAAElFTkSuQmCC
}
image create photo rpm_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC
5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM
qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF
FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03
T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP
0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw
SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgYbDKcQVQYAAAH8SURBVCjPhZJNSJMBGMd//3dr
01KpQGdqRUF1CsrNBq1IXwnxYFFRl255jKhDhzp2qGvXAqFLFBL0YUWg6aSCIB3aoUsUpYFsM0kL
rc33fZ8ObrSE6A8PPP/ni+dLrMKn9vaqdT+cHmRdJqcFgMCmJQ0uzEce7/jwrFAZr0qSS3ScMLgu
tLnC/Ksk64Epw843jqcflZ1OWcnH3Uuge0JNwmltsIVItFDc6Cm8EyMt4zKwVehBrs29+FcH+bh7
0kT/CtckZjeRtpsFk42Z9B0rxyXc10ASMEzHY5nhh5qJ96wNsfge0QzMI4a0FJyxKicWy4x8rBwx
m+jsFdZXotNLNcEuJ+QsHUNEzQlvj42PbJBZQLX6JO2dTaVqKwuYXxyooFuqF0NHHcy6gMgaFZcB
fN87ZzBv2K2gEM3m2tz95YxIJBQ1gt3IzgIeZl3KJtxRwSFgGseOxN6k3wLMJbvrPK/oOgTL9Zn0
09XnzifcAaBGuUTHS9CB0kq/EeiqEzh36yeGZvgH5pLddZ5feAf2OYwxhVgpYDyx5dANP+pfyyXc
JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B
fWB7/vyA9Yr/YLa1I25OKGgYfz6Rjbv9EqdKrq/6GWz7DaI/0EnQtYARAAAAAElFTkSuQmCC
}
image create photo spec_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
@@ -1447,6 +1483,40 @@ image create photo csr_16x12 -data {
kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
}
image create photo sig_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw0AcxV9TS0UqDnYQcchQxcGCX4ijVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
BD9AHJ2cFF2kxP8lhRYxHhz34929x907QKiXmWZ1jAKabpvpZELM5lbE8CsiCCGMMQzLzDJmJSkF
3/F1jwBf7+I8y//cn6NbzVsMCIjEM8wwbeJ14qlN2+C8TxxlJVklPiceMemCxI9cVzx+41x0WeCZ
UTOTniOOEovFNlbamJVMjXiSOKZqOuULWY9VzluctXKVNe/JXxjJ68tLXKc5gCQWsAgJIhRUsYEy
bMRp1UmxkKb9hI+/3/VL5FLItQFGjnlUoEF2/eB/8LtbqzAx7iVFEkDoxXE+BoHwLtCoOc73seM0
ToDgM3Clt/yVOjD9SXqtpcWOgJ5t4OK6pSl7wOUO0PdkyKbsSkGaQqEAvJ/RN+WA3luga9XrrbmP
0wcgQ12lboCDQ2CoSNlrPu/ubO/t3zPN/n4AiVZysDNUkngAAAAGYktHRAD/AP8A/6C9p5MAAAAJ
cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmDAUHMwbmoJmMAAABRklEQVQoz32SPyyDURTFf+fr
V50kVEzWRjSYasPS1aoMJmnzBqZiE5FIjP6EtMNLulmwskksRmKqzhiJiAVJ22spqZbvbPfe807e
+90nWioUCtOSNiT1ASFQBda99w9ESADOuRmgGIbhYrlcfmz1psxsJx6Pz373/lKQy+ViwGaj0Zhr
N3rvrySt1uv17agbBMlkckxStVKpvHQOvfdXwGhkgKR+M7v/z2Bmb1EBYbPZXACyzrnJfzzDkQHA
qPc+BRhAPp9PxWKxV+/9M8Dh9ch4yaVvDXoktpYzteNfTzCzz47DR2Z2/mNAG8CQ4B2zgy4G7UUi
kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
}
image create photo gpg_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw0AcxV9TS0UqDnYQcchQxcGCX4ijVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
BD9AHJ2cFF2kxP8lhRYxHhz34929x907QKiXmWZ1jAKabpvpZELM5lbE8CsiCCGMMQzLzDJmJSkF
3/F1jwBf7+I8y//cn6NbzVsMCIjEM8wwbeJ14qlN2+C8TxxlJVklPiceMemCxI9cVzx+41x0WeCZ
UTOTniOOEovFNlbamJVMjXiSOKZqOuULWY9VzluctXKVNe/JXxjJ68tLXKc5gCQWsAgJIhRUsYEy
bMRp1UmxkKb9hI+/3/VL5FLItQFGjnlUoEF2/eB/8LtbqzAx7iVFEkDoxXE+BoHwLtCoOc73seM0
ToDgM3Clt/yVOjD9SXqtpcWOgJ5t4OK6pSl7wOUO0PdkyKbsSkGaQqEAvJ/RN+WA3luga9XrrbmP
0wcgQ12lboCDQ2CoSNlrPu/ubO/t3zPN/n4AiVZysDNUkngAAAAGYktHRAD/AP8A/6C9p5MAAAAJ
cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmDAUHMwbmoJmMAAABRklEQVQoz32SPyyDURTFf+fr
V50kVEzWRjSYasPS1aoMJmnzBqZiE5FIjP6EtMNLulmwskksRmKqzhiJiAVJ22spqZbvbPfe807e
+90nWioUCtOSNiT1ASFQBda99w9ESADOuRmgGIbhYrlcfmz1psxsJx6Pz373/lKQy+ViwGaj0Zhr
N3rvrySt1uv17agbBMlkckxStVKpvHQOvfdXwGhkgKR+M7v/z2Bmb1EBYbPZXACyzrnJfzzDkQHA
qPc+BRhAPp9PxWKxV+/9M8Dh9ch4yaVvDXoktpYzteNfTzCzz47DR2Z2/mNAG8CQ4B2zgy4G7UUi
kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
}
image create photo git_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw0AcxV9TS0UqDnYQcchQnSz4hYiTVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
@@ -1719,5 +1789,127 @@ image create photo image_16x12 -data {
Chm/n66JCfRmg3DPIPf3iwSDM6RSB1jWp4AWHA4FxS5yUiyS/mnycHXE0tICuq6TSlWHLP9/X9O8
Qohnupub0FYW0X70YxhpQqFQ3f/4MIEQo4yN7bHb+o2XrVkaGzt4e5M+fbAPAF3XAY1c7g8wjmVB
ONyL2+2uD/ieTEprk5Mim82iqiqqqlaZCoVCXcBfmFeL22lAPa8AAAAASUVORK5CYII=
}
image create photo lua_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAjbAAAI2wHNrPlDAAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAARdJREFUKJGNkC1IQ3EUxX/nbfoY
ikkxaxQMRi2CzcG2uGFasy3owkCQV7SsuCI2i7iP+KaLVouCcSCI0aAgTFAn2zX8/dqeiCeee3+c
c6/4j6rNXWQFREUDgyDwmFuYpR8bYcK7IZl8BaAWdoBxoOOARiOG+ZuYNoDpD/wJOCRhW7yohFEA
KsJM1JtVIPsjy4BTYBLwSdgymUwHwKN+kh9aBtk+uXSKbGoJ1OVZO58jD1iPHNnn3oEysAcgT6vl
A8TB5iOAVKQWCjQFtgqIx94M0I6D3lzlAY0B2wO+qesqyc4jCVHdcX1x64AeZX6JGOpYJgj6DlhL
nyEr/QEd077c+0K/7XAFjyKwCIyCrjA7IJc6ct9yegcG+1TkMUCBoAAAAABJRU5ErkJggg==
}
image create photo gz_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAASpJREFUKJGFjb9Kw0AAxr+73F0S
wU6tUMWAOigIBcVNJ7ciTgo+gIuzq66CvoEPoXQWBHERih0EUbu0UGiCrdVaY5qaJncuRjEZ+o2/
7x/ZO912lFJ5/IiADgURxcjU7pBQTlKPDQI/zzUBRlnMed/1LptlB3Mrs+A6BwCEMsSzDDts6EXY
3zqAYOJ3qVy5gSOaKK5vwtBNAEAQBjg5P8ySo9KOopT8u65WHOgmh7WQhab9eVIq0GQYAGYWc+i9
9kESFqUENBnutj1cnT3C/wxwe1FLjaUKrUYPuakMCqsW7Pp7qsCSQCmF+n0bTq0LGcnRDwBQWLOw
sbsErmujC8Jg8Nwv+G4ALtJ7zK69HQudTcZgLGNojWpn+br0ND49P/Hw0vxoxV4wCO1vTFFpmeaA
16IAAAAASUVORK5CYII=
}
image create photo tgz_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAASpJREFUKJGFjb9Kw0AAxr+73F0S
wU6tUMWAOigIBcVNJ7ciTgo+gIuzq66CvoEPoXQWBHERih0EUbu0UGiCrdVaY5qaJncuRjEZ+o2/
7x/ZO912lFJ5/IiADgURxcjU7pBQTlKPDQI/zzUBRlnMed/1LptlB3Mrs+A6BwCEMsSzDDts6EXY
3zqAYOJ3qVy5gSOaKK5vwtBNAEAQBjg5P8ySo9KOopT8u65WHOgmh7WQhab9eVIq0GQYAGYWc+i9
9kESFqUENBnutj1cnT3C/wxwe1FLjaUKrUYPuakMCqsW7Pp7qsCSQCmF+n0bTq0LGcnRDwBQWLOw
sbsErmujC8Jg8Nwv+G4ALtJ7zK69HQudTcZgLGNojWpn+br0ND49P/Hw0vxoxV4wCO1vTFFpmeaA
16IAAAAASUVORK5CYII=
}
image create photo zip_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAACXBIWXMAAAeJAAAHiQH5c1i9AAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAUVJREFUKJGNkTtLA0EUhc9MZrNL
IokBFZUY340IgqSw10K0srGy08LaRvAf2NpYpUmrhZ2N/oCAYCUILhJjDJE8NjGJyc7M7thodJMV
PeX5+Obey5DZ0+2cIu4EfoSCpMz9sz38EjJysql6Sw1UhCzbZs+WZicn2x4B5IWptkRq7RBzsXgX
lCuv2vlFWtvYOUAiMaN/9aaVx+7V8SBJprfU1PAoCEhXctoc9dscWMRAZPH7MQWFbKkIFo7qKHHL
s54SEpzYoBTo8KqHhaM6qN+hMt+AMCsQZhWqI/t4vyRdvF8/IrQ+DxrRYd8U/pZc7kC1BMR9GTL3
Brcl/jHpM06TQ0nHl/lKgZiB0Oo0jJW4HwYFlOdzic6gOhJOsQnxVAcdCPYoSrHaXemIhYPjnnph
KN64fFgiBqsHlscyzWyte5hs8cIHuFR/UISQs+8AAAAASUVORK5CYII=
}
image create photo xz_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAShJREFUKJGFkDtLA0EUhb+Z3Vl3
jFpZGCsJiI0gRqtAOonYSvJPBP+Aoo29IBZ2giA2WimIVkqQgAgptFBxUfEVk2g2+7IxgWSLnPLc
8+KK1GbeiaIoyT8E0jOFtSC1UaILI6Gsm7Xmb9I2LCxptnhlVevH8sKB2RT0KQC80Och9N9M5Up2
C6vYptVOKl6e8awfmZtfxLY1AA2/SWFveVhk73YiqVRHtXt0jhjoR2WmEGa7mdDzkN1iACubJnBe
EUJ08FIpZLc4uHeorW8Tfn7zs7UfC4sZ/OtbzIkxdD6HVyrHDGaMIcI9LeJdlcEPejcA6EKOoY0l
hLZ7G0RCE75/EX5UEDr+EDFzuLJmJPRoe5DbNIKDk3RYqQ4amekbY3L8pXXz6o2nPwWnYSj7tbJx
AAAAAElFTkSuQmCC
}
image create photo iso_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAWIAAAFiAG/L38eAAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAVJJREFUKJGFjz1IQgEUhc99vvd8
JgolDf2OQkhb0RD249LaKESDOEUQtQRtNbQVTkE05JJLDUGQRJPQUCQVrSJIv5IZmFK8/9v0XmJC
d7qccz7uPcTMQfw/DSJiABCJqN7sGJnYhMXWhizSGECkmvbd55exCeAUAKg5rGcm5yVRSAPwtFzg
p6q6Orh4ueUCfBjrY5uLRFDa/cSAmS/VRkRHUA07oYikAIAmhd7qkaUj2etXfffbcVkt9xMg9gSU
BRdgm4edD797Z666w9E1AJZlxDtxm0oCgF8Rh1zAZjacXbIaPgABAIZHq/kd3bRYdwHTxAW8mAOA
jtfzqH6NfUmSdZSy007RSkPL/5ZOTym6zAVZFAbalTYs+33loDAqOAIlcupjRZvVTbv8J2zyx3G+
mtzJlh+o1Txbj3SFQ8HlgCKMg0io1o2bvdzLburkuQgAP0z8hJue1kBeAAAAAElFTkSuQmCC
}
image create photo pdf_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAKYAAACmAE200ffAAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAMpJREFUGJWNz69OgnEYxfHv+RVF
xsBAdHODzcbLrARfLgADjWggMgKXYHDzArgAA4F7IKAm/wTsNgMj6eZGYHAIBoWX4fvEs8/OngNb
53o0dFzpbucAIZGYImiaDqM5+CQl5glYpMQu4dD8FzuunoIOCZ74IuokHtzA9WofewBfL1B4BD9j
ZkhHsHrVb+t5GZb3wB1GBL0D33h1BeETnNdPY+US6xa7rfHbQ2JF7SxH9iAjx1EP3MAaaTy53jXs
z0C1QB/o+GYfBFgDj+E74z7GkTEAAAAASUVORK5CYII=
}
image create photo bz2_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAdDAAAHQwF4FVqrAAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAARhJREFUGJV9jrFKw1AYRk9ublI0
oYPSYnEREXEQ6eIiFhFB3MVBcPEpiqN06OAiLrq6+Aa+gIuDUEShhYK6iZbWlDQVE5t7HcSEFuo3
nv/wfb8xf3H6qjUF0ihLikNhi2tGIoMoKmRMk4ww/5iwgt6lbN7D3BJ6eua3AY00w5Cr3X0c204a
GvUaTXPA2voOuXw6apSe7rSwrKG56PYG9dHB3thCuNmEi1ERwCquQviFEQ2GuBgVVadNcFxGeR79
syrE8Xh50Gwgcnkm9g5Qvo9qvY+XDa35fqjRq5RRrTc0arwMYG9ukz05Ry4s/v8zrovuemjfR/c/
MRw3OUn/sV61nMnZVJ4i1qz0Kkc5sVx8CdvdZ9pdAH4AuSFg6ttQQTAAAAAASUVORK5CYII=
}
image create photo csv_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAMCAYAAABbayygAAAACXBIWXMAAAvPAAALzwFI68pfAAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAPJJREFUGJWFkaFLA3EcxT/ve8cs
M6uIiOl2GBZsVqOyf8B+ghyr2z+xoqdgMNoMqzaTaSaR28BiEFYHC+rm72sTxRt76YUPj/d4KnO/
BXYA578UAoe7lxrHOBvphfYqIMq27xv0R5kfGapMAiA90wPQDTX6tgj6gQvdA+j51OsWkwCEOaPf
vhaxFma8z42JRUaTwDWBzGISvrghkCG2Z9DzmHZkNA1AcJcWOpGYLqrwp+PKhFcijoF1oC5ny6EB
fJjE1OGgzH3wuUpC4ArYFIwR5w5PjUIDhrm3li0f5t4ydzrLQHc6MeKtzP2R6gsB5OLlG1VzU07m
mn0VAAAAAElFTkSuQmCC
}
image create photo exe_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAMCAYAAAC9QufkAAAACXBIWXMAAAMnAAADJwEZpzWLAAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAaxJREFUKJFtkEFIlHEQxX/z3083
IoONdQ3qYrcFdQ0hhTrU2k3XCjS6dZBiO3SRorotJJQSXQtMOiUKxrYmQgZiHjRJ3FoxPVgUgkSt
UatY0H7/6dB+CO33TjPDezNvnlCCguTbTqUQOSMQVSiIMm7V3opMTH/BB+IV+fb4MWC+nKIXu/v3
78PleaY+sw6Q0pTJLeeadsWJ+F2UG/+t/nMnuef0h9rKV//MsYlSQIgAC87uAc6W25LJj0eCCVQ9
l2GEMICqDhuA720n64AwMInyElgDcB15qlYv+LxbNEWTdgBuH78W+hyqGXWN0wxUIsx2vxm6+aJr
5QfCYR/xVDqW/hoAqDl/PaNi2oGDQDUQyx6qj9z/OT62EA7MblcELLADLAetPokWzL2ZwdW8kxh4
V4u1jWUZw7OgymBf9lcUfi+CbijsFbjqFu3jXsARazt9bGlSRpaAWKlt8RID5kJXpj8BGIFzCt+A
98BmSfz6BPOtPktRlRGvdtTY5Nilppw36Hjw9qgRewAY8NHaCldHvUZ8CABsPYp3qUqPoA2qFBGy
ogxXXZ566HH+Asc0nIyxyMyyAAAAAElFTkSuQmCC
}
image create photo txt_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAMCAYAAACwXJejAAAACXBIWXMAAALEAAACxAFbkZ0LAAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAXVJREFUGJVjZICCT2f+i9x98XjO
43fPXorziUrKyihFSJkwfmNgYGBgPLz62uYXH998EOMX1unbMmvRxoUT+ytrJic7atkUfPz2+QIH
Kxsf04sPr16HptjF3nt+/0CYhZ/s0ul7+3SktbQvPri6LzTFLvbHrx9vWRgYGBhubn4s/Z75R70I
M7fq339/mBgYGBgYFFQZbLfd5nv89CkDCwMDA8PG68cUnr158E5OSN7mz78/nDB3Pvvw9Iu1qjlE
kZ2a0ftHomLvlQRkH375/5MVpujxa7kPDAz/IIoOXj7+//7bpxy3RO4x/vz5mx2m6P371xz2+rYQ
RU7q5rxX3z/5pSkiK/b9/0+4ogdvXzExMDBAFK0+s+vJlfvX/8lIyVz4/fcXN0zRy5evvia6hUEU
eZk4aGtJyD9TlVX1/P3vDxvcpKf3X8JNKp/fcZKFlf3//z8/5v9nYYI7nImB7WWBbxwD45aFJ05/
//3rBgMO8P3ndy0A+c+fqfnp2TAAAAAASUVORK5CYII=
}
image create photo j2_16x12 -data {
iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAjxJREFUKJGNzT9oE1EcwPHfu3u5
yzWXyyUx1/xpKtZWaytJkVbQoUMpiqP/gtJSJ8FNxEEoWpUKgghKUSGTYNHBwalrDDgIIk1oG/oH
o1IoTZu2SS7/XnLv7p6To+B3/sAXMcbgfzp663ZfOTZ42VEuxVBw+sEUVf2AzXblLzCB91iK22+L
gs924JAlumKG3xe3eezwrK6ksO12D1UHBm5SRZH/deGMNgjlyq6yuvxwd+Z+EjHGQHv+IkG08Jjp
ks5L29sLrVBo1EZIVrOL082e3qeBdGrWUN2/Owwjt5FM7nMAAFytRsCiiPFYtpziECJEwc1mB/X7
plua1rk7fu5O+ezoI75edwEAYAAAqVhYcdBWtR7uHtZSn++KP9d/EEKa+XyeeufefAknX4/lcjkD
rl8FAAB8ZGJiqDpy5plnaWkWgl2MRKMnq7HBK4zj+jstu1E7FPC2To3c8L98ddG7+O1Jfn7+K3br
+mbF6ezX4/F7hqZ1NUzzmilJBdxulyxBjFNFjZZGTk8xhELRra0MAAC3vLBQxhU9e/zjhylcq9vq
+tocE8SiJYlryLLe8qRRYoj/hBv11XQ63QIA4PomJxVbwOqv8QuXqCzL9UhkGDAf5A1TxqTRjQxK
waYDtkPwRhMJCQAAcy6XQBVVAwTH2sGQ25vNaAwYtjCvkcjhE5Ysd1Cwe/gmifh0nQMAwBvJ5H54
5nEG7+28M9SARyoW37c7A72MxzFpr/Dd1sUKRxpZbJg7joMDAwDgDzlS9ta5m7mUAAAAAElFTkSu
QmCC
}

View File

@@ -15,9 +15,12 @@ dict set lexers TCL commands [info commands]
#--------------------------------------------------
# Go lang
dict set lexers GO commentSymbol {//}
dict set lexers GO commentMultilineSymbolBegin {/*}
dict set lexers GO commentMultilineSymbolEnd {*/}
dict set lexers GO procFindString {func.*?PROCNAME}
dict set lexers GO procRegexpCommand {regexp -nocase -all -- {\s*?func\s*?(\(\w+\s*?\**?\w+\)|)\s*?(\w+)\((.*?)\)\s+?([a-zA-Z0-9\{\}\[\]\(\)-_.]*?|)\s*?\{} $line match linkName procName params returns}
dict set lexers GO varRegexpCommand {regexp -nocase -all -line -- {^\s*?var\s+([a-zA-Z0-9\-_$]+)\s+(.+?)(\s*$)} $line match varName varType lineEnd}
#--------------------------------------------------
# SHELL (Bash)
dict set lexers SH commentSymbol {#}
@@ -30,13 +33,17 @@ dict set lexers SH procRegexpCommand {regexp -nocase -all -- {^\s*?(function |)\
dict set lexers PY commentSymbol {#}
dict set lexers PY procFindString {(def )\s*?PROCNAME}
dict set lexers PY procRegexpCommand {regexp -nocase -all -- {^\s*?(def)\s*?(.*?)\((.*?)\):} $line match keyWord procName params}
dict set lexers PY varRegexpCommand {regexp -nocase -all -line -- {^\s*?(\w+)\s*=\s*(.+)($)} $line match varName varValue lineEnd}
#--------------------------------------------------
# Ruby
dict set lexers RB commentSymbol {#}
dict set lexers RB commentMultilineSymbolBegin {=begin}
dict set lexers RB commentMultilineSymbolEnd {end=}
dict set lexers RB tabSize 2
dict set lexers RB procFindString {(def |class )\s*?PROCNAME}
dict set lexers RB procRegexpCommand {regexp -nocase -all -- {^\s*?(def|class)\s([a-zA-Z0-9\-_:\?]+?)($|\s|\(.+?\))} $line match keyWord procName params}
dict set lexers RB varRegexpCommand {regexp -nocase -all -line -- {^\s*?(\w+)\s*=\s*(.+)($)} $line match varName varValue lineEnd}
#--------------------------------------------------
# YAML (ansible)
@@ -69,7 +76,33 @@ dict set lexers PL varRegexpCommand {regexp -nocase -all -- {^(\s*?)\$([a-zA-Z0-
dict set lexers INI commentSymbol {#}
dict set lexers INI tabSize 4
dict set lexers INI procFindString {(\[)PROCNAME(\])}
dict set lexers INI procRegexpCommand {regexp -nocase -all -- {^\s*?(\[)([a-zA-Z0-9\-_:]+?)(\])$} $line match keyWord procName}
# dict set lexers INI procRegexpCommand {regexp -nocase -all -- {^\s*?(\[)([a-zA-Z0-9\-_:\s]+?)(\])$} $line match keyWord procName}
dict set lexers INI procRegexpCommand {regexp -nocase -all -- {^\s*?(\[)(.+?)(\])$} $line match keyWord procName}
# -------------------------------------------------
# HTML
dict set lexers HTML commentSymbol {<!--}
dict set lexers HTML commentMultilineSymbolBegin {<!--}
dict set lexers HTML commentMultilineSymbolEnd {-->}
dict set lexers HTML tabSize 4
dict set lexers HTML procFindString {<h[0-9]>(<.+>|)PROCNAME(</.+>|)</h[0-9]>}
dict set lexers HTML procRegexpCommand {regexp -nocase -all -- {<h[0-9]>(<.+>|)(.+?)(</.+>|)</h[0-9]>} $line match v1 procName v2}
# -------------------------------------------------
# HTM
dict set lexers HTM commentSymbol {<!--}
dict set lexers HTM commentMultilineSymbolBegin {<!--}
dict set lexers HTM commentMultilineSymbolEnd {-->}
dict set lexers HTM tabSize 4
dict set lexers HTM procFindString {<h[0-9]>(<.+>|)PROCNAME(</.+>|)</h[0-9]>}
dict set lexers HTM procRegexpCommand {regexp -nocase -all -- {<h[0-9]>(<.+>|)(.+?)(</.+>|)</h[0-9]>} $line match v1 procName v2}
#--------------------------------------------------
# LUA
dict set lexers LUA commentSymbol {--}
dict set lexers LUA procFindString {function\s*?PROCNAME}
dict set lexers LUA procRegexpCommand {regexp -nocase -all -- {^(local|)\s*?(function)\s([a-zA-Z0-9\-_:]+?)\s+\((.+?)\)} $line match v1 keyWord procName params}
dict set lexers LUA varRegexpCommand {regexp -nocase -all -- {^(\s*?)([a-zA-Z0-9\-_\.]+)\s+=\s+(.+?)(\s*$|--)} $line match indent varName varValue lineEnd}
# -------------------------------------------------
dict set lexers ALL varDirectory {variables vars group_vars host_vars defaults}

View File

@@ -118,6 +118,8 @@ proc GetViewMenu {m} {
-variable cfgVariables(procedureHelper) -onvalue true -offvalue false
# -command "ViewHelper procedureHelper"
$m add checkbutton -label [::msgcat::mc "Multiline comments"] \
-variable cfgVariables(multilineComments) -onvalue true -offvalue false
}
proc GetHelpMenu {m} {

View File

@@ -124,6 +124,7 @@
::msgcat::mcset ru "Matches" "Совпадений"
::msgcat::mcset ru "Modules" "Модули"
::msgcat::mcset ru "Modifying the Registry..." "Внесение изменений в реестр"
::msgcat::mcset ru "Multiline comments" "Многострочные комментарии"
::msgcat::mcset ru "Must be one file select!" "Вы должны выбрать только один файл"
::msgcat::mcset ru "Must be one or two file select!" "Вы должны выбрать один или два файла"
::msgcat::mcset ru "Network" "Сеть"

View File

@@ -239,6 +239,7 @@ proc FindImage {ext} {
JP2
ICO
XPM
SVG
}
foreach img [image names] {
if [regexp -nocase -all -- "^($ext)(_16x12)" $img match v1 v2] {

View File

@@ -9,8 +9,8 @@ exec wish "$0" -- "$@"
# Home page: https://nuk-svk.ru
######################################################
# Version: 2.0.0
# Release: alpha
# Build: 08122022143741
# Release: alpha16
# Build: 22082024151054
######################################################
# определим текущую версию, релиз и т.д.
@@ -34,12 +34,6 @@ while {[gets $f line] >=0} {
}
close $f
if { $::argc > 0 } {
foreach arg $::argv {
lappend opened $arg
}
puts $opened
}
package require msgcat
package require inifile
@@ -53,6 +47,15 @@ package require fileutil::magic::filetype
set dir(root) [pwd]
set dir(doc) [file join $dir(root) doc]
# ДОбавляем в список файлы (каталоги) из командной строки
if { $::argc > 0 } {
foreach arg $::argv {
lappend opened $arg
}
puts $opened
}
# Устанавливаем рабочий каталог, если его нет то создаём.
# Согласно спецификации XDG проверяем наличие переменных и каталогов
if [info exists env(XDG_CONFIG_HOME)] {
@@ -111,11 +114,10 @@ source [file join $dir(lib) gui.tcl]
# Open the PATH if command line argument has been setting
if [info exists opened] {
# puts ">$opened"
foreach path $opened {
# Приводим путь к полному виду
if {[file pathtype $path] ne "absolute"} {
puts "\n\t[::msgcat::mc "Specify the absolute path to the directory or file"]: $path\n"
exit
set path [file normalize $path]
}
if [file isdirectory $path] {
# set activeProject $path