Compare commits
121 Commits
f4ef40a5e7
...
master
Author | SHA1 | Date | |
---|---|---|---|
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 | ||
![]() |
6f85de472a | ||
![]() |
c929e53803 | ||
![]() |
c738d496e6 | ||
![]() |
fa55ce53c6 | ||
![]() |
6327d45a5c | ||
![]() |
52a0edfec8 | ||
![]() |
5319c475d9 | ||
![]() |
f2926cd047 | ||
![]() |
84735e0dee | ||
![]() |
508933006e | ||
![]() |
28ceaf1c67 | ||
![]() |
cfae63d36a | ||
![]() |
fa0bda3c25 | ||
![]() |
8b294582f3 | ||
![]() |
b3ac2fb649 | ||
![]() |
64a4a35cc6 | ||
![]() |
5d07141ef1 | ||
![]() |
a2880d5dd6 | ||
![]() |
9099d4ad61 | ||
![]() |
dd22f2cf15 | ||
![]() |
0adea30af9 | ||
![]() |
c829ec1156 | ||
![]() |
3e3000de62 | ||
![]() |
fbb107f14a | ||
![]() |
b91790f756 | ||
![]() |
417fb9db23 | ||
![]() |
3b52b9af34 | ||
![]() |
47f6cc436a | ||
![]() |
6b71cfa4d0 | ||
![]() |
a21d7c58d3 | ||
![]() |
f422aa9d64 | ||
![]() |
c7fb966326 | ||
![]() |
64c9957991 | ||
![]() |
52a3e9a4ac | ||
![]() |
b10b1802a5 | ||
![]() |
37ab3e4a6b | ||
![]() |
2bd1b76981 | ||
![]() |
c50768ba56 | ||
![]() |
ef4a636623 | ||
![]() |
2dd866d8c4 | ||
![]() |
0cb58a43fb |
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 }}."
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,3 +4,5 @@ debian/update-desktop-database
|
||||
debian/projman.substvars
|
||||
debian/files
|
||||
debian/projman.debhelper.log
|
||||
debian/*.tmp
|
||||
*.tmp
|
427
CHANGELOG
427
CHANGELOG
@@ -1,129 +1,350 @@
|
||||
######################################################
|
||||
# Tcl/Tk Project manager 2.0
|
||||
# Distributed under GNU Public License
|
||||
# Author: Sergey Kalinin svk@nuk-svl.ru
|
||||
# Home page: https://nuk-svk.ru
|
||||
######################################################
|
||||
projman (2.0.0-alfa16)
|
||||
|
||||
20/06/2022
|
||||
- Beginning the project
|
||||
Sergey Kalinin <svk@nuk-svk.ru> Thu, 22 Aug 2024 15:09:19 +0300
|
||||
- changelog-gen.tcl: Добавлена генерация текстового журнала изменений
|
||||
- build-deb-projman.sh: добавлена генерация changelog из git log
|
||||
- changelog-gen.tcl: Вывод в файл вынесен в отдельную процедуру
|
||||
- changelog-gen.tcl: Добавлено создание резервной копии выходного файла. Исправлен вывод в файл.
|
||||
- changelog-gen.tcl: Добавлены опции командной строки
|
||||
- Добавлен запуск changelog-gen при сборке пакета
|
||||
- Добавлено чстение журнала начиная с определенной даты
|
||||
- Новая сборка
|
||||
|
||||
13/07/2022
|
||||
- Added open file dialog
|
||||
- Added open folder dialog
|
||||
- Added save file function
|
||||
- Added a command line argument support (open file(s) or folder(s))
|
||||
- Added TCL and BASH highlite
|
||||
- Added a configuration file (progman.ini) and a procedure for reading/saving them
|
||||
Sergey Kalinin <svkalinin@samsonpost.ru> Tue, 20 Aug 2024 13:30:43 +0300
|
||||
- Генерация списка изменений для debian приведена к корректному виду
|
||||
- Генерация списка изменений для debian приведена к корректному виду
|
||||
- Исправлен фокус при создании нового файла. #3
|
||||
|
||||
14/07/2022
|
||||
- Added On/Off viewing toolbar
|
||||
- Added On/Off viewing line numbers bar
|
||||
- Added a Comment/Uncomment text support
|
||||
- Added text auto format
|
||||
Калинин Сергей Валерьевич <svkalinin@samsonpost.ru> Wed, 17 Jul 2024 12:28:30 +0300
|
||||
- Исправлена неправильная замена выражение при поиске
|
||||
- Исправлена неправильная замена выражение при поиске
|
||||
- Реализовал базовые функции генератора журнала изменений
|
||||
|
||||
15/07/2022
|
||||
- Added a close file (tab) function with Ctrl+w
|
||||
- Added a insert/remove the tabspace
|
||||
- Fixed comment/uncomment selected text
|
||||
svk <svkalinin@samsonpost.ru> Mon, 24 Jun 2024 10:15:38 +0300
|
||||
- Добавлена иконка для jinja template
|
||||
- Исправил остатки слияния веток
|
||||
- Исправлено некорректное определение типа файла при открытии.
|
||||
|
||||
20/07/2022
|
||||
- Fixed indent text
|
||||
- Fixed insert " and '
|
||||
- Added a main window geometry option into config, and autosave current geometry
|
||||
<svk@nuk-svk.ru> Mon, 30 Oct 2023 09:46:02 +0300
|
||||
- Gitea actions add
|
||||
|
||||
21/07/2022
|
||||
- Added Save file dialog before tab was closed
|
||||
- Added Save file dialog when exiting, if file was modify
|
||||
svk <svkalinin@samsonpost.ru> Thu, 27 Jul 2023 13:04:32 +0300
|
||||
- Merge branch 'master' of https://git.nuk-svk.ru/svk/projman
|
||||
- Исправил открытие файлов с разными путями (~/ ./ ../)
|
||||
|
||||
22/07/2022
|
||||
- Added GO highlight
|
||||
svkalinin <svk@nuk-svk.ru> Thu, 23 Feb 2023 13:46:56 +0300
|
||||
- Добавил изображений программы
|
||||
|
||||
27/07/2022
|
||||
- Fixed comment/uncomment procedure (last line in selected text)
|
||||
- Fixed error with save new (untitled) file
|
||||
svk <svkalinin@samsonpost.ru> Mon, 6 Feb 2023 09:27:38 +0300
|
||||
- Исправлена ошибка при создании нового файла.
|
||||
|
||||
01/08/2022
|
||||
- Added inserting base64 encoded image
|
||||
- Added read the file structure and inserting into tree
|
||||
- Added GUI font, and GUI foreground color setting
|
||||
- Added tcl and go files images
|
||||
- Added image for file type (extention)
|
||||
svk <svkalinin@samsonpost.ru> Wed, 21 Dec 2022 16:53:44 +0300
|
||||
- Добавил пиктограммы файлов
|
||||
- Исправил процедуру Files::CloseAll ('Закрыть всё')
|
||||
- Добавлена поддержка Lua
|
||||
- Исправлена процедура (рас)комментирования
|
||||
- Исправил ошибку при выходе в процедуре (Congig::Write)
|
||||
- Добавил раскраски в ruby
|
||||
- Добавлена возможность многострочных комментариев
|
||||
- В Ruby lexer добавлен поиск переменных коде.
|
||||
- Новая сборка
|
||||
- Немного почистил. Добавлен поиск переменных по питоньим исходникам (lexer)
|
||||
- Еще одно исправление подсветки для INI
|
||||
- Новая сборка
|
||||
- Исправлене подсветки комментариев в INI
|
||||
- Новая сборка
|
||||
- Изменения в подсветке для INI
|
||||
- Добавил подсветку для Desktop и Spec файлов
|
||||
- Добавил вывод отладочной инфы в процедуру
|
||||
- Исправил подсветку комментариев в TCL
|
||||
- Оптимизация процедур
|
||||
- Добавлена подсветка и навигация по HTML. Исправлена подсветка XML
|
||||
- Новая сборка
|
||||
- Добавил иконку для изображений
|
||||
- Добавил иконки для perl
|
||||
- Исправлена подсветка и навигация по коду для Ruby
|
||||
- Обновил список изменений
|
||||
- Исправлено сохранение сессии в редакторе (открытие папки и файлов при следующем запуске)
|
||||
- Добавлена новая секция UserSession
|
||||
- Исправление ошибки при открытии файла
|
||||
- Добавлена поддержка INI-файлов (подсветка
|
||||
- Добавлена поддержка perl
|
||||
- Добавил икогнку для файлов git
|
||||
- Новая сборка
|
||||
- Добавлены иконуи для ключей и сертификатов. Изменен поиск иконки (вощзвращает теерь с размером)
|
||||
- Новая чборка
|
||||
- Реализован двухпанельный режим работы (вертиикальное разделение)
|
||||
- ДОбавил сборку в drone
|
||||
- Исправлена ошибка при открытии ansible.cfg
|
||||
- Добавил деактивацию кнопки 'Создать репу' если не выбран активный проект (не открыто ни одного каталога/папки)
|
||||
- Добавлены команды git init и git config (зачаток). Изменен диалог клонирования репозитория (добавлена кнопка Создать репозиторий)
|
||||
- Исправил ошибку git при открытии файла или каталога если репозиторий не инициализирован (нет .git каталога внутри проекта)
|
||||
- Переименовал файл
|
||||
- Добавил скриты сборки rpm
|
||||
- Добавлено обрамление выделенного текста прии нажатии '_' в markdown
|
||||
- Исправление подсветки
|
||||
- Добавлена поддержка markdown (подсветка
|
||||
- Обновил описание
|
||||
- Новая сборка
|
||||
- Исправлена ошибка с закрытием файлов в редакторе при закрытии папки
|
||||
- Новая сборка
|
||||
- Переделана процедура определения активного проекта. Исправлено определение ветки git. Теперь можно нормально работать в двух и более открытых проектах (каталогах/папках)
|
||||
- Новая сборка
|
||||
- Доделан вид диалога поиска по файлам
|
||||
- Исправлен поиск имени функции
|
||||
- Новая сборка
|
||||
- Добавлен диалог клонирования репозитория
|
||||
- Добавил разделитель
|
||||
- Исправлено переключение вкладок при закрытии
|
||||
- Исправлено закрытиие вкладки Git по нажатию соотв. кнопки в панели инструментов
|
||||
- Добавлен пункт 'Закрыть всё'
|
||||
- Новая сборка
|
||||
- Исправлено соответствие открытого файла в редакторе и выделение этого файла в дереве
|
||||
- Исправлено переключение отображения панели (лево/право) в без перезапуска программы.
|
||||
- Украшательства интерфейса - Реакция на нажатие кнопки в панели инструментов теперь зависит от контекста
|
||||
- Добавлено включение отключение отображения Меню
|
||||
- Добавлено копирование текущей строки в буфер по Atl+Y
|
||||
- Исправлена ошибка с отображением файловой панели
|
||||
- Добавлены и исправлены функции отображения меню
|
||||
- Фикс
|
||||
- Добавлен параметр statusBarShow - показ строки статуса
|
||||
- Добавлены переводы
|
||||
- Добавлена проверка параметров вызова файл или просто строка
|
||||
- Новая сборка
|
||||
- Добавлен вывод сообщений об ошибке в диалоге
|
||||
- Добавлено обновления списка файлов в дереве
|
||||
- Добавлена процедура вывода информационного сообщения
|
||||
- Добавлена команда Git::Reset (git reset _file_) на кнопке в диалоге. Для отмены 'git add'
|
||||
- Добавлена кнопка Обновление в диалог работы с Git
|
||||
- Исправление процедуры поиска наименования функции
|
||||
- Фиксы диалога работы с Git (работа с выделенными файлами в списках)
|
||||
- Фиксы и тесты работы с git
|
||||
- Исправление выборанескольких файлов в диалоге Git
|
||||
- Новая сборка
|
||||
- Украшательства
|
||||
- Новая сборка
|
||||
- Исправление рег. выражения чтения файлов командой git status
|
||||
- Настройки темы
|
||||
- Исправлено рег. выпражение определения mime типа файла
|
||||
- Ntvs
|
||||
- Новая сборка
|
||||
- Добавил очистку текстовых полей при добавлении файлов в коммит
|
||||
- Исправрелдение Git::Commit (индексация всех файлов в проекте)
|
||||
- Изменения
|
||||
- Исправления глюков
|
||||
- Украшательства строки статуса
|
||||
- Добавлен просмотрщик изображений
|
||||
- Добавил рамку кону ввода номера
|
||||
- Добавлен диалог перехода по номеру строки Ctrl-G
|
||||
- Добавлено определение типа файла
|
||||
- Новая сборка
|
||||
- Добавил удаление артефактов сборки пакета
|
||||
- Новая сборка
|
||||
- Добавлена подсветка имен файлов в выводе git show
|
||||
- Новая сборка
|
||||
- Допилдивание процедуры автоввода имен переменных
|
||||
- Небольшие правки в подсказках по переменным
|
||||
- Новая сборка
|
||||
- Исправлена подсветка SHELL переменных а YAML файлах (ansible
|
||||
- Новая сборка. Добавлена подсказка по переменным при вводе.
|
||||
- Добавлено определение символа переменной
|
||||
- Определение коррректного положения встроенного окна
|
||||
- Новая сборка
|
||||
- Добавлен вывод подсказки при вводе переменных
|
||||
- Добавлены опции для включсения полджсказок по переменным и процедурам
|
||||
- Новая сборка
|
||||
- Исправления гуя
|
||||
- Добавил диалог создания и переключения git-веток
|
||||
- Создание ветки
|
||||
- Новые иконки
|
||||
- Косметические изменения
|
||||
- Починил push
|
||||
- Добавлены новые иконки
|
||||
- Обработка ошибок
|
||||
- Новая сборка
|
||||
- Исправлена ошибка при клике на списке с файлами
|
||||
- New build
|
||||
- Сделал просмотр изменений из истории
|
||||
- Добавлено обновление лога изменений
|
||||
- Новый билд
|
||||
- Исправление обновления диалога
|
||||
- Добавлен перевод
|
||||
- git reflog
|
||||
- Добавлен интерфейс работы с Git
|
||||
- Новый релиз
|
||||
- Исправил ошибку если нет изменений
|
||||
- Начало работ по поддержке git
|
||||
- New build
|
||||
- Bug fix
|
||||
- Добавлен диалог поиска строки в файлах в текущем каталоге. Используется 'grep -r'.
|
||||
- Добавлены настройки для системной команды поиска в фвайлах
|
||||
- Добавлено рекурсивное чтение каталога при открытии. Диалог поиска теперь работает раздельно при разделении окна. Диалог навигации по функци так-же работает раздельно
|
||||
- Добавлены ключевые слова для подстветки питона
|
||||
- Добавлена проверка на отсутствие файла и удаление из дерева
|
||||
|
||||
03/08/2022
|
||||
- Added some files icon
|
||||
- Fix finded procedure (function) (tree click)
|
||||
- Fix showing position in statusbar
|
||||
svkalinin <svk@nuk-svk.ru> Sun, 18 Sep 2022 10:46:59 +0300
|
||||
- Добавлен поиск переменной в тексте после открытия файла где она указана
|
||||
- Исправлена ошибка при запуске
|
||||
|
||||
12/08/2022
|
||||
- Fixed comment/uncomment procedure depending on the file type
|
||||
- Added About dialog
|
||||
- Fixed read structure (procedure names like Proc:Name)
|
||||
Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 16 Sep 2022 16:37:17 +0300
|
||||
- Новая сборка
|
||||
- Исправил сохранение открытого каталога в настройках
|
||||
- Рефакторинг
|
||||
- Переделал дилог навигации по переменным
|
||||
- Добавлен еще один каталог с переменными - default
|
||||
- Добавлено сохранение состояния редактора (открытые каталоги
|
||||
- Изменения в диалоге поиска
|
||||
- Отображение горизонтальной полосы прокрутки в зависимости от переноса строк в редакторе
|
||||
- Установка фокуса на текст в редакторе при щелчке на заголовок вкладки
|
||||
- Сделал перемещение курсора в такуюже позицию в тексте при разделении окна редактора
|
||||
- Добавлено горизонтальное разделение окна редактора. Исправлено удаление строки по Alt+R - реперь строка удаляется полностью вместе с символами переноса. Исправлено сохранение нового файла (untitled) но всеравно как-то криво.
|
||||
- Изменения по чтению и отображению переменных по файлам. Причесал диалог
|
||||
|
||||
15/08/2022
|
||||
- Added open/close braces highlight
|
||||
- Fixed GO structure reader
|
||||
Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 2 Sep 2022 17:01:53 +0300
|
||||
- Добавил поддержку ruby
|
||||
- Исправлен выход окна со списком функций за пределы экрана. Поиск и замена теперь работает. Добавлены некоторые иконки для файлов
|
||||
- Начало реализации процедуры поиска и замены (поиск криво но работает)
|
||||
- Исправлено закерытие вкладки по щелчку мыши. Добавлена настройка переноса строк в редакторе. Добавлены сочетания клавиш ctrl+pgup cntrl+pgdown для переключения между вкладками редактора. Добавлен диалог закрытия папки (каталога)
|
||||
- Укоротил имя корневого каталога в дереве
|
||||
- Добавлены ключиевые слова GO
|
||||
- Исправлена подсветка ключевых слов tcl и добавлены виджеты
|
||||
- Исправлена некорректная установка иконки на каталог
|
||||
- Добавлены горячие клавиши для удаления слова
|
||||
- Добавлены сочетания клавиш для удаления слова
|
||||
|
||||
16/08/2022
|
||||
- Added selection of all words in the text by clicking on the any word
|
||||
svkalinin <svk@nuk-svk.ru> Fri, 26 Aug 2022 12:36:14 +0300
|
||||
- Изменил(а) на 'README.md'
|
||||
|
||||
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)
|
||||
svk <svkalinin@samsonpost.ru> Fri, 26 Aug 2022 12:29:19 +0300
|
||||
- Добавлена поддержка python. Обновлена библиотека иконок.
|
||||
- Исправлена установка фокуса на окно диалога GotoFunctionDialog и обратно на текст. Переделан механизм чтения структуры файла и добавлены команды для sh (bash)
|
||||
- Добавлены настройки темы для диалога навигации по функциям
|
||||
- Добавлена иконка shell (*.sh)
|
||||
- Исправлено комментирование строк
|
||||
- Добавлен диалог навигации по структуре (процедурам) по Ctrl+F. Исправлена ошибка при закрытии файлов (функции из дерева теперь удаляются).
|
||||
- Добавил цвет фона для панели с номерами строк
|
||||
|
||||
22/08/2022
|
||||
- Fixed clicking on proc or func names into tree if file was closed
|
||||
svkalinin <svk@nuk-svk.ru> Wed, 17 Aug 2022 21:37:06 +0300
|
||||
- Убрал доки по tcl
|
||||
- Слегка поменял стиль оформления
|
||||
|
||||
23/08/2022
|
||||
- Added procedure and function navigation window by Ctrl+j pressed on editor
|
||||
- Fixed correctly focused on editor text widget
|
||||
Sergey Kalinin <svkalinin@samsonpost.ru> Wed, 17 Aug 2022 16:52:22 +0300
|
||||
- Добавлен выбор расположения боковой панели
|
||||
- Добавлено выделение всех слов в тексте по двойному щелчку мышой на любом слове
|
||||
- Исправлено чтение структуры GO файлов: корректное отображение в дереве функций возвращающих значения разных типов
|
||||
- Добавлена подсветка скобок
|
||||
- Новая сборка
|
||||
- Исправлены процедуры comment/uncomment
|
||||
- Изменены имена переенных
|
||||
- Изменены имена переменных
|
||||
- Добавлена запись номера сборки (build) в исходник
|
||||
- Добавлено меню Помощь -> О программе. Добавлено окно 'О программе'
|
||||
- Исправлен поиск процедуры в тексте по клику в дереве
|
||||
- Исправлен поиск процедуры в тексте по клику в дереве. Исправлено отображение позиции курсора в строке статуса
|
||||
- ДОбавлены иконки для некоторых типов файлов
|
||||
- Добавлено отображение структуры исходника в дереве (функции (go) и процедуры (tcl))
|
||||
- Добавлено кодирование изображения в base64 и вставка в редактируемый текст
|
||||
- Добавлены шрифт и цвет шриыта для общего интерфейса
|
||||
- Исправлено комментирование выделенного фрагмента (последняя строка) Исправлено закрытие untitled вкладок
|
||||
- Исправлено комментирование выделенных строк
|
||||
- Добавлена подсветка для GO
|
||||
- Исправлено подключение требуемой процедуры подсветки
|
||||
- Убрал вставку закрывающихся кавычек в пустой строке. Ибо пока глючит.
|
||||
- Добавлен диалог сохранения файла при закрытии вкладки редактора и при выходе из программы если есть несохраненные файлы
|
||||
- Исправлен рабочий каталог
|
||||
- Добавлены переводы для диалога
|
||||
- Исправлен скрипт сборки пакета для Debian
|
||||
- Исправил скрипт сборки пакета. Добавил .gitignore
|
||||
|
||||
24/08/2022
|
||||
- Fixed ReadStructure procedure (added lexer)
|
||||
svkalinin <svk@nuk-svk.ru> Thu, 21 Jul 2022 12:18:29 +0300
|
||||
- Изменил(а) на 'README.md'
|
||||
|
||||
25/08/2022
|
||||
- Fixed focus on the editor window after clicking Escape in the function selection dialog
|
||||
- Change color scheme for FindFunction dialog
|
||||
- Added sh icon (for shell scripts)
|
||||
- Fixed lexers for find procedures and functions
|
||||
svk <svkalinin@samsonpost.ru> Thu, 21 Jul 2022 12:15:19 +0300
|
||||
- Change readme
|
||||
- Added Dark theme
|
||||
- New version of ProjMan
|
||||
- Some changes into GUI (tabs)
|
||||
|
||||
26/08/2022
|
||||
- Update image library (added some icons)
|
||||
- Added hot keys:
|
||||
- Alt+p - Show/Hide additional panel
|
||||
- Alt+w - delete word on the cursor below
|
||||
- Alt+r - delete row
|
||||
- Alt+b - delete text beetween line Begin and cursor
|
||||
- Alt+e - delete text between cursor and line End
|
||||
- Fix close braces indent
|
||||
svkalinin <banzaj28@yandex.ru> Thu, 5 Jul 2018 08:41:18 +0300
|
||||
- Fixed error if file was not select
|
||||
- README.md отредактирован онлайн на Bitbucket
|
||||
|
||||
30/08/2022
|
||||
- Fix the clicked by the close button on a tab
|
||||
- Added "View"->"Editors word wrap" menu and procedure
|
||||
- Added bindings "Ctrl+PgUp" and "Ctrl+PgDown" for next or prior tab selecting
|
||||
- Added "Close file" dialog
|
||||
Sergey Kalinin <banzaj28@yandex.ru> Sat, 24 Mar 2018 12:20:27 +0300
|
||||
- Rename readme
|
||||
|
||||
01/09/2022
|
||||
- Added search function name into Function navigation whem press key
|
||||
- Added find and replace dialog
|
||||
- Fixed correct placement the Function dialog
|
||||
Sergey <banzaj28@yandex.ru> Sat, 24 Mar 2018 12:17:09 +0300
|
||||
- README отредактирован онлайн на Bitbucket
|
||||
- Added sort procedure for projects tree
|
||||
- Added small toolbar into project tree
|
||||
- Added insert base64 encoded image into source code
|
||||
- Some GUI change
|
||||
- Change messages files
|
||||
- Added Menu button into tollbar and Hide/Show options into config
|
||||
- Added procedure arguments into tree Change read config procedure (error fixed) Fixed error when project running
|
||||
- Some Fix
|
||||
- GoToNumber entry small change
|
||||
- GoToLine procedure tuning
|
||||
- Added GoTo line into toolbar Fixed fileinfo update when tree one click Fixed bug with opened files have extention is a upper case
|
||||
- Critical fix again
|
||||
|
||||
14/09/2022
|
||||
- Added procedure for the horizontal split a text window
|
||||
- Fixed untitled file saved
|
||||
- Fixed Alt+R (delete row), now will are deleted row with a "\n\r" symbols
|
||||
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
|
||||
|
||||
20/10/200
|
||||
- Added Git support: add and commit changes, show git log, show each commit...
|
||||
Sergey <svk@s.kalinin-nb> Sat, 24 Feb 2018 12:22:08 +0300
|
||||
- Fixed Add new file if name was existing into tree
|
||||
|
||||
11/11/2022
|
||||
- Added GoTo Line dialog
|
||||
- Fixed Git commit procedure
|
||||
- Added variable and procedure helper
|
||||
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
|
||||
|
||||
18/11/2022
|
||||
- Add Refresh button into Git Dialog
|
||||
- Fixed FindFunction
|
||||
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
|
||||
######################################################
|
||||
|
||||
|
||||
|
151
README.md
151
README.md
@@ -1,27 +1,154 @@
|
||||
ABOUT
|
||||
## About
|
||||
|
||||
ProjMan (aka "Tcl/Tk Project Manager") is a editor for programming in TCL/Tk (and other language).
|
||||
It includes a file manager, a source editor with syntax highlighting and procedure navigation, a context-sensitive
|
||||
help system, and much more.
|
||||
Working an Linux.
|
||||
It includes a file manager, a source editor with syntax highlighting and code navigation, a context-sensitive help system, Git support, and much more.
|
||||
Working an Linux and Windows.
|
||||
|
||||
REQUIREMENTS
|
||||
## Support languages
|
||||
|
||||
Highlightning and source code navigation:
|
||||
|
||||
* Tcl/Tk
|
||||
* GO
|
||||
* Perl
|
||||
* Python
|
||||
* Ruby
|
||||
* Shell (BASH)
|
||||
* Markdown
|
||||
* YAML (Ansible support)
|
||||
* Lua
|
||||
|
||||
Highlightning:
|
||||
|
||||
* HTML
|
||||
* XML
|
||||
|
||||
## Requirements
|
||||
|
||||
For UNIX-like OS
|
||||
Tcl/Tk >= 8.6 http://tcl.tk
|
||||
tcllib, tklib
|
||||
|
||||
CREDITS
|
||||
## 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
|
||||
|
||||

|
||||
|
||||
## Getting source code
|
||||
|
||||
Download the source code https://git.nuk-svk.ru/svk/projman/
|
||||
|
||||
Or use git:
|
||||
|
||||
```
|
||||
git clone https://git.nuk-svk.ru/svk/projman.git
|
||||
```
|
||||
|
||||
## Build package
|
||||
|
||||
```
|
||||
cd projman/debian/
|
||||
./build-deb-projman.sh
|
||||
|
||||
cd projman/redhat/
|
||||
./build-rpm-projman.sh
|
||||
```
|
||||
|
||||
## Install
|
||||
|
||||
Use package manager for you system:
|
||||
|
||||
Debian ```sudo dpkg -i projman_2.0.0-alpha_amd64.deb```
|
||||
|
||||
Redhat ```sudo rpm -Uhv projman_2.0.0-alpha_amd64.rpm```
|
||||
|
||||
## Usage
|
||||
|
||||
Running command (need full path to the each file or folder):
|
||||
|
||||
Open files
|
||||
|
||||
```
|
||||
projman ~/tmp/test.tcl ~/tmp/2.go ...
|
||||
```
|
||||
|
||||
Open folders
|
||||
|
||||
```
|
||||
projman ~/projects/projman ...
|
||||
```
|
||||
|
||||
Or type "projman" into terminal, Or choose the name of the program "Projman" on the Start menu.
|
||||
|
||||
### Keyboard shortcut
|
||||
|
||||
- Ctrl-N - Create new file
|
||||
- Ctrl-O - Open file
|
||||
- Ctrl-W - Close editor (file)
|
||||
- Ctrl-K - Open folder
|
||||
- Ctrl-Q - Quit from ProjMan
|
||||
- Ctrl-J - Show procedures (functions) list for navigation in open editor
|
||||
- Ctrl-L - Find and display files where the variable is defined, the name of which is located under the cursor in the editor
|
||||
- Ctrl-F - Search text in open editor
|
||||
|
||||
- Ctrl-[ - Move the line (or selected lines) one position (see config tabSize=4) to the right
|
||||
- Ctrl-] - Move the line (or selected lines) one position to the left
|
||||
- Ctrl-, - Comment the line (or selected lines)
|
||||
- Ctrl-. - Uncomment the line (or selected lines)
|
||||
- Ctrl-I - Insert base64 encoded image into edited text
|
||||
- Ctrl-G - Go to line dialog
|
||||
- Ctrl-C - Copy selected text into buffer
|
||||
- Ctrl-V - Paste text from buffer
|
||||
|
||||
- Alt-P - Show/Hide the file tree panel
|
||||
- Alt-W - Delete the current word
|
||||
- Alt-E - Delete text from current position to end of line
|
||||
- Alt-B - Delete text from current position to begin of line
|
||||
- Alt-R - Delete current line
|
||||
- Alt-Y - Copy current line into buffer
|
||||
- Alt-S - Split the edited window horizontally
|
||||
|
||||
## Credits
|
||||
|
||||
Sergey Kalinin - author
|
||||
svk@nuk-svk.ru
|
||||
http://nuk-svk.ru
|
||||
|
||||
Laurent Riesterer - VisualREGEXP and TkDIFF+ parts
|
||||
laurent.riesterer@free.fr
|
||||
http://laurent.riesterer.free.fr
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
337
changelog-gen.tcl
Executable file
337
changelog-gen.tcl
Executable file
@@ -0,0 +1,337 @@
|
||||
#!/bin/sh
|
||||
# Tcl ignores the next line -*- tcl -*- \
|
||||
exec tclsh "$0" -- "$@"
|
||||
|
||||
######################################################################
|
||||
# ProjMan 2
|
||||
# Distributed under GNU Public License
|
||||
# Author: Sergey Kalinin svk@nuk-svk.ru
|
||||
# Copyright (c) "SVK", 2024, https://nuk-svk.ru
|
||||
#######################################################################
|
||||
# Changelog generator from the Git commit history.
|
||||
# For DEB and RPM packages
|
||||
# usage a git command:
|
||||
#
|
||||
# git log --abbrev-commit --all --pretty='%h, %ad, %an, %ae, %s, %b'
|
||||
#######################################################################
|
||||
|
||||
# puts $tcl_platform(platform)
|
||||
|
||||
# Устанавливаем рабочий каталог, если его нет то создаём.
|
||||
# Согласно спецификации XDG проверяем наличие переменных и каталогов
|
||||
if [info exists env(XDG_CONFIG_HOME)] {
|
||||
set dir(cfg) [file join $env(XDG_CONFIG_HOME) changelog-gen]
|
||||
} elseif [file exists [file join $env(HOME) .config]] {
|
||||
set dir(cfg) [file join $env(HOME) .config changelog-gen]
|
||||
} else {
|
||||
#set dir(cfg) [file join $env(HOME) .changelog-gen]
|
||||
}
|
||||
|
||||
if {[file exists $dir(cfg)] == 0} {
|
||||
file mkdir $dir(cfg)
|
||||
}
|
||||
|
||||
# Use whereis command for finding the git executable file.
|
||||
# for unix-like operating systems
|
||||
proc GetGitCommandUnix {} {
|
||||
global gitCommand
|
||||
set cmd "whereis -b git"
|
||||
catch "exec $cmd" result
|
||||
# puts $result
|
||||
if {$result ne ""} {
|
||||
set fields [split $result ":"]
|
||||
# puts $fields
|
||||
if {[lindex $fields 1] ne ""} {
|
||||
# puts [lindex $fields 1]
|
||||
set gitCommand "[string trim [lindex $fields 1]]"
|
||||
} else {
|
||||
puts "GIT command not found"
|
||||
exit
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Setting the git-command for windows family OS
|
||||
proc GetGitCommandWindows {} {
|
||||
global gitCommand
|
||||
set gitCommand "c:/git/bin/git.exe"
|
||||
}
|
||||
|
||||
switch $tcl_platform(platform) {
|
||||
unix {GetGitCommandUnix}
|
||||
windows {GetGitCommandWindows}
|
||||
}
|
||||
|
||||
proc ReadGitLog {} {
|
||||
global args gitCommand lastCommitTimeStampSec
|
||||
set cmd exec
|
||||
set i 0
|
||||
lappend cmd "$gitCommand"
|
||||
lappend cmd "log"
|
||||
lappend cmd "--abbrev-commit"
|
||||
# Проверяем была ли запись для данного проекта если была то к времени последнего коммита прибавляем 1 сек.
|
||||
# и получаем журнал после этой даты
|
||||
if {[info exists lastCommitTimeStampSec] && [info exists args(--last)]} {
|
||||
lappend cmd "--after='[clock format [clock add $lastCommitTimeStampSec 1 second] -format {%a, %e %b %Y %H:%M:%S %z}]'"
|
||||
}
|
||||
lappend cmd "--all"
|
||||
lappend cmd "--pretty='%h, %ad, %an, %ae, %s, %b'"
|
||||
# puts $cmd
|
||||
catch $cmd pipe
|
||||
# puts $pipe
|
||||
set outBuffer ""
|
||||
foreach line [split $pipe "\n"] {
|
||||
# puts $line
|
||||
# set line [string trim $line]
|
||||
set line [string trim [string trim $line] {'}]
|
||||
if {[regexp -nocase -all -- {^[0-9a-z]+} $line match]} {
|
||||
set outBuffer $line
|
||||
if {$outBuffer ne ""} {
|
||||
lappend res [list $i $outBuffer]
|
||||
incr i
|
||||
}
|
||||
# puts $outBuffer
|
||||
} else {
|
||||
if {$line ne ""} {
|
||||
append outBuffer ". " $line
|
||||
}
|
||||
}
|
||||
}
|
||||
# puts $res
|
||||
if [info exists res] {
|
||||
return $res
|
||||
} else {
|
||||
puts "\nRepository '$args(--project-name)' do not have any changes\n"
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
proc StoreProjectInfo {timeStamp} {
|
||||
global dir args
|
||||
set cfgFile [open [file join $dir(cfg) $args(--project-name).conf] "w+"]
|
||||
puts $cfgFile "# set args(--project-version) \"$args(--project-version)\""
|
||||
puts $cfgFile "# set args(--project-release) \"$args(--project-release)\""
|
||||
puts $cfgFile "set lastCommitTimeStamp \"$timeStamp\""
|
||||
puts $cfgFile "set lastCommitTimeStampSec [clock scan $timeStamp]"
|
||||
close $cfgFile
|
||||
}
|
||||
|
||||
|
||||
proc GenerateChangelogDEB {} {
|
||||
global args
|
||||
# puts "GenerateChangelogDEB"
|
||||
set lastCommitTimeStamp ""
|
||||
set commiter ""
|
||||
set commitText ""
|
||||
# ReadGitLog
|
||||
set lst [lsort -integer -index 0 [ReadGitLog]]
|
||||
# puts $lst
|
||||
# exit
|
||||
set outText ""
|
||||
foreach l $lst {
|
||||
set index [lindex $l 0]
|
||||
set line [lindex $l 1]
|
||||
# puts "$index - $line"
|
||||
set record [split $line ","]
|
||||
set timeStamp [string trim [lindex $record 1]]
|
||||
set email [string trim [lindex $record 3]]
|
||||
if {$lastCommitTimeStamp eq ""} {
|
||||
set lastCommitTimeStamp [string trim [lindex $record 1]]
|
||||
}
|
||||
set timeStamp [clock format [clock scan $timeStamp] -format {%a, %e %b %Y %H:%M:%S %z}]
|
||||
# puts "> $commiter"
|
||||
if {$index == 0} {
|
||||
puts "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n"
|
||||
append outText "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n"
|
||||
set commiter [lindex $record 2]
|
||||
StoreProjectInfo $timeStamp
|
||||
# puts "\n \[ [string trim $commiter] \]"
|
||||
}
|
||||
# puts ">> $commiter"
|
||||
if {$commiter ne [lindex $record 2]} {
|
||||
puts "\n -- [string trim $commiter] <$email> $timeStamp"
|
||||
append outText "\n -- [string trim $commiter] <$email> $timeStamp\n"
|
||||
puts "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n"
|
||||
append outText "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n"
|
||||
set commiter [lindex $record 2]
|
||||
# puts "\n \[ [string trim $commiter] \]"
|
||||
}
|
||||
|
||||
set commitTex [lindex $record 4]
|
||||
puts " * $commitTex"
|
||||
append outText " * $commitTex\n"
|
||||
|
||||
}
|
||||
puts "\n -- [string trim $commiter] <$email> $timeStamp"
|
||||
append outText "\n -- [string trim $commiter] <$email> $timeStamp\n"
|
||||
return $outText
|
||||
}
|
||||
|
||||
proc GenerateChangelogRPM {} {
|
||||
puts "GenerateChangelogRPM"
|
||||
|
||||
}
|
||||
|
||||
proc GenerateChangelogTXT {} {
|
||||
global args
|
||||
set lastCommitTimeStamp ""
|
||||
set commiter ""
|
||||
set commitText ""
|
||||
set lst [lsort -integer -index 0 [ReadGitLog]]
|
||||
puts "$args(--project-name) ($args(--project-version)-$args(--project-release)"
|
||||
foreach l $lst {
|
||||
set index [lindex $l 0]
|
||||
set line [lindex $l 1]
|
||||
# puts "$index - $line"
|
||||
set record [split $line ","]
|
||||
set timeStamp [string trim [lindex $record 1]]
|
||||
set email [string trim [lindex $record 3]]
|
||||
if {$lastCommitTimeStamp eq ""} {
|
||||
set lastCommitTimeStamp [string trim [lindex $record 1]]
|
||||
}
|
||||
set timeStamp [clock format [clock scan $timeStamp] -format {%a, %e %b %Y %H:%M:%S %z}]
|
||||
# puts "> $commiter"
|
||||
if {$index == 0} {
|
||||
append outText "$args(--project-name) ($args(--project-version)-$args(--project-release))\n"
|
||||
set commiter [lindex $record 2]
|
||||
puts "\n[string trim $commiter] <$email> $timeStamp"
|
||||
append outText "\n[string trim $commiter] <$email> $timeStamp\n"
|
||||
StoreProjectInfo $timeStamp
|
||||
}
|
||||
if {$commiter ne [lindex $record 2]} {
|
||||
puts "\n[string trim $commiter] <$email> $timeStamp"
|
||||
append outText "\n[string trim $commiter] <$email> $timeStamp\n"
|
||||
set commiter [lindex $record 2]
|
||||
}
|
||||
|
||||
set commitTex [lindex $record 4]
|
||||
puts " - $commitTex"
|
||||
append outText " - $commitTex\n"
|
||||
|
||||
}
|
||||
return $outText
|
||||
}
|
||||
# puts [ReadGitLog]
|
||||
|
||||
proc ShowHelp {} {
|
||||
puts "\nChangelog generator from the Git commit history. For DEB and RPM packages"
|
||||
puts "Usage:\n"
|
||||
puts "\tchangelog-gen \[options\]\n"
|
||||
puts "Where options:"
|
||||
puts "\t--project-name - name of project (package) "
|
||||
puts "\t--project-version - package version"
|
||||
puts "\t--project-release - package release name (number)"
|
||||
puts "\t--deb - debian package format of changelog"
|
||||
puts "\t--rpm - rpm package format of changelog"
|
||||
puts "\t--txt - plain text changelog out"
|
||||
puts "\t--out-file - changelog file name"
|
||||
puts "\t--last - The timestamp since the last launch of this program for a given project"
|
||||
}
|
||||
|
||||
proc StoreChangeLog {outText} {
|
||||
global args
|
||||
if [file exists $args(--out-file)] {
|
||||
file copy -force $args(--out-file) "$args(--out-file).tmp"
|
||||
|
||||
set origOutFile [open "$args(--out-file).tmp" "r"]
|
||||
set origText [read $origOutFile]
|
||||
close $origOutFile
|
||||
|
||||
set outFile [open $args(--out-file) "w"]
|
||||
puts $outFile $outText
|
||||
puts $outFile $origText
|
||||
close $outFile
|
||||
|
||||
if [info exists args(--last)] {
|
||||
set outFile [open $args(--out-file) "r+"]
|
||||
puts $outFile $outText
|
||||
close $outFile
|
||||
} else {
|
||||
set outFile [open $args(--out-file) "w+"]
|
||||
puts $outFile $outText
|
||||
close $outFile
|
||||
}
|
||||
} else {
|
||||
set outFile [open $args(--out-file) "w+"]
|
||||
puts $outFile $outText
|
||||
close $outFile
|
||||
}
|
||||
}
|
||||
|
||||
set arglen [llength $argv]
|
||||
set index 0
|
||||
while {$index < $arglen} {
|
||||
set arg [lindex $argv $index]
|
||||
switch -exact $arg {
|
||||
--project-name {
|
||||
set args($arg) [lindex $argv [incr index]]
|
||||
}
|
||||
--project-version {
|
||||
set args($arg) [lindex $argv [incr index]]
|
||||
}
|
||||
--project-release {
|
||||
set args($arg) [lindex $argv [incr index]]
|
||||
}
|
||||
--deb {
|
||||
set args($arg) true
|
||||
}
|
||||
--rpm {
|
||||
set args($arg) true
|
||||
}
|
||||
--txt {
|
||||
set args($arg) true
|
||||
}
|
||||
--out-file {
|
||||
set args($arg) [lindex $argv [incr index]]
|
||||
}
|
||||
--last {
|
||||
set args($arg) true
|
||||
}
|
||||
--help {
|
||||
ShowHelp
|
||||
exit
|
||||
}
|
||||
default {
|
||||
set filename [lindex $argv $index]
|
||||
}
|
||||
}
|
||||
incr index
|
||||
}
|
||||
|
||||
if ![info exists args(--project-name)] {
|
||||
puts "You mast set --project-name option\n"
|
||||
exit
|
||||
}
|
||||
if ![info exists args(--project-version)] {
|
||||
puts "You mast set --project-version option\n"
|
||||
exit
|
||||
}
|
||||
if ![info exists args(--project-release)] {
|
||||
puts "You mast set --project-release option\n"
|
||||
exit
|
||||
}
|
||||
|
||||
if [file exists [file join $dir(cfg) $args(--project-name).conf]] {
|
||||
source [file join $dir(cfg) $args(--project-name).conf]
|
||||
}
|
||||
|
||||
foreach arg [array names args] {
|
||||
puts "$arg $args($arg)"
|
||||
}
|
||||
|
||||
if [info exists args(--deb)] {
|
||||
set outText [GenerateChangelogDEB]
|
||||
if [info exists args(--out-file)] {
|
||||
StoreChangeLog $outText
|
||||
}
|
||||
}
|
||||
if [info exists args(--rpm)] {
|
||||
GenerateChangelogRPM
|
||||
}
|
||||
if [info exists args(--txt)] {
|
||||
set outText [GenerateChangelogTXT]
|
||||
if [info exists args(--out-file)] {
|
||||
StoreChangeLog $outText
|
||||
}
|
||||
}
|
||||
|
11
debian/build-deb-projman.sh
vendored
11
debian/build-deb-projman.sh
vendored
@@ -3,14 +3,16 @@
|
||||
cd ../
|
||||
|
||||
VERSION=$(grep Version projman.tcl | grep -oE '\b[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}\b')
|
||||
RELEASE=$(grep Release projman.tcl | grep -oE '\b[0-9A-Za-z]{1,3}\b')
|
||||
RELEASE=$(grep Release projman.tcl | grep -oE '[0-9A-Za-z]+$')
|
||||
BUILD_DATE=$(date +%d%m%Y%H%M%S)
|
||||
TXT="# Build: ${BUILD_DATE}"
|
||||
|
||||
echo "$VERSION, $RELEASE, $BUILD_DATE"
|
||||
sed -i "/# Build:.*/c$TXT" projman.tcl
|
||||
|
||||
cp projman.tcl projman
|
||||
cp changelog-gen.tcl changelog-gen
|
||||
|
||||
./changelog-gen.tcl --project-name projman --project-version ${VERSION} --project-release ${RELEASE} --out-file debian/changelog --deb --last
|
||||
|
||||
sed -i "s+^set\ dir(lib)+set\ dir(lib)\ /usr/share/projman/lib ;#+g" projman
|
||||
|
||||
@@ -19,10 +21,9 @@ sed -i "s+\[pwd\]+/usr/share/projman+g" projman
|
||||
|
||||
tar czf ../projman_${VERSION}.orig.tar.gz .
|
||||
|
||||
dpkg-buildpackage
|
||||
dpkg-buildpackage -d
|
||||
|
||||
#cp ../projman_${VERSION}-${RELEASE}_amd64.deb /files/
|
||||
|
||||
rm -v projman
|
||||
rm -v projman changelog-gen
|
||||
rm -r -v debian/{projman,.debhelper}
|
||||
|
||||
|
339
debian/changelog
vendored
339
debian/changelog
vendored
@@ -1,5 +1,338 @@
|
||||
projman (2.0.0-alpha) stable; urgency=medium
|
||||
projman (2.0.0-alpha16) stable; urgency=medium
|
||||
|
||||
* Initial release
|
||||
* build-deb-projman.sh: добавлена генерация changelog из git log
|
||||
* changelog-gen.tcl: Вывод в файл вынесен в отдельную процедуру
|
||||
* changelog-gen.tcl: Добавлено создание резервной копии выходного файла. Исправлен вывод в файл.
|
||||
* changelog-gen.tcl: Добавлены опции командной строки
|
||||
* changelog-gen.tcl: Добавлена генерация текстового журнала изменений
|
||||
* Добавлен запуск changelog-gen при сборке пакета
|
||||
* Добавлено чстение журнала начиная с определенной даты
|
||||
* Новая сборка
|
||||
|
||||
-- Sergey Kalinin <svk@nuk-svk.ru> Thu, 22 Aug 2024 13:38:52 +0300
|
||||
|
||||
projman (2.0.0-alfa15) stable; urgency=medium
|
||||
|
||||
* Генерация списка изменений для debian приведена к корректному виду
|
||||
* Исправлен фокус при создании нового файла. #3
|
||||
|
||||
-- Калинин Сергей Валерьевич <svkalinin@samsonpost.ru> Wed, 17 Jul 2024 12:28:30 +0300
|
||||
|
||||
projman (2.0.0-alfa14) stable; urgency=medium
|
||||
|
||||
* Исправлена неправильная замена выражение при поиске
|
||||
* Реализовал базовые функции генератора журнала изменений
|
||||
|
||||
-- svkalinin <svk@nuk-svk.ru> Thu, 27 Jun 2024 14:44:47 +0300
|
||||
|
||||
projman (2.0.0-alfa13) stable; urgency=medium
|
||||
|
||||
* Добавлена иконка для jinja template
|
||||
* Исправил остатки слияния веток
|
||||
* Исправлено некорректное определение типа файла при открытии.
|
||||
|
||||
-- svkalinin <svk@nuk-svk.ru> Mon, 30 Oct 2023 10:44:37 +0300
|
||||
|
||||
projman (2.0.0-alfa12) stable; urgency=medium
|
||||
|
||||
* Обновить .gitea/workflows/build.yml
|
||||
* Gitea actions add
|
||||
|
||||
-- svk <svkalinin@samsonpost.ru> Thu, 27 Jul 2023 13:04:32 +0300
|
||||
|
||||
projman (2.0.0-alfa11) stable; urgency=medium
|
||||
|
||||
* Merge branch 'master' of https://git.nuk-svk.ru/svk/projman
|
||||
* Исправил открытие файлов с разными путями (~/ ./ ../)
|
||||
|
||||
-- svkalinin <svk@nuk-svk.ru> Thu, 23 Feb 2023 13:46:56 +0300
|
||||
|
||||
projman (2.0.0-alfa10) stable; urgency=medium
|
||||
|
||||
* Добавил изображений программы
|
||||
|
||||
-- svk <svkalinin@samsonpost.ru> Mon, 6 Feb 2023 09:27:38 +0300
|
||||
|
||||
projman (2.0.0-alfa9) stable; urgency=medium
|
||||
|
||||
* Исправлена ошибка при создании нового файла.
|
||||
|
||||
-- svkalinin <svk@svk.home> Thu, 22 Dec 2022 19:59:05 +0300
|
||||
|
||||
projman (2.0.0-alfa8) stable; urgency=medium
|
||||
|
||||
* Добавил пиктограммы файлов
|
||||
* Исправил процедуру Files::CloseAll ('Закрыть всё')
|
||||
* Добавлена поддержка Lua
|
||||
* Исправлена процедура (рас)комментирования
|
||||
* Исправил ошибку при выходе в процедуре (Congig::Write)
|
||||
* Добавил раскраски в ruby
|
||||
* Добавлена возможность многострочных комментариев
|
||||
* В Ruby lexer добавлен поиск переменных коде.
|
||||
* Новая сборка
|
||||
* Немного почистил. Добавлен поиск переменных по питоньим исходникам (lexer)
|
||||
* Еще одно исправление подсветки для INI
|
||||
* Новая сборка
|
||||
* Исправлене подсветки комментариев в INI
|
||||
* Новая сборка
|
||||
* Изменения в подсветке для INI
|
||||
* fix
|
||||
* Добавил подсветку для Desktop и Spec файлов
|
||||
* Добавил вывод отладочной инфы в процедуру
|
||||
* Исправил подсветку комментариев в TCL
|
||||
* Оптимизация процедур
|
||||
* Добавлена подсветка и навигация по HTML. Исправлена подсветка XML
|
||||
* Новая сборка
|
||||
* Добавил иконку для изображений
|
||||
* Добавил иконки для perl
|
||||
* Fix
|
||||
* Исправлена подсветка и навигация по коду для Ruby
|
||||
* Обновил список изменений
|
||||
* Исправлено сохранение сессии в редакторе (открытие папки и файлов при следующем запуске)
|
||||
* Добавлена новая секция UserSession
|
||||
* Исправление ошибки при открытии файла
|
||||
* Добавлена поддержка INI-файлов (подсветка
|
||||
* Добавлена поддержка perl
|
||||
* Добавил икогнку для файлов git
|
||||
* Новая сборка
|
||||
* Добавлены иконуи для ключей и сертификатов. Изменен поиск иконки (вощзвращает теерь с размером)
|
||||
* Новая чборка
|
||||
* Реализован двухпанельный режим работы (вертиикальное разделение)
|
||||
* Test
|
||||
* Тесты
|
||||
* TEsting drone build
|
||||
* ДОбавил сборку в drone
|
||||
* Исправлена ошибка при открытии ansible.cfg
|
||||
* Добавил деактивацию кнопки 'Создать репу' если не выбран активный проект (не открыто ни одного каталога/папки)
|
||||
* Добавлены команды git init и git config (зачаток). Изменен диалог клонирования репозитория (добавлена кнопка Создать репозиторий)
|
||||
* Исправил ошибку git при открытии файла или каталога если репозиторий не инициализирован (нет .git каталога внутри проекта)
|
||||
* Переименовал файл
|
||||
* Добавил скриты сборки rpm
|
||||
* Добавлено обрамление выделенного текста прии нажатии '_' в markdown
|
||||
* Исправление подсветки
|
||||
* Добавлена поддержка markdown (подсветка
|
||||
* Обновил описание
|
||||
* Новая сборка
|
||||
* Исправлена ошибка с закрытием файлов в редакторе при закрытии папки
|
||||
* Новая сборка
|
||||
* Переделана процедура определения активного проекта. Исправлено определение ветки git. Теперь можно нормально работать в двух и более открытых проектах (каталогах/папках)
|
||||
* Новая сборка
|
||||
* Доделан вид диалога поиска по файлам
|
||||
* Исправлен поиск имени функции
|
||||
* Новая сборка
|
||||
* Добавлен диалог клонирования репозитория
|
||||
* Добавил разделитель
|
||||
* Исправлено переключение вкладок при закрытии
|
||||
* Исправлено закрытиие вкладки Git по нажатию соотв. кнопки в панели инструментов
|
||||
* Добавлен пункт 'Закрыть всё'
|
||||
* Новая сборка
|
||||
* Исправлено соответствие открытого файла в редакторе и выделение этого файла в дереве
|
||||
* Исправлено переключение отображения панели (лево/право) в без перезапуска программы.
|
||||
* Украшательства интерфейса - Реакция на нажатие кнопки в панели инструментов теперь зависит от контекста
|
||||
* Добавлено включение отключение отображения Меню
|
||||
* Добавлено копирование текущей строки в буфер по Atl+Y
|
||||
* Исправлена ошибка с отображением файловой панели
|
||||
* Добавлены и исправлены функции отображения меню
|
||||
* Фикс
|
||||
* Добавлен параметр statusBarShow - показ строки статуса
|
||||
* Добавлены переводы
|
||||
* Добавлена проверка параметров вызова файл или просто строка
|
||||
* Новая сборка
|
||||
* Добавлен вывод сообщений об ошибке в диалоге
|
||||
* Добавлено обновления списка файлов в дереве
|
||||
* Добавлена процедура вывода информационного сообщения
|
||||
* Добавлена команда Git::Reset (git reset _file_) на кнопке в диалоге. Для отмены 'git add'
|
||||
* Добавлена кнопка Обновление в диалог работы с Git
|
||||
* Исправление процедуры поиска наименования функции
|
||||
* Фиксы диалога работы с Git (работа с выделенными файлами в списках)
|
||||
* Test
|
||||
* Фиксы и тесты работы с git
|
||||
* test
|
||||
* Исправление выборанескольких файлов в диалоге Git
|
||||
* Новая сборка
|
||||
* Украшательства
|
||||
* Новая сборка
|
||||
* Исправление рег. выражения чтения файлов командой git status
|
||||
* Настройки темы
|
||||
* Исправлено рег. выпражение определения mime типа файла
|
||||
* Ntvs
|
||||
* Новая сборка
|
||||
* Добавил очистку текстовых полей при добавлении файлов в коммит
|
||||
* Исправрелдение Git::Commit (индексация всех файлов в проекте)
|
||||
* Изменения
|
||||
* Фиксы
|
||||
* Test
|
||||
* Исправления глюков
|
||||
* Украшательства строки статуса
|
||||
* Добавлен просмотрщик изображений
|
||||
* Добавил рамку кону ввода номера
|
||||
* Добавлен диалог перехода по номеру строки Ctrl-G
|
||||
* Добавлено определение типа файла
|
||||
* Новая сборка
|
||||
* Добавил удаление артефактов сборки пакета
|
||||
* Новая сборка
|
||||
* Fix
|
||||
* Добавлена подсветка имен файлов в выводе git show
|
||||
* Новая сборка
|
||||
* Допилдивание процедуры автоввода имен переменных
|
||||
* Небольшие правки в подсказках по переменным
|
||||
* Новая сборка
|
||||
* Исправлена подсветка SHELL переменных а YAML файлах (ansible
|
||||
* Fix
|
||||
* Новая сборка. Добавлена подсказка по переменным при вводе.
|
||||
* Добавлено определение символа переменной
|
||||
* fackup
|
||||
* Определение коррректного положения встроенного окна
|
||||
* Новая сборка
|
||||
* Добавлен вывод подсказки при вводе переменных
|
||||
* Добавлены опции для включсения полджсказок по переменным и процедурам
|
||||
* Новая сборка
|
||||
* Исправления гуя
|
||||
* Fix
|
||||
* Фикс
|
||||
* Добавил диалог создания и переключения git-веток
|
||||
* Создание ветки
|
||||
* Фикс
|
||||
* Новые иконки
|
||||
* Косметические изменения
|
||||
* Ченю push
|
||||
* Ченю push
|
||||
* Починил push
|
||||
* Добавлены новые иконки
|
||||
* Обработка ошибок
|
||||
* Обработка ошибок
|
||||
* Новая сборка
|
||||
* Исправлена ошибка при клике на списке с файлами
|
||||
* New build
|
||||
* Сделал просмотр изменений из истории
|
||||
* Добавлено обновление лога изменений
|
||||
* Новый билд
|
||||
* Исправление обновления диалога
|
||||
* Fix
|
||||
* Добавлен перевод
|
||||
* git reflog
|
||||
* Добавлен интерфейс работы с Git
|
||||
* Новый релиз
|
||||
* Исправил ошибку если нет изменений
|
||||
* Начало работ по поддержке git
|
||||
* New build
|
||||
* Bug fix
|
||||
* Добавлен диалог поиска строки в файлах в текущем каталоге. Используется 'grep -r'.
|
||||
* Добавлены настройки для системной команды поиска в фвайлах
|
||||
* Добавлено рекурсивное чтение каталога при открытии. Диалог поиска теперь работает раздельно при разделении окна. Диалог навигации по функци так-же работает раздельно
|
||||
* Добавлены ключевые слова для подстветки питона
|
||||
* Добавлена проверка на отсутствие файла и удаление из дерева
|
||||
|
||||
-- svkalinin <svk@nuk-svk.ru> Sun, 18 Sep 2022 10:46:59 +0300
|
||||
|
||||
projman (2.0.0-alfa7) stable; urgency=medium
|
||||
|
||||
* Добавлен поиск переменной в тексте после открытия файла где она указана
|
||||
* Исправлена ошибка при запуске
|
||||
|
||||
-- Sergey Kalinin <svkalinin@samsonpost.ru> Fri, 16 Sep 2022 16:37:17 +0300
|
||||
|
||||
projman (2.0.0-alfa6) stable; urgency=medium
|
||||
|
||||
* Новая сборка
|
||||
* Исправил сохранение открытого каталога в настройках
|
||||
* Рефакторинг
|
||||
* Переделал дилог навигации по переменным
|
||||
* Исправил ошибку
|
||||
* Добавлен еще один каталог с переменными - default
|
||||
* Добавлено сохранение состояния редактора (открытые каталоги
|
||||
* Изменения в диалоге поиска
|
||||
* Изменения в диалоге поиска
|
||||
* Отображение горизонтальной полосы прокрутки в зависимости от переноса строк в редакторе
|
||||
* Установка фокуса на текст в редакторе при щелчке на заголовок вкладки
|
||||
* Сделал перемещение курсора в такуюже позицию в тексте при разделении окна редактора
|
||||
* Добавлено горизонтальное разделение окна редактора. Исправлено удаление строки по Alt+R - реперь строка удаляется полностью вместе с символами переноса. Исправлено сохранение нового файла (untitled) но всеравно как-то криво.
|
||||
* Изменения по чтению и отображению переменных по файлам. Причесал диалог
|
||||
|
||||
-- svkalinin <svk@nuk-svk.ru> Fri, 2 Sep 2022 21:42:40 +0300
|
||||
|
||||
projman (2.0.0-alfa5) stable; urgency=medium
|
||||
|
||||
* Добавил поддержку ruby
|
||||
* Исправлен выход окна со списком функций за пределы экрана. Поиск и замена теперь работает. Добавлены некоторые иконки для файлов
|
||||
* Начало реализации процедуры поиска и замены (поиск криво но работает)
|
||||
* Fix
|
||||
* Исправлено закерытие вкладки по щелчку мыши. Добавлена настройка переноса строк в редакторе. Добавлены сочетания клавиш ctrl+pgup cntrl+pgdown для переключения между вкладками редактора. Добавлен диалог закрытия папки (каталога)
|
||||
* Укоротил имя корневого каталога в дереве
|
||||
* Добавлены ключиевые слова GO
|
||||
* Исправлена подсветка ключевых слов tcl и добавлены виджеты
|
||||
* Исправлена некорректная установка иконки на каталог
|
||||
* Добавлены горячие клавиши для удаления слова
|
||||
* Добавлены сочетания клавиш для удаления слова
|
||||
|
||||
-- svkalinin <svk@nuk-svk.ru> Fri, 26 Aug 2022 12:36:14 +0300
|
||||
|
||||
projman (2.0.0-alfa4) stable; urgency=medium
|
||||
|
||||
* Добавлена поддержка python. Обновлена библиотека иконок.
|
||||
* Исправлена установка фокуса на окно диалога GotoFunctionDialog и обратно на текст. Переделан механизм чтения структуры файла и добавлены команды для sh (bash)
|
||||
* Добавлены настройки темы для диалога навигации по функциям
|
||||
* Добавлена иконка shell (*.sh)
|
||||
* Исправлено комментирование строк
|
||||
* Добавлен диалог навигации по структуре (процедурам) по Ctrl+F. Исправлена ошибка при закрытии файлов (функции из дерева теперь удаляются).
|
||||
* Добавил цвет фона для панели с номерами строк
|
||||
|
||||
-- svkalinin <svk@nuk-svk.ru> Wed, 17 Aug 2022 21:37:06 +0300
|
||||
|
||||
projman (2.0.0-alfa3) stable; urgency=medium
|
||||
|
||||
* Убрал доки по tcl
|
||||
* Слегка поменял стиль оформления
|
||||
|
||||
-- Sergey Kalinin <svkalinin@samsonpost.ru> Wed, 17 Aug 2022 16:52:22 +0300
|
||||
|
||||
projman (2.0.0-alfa2) stable; urgency=medium
|
||||
|
||||
* Добавлен выбор расположения боковой панели
|
||||
* Добавлено выделение всех слов в тексте по двойному щелчку мышой на любом слове
|
||||
* Исправлено чтение структуры GO файлов: корректное отображение в дереве функций возвращающих значения разных типов
|
||||
* Добавлена подсветка скобок
|
||||
* Новая сборка
|
||||
* Исправлены процедуры comment/uncomment
|
||||
* Изменены имена переенных
|
||||
* Изменены имена переменных
|
||||
* Добавлена запись номера сборки (build) в исходник
|
||||
* Добавлено меню Помощь -> О программе. Добавлено окно 'О программе'
|
||||
* Исправлен поиск процедуры в тексте по клику в дереве
|
||||
* Исправлен поиск процедуры в тексте по клику в дереве. Исправлено отображение позиции курсора в строке статуса
|
||||
* ДОбавлены иконки для некоторых типов файлов
|
||||
* Добавлено отображение структуры исходника в дереве (функции (go) и процедуры (tcl))
|
||||
* Добавлено кодирование изображения в base64 и вставка в редактируемый текст
|
||||
* Добавлены шрифт и цвет шриыта для общего интерфейса
|
||||
* Исправлено комментирование выделенного фрагмента (последняя строка) Исправлено закрытие untitled вкладок
|
||||
* Исправлено комментирование выделенных строк
|
||||
* Добавлена подсветка для GO
|
||||
* Добавлена подстка для GO
|
||||
* Исправлено подключение требуемой процедуры подсветки
|
||||
* Убрал вставку закрывающихся кавычек в пустой строке. Ибо пока глючит.
|
||||
* Добавлен диалог сохранения файла при закрытии вкладки редактора и при выходе из программы если есть несохраненные файлы
|
||||
* Исправлен рабочий каталог
|
||||
* Добавлены переводы для диалога
|
||||
* Исправлен скрипт сборки пакета для Debian
|
||||
* Убрал лишнее
|
||||
* Исправил скрипт сборки пакета. Добавил .gitignore
|
||||
* Исправил скрипт сборки пакета. Добавил .gitignore
|
||||
|
||||
-- svkalinin <svk@nuk-svk.ru> Thu, 21 Jul 2022 12:18:29 +0300
|
||||
|
||||
projman (2.0.0-alfa1) stable; urgency=medium
|
||||
|
||||
* Изменил(а) на 'README.md'
|
||||
|
||||
-- svk <svkalinin@samsonpost.ru> Thu, 21 Jul 2022 12:15:19 +0300
|
||||
|
||||
projman (2.0.0-alfa0) stable; urgency=medium
|
||||
|
||||
* Change readme
|
||||
* Added Dark theme
|
||||
* New version of ProjMan
|
||||
* New version of ProjMan
|
||||
* Some changes into GUI (tabs)
|
||||
|
||||
-- svkalinin <banzaj28@yandex.ru> Thu, 5 Jul 2018 08:41:18 +0300
|
||||
|
||||
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 20 Jul 2022 16:56:31 +0300
|
||||
|
5
debian/install
vendored
5
debian/install
vendored
@@ -1,7 +1,8 @@
|
||||
projman /usr/bin/
|
||||
changelog-gen /usr/bin/
|
||||
lib/*.tcl /usr/share/projman/lib
|
||||
lib/msgs/* /usr/share/projman/lib/msgs
|
||||
theme /usr/share/projman/
|
||||
README.md /usr/share/doc/projman
|
||||
debian/projman.desktop /usr/share/applications
|
||||
projman-48.png /usr/share/pixmaps
|
||||
projman.desktop /usr/share/applications
|
||||
projman.png /usr/share/pixmaps
|
||||
|
@@ -23,8 +23,6 @@ if [info exists env(LANG)] {
|
||||
|
||||
set ::configDefault "\[General\]
|
||||
cfgModifyDate=''
|
||||
opened=
|
||||
editedFiles=
|
||||
searchCommand=/usr/bin/grep
|
||||
searchCommandOptions=-r -n -H
|
||||
gitCommand=/usr/bin/git
|
||||
@@ -36,7 +34,7 @@ locale=$locale
|
||||
theme=dark
|
||||
toolBarShow=true
|
||||
menuShow=true
|
||||
statusbarShow=true
|
||||
statusBarShow=true
|
||||
filesPanelShow=true
|
||||
filesPanelPlace=left
|
||||
geometry=1024x768
|
||||
@@ -62,6 +60,10 @@ lineNumberShow=true
|
||||
tabSize=4
|
||||
procedureHelper=false
|
||||
variableHelper=true
|
||||
multilineComments=true
|
||||
\[UserSession\]
|
||||
opened=
|
||||
editedFiles=
|
||||
"
|
||||
proc Config::create {dir} {
|
||||
set cfgFile [open [file join $dir projman.ini] "w+"]
|
||||
@@ -81,7 +83,7 @@ proc Config::read {dir} {
|
||||
}
|
||||
|
||||
proc Config::write {dir} {
|
||||
global activeProject
|
||||
global activeProject editors
|
||||
set cfgFile [ini::open [file join $dir projman.ini] "w"]
|
||||
foreach section [array names ::cfgINIsections] {
|
||||
foreach key $::cfgINIsections($section) {
|
||||
@@ -91,14 +93,30 @@ proc Config::write {dir} {
|
||||
set systemTime [clock seconds]
|
||||
# Set a config modify time (i don't know why =))'
|
||||
ini::set $cfgFile "General" cfgModifyDate [clock format $systemTime -format "%D %H:%M:%S"]
|
||||
ini::set $cfgFile "UserSession" editedFiles ""
|
||||
|
||||
# Save an top level window geometry into config
|
||||
ini::set $cfgFile "GUI" geometry [wm geometry .]
|
||||
if {[info exists activeProject] !=0 && $activeProject ne ""} {
|
||||
ini::set $cfgFile "General" opened $activeProject
|
||||
} else {
|
||||
ini::set $cfgFile "General" opened ""
|
||||
ini::set $cfgFile "UserSession" opened $activeProject
|
||||
# Добавим пути к открытым в редакторе файлам в переменную
|
||||
if [info exists editors] {
|
||||
foreach i [dict keys $editors] {
|
||||
# puts [dict get $editors $i]
|
||||
if [dict exists $editors $i fileFullPath] {
|
||||
lappend edited [dict get $editors $i fileFullPath]
|
||||
}
|
||||
}
|
||||
if [info exists edited] {
|
||||
ini::set $cfgFile "UserSession" editedFiles $edited
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ini::set $cfgFile "UserSession" opened ""
|
||||
ini::set $cfgFile "UserSession" editedFiles ""
|
||||
}
|
||||
# puts $editors
|
||||
|
||||
ini::commit $cfgFile
|
||||
ini::close $cfgFile
|
||||
}
|
||||
|
256
lib/editor.tcl
256
lib/editor.tcl
@@ -20,31 +20,56 @@ namespace eval Editor {
|
||||
|
||||
# Comment one string or selected string
|
||||
proc Comment {txt fileType} {
|
||||
global lexers
|
||||
global lexers cfgVariables
|
||||
set selIndex [$txt tag ranges sel]
|
||||
set pos [$txt index insert]
|
||||
set lineNum [lindex [split $pos "."] 0]
|
||||
set PosNum [lindex [split $pos "."] 1]
|
||||
# set posNum [lindex [split $pos "."] 1]
|
||||
set useMultiLine false
|
||||
|
||||
if [dict exists $lexers $fileType commentSymbol] {
|
||||
set symbol [dict get $lexers $fileType commentSymbol]
|
||||
} else {
|
||||
set symbol "#"
|
||||
}
|
||||
puts "Select : $selIndex"
|
||||
if {[dict exists $lexers $fileType commentMultilineSymbolBegin] == 1 && $cfgVariables(multilineComments) eq "true"} {
|
||||
set symbolBegin [dict get $lexers $fileType commentMultilineSymbolBegin]
|
||||
} else {
|
||||
set symbolBegin ""
|
||||
}
|
||||
if {[dict exists $lexers $fileType commentMultilineSymbolEnd] == 1 && $cfgVariables(multilineComments) eq "true"} {
|
||||
set symbolEnd [dict get $lexers $fileType commentMultilineSymbolEnd]
|
||||
} else {
|
||||
set symbolEnd ""
|
||||
}
|
||||
|
||||
# puts "Select : $selIndex"
|
||||
if {$selIndex != ""} {
|
||||
set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
|
||||
set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
|
||||
# Если выделенно больше одной строки то включаем многострочный комментарий
|
||||
if {$lineBegin < $lineEnd} {
|
||||
set useMultiLine true
|
||||
}
|
||||
set posBegin [lindex [split [lindex $selIndex 1] "."] 0]
|
||||
set posEnd [lindex [split [lindex $selIndex 1] "."] 1]
|
||||
if {$lineEnd == $lineNum && $posEnd == 0} {
|
||||
set lineEnd [expr $lineEnd - 1]
|
||||
}
|
||||
if {$symbolEnd ne ""} {
|
||||
$txt insert $lineEnd.end "\n$symbolEnd"
|
||||
set lineEnd [expr $lineEnd + 2]
|
||||
}
|
||||
if {$symbolBegin ne ""} {
|
||||
$txt insert $lineBegin.0 "$symbolBegin\n"
|
||||
}
|
||||
if {$symbolBegin eq "" && $symbolEnd eq ""} {
|
||||
for {set i $lineBegin} {$i <= $lineEnd} {incr i} {
|
||||
#$txt insert $i.0 "# "
|
||||
regexp -nocase -indices -- {^(\s*)(.*?)} [$txt get $i.0 $i.end] match v1 v2
|
||||
$txt insert $i.[lindex [split $v2] 0] "$symbol "
|
||||
}
|
||||
}
|
||||
$txt tag add comments $lineBegin.0 $lineEnd.end
|
||||
$txt tag raise comments
|
||||
} else {
|
||||
@@ -62,14 +87,14 @@ namespace eval Editor {
|
||||
set lineNum [lindex [split $pos "."] 0]
|
||||
set posNum [lindex [split $pos "."] 1]
|
||||
|
||||
if {[info procs GetComment:$fileType] ne ""} {
|
||||
set commentProcedure "GetComment:$fileType"
|
||||
} else {
|
||||
set commentProcedure {GetComment:Unknown}
|
||||
}
|
||||
# if {[info procs GetComment:$fileType] ne ""} {
|
||||
# set commentProcedure "GetComment"
|
||||
# } else {
|
||||
# set commentProcedure {GetComment:Unknown}
|
||||
# }
|
||||
set commentProcedure "GetComment"
|
||||
|
||||
# puts "$fileType, $commentProcedure"
|
||||
puts "$fileType, $commentProcedure"
|
||||
if {$selIndex != ""} {
|
||||
set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
|
||||
set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
|
||||
@@ -80,7 +105,7 @@ namespace eval Editor {
|
||||
}
|
||||
for {set i $lineBegin} {$i <=$lineEnd} {incr i} {
|
||||
set str [$txt get $i.0 $i.end]
|
||||
set commentSymbolIndex [$commentProcedure $str]
|
||||
set commentSymbolIndex [$commentProcedure $fileType $str]
|
||||
if {$commentSymbolIndex != 0} {
|
||||
$txt delete $i.[lindex $commentSymbolIndex 0] $i.[lindex $commentSymbolIndex 1]
|
||||
}
|
||||
@@ -91,7 +116,7 @@ namespace eval Editor {
|
||||
} else {
|
||||
set posNum [lindex [split $pos "."] 1]
|
||||
set str [$txt get $lineNum.0 $lineNum.end]
|
||||
set commentSymbolIndex [$commentProcedure $str]
|
||||
set commentSymbolIndex [$commentProcedure $fileType $str]
|
||||
if {$commentSymbolIndex != 0} {
|
||||
$txt delete $lineNum.[lindex $commentSymbolIndex 0] $lineNum.[lindex $commentSymbolIndex 1]
|
||||
}
|
||||
@@ -101,35 +126,47 @@ namespace eval Editor {
|
||||
}
|
||||
proc GetComment {fileType str} {
|
||||
global lexers
|
||||
puts [dict get $lexers $fileType commentSymbol]
|
||||
if {[dict exists $lexers $fileType commentSymbol] == 0} {
|
||||
return
|
||||
# puts [dict get $lexers $fileType commentSymbol]
|
||||
if [dict exists $lexers $fileType commentSymbol] {
|
||||
# return
|
||||
set symbol [dict get $lexers $fileType commentSymbol]
|
||||
} else {
|
||||
set symbol "#"
|
||||
}
|
||||
regsub -all {\{} $str "\\{" str
|
||||
regsub -all {\}} $str "\\}" str
|
||||
regsub -all {\[} $str {\\[} str
|
||||
regsub -all {\]} $str {\\]} str
|
||||
|
||||
if {[regexp -nocase -indices -- {(^| )([dict get $lexers $fileType commentSymbol]\s)(.+)} $str match v1 v2 v3]} {
|
||||
puts "$match, $v1, $v2, $v3"
|
||||
set cmd "regexp -nocase -indices -- {(^|\s+)\\s*($symbol\\s*)(.*)} {$str} match v1 v2 v3"
|
||||
|
||||
puts $cmd
|
||||
# puts [eval $cmd]
|
||||
if [eval $cmd] {
|
||||
puts "$match, $v2, $v3"
|
||||
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
proc GetComment:TCL {str} {
|
||||
if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 v2 v3]} {
|
||||
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
proc GetComment:GO {str} {
|
||||
# puts ">>>>>>>$str"
|
||||
if {[regexp -nocase -indices -- {(^| |\t)(//\s)(.+)} $str match v1 v2 v3]} {
|
||||
# puts ">>>> $match $v1 $v2 $v3"
|
||||
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
# proc GetComment:TCL {str} {
|
||||
# if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 v2 v3]} {
|
||||
# return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
||||
# } else {
|
||||
# return 0
|
||||
# }
|
||||
# }
|
||||
# proc GetComment:GO {str} {
|
||||
# # puts ">>>>>>>$str"
|
||||
# if {[regexp -nocase -indices -- {(^| |\t)(//\s)(.+)} $str match v1 v2 v3]} {
|
||||
# # puts ">>>> $match $v1 $v2 $v3"
|
||||
# return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
||||
# } else {
|
||||
# return 0
|
||||
# }
|
||||
# }
|
||||
|
||||
proc GetComment:Unknown {str} {
|
||||
if {[regexp -nocase -indices -- {(^| )(#\s)(.+)} $str match v1 v2 v3]} {
|
||||
return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
|
||||
@@ -338,19 +375,12 @@ namespace eval Editor {
|
||||
|
||||
proc SelectionHighlight {txt} {
|
||||
variable selectionText
|
||||
|
||||
$txt tag remove lightSelected 1.0 end
|
||||
|
||||
set selBegin [lindex [$txt tag ranges sel] 0]
|
||||
set selEnd [lindex [$txt tag ranges sel] 1]
|
||||
if {$selBegin ne "" && $selEnd ne ""} {
|
||||
set selectionText [$txt get $selBegin $selEnd]
|
||||
# set selBeginRow [lindex [split $selBegin "."] 1]
|
||||
# set selEndRow [lindex [split $selEnd "."] 1]
|
||||
# puts "$selBegin, $selBeginRow; $selEnd, $selEndRow"
|
||||
# set symNumbers [expr $selEndRow - $selBeginRow]
|
||||
set symNumbers [expr [lindex [split $selEnd "."] 1] - [lindex [split $selBegin "."] 1]]
|
||||
# puts "Selection $selectionText"
|
||||
if [string match "-*" $selectionText] {
|
||||
set selectionText "\$selectionText"
|
||||
}
|
||||
@@ -359,7 +389,6 @@ namespace eval Editor {
|
||||
set selFindLine [lindex [split $ind "."] 0]
|
||||
set selFindRow [lindex [split $ind "."] 1]
|
||||
set endInd "$selFindLine.[expr $selFindRow + $symNumbers]"
|
||||
# puts "$ind; $symNumbers; $selFindLine, $selFindRow; $endInd "
|
||||
$txt tag add lightSelected $ind $endInd
|
||||
}
|
||||
}
|
||||
@@ -369,6 +398,7 @@ namespace eval Editor {
|
||||
set win .varhelper
|
||||
# if { [winfo exists $win] == 0 } { return }
|
||||
set ind [$win.lBox curselection]
|
||||
puts ">>>>>>>>>>>> VarHelperBind <<<<<<<<<<<<<<<<"
|
||||
|
||||
switch -- $K {
|
||||
Prior {
|
||||
@@ -413,27 +443,22 @@ namespace eval Editor {
|
||||
}
|
||||
} ;# proc auto_completition_key
|
||||
proc VarHelperEscape {w} {
|
||||
puts "VarHelperEscape"
|
||||
bindtags $w.t [list [winfo parent $w.t] $w.t Text sysAfter all]
|
||||
puts ">>>>>>>>>>>> VarHelperEscape <<<<<<<<<<<<<<<<"
|
||||
# bindtags $w [list [winfo parent $w] $w Text sysAfter all]
|
||||
bindtags $w [list [winfo toplevel $w] $w Ctext sysAfter all]
|
||||
catch { destroy .varhelper }
|
||||
puts [bindtags $w]
|
||||
puts [bind $w]
|
||||
puts [bindtags $w.t]
|
||||
puts [bind $w.t]
|
||||
}
|
||||
|
||||
}
|
||||
proc VarHelper {x y w word wordType} {
|
||||
global editors lexers variables
|
||||
variable txt
|
||||
variable win
|
||||
# set txt $w.frmText.t
|
||||
# блокировка открытия диалога если запущен другой
|
||||
if [winfo exists .findVariables] {
|
||||
return
|
||||
}
|
||||
set txt $w
|
||||
set win .varhelper
|
||||
# set win .varhelper
|
||||
puts "$x $y $w $word $wordType"
|
||||
set fileType [dict get $editors $txt fileType]
|
||||
|
||||
@@ -502,20 +527,38 @@ namespace eval Editor {
|
||||
}
|
||||
}
|
||||
# unset item
|
||||
# puts $findedVars
|
||||
bindtags $txt [list VarHelperBind [winfo toplevel $txt] $txt Ctext sysAfter all]
|
||||
# bindtags $txt [list VarHelperBind [winfo toplevel $txt] $txt Ctext sysAfter all]
|
||||
# bindtags $txt.t [list VarHelperBind [winfo parent $txt.t] $txt.t Text sysAfter all]
|
||||
bind VarHelperBind <Escape> "Editor::VarHelperEscape $txt; break"
|
||||
# bindtags $txt.t {[list [winfo parent $txt.t] $txt.t Text sysAfter all]};
|
||||
# bindtags $txt {[list [winfo toplevel $txt] $txt Ctext sysAfter all]};
|
||||
# catch { destroy .varhelper }"
|
||||
bind VarHelperBind <Key> {Editor::VarHelperKey $Editor::txt %K %A; break}
|
||||
|
||||
if { [winfo exists $win] } { destroy $win }
|
||||
# bind VarHelperBind <Escape> "Editor::VarHelperEscape $txt.t; break"
|
||||
# # bindtags $txt.t {[list [winfo parent $txt.t] $txt.t Text sysAfter all]};
|
||||
# # bindtags $txt {[list [winfo toplevel $txt] $txt Ctext sysAfter all]};
|
||||
# # catch { destroy .varhelper }"
|
||||
# bind VarHelperBind <Key> {Editor::VarHelperKey %W %K %A; break}
|
||||
#
|
||||
if {$findedVars eq ""} {
|
||||
return
|
||||
}
|
||||
# puts $findedVars
|
||||
VarHelperDialog $x $y $w $word $findedVars
|
||||
|
||||
}
|
||||
|
||||
proc VarHelperDialog {x y w word findedVars} {
|
||||
global editors lexers variables
|
||||
variable txt
|
||||
variable win
|
||||
# puts ">>>>>>>>>>>>>$x $y $w $word $findedVars"
|
||||
# set txt $w.frmText.t
|
||||
# блокировка открытия диалога если запущен другой
|
||||
# if [winfo exists .findVariables] {
|
||||
# return
|
||||
# }
|
||||
# if { [winfo exists $win] } { destroy $win }
|
||||
set txt $w
|
||||
set win .varhelper
|
||||
# if {$findedVars eq ""} {
|
||||
# return
|
||||
# }
|
||||
toplevel $win
|
||||
wm transient $win .
|
||||
wm overrideredirect $win 1
|
||||
@@ -542,15 +585,13 @@ namespace eval Editor {
|
||||
focus -force $Editor::txt.t
|
||||
break
|
||||
}
|
||||
# bind $win.lBox <Return> {
|
||||
# set findString [dict get $lexers [dict get $editors $Editor::txt fileType] procFindString]
|
||||
# set values [.varhelper.lBox get [.varhelper.lBox curselection]]
|
||||
# regsub -all {PROCNAME} $findString $values str
|
||||
# Editor::FindFunction $Editor::txt "$str"
|
||||
# destroy .varhelper.lBox
|
||||
# # focus $Editor::txt.t
|
||||
# break
|
||||
# }
|
||||
bind VarHelperBind <Control-Return> {
|
||||
$Editor::txt delete "insert - 1 chars wordstart" "insert wordend - 1 chars"
|
||||
$Editor::txt insert "insert" [.varhelper.lBox get [.varhelper.lBox curselection]]
|
||||
# eval [bind VarHelperBind <Escape>]
|
||||
Editor::VarHelperEscape $Editor::txt
|
||||
break
|
||||
}
|
||||
|
||||
# Определям расстояние до края экрана (основного окна) и если
|
||||
# оно меньше размера окна со списком то сдвигаем его вверх
|
||||
@@ -590,7 +631,7 @@ namespace eval Editor {
|
||||
$txt tag remove lightSelected 1.0 end
|
||||
|
||||
if { [winfo exists .varhelper] } { destroy .varhelper }
|
||||
puts $k
|
||||
# puts $k
|
||||
switch $k {
|
||||
Return {
|
||||
regexp {^(\s*)} [$txt get [expr $lineNum - 1].0 [expr $lineNum - 1].end] -> spaceStart
|
||||
@@ -683,6 +724,9 @@ namespace eval Editor {
|
||||
grave {
|
||||
QuotSelection $txt {`}
|
||||
}
|
||||
underscore {
|
||||
QuotSelection $txt {_}
|
||||
}
|
||||
parenleft {
|
||||
# QuotSelection $txt {)}
|
||||
}
|
||||
@@ -726,12 +770,13 @@ namespace eval Editor {
|
||||
$txt tag remove sel {insert linestart} {insert lineend + 1char}
|
||||
return
|
||||
}
|
||||
proc BindKeys {w txt fileType} {
|
||||
proc BindKeys {w txt fileType nb} {
|
||||
global cfgVariables
|
||||
# variable txt
|
||||
# set txt $w.frmText.t
|
||||
bind $txt <KeyRelease> "catch {Editor::ReleaseKey %K $txt $fileType}"
|
||||
bind $txt <KeyPress> "Editor::PressKey %K $txt"
|
||||
bind $txt <Control-eacute> Quit
|
||||
bind $txt <Control-igrave> "Editor::SelectionPaste $txt"
|
||||
bind $txt <Control-v> "Editor::SelectionPaste $txt"
|
||||
bind $txt <Control-l> "SearchVariable $txt; break"
|
||||
@@ -744,7 +789,7 @@ namespace eval Editor {
|
||||
bind $txt <Insert> {OverWrite}
|
||||
bind $txt <ButtonRelease-1> "Editor::SearchBrackets $txt"
|
||||
bind $txt <Button-1><ButtonRelease-1> "Editor::SelectionHighlight $txt"
|
||||
bind $txt <<Modified>> "SetModifiedFlag $w"
|
||||
bind $txt <<Modified>> "SetModifiedFlag $w $nb"
|
||||
bind $txt <Control-i> ImageBase64Encode
|
||||
bind $txt <Control-u> "Editor::SearchBrackets %W"
|
||||
bind $txt <Control-J> "catch {Editor::GoToFunction $txt}"
|
||||
@@ -879,7 +924,8 @@ namespace eval Editor {
|
||||
set nbEditorItem [NB::InsertItem $nbEditor $fileFullPath "file"]
|
||||
# puts "$nbEditorItem, $nbEditor"
|
||||
Editor $fileFullPath $nbEditor $nbEditorItem
|
||||
SetModifiedFlag $nbEditorItem
|
||||
SetModifiedFlag $nbEditorItem $nbEditor
|
||||
focus -force $nbEditorItem.frmText.t.t
|
||||
}
|
||||
|
||||
proc ReadStructure {txt treeItemName} {
|
||||
@@ -1128,20 +1174,32 @@ namespace eval Editor {
|
||||
set lstFindIndex [$txt search -all -nocase -count matchIndexPair $findString $line.$x end]
|
||||
# set symNumbers [string length "$findString"]
|
||||
}
|
||||
# puts $lstFindIndex
|
||||
puts $lstFindIndex
|
||||
# puts $matchIndexPair
|
||||
# set lstFindIndex [$txt search -all "$selectionText" 0.0]
|
||||
|
||||
# Найдем разницу в длине строк для установки правильного
|
||||
# индекса для выделения текста после вставки
|
||||
set stringLengthDiff [expr [string length $findString] - [string length $replaceString]]
|
||||
|
||||
set i 0
|
||||
foreach ind $lstFindIndex {
|
||||
foreach ind [lsort -dictionary -decreasing $lstFindIndex] {
|
||||
set selFindLine [lindex [split $ind "."] 0]
|
||||
set selFindRow [lindex [split $ind "."] 1]
|
||||
# set endInd "$selFindLine.[expr $selFindRow + $symNumbers]"
|
||||
set endInd "$selFindLine.[expr [lindex $matchIndexPair $i] + $selFindRow]"
|
||||
# puts "$ind; $selFindLine, $selFindRow; $endInd "
|
||||
puts "$ind; $selFindLine, $selFindRow; $endInd "
|
||||
if {$replaceString ne ""} {
|
||||
$txt replace $ind $endInd $replaceString
|
||||
# Вычисляем индекс вхождения строки после замены для выделения в тексте
|
||||
if {$stringLengthDiff > 0} {
|
||||
$txt tag add sel $ind "$endInd - [expr [tcl::mathfunc::abs $stringLengthDiff]] chars"
|
||||
} else {
|
||||
$txt tag add sel $ind "$endInd + [expr [tcl::mathfunc::abs $stringLengthDiff]] chars"
|
||||
}
|
||||
} else {
|
||||
$txt tag add sel $ind $endInd
|
||||
}
|
||||
incr i
|
||||
}
|
||||
.finddialog.lblCounter configure -text "[::msgcat::mc "Finded"]: $i"
|
||||
@@ -1269,7 +1327,7 @@ namespace eval Editor {
|
||||
}
|
||||
|
||||
# Horizontal split the Editor text widget
|
||||
proc SplitEditorH {w fileType} {
|
||||
proc SplitEditorH {w fileType nb} {
|
||||
global cfgVariables
|
||||
puts [$w.panelTxt panes]
|
||||
if [winfo exists $w.frmText2] {
|
||||
@@ -1278,7 +1336,7 @@ namespace eval Editor {
|
||||
focus -force $w.frmText.t.t
|
||||
return
|
||||
}
|
||||
set frmText [Editor::EditorWidget $w $fileType]
|
||||
set frmText [Editor::EditorWidget $w $fileType $nb]
|
||||
$frmText.t insert end [$w.frmText.t get 0.0 end]
|
||||
|
||||
# $w.panelTxt add $w.frmText -weight 0
|
||||
@@ -1289,24 +1347,33 @@ namespace eval Editor {
|
||||
focus -force $frmText.t.t
|
||||
}
|
||||
|
||||
proc SplitEditorV {w fileType} {
|
||||
proc SplitEditorV {fileFullPath} {
|
||||
global cfgVariables
|
||||
.frmBody.panel add $frmTree -weight 0
|
||||
|
||||
puts [$w.panelTxt panes]
|
||||
if [winfo exists $w.frmText2] {
|
||||
$w.panelTxt forget $w.frmText2
|
||||
destroy $w.frmText2
|
||||
regsub -all {\.|/|\\|\s} $fileFullPath "_" itemName
|
||||
set itemName ".frmWork.nbEditor2.$itemName"
|
||||
# puts $itemName
|
||||
if {[winfo exists $itemName] == 1} {
|
||||
.frmWork.nbEditor2 forget $itemName
|
||||
destroy $itemName
|
||||
if {[llength [.frmWork.nbEditor2 tabs]] == 0} {
|
||||
if [lsearch -exact [.frmWork.panelNB panes] .frmWork.nbEditor2] {
|
||||
grid forget .frmWork.nbEditor2
|
||||
.frmWork.panelNB forget .frmWork.nbEditor2
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
set frmText [Editor::EditorWidget $w $fileType]
|
||||
$frmText.t insert end [$w.frmText.t get 0.0 end]
|
||||
pack .frmWork.nbEditor2 -side left -fill both -expand true
|
||||
pack propagate .frmWork.nbEditor2 false
|
||||
# grid .frmWork.nbEditor2 -row 0 -column 1 -sticky nsew
|
||||
# grid columnconfigure .frmWork .frmWork.nbEditor -weight 1
|
||||
# grid rowconfigure .frmWork .frmWork.nbEditor -weight 1
|
||||
# grid columnconfigure .frmWork .frmWork.nbEditor2 -weight 1
|
||||
# grid rowconfigure .frmWork .frmWork.nbEditor2 -weight 1
|
||||
.frmWork.panelNB add .frmWork.nbEditor2 -weight 0
|
||||
puts [FileOper::Edit $fileFullPath .frmWork.nbEditor2]
|
||||
|
||||
# $w.panelTxt add $w.frmText -weight 0
|
||||
$w.panelTxt add $frmText -weight 1
|
||||
|
||||
$frmText.t see [$w.frmText.t index insert]
|
||||
# $frmText.t mark set insert [$w.frmText.t index insert]
|
||||
}
|
||||
|
||||
proc GoToLineNumber {text lineNumber} {
|
||||
@@ -1366,7 +1433,7 @@ namespace eval Editor {
|
||||
focus $win.ent
|
||||
}
|
||||
|
||||
proc EditorWidget {fr fileType} {
|
||||
proc EditorWidget {fr fileType nb} {
|
||||
global cfgVariables editors
|
||||
|
||||
if [winfo exists $fr.frmText] {
|
||||
@@ -1413,7 +1480,7 @@ namespace eval Editor {
|
||||
} else {
|
||||
Highlight::Default $txt
|
||||
}
|
||||
BindKeys $fr $txt $fileType
|
||||
BindKeys $fr $txt $fileType $nb
|
||||
return $frmText
|
||||
}
|
||||
|
||||
@@ -1448,9 +1515,9 @@ namespace eval Editor {
|
||||
set btnSplitV "btnSplitV[string range $itemName [expr [string last "." $itemName] +1] end]"
|
||||
set btnSplitH "btnSplitH[string range $itemName [expr [string last "." $itemName] +1] end]"
|
||||
ttk::button $fr.header.$btnSplitH -image split_horizontal_11x11 \
|
||||
-command "Editor::SplitEditorH $fr $fileType"
|
||||
-command "Editor::SplitEditorH $fr $fileType $nb"
|
||||
ttk::button $fr.header.$btnSplitV -image split_vertical_11x11 \
|
||||
-command "Editor::SplitEditorV $fr $fileType" -state disable
|
||||
-command "Editor::SplitEditorV $fileFullPath"
|
||||
# pack $fr.$btnSplitH $fr.$btnSplitV -side right -anchor e
|
||||
pack $fr.header.$lblName -side left -expand true -fill x
|
||||
pack $fr.header.$btnSplitV $fr.header.$btnSplitH -side right
|
||||
@@ -1464,7 +1531,8 @@ namespace eval Editor {
|
||||
if {[lsearch -exact $imageType $fileType] != -1} {
|
||||
ImageViewer $fileFullPath $itemName $fr
|
||||
} else {
|
||||
set frmText [Editor::EditorWidget $fr $fileType]
|
||||
set frmText [Editor::EditorWidget $fr $fileType $nb]
|
||||
dict set editors $frmText.t fileFullPath $fileFullPath
|
||||
}
|
||||
$fr.panelTxt add $frmText -weight 0
|
||||
|
||||
|
@@ -31,6 +31,7 @@ namespace eval FileOper {
|
||||
|
||||
# lappend cmd $activeProject
|
||||
lappend cmd $fileFullPath
|
||||
# puts $cmd
|
||||
catch $cmd pipe
|
||||
# puts $pipe
|
||||
if [regexp -nocase -- {(\w+)/([\w\-_\.]+); charset=([[:alnum:]-]+)} $pipe m fType fExt fCharset] {
|
||||
@@ -43,12 +44,15 @@ namespace eval FileOper {
|
||||
}
|
||||
}
|
||||
}
|
||||
# линуксовый file не всегда корректно определяет тип файла
|
||||
# используем пакет из tcl
|
||||
lassign [::fileutil::fileType $fileFullPath] fType fBinaryType fBinaryInterp
|
||||
puts "File type is $fType, $fBinaryType, $fBinaryInterp"
|
||||
|
||||
switch $fType {
|
||||
"application" {
|
||||
if {$fExt ne "json"} {
|
||||
"binary" {
|
||||
return false
|
||||
}
|
||||
}
|
||||
"text" {
|
||||
return text
|
||||
}
|
||||
@@ -195,17 +199,22 @@ namespace eval FileOper {
|
||||
|
||||
proc CloseAll {} {
|
||||
global nbEditor modified
|
||||
foreach nbItem [array names modified] {
|
||||
if {$modified($nbItem) eq "true"} {
|
||||
$nbEditor select $nbItem
|
||||
# puts "close tab $nbItem"
|
||||
if {[Close] eq "cancel"} {return "cancel"}
|
||||
foreach nb2Item [.frmWork.nbEditor2 tabs] {
|
||||
.frmWork.nbEditor2 forget $nb2Item
|
||||
}
|
||||
if {[lsearch -exact [.frmWork.panelNB panes] .frmWork.nbEditor2] != -1} {
|
||||
.frmWork.panelNB forget .frmWork.nbEditor2
|
||||
}
|
||||
foreach nbItem [$nbEditor tabs] {
|
||||
catch {$nbEditor select $nbItem}
|
||||
if {[Close] eq "cancel"} {
|
||||
return "cancel"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
proc Close {} {
|
||||
global nbEditor modified tree
|
||||
global nbEditor modified tree editors
|
||||
set nbItem [$nbEditor select]
|
||||
# puts "close tab $nbItem"
|
||||
|
||||
@@ -240,6 +249,8 @@ namespace eval FileOper {
|
||||
if [info exists modified($nbItem)] {
|
||||
unset modified($nbItem)
|
||||
}
|
||||
# puts $nbItem
|
||||
set editors [dict remove $editors $nbItem.frmText.t]
|
||||
.frmStatus.lblPosition configure -text ""
|
||||
.frmStatus.lblEncoding configure -text ""
|
||||
.frmStatus.lblSize configure -text ""
|
||||
@@ -277,7 +288,7 @@ namespace eval FileOper {
|
||||
puts -nonewline $f $editedText
|
||||
puts "$f was saved"
|
||||
close $f
|
||||
ResetModifiedFlag $nbEditorItem
|
||||
ResetModifiedFlag $nbEditorItem $nbEditor
|
||||
}
|
||||
|
||||
proc SaveAll {} {
|
||||
@@ -381,12 +392,12 @@ namespace eval FileOper {
|
||||
$txt see 1.0
|
||||
}
|
||||
|
||||
proc Edit {fileFullPath} {
|
||||
global nbEditor tree
|
||||
proc Edit {fileFullPath {nbEditor .frmWork.nbEditor}} {
|
||||
global tree
|
||||
if {[file exists $fileFullPath] == 0} {
|
||||
return false
|
||||
} else {
|
||||
# puts [::fileutil::magic::filetype $fileFullPath]
|
||||
puts "$fileFullPath File type [::fileutil::magic::filetype $fileFullPath]"
|
||||
set fileType [FileOper::GetFileMimeType $fileFullPath]
|
||||
}
|
||||
switch $fileType {
|
||||
@@ -414,7 +425,7 @@ namespace eval FileOper {
|
||||
Editor::Editor $fileFullPath $nbEditor $itemName
|
||||
ReadFile $fileFullPath $itemName
|
||||
$itemName.frmText.t highlight 1.0 end
|
||||
ResetModifiedFlag $itemName
|
||||
ResetModifiedFlag $itemName $nbEditor
|
||||
$itemName.frmText.t see 1.1
|
||||
}
|
||||
$nbEditor select $itemName
|
||||
@@ -442,7 +453,7 @@ namespace eval FileOper {
|
||||
set selBegin [lindex [$txt tag ranges sel] 0]
|
||||
set selEnd [lindex [$txt tag ranges sel] 1]
|
||||
set str [$txt get $selBegin $selEnd]
|
||||
puts $str
|
||||
# puts $str
|
||||
set res [SearchStringInFolder $str]
|
||||
}
|
||||
}
|
||||
|
67
lib/git.tcl
67
lib/git.tcl
@@ -92,8 +92,11 @@ namespace eval Git {
|
||||
global cfgVariables activeProject
|
||||
set cmd exec
|
||||
set d [pwd]
|
||||
if {$activeProject ne ""} {
|
||||
if {$activeProject ne "" && [file isdirectory $activeProject] == 1} {
|
||||
cd $activeProject
|
||||
if ![file exists .git] {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
return ""
|
||||
}
|
||||
@@ -127,7 +130,14 @@ namespace eval Git {
|
||||
|
||||
proc Status {} {
|
||||
global cfgVariables activeProject
|
||||
if [file isdirectory $activeProject] {
|
||||
cd $activeProject
|
||||
if ![file exists .git] {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
set cmd exec
|
||||
lappend cmd $cfgVariables(gitCommand)
|
||||
lappend cmd "status"
|
||||
@@ -239,6 +249,10 @@ namespace eval Git {
|
||||
# puts "$cmd"
|
||||
catch $cmd pipe
|
||||
puts $pipe
|
||||
if [regexp -nocase -- {^fatal:} $pipe match] {
|
||||
ShowMessage "Command: '$cmd' error" $pipe
|
||||
return
|
||||
}
|
||||
foreach line [split $pipe "\n"] {
|
||||
# puts "$line"
|
||||
lappend res $line
|
||||
@@ -385,6 +399,40 @@ namespace eval Git {
|
||||
puts $pipe
|
||||
return
|
||||
}
|
||||
proc Config {repo user email} {
|
||||
global activeProject cfgVariables
|
||||
# puts $values
|
||||
set cmd exec
|
||||
lappend cmd $cfgVariables(gitCommand)
|
||||
lappend cmd "config"
|
||||
lappend cmd $repo
|
||||
lappend cmd $dir
|
||||
puts $cmd
|
||||
|
||||
# catch $cmd pipe
|
||||
# puts $pipe
|
||||
return
|
||||
}
|
||||
proc Init {} {
|
||||
global activeProject cfgVariables
|
||||
# puts $values
|
||||
if [file isdirectory $activeProject] {
|
||||
cd $activeProject
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
set cmd exec
|
||||
lappend cmd $cfgVariables(gitCommand)
|
||||
lappend cmd "init"
|
||||
lappend cmd $activeProject
|
||||
puts $cmd
|
||||
|
||||
catch $cmd pipe
|
||||
if [regexp -nocase -- {^fatal:} $pipe match] {
|
||||
ShowMessage "Command: '$cmd' error" $pipe
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
proc Key {k fr} {
|
||||
# puts [Editor::Key $k]
|
||||
@@ -572,6 +620,7 @@ namespace eval Git {
|
||||
}
|
||||
|
||||
proc CloneDialog {} {
|
||||
global activeProject
|
||||
set win .clone
|
||||
set x [winfo rootx .frmWork]
|
||||
set y [winfo rooty .frmWork]
|
||||
@@ -608,10 +657,22 @@ namespace eval Git {
|
||||
ReadFilesFromDirectory $repoDir $repoDir
|
||||
destroy .clone
|
||||
}
|
||||
|
||||
ttk::button $win.btnInit -compound left -image new_20x20 \
|
||||
-text [::msgcat::mc "Init repository"] -command {
|
||||
Git::Init
|
||||
FileOper::ReadFolder $activeProject
|
||||
ReadFilesFromDirectory $activeProject $activeProject
|
||||
destroy .clone
|
||||
}
|
||||
if ![info exists activeProject] {
|
||||
$win.btnInit configure -state disable
|
||||
}
|
||||
grid $win.entUrl -row 0 -column 0 -columnspan 2 -sticky new
|
||||
grid $win.entFolder -row 1 -column 0 -sticky new
|
||||
grid $win.btnFolder -row 1 -column 1 -sticky e
|
||||
grid $win.btnFolder -row 1 -column 1 -sticky ew
|
||||
grid $win.btnClone -row 2 -column 0 -columnspan 2 -sticky new
|
||||
grid $win.btnInit -row 3 -column 0 -columnspan 2 -sticky new
|
||||
|
||||
bind $win <Escape> "destroy $win"
|
||||
|
||||
@@ -639,7 +700,7 @@ namespace eval Git {
|
||||
}
|
||||
return
|
||||
}
|
||||
if {[info exists activeProject] == 0} {
|
||||
if {[info exists activeProject] == 0 || [file exists [file join $activeProject .git]] == 0} {
|
||||
Git::CloneDialog
|
||||
return
|
||||
}
|
||||
|
12
lib/gui.tcl
12
lib/gui.tcl
@@ -26,7 +26,6 @@ bind . <Control-Q> Quit
|
||||
bind . <Control-eacute> Quit
|
||||
bind . <Insert> Add
|
||||
bind . <Delete> Del
|
||||
bind . <Control-Return> Edit
|
||||
bind . <F1> ShowHelpDialog
|
||||
bind . <Control-n> Editor::New
|
||||
bind . <Control-N> Editor::New
|
||||
@@ -168,10 +167,19 @@ grid rowconfigure $frmTree 0 -weight 1
|
||||
|
||||
set frmWork [ttk::frame .frmWork -border 0 -relief flat]
|
||||
|
||||
ttk::panedwindow $frmWork.panelNB -orient horizontal -style TPanedwindow
|
||||
# grid $frmWork.panelNB -row 0 -column 0 -sticky nesw
|
||||
pack $frmWork.panelNB -side left -fill both -expand true
|
||||
|
||||
set nbEditor [ttk::notebook $frmWork.nbEditor]
|
||||
pack $nbEditor -side left -fill both -expand true
|
||||
# grid $nbEditor -row 0 -column 0 -sticky nsew
|
||||
# grid columnconfigure $frmWork $nbEditor -weight 1
|
||||
# grid rowconfigure $frmWork $nbEditor -weight 1
|
||||
|
||||
# set nbEditor2 [ttk::notebook $frmWork.nbEditor2]
|
||||
set nbEditor2 [ttk::notebook $frmWork.nbEditor2]
|
||||
|
||||
$frmWork.panelNB add $nbEditor -weight 10
|
||||
# pack $nbEditor2 -side left -fill both -expand true
|
||||
#
|
||||
# Create an image CLOSE for tab
|
||||
|
@@ -13,9 +13,11 @@ namespace eval Highlight {} {
|
||||
ctext::addHighlightClass $txt variable_funcs gold {set global variable unset}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||
ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
|
||||
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
|
||||
ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)(\w)+?(\s|$)}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(^|;)\s*(#)[^\n\r]*}
|
||||
ctext::addHighlightClass $txt bool #3e803b {null false true}
|
||||
}
|
||||
|
||||
proc Default {txt} {
|
||||
@@ -53,12 +55,13 @@ namespace eval Highlight {} {
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||
ctext::addHighlightClass $txt bool #3e803b {nil false true}
|
||||
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
|
||||
}
|
||||
|
||||
proc PY {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt flags orange {-+[a-zA-Z\-_]+}
|
||||
ctext::addHighlightClass $txt stackControl #19a2a6 {if else: elif for while case switch def import from return make break defer continue package len print with open try: except: in}
|
||||
ctext::addHighlightClass $txt stackControl #19a2a6 {if else elif for while case switch def import from return make break defer continue package len print with open try: except: in}
|
||||
ctext::addHighlightClass $txt types #7187d5 {string int int16 int32 int64 float bool byte}
|
||||
ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\&"
|
||||
ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\*"
|
||||
@@ -68,6 +71,7 @@ namespace eval Highlight {} {
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||
ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`}
|
||||
}
|
||||
|
||||
proc YAML {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {\s*?[\w]+:}
|
||||
@@ -77,34 +81,114 @@ namespace eval Highlight {} {
|
||||
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||
}
|
||||
|
||||
proc YML {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {\s*?[\w]+:}
|
||||
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)(\{|)[\.a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForRegexp $txt varsansible #4471ca {(\{\{)(\s*?|)[\.a-zA-Z0-9\_\-]+((\s*?|))(\}\})}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||
Highlight::YAML $txt
|
||||
}
|
||||
|
||||
proc XML {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {(<|<\\)*?[\w]+>}
|
||||
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {(<|<\\)*?[\w]+(/|)(>)}
|
||||
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
# ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||
# ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||
ctext::addHighlightClassForSpecialChars $txt tags #666666 {<>/}
|
||||
ctext::addHighlightClassForSpecialChars $txt tags lightgreen {<>/}
|
||||
}
|
||||
|
||||
proc HTML {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt stackControl #19a2a6 {(<|</)([\w]+)}
|
||||
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
ctext::addHighlightClassForRegexp $txt paths lightblue {(\s)([\w]+)(=)}
|
||||
ctext::addHighlightClassForSpecialChars $txt tags lightgreen {<>/}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(<\!--)\s*(.+)\s*(-->)}
|
||||
}
|
||||
|
||||
proc HTM {txt} {
|
||||
Highlight::HTML $txt
|
||||
}
|
||||
|
||||
proc RB {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
|
||||
ctext::addHighlightClass $txt stackControl #19a2a6 {def end class if else for while case when}
|
||||
# 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::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::addHighlightClass $txt variable_funcs gold {set global variable unset}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||
ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
|
||||
ctext::addHighlightClassForRegexp $txt dog #0082ff {(@)[\.a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClass $txt bool #7e5fb3 {nil false true}
|
||||
|
||||
}
|
||||
|
||||
proc MD {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {^\s+?(#|//).*$}
|
||||
ctext::addHighlightClassForRegexp $txt lists #4471ca {(\*|-|\+)+}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
ctext::addHighlightClassForRegexp $txt url #19a2a6 {(http|https|ftp|ssh)(://)(\w|\.|-|/)+?}
|
||||
ctext::addHighlightClassForRegexp $txt email #467a7b {(\w|\.|-)+?(@)(\w|\.|-)+?($|\s)}
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt sharp #975db4 {^(#+?)\s(.*?)$}
|
||||
ctext::addHighlightClassForRegexp $txt quotedtext #a9b36c {^(\s*?)(>+).+?$}
|
||||
ctext::addHighlightClassForRegexp $txt italictext #dff74e {((_|\*)+?)(\w+?)((_|\*)+?)}
|
||||
}
|
||||
|
||||
proc PL {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
|
||||
ctext::addHighlightClass $txt stackControl #19a2a6 {sub my end class new if else elsif for foreach while case when use ne eq print exit chdir rand die lt gt le ge say unless return chomp package push exec grep eval warn scalar next continue close module require}
|
||||
ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-\[\]]+}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
# ctext::addHighlightClassForSpecialChars $txt dog #0082ff {@}
|
||||
ctext::addHighlightClassForRegexp $txt dog #0082ff {(@)[\.a-zA-Z0-9\_\-\[\]]+}
|
||||
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||
ctext::addHighlightClassForRegexp $txt namespaces #0093ff {->|\+\+|::}
|
||||
}
|
||||
|
||||
proc INI {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
|
||||
ctext::addHighlightClassForRegexp $txt stackControl #4471ca {^(\s*?)\[[\.a-zA-Z0-9\_\-\[\]\s\.:]+\]}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
ctext::addHighlightClassForRegexp $txt dog #0082ff {(@)[\.a-zA-Z0-9\_\-\[\]]+}
|
||||
ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)[\w]+?}
|
||||
ctext::addHighlightClassForRegexp $txt keyword #19a2a6 {^(\s*?).+(\s*?=)}
|
||||
ctext::addHighlightClassForSpecialChars $txt equal #0082ff {=}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(^\s*#|^\s*;|\s+;)[^\n\r]*}
|
||||
ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)(\w)+?(\s|$)}
|
||||
}
|
||||
|
||||
proc DESKTOP {txt} {
|
||||
Highlight::INI $txt
|
||||
}
|
||||
|
||||
proc SPEC {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z0-9]+}
|
||||
ctext::addHighlightClassForRegexp $txt macros #0082ff {(%)[\.a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
ctext::addHighlightClassForRegexp $txt var #4471ca {(\$)[\.a-zA-Z0-9\_\-\[\]]+}
|
||||
# ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)[^\n\r]*}
|
||||
ctext::addHighlightClassForRegexp $txt keyword #68ceff {^(\s*?)[a-zA-Z0-9\_\-]+(\s*?:)}
|
||||
ctext::addHighlightClassForSpecialChars $txt equal #0082ff {=}
|
||||
ctext::addHighlightClassForRegexp $txt changelog lightgreen {^(\s*?)(\*|\-)(.+?)$}
|
||||
ctext::addHighlightClass $txt shelcommand #19a2a6 {if fi else elseif then while case esac do in exit source echo package mkdir ls rm sed awk grep date jq zip tar gzip mount umount test make curl git iconv less gcc scp rsync cut tr function install}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*}
|
||||
}
|
||||
proc LUA {txt} {
|
||||
ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).*?("|'|`)}
|
||||
ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
|
||||
ctext::addHighlightClass $txt stackControl #19a2a6 {and break do else elseif end false for function goto if in local nil not or repeat return then true until while}
|
||||
# ctext::addHighlightClassForRegexp $txt vars #4471ca {(\$|\*|\&)[\.a-zA-Z0-9\_\-\[\]]+}
|
||||
ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
|
||||
ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+}
|
||||
ctext::addHighlightClassForRegexp $txt comments #666666 {(--)[^\n\r]*}
|
||||
ctext::addHighlightClassForRegexp $txt namespaces #0093ff {->|\+\+|::}
|
||||
ctext::addHighlightClass $txt bool #3e803b {null false true}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -596,6 +596,22 @@ image create photo debian_16x12 -data {
|
||||
rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO
|
||||
RK5CYII=
|
||||
}
|
||||
image create photo deb_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
|
||||
4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC
|
||||
5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM
|
||||
qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF
|
||||
FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03
|
||||
T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP
|
||||
0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw
|
||||
SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgYBD440/mcAAADnSURBVCjPlZIxbsIwGIU/O6Ei
|
||||
CEGkzukJOkRi4A7sCIYuPQlcgx2J0FNwBNQVpogVRKuqCQhsFixZjkHwNj89f37/LwtuKCPV9vmE
|
||||
Sj743rg54RpTuq2Qww+QA2/G17AV8DpkKW4CJnRqbc5HgII4+mRR+hrZkNAGmMsmMOM9EYS58dyx
|
||||
KgBbX/QDxSo3sDFIX65iFsQRgGJ1Mt4Y5Ai0D1Bp8MI2AsoWf/VfmmVGqiVRY07x787vbRAQ7AB6
|
||||
rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO
|
||||
RK5CYII=
|
||||
}
|
||||
image create photo redhat_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
|
||||
@@ -616,6 +632,26 @@ image create photo redhat_16x12 -data {
|
||||
JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B
|
||||
fWB7/vyA9Yr/YLa1I25OKGgYfz6Rjbv9EqdKrq/6GWz7DaI/0EnQtYARAAAAAElFTkSuQmCC
|
||||
}
|
||||
image create photo rpm_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
|
||||
4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC
|
||||
5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM
|
||||
qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF
|
||||
FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03
|
||||
T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP
|
||||
0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw
|
||||
SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgYbDKcQVQYAAAH8SURBVCjPhZJNSJMBGMd//3dr
|
||||
01KpQGdqRUF1CsrNBq1IXwnxYFFRl255jKhDhzp2qGvXAqFLFBL0YUWg6aSCIB3aoUsUpYFsM0kL
|
||||
rc33fZ8ObrSE6A8PPP/ni+dLrMKn9vaqdT+cHmRdJqcFgMCmJQ0uzEce7/jwrFAZr0qSS3ScMLgu
|
||||
tLnC/Ksk64Epw843jqcflZ1OWcnH3Uuge0JNwmltsIVItFDc6Cm8EyMt4zKwVehBrs29+FcH+bh7
|
||||
0kT/CtckZjeRtpsFk42Z9B0rxyXc10ASMEzHY5nhh5qJ96wNsfge0QzMI4a0FJyxKicWy4x8rBwx
|
||||
m+jsFdZXotNLNcEuJ+QsHUNEzQlvj42PbJBZQLX6JO2dTaVqKwuYXxyooFuqF0NHHcy6gMgaFZcB
|
||||
fN87ZzBv2K2gEM3m2tz95YxIJBQ1gt3IzgIeZl3KJtxRwSFgGseOxN6k3wLMJbvrPK/oOgTL9Zn0
|
||||
09XnzifcAaBGuUTHS9CB0kq/EeiqEzh36yeGZvgH5pLddZ5feAf2OYwxhVgpYDyx5dANP+pfyyXc
|
||||
JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B
|
||||
fWB7/vyA9Yr/YLa1I25OKGgYfz6Rjbv9EqdKrq/6GWz7DaI/0EnQtYARAAAAAElFTkSuQmCC
|
||||
}
|
||||
image create photo spec_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
|
||||
@@ -1029,19 +1065,103 @@ image create photo yml_16x12 -data {
|
||||
AElFTkSuQmCC
|
||||
}
|
||||
image create photo rb_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
kT1Iw0AcxV9Tix9UHOwg4pChOlkQFREnrUIRKoRaoVUHk0u/oElDkuLiKLgWHPxYrDq4OOvq4CoI
|
||||
gh8gjk5Oii5S4v+SQosYD4778e7e4+4dINTLTLM6xgBNt81UIi5msqti5yu6ISCEGGZkZhlzkpSE
|
||||
7/i6R4CvdzGe5X/uz9Gr5iwGBETiWWaYNvEG8dSmbXDeJ46woqwSnxOPmnRB4keuKx6/cS64LPDM
|
||||
iJlOzRNHiMVCGyttzIqmRjxJHFU1nfKFjMcq5y3OWrnKmvfkLwzn9JVlrtMcQgKLWIIEEQqqKKEM
|
||||
m/oqQSfFQor24z7+QdcvkUshVwmMHAuoQIPs+sH/4He3Vn5i3EsKx4HQi+N8DAOdu0Cj5jjfx47T
|
||||
OAGCz8CV3vJX6sD0J+m1lhY9Avq2gYvrlqbsAZc7wMCTIZuyKwVpCvk88H5G35QF+m+BnjWvt+Y+
|
||||
Th+ANHWVvAEODoGRAmWv+7y7q723f880+/sBmApyti9bk0oAAAAGYktHRAAAAAAAAPlDu38AAAAJ
|
||||
cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCQIGGArNk/UwAAAAqUlEQVQoz51SMQoCMRCcxAW7
|
||||
gLpgZan5/3NygpWFSAS1sDFeLNyDMya54FZhdmYYZgM0jmOKOZxSYL+E6TXdABytD5uSMGvgmGIv
|
||||
7xYxAOhcROuDSok57MsgAo8xMTUspdEDWSscEvFTONfJDsbxHNMLChdErGS3cEynqsFPvI/4bH1Y
|
||||
CzIvGoj4DsCkhTmmAGBW62A4o6kV1jF1u6krFMRBLrRt+RN/zRuAsFTFUDTjWwAAAABJRU5ErkJg
|
||||
gg==
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAADfnpUWHRSYXcgcHJvZmlsZSB0eXBl
|
||||
IGV4aWYAAHjatZZbduMgDIbftYpZgiVxEcvBXM6ZHczy5wfbmcZN0qTpmBOQsZCEPkFL7c/vTr/w
|
||||
sEVHzkcLKYQFj0suSYZgy/bk2fPiZr+/LIdwNU9L2T8IphSjbq8Wdv1jnpcrS5wh+Q+GbDfE6/WH
|
||||
5Hb7djK0O9IRkUCou6G0G1LZPvBuIG/bWkKy+HELa9vGemzRth+Nrh85idtwfncR2aseflSkKeuC
|
||||
XlS2AHT8hDTjg6Bf1KDIqlOOsw97JEjIrTwtH6KiM5WLdKJyMDlDgTPeqOkpmeEy3pxnfzv5NFP8
|
||||
wbOWXZLr+aVfXFwleea4V6Pe27a77AJSGvZNHVucEhRXpFznsoAW8fOQ42wJzQjVW4C8IgkrWuHE
|
||||
AiydHVfO3LnNsXBBiE6aRIwiRXTOmUZJUnQhcHKjcZeoSasaGBbgVczKJRaeftN0V9jguDI0hWGM
|
||||
N/zyM+2uod4HcOaRzLLlCnHJKEKEMciNHloAwv2oIz8TfLTzM7gqCPqZZsMG87JuJlbPe22NOtIJ
|
||||
WqHoMW5njWPdDSBF8O0RDCsILIHVc+AlikRm5NHAJ8OQiTpZgYC9l4ooxakGwMGJgW+siTx1xcs2
|
||||
jTsLILwGHCQDoAxW42JD/URnqKHs1TvvffDRm08+Bw0u+BBCDOPyy1Gjiz6GGKPFFLOpOfMWLJqR
|
||||
JctJkuJy9CmkmCyllDOcZljOWJ2hkPMqq65u9WtY42prWnNB+RRXfAklFqOSSq5SteKeqKHGajXV
|
||||
3LihlJprvoUWm7XUckepde2u+x567NZTzxdqTBvWT+15anxQk0lqKMYLNSyN8TDB4zrxgxmIiWMQ
|
||||
j4MACloGs8XYOaGBbjBbkuBUeEGUfsCpPIiBoGssvvOF3T9yV9zIube4yUGOBrqfIEcD3R1yn7nd
|
||||
oFbzvIeVJqFxDEdSF8Xxg0KzLJbHH7WnR3qo0IMbgqxWOhJawuahFW2hXCvTS25vWF+mbLhGduHk
|
||||
7rb2HeUxSS+m4m5MdNfN45g+LaJbiftOTPTF1u9n97SIbsN8PTa6dvP9mOhedh9W342RHvp8IUB6
|
||||
QPSlQOm9FN/B/1JpnpTovaP6b6QvKv+ZMjjjfy8mej+WTZneLsV9MT17TXx1t9ALqX440rPXxFcx
|
||||
3cH/eoz0rRPy3wz13qkm/Gv7F3xOmRX/1sdOAAABhGlDQ1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw0Ac
|
||||
xV9TpVUqDnYQcchQnSyILeKoVShChVArtOpgcv2EJg1Jiouj4Fpw8GOx6uDirKuDqyAIfoA4Ojkp
|
||||
ukiJ/0sKLWI8OO7Hu3uPu3eA0Kwy1eyZBFTNMtLJhJjNrYqBV4QQRB/iiMnM1OckKQXP8XUPH1/v
|
||||
ojzL+9yfYyBfMBngE4lnmW5YxBvE05uWznmfOMzKcp74nHjCoAsSP3JdcfmNc8lhgWeGjUx6njhM
|
||||
LJa6WOliVjZU4jhxJK9qlC9kXc5z3uKsVuusfU/+wlBBW1nmOs1RJLGIJUgQoaCOCqqwEKVVI8VE
|
||||
mvYTHv4Rxy+RSyFXBYwcC6hBhez4wf/gd7dmMTblJoUSQO+LbX+MAYFdoNWw7e9j226dAP5n4Err
|
||||
+GtNYOaT9EZHixwBg9vAxXVHU/aAyx1g+EmXDdmR/DSFYhF4P6NvygFDt0D/mttbex+nD0CGukrd
|
||||
AAeHwHiJstc93h3s7u3fM+3+fgC4vXLDfzo5HwAAD4tpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAA
|
||||
ADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4
|
||||
OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDQuNC4w
|
||||
LUV4aXYyIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8y
|
||||
Mi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHht
|
||||
bG5zOmlwdGNFeHQ9Imh0dHA6Ly9pcHRjLm9yZy9zdGQvSXB0YzR4bXBFeHQvMjAwOC0wMi0yOS8i
|
||||
CiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHht
|
||||
bG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVu
|
||||
dCMiCiAgICB4bWxuczpwbHVzPSJodHRwOi8vbnMudXNlcGx1cy5vcmcvbGRmL3htcC8xLjAvIgog
|
||||
ICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6ZGM9Imh0
|
||||
dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25z
|
||||
LmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20v
|
||||
eGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDo5ZWVlYzM5Yy1i
|
||||
NjAxLTRmMzItYjYwZi01ZGVjYjBmZWFmODEiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6
|
||||
YmJlM2M5NDktNTRjOC00YWY1LTk3OTEtNjRlYjE2NzYyZDExIgogICB4bXBNTTpPcmlnaW5hbERv
|
||||
Y3VtZW50SUQ9InhtcC5kaWQ6YzI2MDlkMmMtZGMyYy00N2E3LWExNWQtZDYzNDVjOWEyM2NmIgog
|
||||
ICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJMaW51eCIKICAgR0lNUDpUaW1lU3Rh
|
||||
bXA9IjE2NzA0OTQwMjYwNDk4MDEiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4yMiIKICAgZGM6Rm9y
|
||||
bWF0PSJpbWFnZS9wbmciCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9v
|
||||
bD0iR0lNUCAyLjEwIj4KICAgPGlwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICAgPHJkZjpCYWcv
|
||||
PgogICA8L2lwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICA8aXB0Y0V4dDpMb2NhdGlvblNob3du
|
||||
PgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgPGlwdGNFeHQ6
|
||||
QXJ0d29ya09yT2JqZWN0PgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6QXJ0d29ya09yT2Jq
|
||||
ZWN0PgogICA8aXB0Y0V4dDpSZWdpc3RyeUlkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6
|
||||
UmVnaXN0cnlJZD4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxp
|
||||
CiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAg
|
||||
IHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OTk0Y2Y3M2MtYzRlMC00ZmNjLWJlYTAtZmUzMmE3
|
||||
YzVjYzhlIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAg
|
||||
ICAgc3RFdnQ6d2hlbj0iKzAzOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9y
|
||||
eT4KICAgPHBsdXM6SW1hZ2VTdXBwbGllcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdl
|
||||
U3VwcGxpZXI+CiAgIDxwbHVzOkltYWdlQ3JlYXRvcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVz
|
||||
OkltYWdlQ3JlYXRvcj4KICAgPHBsdXM6Q29weXJpZ2h0T3duZXI+CiAgICA8cmRmOlNlcS8+CiAg
|
||||
IDwvcGx1czpDb3B5cmlnaHRPd25lcj4KICAgPHBsdXM6TGljZW5zb3I+CiAgICA8cmRmOlNlcS8+
|
||||
CiAgIDwvcGx1czpMaWNlbnNvcj4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94
|
||||
OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAKPD94cGFja2V0IGVuZD0idyI/PqhP3r4AAAAGYktHRABLAEsAS0uhKB4AAAAJcEhZcwAA
|
||||
DdcAAA3XAUIom3gAAAAHdElNRQfmDAgKBwanOCH1AAAAXElEQVQoz2NgIBLM9fb+j02cBZ/C5K1b
|
||||
GXFphAEmSjSjGICuGV0hNjEMFyArJNY1TMiKsWkmBBgJhTay7di8wYLPRlz+RjEAm2Z0r+ALA0Z8
|
||||
TiY5FvDZRErAkgQAHeFHE12H/GAAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo split_horizontal_11x11 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
@@ -1279,3 +1399,517 @@ image create photo folder_24x24 -data {
|
||||
LAKAPM8XA7qug+d5mAX4vh9qrdE0zUHXMgiCDz7d6QFxMQfU9aCtgH8EIIRo1xU8OgVYa43rCp7+
|
||||
IuE4js+zT0Vd12dSymtK6UET3ff93fqP76VXznxN1iafwLQAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo new_20x20 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
kT1Iw0AcxV9TtVoqDlYQcchQHcSCqIijVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
|
||||
BD9AHJ2cFF2kxP8lhRaxHhz34929x907QKgWmWa1jQGabpvJeExMZ1bEwCuC6EMXRtAhM8uYlaQE
|
||||
Wo6ve/j4ehflWa3P/Tm61azFAJ9IPMMM0yZeJ57atA3O+8RhVpBV4nPiUZMuSPzIdcXjN855lwWe
|
||||
GTZTyTniMLGYb2KliVnB1IgniSOqplO+kPZY5bzFWSuWWf2e/IWhrL68xHWag4hjAYuQIEJBGRso
|
||||
wkaUVp0UC0naj7XwD7h+iVwKuTbAyDGPEjTIrh/8D353a+Umxr2kUAxof3GcjyEgsAvUKo7zfew4
|
||||
tRPA/wxc6Q1/qQpMf5JeaWiRI6BnG7i4bmjKHnC5A/Q/GbIpu5KfppDLAe9n9E0ZoPcWCK56vdX3
|
||||
cfoApKirxA1wcAgM5yl7rcW7O5t7+/dMvb8fS2tyl3d3iOIAAAAGYktHRAD/AP8A/6C9p5MAAAAJ
|
||||
cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmChUJLAVnNEmdAAABEElEQVQ4y+2TsUoEMRRFz5sd
|
||||
MwvaiD+xja0g+gnTz/b2NhZ+hY2dfyBMm6+wslCbbSSVIGy9EyZ5NhsYxB3jKmLhhRQhh5v3cl/g
|
||||
X78ia+3cWjvPYcscSFXPQwhT4B5YAGETW2QWKX3f7wFHwM4YmGuIqspnZl8yzJV8FECM8UJEhmcz
|
||||
VS299y/GmKWIRFXVoiiu6rq+HQ1FVTWEMA0h7KYLjTGlqkqMsfTe7yfOOXcKPAJPKSjZUPkMOE5v
|
||||
1rbtZYyxbJrmBlgCccDeAQ9APzY2C+A5baqqOuu67gB4BVpgNWD7ZDZmGIazJiIR0HVlq3eGW6Ws
|
||||
6/UzP0VErp1zJ1uNzYgOgckwgO9qktvR39YbIoJqCGWh7C4AAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo key_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 crt_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 pem_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 csr_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 sig_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
kT1Iw0AcxV9TS0UqDnYQcchQxcGCX4ijVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
|
||||
BD9AHJ2cFF2kxP8lhRYxHhz34929x907QKiXmWZ1jAKabpvpZELM5lbE8CsiCCGMMQzLzDJmJSkF
|
||||
3/F1jwBf7+I8y//cn6NbzVsMCIjEM8wwbeJ14qlN2+C8TxxlJVklPiceMemCxI9cVzx+41x0WeCZ
|
||||
UTOTniOOEovFNlbamJVMjXiSOKZqOuULWY9VzluctXKVNe/JXxjJ68tLXKc5gCQWsAgJIhRUsYEy
|
||||
bMRp1UmxkKb9hI+/3/VL5FLItQFGjnlUoEF2/eB/8LtbqzAx7iVFEkDoxXE+BoHwLtCoOc73seM0
|
||||
ToDgM3Clt/yVOjD9SXqtpcWOgJ5t4OK6pSl7wOUO0PdkyKbsSkGaQqEAvJ/RN+WA3luga9XrrbmP
|
||||
0wcgQ12lboCDQ2CoSNlrPu/ubO/t3zPN/n4AiVZysDNUkngAAAAGYktHRAD/AP8A/6C9p5MAAAAJ
|
||||
cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmDAUHMwbmoJmMAAABRklEQVQoz32SPyyDURTFf+fr
|
||||
V50kVEzWRjSYasPS1aoMJmnzBqZiE5FIjP6EtMNLulmwskksRmKqzhiJiAVJ22spqZbvbPfe807e
|
||||
+90nWioUCtOSNiT1ASFQBda99w9ESADOuRmgGIbhYrlcfmz1psxsJx6Pz373/lKQy+ViwGaj0Zhr
|
||||
N3rvrySt1uv17agbBMlkckxStVKpvHQOvfdXwGhkgKR+M7v/z2Bmb1EBYbPZXACyzrnJfzzDkQHA
|
||||
qPc+BRhAPp9PxWKxV+/9M8Dh9ch4yaVvDXoktpYzteNfTzCzz47DR2Z2/mNAG8CQ4B2zgy4G7UUi
|
||||
kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
|
||||
VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo gpg_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
kT1Iw0AcxV9TS0UqDnYQcchQxcGCX4ijVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
|
||||
BD9AHJ2cFF2kxP8lhRYxHhz34929x907QKiXmWZ1jAKabpvpZELM5lbE8CsiCCGMMQzLzDJmJSkF
|
||||
3/F1jwBf7+I8y//cn6NbzVsMCIjEM8wwbeJ14qlN2+C8TxxlJVklPiceMemCxI9cVzx+41x0WeCZ
|
||||
UTOTniOOEovFNlbamJVMjXiSOKZqOuULWY9VzluctXKVNe/JXxjJ68tLXKc5gCQWsAgJIhRUsYEy
|
||||
bMRp1UmxkKb9hI+/3/VL5FLItQFGjnlUoEF2/eB/8LtbqzAx7iVFEkDoxXE+BoHwLtCoOc73seM0
|
||||
ToDgM3Clt/yVOjD9SXqtpcWOgJ5t4OK6pSl7wOUO0PdkyKbsSkGaQqEAvJ/RN+WA3luga9XrrbmP
|
||||
0wcgQ12lboCDQ2CoSNlrPu/ubO/t3zPN/n4AiVZysDNUkngAAAAGYktHRAD/AP8A/6C9p5MAAAAJ
|
||||
cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmDAUHMwbmoJmMAAABRklEQVQoz32SPyyDURTFf+fr
|
||||
V50kVEzWRjSYasPS1aoMJmnzBqZiE5FIjP6EtMNLulmwskksRmKqzhiJiAVJ22spqZbvbPfe807e
|
||||
+90nWioUCtOSNiT1ASFQBda99w9ESADOuRmgGIbhYrlcfmz1psxsJx6Pz373/lKQy+ViwGaj0Zhr
|
||||
N3rvrySt1uv17agbBMlkckxStVKpvHQOvfdXwGhkgKR+M7v/z2Bmb1EBYbPZXACyzrnJfzzDkQHA
|
||||
qPc+BRhAPp9PxWKxV+/9M8Dh9ch4yaVvDXoktpYzteNfTzCzz47DR2Z2/mNAG8CQ4B2zgy4G7UUi
|
||||
kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
|
||||
VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo git_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
|
||||
kT1Iw0AcxV9TS0UqDnYQcchQnSz4hYiTVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
|
||||
BD9AHJ2cFF2kxP8lhRYxHhz34929x907QKiXmWZ1jACabpvpZELM5lbE8CsiCCOEaYzKzDJmJSkF
|
||||
3/F1jwBf7+I8y//cn6NbzVsMCIjEM8wwbeJ14slN2+C8TxxlJVklPiceNumCxI9cVzx+41x0WeCZ
|
||||
UTOTniOOEovFNlbamJVMjXiCOKZqOuULWY9VzluctXKVNe/JXxjJ68tLXKc5gCQWsAgJIhRUsYEy
|
||||
bMRp1UmxkKb9hI+/3/VL5FLItQFGjnlUoEF2/eB/8LtbqzA+5iVFEkDoxXE+BoHwLtCoOc73seM0
|
||||
ToDgM3Clt/yVOjD1SXqtpcWOgJ5t4OK6pSl7wOUO0PdkyKbsSkGaQqEAvJ/RN+WA3luga9XrrbmP
|
||||
0wcgQ12lboCDQ2CoSNlrPu/ubO/t3zPN/n4AtjZywjCqfNkAAAAGYktHRAD/AP8A/6C9p5MAAAAJ
|
||||
cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmDAcGATEYpspOAAABMUlEQVQoz42SsUoDQRRFz+yM
|
||||
G5CQ0sbC2iqNECwWUUTUQgj5AasUi4sfE8hPSEgjwcZCUkRIYWNnpZWlRI1keLvPZgXd7AZv+Zhz
|
||||
Zu5jDCVJkqThvR+qqjjnOv1+/4OKBMVBt9td896fqeoBcJSm6SiO4/q/BEmSNIA7YBO4AB5VNVol
|
||||
Mb/hxWJxA+zmo23n3KeIvAAYY8bW2tNiHVsBA1gRuTfGvAKHwJaqRq1W62o6nfo/Fbz3wwIMsGGt
|
||||
vQTesyxrAg+qGonIYGkHqipU5zwIgjdglldxSwLnXMcYMy6Ac1X9AnaAZ2APmIRh2C5dYhzH9TRN
|
||||
R6oaAWRZ1lTVubX2KT8yqdVqx71eb1YqKJHcAh44qYKXBPlHWgeugf1VN1cKfl4iIgNjjAvDsF0F
|
||||
A3wD9EWTx4J8PxsAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo tcl_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAKZXpUWHRSYXcgcHJvZmlsZSB0eXBl
|
||||
IGV4aWYAAHjarZlnliI5EIT/6xR7BHlzHNn39gZ7/P1SKmig7RiYpqAoZDIiIyNr1Pzv36X+4eFC
|
||||
jsqHlGOJUfPwxRdbeZP1edT9arTfr+fRr6N5Pq/uX1hOOY7ufMzxuv523twHOIfKu/AwUL4GMu35
|
||||
i+Kv8fPLQNdETlZkeTOugco1kLPnC3MNUM+2dCw5PW6hzXO8fn/CkGVrvJjbNsp1fPnsE9EbgXmc
|
||||
tdMZp3m1zp4FOPmzylW+sLxql7nwvA8u79dbTAjIR3HSD6tS71C5vTOfnH8BxcVzXnHiOZjxfvzw
|
||||
vAkfB1/tED/M7Pp95qfz/Y1BT0GWv7VGVmvNs7vqIyGN16bu0ZE3XNgIuds/izwTf4H3aT8Lz6xg
|
||||
bwfywXyNZzfFWGBZxpthqllm7mM3nSV6O23iaG23bp/LLtliu9MKnLw8zbLJFTfAy7oOvI6z9r4W
|
||||
s+cte7puMhMPw5XWMJg58Nu/8/x0oLUktsbofI8V67JCQpYhyMkrVwGIWTcehR3g2/P1Ibg6EAw7
|
||||
zJkNVt3OEC2Yi1vCI7eBdlwYOJ5cM2lcAxAi5g4sxjgQ0NG4YKLRydpkDHHM4FMZKFvnbQMCE4Id
|
||||
rNJ65yLgkDHMzW+S2dfaYM9pNAsggosuAU1xFaw8wgZ/ks9wqAYXfAghhhRyKKFGF30MMcYURfxq
|
||||
csmnkGJKKaeSanbZZ9Qxp5xVLrkWWxziGEosqeRSSq1MWhm58uvKBbU221zzLbTYUsuttNqhT/c9
|
||||
9NhTz6qXXocdbqATI4408iijTjOh0vQzzDjTzLPMuqDacsuvsOJKK6+y6h01ow6s754/R83cULMb
|
||||
Kbkw3VHjpyndhjAiJ0EwAzHrDYgnQQBCW8FMZ+O9VQKdYKaLJSuCZZVBwBlGEANBP40Ny9yxe0Pu
|
||||
CTfl/R/hZm/IKYHubyCnBLpPkHuP2weojbpVz6mNkKShBFU70o8LZq42VylqPzy2oXTqgiXYlbZm
|
||||
m4EPkl6hLscavOSMnOnZ2LhYQ+F16BDbyD3LN2OOVJ1yrralC/syPhhWnQFiyUS29UnO7rcUuJDK
|
||||
TJm9Te+KTmukxgwzE46ZU1CT712XkYuezL/C7CyqkuOptFLlm9bcAtrhHcIJVnuWGfocZxr0v6rb
|
||||
m9872jWFRX1V1cdwoY3Weqyz5tCLSDNbymZks0IdZa3sWaBfq8wVk6wxjbaPCH7KRrar4OXeL6/s
|
||||
t7HfEOaYkoA+kkqy9ZlgBkzLvRJfN2SI29iEZI+u1hmcs4PB4/K5ZeTNz2LHFBGA1MW37EyxPrJS
|
||||
ktAN2yIcXbiDkW0NOVVV5rDMGYOFuLF24anJ8BlumBUHCThjtAdTqXkcfaAGQI9O1UurZ0odK6or
|
||||
BmFGqW3o2TrfpyJLtqZndt9GYcWeSRYpGneEYiKco+bUY7JrD61Sb6TDmUds1u8eVYAWm7koTw0s
|
||||
dPXAeseKW7vY3kLLZmHVbpmz1jSg18YMbBY7mtYp6AmD06qdcOjW9W1bO2MGr2yLfPEWxAhydyYS
|
||||
QCFNH0hB0n32HJ2yYBGwbz67kfXylRQKqZWMruHafCpWPg1fanGtGogYNhyTid8+RWXfk/YZjiVn
|
||||
BA8xoC+IPOChdq5vSJxA8hEgP8JDfQtIaukmDD3lST4hyLGQWra0kEikYV3TKuyLcECfpufLTj/h
|
||||
nfqQeO5z4n22T/VrxEstnC1IMEt+y5egjFSh+1ZAfV8odVgqiPPSk4g4rjzXEceN35ZHrS+BRDBU
|
||||
atNBOpFHJ18dgdT6SGQpSMNPBNKqHwoi9cmmLmOTArXBwtabtoxYvHDaKlYiW9dutpC3jiNqskLT
|
||||
dz6FZbeQVQZL9Ic2Y8tCnL5MEAjR0+Q0+hkFXtS0ETimJrJKuo63dDWzcs6NybBzNcBE6gR3ZC25
|
||||
Re3Vg18NYuRgHDX6YFvRsAco3iERY+7Dcj7fimM0iAVxVp8Gupo7WFpfcD3WsjgRmslKRzBou1q5
|
||||
U9736KskuG5/vVxrPLlKUq4dcXgp110kiHItqaHnS7G2vaJ9k2UjJVJDzVAE1eNh8FgL++xyfp6R
|
||||
ro0o4Xke+S1BahmoCBXfNgM2qtXmVyWdhxmQg2YLoqFzkAOxw8n5Fa3UHxHb7Oc6hdJchbK7UyiD
|
||||
gloYu+Vj9muLIeYJu+Qraoy8Sjk0QgdS37yKXH4YWr0fG15W6t+Aohi9lgytnamN/t1r0WRslfUr
|
||||
2TRi66Mn7FgeUVXXix7QHmdDA4k/DPoyNd7Vn2OnHkA8JUQwfGe5xlcYOsFQPYPoL7UJdD5HUKD4
|
||||
myhd+Ll3We0KPDoyqueW0bJlNFQk9DDtKt/abRVlVlTUxEO0EiltwiccnnINs9evWRGJ2H+vbCvB
|
||||
6aYdYv/MtoHrqMfWjiKbN4vqiULq5I5C9iaGCkWZJYp0KNmBoZJinPU8O66Loors3NL76xVZRJPw
|
||||
qL8RH9eoa3KpvgCasbS7+P/iUel7AER1dggeA5DKNxGsoWwnqZroRYwkP1fXfJWI6qd9s+pPc/c7
|
||||
m9MqfkhcF8VbwUHPX8I9RSv1tOEUSVF6Fk3iBtzUbhTyDqEkqwRxUq+tm1LCu9x32SUbkB4uGZRz
|
||||
07ulLQoipNA4j1ZTutAjg4f9AED1M859U6agmvoy1IdrH1Mtv6mpnS8m4q0XMtQd+LI9CY0mHZTY
|
||||
1G1YxtrT4lmDKF3TVEkRtnXZgTbNXnKukE3oGYxzUJzSmdI8FvCK6wnqPaRxhbyM8jixRutbaEGd
|
||||
QbSt7Rm9hhB0+WgIUl7obboXw07Bs/yjSfZ+4c5oNQJteG/U/sMcrFz/5Yr2WNlU119VNnpcc20K
|
||||
1Xqtbe2htqknXdQ3XfT6hkh8KXSaHqpe12vp43/san/IMfUVyb7jGPkJ/odjapMsXiSjwfZ+R7/m
|
||||
qKMoPSZmz/qlRcS5qK+tS8R03a2LfnUu/iF86vcAf0eAqurSfWUqfsO3uujl9gmtj8GVRzs1vbcW
|
||||
K0Ere1mJKv2s7NXH1BdFulDpfFGhFKK+Bbcgtfudm0vkOvWdPIsOg0yz1KotN5JzuzXct7WC+Dq4
|
||||
oMRJVhYxoSM2ekWxptAR1Sy3gpKxEJll0Ei2iLXwvU46d/o+uf9V+mQNatJXNife1rZmTh8fBOrU
|
||||
9+0Mevdp21FsLNBaYeTNgBF6kvsF2XQ9TEVq5eZJk/sOsn7cCIOQHix+bnU1dTp2AId9qCXWYjyO
|
||||
H5eDkcKyJcjRafcVDSh7pqVn9Yx0xaWRRh5S4m1SNtKRol5JjzmvZikcujWMyqHBX4L/s4FWrFdd
|
||||
goyOVh7kpF7YuddLqN1Rici+Z6M5MKr2PkhxbBY2x5eWwymCrRJNjBXekm0Ov+T2FTkVB/hTShCF
|
||||
1AzQDWSF0qRoyoiwjyXEOElSjKkWR7/zidg8jyQoegP+RCbLf4HJvbku/ZiSmzot+x6nkf8lsIOA
|
||||
0t439DTIfZ7Z85VdWe4mfu8h//C41D2sVBmncSk9pZuZSc9m5jjS47r1vFz3rZCrbYeiqPXVWZc0
|
||||
SRga6fXmdsz3bkf90P4w/yjqfy5hPRN2uRFYAAABhGlDQ1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw0Ac
|
||||
xV9TpVUqDnYQcchQnSyILeKoVShChVArtOpgcv2EJg1Jiouj4Fpw8GOx6uDirKuDqyAIfoA4Ojkp
|
||||
ukiJ/0sKLWI8OO7Hu3uPu3eA0Kwy1eyZBFTNMtLJhJjNrYqBV4QQRB/iiMnM1OckKQXP8XUPH1/v
|
||||
ojzL+9yfYyBfMBngE4lnmW5YxBvE05uWznmfOMzKcp74nHjCoAsSP3JdcfmNc8lhgWeGjUx6njhM
|
||||
LJa6WOliVjZU4jhxJK9qlC9kXc5z3uKsVuusfU/+wlBBW1nmOs1RJLGIJUgQoaCOCqqwEKVVI8VE
|
||||
mvYTHv4Rxy+RSyFXBYwcC6hBhez4wf/gd7dmMTblJoUSQO+LbX+MAYFdoNWw7e9j226dAP5n4Err
|
||||
+GtNYOaT9EZHixwBg9vAxXVHU/aAyx1g+EmXDdmR/DSFYhF4P6NvygFDt0D/mttbex+nD0CGukrd
|
||||
AAeHwHiJstc93h3s7u3fM+3+fgC4vXLDfzo5HwAAD4tpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAA
|
||||
ADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4
|
||||
OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDQuNC4w
|
||||
LUV4aXYyIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8y
|
||||
Mi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHht
|
||||
bG5zOmlwdGNFeHQ9Imh0dHA6Ly9pcHRjLm9yZy9zdGQvSXB0YzR4bXBFeHQvMjAwOC0wMi0yOS8i
|
||||
CiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHht
|
||||
bG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVu
|
||||
dCMiCiAgICB4bWxuczpwbHVzPSJodHRwOi8vbnMudXNlcGx1cy5vcmcvbGRmL3htcC8xLjAvIgog
|
||||
ICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6ZGM9Imh0
|
||||
dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25z
|
||||
LmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20v
|
||||
eGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDpjOGIxNzg0YS1m
|
||||
NmFhLTRjMmUtYWQ3ZC1hM2RkNmQ5NTUzMjgiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6
|
||||
YzZmNGE5NGItNGVmNS00NTY3LWE4NjctN2Y4MjljNzMxYWMyIgogICB4bXBNTTpPcmlnaW5hbERv
|
||||
Y3VtZW50SUQ9InhtcC5kaWQ6YzEyYzVlYzYtNTgyNC00NzYyLTlkZWUtYTVkM2I4YjA2YjlmIgog
|
||||
ICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJMaW51eCIKICAgR0lNUDpUaW1lU3Rh
|
||||
bXA9IjE2NzA0OTM1MzA0NDk3NTMiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4yMiIKICAgZGM6Rm9y
|
||||
bWF0PSJpbWFnZS9wbmciCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9v
|
||||
bD0iR0lNUCAyLjEwIj4KICAgPGlwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICAgPHJkZjpCYWcv
|
||||
PgogICA8L2lwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICA8aXB0Y0V4dDpMb2NhdGlvblNob3du
|
||||
PgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgPGlwdGNFeHQ6
|
||||
QXJ0d29ya09yT2JqZWN0PgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6QXJ0d29ya09yT2Jq
|
||||
ZWN0PgogICA8aXB0Y0V4dDpSZWdpc3RyeUlkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6
|
||||
UmVnaXN0cnlJZD4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxp
|
||||
CiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAg
|
||||
IHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZjhkYTk4MzMtNzMyMi00NTIzLTllODctODMyMjJk
|
||||
YjM3NjAxIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAg
|
||||
ICAgc3RFdnQ6d2hlbj0iKzAzOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9y
|
||||
eT4KICAgPHBsdXM6SW1hZ2VTdXBwbGllcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdl
|
||||
U3VwcGxpZXI+CiAgIDxwbHVzOkltYWdlQ3JlYXRvcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVz
|
||||
OkltYWdlQ3JlYXRvcj4KICAgPHBsdXM6Q29weXJpZ2h0T3duZXI+CiAgICA8cmRmOlNlcS8+CiAg
|
||||
IDwvcGx1czpDb3B5cmlnaHRPd25lcj4KICAgPHBsdXM6TGljZW5zb3I+CiAgICA8cmRmOlNlcS8+
|
||||
CiAgIDwvcGx1czpMaWNlbnNvcj4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94
|
||||
OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAKPD94cGFja2V0IGVuZD0idyI/PhM/IgkAAAAGYktHRABLAEsAS0uhKB4AAAAJcEhZcwAA
|
||||
AFgAAABYAXjaS2IAAAAHdElNRQfmDAgJOjLuIiOnAAAA8ElEQVQoz43RIUtDcRTG4d/734WxYhGx
|
||||
zDCQgVmLa0ZhKAgLgkVmMSgIdi1+CVH8BCJjiMGiTYvNNNErBhGsgwm797XpHPdePO3wngcO54iM
|
||||
arVcGkzEu4iN7kltfjSLxodXN59mBor3hdZsV8bzMNos7/TKaSjtITWMp4D7QhD1o21wHfwIlDHX
|
||||
uWBl63kamDP6ECyCh8HJeS5wGprIk8CnoQ7honM2+5YPglNQRVAFvlJxkHXBHyCrIdERLADv/epL
|
||||
rxjID4l4NQqI9ZvDpWEWiH5XSi9DEq6wj7qntTv+U812fAxW0cyfP2BuQS4C363sTMdBnn7dAAAA
|
||||
AElFTkSuQmCC
|
||||
}
|
||||
image create photo pl_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAsAAAAMCAYAAAC0qUeeAAAACXBIWXMAAAZ1AAAGdQGEn07tAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAVtJREFUKJFtkD1I1WEchZ/z669x
|
||||
iW41ZGGhuATB7Q4tQUuTixARgk1tQUFXoaCPqcWEmhRtaGwMXBqcIug2ObhJKRQ19EVkw0WN6H99
|
||||
39NQ3bzSGQ8Pz4EjgNnx+lFI1Ym5VysAM1drw0j3wYOG0WsPXjYBNN048Uj4PNATimM5cpvEKnAA
|
||||
ALHc/+X4ybH5+RQoLwBVoGLnURLPOiCAqX/qW7kCEJHY7PTmHFBjR0KammvUh8JS6rTizE7wt5x9
|
||||
W8r3onXQLxBLfyX/YUvgO3j3rmZzLY2cOvLEpAJogYaw3yPtAdYQk8DpgMfarphp1C4AU8AicAg5
|
||||
pLiV7ZtlpX2pezb7ncRzy3ux7mJ9K0t9CLNUbPbs74Ldmz9ivVXossIXjV/feLj8Ndut6C02iq6L
|
||||
ctFv8psc1fVIG4fDqvx5aUA/twY6sEGzidu27lyfXvwBnP0n4Wk7lZ9/ATwYhnr9pKV2AAAAAElF
|
||||
TkSuQmCC
|
||||
}
|
||||
image create photo image_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAAFSHpUWHRSYXcgcHJvZmlsZSB0eXBl
|
||||
IGV4aWYAAHjarVdZku06CvzXKnoJBoSQlqMxonfQy+/UYN86p6Yb8Z5dx0KDAWUCcrn+v/8O9x9c
|
||||
lDQ4rxZDCuHC5ZNPnCHEa195Peny63k61y28jLurngnGkKCV3Y3hrL/H6XrRRBmSflAUjyIqrxPJ
|
||||
H/3xTdExJNMjhtCOonQUCe8JOgry3tYVUrSPWyh9t+3eYtw/Nx/jxsR28973BvSawo4wdyG58GTh
|
||||
7YDMHzvJmGA8L4lYSCKQBb0sXm5PAMhXOF0fvHLvrDzSGys3J++kSNgrHAZewQxP++U46dfguwXx
|
||||
B8tSj8Sv44EfEy8gL4xHi26MvneXfQCk4Wzq3uKSsLAAclmvBdyGn0K2dSfc0SF6KyhvAKHgrpSI
|
||||
QcsgT40yDeqrrVThoufOhpa5sqyxKMaJq1wOPPl502CTJE0iOKygVzDKjy+07KZlrlKE4UZYyQRl
|
||||
tOnnf+f+VtEYk3CiCWbdWMEvnkEINyZz84lVIITGHUe6AL7v92vyKmBQF8wRG8xX2SqK0omtGUey
|
||||
iBYsVLQ718jaUQCIYFvhDAkYuAKJUqDLmI0IOEbwk6EosnguoIBUucFL9iIB5CBjYBvvGK21rLyH
|
||||
UbNAhEoQAzVJMrjyKGyIH/MRMZRV1KtqUNOoSXOQ4IOGECzM4pdNzJtaMLNoyXKU6KPGEC1GF1PM
|
||||
iZOgOGoKyVJMKeUMoxmaM97OWJBz4SLFFy2hWIkllVwRPtVXraFaja6mmhs3aagTLTRrsaWWO3WE
|
||||
Uvdde+jWY089D4TakOGHjjBsxJFGflgjt2n9dP89a3SzxoupudAe1vCq2a2CZjnRyRkYY09g3CYD
|
||||
CGienF2RvGc3qZucXYmRFcrwUic5jSZjYNB3Yh30cPeHuRfenPf/iDe+mXOTun+DOTep+4a5z7x9
|
||||
wVrLqw6LWwzNNJygXoL0w4IeM8c8D7W/bt2PC0bwU+AS6wCgNWwLvUoP9XWx+0FL5tuznvJvPrm3
|
||||
AVheIo5AJY+/i3poU1CjNDy4aW1OaItWWzyLLnW38HVLw9d2K6xb4TzWP7fuqwnEyK2ojltPlUfa
|
||||
zoK8WebD3rUb+BronvOZ4xx6CNv5kSq1+MlKw7FwxCKPQbftaGec73VTVGqSKyw7OJVwXuQ93lDq
|
||||
8sGLwSOS6IwjuRxmb2pkS0OvWgcf4ofvEmvYDteqyLetqvuKxP4O7K/BNS5LCpcggGxbQCW/wUrU
|
||||
Mj5rlhuZEhJj75ISh61Ze6RardHZUGOKaciBY2TkFgrMUuxK7VxrPPtglVJ/S4iRQ3hCP5y4cxJp
|
||||
K6mGo6GHA2zxCaf6ATzO1Ey7h2HRkynYqFxVjkcNOU6IgL3F0YLvF8vNH/azxa6xxbyJt4piGF9j
|
||||
1/1lMBsdHSkrUOKTJt6nktaEs7Sqjdnuo4iljnq5ZLaIqrZhbx0f9hb1TjSfmh1CMspgd3bCIiEE
|
||||
VQ9y1y+tdFTQI7ZdGVxeGbLBQztQdVcHNkM5Jj1qodH8JDohgc+vQHsSB8cVECBudjK2l3q7U+jk
|
||||
2oRL8i1q+Dko3HsVLHoIQ8ktt98zYqSdMJmfct3oXuYt6C4j+JociOw+UK83XsVb12rX2N2IgKnH
|
||||
ci9I0F6O7YZ/eYasmHQLOrtR5nsr31a6XtPHehl2FlpwwCF8rCv0xJAePmunnEq7nfUUy000TsEN
|
||||
XU+O8IbuCR/jyP3M9Mfpv/PZ/e70m889PAXysj/V031bzXctzX92+rxfeznihwh2v4YwPyFMPx3A
|
||||
7qfC8wRmP5n4nTuH/k9u4NMguf8DDNefEsqt9ZUAAAGEaUNDUElDQyBwcm9maWxlAAB4nH2RPUjD
|
||||
QBzFX1OlVSoOdhBxyFCdLIgt4qhVKEKFUCu06mBy/YQmDUmKi6PgWnDwY7Hq4OKsq4OrIAh+gDg6
|
||||
OSm6SIn/SwotYjw47se7e4+7d4DQrDLV7JkEVM0y0smEmM2tioFXhBBEH+KIyczU5yQpBc/xdQ8f
|
||||
X++iPMv73J9jIF8wGeATiWeZbljEG8TTm5bOeZ84zMpynviceMKgCxI/cl1x+Y1zyWGBZ4aNTHqe
|
||||
OEwslrpY6WJWNlTiOHEkr2qUL2RdznPe4qxW66x9T/7CUEFbWeY6zVEksYglSBChoI4KqrAQpVUj
|
||||
xUSa9hMe/hHHL5FLIVcFjBwLqEGF7PjB/+B3t2YxNuUmhRJA74ttf4wBgV2g1bDt72Pbbp0A/mfg
|
||||
Suv4a01g5pP0RkeLHAGD28DFdUdT9oDLHWD4SZcN2ZH8NIViEXg/o2/KAUO3QP+a21t7H6cPQIa6
|
||||
St0AB4fAeImy1z3eHezu7d8z7f5+ALi9csN/OjkfAAAPi2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAA
|
||||
AAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4K
|
||||
PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40
|
||||
LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy
|
||||
LzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAg
|
||||
eG1sbnM6aXB0Y0V4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5
|
||||
LyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAg
|
||||
eG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2
|
||||
ZW50IyIKICAgIHhtbG5zOnBsdXM9Imh0dHA6Ly9ucy51c2VwbHVzLm9yZy9sZGYveG1wLzEuMC8i
|
||||
CiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczpkYz0i
|
||||
aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8v
|
||||
bnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNv
|
||||
bS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjM0OGY0ZTU3
|
||||
LTc1ODUtNDVkYS1iY2UxLWZkMjM5MTEzZGU2NyIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlp
|
||||
ZDpjNWY2MTVjMi0wOTgyLTQ2MTktODhmNC0zZGY4ZmRhYWU4NDMiCiAgIHhtcE1NOk9yaWdpbmFs
|
||||
RG9jdW1lbnRJRD0ieG1wLmRpZDoxMTQ5N2E0MC00NGI0LTRiMTAtOTQyZi02ZjY5ODMwYTc5MDEi
|
||||
CiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09IkxpbnV4IgogICBHSU1QOlRpbWVT
|
||||
dGFtcD0iMTY3MDQ5NTQ0NjA2ODk0NiIKICAgR0lNUDpWZXJzaW9uPSIyLjEwLjIyIgogICBkYzpG
|
||||
b3JtYXQ9ImltYWdlL3BuZyIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JU
|
||||
b29sPSJHSU1QIDIuMTAiPgogICA8aXB0Y0V4dDpMb2NhdGlvbkNyZWF0ZWQ+CiAgICA8cmRmOkJh
|
||||
Zy8+CiAgIDwvaXB0Y0V4dDpMb2NhdGlvbkNyZWF0ZWQ+CiAgIDxpcHRjRXh0OkxvY2F0aW9uU2hv
|
||||
d24+CiAgICA8cmRmOkJhZy8+CiAgIDwvaXB0Y0V4dDpMb2NhdGlvblNob3duPgogICA8aXB0Y0V4
|
||||
dDpBcnR3b3JrT3JPYmplY3Q+CiAgICA8cmRmOkJhZy8+CiAgIDwvaXB0Y0V4dDpBcnR3b3JrT3JP
|
||||
YmplY3Q+CiAgIDxpcHRjRXh0OlJlZ2lzdHJ5SWQ+CiAgICA8cmRmOkJhZy8+CiAgIDwvaXB0Y0V4
|
||||
dDpSZWdpc3RyeUlkPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6
|
||||
bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAg
|
||||
ICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpjNWNiMzNjNy0xMTVlLTRhNGYtOTAwNi0xZjAx
|
||||
YWY4ZmIzODQiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoTGludXgpIgog
|
||||
ICAgICBzdEV2dDp3aGVuPSIrMDM6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0
|
||||
b3J5PgogICA8cGx1czpJbWFnZVN1cHBsaWVyPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6SW1h
|
||||
Z2VTdXBwbGllcj4KICAgPHBsdXM6SW1hZ2VDcmVhdG9yPgogICAgPHJkZjpTZXEvPgogICA8L3Bs
|
||||
dXM6SW1hZ2VDcmVhdG9yPgogICA8cGx1czpDb3B5cmlnaHRPd25lcj4KICAgIDxyZGY6U2VxLz4K
|
||||
ICAgPC9wbHVzOkNvcHlyaWdodE93bmVyPgogICA8cGx1czpMaWNlbnNvcj4KICAgIDxyZGY6U2Vx
|
||||
Lz4KICAgPC9wbHVzOkxpY2Vuc29yPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8
|
||||
L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
|
||||
ICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+1HpXCQAAAAZiS0dEAEsASwBLS6EoHgAAAAlwSFlz
|
||||
AAAN1wAADdcBQiibeAAAAAd0SU1FB+YMCAoeLgmNIBcAAAGJSURBVCjPjZI/SCNxEIW/3UhkIX8Q
|
||||
I2qsRA0bQUFEUqkgqIhkIVdpZeDKa9JYCyIopgiIhSJaKGhnl0IRooWikSCIKKSRA0FCzN4u5FY2
|
||||
XvhdFe8kifjK4c3HzJuBL2p7elrUqjcAxONxEQgEajYahoHL5cLY2aEuwOPxoGlaTUMikSCTyXCZ
|
||||
z+N0zotSaRXYBeakd0BFNzfr2LafXO4Qn28K237i+PiUaDSKLA9wfT0CpN+bqwCKMkQsFsO8u6VB
|
||||
StI3XCKfl/B6N9jcbEeIWyAkVa3wb980pvnI2a9XvMLi4jcst3cSiZxj2204HPuUyzUyqMjp9CHL
|
||||
Chm/n66JCfRmg3DPIPf3iwSDM6RSB1jWp4AWHA4FxS5yUiyS/mnycHXE0tICuq6TSlWHLP9/X9O8
|
||||
Qohnupub0FYW0X70YxhpQqFQ3f/4MIEQo4yN7bHb+o2XrVkaGzt4e5M+fbAPAF3XAY1c7g8wjmVB
|
||||
ONyL2+2uD/ieTEprk5Mim82iqiqqqlaZCoVCXcBfmFeL22lAPa8AAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo lua_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAjbAAAI2wHNrPlDAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAARdJREFUKJGNkC1IQ3EUxX/nbfoY
|
||||
ikkxaxQMRi2CzcG2uGFasy3owkCQV7SsuCI2i7iP+KaLVouCcSCI0aAgTFAn2zX8/dqeiCeee3+c
|
||||
c6/4j6rNXWQFREUDgyDwmFuYpR8bYcK7IZl8BaAWdoBxoOOARiOG+ZuYNoDpD/wJOCRhW7yohFEA
|
||||
KsJM1JtVIPsjy4BTYBLwSdgymUwHwKN+kh9aBtk+uXSKbGoJ1OVZO58jD1iPHNnn3oEysAcgT6vl
|
||||
A8TB5iOAVKQWCjQFtgqIx94M0I6D3lzlAY0B2wO+qesqyc4jCVHdcX1x64AeZX6JGOpYJgj6DlhL
|
||||
nyEr/QEd077c+0K/7XAFjyKwCIyCrjA7IJc6ct9yegcG+1TkMUCBoAAAAABJRU5ErkJggg==
|
||||
}
|
||||
image create photo gz_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAASpJREFUKJGFjb9Kw0AAxr+73F0S
|
||||
wU6tUMWAOigIBcVNJ7ciTgo+gIuzq66CvoEPoXQWBHERih0EUbu0UGiCrdVaY5qaJncuRjEZ+o2/
|
||||
7x/ZO912lFJ5/IiADgURxcjU7pBQTlKPDQI/zzUBRlnMed/1LptlB3Mrs+A6BwCEMsSzDDts6EXY
|
||||
3zqAYOJ3qVy5gSOaKK5vwtBNAEAQBjg5P8ySo9KOopT8u65WHOgmh7WQhab9eVIq0GQYAGYWc+i9
|
||||
9kESFqUENBnutj1cnT3C/wxwe1FLjaUKrUYPuakMCqsW7Pp7qsCSQCmF+n0bTq0LGcnRDwBQWLOw
|
||||
sbsErmujC8Jg8Nwv+G4ALtJ7zK69HQudTcZgLGNojWpn+br0ND49P/Hw0vxoxV4wCO1vTFFpmeaA
|
||||
16IAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo tgz_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAASpJREFUKJGFjb9Kw0AAxr+73F0S
|
||||
wU6tUMWAOigIBcVNJ7ciTgo+gIuzq66CvoEPoXQWBHERih0EUbu0UGiCrdVaY5qaJncuRjEZ+o2/
|
||||
7x/ZO912lFJ5/IiADgURxcjU7pBQTlKPDQI/zzUBRlnMed/1LptlB3Mrs+A6BwCEMsSzDDts6EXY
|
||||
3zqAYOJ3qVy5gSOaKK5vwtBNAEAQBjg5P8ySo9KOopT8u65WHOgmh7WQhab9eVIq0GQYAGYWc+i9
|
||||
9kESFqUENBnutj1cnT3C/wxwe1FLjaUKrUYPuakMCqsW7Pp7qsCSQCmF+n0bTq0LGcnRDwBQWLOw
|
||||
sbsErmujC8Jg8Nwv+G4ALtJ7zK69HQudTcZgLGNojWpn+br0ND49P/Hw0vxoxV4wCO1vTFFpmeaA
|
||||
16IAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo zip_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAACXBIWXMAAAeJAAAHiQH5c1i9AAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAUVJREFUKJGNkTtLA0EUhc9MZrNL
|
||||
IokBFZUY340IgqSw10K0srGy08LaRvAf2NpYpUmrhZ2N/oCAYCUILhJjDJE8NjGJyc7M7thodJMV
|
||||
PeX5+Obey5DZ0+2cIu4EfoSCpMz9sz38EjJysql6Sw1UhCzbZs+WZicn2x4B5IWptkRq7RBzsXgX
|
||||
lCuv2vlFWtvYOUAiMaN/9aaVx+7V8SBJprfU1PAoCEhXctoc9dscWMRAZPH7MQWFbKkIFo7qKHHL
|
||||
s54SEpzYoBTo8KqHhaM6qN+hMt+AMCsQZhWqI/t4vyRdvF8/IrQ+DxrRYd8U/pZc7kC1BMR9GTL3
|
||||
Brcl/jHpM06TQ0nHl/lKgZiB0Oo0jJW4HwYFlOdzic6gOhJOsQnxVAcdCPYoSrHaXemIhYPjnnph
|
||||
KN64fFgiBqsHlscyzWyte5hs8cIHuFR/UISQs+8AAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo xz_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAShJREFUKJGFkDtLA0EUhb+Z3Vl3
|
||||
jFpZGCsJiI0gRqtAOonYSvJPBP+Aoo29IBZ2giA2WimIVkqQgAgptFBxUfEVk2g2+7IxgWSLnPLc
|
||||
8+KK1GbeiaIoyT8E0jOFtSC1UaILI6Gsm7Xmb9I2LCxptnhlVevH8sKB2RT0KQC80Och9N9M5Up2
|
||||
C6vYptVOKl6e8awfmZtfxLY1AA2/SWFveVhk73YiqVRHtXt0jhjoR2WmEGa7mdDzkN1iACubJnBe
|
||||
EUJ08FIpZLc4uHeorW8Tfn7zs7UfC4sZ/OtbzIkxdD6HVyrHDGaMIcI9LeJdlcEPejcA6EKOoY0l
|
||||
hLZ7G0RCE75/EX5UEDr+EDFzuLJmJPRoe5DbNIKDk3RYqQ4amekbY3L8pXXz6o2nPwWnYSj7tbJx
|
||||
AAAAAElFTkSuQmCC
|
||||
}
|
||||
image create photo iso_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAWIAAAFiAG/L38eAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAVJJREFUKJGFjz1IQgEUhc99vvd8
|
||||
JgolDf2OQkhb0RD249LaKESDOEUQtQRtNbQVTkE05JJLDUGQRJPQUCQVrSJIv5IZmFK8/9v0XmJC
|
||||
d7qccz7uPcTMQfw/DSJiABCJqN7sGJnYhMXWhizSGECkmvbd55exCeAUAKg5rGcm5yVRSAPwtFzg
|
||||
p6q6Orh4ueUCfBjrY5uLRFDa/cSAmS/VRkRHUA07oYikAIAmhd7qkaUj2etXfffbcVkt9xMg9gSU
|
||||
BRdgm4edD797Z666w9E1AJZlxDtxm0oCgF8Rh1zAZjacXbIaPgABAIZHq/kd3bRYdwHTxAW8mAOA
|
||||
jtfzqH6NfUmSdZSy007RSkPL/5ZOTym6zAVZFAbalTYs+33loDAqOAIlcupjRZvVTbv8J2zyx3G+
|
||||
mtzJlh+o1Txbj3SFQ8HlgCKMg0io1o2bvdzLburkuQgAP0z8hJue1kBeAAAAAElFTkSuQmCC
|
||||
}
|
||||
image create photo pdf_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAKYAAACmAE200ffAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAMpJREFUGJWNz69OgnEYxfHv+RVF
|
||||
xsBAdHODzcbLrARfLgADjWggMgKXYHDzArgAA4F7IKAm/wTsNgMj6eZGYHAIBoWX4fvEs8/OngNb
|
||||
53o0dFzpbucAIZGYImiaDqM5+CQl5glYpMQu4dD8FzuunoIOCZ74IuokHtzA9WofewBfL1B4BD9j
|
||||
ZkhHsHrVb+t5GZb3wB1GBL0D33h1BeETnNdPY+US6xa7rfHbQ2JF7SxH9iAjx1EP3MAaaTy53jXs
|
||||
z0C1QB/o+GYfBFgDj+E74z7GkTEAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo bz2_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAdDAAAHQwF4FVqrAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAARhJREFUGJV9jrFKw1AYRk9ublI0
|
||||
oYPSYnEREXEQ6eIiFhFB3MVBcPEpiqN06OAiLrq6+Aa+gIuDUEShhYK6iZbWlDQVE5t7HcSEFuo3
|
||||
nv/wfb8xf3H6qjUF0ihLikNhi2tGIoMoKmRMk4ww/5iwgt6lbN7D3BJ6eua3AY00w5Cr3X0c204a
|
||||
GvUaTXPA2voOuXw6apSe7rSwrKG56PYG9dHB3thCuNmEi1ERwCquQviFEQ2GuBgVVadNcFxGeR79
|
||||
syrE8Xh50Gwgcnkm9g5Qvo9qvY+XDa35fqjRq5RRrTc0arwMYG9ukz05Ry4s/v8zrovuemjfR/c/
|
||||
MRw3OUn/sV61nMnZVJ4i1qz0Kkc5sVx8CdvdZ9pdAH4AuSFg6ttQQTAAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo csv_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAMCAYAAABbayygAAAACXBIWXMAAAvPAAALzwFI68pfAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAPJJREFUGJWFkaFLA3EcxT/ve8cs
|
||||
M6uIiOl2GBZsVqOyf8B+ghyr2z+xoqdgMNoMqzaTaSaR28BiEFYHC+rm72sTxRt76YUPj/d4KnO/
|
||||
BXYA578UAoe7lxrHOBvphfYqIMq27xv0R5kfGapMAiA90wPQDTX6tgj6gQvdA+j51OsWkwCEOaPf
|
||||
vhaxFma8z42JRUaTwDWBzGISvrghkCG2Z9DzmHZkNA1AcJcWOpGYLqrwp+PKhFcijoF1oC5ny6EB
|
||||
fJjE1OGgzH3wuUpC4ArYFIwR5w5PjUIDhrm3li0f5t4ydzrLQHc6MeKtzP2R6gsB5OLlG1VzU07m
|
||||
mn0VAAAAAElFTkSuQmCC
|
||||
}
|
||||
image create photo exe_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAMCAYAAAC9QufkAAAACXBIWXMAAAMnAAADJwEZpzWLAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAaxJREFUKJFtkEFIlHEQxX/z3083
|
||||
IoONdQ3qYrcFdQ0hhTrU2k3XCjS6dZBiO3SRorotJJQSXQtMOiUKxrYmQgZiHjRJ3FoxPVgUgkSt
|
||||
UatY0H7/6dB+CO33TjPDezNvnlCCguTbTqUQOSMQVSiIMm7V3opMTH/BB+IV+fb4MWC+nKIXu/v3
|
||||
78PleaY+sw6Q0pTJLeeadsWJ+F2UG/+t/nMnuef0h9rKV//MsYlSQIgAC87uAc6W25LJj0eCCVQ9
|
||||
l2GEMICqDhuA720n64AwMInyElgDcB15qlYv+LxbNEWTdgBuH78W+hyqGXWN0wxUIsx2vxm6+aJr
|
||||
5QfCYR/xVDqW/hoAqDl/PaNi2oGDQDUQyx6qj9z/OT62EA7MblcELLADLAetPokWzL2ZwdW8kxh4
|
||||
V4u1jWUZw7OgymBf9lcUfi+CbijsFbjqFu3jXsARazt9bGlSRpaAWKlt8RID5kJXpj8BGIFzCt+A
|
||||
98BmSfz6BPOtPktRlRGvdtTY5Nilppw36Hjw9qgRewAY8NHaCldHvUZ8CABsPYp3qUqPoA2qFBGy
|
||||
ogxXXZ566HH+Asc0nIyxyMyyAAAAAElFTkSuQmCC
|
||||
}
|
||||
image create photo txt_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAMCAYAAACwXJejAAAACXBIWXMAAALEAAACxAFbkZ0LAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAXVJREFUGJVjZICCT2f+i9x98XjO
|
||||
43fPXorziUrKyihFSJkwfmNgYGBgPLz62uYXH998EOMX1unbMmvRxoUT+ytrJic7atkUfPz2+QIH
|
||||
Kxsf04sPr16HptjF3nt+/0CYhZ/s0ul7+3SktbQvPri6LzTFLvbHrx9vWRgYGBhubn4s/Z75R70I
|
||||
M7fq339/mBgYGBgYFFQZbLfd5nv89CkDCwMDA8PG68cUnr158E5OSN7mz78/nDB3Pvvw9Iu1qjlE
|
||||
kZ2a0ftHomLvlQRkH375/5MVpujxa7kPDAz/IIoOXj7+//7bpxy3RO4x/vz5mx2m6P371xz2+rYQ
|
||||
RU7q5rxX3z/5pSkiK/b9/0+4ogdvXzExMDBAFK0+s+vJlfvX/8lIyVz4/fcXN0zRy5evvia6hUEU
|
||||
eZk4aGtJyD9TlVX1/P3vDxvcpKf3X8JNKp/fcZKFlf3//z8/5v9nYYI7nImB7WWBbxwD45aFJ05/
|
||||
//3rBgMO8P3ndy0A+c+fqfnp2TAAAAAASUVORK5CYII=
|
||||
}
|
||||
image create photo j2_16x12 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAjxJREFUKJGNzT9oE1EcwPHfu3u5
|
||||
yzWXyyUx1/xpKtZWaytJkVbQoUMpiqP/gtJSJ8FNxEEoWpUKgghKUSGTYNHBwalrDDgIIk1oG/oH
|
||||
o1IoTZu2SS7/XnLv7p6To+B3/sAXMcbgfzp663ZfOTZ42VEuxVBw+sEUVf2AzXblLzCB91iK22+L
|
||||
gs924JAlumKG3xe3eezwrK6ksO12D1UHBm5SRZH/deGMNgjlyq6yuvxwd+Z+EjHGQHv+IkG08Jjp
|
||||
ks5L29sLrVBo1EZIVrOL082e3qeBdGrWUN2/Owwjt5FM7nMAAFytRsCiiPFYtpziECJEwc1mB/X7
|
||||
plua1rk7fu5O+ezoI75edwEAYAAAqVhYcdBWtR7uHtZSn++KP9d/EEKa+XyeeufefAknX4/lcjkD
|
||||
rl8FAAB8ZGJiqDpy5plnaWkWgl2MRKMnq7HBK4zj+jstu1E7FPC2To3c8L98ddG7+O1Jfn7+K3br
|
||||
+mbF6ezX4/F7hqZ1NUzzmilJBdxulyxBjFNFjZZGTk8xhELRra0MAAC3vLBQxhU9e/zjhylcq9vq
|
||||
+tocE8SiJYlryLLe8qRRYoj/hBv11XQ63QIA4PomJxVbwOqv8QuXqCzL9UhkGDAf5A1TxqTRjQxK
|
||||
waYDtkPwRhMJCQAAcy6XQBVVAwTH2sGQ25vNaAwYtjCvkcjhE5Ysd1Cwe/gmifh0nQMAwBvJ5H54
|
||||
5nEG7+28M9SARyoW37c7A72MxzFpr/Dd1sUKRxpZbJg7joMDAwDgDzlS9ta5m7mUAAAAAElFTkSu
|
||||
QmCC
|
||||
}
|
||||
|
@@ -15,9 +15,12 @@ dict set lexers TCL commands [info commands]
|
||||
#--------------------------------------------------
|
||||
# Go lang
|
||||
dict set lexers GO commentSymbol {//}
|
||||
dict set lexers GO commentMultilineSymbolBegin {/*}
|
||||
dict set lexers GO commentMultilineSymbolEnd {*/}
|
||||
dict set lexers GO procFindString {func.*?PROCNAME}
|
||||
dict set lexers GO procRegexpCommand {regexp -nocase -all -- {\s*?func\s*?(\(\w+\s*?\**?\w+\)|)\s*?(\w+)\((.*?)\)\s+?([a-zA-Z0-9\{\}\[\]\(\)-_.]*?|)\s*?\{} $line match linkName procName params returns}
|
||||
dict set lexers GO varRegexpCommand {regexp -nocase -all -line -- {^\s*?var\s+([a-zA-Z0-9\-_$]+)\s+(.+?)(\s*$)} $line match varName varType lineEnd}
|
||||
|
||||
#--------------------------------------------------
|
||||
# SHELL (Bash)
|
||||
dict set lexers SH commentSymbol {#}
|
||||
@@ -30,13 +33,17 @@ dict set lexers SH procRegexpCommand {regexp -nocase -all -- {^\s*?(function |)\
|
||||
dict set lexers PY commentSymbol {#}
|
||||
dict set lexers PY procFindString {(def )\s*?PROCNAME}
|
||||
dict set lexers PY procRegexpCommand {regexp -nocase -all -- {^\s*?(def)\s*?(.*?)\((.*?)\):} $line match keyWord procName params}
|
||||
dict set lexers PY varRegexpCommand {regexp -nocase -all -line -- {^\s*?(\w+)\s*=\s*(.+)($)} $line match varName varValue lineEnd}
|
||||
|
||||
#--------------------------------------------------
|
||||
# Ruby
|
||||
dict set lexers RB commentSymbol {#}
|
||||
dict set lexers RB commentMultilineSymbolBegin {=begin}
|
||||
dict set lexers RB commentMultilineSymbolEnd {end=}
|
||||
dict set lexers RB tabSize 2
|
||||
dict set lexers RB procFindString {(def )\s*?PROCNAME}
|
||||
dict set lexers RB procRegexpCommand {regexp -nocase -all -- {^\s*?(def)\s([a-zA-Z0-9\-_:]+?)($|\(.+?\))} $line match keyWord procName params}
|
||||
dict set lexers RB procFindString {(def |class )\s*?PROCNAME}
|
||||
dict set lexers RB procRegexpCommand {regexp -nocase -all -- {^\s*?(def|class)\s([a-zA-Z0-9\-_:\?]+?)($|\s|\(.+?\))} $line match keyWord procName params}
|
||||
dict set lexers RB varRegexpCommand {regexp -nocase -all -line -- {^\s*?(\w+)\s*=\s*(.+)($)} $line match varName varValue lineEnd}
|
||||
|
||||
#--------------------------------------------------
|
||||
# YAML (ansible)
|
||||
@@ -48,4 +55,54 @@ dict set lexers YML procRegexpCommand {regexp -nocase -all -- {^\s*?- (name):\s(
|
||||
dict set lexers YML varRegexpCommand {regexp -nocase -all -- {^(\s*?)([a-zA-Z0-9\-_$]+):\s+(.+?)(\s*$)} $line match indent varName varValue lineEnd}
|
||||
dict set lexers YML varRegexpCommandMultiline {regexp -all -line -- {^(\s*)(set_fact|vars):$} $line match indent keyWord}
|
||||
|
||||
#--------------------------------------------------
|
||||
# MD (markdown)
|
||||
dict set lexers MD tabSize 2
|
||||
dict set lexers MD procFindString {(#+?)\s*?PROCNAME}
|
||||
dict set lexers MD procRegexpCommand {regexp -nocase -all -- {^(#+?)\s(.+?)$} $line match keyWord procName}
|
||||
# dict set lexers YML varRegexpCommandMultiline {regexp -all -line -- {^(\s*)(set_fact|vars):$} $line match indent keyWord}
|
||||
|
||||
#--------------------------------------------------
|
||||
# Perl
|
||||
dict set lexers PL commentSymbol {#}
|
||||
dict set lexers PL variableSymbol {$}
|
||||
dict set lexers PL tabSize 4
|
||||
dict set lexers PL procFindString {(sub )\s*?PROCNAME}
|
||||
dict set lexers PL procRegexpCommand {regexp -nocase -all -- {^\s*?(sub)\s([a-zA-Z0-9\-_:]+?)($|\(.+?\))} $line match keyWord procName params}
|
||||
dict set lexers PL varRegexpCommand {regexp -nocase -all -- {^(\s*?)\$([a-zA-Z0-9\-_$]+)\s+=\s+(.+?)(\s*;$)} $line match indent varName varValue lineEnd}
|
||||
|
||||
#--------------------------------------------------
|
||||
# INI
|
||||
dict set lexers INI commentSymbol {#}
|
||||
dict set lexers INI tabSize 4
|
||||
dict set lexers INI procFindString {(\[)PROCNAME(\])}
|
||||
# dict set lexers INI procRegexpCommand {regexp -nocase -all -- {^\s*?(\[)([a-zA-Z0-9\-_:\s]+?)(\])$} $line match keyWord procName}
|
||||
dict set lexers INI procRegexpCommand {regexp -nocase -all -- {^\s*?(\[)(.+?)(\])$} $line match keyWord procName}
|
||||
|
||||
# -------------------------------------------------
|
||||
# HTML
|
||||
dict set lexers HTML commentSymbol {<!--}
|
||||
dict set lexers HTML commentMultilineSymbolBegin {<!--}
|
||||
dict set lexers HTML commentMultilineSymbolEnd {-->}
|
||||
dict set lexers HTML tabSize 4
|
||||
dict set lexers HTML procFindString {<h[0-9]>(<.+>|)PROCNAME(</.+>|)</h[0-9]>}
|
||||
dict set lexers HTML procRegexpCommand {regexp -nocase -all -- {<h[0-9]>(<.+>|)(.+?)(</.+>|)</h[0-9]>} $line match v1 procName v2}
|
||||
|
||||
# -------------------------------------------------
|
||||
# HTM
|
||||
dict set lexers HTM commentSymbol {<!--}
|
||||
dict set lexers HTM commentMultilineSymbolBegin {<!--}
|
||||
dict set lexers HTM commentMultilineSymbolEnd {-->}
|
||||
dict set lexers HTM tabSize 4
|
||||
dict set lexers HTM procFindString {<h[0-9]>(<.+>|)PROCNAME(</.+>|)</h[0-9]>}
|
||||
dict set lexers HTM procRegexpCommand {regexp -nocase -all -- {<h[0-9]>(<.+>|)(.+?)(</.+>|)</h[0-9]>} $line match v1 procName v2}
|
||||
|
||||
#--------------------------------------------------
|
||||
# LUA
|
||||
dict set lexers LUA commentSymbol {--}
|
||||
dict set lexers LUA procFindString {function\s*?PROCNAME}
|
||||
dict set lexers LUA procRegexpCommand {regexp -nocase -all -- {^(local|)\s*?(function)\s([a-zA-Z0-9\-_:]+?)\s+\((.+?)\)} $line match v1 keyWord procName params}
|
||||
dict set lexers LUA varRegexpCommand {regexp -nocase -all -- {^(\s*?)([a-zA-Z0-9\-_\.]+)\s+=\s+(.+?)(\s*$|--)} $line match indent varName varValue lineEnd}
|
||||
|
||||
# -------------------------------------------------
|
||||
dict set lexers ALL varDirectory {variables vars group_vars host_vars defaults}
|
||||
|
@@ -118,6 +118,8 @@ proc GetViewMenu {m} {
|
||||
-variable cfgVariables(procedureHelper) -onvalue true -offvalue false
|
||||
# -command "ViewHelper procedureHelper"
|
||||
|
||||
$m add checkbutton -label [::msgcat::mc "Multiline comments"] \
|
||||
-variable cfgVariables(multilineComments) -onvalue true -offvalue false
|
||||
}
|
||||
|
||||
proc GetHelpMenu {m} {
|
||||
|
@@ -32,6 +32,7 @@
|
||||
::msgcat::mcset ru "Comments" "Коментарии"
|
||||
::msgcat::mcset ru "Comment selected" "Закоментировать"
|
||||
::msgcat::mcset ru "Uncomment selected" "Раскоментировать"
|
||||
::msgcat::mcset ru "Clone repository" "Клонировать репозиторий"
|
||||
::msgcat::mcset ru "Column" "Столбец"
|
||||
::msgcat::mcset ru "Commit" "Коммита"
|
||||
::msgcat::mcset ru "Commit description" "Описание коммита"
|
||||
@@ -103,6 +104,7 @@
|
||||
::msgcat::mcset ru "Image dir" "Каталог изображений"
|
||||
::msgcat::mcset ru "Indent foreground" "Подсветка отступа"
|
||||
::msgcat::mcset ru "Indent background" "Подсветка отступа"
|
||||
::msgcat::mcset ru "Init repository" "Создать репозиторий"
|
||||
::msgcat::mcset ru "Insert" "Вставка"
|
||||
::msgcat::mcset ru "In" "В"
|
||||
::msgcat::mcset ru "Insert image" "Вставить изображение"
|
||||
@@ -122,6 +124,7 @@
|
||||
::msgcat::mcset ru "Matches" "Совпадений"
|
||||
::msgcat::mcset ru "Modules" "Модули"
|
||||
::msgcat::mcset ru "Modifying the Registry..." "Внесение изменений в реестр"
|
||||
::msgcat::mcset ru "Multiline comments" "Многострочные комментарии"
|
||||
::msgcat::mcset ru "Must be one file select!" "Вы должны выбрать только один файл"
|
||||
::msgcat::mcset ru "Must be one or two file select!" "Вы должны выбрать один или два файла"
|
||||
::msgcat::mcset ru "Network" "Сеть"
|
||||
|
@@ -187,16 +187,16 @@ proc YScrollCommand {txt canv} {
|
||||
$canv yview"
|
||||
}
|
||||
|
||||
proc ResetModifiedFlag {w} {
|
||||
global modified nbEditor
|
||||
proc ResetModifiedFlag {w nbEditor} {
|
||||
global modified
|
||||
$w.frmText.t edit modified false
|
||||
set modified($w) "false"
|
||||
set lbl [string trimleft [$nbEditor tab $w -text] "* "]
|
||||
# puts "ResetModifiedFlag: $lbl"
|
||||
$nbEditor tab $w -text $lbl
|
||||
}
|
||||
proc SetModifiedFlag {w} {
|
||||
global modified nbEditor
|
||||
proc SetModifiedFlag {w nbEditor} {
|
||||
global modified
|
||||
#$w.frmText.t edit modified false
|
||||
set modified($w) "true"
|
||||
set lbl [$nbEditor tab $w -text]
|
||||
@@ -229,12 +229,27 @@ proc ImageBase64Encode {} {
|
||||
}
|
||||
}
|
||||
proc FindImage {ext} {
|
||||
set imageType {
|
||||
PNG
|
||||
JPG
|
||||
JPEG
|
||||
WEBP
|
||||
GIF
|
||||
TIFF
|
||||
JP2
|
||||
ICO
|
||||
XPM
|
||||
SVG
|
||||
}
|
||||
foreach img [image names] {
|
||||
if [regexp -nocase -all -- "^($ext)(_)" $img match v1 v2] {
|
||||
if [regexp -nocase -all -- "^($ext)(_16x12)" $img match v1 v2] {
|
||||
# puts "\nFindinig images: $img \n"
|
||||
return $img
|
||||
}
|
||||
}
|
||||
if {[lsearch -exact -nocase $imageType $ext] != -1} {
|
||||
return image_16x12
|
||||
}
|
||||
}
|
||||
|
||||
namespace eval Help {
|
||||
|
@@ -141,6 +141,10 @@ proc ReadFilesFromDirectory {directory root {type ""}} {
|
||||
while {[gets $f line] >= 0} {
|
||||
if [regexp -nocase -all -- {^\s*inventory\s*=\s*(\.\/|)(.+?)$} $line match v1 fileName] {
|
||||
# puts "Inventory file is a: $line"
|
||||
if ![file exists [file join $root $directory $fileName]] {
|
||||
ShowMessage "Error in ansible.cfg" "Inventory File '[file join $root $directory $fileName]' does not exists"
|
||||
continue
|
||||
}
|
||||
if {[lsearch $project($root) [file join $root $directory $fileName]] eq "-1"} {
|
||||
lappend project($root) [file join $root $directory $fileName]
|
||||
set variables([file join $root $directory $fileName]) \
|
||||
|
12
lib/tree.tcl
12
lib/tree.tcl
@@ -31,6 +31,8 @@ namespace eval Tree {
|
||||
set findImg [::FindImage gitlab]
|
||||
} elseif {[string match {*bitbucket*} [string tolower $text]]} {
|
||||
set findImg [::FindImage bitbucket]
|
||||
} elseif {[string match {\.git*} [string tolower $text]]} {
|
||||
set findImg [::FindImage git]
|
||||
}
|
||||
if {$fileExt ne "" || $findImg ne ""} {
|
||||
set image $findImg
|
||||
@@ -47,6 +49,8 @@ namespace eval Tree {
|
||||
set image [::FindImage redhat]
|
||||
} elseif {[string match {*gitlab*} [string tolower [file tail $item]]]} {
|
||||
set image [::FindImage gitlab]
|
||||
} elseif {[string match {.git} [string tolower [file tail $item]]]} {
|
||||
set image [::FindImage git]
|
||||
} else {
|
||||
set image pixel
|
||||
}
|
||||
@@ -78,7 +82,7 @@ namespace eval Tree {
|
||||
set key [lindex [split $id "::"] 0]
|
||||
if {$values eq "" || $key eq ""} {return}
|
||||
|
||||
puts "$key $tree $values"
|
||||
# puts "$key $tree $values"
|
||||
switch $key {
|
||||
directory {
|
||||
FileOper::ReadFolder $values
|
||||
@@ -100,14 +104,14 @@ namespace eval Tree {
|
||||
set key [lindex [split $id "::"] 0]
|
||||
if {$values eq "" || $key eq ""} {return}
|
||||
|
||||
puts "$key $tree $values"
|
||||
# puts "$key $tree $values"
|
||||
switch -regexp $key {
|
||||
directory {
|
||||
FileOper::ReadFolder $values
|
||||
# $tree item $id -open false
|
||||
}
|
||||
file {
|
||||
set v [FileOper::Edit $values]
|
||||
set v [FileOper::Edit $values $nbEditor]
|
||||
if {$v eq false} {
|
||||
$tree delete $id
|
||||
}
|
||||
@@ -115,7 +119,7 @@ namespace eval Tree {
|
||||
}
|
||||
I[0-9]*? {
|
||||
destroy .findVariables
|
||||
FileOper::Edit [lindex $values 2]
|
||||
FileOper::Edit [lindex $values 2] $nbEditor
|
||||
}
|
||||
default {
|
||||
set parentItem [$tree parent $id]
|
||||
|
@@ -8,4 +8,4 @@ Type=Application
|
||||
StartupNotify=true
|
||||
MimeType=text/plain;
|
||||
Categories=Development;TextEditor;
|
||||
Icon=projman-48
|
||||
Icon=projman
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
108
projman.spec
108
projman.spec
@@ -1,108 +0,0 @@
|
||||
Name: projman
|
||||
Version: 0.4.5
|
||||
Release: rh1
|
||||
Summary: Tcl/Tk Project Manager
|
||||
License: GPL
|
||||
Group: Development/Tcl
|
||||
Url: https://bitbucket.org/svk28/projman
|
||||
BuildArch: noarch
|
||||
Source: %name-%version-%release.tar.gz
|
||||
Requires: tcl, tk, bwidget, tcl-img
|
||||
|
||||
%description
|
||||
This programm is Integrated Development Environment for Tcl/Tk language programming. Include - project manager, text and source editor with syntax highlightning, archive (tar.gz) and PRM builder and more.
|
||||
|
||||
%description -l ru_RU.UTF8
|
||||
Интегрированная среда для программирования на Tcl/Tk. Включает в себя - менеджер проектов, полнофункциональный редактор, систему навигации по файлам и структуре файлов и многое другое.
|
||||
|
||||
%prep
|
||||
%setup -n %name
|
||||
|
||||
%build
|
||||
|
||||
%install
|
||||
mkdir -p $RPM_BUILD_ROOT{%_bindir,%_datadir/%name/{img,msgs,/lib/highlight}}
|
||||
|
||||
install -p -m755 projman.tcl $RPM_BUILD_ROOT%_bindir/%name
|
||||
install -p -m644 *.tcl $RPM_BUILD_ROOT%_datadir/%name/
|
||||
install -p -m644 lib/highlight/*.tcl $RPM_BUILD_ROOT%_datadir/%name/highlight/
|
||||
install -p -m644 *.conf $RPM_BUILD_ROOT%_datadir/%name/
|
||||
install -p -m644 img/*.* $RPM_BUILD_ROOT%_datadir/%name/img/
|
||||
install -p -m644 msgs/*.* $RPM_BUILD_ROOT%_datadir/%name/msgs/
|
||||
|
||||
# Menu support
|
||||
#mkdir -p $RPM_BUILD_ROOT/usr/lib/menu
|
||||
#cat > $RPM_BUILD_ROOT%_libdir/menu/%name << EOF
|
||||
#?package(%name): needs=x11 icon="projman.png" section="Applications/Development/Development environments" title=ProjMan longtitle="Tcl/Tk Project Manager" command=projman
|
||||
#EOF
|
||||
#mdk icons
|
||||
#install -d $RPM_BUILD_ROOT{%_iconsdir,%_liconsdir,%_miconsdir}
|
||||
#install -p -m644 img/icons/%name.png $RPM_BUILD_ROOT%_iconsdir/
|
||||
#install -p -m644 img/icons/large/%name.png $RPM_BUILD_ROOT%_liconsdir/
|
||||
#install -p -m644 img/icons/mini/%name.png $RPM_BUILD_ROOT%_miconsdir/
|
||||
|
||||
%post
|
||||
%update_menus
|
||||
|
||||
%postun
|
||||
%clean_menus
|
||||
|
||||
%files
|
||||
%doc INSTALL CHANGELOG TODO COPYING README THANKS
|
||||
%doc hlp/ru/*
|
||||
%_bindir/%name
|
||||
%_datadir/%name
|
||||
#%_libdir/menu/%name
|
||||
#%_iconsdir/%name.png
|
||||
#%_liconsdir/%name.png
|
||||
#%_miconsdir/%name.png
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Feb 16 2018 Sergey Kalinin <banzaj@altlinux.ru> 0.4.5
|
||||
- Added saving main window geometry into projman.conf file when close programm
|
||||
- Fixed AutoComplite precedure for TCL/TK-projects
|
||||
- Added colored icon for main window
|
||||
- Fixed "Close all" procedure if opened files from projects and file browser
|
||||
- Fixed parsing some procedure name like ::proc::name or proc_na::me(aa) and parameters {{} {} {}}
|
||||
- Added opening last active project when project run
|
||||
- Fixed Windows OS running without installation
|
||||
- Added gray theme
|
||||
- Fixed work with file from directory (FileBrowser function).
|
||||
- Auto indent added for () [] braces
|
||||
- File Browser added. Now we will edited any file without project
|
||||
- Tcl, Perl, PHP highlight comment procedure fixed
|
||||
- Help file Text.html utf-8 encoding
|
||||
- Change hotkeys "Control+," "Control+." "Control+/" (commect selected, uncoment selected, select all)
|
||||
- Add new function Comments/Uncomment selected text
|
||||
- Added binding mouse button: click on notebook tab highlight opened file name in tree
|
||||
- Change "Paste from Clipboard" function
|
||||
- Change popup editor menu (undo, redo, copy, paste, cut functions)
|
||||
- Change Logo and About dialog
|
||||
- Russian help files was conerting into utf-8 encode
|
||||
- Change help file load procedure
|
||||
- Fixed paste text highlight
|
||||
- Fixed setting edited flag when paste the text from buffer
|
||||
- Remove ctags support
|
||||
- Added gitk (gui for git) support
|
||||
- Changes color setting dialog into "Setting"
|
||||
- Actualizing information into "About" dialog
|
||||
- Corrected color settings for all widgets
|
||||
- Change default color scheme
|
||||
- Remove ctag, change autocomplitt procedure
|
||||
|
||||
* Wed Feb 13 2008 Sergey Kalinin <banzaj@altlinux.ru> 0.3.8-alt1
|
||||
- Added text encoding support from koi8-r,cpp1251,cp866 to UTF-8
|
||||
|
||||
* Tue Feb 20 2007 Sergey Kalinin <banzaj@altlinux.ru> 0.3.7-alt4
|
||||
- Fixed setiings dialog
|
||||
- Fixed saved settings parameter
|
||||
|
||||
* Wed Oct 18 2006 Sergey Kalinin <banzaj@altlinux.ru> 0.3.7-alt3
|
||||
- Remove SuperText widget now use native TEXT
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
27
projman.tcl
27
projman.tcl
@@ -9,8 +9,8 @@ exec wish "$0" -- "$@"
|
||||
# Home page: https://nuk-svk.ru
|
||||
######################################################
|
||||
# Version: 2.0.0
|
||||
# Release: alpha
|
||||
# Build: 25112022080815
|
||||
# Release: alpha16
|
||||
# Build: 22082024151054
|
||||
######################################################
|
||||
|
||||
# определим текущую версию, релиз и т.д.
|
||||
@@ -34,12 +34,6 @@ while {[gets $f line] >=0} {
|
||||
}
|
||||
close $f
|
||||
|
||||
if { $::argc > 0 } {
|
||||
foreach arg $::argv {
|
||||
lappend opened $arg
|
||||
}
|
||||
puts $opened
|
||||
}
|
||||
|
||||
package require msgcat
|
||||
package require inifile
|
||||
@@ -53,6 +47,15 @@ package require fileutil::magic::filetype
|
||||
set dir(root) [pwd]
|
||||
set dir(doc) [file join $dir(root) doc]
|
||||
|
||||
# ДОбавляем в список файлы (каталоги) из командной строки
|
||||
if { $::argc > 0 } {
|
||||
foreach arg $::argv {
|
||||
lappend opened $arg
|
||||
}
|
||||
puts $opened
|
||||
}
|
||||
|
||||
|
||||
# Устанавливаем рабочий каталог, если его нет то создаём.
|
||||
# Согласно спецификации XDG проверяем наличие переменных и каталогов
|
||||
if [info exists env(XDG_CONFIG_HOME)] {
|
||||
@@ -111,11 +114,10 @@ source [file join $dir(lib) gui.tcl]
|
||||
|
||||
# Open the PATH if command line argument has been setting
|
||||
if [info exists opened] {
|
||||
# puts ">$opened"
|
||||
foreach path $opened {
|
||||
# Приводим путь к полному виду
|
||||
if {[file pathtype $path] ne "absolute"} {
|
||||
puts "\n\t[::msgcat::mc "Specify the absolute path to the directory or file"]: $path\n"
|
||||
exit
|
||||
set path [file normalize $path]
|
||||
}
|
||||
if [file isdirectory $path] {
|
||||
# set activeProject $path
|
||||
@@ -125,7 +127,8 @@ if [info exists opened] {
|
||||
FileOper::ReadFolder $path
|
||||
ReadFilesFromDirectory $path $path
|
||||
} elseif [file exists $path] {
|
||||
ResetModifiedFlag [FileOper::Edit $path]
|
||||
# ResetModifiedFlag [FileOper::Edit $path]
|
||||
FileOper::Edit $path
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
42
redhat/build-rpm.sh
Executable file
42
redhat/build-rpm.sh
Executable file
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
RPM_BUILD_DIR=${HOME}/rpmbuild
|
||||
|
||||
mkdir -p ${RPM_BUILD_DIR}/{SOURCES,RPMS,SRPMS,SPECS,RPMS/noarch}
|
||||
|
||||
cd ../
|
||||
|
||||
VERSION=$(grep "Version" projman.tcl | grep -oE '\b[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}\b')
|
||||
RELEASE=$(grep "# Release" projman.tcl | grep -oE '[0-9A-Za-z]+$')
|
||||
BUILD_DATE=$(date +%d%m%Y%H%M%S)
|
||||
TXT="# Build: ${BUILD_DATE}"
|
||||
|
||||
sed -i "/# Build:.*/c$TXT" projman.tcl
|
||||
|
||||
cp projman.tcl projman
|
||||
|
||||
sed -i "s+^set\ dir(lib)+set\ dir(lib)\ /usr/share/projman/lib ;#+g" projman
|
||||
sed -i "s+\[pwd\]+/usr/share/projman+g" projman
|
||||
|
||||
CUR_DIR=$(pwd)
|
||||
|
||||
cd ../
|
||||
|
||||
tar --exclude='.git' --exclude='debian' --exclude='redhat' --exclude='projman.tcl' -czf ${RPM_BUILD_DIR}/SOURCES/projman-${VERSION}-${RELEASE}.tar.gz projman
|
||||
|
||||
cd ${CUR_DIR}
|
||||
|
||||
cp redhat/projman.spec ${RPM_BUILD_DIR}/SPECS/projman.spec
|
||||
|
||||
sed -i "s/.*Version:.*/Version:\t${VERSION}/" ${RPM_BUILD_DIR}/SPECS/projman.spec
|
||||
sed -i "s/.*Release:.*/Release:\t${RELEASE}/" ${RPM_BUILD_DIR}/SPECS/projman.spec
|
||||
|
||||
rpmbuild -ba "${RPM_BUILD_DIR}/SPECS/projman.spec"
|
||||
|
||||
# cp ${RPM_BUILD_DIR}/RPMS/noarch/projman-${VERSION}-${RELEASE}.noarch.rpm /files/
|
||||
# cp ${RPM_BUILD_DIR}/SRPMS/projman-${VERSION}-${RELEASE}.src.rpm /files/
|
||||
|
||||
rm -v projman
|
||||
rm -r -v ${RPM_BUILD_DIR}/SPECS/projman.spec
|
||||
rm -r -v ${RPM_BUILD_DIR}/SOURCES/projman-${VERSION}-${RELEASE}.tar.gz
|
||||
rm -r -v ${RPM_BUILD_DIR}/BUILD/projman
|
55
redhat/projman.spec
Normal file
55
redhat/projman.spec
Normal file
@@ -0,0 +1,55 @@
|
||||
Name: projman
|
||||
Version: 2.0.0
|
||||
Release: rh1
|
||||
Summary: Tcl/Tk Project Manager
|
||||
License: GPL
|
||||
Group: Development/Tcl
|
||||
Url: https://nuk-svk.ru
|
||||
BuildArch: noarch
|
||||
Source: %name-%version-%release.tar.gz
|
||||
Requires: tcl, tk, tklib, tcllib
|
||||
|
||||
%description
|
||||
This a editor for programming in TCL/Tk (and other language). It includes a file manager, a source editor with syntax highlighting and code navigation, a context-sensitive help system, Git support, and much more.
|
||||
|
||||
%description -l ru_RU.UTF8
|
||||
Интегрированная среда для программирования на Tcl/Tk. Включает в себя - менеджер проектов, полнофункциональный редактор, систему навигации по файлам и структуре файлов и многое другое.
|
||||
|
||||
%prep
|
||||
%setup -n %name
|
||||
|
||||
%build
|
||||
|
||||
%install
|
||||
mkdir -p $RPM_BUILD_ROOT%_bindir
|
||||
mkdir -p $RPM_BUILD_ROOT%_datadir/%name/lib/msgs
|
||||
mkdir -p $RPM_BUILD_ROOT%_datadir/%name/theme
|
||||
mkdir -p $RPM_BUILD_ROOT%{_datarootdir}/applications
|
||||
|
||||
install -p -m755 projman $RPM_BUILD_ROOT%_bindir/%name
|
||||
install -p -m755 tkregexp.tcl $RPM_BUILD_ROOT%_bindir/tkregexp
|
||||
|
||||
# install -p -m644 *.tcl $RPM_BUILD_ROOT%_datadir/%name/
|
||||
install -p -m644 lib/*.tcl $RPM_BUILD_ROOT%_datadir/%name/lib/
|
||||
install -p -m644 lib/msgs/*.* $RPM_BUILD_ROOT%_datadir/%name/lib/msgs/
|
||||
install -p -m644 theme/*.tcl $RPM_BUILD_ROOT%_datadir/%name/theme
|
||||
install -p -m644 projman.desktop $RPM_BUILD_ROOT%{_datarootdir}/applications
|
||||
|
||||
%post
|
||||
%update_menus
|
||||
|
||||
%postun
|
||||
%clean_menus
|
||||
|
||||
%files
|
||||
%doc INSTALL CHANGELOG TODO LICENSE README.md
|
||||
%_bindir/%name
|
||||
%_bindir/tkregexp
|
||||
%_datarootdir/applications/%name.desktop
|
||||
%_datadir/%name
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Nov 28 2022 Sergey Kalinin <svk@nuk-svk.ru> 2.0.0
|
||||
- Initial release
|
||||
|
Reference in New Issue
Block a user