Compare commits
110 Commits
6f85de472a
...
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 | ||
|
|
cb6cefd8ac | ||
|
|
0fe4541dc0 | ||
|
|
3467d6a89a | ||
|
|
3bf3b80e38 | ||
|
|
a1248f6941 | ||
|
|
777eaa01e5 | ||
|
|
2043a03c0b | ||
|
|
d215c1ca25 |
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
|
||||||
444
CHANGELOG
444
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
|
|
||||||
- Added GO highlight
|
|
||||||
|
|
||||||
27/07/2022
|
|
||||||
- Fixed comment/uncomment procedure (last line in selected text)
|
|
||||||
- Fixed error with save new (untitled) file
|
|
||||||
|
|
||||||
01/08/2022
|
svkalinin <svk@nuk-svk.ru> Thu, 23 Feb 2023 13:46:56 +0300
|
||||||
- Added inserting base64 encoded image
|
- Добавил изображений программы
|
||||||
- Added read the file structure and inserting into tree
|
|
||||||
- Added GUI font, and GUI foreground color setting
|
|
||||||
- Added tcl and go files images
|
|
||||||
- Added image for file type (extention)
|
|
||||||
|
|
||||||
03/08/2022
|
svk <svkalinin@samsonpost.ru> Mon, 6 Feb 2023 09:27:38 +0300
|
||||||
- Added some files icon
|
- Исправлена ошибка при создании нового файла.
|
||||||
- Fix finded procedure (function) (tree click)
|
|
||||||
- Fix showing position in statusbar
|
|
||||||
|
|
||||||
12/08/2022
|
svk <svkalinin@samsonpost.ru> Wed, 21 Dec 2022 16:53:44 +0300
|
||||||
- Fixed comment/uncomment procedure depending on the file type
|
- Добавил пиктограммы файлов
|
||||||
- Added About dialog
|
- Исправил процедуру Files::CloseAll ('Закрыть всё')
|
||||||
- Fixed read structure (procedure names like Proc:Name)
|
- Добавлена поддержка Lua
|
||||||
|
- Исправлена процедура (рас)комментирования
|
||||||
15/08/2022
|
- Исправил ошибку при выходе в процедуре (Congig::Write)
|
||||||
- Added open/close braces highlight
|
- Добавил раскраски в ruby
|
||||||
- Fixed GO structure reader
|
- Добавлена возможность многострочных комментариев
|
||||||
|
- В Ruby lexer добавлен поиск переменных коде.
|
||||||
|
- Новая сборка
|
||||||
|
- Немного почистил. Добавлен поиск переменных по питоньим исходникам (lexer)
|
||||||
|
- Еще одно исправление подсветки для INI
|
||||||
|
- Новая сборка
|
||||||
|
- Исправлене подсветки комментариев в INI
|
||||||
|
- Новая сборка
|
||||||
|
- Изменения в подсветке для INI
|
||||||
|
- Добавил подсветку для Desktop и Spec файлов
|
||||||
|
- Добавил вывод отладочной инфы в процедуру
|
||||||
|
- Исправил подсветку комментариев в TCL
|
||||||
|
- Оптимизация процедур
|
||||||
|
- Добавлена подсветка и навигация по HTML. Исправлена подсветка XML
|
||||||
|
- Новая сборка
|
||||||
|
- Добавил иконку для изображений
|
||||||
|
- Добавил иконки для perl
|
||||||
|
- Исправлена подсветка и навигация по коду для Ruby
|
||||||
|
- Обновил список изменений
|
||||||
|
- Исправлено сохранение сессии в редакторе (открытие папки и файлов при следующем запуске)
|
||||||
|
- Добавлена новая секция UserSession
|
||||||
|
- Исправление ошибки при открытии файла
|
||||||
|
- Добавлена поддержка INI-файлов (подсветка
|
||||||
|
- Добавлена поддержка perl
|
||||||
|
- Добавил икогнку для файлов git
|
||||||
|
- Новая сборка
|
||||||
|
- Добавлены иконуи для ключей и сертификатов. Изменен поиск иконки (вощзвращает теерь с размером)
|
||||||
|
- Новая чборка
|
||||||
|
- Реализован двухпанельный режим работы (вертиикальное разделение)
|
||||||
|
- ДОбавил сборку в drone
|
||||||
|
- Исправлена ошибка при открытии ansible.cfg
|
||||||
|
- Добавил деактивацию кнопки 'Создать репу' если не выбран активный проект (не открыто ни одного каталога/папки)
|
||||||
|
- Добавлены команды git init и git config (зачаток). Изменен диалог клонирования репозитория (добавлена кнопка Создать репозиторий)
|
||||||
|
- Исправил ошибку git при открытии файла или каталога если репозиторий не инициализирован (нет .git каталога внутри проекта)
|
||||||
|
- Переименовал файл
|
||||||
|
- Добавил скриты сборки rpm
|
||||||
|
- Добавлено обрамление выделенного текста прии нажатии '_' в markdown
|
||||||
|
- Исправление подсветки
|
||||||
|
- Добавлена поддержка markdown (подсветка
|
||||||
|
- Обновил описание
|
||||||
|
- Новая сборка
|
||||||
|
- Исправлена ошибка с закрытием файлов в редакторе при закрытии папки
|
||||||
|
- Новая сборка
|
||||||
|
- Переделана процедура определения активного проекта. Исправлено определение ветки git. Теперь можно нормально работать в двух и более открытых проектах (каталогах/папках)
|
||||||
|
- Новая сборка
|
||||||
|
- Доделан вид диалога поиска по файлам
|
||||||
|
- Исправлен поиск имени функции
|
||||||
|
- Новая сборка
|
||||||
|
- Добавлен диалог клонирования репозитория
|
||||||
|
- Добавил разделитель
|
||||||
|
- Исправлено переключение вкладок при закрытии
|
||||||
|
- Исправлено закрытиие вкладки Git по нажатию соотв. кнопки в панели инструментов
|
||||||
|
- Добавлен пункт 'Закрыть всё'
|
||||||
|
- Новая сборка
|
||||||
|
- Исправлено соответствие открытого файла в редакторе и выделение этого файла в дереве
|
||||||
|
- Исправлено переключение отображения панели (лево/право) в без перезапуска программы.
|
||||||
|
- Украшательства интерфейса - Реакция на нажатие кнопки в панели инструментов теперь зависит от контекста
|
||||||
|
- Добавлено включение отключение отображения Меню
|
||||||
|
- Добавлено копирование текущей строки в буфер по Atl+Y
|
||||||
|
- Исправлена ошибка с отображением файловой панели
|
||||||
|
- Добавлены и исправлены функции отображения меню
|
||||||
|
- Фикс
|
||||||
|
- Добавлен параметр statusBarShow - показ строки статуса
|
||||||
|
- Добавлены переводы
|
||||||
|
- Добавлена проверка параметров вызова файл или просто строка
|
||||||
|
- Новая сборка
|
||||||
|
- Добавлен вывод сообщений об ошибке в диалоге
|
||||||
|
- Добавлено обновления списка файлов в дереве
|
||||||
|
- Добавлена процедура вывода информационного сообщения
|
||||||
|
- Добавлена команда Git::Reset (git reset _file_) на кнопке в диалоге. Для отмены 'git add'
|
||||||
|
- Добавлена кнопка Обновление в диалог работы с Git
|
||||||
|
- Исправление процедуры поиска наименования функции
|
||||||
|
- Фиксы диалога работы с Git (работа с выделенными файлами в списках)
|
||||||
|
- Фиксы и тесты работы с git
|
||||||
|
- Исправление выборанескольких файлов в диалоге Git
|
||||||
|
- Новая сборка
|
||||||
|
- Украшательства
|
||||||
|
- Новая сборка
|
||||||
|
- Исправление рег. выражения чтения файлов командой git status
|
||||||
|
- Настройки темы
|
||||||
|
- Исправлено рег. выпражение определения mime типа файла
|
||||||
|
- Ntvs
|
||||||
|
- Новая сборка
|
||||||
|
- Добавил очистку текстовых полей при добавлении файлов в коммит
|
||||||
|
- Исправрелдение Git::Commit (индексация всех файлов в проекте)
|
||||||
|
- Изменения
|
||||||
|
- Исправления глюков
|
||||||
|
- Украшательства строки статуса
|
||||||
|
- Добавлен просмотрщик изображений
|
||||||
|
- Добавил рамку кону ввода номера
|
||||||
|
- Добавлен диалог перехода по номеру строки Ctrl-G
|
||||||
|
- Добавлено определение типа файла
|
||||||
|
- Новая сборка
|
||||||
|
- Добавил удаление артефактов сборки пакета
|
||||||
|
- Новая сборка
|
||||||
|
- Добавлена подсветка имен файлов в выводе git show
|
||||||
|
- Новая сборка
|
||||||
|
- Допилдивание процедуры автоввода имен переменных
|
||||||
|
- Небольшие правки в подсказках по переменным
|
||||||
|
- Новая сборка
|
||||||
|
- Исправлена подсветка SHELL переменных а YAML файлах (ansible
|
||||||
|
- Новая сборка. Добавлена подсказка по переменным при вводе.
|
||||||
|
- Добавлено определение символа переменной
|
||||||
|
- Определение коррректного положения встроенного окна
|
||||||
|
- Новая сборка
|
||||||
|
- Добавлен вывод подсказки при вводе переменных
|
||||||
|
- Добавлены опции для включсения полджсказок по переменным и процедурам
|
||||||
|
- Новая сборка
|
||||||
|
- Исправления гуя
|
||||||
|
- Добавил диалог создания и переключения git-веток
|
||||||
|
- Создание ветки
|
||||||
|
- Новые иконки
|
||||||
|
- Косметические изменения
|
||||||
|
- Починил push
|
||||||
|
- Добавлены новые иконки
|
||||||
|
- Обработка ошибок
|
||||||
|
- Новая сборка
|
||||||
|
- Исправлена ошибка при клике на списке с файлами
|
||||||
|
- New build
|
||||||
|
- Сделал просмотр изменений из истории
|
||||||
|
- Добавлено обновление лога изменений
|
||||||
|
- Новый билд
|
||||||
|
- Исправление обновления диалога
|
||||||
|
- Добавлен перевод
|
||||||
|
- git reflog
|
||||||
|
- Добавлен интерфейс работы с Git
|
||||||
|
- Новый релиз
|
||||||
|
- Исправил ошибку если нет изменений
|
||||||
|
- Начало работ по поддержке git
|
||||||
|
- New build
|
||||||
|
- Bug fix
|
||||||
|
- Добавлен диалог поиска строки в файлах в текущем каталоге. Используется 'grep -r'.
|
||||||
|
- Добавлены настройки для системной команды поиска в фвайлах
|
||||||
|
- Добавлено рекурсивное чтение каталога при открытии. Диалог поиска теперь работает раздельно при разделении окна. Диалог навигации по функци так-же работает раздельно
|
||||||
|
- Добавлены ключевые слова для подстветки питона
|
||||||
|
- Добавлена проверка на отсутствие файла и удаление из дерева
|
||||||
|
|
||||||
16/08/2022
|
svkalinin <svk@nuk-svk.ru> Sun, 18 Sep 2022 10:46:59 +0300
|
||||||
- Added selection of all words in the text by clicking on the any word
|
- Добавлен поиск переменной в тексте после открытия файла где она указана
|
||||||
|
- Исправлена ошибка при запуске
|
||||||
17/08/2022
|
|
||||||
- Added "Vew Panel" menu and "Panel side" (left/right)
|
|
||||||
- Changed standard Tk menu on TTK::menu
|
|
||||||
- Added config options filesPanelPlace (left/right)
|
|
||||||
- Fixed ViewFilesTree procedure with rigth variable filesPanelShow (true/false)
|
|
||||||
|
|
||||||
22/08/2022
|
Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 16 Sep 2022 16:37:17 +0300
|
||||||
- Fixed clicking on proc or func names into tree if file was closed
|
- Новая сборка
|
||||||
|
- Исправил сохранение открытого каталога в настройках
|
||||||
|
- Рефакторинг
|
||||||
|
- Переделал дилог навигации по переменным
|
||||||
|
- Добавлен еще один каталог с переменными - default
|
||||||
|
- Добавлено сохранение состояния редактора (открытые каталоги
|
||||||
|
- Изменения в диалоге поиска
|
||||||
|
- Отображение горизонтальной полосы прокрутки в зависимости от переноса строк в редакторе
|
||||||
|
- Установка фокуса на текст в редакторе при щелчке на заголовок вкладки
|
||||||
|
- Сделал перемещение курсора в такуюже позицию в тексте при разделении окна редактора
|
||||||
|
- Добавлено горизонтальное разделение окна редактора. Исправлено удаление строки по Alt+R - реперь строка удаляется полностью вместе с символами переноса. Исправлено сохранение нового файла (untitled) но всеравно как-то криво.
|
||||||
|
- Изменения по чтению и отображению переменных по файлам. Причесал диалог
|
||||||
|
|
||||||
23/08/2022
|
Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 2 Sep 2022 17:01:53 +0300
|
||||||
- Added procedure and function navigation window by Ctrl+j pressed on editor
|
- Добавил поддержку ruby
|
||||||
- Fixed correctly focused on editor text widget
|
- Исправлен выход окна со списком функций за пределы экрана. Поиск и замена теперь работает. Добавлены некоторые иконки для файлов
|
||||||
|
- Начало реализации процедуры поиска и замены (поиск криво но работает)
|
||||||
|
- Исправлено закерытие вкладки по щелчку мыши. Добавлена настройка переноса строк в редакторе. Добавлены сочетания клавиш ctrl+pgup cntrl+pgdown для переключения между вкладками редактора. Добавлен диалог закрытия папки (каталога)
|
||||||
|
- Укоротил имя корневого каталога в дереве
|
||||||
|
- Добавлены ключиевые слова GO
|
||||||
|
- Исправлена подсветка ключевых слов tcl и добавлены виджеты
|
||||||
|
- Исправлена некорректная установка иконки на каталог
|
||||||
|
- Добавлены горячие клавиши для удаления слова
|
||||||
|
- Добавлены сочетания клавиш для удаления слова
|
||||||
|
|
||||||
24/08/2022
|
svkalinin <svk@nuk-svk.ru> Fri, 26 Aug 2022 12:36:14 +0300
|
||||||
- Fixed ReadStructure procedure (added lexer)
|
- Изменил(а) на 'README.md'
|
||||||
|
|
||||||
25/08/2022
|
svk <svkalinin@samsonpost.ru> Fri, 26 Aug 2022 12:29:19 +0300
|
||||||
- Fixed focus on the editor window after clicking Escape in the function selection dialog
|
- Добавлена поддержка python. Обновлена библиотека иконок.
|
||||||
- Change color scheme for FindFunction dialog
|
- Исправлена установка фокуса на окно диалога GotoFunctionDialog и обратно на текст. Переделан механизм чтения структуры файла и добавлены команды для sh (bash)
|
||||||
- Added sh icon (for shell scripts)
|
- Добавлены настройки темы для диалога навигации по функциям
|
||||||
- Fixed lexers for find procedures and functions
|
- Добавлена иконка shell (*.sh)
|
||||||
|
- Исправлено комментирование строк
|
||||||
|
- Добавлен диалог навигации по структуре (процедурам) по Ctrl+F. Исправлена ошибка при закрытии файлов (функции из дерева теперь удаляются).
|
||||||
|
- Добавил цвет фона для панели с номерами строк
|
||||||
|
|
||||||
26/08/2022
|
svkalinin <svk@nuk-svk.ru> Wed, 17 Aug 2022 21:37:06 +0300
|
||||||
- Update image library (added some icons)
|
- Убрал доки по tcl
|
||||||
- Added hot keys:
|
- Слегка поменял стиль оформления
|
||||||
- Alt+p - Show/Hide additional panel
|
|
||||||
- Alt+w - delete word on the cursor below
|
|
||||||
- Alt+r - delete row
|
|
||||||
- Alt+b - delete text beetween line Begin and cursor
|
|
||||||
- Alt+e - delete text between cursor and line End
|
|
||||||
- Fix close braces indent
|
|
||||||
|
|
||||||
30/08/2022
|
Sergey Kalinin <svkalinin@samsonpost.ru> Wed, 17 Aug 2022 16:52:22 +0300
|
||||||
- Fix the clicked by the close button on a tab
|
- Добавлен выбор расположения боковой панели
|
||||||
- Added "View"->"Editors word wrap" menu and procedure
|
- Добавлено выделение всех слов в тексте по двойному щелчку мышой на любом слове
|
||||||
- Added bindings "Ctrl+PgUp" and "Ctrl+PgDown" for next or prior tab selecting
|
- Исправлено чтение структуры GO файлов: корректное отображение в дереве функций возвращающих значения разных типов
|
||||||
- Added "Close file" dialog
|
- Добавлена подсветка скобок
|
||||||
|
- Новая сборка
|
||||||
|
- Исправлены процедуры comment/uncomment
|
||||||
|
- Изменены имена переенных
|
||||||
|
- Изменены имена переменных
|
||||||
|
- Добавлена запись номера сборки (build) в исходник
|
||||||
|
- Добавлено меню Помощь -> О программе. Добавлено окно 'О программе'
|
||||||
|
- Исправлен поиск процедуры в тексте по клику в дереве
|
||||||
|
- Исправлен поиск процедуры в тексте по клику в дереве. Исправлено отображение позиции курсора в строке статуса
|
||||||
|
- ДОбавлены иконки для некоторых типов файлов
|
||||||
|
- Добавлено отображение структуры исходника в дереве (функции (go) и процедуры (tcl))
|
||||||
|
- Добавлено кодирование изображения в base64 и вставка в редактируемый текст
|
||||||
|
- Добавлены шрифт и цвет шриыта для общего интерфейса
|
||||||
|
- Исправлено комментирование выделенного фрагмента (последняя строка) Исправлено закрытие untitled вкладок
|
||||||
|
- Исправлено комментирование выделенных строк
|
||||||
|
- Добавлена подсветка для GO
|
||||||
|
- Исправлено подключение требуемой процедуры подсветки
|
||||||
|
- Убрал вставку закрывающихся кавычек в пустой строке. Ибо пока глючит.
|
||||||
|
- Добавлен диалог сохранения файла при закрытии вкладки редактора и при выходе из программы если есть несохраненные файлы
|
||||||
|
- Исправлен рабочий каталог
|
||||||
|
- Добавлены переводы для диалога
|
||||||
|
- Исправлен скрипт сборки пакета для Debian
|
||||||
|
- Исправил скрипт сборки пакета. Добавил .gitignore
|
||||||
|
|
||||||
01/09/2022
|
svkalinin <svk@nuk-svk.ru> Thu, 21 Jul 2022 12:18:29 +0300
|
||||||
- Added search function name into Function navigation whem press key
|
- Изменил(а) на 'README.md'
|
||||||
- Added find and replace dialog
|
|
||||||
- Fixed correct placement the Function dialog
|
|
||||||
|
|
||||||
14/09/2022
|
svk <svkalinin@samsonpost.ru> Thu, 21 Jul 2022 12:15:19 +0300
|
||||||
- Added procedure for the horizontal split a text window
|
- Change readme
|
||||||
- Fixed untitled file saved
|
- Added Dark theme
|
||||||
- Fixed Alt+R (delete row), now will are deleted row with a "\n\r" symbols
|
- New version of ProjMan
|
||||||
|
- Some changes into GUI (tabs)
|
||||||
20/10/200
|
|
||||||
- Added Git support: add and commit changes, show git log, show each commit...
|
|
||||||
|
|
||||||
11/11/2022
|
svkalinin <banzaj28@yandex.ru> Thu, 5 Jul 2018 08:41:18 +0300
|
||||||
- Added GoTo Line dialog
|
- Fixed error if file was not select
|
||||||
- Fixed Git commit procedure
|
- README.md отредактирован онлайн на Bitbucket
|
||||||
- Added variable and procedure helper
|
|
||||||
|
|
||||||
18/11/2022
|
Sergey Kalinin <banzaj28@yandex.ru> Sat, 24 Mar 2018 12:20:27 +0300
|
||||||
- Add Refresh button into Git Dialog
|
- Rename readme
|
||||||
- Fixed FindFunction
|
|
||||||
|
|
||||||
07/12/2022
|
Sergey <banzaj28@yandex.ru> Sat, 24 Mar 2018 12:17:09 +0300
|
||||||
- Added Perl language support
|
- README отредактирован онлайн на Bitbucket
|
||||||
- Added INI-files support
|
- Added sort procedure for projects tree
|
||||||
- Added MD-files structure navigation
|
- Added small toolbar into project tree
|
||||||
- Fixed saving user session and opening files and folders at the next start
|
- Added insert base64 encoded image into source code
|
||||||
- Added buttons "Git clone" and "Git init" in the dialog box displayed when the Git button is pressed
|
- Some GUI change
|
||||||
|
- Change messages files
|
||||||
|
- Added Menu button into tollbar and Hide/Show options into config
|
||||||
|
- Added procedure arguments into tree Change read config procedure (error fixed) Fixed error when project running
|
||||||
|
- Some Fix
|
||||||
|
- GoToNumber entry small change
|
||||||
|
- GoToLine procedure tuning
|
||||||
|
- Added GoTo line into toolbar Fixed fileinfo update when tree one click Fixed bug with opened files have extention is a upper case
|
||||||
|
- Critical fix again
|
||||||
|
|
||||||
|
Sergey Kalinin <banzaj28@yandex.ru> Sat, 24 Feb 2018 18:16:01 +0300
|
||||||
|
- Critical bug fixed with create project
|
||||||
|
- Refactoring all procedures is the Tree working
|
||||||
|
|
||||||
|
Sergey <svk@s.kalinin-nb> Sat, 24 Feb 2018 12:22:08 +0300
|
||||||
|
- Fixed Add new file if name was existing into tree
|
||||||
|
|
||||||
|
svk <banzaj28@yandex.ru> Fri, 23 Feb 2018 11:58:39 +0300
|
||||||
|
- Rename archive projman-latest
|
||||||
|
- Fixed AddToProj procedure for file browser tree Disable OpComplite procedure
|
||||||
|
- Refactoring Settigs procedure source code Some changes into messages files (localisation)
|
||||||
|
- Added option "constrainedwidth true" for ScrollableFrame
|
||||||
|
- Fix saving "Show dot files" option Fixed correctly highlightning procedure names
|
||||||
|
- Refactoring auto update file structure (tree). Now structure updated when file was saving Refactoring "Settings" dialog
|
||||||
|
- Fix "New file" proc ctrl+n hotkey
|
||||||
|
- - Fixed edit files into root node from file browser tree - Change "Delete project" dialog and procedure
|
||||||
|
- Refactoring "Add New Projects" "Project Settings" (e.t.c.) dialogs Added "Add as new project" dialog for file browser Add popup menu for file browser Fixed some highlight bug
|
||||||
|
- Fixed runing on Win7 without installation
|
||||||
|
- Added opening last active project when project run
|
||||||
|
- Fixed parsing procedure with names like ::proc::name or proc_na::me(aa) and parameters {{} {} {}}
|
||||||
|
- Put logo and icon images into source code
|
||||||
|
- Fixed AutoComplite precedure for TCL/TK-projects Added colored icon for main window Fixed "Close all" procedure if opened files from projects and file browser
|
||||||
|
- Added saving main window geometry into projman.conf file when close programm
|
||||||
|
- Merge branch 'master' of https://bitbucket.org/svk28/projman
|
||||||
|
- Delete temp file
|
||||||
|
- bitbucket-pipelines.yml отредактирован онлайн на Bitbucket
|
||||||
|
- change docker image
|
||||||
|
- add apt
|
||||||
|
- bitbucket-pipelines.yml отредактирован онлайн на Bitbucket
|
||||||
|
- Initial Bitbucket Pipelines configuration
|
||||||
|
- Add web site into Readme
|
||||||
|
- Added gray theme Fixed work with file from directory but not project.
|
||||||
|
- Some FileDialog fixes
|
||||||
|
- File Browser added
|
||||||
|
- Auto indent added for () [] braces
|
||||||
|
- Some changes
|
||||||
|
- Change hotkeys "Control+
|
||||||
|
- Add comment/uncomment selected text
|
||||||
|
- Tcl
|
||||||
|
- - Russian help files was conerting into utf-8 encode
|
||||||
|
- Change Logo and About dialog (added new homepage and git repo addresses)
|
||||||
|
- Added binding mouse button: click on notebook tab highlight opened file name in tree Change "Paste from Clipboard" function Change popup editor menu (undo
|
||||||
|
- Modules load procedure changes
|
||||||
|
- Remove some files
|
||||||
|
- GiTK running fixed
|
||||||
|
- Fixed paste text highlight Fixed setting edited flag when paste the text from buffer Change authors email and home page
|
||||||
|
|
||||||
|
Sergey Kalinin <svk@kalinin.carfix> Mon, 22 Jan 2018 17:54:18 +0300
|
||||||
|
- - Remove ctags support - Added gitk (gui for git) support
|
||||||
|
- Change version into Install.tcl script
|
||||||
|
|
||||||
|
svk <svk@l0001h.office> Fri, 12 Jan 2018 13:44:26 +0300
|
||||||
|
- README отредактирован онлайн на Bitbucket
|
||||||
|
- test.tcl deleted online with Bitbucket
|
||||||
|
|
||||||
|
Sergey Kalinin <banzaj28@gmail.com> Mon, 19 Oct 2015 14:22:09 +0300
|
||||||
|
- some bugs in install.tcl fixed
|
||||||
|
|
||||||
|
svk28 <ksv@L-AO-TEH1.DALS.local> Mon, 19 Oct 2015 13:37:21 +0300
|
||||||
|
- Initial commit with contributors
|
||||||
|
- Initial release
|
||||||
|
|||||||
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
|
|
||||||
######################################################
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
59
README.md
59
README.md
@@ -16,6 +16,7 @@ Highlightning and source code navigation:
|
|||||||
* Shell (BASH)
|
* Shell (BASH)
|
||||||
* Markdown
|
* Markdown
|
||||||
* YAML (Ansible support)
|
* YAML (Ansible support)
|
||||||
|
* Lua
|
||||||
|
|
||||||
Highlightning:
|
Highlightning:
|
||||||
|
|
||||||
@@ -28,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:
|
||||||
|
|
||||||
@@ -80,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
|
||||||
@@ -94,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
|
||||||
@@ -102,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
|
||||||
@@ -60,9 +60,11 @@ lineNumberShow=true
|
|||||||
tabSize=4
|
tabSize=4
|
||||||
procedureHelper=false
|
procedureHelper=false
|
||||||
variableHelper=true
|
variableHelper=true
|
||||||
|
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+"]
|
||||||
@@ -101,8 +103,10 @@ proc Config::write {dir} {
|
|||||||
# Добавим пути к открытым в редакторе файлам в переменную
|
# Добавим пути к открытым в редакторе файлам в переменную
|
||||||
if [info exists editors] {
|
if [info exists editors] {
|
||||||
foreach i [dict keys $editors] {
|
foreach i [dict keys $editors] {
|
||||||
puts [dict get $editors $i]
|
# puts [dict get $editors $i]
|
||||||
lappend edited [dict get $editors $i fileFullPath]
|
if [dict exists $editors $i fileFullPath] {
|
||||||
|
lappend edited [dict get $editors $i fileFullPath]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if [info exists edited] {
|
if [info exists edited] {
|
||||||
ini::set $cfgFile "UserSession" editedFiles $edited
|
ini::set $cfgFile "UserSession" editedFiles $edited
|
||||||
|
|||||||
324
lib/editor.tcl
324
lib/editor.tcl
@@ -20,30 +20,55 @@ namespace eval Editor {
|
|||||||
|
|
||||||
# Comment one string or selected string
|
# Comment one string or selected string
|
||||||
proc Comment {txt fileType} {
|
proc Comment {txt fileType} {
|
||||||
global lexers
|
global lexers cfgVariables
|
||||||
set selIndex [$txt tag ranges sel]
|
set selIndex [$txt tag ranges sel]
|
||||||
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]
|
||||||
|
set useMultiLine false
|
||||||
|
|
||||||
if [dict exists $lexers $fileType commentSymbol] {
|
if [dict exists $lexers $fileType commentSymbol] {
|
||||||
set symbol [dict get $lexers $fileType commentSymbol]
|
set symbol [dict get $lexers $fileType commentSymbol]
|
||||||
} else {
|
} else {
|
||||||
set symbol "#"
|
set symbol "#"
|
||||||
}
|
}
|
||||||
puts "Select : $selIndex"
|
if {[dict exists $lexers $fileType commentMultilineSymbolBegin] == 1 && $cfgVariables(multilineComments) eq "true"} {
|
||||||
|
set symbolBegin [dict get $lexers $fileType commentMultilineSymbolBegin]
|
||||||
|
} else {
|
||||||
|
set symbolBegin ""
|
||||||
|
}
|
||||||
|
if {[dict exists $lexers $fileType commentMultilineSymbolEnd] == 1 && $cfgVariables(multilineComments) eq "true"} {
|
||||||
|
set symbolEnd [dict get $lexers $fileType commentMultilineSymbolEnd]
|
||||||
|
} else {
|
||||||
|
set symbolEnd ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# puts "Select : $selIndex"
|
||||||
if {$selIndex != ""} {
|
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]
|
||||||
|
# Если выделенно больше одной строки то включаем многострочный комментарий
|
||||||
|
if {$lineBegin < $lineEnd} {
|
||||||
|
set useMultiLine true
|
||||||
|
}
|
||||||
set posBegin [lindex [split [lindex $selIndex 1] "."] 0]
|
set posBegin [lindex [split [lindex $selIndex 1] "."] 0]
|
||||||
set posEnd [lindex [split [lindex $selIndex 1] "."] 1]
|
set posEnd [lindex [split [lindex $selIndex 1] "."] 1]
|
||||||
if {$lineEnd == $lineNum && $posEnd == 0} {
|
if {$lineEnd == $lineNum && $posEnd == 0} {
|
||||||
set lineEnd [expr $lineEnd - 1]
|
set lineEnd [expr $lineEnd - 1]
|
||||||
}
|
}
|
||||||
for {set i $lineBegin} {$i <=$lineEnd} {incr i} {
|
if {$symbolEnd ne ""} {
|
||||||
#$txt insert $i.0 "# "
|
$txt insert $lineEnd.end "\n$symbolEnd"
|
||||||
regexp -nocase -indices -- {^(\s*)(.*?)} [$txt get $i.0 $i.end] match v1 v2
|
set lineEnd [expr $lineEnd + 2]
|
||||||
$txt insert $i.[lindex [split $v2] 0] "$symbol "
|
}
|
||||||
|
if {$symbolBegin ne ""} {
|
||||||
|
$txt insert $lineBegin.0 "$symbolBegin\n"
|
||||||
|
}
|
||||||
|
if {$symbolBegin eq "" && $symbolEnd eq ""} {
|
||||||
|
for {set i $lineBegin} {$i <= $lineEnd} {incr i} {
|
||||||
|
#$txt insert $i.0 "# "
|
||||||
|
regexp -nocase -indices -- {^(\s*)(.*?)} [$txt get $i.0 $i.end] match v1 v2
|
||||||
|
$txt insert $i.[lindex [split $v2] 0] "$symbol "
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$txt tag add comments $lineBegin.0 $lineEnd.end
|
$txt tag add comments $lineBegin.0 $lineEnd.end
|
||||||
$txt tag raise comments
|
$txt tag raise comments
|
||||||
@@ -62,12 +87,12 @@ 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]
|
||||||
|
|
||||||
if {[info procs GetComment:$fileType] ne ""} {
|
# if {[info procs GetComment:$fileType] ne ""} {
|
||||||
set commentProcedure "GetComment:$fileType"
|
# set commentProcedure "GetComment"
|
||||||
} else {
|
# } else {
|
||||||
set commentProcedure {GetComment:Unknown}
|
# set commentProcedure {GetComment:Unknown}
|
||||||
}
|
# }
|
||||||
# set commentProcedure "GetComment"
|
set commentProcedure "GetComment"
|
||||||
|
|
||||||
# puts "$fileType, $commentProcedure"
|
# puts "$fileType, $commentProcedure"
|
||||||
if {$selIndex != ""} {
|
if {$selIndex != ""} {
|
||||||
@@ -80,7 +105,7 @@ namespace eval Editor {
|
|||||||
}
|
}
|
||||||
for {set i $lineBegin} {$i <=$lineEnd} {incr i} {
|
for {set i $lineBegin} {$i <=$lineEnd} {incr i} {
|
||||||
set str [$txt get $i.0 $i.end]
|
set str [$txt get $i.0 $i.end]
|
||||||
set commentSymbolIndex [$commentProcedure $str]
|
set commentSymbolIndex [$commentProcedure $fileType $str]
|
||||||
if {$commentSymbolIndex != 0} {
|
if {$commentSymbolIndex != 0} {
|
||||||
$txt delete $i.[lindex $commentSymbolIndex 0] $i.[lindex $commentSymbolIndex 1]
|
$txt delete $i.[lindex $commentSymbolIndex 0] $i.[lindex $commentSymbolIndex 1]
|
||||||
}
|
}
|
||||||
@@ -91,7 +116,7 @@ namespace eval Editor {
|
|||||||
} else {
|
} else {
|
||||||
set posNum [lindex [split $pos "."] 1]
|
set posNum [lindex [split $pos "."] 1]
|
||||||
set str [$txt get $lineNum.0 $lineNum.end]
|
set str [$txt get $lineNum.0 $lineNum.end]
|
||||||
set commentSymbolIndex [$commentProcedure $str]
|
set commentSymbolIndex [$commentProcedure $fileType $str]
|
||||||
if {$commentSymbolIndex != 0} {
|
if {$commentSymbolIndex != 0} {
|
||||||
$txt delete $lineNum.[lindex $commentSymbolIndex 0] $lineNum.[lindex $commentSymbolIndex 1]
|
$txt delete $lineNum.[lindex $commentSymbolIndex 0] $lineNum.[lindex $commentSymbolIndex 1]
|
||||||
}
|
}
|
||||||
@@ -101,35 +126,47 @@ namespace eval Editor {
|
|||||||
}
|
}
|
||||||
proc GetComment {fileType str} {
|
proc GetComment {fileType str} {
|
||||||
global lexers
|
global lexers
|
||||||
puts [dict get $lexers $fileType commentSymbol]
|
# puts [dict get $lexers $fileType commentSymbol]
|
||||||
if {[dict exists $lexers $fileType commentSymbol] == 0} {
|
if [dict exists $lexers $fileType commentSymbol] {
|
||||||
return
|
# return
|
||||||
|
set symbol [dict get $lexers $fileType commentSymbol]
|
||||||
|
} else {
|
||||||
|
set symbol "#"
|
||||||
}
|
}
|
||||||
|
regsub -all {\{} $str "\\{" str
|
||||||
|
regsub -all {\}} $str "\\}" str
|
||||||
|
regsub -all {\[} $str {\\[} str
|
||||||
|
regsub -all {\]} $str {\\]} str
|
||||||
|
|
||||||
if {[regexp -nocase -indices -- {(^| )([dict get $lexers $fileType commentSymbol]\s)(.+)} $str match v1 v2 v3]} {
|
set cmd "regexp -nocase -indices -- {(^|\s+)\\s*($symbol\\s*)(.*)} {$str} match v1 v2 v3"
|
||||||
puts "$match, $v1, $v2, $v3"
|
|
||||||
|
# puts $cmd
|
||||||
|
# puts [eval $cmd]
|
||||||
|
if [eval $cmd] {
|
||||||
|
# puts "$match, $v2, $v3"
|
||||||
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
||||||
} else {
|
} else {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc GetComment:TCL {str} {
|
# proc GetComment:TCL {str} {
|
||||||
if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 v2 v3]} {
|
# if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 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
|
||||||
}
|
# }
|
||||||
}
|
# }
|
||||||
proc GetComment:GO {str} {
|
# proc GetComment:GO {str} {
|
||||||
# puts ">>>>>>>$str"
|
# # puts ">>>>>>>$str"
|
||||||
if {[regexp -nocase -indices -- {(^| |\t)(//\s)(.+)} $str match v1 v2 v3]} {
|
# if {[regexp -nocase -indices -- {(^| |\t)(//\s)(.+)} $str match v1 v2 v3]} {
|
||||||
# puts ">>>> $match $v1 $v2 $v3"
|
# # puts ">>>> $match $v1 $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
|
||||||
}
|
# }
|
||||||
}
|
# }
|
||||||
|
|
||||||
proc GetComment:Unknown {str} {
|
proc GetComment:Unknown {str} {
|
||||||
if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 v2 v3]} {
|
if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 v2 v3]} {
|
||||||
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
||||||
@@ -216,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]
|
||||||
@@ -240,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"]
|
||||||
@@ -338,19 +375,12 @@ namespace eval Editor {
|
|||||||
|
|
||||||
proc SelectionHighlight {txt} {
|
proc SelectionHighlight {txt} {
|
||||||
variable selectionText
|
variable selectionText
|
||||||
|
|
||||||
$txt tag remove lightSelected 1.0 end
|
$txt tag remove lightSelected 1.0 end
|
||||||
|
|
||||||
set selBegin [lindex [$txt tag ranges sel] 0]
|
set selBegin [lindex [$txt tag ranges sel] 0]
|
||||||
set selEnd [lindex [$txt tag ranges sel] 1]
|
set selEnd [lindex [$txt tag ranges sel] 1]
|
||||||
if {$selBegin ne "" && $selEnd ne ""} {
|
if {$selBegin ne "" && $selEnd ne ""} {
|
||||||
set selectionText [$txt get $selBegin $selEnd]
|
set selectionText [$txt get $selBegin $selEnd]
|
||||||
# set selBeginRow [lindex [split $selBegin "."] 1]
|
|
||||||
# set selEndRow [lindex [split $selEnd "."] 1]
|
|
||||||
# puts "$selBegin, $selBeginRow; $selEnd, $selEndRow"
|
|
||||||
# set symNumbers [expr $selEndRow - $selBeginRow]
|
|
||||||
set symNumbers [expr [lindex [split $selEnd "."] 1] - [lindex [split $selBegin "."] 1]]
|
set symNumbers [expr [lindex [split $selEnd "."] 1] - [lindex [split $selBegin "."] 1]]
|
||||||
# puts "Selection $selectionText"
|
|
||||||
if [string match "-*" $selectionText] {
|
if [string match "-*" $selectionText] {
|
||||||
set selectionText "\$selectionText"
|
set selectionText "\$selectionText"
|
||||||
}
|
}
|
||||||
@@ -359,7 +389,6 @@ namespace eval Editor {
|
|||||||
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]"
|
||||||
# puts "$ind; $symNumbers; $selFindLine, $selFindRow; $endInd "
|
|
||||||
$txt tag add lightSelected $ind $endInd
|
$txt tag add lightSelected $ind $endInd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -369,6 +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 <<<<<<<<<<<<<<<<"
|
||||||
|
|
||||||
switch -- $K {
|
switch -- $K {
|
||||||
Prior {
|
Prior {
|
||||||
@@ -413,28 +443,28 @@ namespace eval Editor {
|
|||||||
}
|
}
|
||||||
} ;# proc auto_completition_key
|
} ;# proc auto_completition_key
|
||||||
proc VarHelperEscape {w} {
|
proc VarHelperEscape {w} {
|
||||||
puts "VarHelperEscape"
|
# puts ">>>>>>>>>>>> VarHelperEscape <<<<<<<<<<<<<<<<"
|
||||||
bindtags $w.t [list [winfo parent $w.t] $w.t 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 }
|
||||||
puts [bindtags $w]
|
puts [bindtags $w]
|
||||||
puts [bind $w]
|
puts [bind $w]
|
||||||
puts [bindtags $w.t]
|
|
||||||
puts [bind $w.t]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
proc VarHelper {x y w word wordType} {
|
proc VarHelper {x y w word wordType} {
|
||||||
global editors lexers variables
|
global editors lexers variables
|
||||||
variable txt
|
variable txt
|
||||||
variable win
|
variable win
|
||||||
# set txt $w.frmText.t
|
# set txt $w.frmText.t
|
||||||
# блокировка открытия диалога если запущен другой
|
# блокировка открытия диалога если запущен другой
|
||||||
if [winfo exists .findVariables] {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
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} {
|
||||||
@@ -502,20 +532,38 @@ namespace eval Editor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
# unset item
|
# unset item
|
||||||
# puts $findedVars
|
# bindtags $txt [list VarHelperBind [winfo toplevel $txt] $txt Ctext sysAfter all]
|
||||||
bindtags $txt [list VarHelperBind [winfo toplevel $txt] $txt Ctext sysAfter all]
|
|
||||||
# bindtags $txt.t [list VarHelperBind [winfo parent $txt.t] $txt.t Text sysAfter all]
|
# bindtags $txt.t [list VarHelperBind [winfo parent $txt.t] $txt.t Text sysAfter all]
|
||||||
bind VarHelperBind <Escape> "Editor::VarHelperEscape $txt; break"
|
# bind VarHelperBind <Escape> "Editor::VarHelperEscape $txt.t; break"
|
||||||
# bindtags $txt.t {[list [winfo parent $txt.t] $txt.t Text sysAfter all]};
|
# # bindtags $txt.t {[list [winfo parent $txt.t] $txt.t Text sysAfter all]};
|
||||||
# bindtags $txt {[list [winfo toplevel $txt] $txt Ctext sysAfter all]};
|
# # bindtags $txt {[list [winfo toplevel $txt] $txt Ctext sysAfter all]};
|
||||||
# catch { destroy .varhelper }"
|
# # catch { destroy .varhelper }"
|
||||||
bind VarHelperBind <Key> {Editor::VarHelperKey $Editor::txt %K %A; break}
|
# bind VarHelperBind <Key> {Editor::VarHelperKey %W %K %A; break}
|
||||||
|
#
|
||||||
if { [winfo exists $win] } { destroy $win }
|
|
||||||
if {$findedVars eq ""} {
|
if {$findedVars eq ""} {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
# puts $findedVars
|
||||||
|
VarHelperDialog $x $y $w $word $findedVars
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
proc VarHelperDialog {x y w word findedVars} {
|
||||||
|
global editors lexers variables
|
||||||
|
variable txt
|
||||||
|
variable win
|
||||||
|
# puts ">>>>>>>>>>>>>$x $y $w $word $findedVars"
|
||||||
|
# set txt $w.frmText.t
|
||||||
|
# блокировка открытия диалога если запущен другой
|
||||||
|
# if [winfo exists .findVariables] {
|
||||||
|
# return
|
||||||
|
# }
|
||||||
|
# if { [winfo exists $win] } { destroy $win }
|
||||||
|
set txt $w
|
||||||
|
set win .varhelper
|
||||||
|
# if {$findedVars eq ""} {
|
||||||
|
# return
|
||||||
|
# }
|
||||||
toplevel $win
|
toplevel $win
|
||||||
wm transient $win .
|
wm transient $win .
|
||||||
wm overrideredirect $win 1
|
wm overrideredirect $win 1
|
||||||
@@ -532,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
|
||||||
@@ -542,15 +592,13 @@ namespace eval Editor {
|
|||||||
focus -force $Editor::txt.t
|
focus -force $Editor::txt.t
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
# bind $win.lBox <Return> {
|
bind VarHelperBind <Control-Return> {
|
||||||
# set findString [dict get $lexers [dict get $editors $Editor::txt fileType] procFindString]
|
$Editor::txt delete "insert - 1 chars wordstart" "insert wordend - 1 chars"
|
||||||
# set values [.varhelper.lBox get [.varhelper.lBox curselection]]
|
$Editor::txt insert "insert" [.varhelper.lBox get [.varhelper.lBox curselection]]
|
||||||
# regsub -all {PROCNAME} $findString $values str
|
# eval [bind VarHelperBind <Escape>]
|
||||||
# Editor::FindFunction $Editor::txt "$str"
|
Editor::VarHelperEscape $Editor::txt
|
||||||
# destroy .varhelper.lBox
|
break
|
||||||
# # focus $Editor::txt.t
|
}
|
||||||
# break
|
|
||||||
# }
|
|
||||||
|
|
||||||
# Определям расстояние до края экрана (основного окна) и если
|
# Определям расстояние до края экрана (основного окна) и если
|
||||||
# оно меньше размера окна со списком то сдвигаем его вверх
|
# оно меньше размера окна со списком то сдвигаем его вверх
|
||||||
@@ -571,7 +619,7 @@ namespace eval Editor {
|
|||||||
set y [expr $y - $winGeomY]
|
set y [expr $y - $winGeomY]
|
||||||
}
|
}
|
||||||
|
|
||||||
wm geom $win +$x+$y
|
wm geom $win +$x+$y
|
||||||
}
|
}
|
||||||
|
|
||||||
proc ReleaseKey {k txt fileType} {
|
proc ReleaseKey {k txt fileType} {
|
||||||
@@ -714,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"}
|
||||||
@@ -735,10 +783,14 @@ namespace eval Editor {
|
|||||||
# set txt $w.frmText.t
|
# set txt $w.frmText.t
|
||||||
bind $txt <KeyRelease> "catch {Editor::ReleaseKey %K $txt $fileType}"
|
bind $txt <KeyRelease> "catch {Editor::ReleaseKey %K $txt $fileType}"
|
||||||
bind $txt <KeyPress> "Editor::PressKey %K $txt"
|
bind $txt <KeyPress> "Editor::PressKey %K $txt"
|
||||||
|
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"
|
||||||
@@ -748,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 != ""} {
|
||||||
@@ -781,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"
|
||||||
@@ -841,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"
|
||||||
@@ -879,10 +962,11 @@ namespace eval Editor {
|
|||||||
# set fileName untitled-$untitledNumber
|
# set fileName untitled-$untitledNumber
|
||||||
set fileFullPath untitled-$untitledNumber
|
set fileFullPath untitled-$untitledNumber
|
||||||
#puts [Tree::InsertItem $tree {} $fileFullPath "file" $fileName]
|
#puts [Tree::InsertItem $tree {} $fileFullPath "file" $fileName]
|
||||||
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} {
|
||||||
@@ -899,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_
|
||||||
@@ -923,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]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -933,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]
|
||||||
@@ -1000,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]
|
||||||
@@ -1010,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 ""} {
|
||||||
@@ -1102,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
|
||||||
@@ -1134,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]"
|
||||||
@@ -1143,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"
|
||||||
@@ -1186,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
|
||||||
}
|
}
|
||||||
@@ -1274,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
|
||||||
@@ -1294,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} {
|
||||||
@@ -1317,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} {
|
||||||
@@ -1416,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 ""} {
|
||||||
@@ -1442,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
|
||||||
@@ -1463,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
|
||||||
|
|
||||||
@@ -1483,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
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
174
lib/files.tcl
174
lib/files.tcl
@@ -9,12 +9,42 @@
|
|||||||
|
|
||||||
|
|
||||||
namespace eval FileOper {
|
namespace eval FileOper {
|
||||||
variable types
|
global packages
|
||||||
|
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,7 +61,8 @@ namespace eval FileOper {
|
|||||||
|
|
||||||
# lappend cmd $activeProject
|
# lappend cmd $activeProject
|
||||||
lappend cmd $fileFullPath
|
lappend cmd $fileFullPath
|
||||||
catch $cmd pipe
|
# puts $cmd
|
||||||
|
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] {
|
||||||
puts "$fType $fExt $fCharset"
|
puts "$fType $fExt $fCharset"
|
||||||
@@ -43,17 +74,74 @@ 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 ""} {
|
||||||
return false
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
return binary
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return binary
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"text" {
|
"text" {
|
||||||
return text
|
return text
|
||||||
}
|
}
|
||||||
"image" {
|
"image" {
|
||||||
return false
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"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}
|
if {[Close] eq "cancel"} {
|
||||||
# puts "close tab $nbItem"
|
return "cancel"
|
||||||
if {[Close] eq "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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
50
lib/git.tcl
50
lib/git.tcl
@@ -11,7 +11,29 @@
|
|||||||
|
|
||||||
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] {
|
||||||
|
|||||||
20
lib/gui.tcl
20
lib/gui.tcl
@@ -23,13 +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 . <Control-Return> Edit
|
|
||||||
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 != ""} {
|
||||||
@@ -42,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
|
||||||
@@ -135,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
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ namespace eval Highlight {} {
|
|||||||
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
|
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
|
||||||
ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)(\w)+?(\s|$)}
|
ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)(\w)+?(\s|$)}
|
||||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(^|;)\s*(#)[^\n\r]*}
|
ctext::addHighlightClassForRegexp $txt comments #666666 {(^|;)\s*(#)[^\n\r]*}
|
||||||
|
ctext::addHighlightClass $txt bool #3e803b {null false true}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc Default {txt} {
|
proc Default {txt} {
|
||||||
@@ -54,6 +55,7 @@ namespace eval Highlight {} {
|
|||||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||||
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||||
|
ctext::addHighlightClass $txt bool #3e803b {nil false true}
|
||||||
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
|
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,13 +113,15 @@ namespace eval Highlight {} {
|
|||||||
proc RB {txt} {
|
proc RB {txt} {
|
||||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||||
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
|
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
|
||||||
ctext::addHighlightClass $txt stackControl #19a2a6 {def end class if else for while case when require module begin rescue self return include}
|
ctext::addHighlightClass $txt stackControl #19a2a6 {def end class if else for while case when require module begin rescue self return include unless raise private new do synchronize}
|
||||||
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-\[\]]+}
|
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-\[\]]+}
|
||||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||||
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||||
ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
|
ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
|
||||||
ctext::addHighlightClassForRegexp $txt dog #0082ff {(@)[\.a-zA-Z0-9\_\-]+}
|
ctext::addHighlightClassForRegexp $txt dog #0082ff {(@)[\.a-zA-Z0-9\_\-]+}
|
||||||
|
ctext::addHighlightClass $txt bool #7e5fb3 {nil false true}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
proc MD {txt} {
|
proc MD {txt} {
|
||||||
@@ -175,4 +179,36 @@ namespace eval Highlight {} {
|
|||||||
ctext::addHighlightClass $txt shelcommand #19a2a6 {if fi else elseif then while case esac do in exit source echo package mkdir ls rm sed awk grep date jq zip tar gzip mount umount test make curl git iconv less gcc scp rsync cut tr function install}
|
ctext::addHighlightClass $txt shelcommand #19a2a6 {if fi else elseif then while case esac do in exit source echo package mkdir ls rm sed awk grep date jq zip tar gzip mount umount test make curl git iconv less gcc scp rsync cut tr function install}
|
||||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||||
}
|
}
|
||||||
|
proc LUA {txt} {
|
||||||
|
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||||
|
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
|
||||||
|
ctext::addHighlightClass $txt stackControl #19a2a6 {and break do else elseif end false for function goto if in local nil not or repeat return then true until while}
|
||||||
|
# ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-\[\]]+}
|
||||||
|
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||||
|
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||||
|
ctext::addHighlightClassForRegexp $txt comments #666666 {(--)[^\n\r]*}
|
||||||
|
ctext::addHighlightClassForRegexp $txt namespaces #0093ff {->|\+\+|::}
|
||||||
|
ctext::addHighlightClass $txt bool #3e803b {null false true}
|
||||||
|
}
|
||||||
|
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
|
||||||
@@ -615,6 +631,26 @@ image create photo redhat_16x12 -data {
|
|||||||
09XnzifcAaBGuUTHS9CB0kq/EeiqEzh36yeGZvgH5pLddZ5feAf2OYwxhVgpYDyx5dANP+pfyyXc
|
09XnzifcAaBGuUTHS9CB0kq/EeiqEzh36yeGZvgH5pLddZ5feAf2OYwxhVgpYDyx5dANP+pfyyXc
|
||||||
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
|
||||||
@@ -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
|
||||||
@@ -1719,5 +1789,161 @@ image create photo image_16x12 -data {
|
|||||||
Chm/n66JCfRmg3DPIPf3iwSDM6RSB1jWp4AWHA4FxS5yUiyS/mnycHXE0tICuq6TSlWHLP9/X9O8
|
Chm/n66JCfRmg3DPIPf3iwSDM6RSB1jWp4AWHA4FxS5yUiyS/mnycHXE0tICuq6TSlWHLP9/X9O8
|
||||||
Qohnupub0FYW0X70YxhpQqFQ3f/4MIEQo4yN7bHb+o2XrVkaGzt4e5M+fbAPAF3XAY1c7g8wjmVB
|
Qohnupub0FYW0X70YxhpQqFQ3f/4MIEQo4yN7bHb+o2XrVkaGzt4e5M+fbAPAF3XAY1c7g8wjmVB
|
||||||
ONyL2+2uD/ieTEprk5Mim82iqiqqqlaZCoVCXcBfmFeL22lAPa8AAAAASUVORK5CYII=
|
ONyL2+2uD/ieTEprk5Mim82iqiqqqlaZCoVCXcBfmFeL22lAPa8AAAAASUVORK5CYII=
|
||||||
|
}
|
||||||
|
image create photo lua_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAjbAAAI2wHNrPlDAAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAARdJREFUKJGNkC1IQ3EUxX/nbfoY
|
||||||
|
ikkxaxQMRi2CzcG2uGFasy3owkCQV7SsuCI2i7iP+KaLVouCcSCI0aAgTFAn2zX8/dqeiCeee3+c
|
||||||
|
c6/4j6rNXWQFREUDgyDwmFuYpR8bYcK7IZl8BaAWdoBxoOOARiOG+ZuYNoDpD/wJOCRhW7yohFEA
|
||||||
|
KsJM1JtVIPsjy4BTYBLwSdgymUwHwKN+kh9aBtk+uXSKbGoJ1OVZO58jD1iPHNnn3oEysAcgT6vl
|
||||||
|
A8TB5iOAVKQWCjQFtgqIx94M0I6D3lzlAY0B2wO+qesqyc4jCVHdcX1x64AeZX6JGOpYJgj6DlhL
|
||||||
|
nyEr/QEd077c+0K/7XAFjyKwCIyCrjA7IJc6ct9yegcG+1TkMUCBoAAAAABJRU5ErkJggg==
|
||||||
|
}
|
||||||
|
image create photo gz_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAASpJREFUKJGFjb9Kw0AAxr+73F0S
|
||||||
|
wU6tUMWAOigIBcVNJ7ciTgo+gIuzq66CvoEPoXQWBHERih0EUbu0UGiCrdVaY5qaJncuRjEZ+o2/
|
||||||
|
7x/ZO912lFJ5/IiADgURxcjU7pBQTlKPDQI/zzUBRlnMed/1LptlB3Mrs+A6BwCEMsSzDDts6EXY
|
||||||
|
3zqAYOJ3qVy5gSOaKK5vwtBNAEAQBjg5P8ySo9KOopT8u65WHOgmh7WQhab9eVIq0GQYAGYWc+i9
|
||||||
|
9kESFqUENBnutj1cnT3C/wxwe1FLjaUKrUYPuakMCqsW7Pp7qsCSQCmF+n0bTq0LGcnRDwBQWLOw
|
||||||
|
sbsErmujC8Jg8Nwv+G4ALtJ7zK69HQudTcZgLGNojWpn+br0ND49P/Hw0vxoxV4wCO1vTFFpmeaA
|
||||||
|
16IAAAAASUVORK5CYII=
|
||||||
}
|
}
|
||||||
|
image create photo tgz_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAASpJREFUKJGFjb9Kw0AAxr+73F0S
|
||||||
|
wU6tUMWAOigIBcVNJ7ciTgo+gIuzq66CvoEPoXQWBHERih0EUbu0UGiCrdVaY5qaJncuRjEZ+o2/
|
||||||
|
7x/ZO912lFJ5/IiADgURxcjU7pBQTlKPDQI/zzUBRlnMed/1LptlB3Mrs+A6BwCEMsSzDDts6EXY
|
||||||
|
3zqAYOJ3qVy5gSOaKK5vwtBNAEAQBjg5P8ySo9KOopT8u65WHOgmh7WQhab9eVIq0GQYAGYWc+i9
|
||||||
|
9kESFqUENBnutj1cnT3C/wxwe1FLjaUKrUYPuakMCqsW7Pp7qsCSQCmF+n0bTq0LGcnRDwBQWLOw
|
||||||
|
sbsErmujC8Jg8Nwv+G4ALtJ7zK69HQudTcZgLGNojWpn+br0ND49P/Hw0vxoxV4wCO1vTFFpmeaA
|
||||||
|
16IAAAAASUVORK5CYII=
|
||||||
|
}
|
||||||
|
image create photo zip_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAACXBIWXMAAAeJAAAHiQH5c1i9AAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAUVJREFUKJGNkTtLA0EUhc9MZrNL
|
||||||
|
IokBFZUY340IgqSw10K0srGy08LaRvAf2NpYpUmrhZ2N/oCAYCUILhJjDJE8NjGJyc7M7thodJMV
|
||||||
|
PeX5+Obey5DZ0+2cIu4EfoSCpMz9sz38EjJysql6Sw1UhCzbZs+WZicn2x4B5IWptkRq7RBzsXgX
|
||||||
|
lCuv2vlFWtvYOUAiMaN/9aaVx+7V8SBJprfU1PAoCEhXctoc9dscWMRAZPH7MQWFbKkIFo7qKHHL
|
||||||
|
s54SEpzYoBTo8KqHhaM6qN+hMt+AMCsQZhWqI/t4vyRdvF8/IrQ+DxrRYd8U/pZc7kC1BMR9GTL3
|
||||||
|
Brcl/jHpM06TQ0nHl/lKgZiB0Oo0jJW4HwYFlOdzic6gOhJOsQnxVAcdCPYoSrHaXemIhYPjnnph
|
||||||
|
KN64fFgiBqsHlscyzWyte5hs8cIHuFR/UISQs+8AAAAASUVORK5CYII=
|
||||||
|
}
|
||||||
|
image create photo xz_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAShJREFUKJGFkDtLA0EUhb+Z3Vl3
|
||||||
|
jFpZGCsJiI0gRqtAOonYSvJPBP+Aoo29IBZ2giA2WimIVkqQgAgptFBxUfEVk2g2+7IxgWSLnPLc
|
||||||
|
8+KK1GbeiaIoyT8E0jOFtSC1UaILI6Gsm7Xmb9I2LCxptnhlVevH8sKB2RT0KQC80Och9N9M5Up2
|
||||||
|
C6vYptVOKl6e8awfmZtfxLY1AA2/SWFveVhk73YiqVRHtXt0jhjoR2WmEGa7mdDzkN1iACubJnBe
|
||||||
|
EUJ08FIpZLc4uHeorW8Tfn7zs7UfC4sZ/OtbzIkxdD6HVyrHDGaMIcI9LeJdlcEPejcA6EKOoY0l
|
||||||
|
hLZ7G0RCE75/EX5UEDr+EDFzuLJmJPRoe5DbNIKDk3RYqQ4amekbY3L8pXXz6o2nPwWnYSj7tbJx
|
||||||
|
AAAAAElFTkSuQmCC
|
||||||
|
}
|
||||||
|
image create photo iso_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAWIAAAFiAG/L38eAAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAVJJREFUKJGFjz1IQgEUhc99vvd8
|
||||||
|
JgolDf2OQkhb0RD249LaKESDOEUQtQRtNbQVTkE05JJLDUGQRJPQUCQVrSJIv5IZmFK8/9v0XmJC
|
||||||
|
d7qccz7uPcTMQfw/DSJiABCJqN7sGJnYhMXWhizSGECkmvbd55exCeAUAKg5rGcm5yVRSAPwtFzg
|
||||||
|
p6q6Orh4ueUCfBjrY5uLRFDa/cSAmS/VRkRHUA07oYikAIAmhd7qkaUj2etXfffbcVkt9xMg9gSU
|
||||||
|
BRdgm4edD797Z666w9E1AJZlxDtxm0oCgF8Rh1zAZjacXbIaPgABAIZHq/kd3bRYdwHTxAW8mAOA
|
||||||
|
jtfzqH6NfUmSdZSy007RSkPL/5ZOTym6zAVZFAbalTYs+33loDAqOAIlcupjRZvVTbv8J2zyx3G+
|
||||||
|
mtzJlh+o1Txbj3SFQ8HlgCKMg0io1o2bvdzLburkuQgAP0z8hJue1kBeAAAAAElFTkSuQmCC
|
||||||
|
}
|
||||||
|
image create photo pdf_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAKYAAACmAE200ffAAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAMpJREFUGJWNz69OgnEYxfHv+RVF
|
||||||
|
xsBAdHODzcbLrARfLgADjWggMgKXYHDzArgAA4F7IKAm/wTsNgMj6eZGYHAIBoWX4fvEs8/OngNb
|
||||||
|
53o0dFzpbucAIZGYImiaDqM5+CQl5glYpMQu4dD8FzuunoIOCZ74IuokHtzA9WofewBfL1B4BD9j
|
||||||
|
ZkhHsHrVb+t5GZb3wB1GBL0D33h1BeETnNdPY+US6xa7rfHbQ2JF7SxH9iAjx1EP3MAaaTy53jXs
|
||||||
|
z0C1QB/o+GYfBFgDj+E74z7GkTEAAAAASUVORK5CYII=
|
||||||
|
}
|
||||||
|
image create photo bz2_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAdDAAAHQwF4FVqrAAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAARhJREFUGJV9jrFKw1AYRk9ublI0
|
||||||
|
oYPSYnEREXEQ6eIiFhFB3MVBcPEpiqN06OAiLrq6+Aa+gIuDUEShhYK6iZbWlDQVE5t7HcSEFuo3
|
||||||
|
nv/wfb8xf3H6qjUF0ihLikNhi2tGIoMoKmRMk4ww/5iwgt6lbN7D3BJ6eua3AY00w5Cr3X0c204a
|
||||||
|
GvUaTXPA2voOuXw6apSe7rSwrKG56PYG9dHB3thCuNmEi1ERwCquQviFEQ2GuBgVVadNcFxGeR79
|
||||||
|
syrE8Xh50Gwgcnkm9g5Qvo9qvY+XDa35fqjRq5RRrTc0arwMYG9ukz05Ry4s/v8zrovuemjfR/c/
|
||||||
|
MRw3OUn/sV61nMnZVJ4i1qz0Kkc5sVx8CdvdZ9pdAH4AuSFg6ttQQTAAAAAASUVORK5CYII=
|
||||||
|
}
|
||||||
|
image create photo csv_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAMCAYAAABbayygAAAACXBIWXMAAAvPAAALzwFI68pfAAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAPJJREFUGJWFkaFLA3EcxT/ve8cs
|
||||||
|
M6uIiOl2GBZsVqOyf8B+ghyr2z+xoqdgMNoMqzaTaSaR28BiEFYHC+rm72sTxRt76YUPj/d4KnO/
|
||||||
|
BXYA578UAoe7lxrHOBvphfYqIMq27xv0R5kfGapMAiA90wPQDTX6tgj6gQvdA+j51OsWkwCEOaPf
|
||||||
|
vhaxFma8z42JRUaTwDWBzGISvrghkCG2Z9DzmHZkNA1AcJcWOpGYLqrwp+PKhFcijoF1oC5ny6EB
|
||||||
|
fJjE1OGgzH3wuUpC4ArYFIwR5w5PjUIDhrm3li0f5t4ydzrLQHc6MeKtzP2R6gsB5OLlG1VzU07m
|
||||||
|
mn0VAAAAAElFTkSuQmCC
|
||||||
|
}
|
||||||
|
image create photo exe_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAMCAYAAAC9QufkAAAACXBIWXMAAAMnAAADJwEZpzWLAAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAaxJREFUKJFtkEFIlHEQxX/z3083
|
||||||
|
IoONdQ3qYrcFdQ0hhTrU2k3XCjS6dZBiO3SRorotJJQSXQtMOiUKxrYmQgZiHjRJ3FoxPVgUgkSt
|
||||||
|
UatY0H7/6dB+CO33TjPDezNvnlCCguTbTqUQOSMQVSiIMm7V3opMTH/BB+IV+fb4MWC+nKIXu/v3
|
||||||
|
78PleaY+sw6Q0pTJLeeadsWJ+F2UG/+t/nMnuef0h9rKV//MsYlSQIgAC87uAc6W25LJj0eCCVQ9
|
||||||
|
l2GEMICqDhuA720n64AwMInyElgDcB15qlYv+LxbNEWTdgBuH78W+hyqGXWN0wxUIsx2vxm6+aJr
|
||||||
|
5QfCYR/xVDqW/hoAqDl/PaNi2oGDQDUQyx6qj9z/OT62EA7MblcELLADLAetPokWzL2ZwdW8kxh4
|
||||||
|
V4u1jWUZw7OgymBf9lcUfi+CbijsFbjqFu3jXsARazt9bGlSRpaAWKlt8RID5kJXpj8BGIFzCt+A
|
||||||
|
98BmSfz6BPOtPktRlRGvdtTY5Nilppw36Hjw9qgRewAY8NHaCldHvUZ8CABsPYp3qUqPoA2qFBGy
|
||||||
|
ogxXXZ566HH+Asc0nIyxyMyyAAAAAElFTkSuQmCC
|
||||||
|
}
|
||||||
|
image create photo txt_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAMCAYAAACwXJejAAAACXBIWXMAAALEAAACxAFbkZ0LAAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAXVJREFUGJVjZICCT2f+i9x98XjO
|
||||||
|
43fPXorziUrKyihFSJkwfmNgYGBgPLz62uYXH998EOMX1unbMmvRxoUT+ytrJic7atkUfPz2+QIH
|
||||||
|
Kxsf04sPr16HptjF3nt+/0CYhZ/s0ul7+3SktbQvPri6LzTFLvbHrx9vWRgYGBhubn4s/Z75R70I
|
||||||
|
M7fq339/mBgYGBgYFFQZbLfd5nv89CkDCwMDA8PG68cUnr158E5OSN7mz78/nDB3Pvvw9Iu1qjlE
|
||||||
|
kZ2a0ftHomLvlQRkH375/5MVpujxa7kPDAz/IIoOXj7+//7bpxy3RO4x/vz5mx2m6P371xz2+rYQ
|
||||||
|
RU7q5rxX3z/5pSkiK/b9/0+4ogdvXzExMDBAFK0+s+vJlfvX/8lIyVz4/fcXN0zRy5evvia6hUEU
|
||||||
|
eZk4aGtJyD9TlVX1/P3vDxvcpKf3X8JNKp/fcZKFlf3//z8/5v9nYYI7nImB7WWBbxwD45aFJ05/
|
||||||
|
//3rBgMO8P3ndy0A+c+fqfnp2TAAAAAASUVORK5CYII=
|
||||||
|
}
|
||||||
|
image create photo j2_16x12 -data {
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA
|
||||||
|
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAjxJREFUKJGNzT9oE1EcwPHfu3u5
|
||||||
|
yzWXyyUx1/xpKtZWaytJkVbQoUMpiqP/gtJSJ8FNxEEoWpUKgghKUSGTYNHBwalrDDgIIk1oG/oH
|
||||||
|
o1IoTZu2SS7/XnLv7p6To+B3/sAXMcbgfzp663ZfOTZ42VEuxVBw+sEUVf2AzXblLzCB91iK22+L
|
||||||
|
gs924JAlumKG3xe3eezwrK6ksO12D1UHBm5SRZH/deGMNgjlyq6yuvxwd+Z+EjHGQHv+IkG08Jjp
|
||||||
|
ks5L29sLrVBo1EZIVrOL082e3qeBdGrWUN2/Owwjt5FM7nMAAFytRsCiiPFYtpziECJEwc1mB/X7
|
||||||
|
plua1rk7fu5O+ezoI75edwEAYAAAqVhYcdBWtR7uHtZSn++KP9d/EEKa+XyeeufefAknX4/lcjkD
|
||||||
|
rl8FAAB8ZGJiqDpy5plnaWkWgl2MRKMnq7HBK4zj+jstu1E7FPC2To3c8L98ddG7+O1Jfn7+K3br
|
||||||
|
+mbF6ezX4/F7hqZ1NUzzmilJBdxulyxBjFNFjZZGTk8xhELRra0MAAC3vLBQxhU9e/zjhylcq9vq
|
||||||
|
+tocE8SiJYlryLLe8qRRYoj/hBv11XQ63QIA4PomJxVbwOqv8QuXqCzL9UhkGDAf5A1TxqTRjQxK
|
||||||
|
waYDtkPwRhMJCQAAcy6XQBVVAwTH2sGQ25vNaAwYtjCvkcjhE5Ysd1Cwe/gmifh0nQMAwBvJ5H54
|
||||||
|
5nEG7+28M9SARyoW37c7A72MxzFpr/Dd1sUKRxpZbJg7joMDAwDgDzlS9ta5m7mUAAAAAElFTkSu
|
||||||
|
QmCC
|
||||||
|
}
|
||||||
|
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}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,9 +15,12 @@ dict set lexers TCL commands [info commands]
|
|||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
# Go lang
|
# Go lang
|
||||||
dict set lexers GO commentSymbol {//}
|
dict set lexers GO commentSymbol {//}
|
||||||
|
dict set lexers GO commentMultilineSymbolBegin {/*}
|
||||||
|
dict set lexers GO commentMultilineSymbolEnd {*/}
|
||||||
dict set lexers GO procFindString {func.*?PROCNAME}
|
dict set lexers GO 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 {#}
|
||||||
@@ -30,13 +33,17 @@ dict set lexers SH procRegexpCommand {regexp -nocase -all -- {^\s*?(function |)\
|
|||||||
dict set lexers PY commentSymbol {#}
|
dict set lexers PY commentSymbol {#}
|
||||||
dict set lexers PY procFindString {(def )\s*?PROCNAME}
|
dict set lexers PY procFindString {(def )\s*?PROCNAME}
|
||||||
dict set lexers PY procRegexpCommand {regexp -nocase -all -- {^\s*?(def)\s*?(.*?)\((.*?)\):} $line match keyWord procName params}
|
dict set lexers PY procRegexpCommand {regexp -nocase -all -- {^\s*?(def)\s*?(.*?)\((.*?)\):} $line match keyWord procName params}
|
||||||
|
dict set lexers PY varRegexpCommand {regexp -nocase -all -line -- {^\s*?(\w+)\s*=\s*(.+)($)} $line match varName varValue lineEnd}
|
||||||
|
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
# Ruby
|
# Ruby
|
||||||
dict set lexers RB commentSymbol {#}
|
dict set lexers RB commentSymbol {#}
|
||||||
|
dict set lexers RB commentMultilineSymbolBegin {=begin}
|
||||||
|
dict set lexers RB commentMultilineSymbolEnd {end=}
|
||||||
dict set lexers RB tabSize 2
|
dict set lexers RB 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}
|
||||||
|
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
# YAML (ansible)
|
# YAML (ansible)
|
||||||
@@ -74,17 +81,28 @@ dict set lexers INI procRegexpCommand {regexp -nocase -all -- {^\s*?(\[)(.+?)(\]
|
|||||||
|
|
||||||
# -------------------------------------------------
|
# -------------------------------------------------
|
||||||
# HTML
|
# HTML
|
||||||
dict set lexers HTML commentSymbol {<\!--}
|
dict set lexers HTML commentSymbol {<!--}
|
||||||
|
dict set lexers HTML commentMultilineSymbolBegin {<!--}
|
||||||
|
dict set lexers HTML commentMultilineSymbolEnd {-->}
|
||||||
dict set lexers HTML tabSize 4
|
dict set lexers HTML tabSize 4
|
||||||
dict set lexers HTML procFindString {<h[0-9]>(<.+>|)PROCNAME(</.+>|)</h[0-9]>}
|
dict set lexers HTML procFindString {<h[0-9]>(<.+>|)PROCNAME(</.+>|)</h[0-9]>}
|
||||||
dict set lexers HTML procRegexpCommand {regexp -nocase -all -- {<h[0-9]>(<.+>|)(.+?)(</.+>|)</h[0-9]>} $line match v1 procName v2}
|
dict set lexers HTML procRegexpCommand {regexp -nocase -all -- {<h[0-9]>(<.+>|)(.+?)(</.+>|)</h[0-9]>} $line match v1 procName v2}
|
||||||
|
|
||||||
# -------------------------------------------------
|
# -------------------------------------------------
|
||||||
# HTM
|
# HTM
|
||||||
dict set lexers HTM commentSymbol {<\!--}
|
dict set lexers HTM commentSymbol {<!--}
|
||||||
|
dict set lexers HTM commentMultilineSymbolBegin {<!--}
|
||||||
|
dict set lexers HTM commentMultilineSymbolEnd {-->}
|
||||||
dict set lexers HTM tabSize 4
|
dict set lexers HTM 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 procFindString {function\s*?PROCNAME}
|
||||||
|
dict set lexers LUA procRegexpCommand {regexp -nocase -all -- {^(local|)\s*?(function)\s([a-zA-Z0-9\-_:]+?)\s+\((.+?)\)} $line match v1 keyWord procName params}
|
||||||
|
dict set lexers LUA varRegexpCommand {regexp -nocase -all -- {^(\s*?)([a-zA-Z0-9\-_\.]+)\s+=\s+(.+?)(\s*$|--)} $line match indent varName varValue lineEnd}
|
||||||
|
|
||||||
# -------------------------------------------------
|
# -------------------------------------------------
|
||||||
dict set lexers ALL varDirectory {variables vars group_vars host_vars defaults}
|
dict set lexers ALL varDirectory {variables vars group_vars host_vars defaults}
|
||||||
|
|||||||
16
lib/menu.tcl
16
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} {
|
||||||
@@ -118,6 +126,8 @@ proc GetViewMenu {m} {
|
|||||||
-variable cfgVariables(procedureHelper) -onvalue true -offvalue false
|
-variable cfgVariables(procedureHelper) -onvalue true -offvalue false
|
||||||
# -command "ViewHelper procedureHelper"
|
# -command "ViewHelper procedureHelper"
|
||||||
|
|
||||||
|
$m add checkbutton -label [::msgcat::mc "Multiline comments"] \
|
||||||
|
-variable cfgVariables(multilineComments) -onvalue true -offvalue false
|
||||||
}
|
}
|
||||||
|
|
||||||
proc GetHelpMenu {m} {
|
proc GetHelpMenu {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" "Найти в файлах"
|
||||||
@@ -124,6 +128,7 @@
|
|||||||
::msgcat::mcset ru "Matches" "Совпадений"
|
::msgcat::mcset ru "Matches" "Совпадений"
|
||||||
::msgcat::mcset ru "Modules" "Модули"
|
::msgcat::mcset ru "Modules" "Модули"
|
||||||
::msgcat::mcset ru "Modifying the Registry..." "Внесение изменений в реестр"
|
::msgcat::mcset ru "Modifying the Registry..." "Внесение изменений в реестр"
|
||||||
|
::msgcat::mcset ru "Multiline comments" "Многострочные комментарии"
|
||||||
::msgcat::mcset ru "Must be one file select!" "Вы должны выбрать только один файл"
|
::msgcat::mcset ru "Must be one file select!" "Вы должны выбрать только один файл"
|
||||||
::msgcat::mcset ru "Must be one or two file select!" "Вы должны выбрать один или два файла"
|
::msgcat::mcset ru "Must be one or two file select!" "Вы должны выбрать один или два файла"
|
||||||
::msgcat::mcset ru "Network" "Сеть"
|
::msgcat::mcset ru "Network" "Сеть"
|
||||||
@@ -137,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" "Параметры"
|
||||||
@@ -194,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: 09122022154416
|
# 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
|
||||||
|
|||||||
149
theme/black.tcl
149
theme/black.tcl
@@ -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
|
||||||
@@ -46,77 +47,83 @@ namespace eval ttk::theme::black {
|
|||||||
set styleCmd style
|
set styleCmd style
|
||||||
}
|
}
|
||||||
|
|
||||||
$styleCmd theme create black -parent clam -settings {
|
$styleCmd theme create black -parent clam -settings {
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# Theme defaults
|
# Theme defaults
|
||||||
#
|
#
|
||||||
$styleCmd configure "." \
|
$styleCmd configure "." \
|
||||||
-background $colors(-frame) \
|
-background $colors(-frame) \
|
||||||
-foreground white \
|
-foreground white \
|
||||||
-bordercolor $colors(-darkest) \
|
-bordercolor $colors(-darkest) \
|
||||||
-darkcolor $colors(-dark) \
|
-darkcolor $colors(-dark) \
|
||||||
-lightcolor $colors(-lighter) \
|
-lightcolor $colors(-lighter) \
|
||||||
-troughcolor $colors(-darker) \
|
-troughcolor $colors(-darker) \
|
||||||
-selectbackground $colors(-selectbg) \
|
-selectbackground $colors(-selectbg) \
|
||||||
-selectforeground $colors(-selectfg) \
|
-selectforeground $colors(-selectfg) \
|
||||||
-selectborderwidth 0 \
|
-selectborderwidth 0 \
|
||||||
-font "{Droid Sans Mono} 9" \
|
-font "{Droid Sans Mono} 9" \
|
||||||
;
|
;
|
||||||
|
|
||||||
|
$styleCmd map "." \
|
||||||
|
-background [list disabled $colors(-frame) \
|
||||||
|
active $colors(-lighter)] \
|
||||||
|
-foreground [list disabled $colors(-disabledfg)] \
|
||||||
|
-selectbackground [list !focus $colors(-darkest)] \
|
||||||
|
-selectforeground [list !focus white] \
|
||||||
|
;
|
||||||
|
|
||||||
|
# ttk widgets.
|
||||||
|
$styleCmd configure TButton \
|
||||||
|
-width -8 -padding {5 1} -relief link
|
||||||
|
$styleCmd configure TMenubutton \
|
||||||
|
-relief flat -arrowsize 0
|
||||||
|
|
||||||
|
$styleCmd configure TCheckbutton \
|
||||||
|
-indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
|
||||||
|
$styleCmd configure TRadiobutton \
|
||||||
|
-indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
|
||||||
|
|
||||||
|
$styleCmd configure TEntry \
|
||||||
|
-fieldbackground gray20 -foreground $colors(-font) \
|
||||||
|
-padding {2 0} -border -1
|
||||||
|
$styleCmd configure TCombobox \
|
||||||
|
-fieldbackground white -foreground $colors(-font)\
|
||||||
|
-padding {2 0}
|
||||||
|
$styleCmd configure TSpinbox \
|
||||||
|
-fieldbackground white -foreground $colors(-font) \
|
||||||
|
-padding {2 0}
|
||||||
|
|
||||||
|
$styleCmd configure TNotebook \
|
||||||
|
-border -1
|
||||||
|
$styleCmd configure TNotebook.Tab \
|
||||||
|
-padding {6 2 6 2} \
|
||||||
|
-border -1
|
||||||
|
|
||||||
|
$styleCmd map TNotebook.Tab -background [list \
|
||||||
|
selected $colors(-lighter)]
|
||||||
|
|
||||||
|
# tk widgets.
|
||||||
|
$styleCmd map Menu \
|
||||||
|
-background [list active $colors(-dark)] \
|
||||||
|
-foreground [list disabled $colors(-lightest)] \
|
||||||
|
|
||||||
|
$styleCmd configure TreeCtrl \
|
||||||
|
-background gray30 -itembackground {gray60 gray50} \
|
||||||
|
-itemfill white -itemaccentfill yellow -border -1
|
||||||
|
|
||||||
|
$styleCmd map Treeview\
|
||||||
|
-background [list selected $colors(-lighter)] \
|
||||||
|
-foreground [list selected $colors(-selectfg)]
|
||||||
|
# -background [list selected $colors(-selectbg)] \
|
||||||
|
|
||||||
|
$styleCmd configure Treeview -fieldbackground gray25
|
||||||
|
|
||||||
$styleCmd map "." \
|
$styleCmd map Canvas \
|
||||||
-background [list disabled $colors(-frame) \
|
-background [list selected $colors(-lighter)] \
|
||||||
active $colors(-lighter)] \
|
-foreground [list selected $colors(-selectfg)] \
|
||||||
-foreground [list disabled $colors(-disabledfg)] \
|
-highlightbackground [list selected $colors(-lighter)]
|
||||||
-selectbackground [list !focus $colors(-darkest)] \
|
}
|
||||||
-selectforeground [list !focus white] \
|
|
||||||
;
|
|
||||||
|
|
||||||
# ttk widgets.
|
|
||||||
$styleCmd configure TButton \
|
|
||||||
-width -8 -padding {5 1} -relief link
|
|
||||||
$styleCmd configure TMenubutton\
|
|
||||||
-relief flat -arrowsize 0
|
|
||||||
$styleCmd configure TCheckbutton \
|
|
||||||
-indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
|
|
||||||
$styleCmd configure TRadiobutton \
|
|
||||||
-indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
|
|
||||||
|
|
||||||
$styleCmd configure TEntry \
|
|
||||||
-fieldbackground gray20 -foreground black \
|
|
||||||
-padding {2 0} -border -1
|
|
||||||
$styleCmd configure TCombobox \
|
|
||||||
-fieldbackground white -foreground black \
|
|
||||||
-padding {2 0}
|
|
||||||
$styleCmd configure TSpinbox \
|
|
||||||
-fieldbackground white -foreground black \
|
|
||||||
-padding {2 0}
|
|
||||||
|
|
||||||
$styleCmd configure TNotebook \
|
|
||||||
-border -1
|
|
||||||
$styleCmd configure TNotebook.Tab \
|
|
||||||
-padding {6 2 6 2} \
|
|
||||||
-border -1
|
|
||||||
|
|
||||||
$styleCmd map TNotebook.Tab -background [list \
|
|
||||||
selected $colors(-lighter)]
|
|
||||||
|
|
||||||
# tk widgets.
|
|
||||||
$styleCmd map Menu \
|
|
||||||
-background [list active $colors(-lighter)] \
|
|
||||||
-foreground [list disabled $colors(-disabledfg)]
|
|
||||||
|
|
||||||
$styleCmd configure TreeCtrl \
|
|
||||||
-background gray30 -itembackground {gray60 gray50} \
|
|
||||||
-itemfill white -itemaccentfill yellow -border -1
|
|
||||||
|
|
||||||
$styleCmd map Treeview\
|
|
||||||
-background [list selected $colors(-lighter)] \
|
|
||||||
-foreground [list selected $colors(-selectfg)]
|
|
||||||
# -background [list selected $colors(-selectbg)] \
|
|
||||||
|
|
||||||
$styleCmd configure Treeview -fieldbackground gray25
|
|
||||||
}
|
|
||||||
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