Compare commits
102 Commits
cb6cefd8ac
...
tcltk9.0
| Author | SHA1 | Date | |
|---|---|---|---|
| df1d9aa36d | |||
| cff798a9f1 | |||
| 64287f1a01 | |||
| 5e1c057bc5 | |||
| ab740f0be8 | |||
| 4c6713b2d3 | |||
| dc5fd60c0d | |||
| c3848566df | |||
| 961d597032 | |||
| 5d70d508cd | |||
| 8619e3e1f4 | |||
| 8834c0954e | |||
| 4e67dbfccf | |||
| e5b0468a44 | |||
| a9ac54ce54 | |||
| 297d0f7420 | |||
| 9b083515ba | |||
| 722bbc4e30 | |||
| bdb9b2db00 | |||
| 22bdd7b87e | |||
| 430f7d6607 | |||
|
|
f54333f942 | ||
|
|
f6a1b440f7 | ||
|
|
9b69e94412 | ||
|
|
8a1145a2d9 | ||
|
|
a78ab384ad | ||
|
|
b04e62434a | ||
|
|
439993091f | ||
|
|
7524a58f26 | ||
|
|
a6a220eb5a | ||
| 53869b8fe4 | |||
| 6854093ee1 | |||
| 202f8d3d82 | |||
| 7afdd33c58 | |||
| 74e288d596 | |||
| 17636c13e3 | |||
| 7d0c5796e5 | |||
| 79c2e6f1dc | |||
| 2024aa86ba | |||
| cb5c21c077 | |||
| 6b5d116743 | |||
| 6fc78c75b3 | |||
| 4a3394183f | |||
|
|
e1db775b3b | ||
|
|
42349a4701 | ||
|
|
f6bbc530bb | ||
|
|
c9e804b614 | ||
|
|
4bf10a1d30 | ||
|
|
f68cd75600 | ||
| 9ad7523e7c | |||
| ea988f6b8d | |||
| 23de123a0b | |||
| b287ee5551 | |||
| dc9837b7c2 | |||
| 2caba8db1a | |||
| 299638b1f8 | |||
| 56e7168d8e | |||
| b0a3292d9f | |||
| 93dd90e355 | |||
| aff70dd8b7 | |||
| dea2ff0023 | |||
| 6361043c25 | |||
| 4f8e7e306d | |||
| b42977f416 | |||
| 78c5f3784b | |||
| 65c4213836 | |||
| 993c1f7e3e | |||
| 29bdac41fe | |||
| ad3aac9b4b | |||
| 2e36bbc100 | |||
| 190ec5200f | |||
| b495161d81 | |||
| faeeef6048 | |||
| 8e496cb6bd | |||
| cfb29d6038 | |||
| 6051f6821a | |||
|
|
6f99707fd7 | ||
|
|
d17aef0878 | ||
|
|
397117e770 | ||
|
|
09d8a06f9e | ||
| 72abc2b84f | |||
| 8bd48159d6 | |||
| 61f2bca699 | |||
| 55fe5c3023 | |||
| d04d419548 | |||
| bc56f02a35 | |||
| 791a4c59a3 | |||
| f21e750967 | |||
|
|
3ee60f48c3 | ||
|
|
496514649a | ||
| 336a05cd61 | |||
|
|
06c6205177 | ||
|
|
6180a35718 | ||
| 0b92e4a1f0 | |||
| 87ae490b94 | |||
|
|
005f832b7a | ||
|
|
9b2477c954 | ||
|
|
2328090962 | ||
|
|
9d86d26b2b | ||
|
|
a7af815ce4 | ||
|
|
b6afcc4c5f | ||
|
|
8de8ec16be |
25
.drone.yml
25
.drone.yml
@@ -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
|
|
||||||
|
|
||||||
17
.gitea/workflows/build.yml
Normal file
17
.gitea/workflows/build.yml
Normal 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 }}."
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -4,3 +4,7 @@ debian/update-desktop-database
|
|||||||
debian/projman.substvars
|
debian/projman.substvars
|
||||||
debian/files
|
debian/files
|
||||||
debian/projman.debhelper.log
|
debian/projman.debhelper.log
|
||||||
|
debian/*.tmp
|
||||||
|
debian/errors
|
||||||
|
*.tmp
|
||||||
|
errors
|
||||||
432
CHANGELOG
432
CHANGELOG
@@ -1,136 +1,350 @@
|
|||||||
######################################################
|
projman (2.0.0-alfa16)
|
||||||
# Tcl/Tk Project manager 2.0
|
|
||||||
# Distributed under GNU Public License
|
|
||||||
# Author: Sergey Kalinin svk@nuk-svl.ru
|
|
||||||
# Home page: https://nuk-svk.ru
|
|
||||||
######################################################
|
|
||||||
|
|
||||||
20/06/2022
|
Sergey Kalinin <svk@nuk-svk.ru> Thu, 22 Aug 2024 15:09:19 +0300
|
||||||
- Beginning the project
|
- changelog-gen.tcl: Добавлена генерация текстового журнала изменений
|
||||||
|
- build-deb-projman.sh: добавлена генерация changelog из git log
|
||||||
|
- changelog-gen.tcl: Вывод в файл вынесен в отдельную процедуру
|
||||||
|
- changelog-gen.tcl: Добавлено создание резервной копии выходного файла. Исправлен вывод в файл.
|
||||||
|
- changelog-gen.tcl: Добавлены опции командной строки
|
||||||
|
- Добавлен запуск changelog-gen при сборке пакета
|
||||||
|
- Добавлено чстение журнала начиная с определенной даты
|
||||||
|
- Новая сборка
|
||||||
|
|
||||||
13/07/2022
|
Sergey Kalinin <svkalinin@samsonpost.ru> Tue, 20 Aug 2024 13:30:43 +0300
|
||||||
- Added open file dialog
|
- Генерация списка изменений для debian приведена к корректному виду
|
||||||
- Added open folder dialog
|
- Генерация списка изменений для debian приведена к корректному виду
|
||||||
- Added save file function
|
- Исправлен фокус при создании нового файла. #3
|
||||||
- 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
|
|
||||||
|
|
||||||
14/07/2022
|
Калинин Сергей Валерьевич <svkalinin@samsonpost.ru> Wed, 17 Jul 2024 12:28:30 +0300
|
||||||
- Added On/Off viewing toolbar
|
- Исправлена неправильная замена выражение при поиске
|
||||||
- Added On/Off viewing line numbers bar
|
- Исправлена неправильная замена выражение при поиске
|
||||||
- Added a Comment/Uncomment text support
|
- Реализовал базовые функции генератора журнала изменений
|
||||||
- Added text auto format
|
|
||||||
|
|
||||||
15/07/2022
|
svk <svkalinin@samsonpost.ru> Mon, 24 Jun 2024 10:15:38 +0300
|
||||||
- Added a close file (tab) function with Ctrl+w
|
- Добавлена иконка для jinja template
|
||||||
- Added a insert/remove the tabspace
|
- Исправил остатки слияния веток
|
||||||
- Fixed comment/uncomment selected text
|
- Исправлено некорректное определение типа файла при открытии.
|
||||||
|
|
||||||
20/07/2022
|
<svk@nuk-svk.ru> Mon, 30 Oct 2023 09:46:02 +0300
|
||||||
- Fixed indent text
|
- Gitea actions add
|
||||||
- Fixed insert " and '
|
|
||||||
- Added a main window geometry option into config, and autosave current geometry
|
|
||||||
|
|
||||||
21/07/2022
|
svk <svkalinin@samsonpost.ru> Thu, 27 Jul 2023 13:04:32 +0300
|
||||||
- Added Save file dialog before tab was closed
|
- Merge branch 'master' of https://git.nuk-svk.ru/svk/projman
|
||||||
- Added Save file dialog when exiting, if file was modify
|
- Исправил открытие файлов с разными путями (~/ ./ ../)
|
||||||
|
|
||||||
22/07/2022
|
svkalinin <svk@nuk-svk.ru> Thu, 23 Feb 2023 13:46:56 +0300
|
||||||
- Added GO highlight
|
- Добавил изображений программы
|
||||||
|
|
||||||
27/07/2022
|
svk <svkalinin@samsonpost.ru> Mon, 6 Feb 2023 09:27:38 +0300
|
||||||
- Fixed comment/uncomment procedure (last line in selected text)
|
- Исправлена ошибка при создании нового файла.
|
||||||
- Fixed error with save new (untitled) file
|
|
||||||
|
|
||||||
01/08/2022
|
svk <svkalinin@samsonpost.ru> Wed, 21 Dec 2022 16:53:44 +0300
|
||||||
- Added inserting base64 encoded image
|
- Добавил пиктограммы файлов
|
||||||
- Added read the file structure and inserting into tree
|
- Исправил процедуру Files::CloseAll ('Закрыть всё')
|
||||||
- Added GUI font, and GUI foreground color setting
|
- Добавлена поддержка Lua
|
||||||
- Added tcl and go files images
|
- Исправлена процедура (рас)комментирования
|
||||||
- Added image for file type (extention)
|
- Исправил ошибку при выходе в процедуре (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'.
|
||||||
|
- Добавлены настройки для системной команды поиска в фвайлах
|
||||||
|
- Добавлено рекурсивное чтение каталога при открытии. Диалог поиска теперь работает раздельно при разделении окна. Диалог навигации по функци так-же работает раздельно
|
||||||
|
- Добавлены ключевые слова для подстветки питона
|
||||||
|
- Добавлена проверка на отсутствие файла и удаление из дерева
|
||||||
|
|
||||||
03/08/2022
|
svkalinin <svk@nuk-svk.ru> Sun, 18 Sep 2022 10:46:59 +0300
|
||||||
- Added some files icon
|
- Добавлен поиск переменной в тексте после открытия файла где она указана
|
||||||
- Fix finded procedure (function) (tree click)
|
- Исправлена ошибка при запуске
|
||||||
- Fix showing position in statusbar
|
|
||||||
|
|
||||||
12/08/2022
|
Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 16 Sep 2022 16:37:17 +0300
|
||||||
- Fixed comment/uncomment procedure depending on the file type
|
- Новая сборка
|
||||||
- Added About dialog
|
- Исправил сохранение открытого каталога в настройках
|
||||||
- Fixed read structure (procedure names like Proc:Name)
|
- Рефакторинг
|
||||||
|
- Переделал дилог навигации по переменным
|
||||||
|
- Добавлен еще один каталог с переменными - default
|
||||||
|
- Добавлено сохранение состояния редактора (открытые каталоги
|
||||||
|
- Изменения в диалоге поиска
|
||||||
|
- Отображение горизонтальной полосы прокрутки в зависимости от переноса строк в редакторе
|
||||||
|
- Установка фокуса на текст в редакторе при щелчке на заголовок вкладки
|
||||||
|
- Сделал перемещение курсора в такуюже позицию в тексте при разделении окна редактора
|
||||||
|
- Добавлено горизонтальное разделение окна редактора. Исправлено удаление строки по Alt+R - реперь строка удаляется полностью вместе с символами переноса. Исправлено сохранение нового файла (untitled) но всеравно как-то криво.
|
||||||
|
- Изменения по чтению и отображению переменных по файлам. Причесал диалог
|
||||||
|
|
||||||
15/08/2022
|
Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 2 Sep 2022 17:01:53 +0300
|
||||||
- Added open/close braces highlight
|
- Добавил поддержку ruby
|
||||||
- Fixed GO structure reader
|
- Исправлен выход окна со списком функций за пределы экрана. Поиск и замена теперь работает. Добавлены некоторые иконки для файлов
|
||||||
|
- Начало реализации процедуры поиска и замены (поиск криво но работает)
|
||||||
|
- Исправлено закерытие вкладки по щелчку мыши. Добавлена настройка переноса строк в редакторе. Добавлены сочетания клавиш ctrl+pgup cntrl+pgdown для переключения между вкладками редактора. Добавлен диалог закрытия папки (каталога)
|
||||||
|
- Укоротил имя корневого каталога в дереве
|
||||||
|
- Добавлены ключиевые слова GO
|
||||||
|
- Исправлена подсветка ключевых слов tcl и добавлены виджеты
|
||||||
|
- Исправлена некорректная установка иконки на каталог
|
||||||
|
- Добавлены горячие клавиши для удаления слова
|
||||||
|
- Добавлены сочетания клавиш для удаления слова
|
||||||
|
|
||||||
16/08/2022
|
svkalinin <svk@nuk-svk.ru> Fri, 26 Aug 2022 12:36:14 +0300
|
||||||
- Added selection of all words in the text by clicking on the any word
|
- Изменил(а) на 'README.md'
|
||||||
|
|
||||||
17/08/2022
|
svk <svkalinin@samsonpost.ru> Fri, 26 Aug 2022 12:29:19 +0300
|
||||||
- Added "Vew Panel" menu and "Panel side" (left/right)
|
- Добавлена поддержка python. Обновлена библиотека иконок.
|
||||||
- Changed standard Tk menu on TTK::menu
|
- Исправлена установка фокуса на окно диалога GotoFunctionDialog и обратно на текст. Переделан механизм чтения структуры файла и добавлены команды для sh (bash)
|
||||||
- Added config options filesPanelPlace (left/right)
|
- Добавлены настройки темы для диалога навигации по функциям
|
||||||
- Fixed ViewFilesTree procedure with rigth variable filesPanelShow (true/false)
|
- Добавлена иконка shell (*.sh)
|
||||||
|
- Исправлено комментирование строк
|
||||||
|
- Добавлен диалог навигации по структуре (процедурам) по Ctrl+F. Исправлена ошибка при закрытии файлов (функции из дерева теперь удаляются).
|
||||||
|
- Добавил цвет фона для панели с номерами строк
|
||||||
|
|
||||||
22/08/2022
|
svkalinin <svk@nuk-svk.ru> Wed, 17 Aug 2022 21:37:06 +0300
|
||||||
- Fixed clicking on proc or func names into tree if file was closed
|
- Убрал доки по tcl
|
||||||
|
- Слегка поменял стиль оформления
|
||||||
|
|
||||||
23/08/2022
|
Sergey Kalinin <svkalinin@samsonpost.ru> Wed, 17 Aug 2022 16:52:22 +0300
|
||||||
- Added procedure and function navigation window by Ctrl+j pressed on editor
|
- Добавлен выбор расположения боковой панели
|
||||||
- Fixed correctly focused on editor text widget
|
- Добавлено выделение всех слов в тексте по двойному щелчку мышой на любом слове
|
||||||
|
- Исправлено чтение структуры GO файлов: корректное отображение в дереве функций возвращающих значения разных типов
|
||||||
|
- Добавлена подсветка скобок
|
||||||
|
- Новая сборка
|
||||||
|
- Исправлены процедуры comment/uncomment
|
||||||
|
- Изменены имена переенных
|
||||||
|
- Изменены имена переменных
|
||||||
|
- Добавлена запись номера сборки (build) в исходник
|
||||||
|
- Добавлено меню Помощь -> О программе. Добавлено окно 'О программе'
|
||||||
|
- Исправлен поиск процедуры в тексте по клику в дереве
|
||||||
|
- Исправлен поиск процедуры в тексте по клику в дереве. Исправлено отображение позиции курсора в строке статуса
|
||||||
|
- ДОбавлены иконки для некоторых типов файлов
|
||||||
|
- Добавлено отображение структуры исходника в дереве (функции (go) и процедуры (tcl))
|
||||||
|
- Добавлено кодирование изображения в base64 и вставка в редактируемый текст
|
||||||
|
- Добавлены шрифт и цвет шриыта для общего интерфейса
|
||||||
|
- Исправлено комментирование выделенного фрагмента (последняя строка) Исправлено закрытие untitled вкладок
|
||||||
|
- Исправлено комментирование выделенных строк
|
||||||
|
- Добавлена подсветка для GO
|
||||||
|
- Исправлено подключение требуемой процедуры подсветки
|
||||||
|
- Убрал вставку закрывающихся кавычек в пустой строке. Ибо пока глючит.
|
||||||
|
- Добавлен диалог сохранения файла при закрытии вкладки редактора и при выходе из программы если есть несохраненные файлы
|
||||||
|
- Исправлен рабочий каталог
|
||||||
|
- Добавлены переводы для диалога
|
||||||
|
- Исправлен скрипт сборки пакета для Debian
|
||||||
|
- Исправил скрипт сборки пакета. Добавил .gitignore
|
||||||
|
|
||||||
24/08/2022
|
svkalinin <svk@nuk-svk.ru> Thu, 21 Jul 2022 12:18:29 +0300
|
||||||
- Fixed ReadStructure procedure (added lexer)
|
- Изменил(а) на 'README.md'
|
||||||
|
|
||||||
25/08/2022
|
svk <svkalinin@samsonpost.ru> Thu, 21 Jul 2022 12:15:19 +0300
|
||||||
- Fixed focus on the editor window after clicking Escape in the function selection dialog
|
- Change readme
|
||||||
- Change color scheme for FindFunction dialog
|
- Added Dark theme
|
||||||
- Added sh icon (for shell scripts)
|
- New version of ProjMan
|
||||||
- Fixed lexers for find procedures and functions
|
- Some changes into GUI (tabs)
|
||||||
|
|
||||||
26/08/2022
|
svkalinin <banzaj28@yandex.ru> Thu, 5 Jul 2018 08:41:18 +0300
|
||||||
- Update image library (added some icons)
|
- Fixed error if file was not select
|
||||||
- Added hot keys:
|
- README.md отредактирован онлайн на Bitbucket
|
||||||
- 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
|
|
||||||
|
|
||||||
30/08/2022
|
Sergey Kalinin <banzaj28@yandex.ru> Sat, 24 Mar 2018 12:20:27 +0300
|
||||||
- Fix the clicked by the close button on a tab
|
- Rename readme
|
||||||
- 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
|
|
||||||
|
|
||||||
01/09/2022
|
Sergey <banzaj28@yandex.ru> Sat, 24 Mar 2018 12:17:09 +0300
|
||||||
- Added search function name into Function navigation whem press key
|
- README отредактирован онлайн на Bitbucket
|
||||||
- Added find and replace dialog
|
- Added sort procedure for projects tree
|
||||||
- Fixed correct placement the Function dialog
|
- 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
|
||||||
|
|
||||||
14/09/2022
|
Sergey Kalinin <banzaj28@yandex.ru> Sat, 24 Feb 2018 18:16:01 +0300
|
||||||
- Added procedure for the horizontal split a text window
|
- Critical bug fixed with create project
|
||||||
- Fixed untitled file saved
|
- Refactoring all procedures is the Tree working
|
||||||
- Fixed Alt+R (delete row), now will are deleted row with a "\n\r" symbols
|
|
||||||
|
|
||||||
20/10/200
|
Sergey <svk@s.kalinin-nb> Sat, 24 Feb 2018 12:22:08 +0300
|
||||||
- Added Git support: add and commit changes, show git log, show each commit...
|
- Fixed Add new file if name was existing into tree
|
||||||
|
|
||||||
11/11/2022
|
svk <banzaj28@yandex.ru> Fri, 23 Feb 2018 11:58:39 +0300
|
||||||
- Added GoTo Line dialog
|
- Rename archive projman-latest
|
||||||
- Fixed Git commit procedure
|
- Fixed AddToProj procedure for file browser tree Disable OpComplite procedure
|
||||||
- Added variable and procedure helper
|
- 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
|
||||||
|
|
||||||
18/11/2022
|
Sergey Kalinin <svk@kalinin.carfix> Mon, 22 Jan 2018 17:54:18 +0300
|
||||||
- Add Refresh button into Git Dialog
|
- - Remove ctags support - Added gitk (gui for git) support
|
||||||
- Fixed FindFunction
|
- Change version into Install.tcl script
|
||||||
|
|
||||||
07/12/2022
|
svk <svk@l0001h.office> Fri, 12 Jan 2018 13:44:26 +0300
|
||||||
- Added Perl language support
|
- README отредактирован онлайн на Bitbucket
|
||||||
- Added INI-files support
|
- test.tcl deleted online with Bitbucket
|
||||||
- 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 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
|
||||||
|
|||||||
9
INSTALL
9
INSTALL
@@ -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
|
|
||||||
######################################################
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
58
README.md
58
README.md
@@ -29,10 +29,60 @@ For UNIX-like OS
|
|||||||
Tcl/Tk >= 8.6 http://tcl.tk
|
Tcl/Tk >= 8.6 http://tcl.tk
|
||||||
tcllib, tklib
|
tcllib, tklib
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|
- Navigation the source code structure, and syntax highlighting
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
- Hints when entering names of variables and procedures
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- Searching for a variable definition in ansible files
|
||||||
|
- Navigation the ansible source code structure
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- Navigation the markdown source code structure
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- Git dialog (commit history)
|
||||||
|
- Git dialog (changes)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- Flexible interface configuration
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- Find/Replace dialog
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- Global searching dialog
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- A pseudo-terminal for launching the edited file and other command
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- Image viewer
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
## Getting source code
|
## 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:
|
Or use git:
|
||||||
|
|
||||||
@@ -81,7 +131,6 @@ Or type "projman" into terminal, Or choose the name of the program "Projman" on
|
|||||||
- Ctrl-N - Create new file
|
- Ctrl-N - Create new file
|
||||||
- Ctrl-O - Open file
|
- Ctrl-O - Open file
|
||||||
- Ctrl-W - Close editor (file)
|
- Ctrl-W - Close editor (file)
|
||||||
- Ctrl-K - Open folder
|
|
||||||
- Ctrl-Q - Quit from ProjMan
|
- Ctrl-Q - Quit from ProjMan
|
||||||
- Ctrl-J - Show procedures (functions) list for navigation in open editor
|
- Ctrl-J - Show procedures (functions) list for navigation in open editor
|
||||||
- Ctrl-L - Find and display files where the variable is defined, the name of which is located under the cursor in the editor
|
- Ctrl-L - Find and display files where the variable is defined, the name of which is located under the cursor in the editor
|
||||||
@@ -95,6 +144,10 @@ Or type "projman" into terminal, Or choose the name of the program "Projman" on
|
|||||||
- Ctrl-G - Go to line dialog
|
- Ctrl-G - Go to line dialog
|
||||||
- Ctrl-C - Copy selected text into buffer
|
- Ctrl-C - Copy selected text into buffer
|
||||||
- Ctrl-V - Paste text from buffer
|
- Ctrl-V - Paste text from buffer
|
||||||
|
- Ctrl-R - Open terminal for edited file
|
||||||
|
- Ctrl-Z - Send SIGTSTP signal
|
||||||
|
- Ctrl-D - Send SIGINT signal
|
||||||
|
- Ctrl-C - Send SIGKILL signal
|
||||||
|
|
||||||
- Alt-P - Show/Hide the file tree panel
|
- Alt-P - Show/Hide the file tree panel
|
||||||
- Alt-W - Delete the current word
|
- Alt-W - Delete the current word
|
||||||
@@ -103,6 +156,7 @@ Or type "projman" into terminal, Or choose the name of the program "Projman" on
|
|||||||
- Alt-R - Delete current line
|
- Alt-R - Delete current line
|
||||||
- Alt-Y - Copy current line into buffer
|
- Alt-Y - Copy current line into buffer
|
||||||
- Alt-S - Split the edited window horizontally
|
- Alt-S - Split the edited window horizontally
|
||||||
|
- Alt-K - Open folder
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
|
|||||||
5
TODO
5
TODO
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
--- Ansible ---
|
--- Ansible ---
|
||||||
1. Определение всех переменных в отдельный список
|
1. Определение всех переменных в отдельный список
|
||||||
- внутри файла, конструкции вида:
|
- внутри файла, конструкции вида:
|
||||||
set_fact:
|
set_fact:
|
||||||
varName: value
|
varName: value
|
||||||
set_fact varName value
|
set_fact varName value
|
||||||
@@ -18,5 +18,4 @@
|
|||||||
- var1.yml
|
- var1.yml
|
||||||
- var2.yml
|
- var2.yml
|
||||||
|
|
||||||
3. Если используется роль и переменная не найдена в плэйбуке то искать в роли (не факт что требуется)
|
3. Если используется роль и переменная не найдена в плэйбуке
|
||||||
|
|
||||||
|
|||||||
336
changelog-gen.tcl
Executable file
336
changelog-gen.tcl
Executable file
@@ -0,0 +1,336 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Tcl ignores the next line -*- tcl -*- \
|
||||||
|
exec tclsh8.6 "$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
|
||||||
|
}
|
||||||
|
}
|
||||||
6
debian/build-deb-projman.sh
vendored
6
debian/build-deb-projman.sh
vendored
@@ -10,7 +10,9 @@ echo "$VERSION, $RELEASE, $BUILD_DATE"
|
|||||||
sed -i "/# Build:.*/c$TXT" projman.tcl
|
sed -i "/# Build:.*/c$TXT" projman.tcl
|
||||||
|
|
||||||
cp projman.tcl projman
|
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
|
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 .
|
tar czf ../projman_${VERSION}.orig.tar.gz .
|
||||||
|
|
||||||
dpkg-buildpackage
|
dpkg-buildpackage -d
|
||||||
|
|
||||||
#cp ../projman_${VERSION}-${RELEASE}_amd64.deb /files/
|
#cp ../projman_${VERSION}-${RELEASE}_amd64.deb /files/
|
||||||
|
|
||||||
rm -v projman
|
rm -v projman changelog-gen
|
||||||
rm -r -v debian/{projman,.debhelper}
|
rm -r -v debian/{projman,.debhelper}
|
||||||
|
|||||||
397
debian/changelog
vendored
397
debian/changelog
vendored
@@ -1,5 +1,396 @@
|
|||||||
projman (2.0.0-alpha) stable; urgency=medium
|
projman (2.0.0-alpha19) stable; urgency=medium
|
||||||
|
|
||||||
|
* Небольшие исправления
|
||||||
|
|
||||||
|
-- Sergey Kalinin <svk@nuk-svk.ru> Thu, 30 Oct 2025 14:47:05 +0300
|
||||||
|
|
||||||
|
projman (2.0.0-alpha19) stable; urgency=medium
|
||||||
|
|
||||||
|
* Добавлен перевод фокуса ввода на прежнее окно после закрытия диалога выполнения.
|
||||||
|
* Добавлена передача сигналов для закрытия запущенного процесса
|
||||||
|
* Изменил виджет текста в окне псевдо-терминала. Добавил подстановку имени файла к командную строку по шаблону %f
|
||||||
|
* Добавлен диалог настроек
|
||||||
|
* Добавил псевдо-терминал
|
||||||
|
* Добавлен диалог при открытии файлов отличных от текстовых
|
||||||
|
* Добавлен просмотр файлов изображений (png, bmp, gif, ppm, pgm)
|
||||||
|
* Исправлена процедура опреления типа файла
|
||||||
|
* Добавлены диалоги для подтверждения открытия больших файлов, и двоичных файлов.
|
||||||
|
|
||||||
|
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 29 Oct 2025 13:10:31 +0300
|
||||||
|
|
||||||
|
projman (2.0.0-alpha18) stable; urgency=medium
|
||||||
|
|
||||||
|
* Поправил тему оформления
|
||||||
|
* Исправлена работа в windows
|
||||||
|
* Уменьшил количество выводимой отладочной информации
|
||||||
|
* Добавлено определение пути до git в зависимости от платформы.
|
||||||
|
* Исправлено создание файла конфигурации
|
||||||
|
* Добавлены номера версий в вызов tclsh8.6 и wish8.6.
|
||||||
|
* Убрана зависимость на Threads.
|
||||||
|
* Исправлено чтение структуры проекта при открытии из меню 'Открыть недавнее'
|
||||||
|
* Исправление работы процедуры varhelper
|
||||||
|
|
||||||
|
-- Sergey Kalinin <svk@nuk-svk.ru> Mon, 27 Oct 2025 14:05:40 +0300
|
||||||
|
|
||||||
|
projman (2.0.0-alpha17) stable; urgency=medium
|
||||||
|
|
||||||
|
* Added the "Open Recent" menu.
|
||||||
|
* The "recentlyEditedFolders" option in the configuration file contains a list of recently opened directories.
|
||||||
|
* The procedures for working with this list have also been added.
|
||||||
|
* Новая сборка
|
||||||
|
|
||||||
|
-- svk <svk@nuk-svk.ru> Sat, 18 Oct 2025 16:29:50 +0300
|
||||||
|
|
||||||
|
projman (2.0.0-alpha17) stable; urgency=medium
|
||||||
|
|
||||||
|
* Косметические изменения.
|
||||||
|
* Исправлены ошибки при вставке кавычек
|
||||||
|
* Обновить README.md
|
||||||
|
|
||||||
|
-- svk <svk@nuk-svk.ru> Thu, 31 Oct 2024 19:48:30 +0300
|
||||||
|
|
||||||
|
projman (2.0.0-alpha16) stable; urgency=medium
|
||||||
|
|
||||||
|
* 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Initial release
|
|
||||||
|
|
||||||
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 20 Jul 2022 16:56:31 +0300
|
|
||||||
|
|||||||
1
debian/install
vendored
1
debian/install
vendored
@@ -1,4 +1,5 @@
|
|||||||
projman /usr/bin/
|
projman /usr/bin/
|
||||||
|
changelog-gen /usr/bin/
|
||||||
lib/*.tcl /usr/share/projman/lib
|
lib/*.tcl /usr/share/projman/lib
|
||||||
lib/msgs/* /usr/share/projman/lib/msgs
|
lib/msgs/* /usr/share/projman/lib/msgs
|
||||||
theme /usr/share/projman/
|
theme /usr/share/projman/
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ set ::configDefault "\[General\]
|
|||||||
cfgModifyDate=''
|
cfgModifyDate=''
|
||||||
searchCommand=/usr/bin/grep
|
searchCommand=/usr/bin/grep
|
||||||
searchCommandOptions=-r -n -H
|
searchCommandOptions=-r -n -H
|
||||||
gitCommand=/usr/bin/git
|
gitCommand=
|
||||||
# must return a mime type of file
|
# must return a mime type of file
|
||||||
fileTypeCommand=/usr/bin/file
|
fileTypeCommand=/usr/bin/file
|
||||||
fileTypeCommandOptions=-i -b
|
fileTypeCommandOptions=-i -b
|
||||||
@@ -37,7 +37,7 @@ menuShow=true
|
|||||||
statusBarShow=true
|
statusBarShow=true
|
||||||
filesPanelShow=true
|
filesPanelShow=true
|
||||||
filesPanelPlace=left
|
filesPanelPlace=left
|
||||||
geometry=1024x768
|
geometry=800x600
|
||||||
guiFont={Droid Sans Mono} 9
|
guiFont={Droid Sans Mono} 9
|
||||||
guiFontBold={Droid Sans Mono} 9 bold
|
guiFontBold={Droid Sans Mono} 9 bold
|
||||||
guiFG=#cccccc
|
guiFG=#cccccc
|
||||||
@@ -64,6 +64,7 @@ multilineComments=true
|
|||||||
\[UserSession\]
|
\[UserSession\]
|
||||||
opened=
|
opened=
|
||||||
editedFiles=
|
editedFiles=
|
||||||
|
recentFolder=
|
||||||
"
|
"
|
||||||
proc Config::create {dir} {
|
proc Config::create {dir} {
|
||||||
set cfgFile [open [file join $dir projman.ini] "w+"]
|
set cfgFile [open [file join $dir projman.ini] "w+"]
|
||||||
|
|||||||
140
lib/editor.tcl
140
lib/editor.tcl
@@ -94,7 +94,7 @@ namespace eval Editor {
|
|||||||
# }
|
# }
|
||||||
set commentProcedure "GetComment"
|
set commentProcedure "GetComment"
|
||||||
|
|
||||||
puts "$fileType, $commentProcedure"
|
# puts "$fileType, $commentProcedure"
|
||||||
if {$selIndex != ""} {
|
if {$selIndex != ""} {
|
||||||
set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
|
set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
|
||||||
set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
|
set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
|
||||||
@@ -140,10 +140,10 @@ namespace eval Editor {
|
|||||||
|
|
||||||
set cmd "regexp -nocase -indices -- {(^|\s+)\\s*($symbol\\s*)(.*)} {$str} match v1 v2 v3"
|
set cmd "regexp -nocase -indices -- {(^|\s+)\\s*($symbol\\s*)(.*)} {$str} match v1 v2 v3"
|
||||||
|
|
||||||
puts $cmd
|
# puts $cmd
|
||||||
# puts [eval $cmd]
|
# puts [eval $cmd]
|
||||||
if [eval $cmd] {
|
if [eval $cmd] {
|
||||||
puts "$match, $v2, $v3"
|
# puts "$match, $v2, $v3"
|
||||||
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
||||||
} else {
|
} else {
|
||||||
return 0
|
return 0
|
||||||
@@ -253,7 +253,7 @@ namespace eval Editor {
|
|||||||
$txt highlight $lineBegin.0 $lineEnd.end
|
$txt highlight $lineBegin.0 $lineEnd.end
|
||||||
} else {
|
} else {
|
||||||
set str [$txt get $lineNum.0 $lineNum.end]
|
set str [$txt get $lineNum.0 $lineNum.end]
|
||||||
puts ">>>>> $str"
|
# puts ">>>>> $str"
|
||||||
if {[regexp -nocase -indices -- {(^\s*)(.*?)} $str match v1]} {
|
if {[regexp -nocase -indices -- {(^\s*)(.*?)} $str match v1]} {
|
||||||
set posBegin [lindex [split $v1] 0]
|
set posBegin [lindex [split $v1] 0]
|
||||||
set posEnd [lindex [split $v1] 1]
|
set posEnd [lindex [split $v1] 1]
|
||||||
@@ -277,7 +277,7 @@ namespace eval Editor {
|
|||||||
set pos [$txt index insert]
|
set pos [$txt index insert]
|
||||||
set lineNum [lindex [split $pos "."] 0]
|
set lineNum [lindex [split $pos "."] 0]
|
||||||
set posNum [lindex [split $pos "."] 1]
|
set posNum [lindex [split $pos "."] 1]
|
||||||
puts "$pos"
|
# puts "$pos"
|
||||||
if {$lineNum > 1} {
|
if {$lineNum > 1} {
|
||||||
# get current text
|
# get current text
|
||||||
set curText [$txt get $lineNum.0 "$lineNum.0 lineend"]
|
set curText [$txt get $lineNum.0 "$lineNum.0 lineend"]
|
||||||
@@ -398,7 +398,7 @@ namespace eval Editor {
|
|||||||
set win .varhelper
|
set win .varhelper
|
||||||
# if { [winfo exists $win] == 0 } { return }
|
# if { [winfo exists $win] == 0 } { return }
|
||||||
set ind [$win.lBox curselection]
|
set ind [$win.lBox curselection]
|
||||||
puts ">>>>>>>>>>>> VarHelperBind <<<<<<<<<<<<<<<<"
|
# puts ">>>>>>>>>>>> VarHelperBind <<<<<<<<<<<<<<<<"
|
||||||
|
|
||||||
switch -- $K {
|
switch -- $K {
|
||||||
Prior {
|
Prior {
|
||||||
@@ -443,7 +443,7 @@ namespace eval Editor {
|
|||||||
}
|
}
|
||||||
} ;# proc auto_completition_key
|
} ;# proc auto_completition_key
|
||||||
proc VarHelperEscape {w} {
|
proc VarHelperEscape {w} {
|
||||||
puts ">>>>>>>>>>>> VarHelperEscape <<<<<<<<<<<<<<<<"
|
# puts ">>>>>>>>>>>> VarHelperEscape <<<<<<<<<<<<<<<<"
|
||||||
# bindtags $w [list [winfo parent $w] $w Text sysAfter all]
|
# bindtags $w [list [winfo parent $w] $w Text sysAfter all]
|
||||||
bindtags $w [list [winfo toplevel $w] $w Ctext sysAfter all]
|
bindtags $w [list [winfo toplevel $w] $w Ctext sysAfter all]
|
||||||
catch { destroy .varhelper }
|
catch { destroy .varhelper }
|
||||||
@@ -459,7 +459,12 @@ namespace eval Editor {
|
|||||||
# блокировка открытия диалога если запущен другой
|
# блокировка открытия диалога если запущен другой
|
||||||
set txt $w
|
set txt $w
|
||||||
# set win .varhelper
|
# set win .varhelper
|
||||||
puts "$x $y $w $word $wordType"
|
# Проверяем если есть выделение то блокировать появление диалога
|
||||||
|
if {[$txt tag ranges sel] != ""} {
|
||||||
|
puts "You have selected text [$txt tag ranges sel]"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
# puts "$x $y $w $word $wordType"
|
||||||
set fileType [dict get $editors $txt fileType]
|
set fileType [dict get $editors $txt fileType]
|
||||||
|
|
||||||
if {[dict exists $editors $txt variableList] != 0} {
|
if {[dict exists $editors $txt variableList] != 0} {
|
||||||
@@ -575,6 +580,8 @@ namespace eval Editor {
|
|||||||
if { [set height [llength $findedVars]] > 10 } { set height 10 }
|
if { [set height [llength $findedVars]] > 10 } { set height 10 }
|
||||||
$win.lBox configure -height $height
|
$win.lBox configure -height $height
|
||||||
|
|
||||||
|
# focus $win.lBox
|
||||||
|
|
||||||
bind $win <Escape> {
|
bind $win <Escape> {
|
||||||
destroy $Editor::win
|
destroy $Editor::win
|
||||||
focus -force $Editor::txt.t
|
focus -force $Editor::txt.t
|
||||||
@@ -755,7 +762,7 @@ namespace eval Editor {
|
|||||||
}
|
}
|
||||||
## GET KEYS CODE ##
|
## GET KEYS CODE ##
|
||||||
proc Key {key str} {
|
proc Key {key str} {
|
||||||
puts "Pressed key code: $key, $str"
|
# puts "Pressed key code: $key, $str"
|
||||||
if {$key >= 10 && $key <= 22} {return "true"}
|
if {$key >= 10 && $key <= 22} {return "true"}
|
||||||
if {$key >= 24 && $key <= 36} {return "true"}
|
if {$key >= 24 && $key <= 36} {return "true"}
|
||||||
if {$key >= 38 && $key <= 50} {return "true"}
|
if {$key >= 38 && $key <= 50} {return "true"}
|
||||||
@@ -779,8 +786,11 @@ namespace eval Editor {
|
|||||||
bind $txt <Control-eacute> Quit
|
bind $txt <Control-eacute> Quit
|
||||||
bind $txt <Control-igrave> "Editor::SelectionPaste $txt"
|
bind $txt <Control-igrave> "Editor::SelectionPaste $txt"
|
||||||
bind $txt <Control-v> "Editor::SelectionPaste $txt"
|
bind $txt <Control-v> "Editor::SelectionPaste $txt"
|
||||||
|
bind $txt <Control-Cyrillic_em> "Editor::SelectionPaste $txt"
|
||||||
bind $txt <Control-l> "SearchVariable $txt; break"
|
bind $txt <Control-l> "SearchVariable $txt; break"
|
||||||
|
bind $txt <Control-Cyrillic_de> "SearchVariable $txt; break"
|
||||||
bind $txt <Control-i> "ImageBase64Encode $txt"
|
bind $txt <Control-i> "ImageBase64Encode $txt"
|
||||||
|
bind $txt <Control-Cyrillic_sha> "ImageBase64Encode $txt"
|
||||||
bind $txt <Control-bracketleft> "Editor::InsertTabular $txt"
|
bind $txt <Control-bracketleft> "Editor::InsertTabular $txt"
|
||||||
bind $txt <Control-bracketright> "Editor::DeleteTabular $txt"
|
bind $txt <Control-bracketright> "Editor::DeleteTabular $txt"
|
||||||
bind $txt <Control-comma> "Editor::Comment $txt $fileType"
|
bind $txt <Control-comma> "Editor::Comment $txt $fileType"
|
||||||
@@ -790,25 +800,35 @@ namespace eval Editor {
|
|||||||
bind $txt <ButtonRelease-1> "Editor::SearchBrackets $txt"
|
bind $txt <ButtonRelease-1> "Editor::SearchBrackets $txt"
|
||||||
bind $txt <Button-1><ButtonRelease-1> "Editor::SelectionHighlight $txt"
|
bind $txt <Button-1><ButtonRelease-1> "Editor::SelectionHighlight $txt"
|
||||||
bind $txt <<Modified>> "SetModifiedFlag $w $nb"
|
bind $txt <<Modified>> "SetModifiedFlag $w $nb"
|
||||||
bind $txt <Control-i> ImageBase64Encode
|
|
||||||
bind $txt <Control-u> "Editor::SearchBrackets %W"
|
bind $txt <Control-u> "Editor::SearchBrackets %W"
|
||||||
|
bind $txt <Control-Cyrillic_ghe> "Editor::SearchBrackets %W"
|
||||||
bind $txt <Control-J> "catch {Editor::GoToFunction $txt}"
|
bind $txt <Control-J> "catch {Editor::GoToFunction $txt}"
|
||||||
bind $txt <Control-j> "catch {Editor::GoToFunction $txt}; break"
|
bind $txt <Control-j> "catch {Editor::GoToFunction $txt}; break"
|
||||||
|
bind $txt <Control-Cyrillic_o> "catch {Editor::GoToFunction $txt}; break"
|
||||||
bind $txt <Alt-w> "$txt delete {insert wordstart} {insert wordend}"
|
bind $txt <Alt-w> "$txt delete {insert wordstart} {insert wordend}"
|
||||||
bind $txt <Alt-odiaeresis> "$txt delete {insert wordstart} {insert wordend}"
|
bind $txt <Alt-odiaeresis> "$txt delete {insert wordstart} {insert wordend}"
|
||||||
|
bind $txt <Alt-Cyrillic_tse> "$txt delete {insert wordstart} {insert wordend}"
|
||||||
bind $txt <Alt-r> "$txt delete {insert linestart} {insert lineend + 1char}"
|
bind $txt <Alt-r> "$txt delete {insert linestart} {insert lineend + 1char}"
|
||||||
bind $txt <Alt-ecircumflex> "$txt delete {insert linestart} {insert lineend + 1char}"
|
bind $txt <Alt-ecircumflex> "$txt delete {insert linestart} {insert lineend + 1char}"
|
||||||
|
bind $txt <Alt-Cyrillic_er> "$txt delete {insert linestart} {insert lineend + 1char}"
|
||||||
bind $txt <Alt-b> "$txt delete {insert linestart} insert"
|
bind $txt <Alt-b> "$txt delete {insert linestart} insert"
|
||||||
|
bind $txt <Alt-Cyrillic_i> "$txt delete {insert linestart} insert"
|
||||||
bind $txt <Alt-e> "$txt delete insert {insert lineend}"
|
bind $txt <Alt-e> "$txt delete insert {insert lineend}"
|
||||||
|
bind $txt <Alt-Cyrillic_u> "$txt delete insert {insert lineend}"
|
||||||
bind $txt <Alt-s> "Editor::SplitEditorH $w $fileType"
|
bind $txt <Alt-s> "Editor::SplitEditorH $w $fileType"
|
||||||
bind $txt <Alt-ucircumflex> "Editor::SplitEditorH $w $fileType"
|
bind $txt <Alt-ucircumflex> "Editor::SplitEditorH $w $fileType"
|
||||||
|
bind $txt <Alt-Cyrillic_hardsign> "Editor::SplitEditorH $w $fileType"
|
||||||
bind $txt <Alt-y> "Editor::TextCopy $txt"
|
bind $txt <Alt-y> "Editor::TextCopy $txt"
|
||||||
|
bind $txt <Alt-Cyrillic_en> "Editor::TextCopy $txt"
|
||||||
bind $txt <Control-g> "Editor::GoToLineNumberDialog $txt"
|
bind $txt <Control-g> "Editor::GoToLineNumberDialog $txt"
|
||||||
|
bind $txt <Control-Cyrillic_pe> "Editor::GoToLineNumberDialog $txt"
|
||||||
bind $txt <Control-agrave> "Editor::FindDialog $w"
|
bind $txt <Control-agrave> "Editor::FindDialog $w"
|
||||||
bind $txt <Control-f> "Editor::FindDialog $txt"
|
bind $txt <Control-f> "Editor::FindDialog $txt"
|
||||||
|
bind $txt <Control-Cyrillic_a> "Editor::FindDialog $txt"
|
||||||
bind $txt <Control-F> "Editor::FindDialog $txt"
|
bind $txt <Control-F> "Editor::FindDialog $txt"
|
||||||
bind $txt <Control-odiaeresis> FileOper::Close
|
bind $txt <Control-odiaeresis> FileOper::Close
|
||||||
bind $txt <Control-w> FileOper::Close
|
bind $txt <Control-w> FileOper::Close
|
||||||
|
bind $txt <Control-Cyrillic_tse> FileOper::Close
|
||||||
bind $txt <Control-o> {
|
bind $txt <Control-o> {
|
||||||
set filePath [FileOper::OpenDialog]
|
set filePath [FileOper::OpenDialog]
|
||||||
if {$filePath != ""} {
|
if {$filePath != ""} {
|
||||||
@@ -823,6 +843,16 @@ namespace eval Editor {
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
bind $txt <Control-Cyrillic_shcha> {
|
||||||
|
set filePath [FileOper::OpenDialog]
|
||||||
|
if {$filePath != ""} {
|
||||||
|
FileOper::Edit $filePath
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
bind $txt <Control-r> "Editor::SplitEditorForExecute $w $fileType $nb "
|
||||||
|
bind $txt <Control-Cyrillic_ka> "Editor::SplitEditorForExecute $w $fileType $nb "
|
||||||
|
|
||||||
# bind $txt.t <KeyRelease> "Editor::ReleaseKey %K $txt.t $fileType"
|
# bind $txt.t <KeyRelease> "Editor::ReleaseKey %K $txt.t $fileType"
|
||||||
# bind $txt.t <KeyPress> "Editor::PressKey %K $txt.t"
|
# bind $txt.t <KeyPress> "Editor::PressKey %K $txt.t"
|
||||||
# bind $txt <KeyRelease> "Editor::Key %k %K"
|
# bind $txt <KeyRelease> "Editor::Key %k %K"
|
||||||
@@ -883,20 +913,31 @@ namespace eval Editor {
|
|||||||
set lineNum [lindex [split $pos "."] 0]
|
set lineNum [lindex [split $pos "."] 0]
|
||||||
set posNum [lindex [split $pos "."] 1]
|
set posNum [lindex [split $pos "."] 1]
|
||||||
set symbol [string trim [string trimleft $symbol "\\"]]
|
set symbol [string trim [string trimleft $symbol "\\"]]
|
||||||
# puts "Selindex : $selIndex, cursor position: $pos"
|
# puts "Selindex : $selIndex, cursor position: $pos, Symbol: $symbol"
|
||||||
if {$selIndex != ""} {
|
if {$selIndex != ""} {
|
||||||
set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
|
set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
|
||||||
set posBegin [lindex [split [lindex $selIndex 0] "."] 1]
|
set posBegin [lindex [split [lindex $selIndex 0] "."] 1]
|
||||||
set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
|
set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
|
||||||
set posEnd [lindex [split [lindex $selIndex 1] "."] 1]
|
set posEnd [lindex [split [lindex $selIndex 1] "."] 1]
|
||||||
# set selText [$txt get $lineBegin.$posBegin $lineEnd.$posEnd]
|
set selText [$txt get $lineBegin.$posBegin $lineEnd.$posEnd]
|
||||||
set selText $selectionText
|
# set selText $selectionText
|
||||||
# puts "Selected text: $selText, pos: $pos, lineBegin: $lineBegin, posBegin: $posBegin, pos end: $posEnd"
|
# puts "Selected text: $selText, pos: $pos, lineBegin: $lineBegin, posBegin: $posBegin, pos end: $posEnd"
|
||||||
if {$posNum == $posEnd} {
|
if {$posNum == $posEnd} {
|
||||||
$txt insert $lineBegin.$posBegin "$symbol"
|
$txt insert $lineBegin.$posBegin "$symbol"
|
||||||
}
|
}
|
||||||
if {$posNum == $posBegin} {
|
if {$posNum == $posBegin} {
|
||||||
$txt insert $lineBegin.$posEnd "$symbol"
|
if {$symbol == {"} || $symbol == {_}} {
|
||||||
|
$txt insert $lineEnd.$posEnd "$selText$symbol"
|
||||||
|
} else {
|
||||||
|
$txt insert $lineEnd.$posEnd "$symbol"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if {$symbol == "'"} {
|
||||||
|
if {$posBegin == 0} {
|
||||||
|
$txt insert $pos "$symbol"
|
||||||
|
} else {
|
||||||
|
$txt insert "$pos + 1 chars" "$symbol"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$txt highlight $lineBegin.$posBegin $lineEnd.end
|
$txt highlight $lineBegin.$posBegin $lineEnd.end
|
||||||
# $txt insert $lineBegin.[expr $posBegin + 1] "$symbol"
|
# $txt insert $lineBegin.[expr $posBegin + 1] "$symbol"
|
||||||
@@ -924,7 +965,8 @@ namespace eval Editor {
|
|||||||
set nbEditorItem [NB::InsertItem $nbEditor $fileFullPath "file"]
|
set nbEditorItem [NB::InsertItem $nbEditor $fileFullPath "file"]
|
||||||
# puts "$nbEditorItem, $nbEditor"
|
# puts "$nbEditorItem, $nbEditor"
|
||||||
Editor $fileFullPath $nbEditor $nbEditorItem
|
Editor $fileFullPath $nbEditor $nbEditorItem
|
||||||
SetModifiedFlag $nbEditorItem
|
SetModifiedFlag $nbEditorItem $nbEditor
|
||||||
|
focus -force $nbEditorItem.frmText.t.t
|
||||||
}
|
}
|
||||||
|
|
||||||
proc ReadStructure {txt treeItemName} {
|
proc ReadStructure {txt treeItemName} {
|
||||||
@@ -941,7 +983,7 @@ namespace eval Editor {
|
|||||||
if {[eval [dict get $lexers $fileType procRegexpCommand]]} {
|
if {[eval [dict get $lexers $fileType procRegexpCommand]]} {
|
||||||
set procName_ [string trim $procName]
|
set procName_ [string trim $procName]
|
||||||
if {$treeItemName ne ""} {
|
if {$treeItemName ne ""} {
|
||||||
puts [Tree::InsertItem $tree $treeItemName $procName_ "procedure" "$procName_ ($params)"]
|
Tree::InsertItem $tree $treeItemName $procName_ "procedure" "$procName_ ($params)"
|
||||||
}
|
}
|
||||||
lappend procList [list $procName_ $params]
|
lappend procList [list $procName_ $params]
|
||||||
unset procName_
|
unset procName_
|
||||||
@@ -965,7 +1007,7 @@ namespace eval Editor {
|
|||||||
} else {
|
} else {
|
||||||
set varType ""
|
set varType ""
|
||||||
}
|
}
|
||||||
puts "variable: $varName, value: $varValue, type: $varType"
|
# puts "variable: $varName, value: $varValue, type: $varType"
|
||||||
lappend varList [list $varName $varValue]
|
lappend varList [list $varName $varValue]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -975,7 +1017,7 @@ namespace eval Editor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc FindFunction {txt findString} {
|
proc FindFunction {txt findString} {
|
||||||
puts "txt: $txt, $findString"
|
# puts "txt: $txt, $findString"
|
||||||
set pos "0.0"
|
set pos "0.0"
|
||||||
$txt see $pos
|
$txt see $pos
|
||||||
set line [lindex [split $pos "."] 0]
|
set line [lindex [split $pos "."] 0]
|
||||||
@@ -1042,7 +1084,7 @@ namespace eval Editor {
|
|||||||
# Вызов диалога со списком процедур или функций присутствующих в тексте
|
# Вызов диалога со списком процедур или функций присутствующих в тексте
|
||||||
proc GoToFunction { w } {
|
proc GoToFunction { w } {
|
||||||
global tree editors
|
global tree editors
|
||||||
puts $w
|
# puts $w
|
||||||
# set txt $w.frmText.t
|
# set txt $w.frmText.t
|
||||||
set txt $w
|
set txt $w
|
||||||
set box [$txt bbox insert]
|
set box [$txt bbox insert]
|
||||||
@@ -1052,7 +1094,7 @@ namespace eval Editor {
|
|||||||
# puts "--$txt"
|
# puts "--$txt"
|
||||||
# puts $editors($txt)
|
# puts $editors($txt)
|
||||||
foreach item [dict get $editors $txt procedureList] {
|
foreach item [dict get $editors $txt procedureList] {
|
||||||
puts $item
|
# puts $item
|
||||||
lappend l [lindex $item 0]
|
lappend l [lindex $item 0]
|
||||||
}
|
}
|
||||||
if {$l ne ""} {
|
if {$l ne ""} {
|
||||||
@@ -1144,7 +1186,7 @@ namespace eval Editor {
|
|||||||
|
|
||||||
proc FindReplaceText {txt findString replaceString regexp} {
|
proc FindReplaceText {txt findString replaceString regexp} {
|
||||||
global nbEditor
|
global nbEditor
|
||||||
puts [focus]
|
# puts [focus]
|
||||||
# set txt [$nbEditor select].frmText.t
|
# set txt [$nbEditor select].frmText.t
|
||||||
$txt tag remove sel 1.0 end
|
$txt tag remove sel 1.0 end
|
||||||
# $txt see $pos
|
# $txt see $pos
|
||||||
@@ -1176,8 +1218,13 @@ namespace eval Editor {
|
|||||||
# puts $lstFindIndex
|
# puts $lstFindIndex
|
||||||
# puts $matchIndexPair
|
# puts $matchIndexPair
|
||||||
# set lstFindIndex [$txt search -all "$selectionText" 0.0]
|
# set lstFindIndex [$txt search -all "$selectionText" 0.0]
|
||||||
|
|
||||||
|
# Найдем разницу в длине строк для установки правильного
|
||||||
|
# индекса для выделения текста после вставки
|
||||||
|
set stringLengthDiff [expr [string length $findString] - [string length $replaceString]]
|
||||||
|
|
||||||
set i 0
|
set i 0
|
||||||
foreach ind $lstFindIndex {
|
foreach ind [lsort -dictionary -decreasing $lstFindIndex] {
|
||||||
set selFindLine [lindex [split $ind "."] 0]
|
set selFindLine [lindex [split $ind "."] 0]
|
||||||
set selFindRow [lindex [split $ind "."] 1]
|
set selFindRow [lindex [split $ind "."] 1]
|
||||||
# set endInd "$selFindLine.[expr $selFindRow + $symNumbers]"
|
# set endInd "$selFindLine.[expr $selFindRow + $symNumbers]"
|
||||||
@@ -1185,8 +1232,15 @@ namespace eval Editor {
|
|||||||
# puts "$ind; $selFindLine, $selFindRow; $endInd "
|
# puts "$ind; $selFindLine, $selFindRow; $endInd "
|
||||||
if {$replaceString ne ""} {
|
if {$replaceString ne ""} {
|
||||||
$txt replace $ind $endInd $replaceString
|
$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
|
incr i
|
||||||
}
|
}
|
||||||
.finddialog.lblCounter configure -text "[::msgcat::mc "Finded"]: $i"
|
.finddialog.lblCounter configure -text "[::msgcat::mc "Finded"]: $i"
|
||||||
@@ -1228,7 +1282,7 @@ namespace eval Editor {
|
|||||||
} else {
|
} else {
|
||||||
if {[$nbEditor select] ne ""} {
|
if {[$nbEditor select] ne ""} {
|
||||||
set txt [$nbEditor select].frmText.t
|
set txt [$nbEditor select].frmText.t
|
||||||
puts $txt
|
# puts $txt
|
||||||
} else {
|
} else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -1316,7 +1370,7 @@ namespace eval Editor {
|
|||||||
# Horizontal split the Editor text widget
|
# Horizontal split the Editor text widget
|
||||||
proc SplitEditorH {w fileType nb} {
|
proc SplitEditorH {w fileType nb} {
|
||||||
global cfgVariables
|
global cfgVariables
|
||||||
puts [$w.panelTxt panes]
|
# puts [$w.panelTxt panes]
|
||||||
if [winfo exists $w.frmText2] {
|
if [winfo exists $w.frmText2] {
|
||||||
$w.panelTxt forget $w.frmText2
|
$w.panelTxt forget $w.frmText2
|
||||||
destroy $w.frmText2
|
destroy $w.frmText2
|
||||||
@@ -1336,7 +1390,7 @@ namespace eval Editor {
|
|||||||
|
|
||||||
proc SplitEditorV {fileFullPath} {
|
proc SplitEditorV {fileFullPath} {
|
||||||
global cfgVariables
|
global cfgVariables
|
||||||
regsub -all {\.|/|\\|\s} $fileFullPath "_" itemName
|
regsub -all {\.|/|\\|\s|:} $fileFullPath "_" itemName
|
||||||
set itemName ".frmWork.nbEditor2.$itemName"
|
set itemName ".frmWork.nbEditor2.$itemName"
|
||||||
# puts $itemName
|
# puts $itemName
|
||||||
if {[winfo exists $itemName] == 1} {
|
if {[winfo exists $itemName] == 1} {
|
||||||
@@ -1359,8 +1413,6 @@ namespace eval Editor {
|
|||||||
# grid rowconfigure .frmWork .frmWork.nbEditor2 -weight 1
|
# grid rowconfigure .frmWork .frmWork.nbEditor2 -weight 1
|
||||||
.frmWork.panelNB add .frmWork.nbEditor2 -weight 0
|
.frmWork.panelNB add .frmWork.nbEditor2 -weight 0
|
||||||
puts [FileOper::Edit $fileFullPath .frmWork.nbEditor2]
|
puts [FileOper::Edit $fileFullPath .frmWork.nbEditor2]
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
proc GoToLineNumber {text lineNumber} {
|
proc GoToLineNumber {text lineNumber} {
|
||||||
@@ -1458,8 +1510,8 @@ namespace eval Editor {
|
|||||||
dict set editors $txt fileType $fileType
|
dict set editors $txt fileType $fileType
|
||||||
dict set editors $txt procedureList [list]
|
dict set editors $txt procedureList [list]
|
||||||
|
|
||||||
puts ">>[dict get $editors $txt fileType]"
|
# puts ">>[dict get $editors $txt fileType]"
|
||||||
puts ">>[dict get $editors $txt procedureList]"
|
# puts ">>[dict get $editors $txt procedureList]"
|
||||||
# puts ">>>>> $editors"
|
# puts ">>>>> $editors"
|
||||||
|
|
||||||
if {[info procs ::Highlight::$fileType] ne ""} {
|
if {[info procs ::Highlight::$fileType] ne ""} {
|
||||||
@@ -1484,6 +1536,7 @@ namespace eval Editor {
|
|||||||
ICO
|
ICO
|
||||||
XPM
|
XPM
|
||||||
}
|
}
|
||||||
|
# puts "$itemName"
|
||||||
set fr $itemName
|
set fr $itemName
|
||||||
if ![string match "*untitled*" $itemName] {
|
if ![string match "*untitled*" $itemName] {
|
||||||
set lblText $fileFullPath
|
set lblText $fileFullPath
|
||||||
@@ -1505,9 +1558,13 @@ namespace eval Editor {
|
|||||||
-command "Editor::SplitEditorH $fr $fileType $nb"
|
-command "Editor::SplitEditorH $fr $fileType $nb"
|
||||||
ttk::button $fr.header.$btnSplitV -image split_vertical_11x11 \
|
ttk::button $fr.header.$btnSplitV -image split_vertical_11x11 \
|
||||||
-command "Editor::SplitEditorV $fileFullPath"
|
-command "Editor::SplitEditorV $fileFullPath"
|
||||||
|
|
||||||
|
set btnSplitExecute "btnSplitExec[string range $itemName [expr [string last "." $itemName] +1] end]"
|
||||||
|
ttk::button $fr.header.$btnSplitExecute -image execute_11x11 \
|
||||||
|
-command "Editor::SplitEditorForExecute $fr $fileType $nb $fileFullPath"
|
||||||
# pack $fr.$btnSplitH $fr.$btnSplitV -side right -anchor e
|
# pack $fr.$btnSplitH $fr.$btnSplitV -side right -anchor e
|
||||||
pack $fr.header.$lblName -side left -expand true -fill x
|
pack $fr.header.$lblName -side left -expand true -fill x
|
||||||
pack $fr.header.$btnSplitV $fr.header.$btnSplitH -side right
|
pack $fr.header.$btnSplitV $fr.header.$btnSplitH $fr.header.$btnSplitExecute -side right
|
||||||
|
|
||||||
pack $fr.header -side top -fill x
|
pack $fr.header -side top -fill x
|
||||||
|
|
||||||
@@ -1525,4 +1582,27 @@ namespace eval Editor {
|
|||||||
|
|
||||||
return $fr
|
return $fr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
proc SplitEditorForExecute {w fileType nb {fileFullPath ""}} {
|
||||||
|
global cfgVariables tree
|
||||||
|
if {$fileFullPath eq ""} {
|
||||||
|
set treeItem "file::[string range $w [expr [string last "." $w] +1] end ]"
|
||||||
|
set fileFullPath [Tree::GetItemID $tree $treeItem]
|
||||||
|
puts $fileFullPath
|
||||||
|
}
|
||||||
|
# puts [$w.panelTxt panes]
|
||||||
|
puts "$w $fileType $nb $fileFullPath"
|
||||||
|
if [winfo exists $w.frmText2] {
|
||||||
|
$w.panelTxt forget $w.frmText2
|
||||||
|
destroy $w.frmText2
|
||||||
|
focus -force $w.frmText.t.t
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
set frmText [ttk::frame $w.frmText2 -border 1]
|
||||||
|
$w.panelTxt add $frmText -weight 1
|
||||||
|
# focus -force $frmText.t.t
|
||||||
|
Execute $fileFullPath $frmText $w
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
162
lib/files.tcl
162
lib/files.tcl
@@ -9,11 +9,41 @@
|
|||||||
|
|
||||||
|
|
||||||
namespace eval FileOper {
|
namespace eval FileOper {
|
||||||
|
global packages
|
||||||
variable types
|
variable types
|
||||||
|
|
||||||
set ::types {
|
set ::types {
|
||||||
{"All files" *}
|
{"All files" *}
|
||||||
}
|
}
|
||||||
|
# Проверка поддерживаемых типов изображений
|
||||||
|
# в зависимости устновлен пакет или нет
|
||||||
|
proc SupportImageType {type} {
|
||||||
|
if {[PackagePresent Img] eq "true"} {
|
||||||
|
switch $type {
|
||||||
|
jpeg { return true }
|
||||||
|
png { return true }
|
||||||
|
gif { return true }
|
||||||
|
bmp { return true }
|
||||||
|
svg { return true }
|
||||||
|
ppm { return true }
|
||||||
|
pgm { return true }
|
||||||
|
tiff { return true }
|
||||||
|
xbm { return true }
|
||||||
|
xpm { return true }
|
||||||
|
default { return false}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch $type {
|
||||||
|
png { return true }
|
||||||
|
gif { return true }
|
||||||
|
bmp { return true }
|
||||||
|
svg { return true }
|
||||||
|
ppm { return true }
|
||||||
|
pgm { return true }
|
||||||
|
default { return false}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
proc GetFileMimeType {fileFullPath {opt ""}} {
|
proc GetFileMimeType {fileFullPath {opt ""}} {
|
||||||
global cfgVariables
|
global cfgVariables
|
||||||
@@ -31,6 +61,7 @@ namespace eval FileOper {
|
|||||||
|
|
||||||
# lappend cmd $activeProject
|
# lappend cmd $activeProject
|
||||||
lappend cmd $fileFullPath
|
lappend cmd $fileFullPath
|
||||||
|
# puts $cmd
|
||||||
catch $cmd pipe
|
catch $cmd pipe
|
||||||
# puts $pipe
|
# puts $pipe
|
||||||
if [regexp -nocase -- {(\w+)/([\w\-_\.]+); charset=([[:alnum:]-]+)} $pipe m fType fExt fCharset] {
|
if [regexp -nocase -- {(\w+)/([\w\-_\.]+); charset=([[:alnum:]-]+)} $pipe m fType fExt fCharset] {
|
||||||
@@ -43,18 +74,75 @@ namespace eval FileOper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
# линуксовый file не всегда корректно определяет тип файла
|
||||||
|
# используем пакет из tcl
|
||||||
|
lassign [::fileutil::fileType $fileFullPath] fType fBinaryType fBinaryInterp
|
||||||
|
puts "File type is $fType, $fBinaryType, $fBinaryInterp"
|
||||||
|
set ext [string tolower [file extension $fileFullPath]]
|
||||||
|
|
||||||
|
# Установка корректного типа для svg
|
||||||
|
# Но для новых версий tcl
|
||||||
|
switch $ext {
|
||||||
|
".svg" {
|
||||||
|
set fType "binary"
|
||||||
|
set fBinaryInterp "svg"
|
||||||
|
set fBinaryType "graphic"
|
||||||
|
}
|
||||||
|
".torrent" {
|
||||||
|
set fType "binary"
|
||||||
|
set fBinaryInterp "torrent"
|
||||||
|
set fBinaryType "x-bittorrent"
|
||||||
|
}
|
||||||
|
".pdf" {
|
||||||
|
set fType "binary"
|
||||||
|
set fBinaryInterp "pdf"
|
||||||
|
set fBinaryType "binary"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
puts "File type is $fType, $fBinaryType, $fBinaryInterp, $ext"
|
||||||
|
|
||||||
switch $fType {
|
switch $fType {
|
||||||
"application" {
|
"binary" {
|
||||||
if {$fExt ne "json"} {
|
if {$fBinaryType ne ""} {
|
||||||
|
switch $fBinaryType {
|
||||||
|
"graphic" {
|
||||||
|
if {[SupportImageType $fBinaryInterp] eq "true"} {
|
||||||
|
return image
|
||||||
|
} else {
|
||||||
|
set answer [tk_messageBox -message [::msgcat::mc "The file looks like a image. Support not implemented yet."] -icon question -type ok]
|
||||||
|
switch $answer {
|
||||||
|
ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
return binary
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return binary
|
||||||
|
}
|
||||||
|
}
|
||||||
"text" {
|
"text" {
|
||||||
return text
|
return text
|
||||||
}
|
}
|
||||||
"image" {
|
"image" {
|
||||||
|
if {[SupportImageType $fBinaryInterp] eq "true"} {
|
||||||
|
return image
|
||||||
|
} else {
|
||||||
|
set answer [tk_messageBox -message [::msgcat::mc "The file looks like a image. Support not implemented yet."] -icon question -type ok]
|
||||||
|
switch $answer {
|
||||||
|
ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"empty" {
|
||||||
|
return text
|
||||||
|
}
|
||||||
default {
|
default {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -145,6 +233,7 @@ namespace eval FileOper {
|
|||||||
# }
|
# }
|
||||||
# .frmStatus.lblGitLogo configure -image git_logo_20x20
|
# .frmStatus.lblGitLogo configure -image git_logo_20x20
|
||||||
# .frmStatus.lblGit configure -text "[::msgcat::mc "Branch"]: [Git::Branches current]"
|
# .frmStatus.lblGit configure -text "[::msgcat::mc "Branch"]: [Git::Branches current]"
|
||||||
|
AddRecentEditedFolder $fullPath
|
||||||
return $fullPath
|
return $fullPath
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,11 +290,10 @@ namespace eval FileOper {
|
|||||||
if {[lsearch -exact [.frmWork.panelNB panes] .frmWork.nbEditor2] != -1} {
|
if {[lsearch -exact [.frmWork.panelNB panes] .frmWork.nbEditor2] != -1} {
|
||||||
.frmWork.panelNB forget .frmWork.nbEditor2
|
.frmWork.panelNB forget .frmWork.nbEditor2
|
||||||
}
|
}
|
||||||
foreach nbItem [array names modified] {
|
foreach nbItem [$nbEditor tabs] {
|
||||||
if {[info exists modified($nbItem)] == 1 && $modified($nbItem) eq "true"} {
|
|
||||||
catch {$nbEditor select $nbItem}
|
catch {$nbEditor select $nbItem}
|
||||||
# puts "close tab $nbItem"
|
if {[Close] eq "cancel"} {
|
||||||
if {[Close] eq "cancel"} {return "cancel"}
|
return "cancel"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -255,18 +343,18 @@ namespace eval FileOper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc Save {} {
|
proc Save {} {
|
||||||
global nbEditor tree env activeProject
|
global nbEditor tree env activeProject dir
|
||||||
|
|
||||||
if [info exists activeProject] {
|
if [info exists activeProject] {
|
||||||
set dir $activeProject
|
set dirProject $activeProject
|
||||||
} else {
|
} else {
|
||||||
set dir $env(HOME)
|
set dirProject $env(HOME)
|
||||||
}
|
}
|
||||||
|
|
||||||
set nbEditorItem [$nbEditor select]
|
set nbEditorItem [$nbEditor select]
|
||||||
puts "Saved editor text: $nbEditorItem"
|
# puts "Saved editor text: $nbEditorItem"
|
||||||
if [string match "*untitled*" $nbEditorItem] {
|
if [string match "*untitled*" $nbEditorItem] {
|
||||||
set filePath [tk_getSaveFile -initialdir $dir -filetypes $::types -parent .]
|
set filePath [tk_getSaveFile -initialdir $dirProject -filetypes $::types -parent .]
|
||||||
if {$filePath eq ""} {
|
if {$filePath eq ""} {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -283,9 +371,12 @@ namespace eval FileOper {
|
|||||||
set editedText [$nbEditorItem.frmText.t get 0.0 end]
|
set editedText [$nbEditorItem.frmText.t get 0.0 end]
|
||||||
set f [open $filePath "w+"]
|
set f [open $filePath "w+"]
|
||||||
puts -nonewline $f $editedText
|
puts -nonewline $f $editedText
|
||||||
puts "$f was saved"
|
# puts "$f was saved"
|
||||||
close $f
|
close $f
|
||||||
ResetModifiedFlag $nbEditorItem $nbEditor
|
ResetModifiedFlag $nbEditorItem $nbEditor
|
||||||
|
if {[file tail $filePath] eq "projman.ini"} {
|
||||||
|
Config::read $dir(cfg)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc SaveAll {} {
|
proc SaveAll {} {
|
||||||
@@ -312,7 +403,7 @@ namespace eval FileOper {
|
|||||||
|
|
||||||
proc ReadFolder {directory {parent ""}} {
|
proc ReadFolder {directory {parent ""}} {
|
||||||
global tree dir lexers project
|
global tree dir lexers project
|
||||||
puts "Read the folder $directory"
|
# puts "Read the folder $directory"
|
||||||
set rList ""
|
set rList ""
|
||||||
if {[catch {cd $directory}] != 0} {
|
if {[catch {cd $directory}] != 0} {
|
||||||
return ""
|
return ""
|
||||||
@@ -384,33 +475,58 @@ namespace eval FileOper {
|
|||||||
# Delete emty last line
|
# Delete emty last line
|
||||||
if {[$txt get {end-1 line} end] eq "\n" || [$txt get {end-1 line} end] eq "\r\n"} {
|
if {[$txt get {end-1 line} end] eq "\n" || [$txt get {end-1 line} end] eq "\r\n"} {
|
||||||
$txt delete {end-1 line} end
|
$txt delete {end-1 line} end
|
||||||
puts ">[$txt get {end-1 line} end]<"
|
# puts ">[$txt get {end-1 line} end]<"
|
||||||
}
|
}
|
||||||
$txt see 1.0
|
$txt see 1.0
|
||||||
}
|
}
|
||||||
|
|
||||||
proc Edit {fileFullPath {nbEditor .frmWork.nbEditor}} {
|
proc Edit {fileFullPath {nbEditor .frmWork.nbEditor}} {
|
||||||
global tree
|
global tree
|
||||||
|
puts "$fileFullPath"
|
||||||
if {[file exists $fileFullPath] == 0} {
|
if {[file exists $fileFullPath] == 0} {
|
||||||
return false
|
return false
|
||||||
} else {
|
} else {
|
||||||
# puts [::fileutil::magic::filetype $fileFullPath]
|
# puts "$fileFullPath File type [::fileutil::magic::filetype $fileFullPath]"
|
||||||
set fileType [FileOper::GetFileMimeType $fileFullPath]
|
set fileType [FileOper::GetFileMimeType $fileFullPath]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# puts "$fileType <<<<<<<<<<<"
|
||||||
|
|
||||||
switch $fileType {
|
switch $fileType {
|
||||||
"text" {
|
"text" {
|
||||||
# return text
|
# return text
|
||||||
}
|
}
|
||||||
"image" {
|
"image" {
|
||||||
# return image
|
}
|
||||||
|
"binary" {
|
||||||
|
set answer [tk_messageBox -message [::msgcat::mc "The file looks like a binary file. Open anyway?"] \
|
||||||
|
-icon question -type yesno]
|
||||||
|
switch $answer {
|
||||||
|
yes {}
|
||||||
|
no {return}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
false {
|
false {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
# Проверяем размер файла и если он больше 1мб вывести предупреждение
|
||||||
|
# puts " File size = [file size $fileFullPath]"
|
||||||
|
if {[file size $fileFullPath] > 1000000} {
|
||||||
|
set answer [tk_messageBox -message [::msgcat::mc "The file size to big. Open anyway?"] \
|
||||||
|
-detail [GetFileAttr $fileFullPath "size"] \
|
||||||
|
-icon question -type yesno]
|
||||||
|
switch $answer {
|
||||||
|
yes {}
|
||||||
|
no {return}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
set filePath [file dirname $fileFullPath]
|
set filePath [file dirname $fileFullPath]
|
||||||
set fileName [file tail $fileFullPath]
|
set fileName [file tail $fileFullPath]
|
||||||
regsub -all {\.|/|\\|\s} $fileFullPath "_" itemName
|
|
||||||
|
regsub -all {\.|/|\\|\s|:} $fileFullPath "_" itemName
|
||||||
|
set itemName [string tolower $itemName]
|
||||||
set itemName "$nbEditor.$itemName"
|
set itemName "$nbEditor.$itemName"
|
||||||
set treeItemName [Tree::InsertItem $tree {} $fileFullPath "file" $fileName]
|
set treeItemName [Tree::InsertItem $tree {} $fileFullPath "file" $fileName]
|
||||||
|
|
||||||
@@ -419,6 +535,11 @@ namespace eval FileOper {
|
|||||||
|
|
||||||
if {[winfo exists $itemName] == 0} {
|
if {[winfo exists $itemName] == 0} {
|
||||||
NB::InsertItem $nbEditor $fileFullPath "file"
|
NB::InsertItem $nbEditor $fileFullPath "file"
|
||||||
|
if {$fileType eq "image"} {
|
||||||
|
ImageViewer $fileFullPath $itemName $itemName
|
||||||
|
return $itemName
|
||||||
|
}
|
||||||
|
|
||||||
Editor::Editor $fileFullPath $nbEditor $itemName
|
Editor::Editor $fileFullPath $nbEditor $itemName
|
||||||
ReadFile $fileFullPath $itemName
|
ReadFile $fileFullPath $itemName
|
||||||
$itemName.frmText.t highlight 1.0 end
|
$itemName.frmText.t highlight 1.0 end
|
||||||
@@ -426,6 +547,11 @@ namespace eval FileOper {
|
|||||||
$itemName.frmText.t see 1.1
|
$itemName.frmText.t see 1.1
|
||||||
}
|
}
|
||||||
$nbEditor select $itemName
|
$nbEditor select $itemName
|
||||||
|
focus -force $itemName
|
||||||
|
if {$fileType eq "image"} {
|
||||||
|
# ImageViewer $fileFullPath $itemName $itemName
|
||||||
|
return $itemName
|
||||||
|
}
|
||||||
Editor::ReadStructure $itemName.frmText.t $treeItemName
|
Editor::ReadStructure $itemName.frmText.t $treeItemName
|
||||||
GetVariablesFromFile $fileFullPath
|
GetVariablesFromFile $fileFullPath
|
||||||
$itemName.frmText.t.t mark set insert 1.0
|
$itemName.frmText.t.t mark set insert 1.0
|
||||||
@@ -433,6 +559,8 @@ namespace eval FileOper {
|
|||||||
focus -force $itemName.frmText.t.t
|
focus -force $itemName.frmText.t.t
|
||||||
.frmStatus.lblSize configure -text [GetFileAttr $fileFullPath "size"]
|
.frmStatus.lblSize configure -text [GetFileAttr $fileFullPath "size"]
|
||||||
.frmStatus.lblEncoding configure -text [GetFileMimeType $fileFullPath "charset"]
|
.frmStatus.lblEncoding configure -text [GetFileMimeType $fileFullPath "charset"]
|
||||||
|
# puts ">> $itemName"
|
||||||
|
|
||||||
return $itemName
|
return $itemName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
48
lib/git.tcl
48
lib/git.tcl
@@ -12,6 +12,28 @@
|
|||||||
namespace eval Git {
|
namespace eval Git {
|
||||||
variable gitCommand
|
variable gitCommand
|
||||||
|
|
||||||
|
# Определим путь до команды git в зависимсти от платформы
|
||||||
|
proc CommandPathSetting {} {
|
||||||
|
global cfgVariables tcl_platform
|
||||||
|
if {$cfgVariables(gitCommand) == ""} {
|
||||||
|
if {$tcl_platform(platform) eq "windows"} {
|
||||||
|
set cmd {where git}
|
||||||
|
} else {
|
||||||
|
set cmd {which git}
|
||||||
|
}
|
||||||
|
if {[catch {exec {*}$cmd} git_path]} {
|
||||||
|
puts "Git не найден в системе"
|
||||||
|
set cfgVariables(gitCommand) "Git not found"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
set git_path [string trim $git_path]
|
||||||
|
set first_path [lindex [split $git_path "\n"] 0]
|
||||||
|
|
||||||
|
# puts "Git найден: $first_path"
|
||||||
|
set cfgVariables(gitCommand) $first_path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
proc GetConfig {option} {
|
proc GetConfig {option} {
|
||||||
global activeProject cfgVariables
|
global activeProject cfgVariables
|
||||||
set confOptions {
|
set confOptions {
|
||||||
@@ -69,8 +91,8 @@ namespace eval Git {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch $cmd pipe
|
catch $cmd pipe
|
||||||
puts $cmd
|
# puts $cmd
|
||||||
puts $pipe
|
# puts $pipe
|
||||||
if [regexp -nocase -- {^error:} $pipe match] {
|
if [regexp -nocase -- {^error:} $pipe match] {
|
||||||
ShowMessage "Command: '$cmd' error" $pipe
|
ShowMessage "Command: '$cmd' error" $pipe
|
||||||
return
|
return
|
||||||
@@ -100,7 +122,7 @@ namespace eval Git {
|
|||||||
} else {
|
} else {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
puts $activeProject
|
# puts $activeProject
|
||||||
lappend cmd $cfgVariables(gitCommand)
|
lappend cmd $cfgVariables(gitCommand)
|
||||||
lappend cmd "branch"
|
lappend cmd "branch"
|
||||||
# lappend cmd "-s"
|
# lappend cmd "-s"
|
||||||
@@ -145,7 +167,7 @@ namespace eval Git {
|
|||||||
lappend cmd "--"
|
lappend cmd "--"
|
||||||
lappend cmd $activeProject
|
lappend cmd $activeProject
|
||||||
catch $cmd pipe
|
catch $cmd pipe
|
||||||
puts $cmd
|
# puts $cmd
|
||||||
if [regexp -nocase -- {^fatal:} $pipe match] {
|
if [regexp -nocase -- {^fatal:} $pipe match] {
|
||||||
ShowMessage "Command: '$cmd' error" $pipe
|
ShowMessage "Command: '$cmd' error" $pipe
|
||||||
return
|
return
|
||||||
@@ -167,7 +189,7 @@ namespace eval Git {
|
|||||||
lappend cmd "--"
|
lappend cmd "--"
|
||||||
lappend cmd [file join $activeProject [string trimleft $f "../"]]
|
lappend cmd [file join $activeProject [string trimleft $f "../"]]
|
||||||
catch $cmd pipe
|
catch $cmd pipe
|
||||||
puts $cmd
|
# puts $cmd
|
||||||
if [regexp -nocase -- {^fatal:} $pipe match] {
|
if [regexp -nocase -- {^fatal:} $pipe match] {
|
||||||
ShowMessage "Command: '$cmd' error" $pipe
|
ShowMessage "Command: '$cmd' error" $pipe
|
||||||
return
|
return
|
||||||
@@ -228,7 +250,7 @@ namespace eval Git {
|
|||||||
# set cmd exec
|
# set cmd exec
|
||||||
cd $activeProject
|
cd $activeProject
|
||||||
set url [Git::GetConfig remote.origin.url]
|
set url [Git::GetConfig remote.origin.url]
|
||||||
puts $url
|
# puts $url
|
||||||
if [regexp -nocase -all -- {^(http|https)://(.+)} $url match proto address] {
|
if [regexp -nocase -all -- {^(http|https)://(.+)} $url match proto address] {
|
||||||
Git::AuthorizationDialog "[::msgcat::mc "Authorization required"] [::msgcat::mc "for"] Git" $url
|
Git::AuthorizationDialog "[::msgcat::mc "Authorization required"] [::msgcat::mc "for"] Git" $url
|
||||||
} else {
|
} else {
|
||||||
@@ -248,7 +270,7 @@ namespace eval Git {
|
|||||||
# lappend cmd "$activeProject"
|
# lappend cmd "$activeProject"
|
||||||
# puts "$cmd"
|
# puts "$cmd"
|
||||||
catch $cmd pipe
|
catch $cmd pipe
|
||||||
puts $pipe
|
# puts $pipe
|
||||||
if [regexp -nocase -- {^fatal:} $pipe match] {
|
if [regexp -nocase -- {^fatal:} $pipe match] {
|
||||||
ShowMessage "Command: '$cmd' error" $pipe
|
ShowMessage "Command: '$cmd' error" $pipe
|
||||||
return
|
return
|
||||||
@@ -301,7 +323,7 @@ namespace eval Git {
|
|||||||
$w.body.lCommit delete $itemNumber
|
$w.body.lCommit delete $itemNumber
|
||||||
}
|
}
|
||||||
catch $cmd pipe
|
catch $cmd pipe
|
||||||
puts $cmd
|
# puts $cmd
|
||||||
$w.body.t delete 1.0 end
|
$w.body.t delete 1.0 end
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -357,7 +379,7 @@ namespace eval Git {
|
|||||||
$w.body.t delete 1.0 end
|
$w.body.t delete 1.0 end
|
||||||
set i 0
|
set i 0
|
||||||
foreach line [Git::Diff $fileName] {
|
foreach line [Git::Diff $fileName] {
|
||||||
puts $line
|
# puts $line
|
||||||
if {$i > 3} {
|
if {$i > 3} {
|
||||||
$w.body.t inser end "$line\n"
|
$w.body.t inser end "$line\n"
|
||||||
}
|
}
|
||||||
@@ -381,7 +403,7 @@ namespace eval Git {
|
|||||||
$w.body.lBox delete $itemNumber
|
$w.body.lBox delete $itemNumber
|
||||||
}
|
}
|
||||||
catch $cmd pipe
|
catch $cmd pipe
|
||||||
puts $cmd
|
# puts $cmd
|
||||||
$w.body.t delete 1.0 end
|
$w.body.t delete 1.0 end
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -396,7 +418,7 @@ namespace eval Git {
|
|||||||
puts $cmd
|
puts $cmd
|
||||||
|
|
||||||
catch $cmd pipe
|
catch $cmd pipe
|
||||||
puts $pipe
|
# puts $pipe
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
proc Config {repo user email} {
|
proc Config {repo user email} {
|
||||||
@@ -407,7 +429,7 @@ namespace eval Git {
|
|||||||
lappend cmd "config"
|
lappend cmd "config"
|
||||||
lappend cmd $repo
|
lappend cmd $repo
|
||||||
lappend cmd $dir
|
lappend cmd $dir
|
||||||
puts $cmd
|
# puts $cmd
|
||||||
|
|
||||||
# catch $cmd pipe
|
# catch $cmd pipe
|
||||||
# puts $pipe
|
# puts $pipe
|
||||||
@@ -425,7 +447,7 @@ namespace eval Git {
|
|||||||
lappend cmd $cfgVariables(gitCommand)
|
lappend cmd $cfgVariables(gitCommand)
|
||||||
lappend cmd "init"
|
lappend cmd "init"
|
||||||
lappend cmd $activeProject
|
lappend cmd $activeProject
|
||||||
puts $cmd
|
# puts $cmd
|
||||||
|
|
||||||
catch $cmd pipe
|
catch $cmd pipe
|
||||||
if [regexp -nocase -- {^fatal:} $pipe match] {
|
if [regexp -nocase -- {^fatal:} $pipe match] {
|
||||||
|
|||||||
19
lib/gui.tcl
19
lib/gui.tcl
@@ -23,12 +23,14 @@ wm overrideredirect . 0
|
|||||||
|
|
||||||
bind . <Control-q> Quit
|
bind . <Control-q> Quit
|
||||||
bind . <Control-Q> Quit
|
bind . <Control-Q> Quit
|
||||||
|
bind . <Control-Cyrillic_shorti> Quit
|
||||||
bind . <Control-eacute> Quit
|
bind . <Control-eacute> Quit
|
||||||
bind . <Insert> Add
|
bind . <Insert> Add
|
||||||
bind . <Delete> Del
|
bind . <Delete> Del
|
||||||
bind . <F1> ShowHelpDialog
|
bind . <F1> ShowHelpDialog
|
||||||
bind . <Control-n> Editor::New
|
bind . <Control-n> Editor::New
|
||||||
bind . <Control-N> Editor::New
|
bind . <Control-N> Editor::New
|
||||||
|
bind . <Control-Cyrillic_te> Editor::New
|
||||||
bind . <Control-o> {
|
bind . <Control-o> {
|
||||||
set filePath [FileOper::OpenDialog]
|
set filePath [FileOper::OpenDialog]
|
||||||
if {$filePath != ""} {
|
if {$filePath != ""} {
|
||||||
@@ -41,21 +43,30 @@ bind . <Control-O> {
|
|||||||
FileOper::Edit $filePath
|
FileOper::Edit $filePath
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bind . <Control-k> {
|
bind . <Alt-k> {
|
||||||
set folderPath [FileOper::OpenFolderDialog]
|
set folderPath [FileOper::OpenFolderDialog]
|
||||||
if {$folderPath != ""} {
|
if {$folderPath != ""} {
|
||||||
FileOper::ReadFolder $folderPath
|
FileOper::ReadFolder $folderPath
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bind . <Control-K> {
|
bind . <Alt-K> {
|
||||||
set folderPath [FileOper::OpenFolderDialog]
|
set folderPath [FileOper::OpenFolderDialog]
|
||||||
if {$folderPath != ""} {
|
if {$folderPath != ""} {
|
||||||
FileOper::ReadFolder $folderPath
|
FileOper::ReadFolder $folderPath
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
bind . <Alt-Cyrillic_el> {
|
||||||
|
set folderPath [FileOper::OpenFolderDialog]
|
||||||
|
if {$folderPath != ""} {
|
||||||
|
FileOper::ReadFolder $folderPath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bind . <Control-s> {FileOper::Save}
|
bind . <Control-s> {FileOper::Save}
|
||||||
bind . <Control-S> {FileOper::Save}
|
bind . <Control-S> {FileOper::Save}
|
||||||
|
bind . <Control-Cyrillic_hardsign> {FileOper::Save}
|
||||||
bind . <Alt-p> {ViewFilesTree true}
|
bind . <Alt-p> {ViewFilesTree true}
|
||||||
|
bind . <Alt-Cyrillic_ze> {ViewFilesTree true}
|
||||||
bind . <Button-3> {catch [PopupMenu %X %Y]}
|
bind . <Button-3> {catch [PopupMenu %X %Y]}
|
||||||
|
|
||||||
#ttk::style configure TPanedwindow -background blue
|
#ttk::style configure TPanedwindow -background blue
|
||||||
@@ -134,11 +145,15 @@ grid .frmBody.panel -row 0 -column 1 -sticky nesw
|
|||||||
grid columnconfigure .frmBody .frmBody.panel -weight 1
|
grid columnconfigure .frmBody .frmBody.panel -weight 1
|
||||||
grid rowconfigure .frmBody .frmBody.panel -weight 1
|
grid rowconfigure .frmBody .frmBody.panel -weight 1
|
||||||
|
|
||||||
|
# Панель инстурментов
|
||||||
ttk::button $frmTool.btn_tree -command ToolBtnTreePress -image tree_24x24
|
ttk::button $frmTool.btn_tree -command ToolBtnTreePress -image tree_24x24
|
||||||
ttk::button $frmTool.btn_search -command FileOper::FindInFiles -image search_24x24
|
ttk::button $frmTool.btn_search -command FileOper::FindInFiles -image search_24x24
|
||||||
ttk::button $frmTool.btn_git -command Git::Dialog -image git_24x24
|
ttk::button $frmTool.btn_git -command Git::Dialog -image git_24x24
|
||||||
|
ttk::button $frmTool.btn_settings -command Settings -image settings_24x24
|
||||||
|
|
||||||
pack $frmTool.btn_tree $frmTool.btn_search $frmTool.btn_git -side top -padx 1 -pady 1
|
pack $frmTool.btn_tree $frmTool.btn_search $frmTool.btn_git -side top -padx 1 -pady 1
|
||||||
|
pack $frmTool.btn_settings -side bottom -padx 1 -pady 10
|
||||||
|
|
||||||
# #label $frmTool.lbl_logo -image tcl
|
# #label $frmTool.lbl_logo -image tcl
|
||||||
# pack $frmTool.btn_quit -side bottom -padx 5 -pady 5
|
# pack $frmTool.btn_quit -side bottom -padx 5 -pady 5
|
||||||
# #pack $frmTool.lbl_logo -side bottom -padx 5 -pady 5
|
# #pack $frmTool.lbl_logo -side bottom -padx 5 -pady 5
|
||||||
|
|||||||
@@ -190,5 +190,25 @@ namespace eval Highlight {} {
|
|||||||
ctext::addHighlightClassForRegexp $txt namespaces #0093ff {->|\+\+|::}
|
ctext::addHighlightClassForRegexp $txt namespaces #0093ff {->|\+\+|::}
|
||||||
ctext::addHighlightClass $txt bool #3e803b {null false true}
|
ctext::addHighlightClass $txt bool #3e803b {null false true}
|
||||||
}
|
}
|
||||||
|
proc ExecuteColorized {txt} {
|
||||||
|
# ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
|
||||||
|
# ctext::addHighlightClass $txt stackControl #19a2a6 [info commands]
|
||||||
|
# ctext::addHighlightClass $txt widgets #9d468d [list canvas ctext button entry label text labelframe frame toplevel scrollbar checkbutton canvas listbox menu menubar menubutton radiobutton scale entry message tk_chooseDir tk_getSaveFile tk_getOpenFile tk_chooseColor tk_optionMenu ttk::button ttk::checkbutton ttk::combobox ttk::entry ttk::frame ttk::intro ttk::label ttk::labelframe ttk::menubutton ttk::treeview ttk::notebook ttk::panedwindow ttk::progressbar ttk::radiobutton ttk::scale ttk::scrollbar ttk::separator ttk::sizegrip ttk::spinbox ]
|
||||||
|
# ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\$"
|
||||||
|
# ctext::addHighlightClass $txt variable_funcs gold {set global variable unset}
|
||||||
|
# # ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||||
|
# ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
|
||||||
|
# ctext::addHighlightClassForRegexp $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}
|
||||||
|
# ctext::addHighlightClassForRegexp $txt paths lightblue {(\s)([\w]+)(=)}
|
||||||
|
# ctext::addHighlightClassForSpecialChars $txt tags lightgreen {<>/}
|
||||||
|
# ctext::addHighlightClassForRegexp $txt tags #199100 {/.+\s}
|
||||||
|
ctext::addHighlightClassForRegexp $txt gopaths lightblue {(.+?):(\d+):(\d+):}
|
||||||
|
ctext::addHighlightClassForRegexp $txt paths lightblue {(\\|/|\.|^)((\w)|(\.)|(/)|([\.\w]))+?\s}
|
||||||
|
ctext::addHighlightClass $txt compile_errors #ff5050 {error Error ERROR invalid undefined cannot}
|
||||||
|
ctext::addHighlightClassForRegexp $txt url lightblue {\w+://\w.+\w+}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -596,6 +596,22 @@ image create photo debian_16x12 -data {
|
|||||||
rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO
|
rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO
|
||||||
RK5CYII=
|
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 {
|
image create photo redhat_16x12 -data {
|
||||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||||
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
|
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
|
||||||
@@ -616,6 +632,26 @@ image create photo redhat_16x12 -data {
|
|||||||
JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B
|
JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B
|
||||||
fWB7/vyA9Yr/YLa1I25OKGgYfz6Rjbv9EqdKrq/6GWz7DaI/0EnQtYARAAAAAElFTkSuQmCC
|
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 {
|
image create photo spec_16x12 -data {
|
||||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||||
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
|
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
|
||||||
@@ -1447,6 +1483,40 @@ image create photo csr_16x12 -data {
|
|||||||
kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
|
kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
|
||||||
VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
|
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 {
|
image create photo git_16x12 -data {
|
||||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||||
kT1Iw0AcxV9TS0UqDnYQcchQnSz4hYiTVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
|
kT1Iw0AcxV9TS0UqDnYQcchQnSz4hYiTVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
|
||||||
@@ -1729,3 +1799,151 @@ image create photo lua_16x12 -data {
|
|||||||
A8TB5iOAVKQWCjQFtgqIx94M0I6D3lzlAY0B2wO+qesqyc4jCVHdcX1x64AeZX6JGOpYJgj6DlhL
|
A8TB5iOAVKQWCjQFtgqIx94M0I6D3lzlAY0B2wO+qesqyc4jCVHdcX1x64AeZX6JGOpYJgj6DlhL
|
||||||
nyEr/QEd077c+0K/7XAFjyKwCIyCrjA7IJc6ct9yegcG+1TkMUCBoAAAAABJRU5ErkJggg==
|
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
|
||||||
|
}
|
||||||
|
image create photo execute_11x11 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAABg2lDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||||
|
kT1Iw1AUhU9TpVIqDnYQUclQneyiIo5ahSJUCLVCqw4mL/2DJg1Jiouj4Fpw8Gex6uDirKuDqyAI
|
||||||
|
/oC4C06KLlLifUmhRYwPLu/jvHcO990HCI0K06yuWUDTbTOdTIjZ3KoYekUYw1QjiMrMMuYkKQXf
|
||||||
|
9XWPAN/v4jzL/96fq1fNWwwIiMSzzDBt4g3i6U3b4LxPHGUlWSU+Jx43qUHiR64rHr9xLros8Myo
|
||||||
|
mUnPE0eJxWIHKx3MSqZGPEUcUzWd8oWsxyrnLc5apcZaffIXRvL6yjLXqYaQxCKWIEGEghrKqMBG
|
||||||
|
nHadFAtpOk/4+Addv0QuhVxlMHIsoAoNsusH/4Pfs7UKkxNeUiQBdL84zscoENoFmnXH+T52nOYJ
|
||||||
|
EHwGrvS2v9oAZj5Jr7e12BHQtw1cXLc1ZQ+43AEGngzZlF0pSCUUCsD7GX1TDui/BcJr3txa5zh9
|
||||||
|
ADI0q9QNcHAIjBUpe93n3T2dc/v3Tmt+P5frcrXBnzRwAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
|
||||||
|
WXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH6QodCiMdxWTpZwAAABl0RVh0Q29tbWVudABDcmVhdGVk
|
||||||
|
IHdpdGggR0lNUFeBDhcAAABHSURBVBjTjY/BDQAwCAKNUzleux1b2Y+PxgiRJ7kjalYBkADSRLwX
|
||||||
|
SvCpZIKzlUlwdWMXJFw5Kzgi7mr5A/XyBI4wA9kzFHrskxvBNKQinAAAAABJRU5ErkJggg==
|
||||||
|
}
|
||||||
|
image create photo settings_24x24 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABg2lDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||||
|
kT1Iw1AUhU9TpVIqDnYQUclQneyiIo5ahSJUCLVCqw4mL/2DJg1Jiouj4Fpw8Gex6uDirKuDqyAI
|
||||||
|
/oC4C06KLlLifUmhRYwPLu/jvHcO990HCI0K06yuWUDTbTOdTIjZ3KoYekUYw1QjiMrMMuYkKQXf
|
||||||
|
9XWPAN/v4jzL/96fq1fNWwwIiMSzzDBt4g3i6U3b4LxPHGUlWSU+Jx43qUHiR64rHr9xLros8Myo
|
||||||
|
mUnPE0eJxWIHKx3MSqZGPEUcUzWd8oWsxyrnLc5apcZaffIXRvL6yjLXqYaQxCKWIEGEghrKqMBG
|
||||||
|
nHadFAtpOk/4+Addv0QuhVxlMHIsoAoNsusH/4Pfs7UKkxNeUiQBdL84zscoENoFmnXH+T52nOYJ
|
||||||
|
EHwGrvS2v9oAZj5Jr7e12BHQtw1cXLc1ZQ+43AEGngzZlF0pSCUUCsD7GX1TDui/BcJr3txa5zh9
|
||||||
|
ADI0q9QNcHAIjBUpe93n3T2dc/v3Tmt+P5frcrXBnzRwAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
|
||||||
|
WXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH6QodESQY6jzHvgAAABl0RVh0Q29tbWVudABDcmVhdGVk
|
||||||
|
IHdpdGggR0lNUFeBDhcAAAHySURBVEjHrZZPSFVREMZ/iomaBm1SApFHIEoL+6e7ROHTFkEbaWNb
|
||||||
|
95YgSFiLyECIoJXtIkEXZqSrIoYwQiEScVOCguQylCzKpyFBm3PjvcO5f8L3wV3cufPNnHNmvjO3
|
||||||
|
jAwws06gxTN/lTSfxq0gGx4BFz3bAVCdRizPmOBswFZlZg1HTmBm9UBVzOczafwyL9groAGYAJ4D
|
||||||
|
bcDDwPFE+AKMADPAdWAAaATOSfpdlMDM+oDZAvJPoC7jEf4CagveRySN/0tgZtXAKtBMabAH5CRt
|
||||||
|
RzUYyhj80D1pOA48KCzyQArhE9AlqVJSJXAeeJvC6TezY1GCXmAtxnEd6JD0LjJIWnWchRjOFtAj
|
||||||
|
6bDcETaAS8DLgPNdSXnfKOkPMBzw/wC0S1oq0oEL8jpAWIw7A0nLAfOypO3/UfKJBBGG+AdBJZtZ
|
||||||
|
DhgMEK4mJL8WsN0ws8tFSnYimwRqAoQfQJukLW/1jcB7oClmF7ckPYkSbAK5hJXmXV9HNWoH7gCn
|
||||||
|
U9R9KrquR4GpBOca4L57smJM0n7UptNuu6XCOvDY76KbntMC8C1DsDzwxrPdlrTv62AFuOeu6lZJ
|
||||||
|
3W5MPksIPgdckHTF1XAMeCrpRXAexPT6yYSddEj6eKSJJmk3IcFGqWby51AbSvpeqr+KPjcKC7GT
|
||||||
|
hfgXbteIc85F7RUAAAAASUVORK5CYII=
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
proc ImageViewer {f w node} {
|
proc ImageViewer {f w node} {
|
||||||
|
global factor cfgVariables
|
||||||
set factor($node) 1.0
|
set factor($node) 1.0
|
||||||
ttk::frame $w.f
|
ttk::frame $w.f
|
||||||
pack $w.f -side left -fill both -expand true
|
pack $w.f -side left -fill both -expand true
|
||||||
canvas $w.f.c -xscrollcommand "$w.f.x set" -yscrollcommand "$w.y set"
|
canvas $w.f.c -xscrollcommand "$w.f.x set" -yscrollcommand "$w.y set" -bg $cfgVariables(backGround)
|
||||||
ttk::scrollbar $w.f.x -ori hori -command "$w.f.c xview"
|
ttk::scrollbar $w.f.x -ori hori -command "$w.f.c xview"
|
||||||
ttk::scrollbar $w.y -ori vert -command "$w.f.c yview"
|
ttk::scrollbar $w.y -ori vert -command "$w.f.c yview"
|
||||||
|
|
||||||
@@ -20,15 +21,15 @@ proc ImageViewer {f w node} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc openImg {fn w node} {
|
proc openImg {fn w node} {
|
||||||
global im1
|
global im1 factor
|
||||||
set im1 [image create photo -file $fn]
|
set im1 [image create photo -file $fn]
|
||||||
#scale $w
|
scale $w $factor($node) $node
|
||||||
list [file size $fn] bytes, [image width $im1]x[image height $im1]
|
list [file size $fn] bytes, [image width $im1]x[image height $im1]
|
||||||
$w create image 1 1 -image $im1 -anchor nw -tag img
|
$w create image 1 1 -image $im1 -anchor nw -tag img
|
||||||
}
|
}
|
||||||
|
|
||||||
proc scale {w {n 1} node} {
|
proc scale {w {n 1} node} {
|
||||||
global im1 im2 factor noteBook tab_label
|
global im1 im2 factor tab_label
|
||||||
set factor($node) [expr {$factor($node) * $n}]
|
set factor($node) [expr {$factor($node) * $n}]
|
||||||
$w delete img
|
$w delete img
|
||||||
catch {image delete $im2}
|
catch {image delete $im2}
|
||||||
@@ -41,7 +42,8 @@ proc scale {w {n 1} node} {
|
|||||||
$im2 copy $im1 -subsample $f $f
|
$im2 copy $im1 -subsample $f $f
|
||||||
}
|
}
|
||||||
$w create image 1 1 -image $im2 -anchor nw -tag img
|
$w create image 1 1 -image $im2 -anchor nw -tag img
|
||||||
$noteBook itemconfigure $node -text "$tab_label (size x$factor($node))"
|
set noteBook [file extension $node]
|
||||||
|
# $noteBook itemconfigure $node -text "(size x$factor($node))"
|
||||||
$w config -scrollregion [$w bbox all]
|
$w config -scrollregion [$w bbox all]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,6 +54,7 @@ proc ImageBase64Encode {text} {
|
|||||||
{"GIF" {.gif}}
|
{"GIF" {.gif}}
|
||||||
{"JPEG" {.jpg}}
|
{"JPEG" {.jpg}}
|
||||||
{"BMP" {.bmp}}
|
{"BMP" {.bmp}}
|
||||||
|
{"SVG" {.svg}}
|
||||||
{"All files" *}
|
{"All files" *}
|
||||||
}
|
}
|
||||||
set img [tk_getOpenFile -initialdir $env(HOME) -filetypes $types -parent .]
|
set img [tk_getOpenFile -initialdir $env(HOME) -filetypes $types -parent .]
|
||||||
@@ -65,5 +68,3 @@ proc ImageBase64Encode {text} {
|
|||||||
$text insert [Position] "image create photo $name -data {\n$data\n}"
|
$text insert [Position] "image create photo $name -data {\n$data\n}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ dict set lexers GO commentMultilineSymbolEnd {*/}
|
|||||||
dict set lexers GO procFindString {func.*?PROCNAME}
|
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 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}
|
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)
|
# SHELL (Bash)
|
||||||
dict set lexers SH commentSymbol {#}
|
dict set lexers SH commentSymbol {#}
|
||||||
@@ -43,6 +44,7 @@ dict set lexers RB tabSize 2
|
|||||||
dict set lexers RB procFindString {(def |class )\s*?PROCNAME}
|
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 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}
|
dict set lexers RB varRegexpCommand {regexp -nocase -all -line -- {^\s*?(\w+)\s*=\s*(.+)($)} $line match varName varValue lineEnd}
|
||||||
|
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
# YAML (ansible)
|
# YAML (ansible)
|
||||||
dict set lexers YML commentSymbol {#}
|
dict set lexers YML commentSymbol {#}
|
||||||
@@ -95,6 +97,8 @@ dict set lexers HTM tabSize 4
|
|||||||
dict set lexers HTM procFindString {<h[0-9]>(<.+>|)PROCNAME(</.+>|)</h[0-9]>}
|
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}
|
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 commentSymbol {--}
|
||||||
dict set lexers LUA procFindString {function\s*?PROCNAME}
|
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 procRegexpCommand {regexp -nocase -all -- {^(local|)\s*?(function)\s([a-zA-Z0-9\-_:]+?)\s+\((.+?)\)} $line match v1 keyWord procName params}
|
||||||
|
|||||||
14
lib/menu.tcl
14
lib/menu.tcl
@@ -9,7 +9,7 @@
|
|||||||
######################################################
|
######################################################
|
||||||
|
|
||||||
proc GetFileMenu {m} {
|
proc GetFileMenu {m} {
|
||||||
global activeProject
|
global activeProject cfgVariables
|
||||||
$m add command -label [::msgcat::mc "New file"] -command Editor::New\
|
$m add command -label [::msgcat::mc "New file"] -command Editor::New\
|
||||||
-accelerator "Ctrl+N"
|
-accelerator "Ctrl+N"
|
||||||
$m add command -label [::msgcat::mc "Open file"] -accelerator "Ctrl+O" -command {
|
$m add command -label [::msgcat::mc "Open file"] -accelerator "Ctrl+O" -command {
|
||||||
@@ -25,8 +25,15 @@ proc GetFileMenu {m} {
|
|||||||
$m add command -label [::msgcat::mc "Close all"] -command {FileOper::CloseAll}
|
$m add command -label [::msgcat::mc "Close all"] -command {FileOper::CloseAll}
|
||||||
|
|
||||||
$m add separator
|
$m add separator
|
||||||
|
menu $m.openRecent
|
||||||
|
$m add cascade -label [::msgcat::mc "Open recent"] -menu $m.openRecent
|
||||||
|
foreach item $cfgVariables(recentFolder) {
|
||||||
|
$m.openRecent add command -label $item -command [list OpenRecentProject $item]
|
||||||
|
}
|
||||||
|
|
||||||
$m add command -label [::msgcat::mc "Open folder"] -accelerator "Ctrl+K" -command {
|
$m add separator
|
||||||
|
|
||||||
|
$m add command -label [::msgcat::mc "Open folder"] -accelerator "Alt+K" -command {
|
||||||
set folderPath [FileOper::OpenFolderDialog]
|
set folderPath [FileOper::OpenFolderDialog]
|
||||||
if {$folderPath != ""} {
|
if {$folderPath != ""} {
|
||||||
# set activeProject $folderPath
|
# set activeProject $folderPath
|
||||||
@@ -69,7 +76,8 @@ proc GetEditMenu {m} {
|
|||||||
$m add separator
|
$m add separator
|
||||||
$m add command -label [::msgcat::mc "Insert image"] -accelerator "Ctrl+I"\
|
$m add command -label [::msgcat::mc "Insert image"] -accelerator "Ctrl+I"\
|
||||||
-command ImageBase64Encode
|
-command ImageBase64Encode
|
||||||
|
$m add separator
|
||||||
|
$m add command -label [::msgcat::mc "Settings"] -command Settings
|
||||||
}
|
}
|
||||||
|
|
||||||
proc GetViewMenu {m} {
|
proc GetViewMenu {m} {
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
# Author: Roman Schaller <r.schaller@gmx.ch> #
|
# Author: Roman Schaller <r.schaller@gmx.ch> #
|
||||||
###########################################################
|
###########################################################
|
||||||
|
|
||||||
::msgcat::mcset de "About ..." "<EFBFBD>ber ..."
|
::msgcat::mcset de "About ..." "Über ..."
|
||||||
::msgcat::mcset de "Add to project" "Zu Projekt hinzuf<EFBFBD>gen"
|
::msgcat::mcset de "Add to project" "Zu Projekt hinzufügen"
|
||||||
::msgcat::mcset de "Author" "Autor"
|
::msgcat::mcset de "Author" "Autor"
|
||||||
::msgcat::mcset de "Text autoformat" "Text autoformat"
|
::msgcat::mcset de "Text autoformat" "Text autoformat"
|
||||||
::msgcat::mcset de "Cancel" "Abbrechen"
|
::msgcat::mcset de "Cancel" "Abbrechen"
|
||||||
@@ -29,9 +29,9 @@
|
|||||||
::msgcat::mcset de "Cut into clipboard" "In Zwischenablage ausschneiden"
|
::msgcat::mcset de "Cut into clipboard" "In Zwischenablage ausschneiden"
|
||||||
::msgcat::mcset de "CVS commit"
|
::msgcat::mcset de "CVS commit"
|
||||||
::msgcat::mcset de "CVS update"
|
::msgcat::mcset de "CVS update"
|
||||||
::msgcat::mcset de "Delete" "L<EFBFBD>schen"
|
::msgcat::mcset de "Delete" "Löschen"
|
||||||
::msgcat::mcset de "Delete backup files" "Backup-Dateien l<EFBFBD>schen"
|
::msgcat::mcset de "Delete backup files" "Backup-Dateien löschen"
|
||||||
::msgcat::mcset de "Delete project" "Projekt l<EFBFBD>schen"
|
::msgcat::mcset de "Delete project" "Projekt löschen"
|
||||||
::msgcat::mcset de "Delete from project" "Von Projekt entfernen"
|
::msgcat::mcset de "Delete from project" "Von Projekt entfernen"
|
||||||
::msgcat::mcset de "Docs dir" "Dok Verzeichnis"
|
::msgcat::mcset de "Docs dir" "Dok Verzeichnis"
|
||||||
::msgcat::mcset de "Don't selected file"
|
::msgcat::mcset de "Don't selected file"
|
||||||
@@ -42,10 +42,10 @@
|
|||||||
::msgcat::mcset de "Error open URL"
|
::msgcat::mcset de "Error open URL"
|
||||||
::msgcat::mcset de "Exit" "Beenden"
|
::msgcat::mcset de "Exit" "Beenden"
|
||||||
::msgcat::mcset de "File" "Datei"
|
::msgcat::mcset de "File" "Datei"
|
||||||
::msgcat::mcset de "File already exists. Overwrite?" "Datei besteht bereits. <EFBFBD>berschreiben?"
|
::msgcat::mcset de "File already exists. Overwrite?" "Datei besteht bereits. Überschreiben?"
|
||||||
::msgcat::mcset de "File modify" "Datei bearbeiten"
|
::msgcat::mcset de "File modify" "Datei bearbeiten"
|
||||||
::msgcat::mcset de "File was modifyed. Close?" "Datei wurde ge<EFBFBD>ndert. Trotzdem schliessen?"
|
::msgcat::mcset de "File was modifyed. Close?" "Datei wurde geändert. Trotzdem schliessen?"
|
||||||
::msgcat::mcset de "File was modifyed. Save?" "Datei wurde ge<EFBFBD>ndert. Jetzt speichern?"
|
::msgcat::mcset de "File was modifyed. Save?" "Datei wurde geändert. Jetzt speichern?"
|
||||||
::msgcat::mcset de "File saved" "Datei gespeichert"
|
::msgcat::mcset de "File saved" "Datei gespeichert"
|
||||||
::msgcat::mcset de "Find" "Suchen"
|
::msgcat::mcset de "Find" "Suchen"
|
||||||
::msgcat::mcset de "Font normal" "Schrift normal"
|
::msgcat::mcset de "Font normal" "Schrift normal"
|
||||||
@@ -55,15 +55,15 @@
|
|||||||
::msgcat::mcset de "Home dir" "Home Verzeichnis"
|
::msgcat::mcset de "Home dir" "Home Verzeichnis"
|
||||||
::msgcat::mcset de "Home page" "Homepage"
|
::msgcat::mcset de "Home page" "Homepage"
|
||||||
::msgcat::mcset de "Image dir" "Image Verzeichnis"
|
::msgcat::mcset de "Image dir" "Image Verzeichnis"
|
||||||
::msgcat::mcset de "Insert" "Einf<EFBFBD>gen"
|
::msgcat::mcset de "Insert" "Einfügen"
|
||||||
::msgcat::mcset de "Interface language" "Interface Sprache"
|
::msgcat::mcset de "Interface language" "Interface Sprache"
|
||||||
::msgcat::mcset de "Install Tcl/Tk Project Manager" "Tcl/Tk Project Manager installieren"
|
::msgcat::mcset de "Install Tcl/Tk Project Manager" "Tcl/Tk Project Manager installieren"
|
||||||
::msgcat::mcset de "Line number" "Zeilennummer"
|
::msgcat::mcset de "Line number" "Zeilennummer"
|
||||||
::msgcat::mcset de "Make RPM" "RPM erstellen"
|
::msgcat::mcset de "Make RPM" "RPM erstellen"
|
||||||
::msgcat::mcset de "Make archive" "Archiv erstellen"
|
::msgcat::mcset de "Make archive" "Archiv erstellen"
|
||||||
::msgcat::mcset de "Make backup files" "Backup-Dateien erstellen"
|
::msgcat::mcset de "Make backup files" "Backup-Dateien erstellen"
|
||||||
::msgcat::mcset de "Must be one file select!" "Eine Datei muss ausgew<EFBFBD>hlt sein!"
|
::msgcat::mcset de "Must be one file select!" "Eine Datei muss ausgewählt sein!"
|
||||||
::msgcat::mcset de "Must be one or two file select!" "Eine oder zwei Dateien m<EFBFBD>ssen ausgew<EFBFBD>hlt sein!"
|
::msgcat::mcset de "Must be one or two file select!" "Eine oder zwei Dateien müssen ausgewählt sein!"
|
||||||
::msgcat::mcset de "Modifying the Registry..."
|
::msgcat::mcset de "Modifying the Registry..."
|
||||||
::msgcat::mcset de "Modules" "Module"
|
::msgcat::mcset de "Modules" "Module"
|
||||||
::msgcat::mcset de "New" "Neu"
|
::msgcat::mcset de "New" "Neu"
|
||||||
@@ -71,19 +71,19 @@
|
|||||||
::msgcat::mcset de "New project" "Neues Projekt"
|
::msgcat::mcset de "New project" "Neues Projekt"
|
||||||
::msgcat::mcset de "Not implemented yet" "Noch nicht implementiert"
|
::msgcat::mcset de "Not implemented yet" "Noch nicht implementiert"
|
||||||
::msgcat::mcset de "Not found active project" "Kein aktives Projekt gefunden"
|
::msgcat::mcset de "Not found active project" "Kein aktives Projekt gefunden"
|
||||||
::msgcat::mcset de "Open" "<EFBFBD>ffnen"
|
::msgcat::mcset de "Open" "Öffnen"
|
||||||
::msgcat::mcset de "Open file" "Datei <EFBFBD>ffnen"
|
::msgcat::mcset de "Open file" "Datei öffnen"
|
||||||
::msgcat::mcset de "Open project" "Projekt <EFBFBD>ffnen"
|
::msgcat::mcset de "Open project" "Projekt öffnen"
|
||||||
::msgcat::mcset de "Opened file in progress" "Ge<EFBFBD>ffnete Datei in Bearbeitung"
|
::msgcat::mcset de "Opened file in progress" "Geöffnete Datei in Bearbeitung"
|
||||||
::msgcat::mcset de "Overwrite" "<EFBFBD>berschreiben"
|
::msgcat::mcset de "Overwrite" "Überschreiben"
|
||||||
::msgcat::mcset de "Paste" "Einf<EFBFBD>gen"
|
::msgcat::mcset de "Paste" "Einfügen"
|
||||||
::msgcat::mcset de "Paste from clipboard" "Von Zwischenablage einf<EFBFBD>gen"
|
::msgcat::mcset de "Paste from clipboard" "Von Zwischenablage einfügen"
|
||||||
::msgcat::mcset de "Print ..." "Drucken ..."
|
::msgcat::mcset de "Print ..." "Drucken ..."
|
||||||
::msgcat::mcset de "Print" "Drucken"
|
::msgcat::mcset de "Print" "Drucken"
|
||||||
::msgcat::mcset de "Print command" "Druck-Befehl"
|
::msgcat::mcset de "Print command" "Druck-Befehl"
|
||||||
::msgcat::mcset de "Print selected text" "Markierter Text drucken"
|
::msgcat::mcset de "Print selected text" "Markierter Text drucken"
|
||||||
::msgcat::mcset de "Program finished successfully" "Programm wurde erfolgreich beendet"
|
::msgcat::mcset de "Program finished successfully" "Programm wurde erfolgreich beendet"
|
||||||
::msgcat::mcset de "Program failed" "Ausf<EFBFBD>hrung fehlgeschlagen"
|
::msgcat::mcset de "Program failed" "Ausführung fehlgeschlagen"
|
||||||
::msgcat::mcset de "Programm output" "Programm Ausgabe"
|
::msgcat::mcset de "Programm output" "Programm Ausgabe"
|
||||||
::msgcat::mcset de "Project" "Projekt"
|
::msgcat::mcset de "Project" "Projekt"
|
||||||
::msgcat::mcset de "Projects" "Projekte"
|
::msgcat::mcset de "Projects" "Projekte"
|
||||||
@@ -101,8 +101,8 @@
|
|||||||
::msgcat::mcset de "Release"
|
::msgcat::mcset de "Release"
|
||||||
::msgcat::mcset de "RPM dir" "RPM Verzeichnis"
|
::msgcat::mcset de "RPM dir" "RPM Verzeichnis"
|
||||||
::msgcat::mcset de "RPM file mask" "RPM Datei Maske"
|
::msgcat::mcset de "RPM file mask" "RPM Datei Maske"
|
||||||
::msgcat::mcset de "Run" "Ausf<EFBFBD>hren"
|
::msgcat::mcset de "Run" "Ausführen"
|
||||||
::msgcat::mcset de "Running project" "Projekt ausf<EFBFBD>hren"
|
::msgcat::mcset de "Running project" "Projekt ausführen"
|
||||||
::msgcat::mcset de "Running file"
|
::msgcat::mcset de "Running file"
|
||||||
::msgcat::mcset de "Save" "Speichern"
|
::msgcat::mcset de "Save" "Speichern"
|
||||||
::msgcat::mcset de "Save as" "Speichern unter"
|
::msgcat::mcset de "Save as" "Speichern unter"
|
||||||
@@ -110,9 +110,9 @@
|
|||||||
::msgcat::mcset de "Save file as" "Datei speichern unter"
|
::msgcat::mcset de "Save file as" "Datei speichern unter"
|
||||||
::msgcat::mcset de "Save all" "Alles speichern"
|
::msgcat::mcset de "Save all" "Alles speichern"
|
||||||
::msgcat::mcset de "Search" "Suchen"
|
::msgcat::mcset de "Search" "Suchen"
|
||||||
::msgcat::mcset de "Select" "Ausw<EFBFBD>hlen"
|
::msgcat::mcset de "Select" "Auswählen"
|
||||||
::msgcat::mcset de "Select directory" "Verzeichnis ausw<EFBFBD>hlen"
|
::msgcat::mcset de "Select directory" "Verzeichnis auswählen"
|
||||||
::msgcat::mcset de "Selected directory" "Ausgew<EFBFBD>hltes Verzeichnis"
|
::msgcat::mcset de "Selected directory" "Ausgewähltes Verzeichnis"
|
||||||
::msgcat::mcset de "Settings" "Einstellungen"
|
::msgcat::mcset de "Settings" "Einstellungen"
|
||||||
::msgcat::mcset de "Show backup files" "Backup-Dateien anzeigen"
|
::msgcat::mcset de "Show backup files" "Backup-Dateien anzeigen"
|
||||||
::msgcat::mcset de "Interpretator" "Interpreter"
|
::msgcat::mcset de "Interpretator" "Interpreter"
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
::msgcat::mcset de "TGZ file mask" "TGZ Datei Maske"
|
::msgcat::mcset de "TGZ file mask" "TGZ Datei Maske"
|
||||||
::msgcat::mcset de "Thanks" "Danksagung"
|
::msgcat::mcset de "Thanks" "Danksagung"
|
||||||
::msgcat::mcset de "Toolbar" "Symbolleiste"
|
::msgcat::mcset de "Toolbar" "Symbolleiste"
|
||||||
::msgcat::mcset de "Undo" "R<EFBFBD>ckg<EFBFBD>ngig"
|
::msgcat::mcset de "Undo" "Rückgängig"
|
||||||
::msgcat::mcset de "Update"
|
::msgcat::mcset de "Update"
|
||||||
::msgcat::mcset de "Version"
|
::msgcat::mcset de "Version"
|
||||||
::msgcat::mcset de "View" "Ansicht"
|
::msgcat::mcset de "View" "Ansicht"
|
||||||
@@ -130,4 +130,3 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -59,12 +59,16 @@
|
|||||||
::msgcat::mcset en "Editor font bold"
|
::msgcat::mcset en "Editor font bold"
|
||||||
::msgcat::mcset en "Error open URL"
|
::msgcat::mcset en "Error open URL"
|
||||||
::msgcat::mcset en "Editor settings"
|
::msgcat::mcset en "Editor settings"
|
||||||
|
::msgcat::mcset en "Enter command for execute file"
|
||||||
::msgcat::mcset en "Exit"
|
::msgcat::mcset en "Exit"
|
||||||
::msgcat::mcset en "File"
|
::msgcat::mcset en "File"
|
||||||
::msgcat::mcset en "File already exists. Overwrite?"
|
::msgcat::mcset en "File already exists. Overwrite?"
|
||||||
::msgcat::mcset en "File modify"
|
::msgcat::mcset en "File modify"
|
||||||
::msgcat::mcset en "File was modifyed. Close?"
|
::msgcat::mcset en "File was modifyed. Close?"
|
||||||
::msgcat::mcset en "File was modifyed. Save?"
|
::msgcat::mcset en "File was modifyed. Save?"
|
||||||
|
::msgcat::mcset en "The file looks like a binary file. Open anyway?"
|
||||||
|
::msgcat::mcset en "The file looks like a image. Support not implemented yet."
|
||||||
|
::msgcat::mcset en "The file size to big. Open anyway?"
|
||||||
::msgcat::mcset en "File saved"
|
::msgcat::mcset en "File saved"
|
||||||
::msgcat::mcset en "Files"
|
::msgcat::mcset en "Files"
|
||||||
::msgcat::mcset en "Find"
|
::msgcat::mcset en "Find"
|
||||||
@@ -108,6 +112,7 @@
|
|||||||
::msgcat::mcset en "Open file"
|
::msgcat::mcset en "Open file"
|
||||||
::msgcat::mcset en "Open project"
|
::msgcat::mcset en "Open project"
|
||||||
::msgcat::mcset en "Opened file in progress"
|
::msgcat::mcset en "Opened file in progress"
|
||||||
|
::msgcat::mcset en "Open recent"
|
||||||
::msgcat::mcset en "Operators"
|
::msgcat::mcset en "Operators"
|
||||||
::msgcat::mcset en "Overwrite"
|
::msgcat::mcset en "Overwrite"
|
||||||
::msgcat::mcset en "Parameters"
|
::msgcat::mcset en "Parameters"
|
||||||
@@ -181,7 +186,3 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
::msgcat::mcset ru "Close" "Закрыть"
|
::msgcat::mcset ru "Close" "Закрыть"
|
||||||
::msgcat::mcset ru "Close all" "Закрыть все"
|
::msgcat::mcset ru "Close all" "Закрыть все"
|
||||||
::msgcat::mcset ru "Close file" "Закрыть файл"
|
::msgcat::mcset ru "Close file" "Закрыть файл"
|
||||||
::msgcat::mcset ru "Close folder" "Закрыть папку"
|
::msgcat::mcset ru "Close folder" "Закрыть каталог"
|
||||||
::msgcat::mcset ru "Close Project Manager?" "Выйти из программы?"
|
::msgcat::mcset ru "Close Project Manager?" "Выйти из программы?"
|
||||||
::msgcat::mcset ru "Comments" "Коментарии"
|
::msgcat::mcset ru "Comments" "Коментарии"
|
||||||
::msgcat::mcset ru "Comment selected" "Закоментировать"
|
::msgcat::mcset ru "Comment selected" "Закоментировать"
|
||||||
@@ -77,6 +77,7 @@
|
|||||||
::msgcat::mcset ru "Editor settings" "Настройки редактора"
|
::msgcat::mcset ru "Editor settings" "Настройки редактора"
|
||||||
::msgcat::mcset ru "Editor helpers" "Подсказки при вводе"
|
::msgcat::mcset ru "Editor helpers" "Подсказки при вводе"
|
||||||
::msgcat::mcset ru "Encode" "Перекодировка"
|
::msgcat::mcset ru "Encode" "Перекодировка"
|
||||||
|
::msgcat::mcset ru "Enter command for execute file" "Введите команду для запуска текущего файла"
|
||||||
::msgcat::mcset ru "Authorisation required" "Требуется авторизация"
|
::msgcat::mcset ru "Authorisation required" "Требуется авторизация"
|
||||||
::msgcat::mcset ru "Error open URL" "Ошибка открытия URL"
|
::msgcat::mcset ru "Error open URL" "Ошибка открытия URL"
|
||||||
::msgcat::mcset ru "Exit" "Выход"
|
::msgcat::mcset ru "Exit" "Выход"
|
||||||
@@ -88,6 +89,9 @@
|
|||||||
::msgcat::mcset ru "File was modifyed" "Файл был изменен"
|
::msgcat::mcset ru "File was modifyed" "Файл был изменен"
|
||||||
::msgcat::mcset ru "File modify" "Файл изменен"
|
::msgcat::mcset ru "File modify" "Файл изменен"
|
||||||
::msgcat::mcset ru "File saved" "Файл сохранен"
|
::msgcat::mcset ru "File saved" "Файл сохранен"
|
||||||
|
::msgcat::mcset ru "The file looks like a binary file. Open anyway?" "Файл похож на двоичный. Открыть все равно?"
|
||||||
|
::msgcat::mcset ru "The file looks like a image. Support not implemented yet." "Файл выглядит как изображение. Поддержка пока не реализована."
|
||||||
|
::msgcat::mcset ru "The file size to big. Open anyway?" "Файл большого размера. Открыть все равно?"
|
||||||
::msgcat::mcset ru "Find" "Найти"
|
::msgcat::mcset ru "Find" "Найти"
|
||||||
::msgcat::mcset ru "Found" "Найдено"
|
::msgcat::mcset ru "Found" "Найдено"
|
||||||
::msgcat::mcset ru "Find in files" "Найти в файлах"
|
::msgcat::mcset ru "Find in files" "Найти в файлах"
|
||||||
@@ -138,9 +142,10 @@
|
|||||||
::msgcat::mcset ru "No" "Нет"
|
::msgcat::mcset ru "No" "Нет"
|
||||||
::msgcat::mcset ru "Open" "Открыть"
|
::msgcat::mcset ru "Open" "Открыть"
|
||||||
::msgcat::mcset ru "Open file" "Открыть файл"
|
::msgcat::mcset ru "Open file" "Открыть файл"
|
||||||
::msgcat::mcset ru "Open folder" "Открыть папку"
|
::msgcat::mcset ru "Open folder" "Открыть каталог"
|
||||||
::msgcat::mcset ru "Open project" "Открыть проект"
|
::msgcat::mcset ru "Open project" "Открыть проект"
|
||||||
::msgcat::mcset ru "Opened file in progress" "Открытие файла"
|
::msgcat::mcset ru "Opened file in progress" "Открытие файла"
|
||||||
|
::msgcat::mcset ru "Open recent" "Открыть недавнее"
|
||||||
::msgcat::mcset ru "Operators" "Операторы"
|
::msgcat::mcset ru "Operators" "Операторы"
|
||||||
::msgcat::mcset ru "Overwrite" "Замена"
|
::msgcat::mcset ru "Overwrite" "Замена"
|
||||||
::msgcat::mcset ru "Parameters" "Параметры"
|
::msgcat::mcset ru "Parameters" "Параметры"
|
||||||
@@ -195,7 +200,7 @@
|
|||||||
::msgcat::mcset ru "Select directory" "Выбор директории"
|
::msgcat::mcset ru "Select directory" "Выбор директории"
|
||||||
::msgcat::mcset ru "Selected directory" "Директория"
|
::msgcat::mcset ru "Selected directory" "Директория"
|
||||||
::msgcat::mcset ru "Selection color" "Цвет выделения"
|
::msgcat::mcset ru "Selection color" "Цвет выделения"
|
||||||
::msgcat::mcset ru "Settings" "Установки"
|
::msgcat::mcset ru "Settings" "Настройки"
|
||||||
::msgcat::mcset ru "Statusbar" "Строка статуса"
|
::msgcat::mcset ru "Statusbar" "Строка статуса"
|
||||||
::msgcat::mcset ru "Show backup files" "Показывать временные файлы"
|
::msgcat::mcset ru "Show backup files" "Показывать временные файлы"
|
||||||
::msgcat::mcset ru "Show the Menu" "Показывать меню"
|
::msgcat::mcset ru "Show the Menu" "Показывать меню"
|
||||||
|
|||||||
@@ -13,7 +13,9 @@ namespace eval NB {
|
|||||||
proc InsertItem {nb item type} {
|
proc InsertItem {nb item type} {
|
||||||
switch $type {
|
switch $type {
|
||||||
file {
|
file {
|
||||||
regsub -all {\.|/|\\|\s} $item "_" itemName
|
set item [string tolower $item]
|
||||||
|
regsub -all {\.|/|\\|\s|:} $item "_" itemName
|
||||||
|
# puts "$item -> $itemName"
|
||||||
if [winfo exists $nb.$itemName] {
|
if [winfo exists $nb.$itemName] {
|
||||||
set fm $nb.$itemName
|
set fm $nb.$itemName
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -239,6 +239,7 @@ proc FindImage {ext} {
|
|||||||
JP2
|
JP2
|
||||||
ICO
|
ICO
|
||||||
XPM
|
XPM
|
||||||
|
SVG
|
||||||
}
|
}
|
||||||
foreach img [image names] {
|
foreach img [image names] {
|
||||||
if [regexp -nocase -all -- "^($ext)(_16x12)" $img match v1 v2] {
|
if [regexp -nocase -all -- "^($ext)(_16x12)" $img match v1 v2] {
|
||||||
@@ -276,17 +277,17 @@ namespace eval Help {
|
|||||||
proc SearchVariable {txt} {
|
proc SearchVariable {txt} {
|
||||||
global fileStructure project variables
|
global fileStructure project variables
|
||||||
set varName [$txt get {insert wordstart} {insert wordend}]
|
set varName [$txt get {insert wordstart} {insert wordend}]
|
||||||
puts ">>>$varName<<<"
|
# puts ">>>$varName<<<"
|
||||||
if {[info exists project] == 0} {return}
|
if {[info exists project] == 0} {return}
|
||||||
foreach f [array names project] {
|
foreach f [array names project] {
|
||||||
puts "--$f"
|
# puts "--$f"
|
||||||
puts "----"
|
# puts "----"
|
||||||
foreach a $project($f) {
|
foreach a $project($f) {
|
||||||
puts "-----$variables($a)"
|
# puts "-----$variables($a)"
|
||||||
foreach b $variables($a) {
|
foreach b $variables($a) {
|
||||||
puts "------$b -- [lindex $b 0]"
|
# puts "------$b -- [lindex $b 0]"
|
||||||
if {$varName eq [lindex $b 0]} {
|
if {$varName eq [lindex $b 0]} {
|
||||||
puts "УРААААААА $varName = $b в файле $a \n\t [lindex $b 0]"
|
# puts "УРААААААА $varName = $b в файле $a \n\t [lindex $b 0]"
|
||||||
# FindVariablesDialog $txt "$varName: \[...\][file tail $a]"
|
# FindVariablesDialog $txt "$varName: \[...\][file tail $a]"
|
||||||
lappend l [list $varName [lindex $b 1] $a]
|
lappend l [list $varName [lindex $b 1] $a]
|
||||||
}
|
}
|
||||||
@@ -354,7 +355,7 @@ proc FindVariablesDialog {txt args} {
|
|||||||
foreach { word } $args {
|
foreach { word } $args {
|
||||||
foreach lst $word {
|
foreach lst $word {
|
||||||
# set l [split $lst " "]
|
# set l [split $lst " "]
|
||||||
puts "[lindex $lst 0] -[lindex $lst 1] -[lindex $lst 2]"
|
# puts "[lindex $lst 0] -[lindex $lst 1] -[lindex $lst 2]"
|
||||||
# lappend l2 [lindex $l 0] [lindex $l 1] [file tail [lindex $l 2]]
|
# lappend l2 [lindex $l 0] [lindex $l 1] [file tail [lindex $l 2]]
|
||||||
# $win.lBox insert {} end -values $lst -text {1 2 3}
|
# $win.lBox insert {} end -values $lst -text {1 2 3}
|
||||||
$win.lBox insert end "[lindex $lst 0] > [lindex $lst 1] > [lindex $lst 2]\n"
|
$win.lBox insert end "[lindex $lst 0] > [lindex $lst 1] > [lindex $lst 2]\n"
|
||||||
@@ -440,7 +441,7 @@ proc SearchStringInFolder {str} {
|
|||||||
if {$tcl_platform(platform) == "windows"} {
|
if {$tcl_platform(platform) == "windows"} {
|
||||||
} elseif {$tcl_platform(platform) == "mac"} {
|
} elseif {$tcl_platform(platform) == "mac"} {
|
||||||
} elseif {$tcl_platform(platform) == "unix"} {
|
} elseif {$tcl_platform(platform) == "unix"} {
|
||||||
puts "$cfgVariables(searchCommand) $cfgVariables(searchCommandOptions) $str $activeProject"
|
# puts "$cfgVariables(searchCommand) $cfgVariables(searchCommandOptions) $str $activeProject"
|
||||||
# Составляем строку (точнее список) для запуска команды
|
# Составляем строку (точнее список) для запуска команды
|
||||||
set cmd exec
|
set cmd exec
|
||||||
regsub -all {\[} $str {\\[} str
|
regsub -all {\[} $str {\\[} str
|
||||||
@@ -682,3 +683,297 @@ proc SetActiveProject {path} {
|
|||||||
.frmStatus.lblGitLogo configure -image git_logo_20x20
|
.frmStatus.lblGitLogo configure -image git_logo_20x20
|
||||||
.frmStatus.lblGit configure -text "[::msgcat::mc "Branch"]: [Git::Branches current]"
|
.frmStatus.lblGit configure -text "[::msgcat::mc "Branch"]: [Git::Branches current]"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Added recently opened folder into menu "File"->"Open recent"
|
||||||
|
proc OpenRecentProject {path} {
|
||||||
|
SetActiveProject $path
|
||||||
|
FileOper::ReadFolder $path
|
||||||
|
ReadFilesFromDirectory $path $path
|
||||||
|
}
|
||||||
|
|
||||||
|
proc AddRecentEditedFolder {path} {
|
||||||
|
global cfgVariables
|
||||||
|
if {$path == ""} {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if {[info exists cfgVariables(recentFolder)] == 0} {
|
||||||
|
set cfgVariables(recentFolder) [list $path]
|
||||||
|
} else {
|
||||||
|
# check if path already in a list
|
||||||
|
foreach item $cfgVariables(recentFolder) {
|
||||||
|
if {$item == $path} {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# check list length, and remove 0 element if length is 10
|
||||||
|
if {[llength $cfgVariables(recentFolder)] == 10} {
|
||||||
|
# lremove $cfgVariables(recentFolder) 0; # tcl 8.7
|
||||||
|
set cfgVariables(recentFolder) [lrange $cfgVariables(recentFolder) 1 end]
|
||||||
|
}
|
||||||
|
lappend cfgVariables(recentFolder) $path
|
||||||
|
}
|
||||||
|
.frmMenu.mnuFile.m.openRecent add command -label $path -command [list OpenRecentProject $path]
|
||||||
|
}
|
||||||
|
|
||||||
|
# ================== OLD ====================
|
||||||
|
proc launchBrowser {url} {
|
||||||
|
global tcl_platform
|
||||||
|
if {$tcl_platform(platform) eq "windows"} {
|
||||||
|
set command [list {*}[auto_execok start] {}]
|
||||||
|
if {[file isdirectory $url]} {
|
||||||
|
set url [file nativename [file join $url .]]
|
||||||
|
}
|
||||||
|
} elseif {$tcl_platform(os) eq "Darwin"} {
|
||||||
|
set command [list open]
|
||||||
|
} else {
|
||||||
|
set command [list xdg-open]
|
||||||
|
}
|
||||||
|
exec {*}$command $url &
|
||||||
|
}
|
||||||
|
## EXEC EXTERNAL BROWSER AND GOTO URL ##
|
||||||
|
proc GoToURL {url} {
|
||||||
|
global env tcl_platform
|
||||||
|
if {$tcl_platform(platform) == "windows"} {
|
||||||
|
set pipe [open "|iexplore $url" "r"]
|
||||||
|
} elseif {$tcl_platform(platform) == "mac"} {
|
||||||
|
set pipe [open "|iexplore $url" "r"]
|
||||||
|
} elseif {$tcl_platform(platform) == "unix"} {
|
||||||
|
#$env(BROWSER)
|
||||||
|
#set pipe [open "|$env(BROWSER) $url" "r"]
|
||||||
|
launchBrowser $url
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fileevent $pipe readable
|
||||||
|
fconfigure $pipe -buffering none -blocking no
|
||||||
|
}
|
||||||
|
## MAKING TAR ARCHIVE ##
|
||||||
|
proc MakeTGZ {} {
|
||||||
|
global activeProject tgzDir tgzNamed workDir projDir env tcl_platform
|
||||||
|
if {$activeProject == ""} {
|
||||||
|
set answer [tk_messageBox\
|
||||||
|
-message [::msgcat::mc "Not found active project"]\
|
||||||
|
-type ok -icon warning\
|
||||||
|
-title [::msgcat::mc "Warning"]]
|
||||||
|
case $answer {
|
||||||
|
ok {return 0}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FileDialog tree save_all
|
||||||
|
set file [open [file join $workDir $activeProject.proj] r]
|
||||||
|
while {[gets $file line]>=0} {
|
||||||
|
scan $line "%s" keyWord
|
||||||
|
set string [string range $line [string first "\"" $line] [string last "\"" $line]]
|
||||||
|
set string [string trim $string "\""]
|
||||||
|
if {$keyWord == "ProjectDirName"} {
|
||||||
|
set dir "$string"
|
||||||
|
}
|
||||||
|
if {$keyWord == "ProjectVersion"} {
|
||||||
|
set version "$string"
|
||||||
|
}
|
||||||
|
if {$keyWord == "ProjectRelease"} {
|
||||||
|
set release "$string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close $file
|
||||||
|
set res [split $tgzNamed "-"]
|
||||||
|
set name [lindex $res 0]
|
||||||
|
set ver [lindex $res 1]
|
||||||
|
set rel [lindex $res 2]
|
||||||
|
if {$name == "projectName"} {
|
||||||
|
set name $activeProject
|
||||||
|
}
|
||||||
|
if {$ver == "version"} {
|
||||||
|
append name "-$version"
|
||||||
|
}
|
||||||
|
if {$rel == "release"} {
|
||||||
|
append name "-$release"
|
||||||
|
}
|
||||||
|
# multiplatform featuring #
|
||||||
|
if {$tcl_platform(platform) == "windows"} {
|
||||||
|
append name ".zip"
|
||||||
|
} elseif {$tcl_platform(platform) == "mac"} {
|
||||||
|
append name ".zip"
|
||||||
|
} elseif {$tcl_platform(platform) == "unix"} {
|
||||||
|
append name ".tar.gz"
|
||||||
|
}
|
||||||
|
catch {cd $projDir} res
|
||||||
|
if {[file exists [file join $tgzDir $name]] == 1} {
|
||||||
|
set answer [tk_messageBox\
|
||||||
|
-message "[::msgcat::mc "File already exists. Overwrite?"] \"$name\" ?"\
|
||||||
|
-type yesno -icon question -default yes\
|
||||||
|
-title [::msgcat::mc "Question"]]
|
||||||
|
case $answer {
|
||||||
|
yes {file delete [file join $tgzDir $name]}
|
||||||
|
no {return 0}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# multiplatform featuring #
|
||||||
|
if {$tcl_platform(platform) == "windows"} {
|
||||||
|
catch [exec pkzip -r -p [file join $tgzDir $name] [file join $activeProject *]] err
|
||||||
|
} elseif {$tcl_platform(platform) == "mac"} {
|
||||||
|
catch [exec zip -c [file join $tgzDir $name] $activeProject] err
|
||||||
|
} elseif {$tcl_platform(platform) == "unix"} {
|
||||||
|
catch [exec tar -czvf [file join $tgzDir $name] $activeProject] err
|
||||||
|
}
|
||||||
|
# message dialog #
|
||||||
|
set msg "[::msgcat::mc "Archive created in"] [file join $tgzDir $name]"
|
||||||
|
set icon info
|
||||||
|
set answer [tk_messageBox\
|
||||||
|
-message "$msg"\
|
||||||
|
-type ok -icon $icon]
|
||||||
|
case $answer {
|
||||||
|
ok {return 0}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
## MAKE PROJ PROCEDURE (RUNNING PROJECT) ##
|
||||||
|
proc Execute {filePath w activeEditor} {
|
||||||
|
global activeProject cfgVariables
|
||||||
|
if {$activeProject == ""} {
|
||||||
|
set answer [tk_messageBox\
|
||||||
|
-message "[::msgcat::mc "Not found active project"]"\
|
||||||
|
-type ok -icon warning\
|
||||||
|
-title [::msgcat::mc "Warning"]]
|
||||||
|
case $answer {
|
||||||
|
ok {return 0}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FileOper::Save
|
||||||
|
set file $filePath
|
||||||
|
set action run
|
||||||
|
# create array with file names #
|
||||||
|
frame $w.frame -borderwidth 2 -relief ridge -background $cfgVariables(backGround)
|
||||||
|
pack $w.frame -side top -fill both -expand true
|
||||||
|
|
||||||
|
|
||||||
|
ctext $w.frame.text -yscrollcommand "$w.frame.yscroll set" \
|
||||||
|
-bg $cfgVariables(backGround) -fg $cfgVariables(foreground) \
|
||||||
|
-relief sunken -wrap word -highlightthickness 0 -font $cfgVariables(font)\
|
||||||
|
-selectborderwidth 0 -selectbackground $cfgVariables(selectbg) -width 10 -height 10
|
||||||
|
scrollbar $w.frame.yscroll -relief sunken -borderwidth {1} -width {10} -takefocus 0 \
|
||||||
|
-command "$w.frame.text yview" -background $cfgVariables(backGround)
|
||||||
|
Highlight::ExecuteColorized $w.frame.text
|
||||||
|
|
||||||
|
pack $w.frame.text -side left -fill both -expand true
|
||||||
|
pack $w.frame.yscroll -side left -fill y
|
||||||
|
|
||||||
|
bind $w.frame.text <Return> [list Run $w $filePath]
|
||||||
|
bind $w.frame.text <Control-r> [list CloseExecuteDialog $w $activeEditor]
|
||||||
|
bind $w.frame.text <Control-Cyrillic_er> [list CloseExecuteDialog $w $activeEditor]
|
||||||
|
# focus -force $w.frmBtn.btnOk
|
||||||
|
# $noteBook raise $node
|
||||||
|
# insert debug data into text widget #
|
||||||
|
$w.frame.text tag configure bold -font $cfgVariables(fontBold)
|
||||||
|
$w.frame.text tag configure error -font $cfgVariables(fontBold) -foreground red
|
||||||
|
$w.frame.text tag add bold 0.0 0.end
|
||||||
|
|
||||||
|
$w.frame.text insert end "[::msgcat::mc "Enter command for execute file"] $filePath >\n"
|
||||||
|
set pos [$w.frame.text index insert]
|
||||||
|
set lineNum [lindex [split $pos "."] 0]
|
||||||
|
$w.frame.text insert 0.0 "======================================================================================\n"
|
||||||
|
$w.frame.text tag add bold $lineNum.0 $lineNum.end
|
||||||
|
Highlight::ExecuteColorized $w.frame.text
|
||||||
|
# focus -force $w.frame.text
|
||||||
|
focus -force $w.frame.text.t
|
||||||
|
}
|
||||||
|
|
||||||
|
proc CloseExecuteDialog {w activeEditor} {
|
||||||
|
destroy $w
|
||||||
|
focus $activeEditor.frmText.t.t
|
||||||
|
}
|
||||||
|
|
||||||
|
proc Run {w filePath} {
|
||||||
|
# Получаем индекс конца последней строки
|
||||||
|
set endIndex [$w.frame.text index "end-1c"]; # или "end-1l lineend"
|
||||||
|
|
||||||
|
# Получаем индекс начала последней строки
|
||||||
|
set startIndex [$w.frame.text index "end-1l linestart"]
|
||||||
|
|
||||||
|
set command [$w.frame.text get $startIndex $endIndex end]
|
||||||
|
# Заменяем знак %f на имя текущего файла
|
||||||
|
regsub -all "%f" $command "$filePath" fullCommand
|
||||||
|
$w.frame.text replace $startIndex $endIndex $fullCommand
|
||||||
|
|
||||||
|
# $w.frame.text insert "end-4l linestart"
|
||||||
|
cd [file dirname $filePath]
|
||||||
|
set pipe [open "|$fullCommand 2> [file join [file dirname $filePath] errors]" "r"]
|
||||||
|
set f [open [file join [file dirname $filePath] errors] "r"]
|
||||||
|
set processPID [pid $pipe]
|
||||||
|
|
||||||
|
bind $w.frame.text <Control-c> [list SendSignal $processPID "SIGINT"]
|
||||||
|
bind $w.frame.text <Control-z> [list SendSignal $processPID "SIGTSTP"]
|
||||||
|
bind $w.frame.text <Control-d> [list SendSignal $processPID "SIGKILL"]
|
||||||
|
|
||||||
|
# set pipe [open "|$command $filePath" "r"]
|
||||||
|
# set f [open [file join ~ tmp errors] "r"]
|
||||||
|
fileevent $pipe readable [list DebugInfo $w.frame.text $pipe $f]
|
||||||
|
fconfigure $pipe -buffering none -blocking no
|
||||||
|
}
|
||||||
|
|
||||||
|
## INSERT DEBUG INFORMATION INTO TEXT WIDGET ##
|
||||||
|
proc DebugInfo {widget file f} {
|
||||||
|
$widget configure -state normal
|
||||||
|
if {[eof $file]} {
|
||||||
|
catch [close $file] msg
|
||||||
|
if {$msg != ""} {
|
||||||
|
puts $msg
|
||||||
|
$widget insert "end-4l linestart" "[::msgcat::mc "Program failed"]: $msg\n";
|
||||||
|
} else {
|
||||||
|
# Highlight::ExecuteColorized $widget
|
||||||
|
puts $msg
|
||||||
|
$widget see "end-1l lineend"
|
||||||
|
$widget delete "end-1l lineend" end
|
||||||
|
# $widget insert end "\n-------------------------------------------------\n"
|
||||||
|
# $widget insert end "[::msgcat::mc "Program finished successfully"]\n"
|
||||||
|
}
|
||||||
|
Highlight::ExecuteColorized $widget
|
||||||
|
# close $f
|
||||||
|
} else {
|
||||||
|
# Highlight::ExecuteColorized $widget
|
||||||
|
$widget insert "end-4l linestart" "[read $file]"
|
||||||
|
}
|
||||||
|
while {[gets $f line]>=0} {
|
||||||
|
Highlight::ExecuteColorized $widget
|
||||||
|
$widget insert "end-4l linestart" "$line\n"
|
||||||
|
# puts $line
|
||||||
|
}
|
||||||
|
# close $f
|
||||||
|
$widget see end
|
||||||
|
$widget tag add error 0.0 0.end
|
||||||
|
# $widget configure -state disabled
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для отправки сигнала процессу
|
||||||
|
proc SendSignal {pid signal} {
|
||||||
|
global tcl_platform
|
||||||
|
|
||||||
|
if {$tcl_platform(platform) eq "unix"} {
|
||||||
|
# На Unix-системах
|
||||||
|
switch -- $signal {
|
||||||
|
"SIGINT" { exec kill -INT $pid } ; # Ctrl+C
|
||||||
|
"SIGTERM" { exec kill -TERM $pid } ; # Завершение
|
||||||
|
"SIGTSTP" { exec kill -TSTP $pid } ; # Ctrl+Z (приостановка)
|
||||||
|
"SIGKILL" { exec kill -KILL $pid } ; # Принудительное завершение
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# На Windows
|
||||||
|
switch -- $signal {
|
||||||
|
"SIGINT" - "SIGTERM" {
|
||||||
|
# Используем taskkill для завершения
|
||||||
|
catch {exec taskkill /PID $pid /T}
|
||||||
|
}
|
||||||
|
"SIGKILL" {
|
||||||
|
# Принудительное завершение на Windows
|
||||||
|
catch {exec taskkill /PID $pid /T /F}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Правка файла настроек
|
||||||
|
proc Settings {} {
|
||||||
|
global dir
|
||||||
|
|
||||||
|
FileOper::Edit [file join $dir(cfg) projman.ini]
|
||||||
|
# Config::read $dir(cfg)
|
||||||
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#
|
#
|
||||||
######################################################
|
######################################################
|
||||||
package require fileutil
|
package require fileutil
|
||||||
package require Thread
|
# package require Thread
|
||||||
|
|
||||||
# TCL procedure
|
# TCL procedure
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ proc GetVariablesFromFile {fileName} {
|
|||||||
set varList ""
|
set varList ""
|
||||||
set params ""
|
set params ""
|
||||||
set varsBegin false
|
set varsBegin false
|
||||||
puts $fileName
|
# puts $fileName
|
||||||
set f [open "$fileName" r]
|
set f [open "$fileName" r]
|
||||||
if {[dict exists $lexers $fileType] == 0} {return}
|
if {[dict exists $lexers $fileType] == 0} {return}
|
||||||
while {[gets $f line] >=0 } {
|
while {[gets $f line] >=0 } {
|
||||||
@@ -32,7 +32,7 @@ proc GetVariablesFromFile {fileName} {
|
|||||||
set indentSize 0
|
set indentSize 0
|
||||||
}
|
}
|
||||||
set varsBegin true
|
set varsBegin true
|
||||||
puts "====== $varsBegin $indentSize"
|
# puts "$varsBegin $indentSize"
|
||||||
continue
|
continue
|
||||||
# lappend varList [list $varName $varValue]
|
# lappend varList [list $varName $varValue]
|
||||||
}
|
}
|
||||||
@@ -41,13 +41,13 @@ proc GetVariablesFromFile {fileName} {
|
|||||||
set l [GetVarFromLine $line $fileType]
|
set l [GetVarFromLine $line $fileType]
|
||||||
if {$line eq ""} {
|
if {$line eq ""} {
|
||||||
set varsBegin false
|
set varsBegin false
|
||||||
puts "====== $varsBegin $indentSize [lindex $l 3]"
|
# puts "$varsBegin $indentSize [lindex $l 3]"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if {[lindex $l 3] ne ""} {
|
if {[lindex $l 3] ne ""} {
|
||||||
if [expr [lindex $l 3] <= $indentSize] {
|
if [expr [lindex $l 3] <= $indentSize] {
|
||||||
set varsBegin false
|
set varsBegin false
|
||||||
puts "====== $varsBegin $indentSize >[lindex $l 3]<"
|
# puts "$varsBegin $indentSize >[lindex $l 3]<"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -79,7 +79,7 @@ proc GetVarFromLine {line fileType} {
|
|||||||
set varType ""
|
set varType ""
|
||||||
}
|
}
|
||||||
set indentLength [string length $indent]
|
set indentLength [string length $indent]
|
||||||
puts "variable: $varName, value: $varValue, type: $varType, indent: >$indent< $indentLength"
|
# puts "variable: $varName, value: $varValue, type: $varType, indent: >$indent< $indentLength"
|
||||||
return [list $varName $varValue $varType $indentLength]
|
return [list $varName $varValue $varType $indentLength]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ proc GetVariablesFromVarFile {fileName} {
|
|||||||
set procList ""
|
set procList ""
|
||||||
set varList ""
|
set varList ""
|
||||||
set params ""
|
set params ""
|
||||||
puts $fileName
|
# puts $fileName
|
||||||
set f [open "$fileName" r]
|
set f [open "$fileName" r]
|
||||||
if {[dict exists $lexers $fileType] == 0} {return}
|
if {[dict exists $lexers $fileType] == 0} {return}
|
||||||
while {[gets $f line] >=0 } {
|
while {[gets $f line] >=0 } {
|
||||||
@@ -122,7 +122,7 @@ proc ReadFilesFromDirectory {directory root {type ""}} {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
foreach fileName [glob -nocomplain *] {
|
foreach fileName [glob -nocomplain *] {
|
||||||
puts "Find file: $fileName [lsearch -exact -nocase $l $fileName]"
|
# puts "Find file: $fileName [lsearch -exact -nocase $l $fileName]"
|
||||||
if {[lsearch -exact $l $fileName] != -1 && [file isdirectory [file join $root $directory $fileName]] == 1} {
|
if {[lsearch -exact $l $fileName] != -1 && [file isdirectory [file join $root $directory $fileName]] == 1} {
|
||||||
# puts "--- $root $fileName"
|
# puts "--- $root $fileName"
|
||||||
ReadFilesFromDirectory [file join $directory $fileName] $root "var"
|
ReadFilesFromDirectory [file join $directory $fileName] $root "var"
|
||||||
@@ -179,8 +179,8 @@ proc ReadFilesFromDirectory {directory root {type ""}} {
|
|||||||
#
|
#
|
||||||
proc Accept { dirLib directory } {
|
proc Accept { dirLib directory } {
|
||||||
global dir
|
global dir
|
||||||
puts $dir(lib)
|
# puts $dir(lib)
|
||||||
puts $dirLib
|
# puts $dirLib
|
||||||
# переменная с указанием ваших действия перед порождением потока
|
# переменная с указанием ваших действия перед порождением потока
|
||||||
set threadinit {
|
set threadinit {
|
||||||
# если необходимо, загружаем исходный tcl код, расположенный в других файлах
|
# если необходимо, загружаем исходный tcl код, расположенный в других файлах
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ namespace eval Tree {
|
|||||||
# puts "$tree $parent $item $type $text"
|
# puts "$tree $parent $item $type $text"
|
||||||
switch $type {
|
switch $type {
|
||||||
file {
|
file {
|
||||||
regsub -all {\.|/|\\|\s} $item "_" subNode
|
regsub -all {\.|/|\\|\s|:} $item "_" subNode
|
||||||
|
set subNode [string tolower $subNode]
|
||||||
# puts "Inserted tree node: $subNode"
|
# puts "Inserted tree node: $subNode"
|
||||||
set fileExt [string trimleft [file extension $text] "."]
|
set fileExt [string trimleft [file extension $text] "."]
|
||||||
#set fileName [string trimleft [file extension $text] "."]
|
#set fileName [string trimleft [file extension $text] "."]
|
||||||
@@ -41,7 +42,8 @@ namespace eval Tree {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
directory {
|
directory {
|
||||||
regsub -all {\.|/|\\|\s} $item "_" subNode
|
regsub -all {\.|/|\\|\s|:} $item "_" subNode
|
||||||
|
set subNode [string tolower $subNode]
|
||||||
# puts $subNode
|
# puts $subNode
|
||||||
if {[string match {*debian*} [string tolower [file tail $item]]]} {
|
if {[string match {*debian*} [string tolower [file tail $item]]]} {
|
||||||
set image [::FindImage debian]
|
set image [::FindImage debian]
|
||||||
@@ -104,7 +106,7 @@ namespace eval Tree {
|
|||||||
set key [lindex [split $id "::"] 0]
|
set key [lindex [split $id "::"] 0]
|
||||||
if {$values eq "" || $key eq ""} {return}
|
if {$values eq "" || $key eq ""} {return}
|
||||||
|
|
||||||
# puts "$key $tree $values"
|
puts "$key $tree $values"
|
||||||
switch -regexp $key {
|
switch -regexp $key {
|
||||||
directory {
|
directory {
|
||||||
FileOper::ReadFolder $values
|
FileOper::ReadFolder $values
|
||||||
@@ -112,6 +114,7 @@ namespace eval Tree {
|
|||||||
}
|
}
|
||||||
file {
|
file {
|
||||||
set v [FileOper::Edit $values $nbEditor]
|
set v [FileOper::Edit $values $nbEditor]
|
||||||
|
puts $v
|
||||||
if {$v eq false} {
|
if {$v eq false} {
|
||||||
$tree delete $id
|
$tree delete $id
|
||||||
}
|
}
|
||||||
|
|||||||
56
projman.tcl
56
projman.tcl
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Tcl ignores the next line -*- tcl -*- \
|
# Tcl ignores the next line -*- tcl -*- \
|
||||||
exec wish "$0" -- "$@"
|
exec wish9.0 "$0" -- "$@"
|
||||||
|
|
||||||
######################################################
|
######################################################
|
||||||
# Tcl/Tk Project manager 2.0
|
# Tcl/Tk Project manager 2.0
|
||||||
@@ -9,8 +9,8 @@ exec wish "$0" -- "$@"
|
|||||||
# Home page: https://nuk-svk.ru
|
# Home page: https://nuk-svk.ru
|
||||||
######################################################
|
######################################################
|
||||||
# Version: 2.0.0
|
# Version: 2.0.0
|
||||||
# Release: alpha
|
# Release: alpha19
|
||||||
# Build: 19122022152600
|
# Build: 30102025145246
|
||||||
######################################################
|
######################################################
|
||||||
|
|
||||||
# определим текущую версию, релиз и т.д.
|
# определим текущую версию, релиз и т.д.
|
||||||
@@ -34,6 +34,38 @@ while {[gets $f line] >=0} {
|
|||||||
}
|
}
|
||||||
close $f
|
close $f
|
||||||
|
|
||||||
|
|
||||||
|
package require msgcat
|
||||||
|
package require inifile
|
||||||
|
package require ctext
|
||||||
|
package require base64
|
||||||
|
package require fileutil
|
||||||
|
# package require Thread
|
||||||
|
package require fileutil::magic::filetype
|
||||||
|
|
||||||
|
# Определим установлен ли пакет Img для расширенной поддержки изображений
|
||||||
|
proc PackagePresent {pkg} {
|
||||||
|
# puts $pkg
|
||||||
|
foreach item [package names] {
|
||||||
|
# puts [string match -nocase Img $item]
|
||||||
|
if {[string match -nocase Img $item] == 1} {
|
||||||
|
puts "The $pkg package was found"
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if {[PackagePresent "Img"] eq "true"} {
|
||||||
|
package require Img
|
||||||
|
} else {
|
||||||
|
puts "Img not present"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Устанавливаем текущий каталог
|
||||||
|
set dir(root) [pwd]
|
||||||
|
set dir(doc) [file join $dir(root) doc]
|
||||||
|
|
||||||
|
# ДОбавляем в список файлы (каталоги) из командной строки
|
||||||
if { $::argc > 0 } {
|
if { $::argc > 0 } {
|
||||||
foreach arg $::argv {
|
foreach arg $::argv {
|
||||||
lappend opened $arg
|
lappend opened $arg
|
||||||
@@ -41,17 +73,6 @@ if { $::argc > 0 } {
|
|||||||
puts $opened
|
puts $opened
|
||||||
}
|
}
|
||||||
|
|
||||||
package require msgcat
|
|
||||||
package require inifile
|
|
||||||
package require ctext
|
|
||||||
package require base64
|
|
||||||
package require fileutil
|
|
||||||
package require Thread
|
|
||||||
package require fileutil::magic::filetype
|
|
||||||
|
|
||||||
# Устанавливаем текущий каталог
|
|
||||||
set dir(root) [pwd]
|
|
||||||
set dir(doc) [file join $dir(root) doc]
|
|
||||||
|
|
||||||
# Устанавливаем рабочий каталог, если его нет то создаём.
|
# Устанавливаем рабочий каталог, если его нет то создаём.
|
||||||
# Согласно спецификации XDG проверяем наличие переменных и каталогов
|
# Согласно спецификации XDG проверяем наличие переменных и каталогов
|
||||||
@@ -109,13 +130,14 @@ puts "Setting the locale... [::msgcat::mclocale]"
|
|||||||
|
|
||||||
source [file join $dir(lib) gui.tcl]
|
source [file join $dir(lib) gui.tcl]
|
||||||
|
|
||||||
|
Git::CommandPathSetting
|
||||||
|
|
||||||
# Open the PATH if command line argument has been setting
|
# Open the PATH if command line argument has been setting
|
||||||
if [info exists opened] {
|
if [info exists opened] {
|
||||||
# puts ">$opened"
|
|
||||||
foreach path $opened {
|
foreach path $opened {
|
||||||
|
# Приводим путь к полному виду
|
||||||
if {[file pathtype $path] ne "absolute"} {
|
if {[file pathtype $path] ne "absolute"} {
|
||||||
puts "\n\t[::msgcat::mc "Specify the absolute path to the directory or file"]: $path\n"
|
set path [file normalize $path]
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
if [file isdirectory $path] {
|
if [file isdirectory $path] {
|
||||||
# set activeProject $path
|
# set activeProject $path
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
#
|
#
|
||||||
# $Id: black.tcl,v 1.2 2009/10/25 19:21:30 oberdorfer Exp $
|
# $Id: black.tcl,v 1.2 2009/10/25 19:21:30 oberdorfer Exp $
|
||||||
|
|
||||||
package require Tk 8.4; # minimum version for Tile
|
package require Tk; # minimum version for Tile
|
||||||
package require tile 0.8; # depends upon tile
|
package require tile; # depends upon tile
|
||||||
|
|
||||||
|
|
||||||
namespace eval ttk {
|
namespace eval ttk {
|
||||||
@@ -39,6 +39,7 @@ namespace eval ttk::theme::black {
|
|||||||
-lightest "#ffffff"
|
-lightest "#ffffff"
|
||||||
-selectbg "#4a6984"
|
-selectbg "#4a6984"
|
||||||
-selectfg "#ffffff"
|
-selectfg "#ffffff"
|
||||||
|
-font "#c8c8c8"
|
||||||
}
|
}
|
||||||
if {[info commands ::ttk::style] ne ""} {
|
if {[info commands ::ttk::style] ne ""} {
|
||||||
set styleCmd ttk::style
|
set styleCmd ttk::style
|
||||||
@@ -75,21 +76,22 @@ namespace eval ttk::theme::black {
|
|||||||
# ttk widgets.
|
# ttk widgets.
|
||||||
$styleCmd configure TButton \
|
$styleCmd configure TButton \
|
||||||
-width -8 -padding {5 1} -relief link
|
-width -8 -padding {5 1} -relief link
|
||||||
$styleCmd configure TMenubutton\
|
$styleCmd configure TMenubutton \
|
||||||
-relief flat -arrowsize 0
|
-relief flat -arrowsize 0
|
||||||
|
|
||||||
$styleCmd configure TCheckbutton \
|
$styleCmd configure TCheckbutton \
|
||||||
-indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
|
-indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
|
||||||
$styleCmd configure TRadiobutton \
|
$styleCmd configure TRadiobutton \
|
||||||
-indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
|
-indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
|
||||||
|
|
||||||
$styleCmd configure TEntry \
|
$styleCmd configure TEntry \
|
||||||
-fieldbackground gray20 -foreground black \
|
-fieldbackground gray20 -foreground $colors(-font) \
|
||||||
-padding {2 0} -border -1
|
-padding {2 0} -border -1
|
||||||
$styleCmd configure TCombobox \
|
$styleCmd configure TCombobox \
|
||||||
-fieldbackground white -foreground black \
|
-fieldbackground white -foreground $colors(-font)\
|
||||||
-padding {2 0}
|
-padding {2 0}
|
||||||
$styleCmd configure TSpinbox \
|
$styleCmd configure TSpinbox \
|
||||||
-fieldbackground white -foreground black \
|
-fieldbackground white -foreground $colors(-font) \
|
||||||
-padding {2 0}
|
-padding {2 0}
|
||||||
|
|
||||||
$styleCmd configure TNotebook \
|
$styleCmd configure TNotebook \
|
||||||
@@ -103,8 +105,8 @@ namespace eval ttk::theme::black {
|
|||||||
|
|
||||||
# tk widgets.
|
# tk widgets.
|
||||||
$styleCmd map Menu \
|
$styleCmd map Menu \
|
||||||
-background [list active $colors(-lighter)] \
|
-background [list active $colors(-dark)] \
|
||||||
-foreground [list disabled $colors(-disabledfg)]
|
-foreground [list disabled $colors(-lightest)] \
|
||||||
|
|
||||||
$styleCmd configure TreeCtrl \
|
$styleCmd configure TreeCtrl \
|
||||||
-background gray30 -itembackground {gray60 gray50} \
|
-background gray30 -itembackground {gray60 gray50} \
|
||||||
@@ -116,6 +118,11 @@ namespace eval ttk::theme::black {
|
|||||||
# -background [list selected $colors(-selectbg)] \
|
# -background [list selected $colors(-selectbg)] \
|
||||||
|
|
||||||
$styleCmd configure Treeview -fieldbackground gray25
|
$styleCmd configure Treeview -fieldbackground gray25
|
||||||
|
|
||||||
|
$styleCmd map Canvas \
|
||||||
|
-background [list selected $colors(-lighter)] \
|
||||||
|
-foreground [list selected $colors(-selectfg)] \
|
||||||
|
-highlightbackground [list selected $colors(-lighter)]
|
||||||
}
|
}
|
||||||
puts [ttk::style element names]
|
puts [ttk::style element names]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#-*-tcl-*-
|
#-*-tcl-*-
|
||||||
# the next line restarts using wish \
|
# the next line restarts using wish \
|
||||||
exec wish "$0" -- ${1+"$@"}
|
exec wish8.6 "$0" -- ${1+"$@"}
|
||||||
|
|
||||||
|
|
||||||
set version 3.0
|
set version 3.0
|
||||||
@@ -1365,6 +1365,3 @@ proc make-regexp::make-regexp {words} {
|
|||||||
set regexp
|
set regexp
|
||||||
}
|
}
|
||||||
#==============================================================================================
|
#==============================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user