Compare commits
	
		
			102 Commits
		
	
	
		
			cb6cefd8ac
			...
			tcltk9.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| df1d9aa36d | |||
| cff798a9f1 | |||
| 64287f1a01 | |||
| 5e1c057bc5 | |||
| ab740f0be8 | |||
| 4c6713b2d3 | |||
| dc5fd60c0d | |||
| c3848566df | |||
| 961d597032 | |||
| 5d70d508cd | |||
| 8619e3e1f4 | |||
| 8834c0954e | |||
| 4e67dbfccf | |||
| e5b0468a44 | |||
| a9ac54ce54 | |||
| 297d0f7420 | |||
| 9b083515ba | |||
| 722bbc4e30 | |||
| bdb9b2db00 | |||
| 22bdd7b87e | |||
| 430f7d6607 | |||
| 
						 | 
					f54333f942 | ||
| 
						 | 
					f6a1b440f7 | ||
| 
						 | 
					9b69e94412 | ||
| 
						 | 
					8a1145a2d9 | ||
| 
						 | 
					a78ab384ad | ||
| 
						 | 
					b04e62434a | ||
| 
						 | 
					439993091f | ||
| 
						 | 
					7524a58f26 | ||
| 
						 | 
					a6a220eb5a | ||
| 53869b8fe4 | |||
| 6854093ee1 | |||
| 202f8d3d82 | |||
| 7afdd33c58 | |||
| 74e288d596 | |||
| 17636c13e3 | |||
| 7d0c5796e5 | |||
| 79c2e6f1dc | |||
| 2024aa86ba | |||
| cb5c21c077 | |||
| 6b5d116743 | |||
| 6fc78c75b3 | |||
| 4a3394183f | |||
| 
						 | 
					e1db775b3b | ||
| 
						 | 
					42349a4701 | ||
| 
						 | 
					f6bbc530bb | ||
| 
						 | 
					c9e804b614 | ||
| 
						 | 
					4bf10a1d30 | ||
| 
						 | 
					f68cd75600 | ||
| 9ad7523e7c | |||
| ea988f6b8d | |||
| 23de123a0b | |||
| b287ee5551 | |||
| dc9837b7c2 | |||
| 2caba8db1a | |||
| 299638b1f8 | |||
| 56e7168d8e | |||
| b0a3292d9f | |||
| 93dd90e355 | |||
| aff70dd8b7 | |||
| dea2ff0023 | |||
| 6361043c25 | |||
| 4f8e7e306d | |||
| b42977f416 | |||
| 78c5f3784b | |||
| 65c4213836 | |||
| 993c1f7e3e | |||
| 29bdac41fe | |||
| ad3aac9b4b | |||
| 2e36bbc100 | |||
| 190ec5200f | |||
| b495161d81 | |||
| faeeef6048 | |||
| 8e496cb6bd | |||
| cfb29d6038 | |||
| 6051f6821a | |||
| 
						 | 
					6f99707fd7 | ||
| 
						 | 
					d17aef0878 | ||
| 
						 | 
					397117e770 | ||
| 
						 | 
					09d8a06f9e | ||
| 72abc2b84f | |||
| 8bd48159d6 | |||
| 61f2bca699 | |||
| 55fe5c3023 | |||
| d04d419548 | |||
| bc56f02a35 | |||
| 791a4c59a3 | |||
| f21e750967 | |||
| 
						 | 
					3ee60f48c3 | ||
| 
						 | 
					496514649a | ||
| 336a05cd61 | |||
| 
						 | 
					06c6205177 | ||
| 
						 | 
					6180a35718 | ||
| 0b92e4a1f0 | |||
| 87ae490b94 | |||
| 
						 | 
					005f832b7a | ||
| 
						 | 
					9b2477c954 | ||
| 
						 | 
					2328090962 | ||
| 
						 | 
					9d86d26b2b | ||
| 
						 | 
					a7af815ce4 | ||
| 
						 | 
					b6afcc4c5f | ||
| 
						 | 
					8de8ec16be | 
							
								
								
									
										25
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								.drone.yml
									
									
									
									
									
								
							@@ -1,25 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
kind: pipeline
 | 
					 | 
				
			||||||
type: exec
 | 
					 | 
				
			||||||
name: default
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
platform:
 | 
					 | 
				
			||||||
  os: linux
 | 
					 | 
				
			||||||
  arch: amd64
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
steps:
 | 
					 | 
				
			||||||
- name: build DEB
 | 
					 | 
				
			||||||
  commands:
 | 
					 | 
				
			||||||
  - cd debian
 | 
					 | 
				
			||||||
  - ./build-deb-projman.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- name: build RPM
 | 
					 | 
				
			||||||
  commands:
 | 
					 | 
				
			||||||
  - cd ../redhat
 | 
					 | 
				
			||||||
  - ./build-rpm.sh
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
trigger:
 | 
					 | 
				
			||||||
  event:
 | 
					 | 
				
			||||||
    include:
 | 
					 | 
				
			||||||
    - push
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
							
								
								
									
										17
									
								
								.gitea/workflows/build.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								.gitea/workflows/build.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					name: Gitea Actions Demo
 | 
				
			||||||
 | 
					run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
 | 
				
			||||||
 | 
					on: [push]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  Explore-Gitea-Actions:
 | 
				
			||||||
 | 
					    runs-on: tcl-tk-builder
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Build the packages
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          git clone ${{ vars.main_url }}${{ gitea.repository }}
 | 
				
			||||||
 | 
					          pwd
 | 
				
			||||||
 | 
					          cd projman/debian
 | 
				
			||||||
 | 
					          ./build-deb-projman.sh
 | 
				
			||||||
 | 
					          cd ../../
 | 
				
			||||||
 | 
					          curl --user ${{ vars.user}}:${{vars.api_token}} --upload-file "$(ls -1| grep projman | grep -E 'deb$')" ${{vars.main_url}}api/packages/${{vars.user}}/debian/pool/bookworm/main/upload
 | 
				
			||||||
 | 
					      - run: echo "This job's status is ${{ job.status }}."
 | 
				
			||||||
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -4,3 +4,7 @@ debian/update-desktop-database
 | 
				
			|||||||
debian/projman.substvars
 | 
					debian/projman.substvars
 | 
				
			||||||
debian/files
 | 
					debian/files
 | 
				
			||||||
debian/projman.debhelper.log
 | 
					debian/projman.debhelper.log
 | 
				
			||||||
 | 
					debian/*.tmp
 | 
				
			||||||
 | 
					debian/errors
 | 
				
			||||||
 | 
					*.tmp
 | 
				
			||||||
 | 
					errors
 | 
				
			||||||
							
								
								
									
										444
									
								
								CHANGELOG
									
									
									
									
									
								
							
							
						
						
									
										444
									
								
								CHANGELOG
									
									
									
									
									
								
							@@ -1,136 +1,350 @@
 | 
				
			|||||||
######################################################
 | 
					projman (2.0.0-alfa16)
 | 
				
			||||||
#	Tcl/Tk Project manager 2.0
 | 
					 | 
				
			||||||
#	Distributed under GNU Public License
 | 
					 | 
				
			||||||
# Author: Sergey Kalinin svk@nuk-svl.ru
 | 
					 | 
				
			||||||
# Home page: https://nuk-svk.ru
 | 
					 | 
				
			||||||
######################################################
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
20/06/2022
 | 
					Sergey Kalinin <svk@nuk-svk.ru>  Thu, 22 Aug 2024 15:09:19 +0300
 | 
				
			||||||
    - Beginning the project
 | 
					  -  changelog-gen.tcl: Добавлена генерация текстового журнала изменений
 | 
				
			||||||
 | 
					  -  build-deb-projman.sh: добавлена генерация changelog  из  git log
 | 
				
			||||||
 | 
					  -  changelog-gen.tcl: Вывод в файл вынесен в отдельную процедуру
 | 
				
			||||||
 | 
					  -  changelog-gen.tcl: Добавлено создание резервной копии выходного файла. Исправлен вывод в файл.
 | 
				
			||||||
 | 
					  -  changelog-gen.tcl: Добавлены опции командной строки
 | 
				
			||||||
 | 
					  -  Добавлен запуск changelog-gen при сборке пакета
 | 
				
			||||||
 | 
					  -  Добавлено чстение журнала начиная с определенной даты
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					
 | 
				
			||||||
13/07/2022
 | 
					Sergey Kalinin <svkalinin@samsonpost.ru>  Tue, 20 Aug 2024 13:30:43 +0300
 | 
				
			||||||
    - Added open file dialog
 | 
					  -  Генерация списка изменений для debian приведена к корректному виду
 | 
				
			||||||
    - Added open folder dialog
 | 
					  -  Генерация списка изменений для debian приведена к корректному виду
 | 
				
			||||||
    - Added save file function
 | 
					  -  Исправлен фокус при создании нового файла. #3
 | 
				
			||||||
    - Added a command line argument support (open file(s) or folder(s))
 | 
					 | 
				
			||||||
    - Added TCL and BASH highlite
 | 
					 | 
				
			||||||
    - Added a configuration file (progman.ini) and a procedure for reading/saving them
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
14/07/2022
 | 
					Калинин Сергей Валерьевич <svkalinin@samsonpost.ru>  Wed, 17 Jul 2024 12:28:30 +0300
 | 
				
			||||||
    - Added On/Off viewing toolbar
 | 
					  -  Исправлена неправильная замена выражение при поиске
 | 
				
			||||||
    - Added On/Off viewing line numbers bar
 | 
					  -  Исправлена неправильная замена выражение при поиске
 | 
				
			||||||
    - Added a Comment/Uncomment text support
 | 
					  -  Реализовал базовые функции генератора журнала изменений
 | 
				
			||||||
    - Added text auto format
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
15/07/2022
 | 
					svk <svkalinin@samsonpost.ru>  Mon, 24 Jun 2024 10:15:38 +0300
 | 
				
			||||||
    - Added a close file (tab) function with Ctrl+w
 | 
					  -  Добавлена иконка для jinja template
 | 
				
			||||||
    - Added a insert/remove the tabspace
 | 
					  -  Исправил остатки слияния веток
 | 
				
			||||||
    - Fixed comment/uncomment selected text
 | 
					  -  Исправлено некорректное определение типа файла при открытии.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
20/07/2022
 | 
					 <svk@nuk-svk.ru>  Mon, 30 Oct 2023 09:46:02 +0300
 | 
				
			||||||
    - Fixed indent text
 | 
					  -  Gitea actions add
 | 
				
			||||||
    - Fixed insert " and '
 | 
					 | 
				
			||||||
    - Added a main window geometry option into config, and autosave current geometry
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
21/07/2022
 | 
					svk <svkalinin@samsonpost.ru>  Thu, 27 Jul 2023 13:04:32 +0300
 | 
				
			||||||
    - Added Save file dialog before tab was closed
 | 
					  -  Merge branch 'master' of https://git.nuk-svk.ru/svk/projman
 | 
				
			||||||
    - Added Save file dialog when exiting, if file was modify
 | 
					  -  Исправил открытие файлов с разными путями (~/ ./ ../)
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
22/07/2022
 | 
					 | 
				
			||||||
    - Added GO highlight
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
27/07/2022
 | 
					 | 
				
			||||||
    - Fixed comment/uncomment procedure (last line in selected text)
 | 
					 | 
				
			||||||
    - Fixed error with save new (untitled) file
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
01/08/2022
 | 
					svkalinin <svk@nuk-svk.ru>  Thu, 23 Feb 2023 13:46:56 +0300
 | 
				
			||||||
    - Added inserting base64 encoded image
 | 
					  -  Добавил изображений программы
 | 
				
			||||||
    - Added read the file structure and inserting into tree
 | 
					 | 
				
			||||||
    - Added GUI font, and GUI foreground color setting
 | 
					 | 
				
			||||||
    - Added tcl and go files images
 | 
					 | 
				
			||||||
    - Added image for file type (extention)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
03/08/2022
 | 
					svk <svkalinin@samsonpost.ru>  Mon,  6 Feb 2023 09:27:38 +0300
 | 
				
			||||||
    - Added some files icon
 | 
					  -  Исправлена ошибка при создании нового файла.
 | 
				
			||||||
    - Fix finded procedure (function) (tree click)
 | 
					 | 
				
			||||||
    - Fix showing position in statusbar 
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
12/08/2022
 | 
					svk <svkalinin@samsonpost.ru>  Wed, 21 Dec 2022 16:53:44 +0300
 | 
				
			||||||
    - Fixed comment/uncomment procedure depending on the file type
 | 
					  -  Добавил пиктограммы файлов
 | 
				
			||||||
    - Added About dialog
 | 
					  -  Исправил процедуру Files::CloseAll ('Закрыть всё')
 | 
				
			||||||
    - Fixed read structure (procedure names like Proc:Name)
 | 
					  -  Добавлена поддержка Lua
 | 
				
			||||||
    
 | 
					  -  Исправлена процедура (рас)комментирования
 | 
				
			||||||
15/08/2022
 | 
					  -  Исправил ошибку при выходе в процедуре (Congig::Write)
 | 
				
			||||||
    - Added open/close braces highlight
 | 
					  -  Добавил раскраски в ruby
 | 
				
			||||||
    - Fixed GO structure reader
 | 
					  -  Добавлена возможность многострочных комментариев
 | 
				
			||||||
 | 
					  -  В Ruby lexer добавлен поиск переменных коде.
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Немного почистил. Добавлен поиск переменных по питоньим исходникам (lexer)
 | 
				
			||||||
 | 
					  -  Еще одно исправление подсветки для INI
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Исправлене подсветки комментариев в INI
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Изменения в подсветке для INI
 | 
				
			||||||
 | 
					  -  Добавил подсветку для Desktop и Spec  файлов
 | 
				
			||||||
 | 
					  -  Добавил вывод отладочной инфы в процедуру
 | 
				
			||||||
 | 
					  -  Исправил подсветку комментариев в TCL
 | 
				
			||||||
 | 
					  -  Оптимизация процедур
 | 
				
			||||||
 | 
					  -  Добавлена подсветка и навигация по HTML. Исправлена подсветка XML
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Добавил иконку для изображений
 | 
				
			||||||
 | 
					  -  Добавил иконки для perl
 | 
				
			||||||
 | 
					  -  Исправлена подсветка и навигация по коду для Ruby
 | 
				
			||||||
 | 
					  -  Обновил список изменений
 | 
				
			||||||
 | 
					  -  Исправлено сохранение сессии в редакторе (открытие папки и файлов при следующем запуске)
 | 
				
			||||||
 | 
					  -  Добавлена новая секция UserSession
 | 
				
			||||||
 | 
					  -  Исправление ошибки при открытии файла
 | 
				
			||||||
 | 
					  -  Добавлена поддержка INI-файлов (подсветка
 | 
				
			||||||
 | 
					  -  Добавлена поддержка perl
 | 
				
			||||||
 | 
					  -  Добавил икогнку для файлов git
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Добавлены иконуи для ключей и сертификатов. Изменен поиск иконки (вощзвращает теерь с размером)
 | 
				
			||||||
 | 
					  -  Новая чборка
 | 
				
			||||||
 | 
					  -  Реализован двухпанельный режим работы (вертиикальное разделение)
 | 
				
			||||||
 | 
					  -  ДОбавил сборку в drone
 | 
				
			||||||
 | 
					  -  Исправлена  ошибка при открытии ansible.cfg
 | 
				
			||||||
 | 
					  -  Добавил деактивацию кнопки 'Создать репу' если не выбран активный проект (не открыто ни одного каталога/папки)
 | 
				
			||||||
 | 
					  -  Добавлены команды git init и git config (зачаток). Изменен диалог клонирования репозитория (добавлена кнопка Создать репозиторий)
 | 
				
			||||||
 | 
					  -  Исправил ошибку git при открытии файла или каталога если репозиторий не инициализирован (нет .git  каталога внутри проекта)
 | 
				
			||||||
 | 
					  -  Переименовал файл
 | 
				
			||||||
 | 
					  -  Добавил скриты сборки rpm
 | 
				
			||||||
 | 
					  -  Добавлено обрамление выделенного текста прии нажатии '_' в markdown
 | 
				
			||||||
 | 
					  -  Исправление подсветки
 | 
				
			||||||
 | 
					  -  Добавлена поддержка markdown (подсветка
 | 
				
			||||||
 | 
					  -  Обновил описание
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Исправлена ошибка с закрытием файлов в редакторе при закрытии папки
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Переделана процедура определения активного проекта. Исправлено определение ветки git. Теперь можно нормально работать в двух и более открытых проектах (каталогах/папках)
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Доделан вид диалога поиска по файлам
 | 
				
			||||||
 | 
					  -  Исправлен поиск имени функции
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Добавлен диалог клонирования репозитория
 | 
				
			||||||
 | 
					  -  Добавил разделитель
 | 
				
			||||||
 | 
					  -  Исправлено переключение вкладок при закрытии
 | 
				
			||||||
 | 
					  -  Исправлено закрытиие вкладки Git  по нажатию соотв. кнопки в панели инструментов
 | 
				
			||||||
 | 
					  -  Добавлен пункт 'Закрыть всё'
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Исправлено соответствие открытого файла в редакторе и выделение этого файла в дереве
 | 
				
			||||||
 | 
					  -  Исправлено переключение отображения панели (лево/право) в без перезапуска программы.
 | 
				
			||||||
 | 
					  -  Украшательства интерфейса - Реакция на нажатие кнопки в панели инструментов теперь зависит от контекста
 | 
				
			||||||
 | 
					  -  Добавлено включение отключение отображения Меню
 | 
				
			||||||
 | 
					  -  Добавлено копирование текущей строки в буфер по Atl+Y
 | 
				
			||||||
 | 
					  -  Исправлена ошибка с отображением файловой панели
 | 
				
			||||||
 | 
					  -  Добавлены и исправлены функции отображения меню
 | 
				
			||||||
 | 
					  -  Фикс
 | 
				
			||||||
 | 
					  -  Добавлен параметр statusBarShow - показ строки статуса
 | 
				
			||||||
 | 
					  -  Добавлены переводы
 | 
				
			||||||
 | 
					  -  Добавлена проверка параметров вызова файл или просто строка
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Добавлен вывод сообщений об ошибке в диалоге
 | 
				
			||||||
 | 
					  -  Добавлено обновления списка файлов в дереве
 | 
				
			||||||
 | 
					  -  Добавлена процедура вывода информационного сообщения
 | 
				
			||||||
 | 
					  -  Добавлена команда Git::Reset (git reset _file_) на кнопке в диалоге. Для отмены 'git add'
 | 
				
			||||||
 | 
					  -  Добавлена кнопка Обновление в диалог работы с Git
 | 
				
			||||||
 | 
					  -  Исправление процедуры поиска наименования функции
 | 
				
			||||||
 | 
					  -  Фиксы диалога работы с Git (работа с выделенными файлами в списках)
 | 
				
			||||||
 | 
					  -  Фиксы и тесты работы с git
 | 
				
			||||||
 | 
					  -  Исправление выборанескольких файлов в диалоге Git
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Украшательства
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Исправление рег. выражения чтения файлов командой git status
 | 
				
			||||||
 | 
					  -  Настройки темы
 | 
				
			||||||
 | 
					  -  Исправлено рег. выпражение определения mime типа файла
 | 
				
			||||||
 | 
					  -  Ntvs
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Добавил очистку текстовых полей при добавлении файлов в коммит
 | 
				
			||||||
 | 
					  -  Исправрелдение Git::Commit (индексация всех файлов в проекте)
 | 
				
			||||||
 | 
					  -  Изменения
 | 
				
			||||||
 | 
					  -  Исправления глюков
 | 
				
			||||||
 | 
					  -  Украшательства строки статуса
 | 
				
			||||||
 | 
					  -  Добавлен просмотрщик изображений
 | 
				
			||||||
 | 
					  -  Добавил рамку кону ввода номера
 | 
				
			||||||
 | 
					  -  Добавлен диалог перехода по номеру строки Ctrl-G
 | 
				
			||||||
 | 
					  -  Добавлено определение типа файла
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Добавил удаление артефактов сборки пакета
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Добавлена подсветка имен файлов в выводе git show
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Допилдивание процедуры автоввода имен переменных
 | 
				
			||||||
 | 
					  -  Небольшие правки в подсказках по переменным
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Исправлена подсветка SHELL переменных а YAML файлах (ansible
 | 
				
			||||||
 | 
					  -  Новая сборка. Добавлена подсказка по переменным при вводе.
 | 
				
			||||||
 | 
					  -  Добавлено определение символа переменной
 | 
				
			||||||
 | 
					  -  Определение коррректного положения встроенного окна
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Добавлен вывод подсказки при вводе переменных
 | 
				
			||||||
 | 
					  -  Добавлены опции для включсения полджсказок по переменным и процедурам
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Исправления гуя
 | 
				
			||||||
 | 
					  -  Добавил диалог создания и переключения git-веток
 | 
				
			||||||
 | 
					  -  Создание ветки
 | 
				
			||||||
 | 
					  -  Новые иконки
 | 
				
			||||||
 | 
					  -  Косметические изменения
 | 
				
			||||||
 | 
					  -  Починил push
 | 
				
			||||||
 | 
					  -  Добавлены новые иконки
 | 
				
			||||||
 | 
					  -  Обработка ошибок
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Исправлена ошибка при клике на списке с файлами
 | 
				
			||||||
 | 
					  -  New build
 | 
				
			||||||
 | 
					  -  Сделал просмотр изменений из истории
 | 
				
			||||||
 | 
					  -  Добавлено обновление лога изменений
 | 
				
			||||||
 | 
					  -  Новый билд
 | 
				
			||||||
 | 
					  -  Исправление обновления диалога
 | 
				
			||||||
 | 
					  -  Добавлен перевод
 | 
				
			||||||
 | 
					  -  git reflog
 | 
				
			||||||
 | 
					  -  Добавлен интерфейс работы с Git
 | 
				
			||||||
 | 
					  -  Новый релиз
 | 
				
			||||||
 | 
					  -  Исправил ошибку если нет изменений
 | 
				
			||||||
 | 
					  -  Начало работ по поддержке git
 | 
				
			||||||
 | 
					  -  New build
 | 
				
			||||||
 | 
					  -  Bug fix
 | 
				
			||||||
 | 
					  -  Добавлен диалог поиска строки в файлах в текущем каталоге. Используется 'grep -r'.
 | 
				
			||||||
 | 
					  -  Добавлены настройки для системной команды поиска в фвайлах
 | 
				
			||||||
 | 
					  -  Добавлено рекурсивное чтение каталога при открытии. Диалог поиска теперь работает раздельно при разделении окна. Диалог навигации по функци так-же работает раздельно
 | 
				
			||||||
 | 
					  -  Добавлены ключевые слова для подстветки питона
 | 
				
			||||||
 | 
					  -  Добавлена проверка на отсутствие файла и удаление из дерева
 | 
				
			||||||
 | 
					
 | 
				
			||||||
16/08/2022
 | 
					svkalinin <svk@nuk-svk.ru>  Sun, 18 Sep 2022 10:46:59 +0300
 | 
				
			||||||
    - Added selection of all words in the text by clicking on the any word
 | 
					  -  Добавлен поиск переменной в тексте после открытия файла где она указана
 | 
				
			||||||
    
 | 
					  -  Исправлена ошибка при запуске
 | 
				
			||||||
17/08/2022
 | 
					 | 
				
			||||||
    - Added "Vew Panel" menu and "Panel side" (left/right)
 | 
					 | 
				
			||||||
    - Changed standard Tk menu on TTK::menu
 | 
					 | 
				
			||||||
    - Added config options filesPanelPlace (left/right)
 | 
					 | 
				
			||||||
    - Fixed ViewFilesTree procedure with rigth variable filesPanelShow (true/false)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
22/08/2022
 | 
					Sergey Kalinin <svkalinin@samsonpost.ru>  Fri, 16 Sep 2022 16:37:17 +0300
 | 
				
			||||||
    - Fixed clicking on proc or func names into tree if file was closed
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Исправил сохранение открытого каталога в настройках
 | 
				
			||||||
 | 
					  -  Рефакторинг
 | 
				
			||||||
 | 
					  -  Переделал дилог навигации по переменным
 | 
				
			||||||
 | 
					  -  Добавлен еще один каталог с переменными - default
 | 
				
			||||||
 | 
					  -  Добавлено сохранение состояния редактора (открытые каталоги
 | 
				
			||||||
 | 
					  -  Изменения в диалоге поиска
 | 
				
			||||||
 | 
					  -  Отображение горизонтальной полосы прокрутки в зависимости от переноса строк в редакторе
 | 
				
			||||||
 | 
					  -  Установка фокуса на текст в редакторе при щелчке на заголовок вкладки
 | 
				
			||||||
 | 
					  -  Сделал перемещение курсора в такуюже позицию в тексте при разделении окна редактора
 | 
				
			||||||
 | 
					  -  Добавлено горизонтальное разделение окна редактора. Исправлено удаление строки по Alt+R - реперь строка удаляется полностью вместе с символами переноса. Исправлено сохранение нового файла (untitled) но всеравно как-то криво.
 | 
				
			||||||
 | 
					  -  Изменения по чтению и отображению переменных по файлам. Причесал диалог
 | 
				
			||||||
 | 
					
 | 
				
			||||||
23/08/2022
 | 
					Sergey Kalinin <svkalinin@samsonpost.ru>  Fri,  2 Sep 2022 17:01:53 +0300
 | 
				
			||||||
    - Added procedure and function navigation window by Ctrl+j pressed on editor
 | 
					  -  Добавил поддержку ruby
 | 
				
			||||||
    - Fixed correctly focused on editor text widget
 | 
					  -  Исправлен выход окна со списком функций за пределы экрана. Поиск и замена теперь работает. Добавлены некоторые иконки для файлов
 | 
				
			||||||
 | 
					  -  Начало реализации процедуры поиска и замены (поиск криво но работает)
 | 
				
			||||||
 | 
					  -  Исправлено закерытие вкладки по щелчку мыши. Добавлена настройка переноса строк в редакторе. Добавлены сочетания клавиш ctrl+pgup cntrl+pgdown  для переключения  между вкладками редактора. Добавлен диалог закрытия папки (каталога)
 | 
				
			||||||
 | 
					  -  Укоротил имя корневого каталога в дереве
 | 
				
			||||||
 | 
					  -  Добавлены ключиевые слова GO
 | 
				
			||||||
 | 
					  -  Исправлена подсветка ключевых слов tcl  и добавлены виджеты
 | 
				
			||||||
 | 
					  -  Исправлена некорректная установка иконки на каталог
 | 
				
			||||||
 | 
					  -  Добавлены горячие клавиши для удаления слова
 | 
				
			||||||
 | 
					  -  Добавлены сочетания клавиш для удаления слова
 | 
				
			||||||
 | 
					
 | 
				
			||||||
24/08/2022
 | 
					svkalinin <svk@nuk-svk.ru>  Fri, 26 Aug 2022 12:36:14 +0300
 | 
				
			||||||
    - Fixed ReadStructure procedure (added lexer)
 | 
					  -  Изменил(а) на 'README.md'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
25/08/2022
 | 
					svk <svkalinin@samsonpost.ru>  Fri, 26 Aug 2022 12:29:19 +0300
 | 
				
			||||||
    - Fixed focus on the editor window after clicking Escape in the function selection dialog
 | 
					  -  Добавлена поддержка python. Обновлена библиотека иконок.
 | 
				
			||||||
    - Change color scheme for FindFunction dialog
 | 
					  -  Исправлена установка фокуса на окно диалога GotoFunctionDialog и обратно на текст. Переделан механизм чтения структуры файла и добавлены команды для sh (bash)
 | 
				
			||||||
    - Added sh icon (for shell scripts)
 | 
					  -  Добавлены настройки темы для диалога навигации по функциям
 | 
				
			||||||
    - Fixed lexers for find procedures and functions
 | 
					  -  Добавлена иконка shell (*.sh)
 | 
				
			||||||
 | 
					  -  Исправлено комментирование строк
 | 
				
			||||||
 | 
					  -  Добавлен диалог навигации по структуре (процедурам) по Ctrl+F. Исправлена ошибка при закрытии файлов (функции из дерева теперь удаляются).
 | 
				
			||||||
 | 
					  -  Добавил цвет фона для панели с номерами строк
 | 
				
			||||||
 | 
					
 | 
				
			||||||
26/08/2022
 | 
					svkalinin <svk@nuk-svk.ru>  Wed, 17 Aug 2022 21:37:06 +0300
 | 
				
			||||||
    - Update image library (added some icons)
 | 
					  -  Убрал доки по tcl
 | 
				
			||||||
    - Added hot keys:
 | 
					  -  Слегка поменял стиль оформления
 | 
				
			||||||
        - Alt+p - Show/Hide additional panel
 | 
					 | 
				
			||||||
        - Alt+w - delete word on the cursor below
 | 
					 | 
				
			||||||
        - Alt+r - delete row
 | 
					 | 
				
			||||||
        - Alt+b - delete text beetween line Begin and cursor
 | 
					 | 
				
			||||||
        - Alt+e - delete text between cursor and line End
 | 
					 | 
				
			||||||
    - Fix close braces indent
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
30/08/2022
 | 
					Sergey Kalinin <svkalinin@samsonpost.ru>  Wed, 17 Aug 2022 16:52:22 +0300
 | 
				
			||||||
    - Fix the clicked by the close button on a tab
 | 
					  -  Добавлен выбор расположения боковой панели
 | 
				
			||||||
    - Added "View"->"Editors word wrap" menu and procedure
 | 
					  -  Добавлено выделение всех слов в тексте по двойному щелчку мышой на любом слове
 | 
				
			||||||
    - Added bindings "Ctrl+PgUp" and "Ctrl+PgDown" for next or prior tab selecting
 | 
					  -  Исправлено чтение структуры GO файлов: корректное отображение в дереве функций возвращающих значения разных типов
 | 
				
			||||||
    - Added "Close file" dialog
 | 
					  -  Добавлена подсветка скобок
 | 
				
			||||||
 | 
					  -  Новая сборка
 | 
				
			||||||
 | 
					  -  Исправлены процедуры comment/uncomment
 | 
				
			||||||
 | 
					  -  Изменены имена переенных
 | 
				
			||||||
 | 
					  -  Изменены имена переменных
 | 
				
			||||||
 | 
					  -  Добавлена запись номера сборки (build) в исходник
 | 
				
			||||||
 | 
					  -  Добавлено меню Помощь -> О программе. Добавлено окно 'О программе'
 | 
				
			||||||
 | 
					  -  Исправлен поиск процедуры в тексте по клику в дереве
 | 
				
			||||||
 | 
					  -  Исправлен поиск процедуры в тексте по клику в дереве. Исправлено отображение позиции курсора в строке статуса
 | 
				
			||||||
 | 
					  -  ДОбавлены иконки для некоторых типов файлов
 | 
				
			||||||
 | 
					  -  Добавлено отображение структуры исходника в дереве (функции (go) и процедуры (tcl))
 | 
				
			||||||
 | 
					  -  Добавлено кодирование изображения в base64 и вставка в редактируемый текст
 | 
				
			||||||
 | 
					  -  Добавлены шрифт и цвет шриыта для общего интерфейса
 | 
				
			||||||
 | 
					  -  Исправлено комментирование выделенного фрагмента (последняя строка) Исправлено закрытие untitled вкладок
 | 
				
			||||||
 | 
					  -  Исправлено комментирование выделенных строк
 | 
				
			||||||
 | 
					  -  Добавлена подсветка для GO
 | 
				
			||||||
 | 
					  -  Исправлено подключение требуемой процедуры подсветки
 | 
				
			||||||
 | 
					  -  Убрал вставку закрывающихся кавычек в пустой строке. Ибо пока глючит.
 | 
				
			||||||
 | 
					  -  Добавлен диалог сохранения файла при закрытии вкладки редактора и при выходе из программы если есть несохраненные файлы
 | 
				
			||||||
 | 
					  -  Исправлен рабочий каталог
 | 
				
			||||||
 | 
					  -  Добавлены переводы для диалога
 | 
				
			||||||
 | 
					  -  Исправлен скрипт сборки пакета для Debian
 | 
				
			||||||
 | 
					  -  Исправил скрипт сборки пакета. Добавил .gitignore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
01/09/2022
 | 
					svkalinin <svk@nuk-svk.ru>  Thu, 21 Jul 2022 12:18:29 +0300
 | 
				
			||||||
   - Added search function name into Function navigation whem press key
 | 
					  -  Изменил(а) на 'README.md'
 | 
				
			||||||
   - Added find and replace dialog
 | 
					 | 
				
			||||||
   - Fixed correct placement the Function dialog 
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
14/09/2022
 | 
					svk <svkalinin@samsonpost.ru>  Thu, 21 Jul 2022 12:15:19 +0300
 | 
				
			||||||
    - Added procedure for the horizontal split a text window
 | 
					  -  Change readme
 | 
				
			||||||
    - Fixed untitled file saved
 | 
					  -  Added Dark theme
 | 
				
			||||||
    - Fixed Alt+R (delete row), now will are deleted row with a "\n\r" symbols
 | 
					  -  New version of ProjMan
 | 
				
			||||||
    
 | 
					  -  Some changes into GUI (tabs)
 | 
				
			||||||
20/10/200
 | 
					 | 
				
			||||||
    - Added Git support: add and commit changes, show git log, show each commit...
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
11/11/2022
 | 
					svkalinin <banzaj28@yandex.ru>  Thu,  5 Jul 2018 08:41:18 +0300
 | 
				
			||||||
    - Added GoTo Line dialog
 | 
					  -  Fixed error if file was not select
 | 
				
			||||||
    - Fixed Git commit procedure
 | 
					  -  README.md отредактирован онлайн на Bitbucket
 | 
				
			||||||
    - Added variable and procedure helper
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
18/11/2022
 | 
					Sergey Kalinin <banzaj28@yandex.ru>  Sat, 24 Mar 2018 12:20:27 +0300
 | 
				
			||||||
    - Add Refresh button into Git Dialog
 | 
					  -  Rename readme
 | 
				
			||||||
    - Fixed FindFunction
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
07/12/2022
 | 
					Sergey <banzaj28@yandex.ru>  Sat, 24 Mar 2018 12:17:09 +0300
 | 
				
			||||||
    - Added Perl language support
 | 
					  -  README отредактирован онлайн на Bitbucket
 | 
				
			||||||
    - Added INI-files support
 | 
					  -  Added sort procedure for projects tree
 | 
				
			||||||
    - Added MD-files structure navigation
 | 
					  -  Added small toolbar into project tree
 | 
				
			||||||
    - Fixed saving user session and opening files and folders at the next start
 | 
					  -  Added insert base64 encoded image into source code
 | 
				
			||||||
    - Added buttons "Git clone" and "Git init" in the dialog box displayed when the Git button is pressed
 | 
					  -  Some GUI change
 | 
				
			||||||
    
 | 
					  -  Change messages files
 | 
				
			||||||
 | 
					  -  Added Menu button into tollbar and Hide/Show options into config
 | 
				
			||||||
 | 
					  -  Added procedure arguments into tree Change read config procedure (error fixed) Fixed error when project running
 | 
				
			||||||
 | 
					  -  Some Fix
 | 
				
			||||||
 | 
					  -  GoToNumber entry small change
 | 
				
			||||||
 | 
					  -  GoToLine procedure tuning
 | 
				
			||||||
 | 
					  -  Added GoTo line into toolbar Fixed fileinfo update when tree one click Fixed bug with opened files have extention is a upper case
 | 
				
			||||||
 | 
					  -  Critical fix again
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Sergey Kalinin <banzaj28@yandex.ru>  Sat, 24 Feb 2018 18:16:01 +0300
 | 
				
			||||||
 | 
					  -  Critical bug fixed with create project
 | 
				
			||||||
 | 
					  -  Refactoring all procedures is the Tree working
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Sergey <svk@s.kalinin-nb>  Sat, 24 Feb 2018 12:22:08 +0300
 | 
				
			||||||
 | 
					  -  Fixed Add new file if name was existing into tree
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					svk <banzaj28@yandex.ru>  Fri, 23 Feb 2018 11:58:39 +0300
 | 
				
			||||||
 | 
					  -  Rename archive projman-latest
 | 
				
			||||||
 | 
					  -  Fixed AddToProj procedure for file browser tree Disable OpComplite procedure
 | 
				
			||||||
 | 
					  -  Refactoring Settigs procedure source code Some changes into messages files (localisation)
 | 
				
			||||||
 | 
					  -  Added option "constrainedwidth true" for ScrollableFrame
 | 
				
			||||||
 | 
					  -  Fix saving "Show dot files" option Fixed correctly highlightning procedure names
 | 
				
			||||||
 | 
					  -  Refactoring auto update file structure (tree). Now structure updated when file was saving Refactoring "Settings" dialog
 | 
				
			||||||
 | 
					  -  Fix "New file" proc ctrl+n hotkey
 | 
				
			||||||
 | 
					  -  - Fixed edit files into root node from file browser tree - Change "Delete project" dialog and procedure
 | 
				
			||||||
 | 
					  -  Refactoring "Add New Projects" "Project Settings" (e.t.c.) dialogs Added "Add as new project" dialog for file browser Add popup menu for file browser Fixed some highlight bug
 | 
				
			||||||
 | 
					  -  Fixed runing on Win7 without installation
 | 
				
			||||||
 | 
					  -  Added opening last active project when project run
 | 
				
			||||||
 | 
					  -  Fixed parsing procedure with names like ::proc::name or proc_na::me(aa) and parameters {{} {} {}}
 | 
				
			||||||
 | 
					  -  Put logo and icon images into source code
 | 
				
			||||||
 | 
					  -  Fixed AutoComplite precedure for TCL/TK-projects Added colored icon for main window Fixed "Close all" procedure if opened files from projects and file browser
 | 
				
			||||||
 | 
					  -  Added saving main window geometry into projman.conf file when close programm
 | 
				
			||||||
 | 
					  -  Merge branch 'master' of https://bitbucket.org/svk28/projman
 | 
				
			||||||
 | 
					  -  Delete temp file
 | 
				
			||||||
 | 
					  -  bitbucket-pipelines.yml отредактирован онлайн на Bitbucket
 | 
				
			||||||
 | 
					  -  change docker image
 | 
				
			||||||
 | 
					  -  add apt
 | 
				
			||||||
 | 
					  -  bitbucket-pipelines.yml отредактирован онлайн на Bitbucket
 | 
				
			||||||
 | 
					  -  Initial Bitbucket Pipelines configuration
 | 
				
			||||||
 | 
					  -  Add web site into Readme
 | 
				
			||||||
 | 
					  -  Added gray theme Fixed work with file from directory but not project.
 | 
				
			||||||
 | 
					  -  Some FileDialog fixes
 | 
				
			||||||
 | 
					  -  File Browser added
 | 
				
			||||||
 | 
					  -  Auto indent added for () [] braces
 | 
				
			||||||
 | 
					  -  Some changes
 | 
				
			||||||
 | 
					  -  Change hotkeys "Control+
 | 
				
			||||||
 | 
					  -  Add comment/uncomment selected text
 | 
				
			||||||
 | 
					  -  Tcl
 | 
				
			||||||
 | 
					  -  - Russian help files was conerting into utf-8 encode
 | 
				
			||||||
 | 
					  -  Change Logo and About dialog (added new homepage and git repo addresses)
 | 
				
			||||||
 | 
					  -  Added binding mouse button: click on notebook tab highlight opened file name in tree Change "Paste from Clipboard" function Change popup editor menu (undo
 | 
				
			||||||
 | 
					  -  Modules load procedure changes
 | 
				
			||||||
 | 
					  -  Remove some files
 | 
				
			||||||
 | 
					  -  GiTK running fixed
 | 
				
			||||||
 | 
					  -  Fixed paste text highlight Fixed setting edited flag when paste the text from buffer Change authors email and home page
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Sergey Kalinin <svk@kalinin.carfix>  Mon, 22 Jan 2018 17:54:18 +0300
 | 
				
			||||||
 | 
					  -  - Remove ctags support - Added gitk (gui for git) support
 | 
				
			||||||
 | 
					  -  Change version into Install.tcl script
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					svk <svk@l0001h.office>  Fri, 12 Jan 2018 13:44:26 +0300
 | 
				
			||||||
 | 
					  -  README отредактирован онлайн на Bitbucket
 | 
				
			||||||
 | 
					  -  test.tcl deleted online with Bitbucket
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Sergey Kalinin <banzaj28@gmail.com>  Mon, 19 Oct 2015 14:22:09 +0300
 | 
				
			||||||
 | 
					  -  some bugs in install.tcl fixed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					svk28 <ksv@L-AO-TEH1.DALS.local>  Mon, 19 Oct 2015 13:37:21 +0300
 | 
				
			||||||
 | 
					  -  Initial commit with contributors
 | 
				
			||||||
 | 
					  -  Initial release
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										9
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								INSTALL
									
									
									
									
									
								
							@@ -1,9 +0,0 @@
 | 
				
			|||||||
######################################################
 | 
					 | 
				
			||||||
#	Tcl/Tk Project manager 2.0
 | 
					 | 
				
			||||||
#	Distributed under GNU Public License
 | 
					 | 
				
			||||||
# Author: Sergey Kalinin svk@nuk-svl.ru
 | 
					 | 
				
			||||||
# Home page: https://nuk-svk.ru
 | 
					 | 
				
			||||||
######################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										58
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								README.md
									
									
									
									
									
								
							@@ -29,10 +29,60 @@ For UNIX-like OS
 | 
				
			|||||||
Tcl/Tk >= 8.6 http://tcl.tk
 | 
					Tcl/Tk >= 8.6 http://tcl.tk
 | 
				
			||||||
tcllib, tklib
 | 
					tcllib, tklib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Screenshots
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Navigation the source code structure, and syntax highlighting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Hints when entering names of variables and procedures
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Searching for a variable definition in ansible files
 | 
				
			||||||
 | 
					- Navigation the ansible source code structure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Navigation the markdown source code structure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Git dialog (commit history)
 | 
				
			||||||
 | 
					- Git dialog (changes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Flexible interface configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Find/Replace dialog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Global searching dialog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- A pseudo-terminal for launching the edited file and other command
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Image viewer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Getting source code
 | 
					## Getting source code
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Download the source code archive https://git.nuk-svk.ru/svk/projman/archive/master.tar.gz
 | 
					Download the source code https://git.nuk-svk.ru/svk/projman/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Or use git:
 | 
					Or use git:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -81,7 +131,6 @@ Or type "projman" into terminal, Or choose the name of the program "Projman" on
 | 
				
			|||||||
- Ctrl-N - Create new file
 | 
					- Ctrl-N - Create new file
 | 
				
			||||||
- Ctrl-O - Open file
 | 
					- Ctrl-O - Open file
 | 
				
			||||||
- Ctrl-W - Close editor (file)
 | 
					- Ctrl-W - Close editor (file)
 | 
				
			||||||
- Ctrl-K - Open folder
 | 
					 | 
				
			||||||
- Ctrl-Q - Quit from ProjMan
 | 
					- Ctrl-Q - Quit from ProjMan
 | 
				
			||||||
- Ctrl-J - Show procedures (functions) list for navigation in open editor
 | 
					- Ctrl-J - Show procedures (functions) list for navigation in open editor
 | 
				
			||||||
- Ctrl-L - Find and display files where the variable is defined, the name of which is located under the cursor in the editor
 | 
					- Ctrl-L - Find and display files where the variable is defined, the name of which is located under the cursor in the editor
 | 
				
			||||||
@@ -95,6 +144,10 @@ Or type "projman" into terminal, Or choose the name of the program "Projman" on
 | 
				
			|||||||
- Ctrl-G - Go to line dialog
 | 
					- Ctrl-G - Go to line dialog
 | 
				
			||||||
- Ctrl-C - Copy selected text into buffer
 | 
					- Ctrl-C - Copy selected text into buffer
 | 
				
			||||||
- Ctrl-V - Paste text from buffer
 | 
					- Ctrl-V - Paste text from buffer
 | 
				
			||||||
 | 
					- Ctrl-R - Open terminal for edited file
 | 
				
			||||||
 | 
					- Ctrl-Z - Send SIGTSTP signal 
 | 
				
			||||||
 | 
					- Ctrl-D - Send SIGINT signal 
 | 
				
			||||||
 | 
					- Ctrl-C - Send SIGKILL signal 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Alt-P - Show/Hide the file tree panel
 | 
					- Alt-P - Show/Hide the file tree panel
 | 
				
			||||||
- Alt-W - Delete the current word
 | 
					- Alt-W - Delete the current word
 | 
				
			||||||
@@ -103,6 +156,7 @@ Or type "projman" into terminal, Or choose the name of the program "Projman" on
 | 
				
			|||||||
- Alt-R - Delete current line
 | 
					- Alt-R - Delete current line
 | 
				
			||||||
- Alt-Y - Copy current line into buffer
 | 
					- Alt-Y - Copy current line into buffer
 | 
				
			||||||
- Alt-S - Split the edited window horizontally
 | 
					- Alt-S - Split the edited window horizontally
 | 
				
			||||||
 | 
					- Alt-K - Open folder
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Credits
 | 
					## Credits
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								TODO
									
									
									
									
									
								
							@@ -7,7 +7,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- Ansible ---
 | 
					--- Ansible ---
 | 
				
			||||||
1. Определение всех переменных в отдельный список
 | 
					1. Определение всех переменных в отдельный список
 | 
				
			||||||
  - внутри файла, конструкции вида:
 | 
					- внутри файла, конструкции вида:
 | 
				
			||||||
    set_fact:
 | 
					    set_fact:
 | 
				
			||||||
       varName: value
 | 
					       varName: value
 | 
				
			||||||
    set_fact varName value
 | 
					    set_fact varName value
 | 
				
			||||||
@@ -18,5 +18,4 @@
 | 
				
			|||||||
      - var1.yml
 | 
					      - var1.yml
 | 
				
			||||||
      - var2.yml
 | 
					      - var2.yml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
3. Если используется роль и переменная не найдена в плэйбуке то искать в роли (не факт что требуется)
 | 
					3. Если используется роль и переменная не найдена в плэйбуке
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										336
									
								
								changelog-gen.tcl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										336
									
								
								changelog-gen.tcl
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,336 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					# Tcl ignores the next line -*- tcl -*- \
 | 
				
			||||||
 | 
					exec tclsh8.6 "$0" -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					######################################################################
 | 
				
			||||||
 | 
					#                ProjMan 2
 | 
				
			||||||
 | 
					#        Distributed under GNU Public License
 | 
				
			||||||
 | 
					# Author: Sergey Kalinin svk@nuk-svk.ru
 | 
				
			||||||
 | 
					# Copyright (c) "SVK", 2024, https://nuk-svk.ru
 | 
				
			||||||
 | 
					#######################################################################
 | 
				
			||||||
 | 
					# Changelog generator from the Git commit history.
 | 
				
			||||||
 | 
					# For DEB and RPM packages
 | 
				
			||||||
 | 
					# usage a git command:
 | 
				
			||||||
 | 
					# 
 | 
				
			||||||
 | 
					#    git log --abbrev-commit --all --pretty='%h, %ad, %an, %ae, %s, %b'
 | 
				
			||||||
 | 
					#######################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# puts $tcl_platform(platform)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Устанавливаем рабочий каталог, если его нет то создаём.
 | 
				
			||||||
 | 
					# Согласно спецификации XDG проверяем наличие переменных и каталогов
 | 
				
			||||||
 | 
					if [info exists env(XDG_CONFIG_HOME)] {
 | 
				
			||||||
 | 
					    set dir(cfg) [file join $env(XDG_CONFIG_HOME) changelog-gen]
 | 
				
			||||||
 | 
					} elseif [file exists [file join $env(HOME) .config]] {
 | 
				
			||||||
 | 
					    set dir(cfg) [file join $env(HOME) .config changelog-gen]
 | 
				
			||||||
 | 
					} else {
 | 
				
			||||||
 | 
					    #set dir(cfg) [file join $env(HOME) .changelog-gen]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if {[file exists $dir(cfg)] == 0} {
 | 
				
			||||||
 | 
					    file mkdir $dir(cfg)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Use whereis command for finding the git executable file.
 | 
				
			||||||
 | 
					# for unix-like operating systems
 | 
				
			||||||
 | 
					proc GetGitCommandUnix {} {
 | 
				
			||||||
 | 
					    global gitCommand
 | 
				
			||||||
 | 
					    set cmd "whereis -b git"
 | 
				
			||||||
 | 
					    catch "exec $cmd" result
 | 
				
			||||||
 | 
					    # puts $result
 | 
				
			||||||
 | 
					    if {$result ne ""} {
 | 
				
			||||||
 | 
					        set fields [split $result ":"]
 | 
				
			||||||
 | 
					        # puts $fields
 | 
				
			||||||
 | 
					        if {[lindex $fields 1] ne ""} {
 | 
				
			||||||
 | 
					            # puts [lindex $fields 1]
 | 
				
			||||||
 | 
						        set gitCommand "[string trim [lindex $fields 1]]"
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
					            puts "GIT command not found"
 | 
				
			||||||
 | 
					            exit
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Setting the git-command for windows family OS
 | 
				
			||||||
 | 
					proc GetGitCommandWindows {} {
 | 
				
			||||||
 | 
					    global gitCommand
 | 
				
			||||||
 | 
					    set gitCommand "c:/git/bin/git.exe"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					switch $tcl_platform(platform) {
 | 
				
			||||||
 | 
					    unix     {GetGitCommandUnix}
 | 
				
			||||||
 | 
					    windows  {GetGitCommandWindows}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc ReadGitLog {} {
 | 
				
			||||||
 | 
					    global args gitCommand lastCommitTimeStampSec
 | 
				
			||||||
 | 
					    set cmd exec
 | 
				
			||||||
 | 
					    set i 0
 | 
				
			||||||
 | 
					    lappend cmd "$gitCommand"
 | 
				
			||||||
 | 
					    lappend cmd "log"
 | 
				
			||||||
 | 
					    lappend cmd "--abbrev-commit"
 | 
				
			||||||
 | 
					    # Проверяем была ли запись для данного проекта если была то к времени последнего коммита прибавляем 1 сек.
 | 
				
			||||||
 | 
					    # и получаем журнал после этой даты
 | 
				
			||||||
 | 
					    if {[info exists lastCommitTimeStampSec] && [info exists args(--last)]} {
 | 
				
			||||||
 | 
					        lappend cmd "--after='[clock format [clock add $lastCommitTimeStampSec 1 second] -format {%a, %e %b %Y %H:%M:%S %z}]'"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    lappend cmd "--all"
 | 
				
			||||||
 | 
					    lappend cmd "--pretty='%h, %ad, %an, %ae, %s, %b'"
 | 
				
			||||||
 | 
					    # puts $cmd
 | 
				
			||||||
 | 
					    catch $cmd pipe
 | 
				
			||||||
 | 
					    # puts $pipe
 | 
				
			||||||
 | 
					    set outBuffer ""
 | 
				
			||||||
 | 
					    foreach line [split $pipe "\n"] {
 | 
				
			||||||
 | 
					        # puts $line
 | 
				
			||||||
 | 
					        # set line [string trim $line]
 | 
				
			||||||
 | 
					        set line [string trim [string trim $line] {'}] 
 | 
				
			||||||
 | 
					        if {[regexp -nocase -all -- {^[0-9a-z]+} $line match]} {
 | 
				
			||||||
 | 
					            set outBuffer $line
 | 
				
			||||||
 | 
					            if {$outBuffer ne ""} {
 | 
				
			||||||
 | 
					                lappend res [list $i $outBuffer]
 | 
				
			||||||
 | 
					                incr i
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            # puts $outBuffer
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            if {$line ne ""} {
 | 
				
			||||||
 | 
					                append outBuffer ". " $line
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    # puts $res
 | 
				
			||||||
 | 
					    if [info exists res] {
 | 
				
			||||||
 | 
					        return $res
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        puts "\nRepository '$args(--project-name)' do not have any changes\n"
 | 
				
			||||||
 | 
					        exit
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc StoreProjectInfo {timeStamp} {
 | 
				
			||||||
 | 
					    global dir args
 | 
				
			||||||
 | 
					    set cfgFile [open [file join $dir(cfg) $args(--project-name).conf]  "w+"]
 | 
				
			||||||
 | 
					    puts $cfgFile "# set args(--project-version) \"$args(--project-version)\""
 | 
				
			||||||
 | 
					    puts $cfgFile "# set args(--project-release) \"$args(--project-release)\""
 | 
				
			||||||
 | 
					    puts $cfgFile "set lastCommitTimeStamp \"$timeStamp\""
 | 
				
			||||||
 | 
					    puts $cfgFile "set lastCommitTimeStampSec [clock scan $timeStamp]"
 | 
				
			||||||
 | 
					    close $cfgFile   
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc GenerateChangelogDEB {} {
 | 
				
			||||||
 | 
					    global args
 | 
				
			||||||
 | 
					    # puts "GenerateChangelogDEB"
 | 
				
			||||||
 | 
					    set lastCommitTimeStamp ""
 | 
				
			||||||
 | 
					    set commiter ""
 | 
				
			||||||
 | 
					    set commitText ""
 | 
				
			||||||
 | 
					    # ReadGitLog
 | 
				
			||||||
 | 
					    set lst [lsort -integer -index 0 [ReadGitLog]]
 | 
				
			||||||
 | 
					    # puts $lst
 | 
				
			||||||
 | 
					    # exit
 | 
				
			||||||
 | 
					    set outText ""
 | 
				
			||||||
 | 
					    foreach l $lst {
 | 
				
			||||||
 | 
					        set index [lindex $l 0]
 | 
				
			||||||
 | 
					        set line [lindex $l 1]
 | 
				
			||||||
 | 
					        # puts "$index - $line"
 | 
				
			||||||
 | 
					        set record [split $line ","]
 | 
				
			||||||
 | 
					        set timeStamp [string trim [lindex $record 1]]
 | 
				
			||||||
 | 
					        set email [string trim [lindex $record 3]]
 | 
				
			||||||
 | 
					        if {$lastCommitTimeStamp eq ""} {
 | 
				
			||||||
 | 
					            set lastCommitTimeStamp [string trim [lindex $record 1]]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        set timeStamp [clock format [clock scan $timeStamp] -format {%a, %e %b %Y %H:%M:%S %z}]
 | 
				
			||||||
 | 
					        # puts "> $commiter"
 | 
				
			||||||
 | 
					        if {$index == 0} {
 | 
				
			||||||
 | 
					            puts "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n"
 | 
				
			||||||
 | 
					            append outText "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n"
 | 
				
			||||||
 | 
					            set commiter [lindex $record 2]
 | 
				
			||||||
 | 
					            StoreProjectInfo $timeStamp
 | 
				
			||||||
 | 
					         	  # puts "\n \[ [string trim $commiter] \]"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        # puts ">> $commiter"
 | 
				
			||||||
 | 
					        if {$commiter ne [lindex $record 2]} {
 | 
				
			||||||
 | 
					            puts "\n -- [string trim $commiter] <$email>  $timeStamp"
 | 
				
			||||||
 | 
					            append outText "\n -- [string trim $commiter] <$email>  $timeStamp\n"
 | 
				
			||||||
 | 
					            puts "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n"
 | 
				
			||||||
 | 
					            append outText "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n"
 | 
				
			||||||
 | 
					            set commiter [lindex $record 2]
 | 
				
			||||||
 | 
					            # puts "\n \[ [string trim $commiter] \]"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        set commitTex [lindex $record 4]
 | 
				
			||||||
 | 
					        puts "  * $commitTex"
 | 
				
			||||||
 | 
					        append outText "  * $commitTex\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    puts "\n -- [string trim $commiter] <$email>  $timeStamp"
 | 
				
			||||||
 | 
					    append outText "\n -- [string trim $commiter] <$email>  $timeStamp\n"
 | 
				
			||||||
 | 
					    return $outText
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc GenerateChangelogRPM {} {
 | 
				
			||||||
 | 
					    puts "GenerateChangelogRPM"
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc GenerateChangelogTXT {} {
 | 
				
			||||||
 | 
					    global args
 | 
				
			||||||
 | 
					    set lastCommitTimeStamp ""
 | 
				
			||||||
 | 
					    set commiter ""
 | 
				
			||||||
 | 
					    set commitText ""
 | 
				
			||||||
 | 
					    set lst [lsort -integer -index 0 [ReadGitLog]]
 | 
				
			||||||
 | 
					    puts "$args(--project-name) ($args(--project-version)-$args(--project-release)"
 | 
				
			||||||
 | 
					    foreach l $lst {
 | 
				
			||||||
 | 
					        set index [lindex $l 0]
 | 
				
			||||||
 | 
					        set line [lindex $l 1]
 | 
				
			||||||
 | 
					        # puts "$index - $line"
 | 
				
			||||||
 | 
					        set record [split $line ","]
 | 
				
			||||||
 | 
					        set timeStamp [string trim [lindex $record 1]]
 | 
				
			||||||
 | 
					        set email [string trim [lindex $record 3]]
 | 
				
			||||||
 | 
					        if {$lastCommitTimeStamp eq ""} {
 | 
				
			||||||
 | 
					            set lastCommitTimeStamp [string trim [lindex $record 1]]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        set timeStamp [clock format [clock scan $timeStamp] -format {%a, %e %b %Y %H:%M:%S %z}]
 | 
				
			||||||
 | 
					        # puts "> $commiter"
 | 
				
			||||||
 | 
					        if {$index == 0} {
 | 
				
			||||||
 | 
					            append outText "$args(--project-name) ($args(--project-version)-$args(--project-release))\n"
 | 
				
			||||||
 | 
					            set commiter [lindex $record 2]
 | 
				
			||||||
 | 
					            puts "\n[string trim $commiter] <$email>  $timeStamp"
 | 
				
			||||||
 | 
					            append outText "\n[string trim $commiter] <$email>  $timeStamp\n"
 | 
				
			||||||
 | 
					            StoreProjectInfo $timeStamp
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if {$commiter ne [lindex $record 2]} {
 | 
				
			||||||
 | 
					            puts "\n[string trim $commiter] <$email>  $timeStamp"
 | 
				
			||||||
 | 
					            append outText "\n[string trim $commiter] <$email>  $timeStamp\n"
 | 
				
			||||||
 | 
					            set commiter [lindex $record 2]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        set commitTex [lindex $record 4]
 | 
				
			||||||
 | 
					        puts "  - $commitTex"
 | 
				
			||||||
 | 
					        append outText "  - $commitTex\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $outText
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					# puts [ReadGitLog]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc ShowHelp {} {
 | 
				
			||||||
 | 
					    puts "\nChangelog generator from the Git commit history. For DEB and RPM packages"
 | 
				
			||||||
 | 
					    puts "Usage:\n"
 | 
				
			||||||
 | 
					    puts "\tchangelog-gen \[options\]\n"
 | 
				
			||||||
 | 
					    puts "Where options:"
 | 
				
			||||||
 | 
					    puts "\t--project-name - name of project (package) "
 | 
				
			||||||
 | 
					    puts "\t--project-version - package version"
 | 
				
			||||||
 | 
					    puts "\t--project-release - package release name (number)"
 | 
				
			||||||
 | 
					    puts "\t--deb - debian package format of changelog"
 | 
				
			||||||
 | 
					    puts "\t--rpm - rpm package format of changelog"
 | 
				
			||||||
 | 
					    puts "\t--txt - plain text changelog out"
 | 
				
			||||||
 | 
					    puts "\t--out-file - changelog file name"
 | 
				
			||||||
 | 
					    puts "\t--last - The timestamp since the last launch of this program for a given project"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc StoreChangeLog {outText} {
 | 
				
			||||||
 | 
					    global args
 | 
				
			||||||
 | 
					    if [file exists $args(--out-file)] {
 | 
				
			||||||
 | 
					        file copy -force $args(--out-file) "$args(--out-file).tmp"
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        set origOutFile [open "$args(--out-file).tmp"  "r"]
 | 
				
			||||||
 | 
					        set origText [read $origOutFile]
 | 
				
			||||||
 | 
					        close $origOutFile
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        set outFile [open $args(--out-file)  "w"]
 | 
				
			||||||
 | 
					        puts $outFile $outText
 | 
				
			||||||
 | 
					        puts $outFile $origText
 | 
				
			||||||
 | 
					        close $outFile
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if [info exists args(--last)] {
 | 
				
			||||||
 | 
					            set outFile [open $args(--out-file)  "r+"]
 | 
				
			||||||
 | 
					            puts $outFile $outText
 | 
				
			||||||
 | 
					            close $outFile
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            set outFile [open $args(--out-file)  "w+"]
 | 
				
			||||||
 | 
					            puts $outFile $outText
 | 
				
			||||||
 | 
					            close $outFile
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        set outFile [open $args(--out-file)  "w+"]
 | 
				
			||||||
 | 
					        puts $outFile $outText
 | 
				
			||||||
 | 
					        close $outFile
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set arglen [llength $argv]
 | 
				
			||||||
 | 
					set index 0
 | 
				
			||||||
 | 
					while {$index < $arglen} {
 | 
				
			||||||
 | 
					    set arg [lindex $argv $index]
 | 
				
			||||||
 | 
					    switch -exact $arg {
 | 
				
			||||||
 | 
					        --project-name {
 | 
				
			||||||
 | 
					            set args($arg) [lindex $argv [incr index]]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        --project-version {
 | 
				
			||||||
 | 
					            set args($arg) [lindex $argv [incr index]]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        --project-release {
 | 
				
			||||||
 | 
					            set args($arg) [lindex $argv [incr index]]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        --deb {
 | 
				
			||||||
 | 
					            set args($arg) true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        --rpm {
 | 
				
			||||||
 | 
					            set args($arg) true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        --txt {
 | 
				
			||||||
 | 
					            set args($arg) true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        --out-file {
 | 
				
			||||||
 | 
					            set args($arg) [lindex $argv [incr index]]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        --last {
 | 
				
			||||||
 | 
					            set args($arg) true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        --help {
 | 
				
			||||||
 | 
					            ShowHelp
 | 
				
			||||||
 | 
					            exit
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        default  {
 | 
				
			||||||
 | 
					            set filename [lindex $argv $index]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    incr index
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ![info exists args(--project-name)] {
 | 
				
			||||||
 | 
					    puts "You mast set --project-name option\n"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if ![info exists args(--project-version)] {
 | 
				
			||||||
 | 
					    puts "You mast set --project-version option\n"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if ![info exists args(--project-release)] {
 | 
				
			||||||
 | 
					    puts "You mast set --project-release option\n"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [file exists [file join $dir(cfg) $args(--project-name).conf]] {
 | 
				
			||||||
 | 
					    source [file join $dir(cfg) $args(--project-name).conf]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					foreach arg [array names args] {
 | 
				
			||||||
 | 
					    puts "$arg $args($arg)"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [info exists args(--deb)] {
 | 
				
			||||||
 | 
					    set outText [GenerateChangelogDEB]
 | 
				
			||||||
 | 
					    if [info exists args(--out-file)] {
 | 
				
			||||||
 | 
					        StoreChangeLog $outText
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if [info exists args(--rpm)] {
 | 
				
			||||||
 | 
					    GenerateChangelogRPM
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if [info exists args(--txt)] {
 | 
				
			||||||
 | 
					    set outText [GenerateChangelogTXT]
 | 
				
			||||||
 | 
					    if [info exists args(--out-file)] {
 | 
				
			||||||
 | 
					        StoreChangeLog $outText
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								debian/build-deb-projman.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								debian/build-deb-projman.sh
									
									
									
									
										vendored
									
									
								
							@@ -10,7 +10,9 @@ echo "$VERSION, $RELEASE, $BUILD_DATE"
 | 
				
			|||||||
sed -i "/# Build:.*/c$TXT" projman.tcl
 | 
					sed -i "/# Build:.*/c$TXT" projman.tcl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cp projman.tcl projman
 | 
					cp projman.tcl projman
 | 
				
			||||||
 | 
					cp changelog-gen.tcl changelog-gen
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					./changelog-gen.tcl  --project-name projman --project-version ${VERSION} --project-release ${RELEASE} --out-file debian/changelog --deb --last
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sed -i "s+^set\ dir(lib)+set\ dir(lib)\ /usr/share/projman/lib ;#+g" projman
 | 
					sed -i "s+^set\ dir(lib)+set\ dir(lib)\ /usr/share/projman/lib ;#+g" projman
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
@@ -19,9 +21,9 @@ sed -i "s+\[pwd\]+/usr/share/projman+g" projman
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
tar czf ../projman_${VERSION}.orig.tar.gz .
 | 
					tar czf ../projman_${VERSION}.orig.tar.gz .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dpkg-buildpackage
 | 
					dpkg-buildpackage -d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#cp ../projman_${VERSION}-${RELEASE}_amd64.deb /files/
 | 
					#cp ../projman_${VERSION}-${RELEASE}_amd64.deb /files/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rm -v projman
 | 
					rm -v projman changelog-gen
 | 
				
			||||||
rm -r -v debian/{projman,.debhelper}
 | 
					rm -r -v debian/{projman,.debhelper}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										397
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										397
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,396 @@
 | 
				
			|||||||
projman (2.0.0-alpha) stable; urgency=medium
 | 
					projman (2.0.0-alpha19) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Небольшие исправления
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Sergey Kalinin <svk@nuk-svk.ru>  Thu, 30 Oct 2025 14:47:05 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alpha19) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Добавлен перевод фокуса ввода на прежнее окно после закрытия диалога выполнения.
 | 
				
			||||||
 | 
					  *  Добавлена передача сигналов для закрытия запущенного процесса
 | 
				
			||||||
 | 
					  *  Изменил виджет текста в окне псевдо-терминала. Добавил подстановку имени файла к командную строку по шаблону %f
 | 
				
			||||||
 | 
					  *  Добавлен диалог настроек
 | 
				
			||||||
 | 
					  *  Добавил псевдо-терминал
 | 
				
			||||||
 | 
					  *  Добавлен диалог при открытии файлов отличных от текстовых
 | 
				
			||||||
 | 
					  *  Добавлен просмотр файлов изображений (png, bmp, gif, ppm, pgm)
 | 
				
			||||||
 | 
					  *  Исправлена процедура опреления типа файла
 | 
				
			||||||
 | 
					  *  Добавлены диалоги для подтверждения открытия больших файлов, и двоичных файлов.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Sergey Kalinin <svk@nuk-svk.ru>  Wed, 29 Oct 2025 13:10:31 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alpha18) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Поправил тему оформления
 | 
				
			||||||
 | 
					  *  Исправлена работа в windows
 | 
				
			||||||
 | 
					  *  Уменьшил количество выводимой отладочной информации
 | 
				
			||||||
 | 
					  *  Добавлено определение пути до git в зависимости от платформы.
 | 
				
			||||||
 | 
					  *  Исправлено создание файла конфигурации
 | 
				
			||||||
 | 
					  *  Добавлены номера версий в вызов tclsh8.6 и wish8.6.
 | 
				
			||||||
 | 
					  *  Убрана зависимость на Threads.
 | 
				
			||||||
 | 
					  *  Исправлено чтение структуры проекта при открытии из меню 'Открыть недавнее'
 | 
				
			||||||
 | 
					  *  Исправление работы процедуры varhelper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Sergey Kalinin <svk@nuk-svk.ru>  Mon, 27 Oct 2025 14:05:40 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alpha17) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Added the "Open Recent" menu.
 | 
				
			||||||
 | 
					  *  The "recentlyEditedFolders" option in the configuration file contains a list of recently opened directories.
 | 
				
			||||||
 | 
					  *  The procedures for working with this list have also been added.
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svk <svk@nuk-svk.ru>  Sat, 18 Oct 2025 16:29:50 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alpha17) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Косметические изменения.
 | 
				
			||||||
 | 
					  *  Исправлены ошибки при вставке кавычек
 | 
				
			||||||
 | 
					  *  Обновить README.md
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svk <svk@nuk-svk.ru>  Thu, 31 Oct 2024 19:48:30 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alpha16) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  build-deb-projman.sh: добавлена генерация changelog  из  git log
 | 
				
			||||||
 | 
					  *  changelog-gen.tcl: Вывод в файл вынесен в отдельную процедуру
 | 
				
			||||||
 | 
					  *  changelog-gen.tcl: Добавлено создание резервной копии выходного файла. Исправлен вывод в файл.
 | 
				
			||||||
 | 
					  *  changelog-gen.tcl: Добавлены опции командной строки
 | 
				
			||||||
 | 
					  *  changelog-gen.tcl: Добавлена генерация текстового журнала изменений
 | 
				
			||||||
 | 
					  *  Добавлен запуск changelog-gen при сборке пакета
 | 
				
			||||||
 | 
					  *  Добавлено чстение журнала начиная с определенной даты
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Sergey Kalinin <svk@nuk-svk.ru>  Thu, 22 Aug 2024 13:38:52 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa15) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Генерация списка изменений для debian приведена к корректному виду
 | 
				
			||||||
 | 
					  *  Исправлен фокус при создании нового файла. #3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Калинин Сергей Валерьевич <svkalinin@samsonpost.ru>  Wed, 17 Jul 2024 12:28:30 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa14) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Исправлена неправильная замена выражение при поиске
 | 
				
			||||||
 | 
					  *  Реализовал базовые функции генератора журнала изменений
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <svk@nuk-svk.ru>  Thu, 27 Jun 2024 14:44:47 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa13) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Добавлена иконка для jinja template
 | 
				
			||||||
 | 
					  *  Исправил остатки слияния веток
 | 
				
			||||||
 | 
					  *  Исправлено некорректное определение типа файла при открытии.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <svk@nuk-svk.ru>  Mon, 30 Oct 2023 10:44:37 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa12) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Обновить .gitea/workflows/build.yml
 | 
				
			||||||
 | 
					  *  Gitea actions add
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svk <svkalinin@samsonpost.ru>  Thu, 27 Jul 2023 13:04:32 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa11) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Merge branch 'master' of https://git.nuk-svk.ru/svk/projman
 | 
				
			||||||
 | 
					  *  Исправил открытие файлов с разными путями (~/ ./ ../)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <svk@nuk-svk.ru>  Thu, 23 Feb 2023 13:46:56 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa10) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Добавил изображений программы
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svk <svkalinin@samsonpost.ru>  Mon,  6 Feb 2023 09:27:38 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa9) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Исправлена ошибка при создании нового файла.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <svk@svk.home>  Thu, 22 Dec 2022 19:59:05 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa8) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Добавил пиктограммы файлов
 | 
				
			||||||
 | 
					  *  Исправил процедуру Files::CloseAll ('Закрыть всё')
 | 
				
			||||||
 | 
					  *  Добавлена поддержка Lua
 | 
				
			||||||
 | 
					  *  Исправлена процедура (рас)комментирования
 | 
				
			||||||
 | 
					  *  Исправил ошибку при выходе в процедуре (Congig::Write)
 | 
				
			||||||
 | 
					  *  Добавил раскраски в ruby
 | 
				
			||||||
 | 
					  *  Добавлена возможность многострочных комментариев
 | 
				
			||||||
 | 
					  *  В Ruby lexer добавлен поиск переменных коде.
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Немного почистил. Добавлен поиск переменных по питоньим исходникам (lexer)
 | 
				
			||||||
 | 
					  *  Еще одно исправление подсветки для INI
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Исправлене подсветки комментариев в INI
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Изменения в подсветке для INI
 | 
				
			||||||
 | 
					  *  fix
 | 
				
			||||||
 | 
					  *  Добавил подсветку для Desktop и Spec  файлов
 | 
				
			||||||
 | 
					  *  Добавил вывод отладочной инфы в процедуру
 | 
				
			||||||
 | 
					  *  Исправил подсветку комментариев в TCL
 | 
				
			||||||
 | 
					  *  Оптимизация процедур
 | 
				
			||||||
 | 
					  *  Добавлена подсветка и навигация по HTML. Исправлена подсветка XML
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Добавил иконку для изображений
 | 
				
			||||||
 | 
					  *  Добавил иконки для perl
 | 
				
			||||||
 | 
					  *  Fix
 | 
				
			||||||
 | 
					  *  Исправлена подсветка и навигация по коду для Ruby
 | 
				
			||||||
 | 
					  *  Обновил список изменений
 | 
				
			||||||
 | 
					  *  Исправлено сохранение сессии в редакторе (открытие папки и файлов при следующем запуске)
 | 
				
			||||||
 | 
					  *  Добавлена новая секция UserSession
 | 
				
			||||||
 | 
					  *  Исправление ошибки при открытии файла
 | 
				
			||||||
 | 
					  *  Добавлена поддержка INI-файлов (подсветка
 | 
				
			||||||
 | 
					  *  Добавлена поддержка perl
 | 
				
			||||||
 | 
					  *  Добавил икогнку для файлов git
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Добавлены иконуи для ключей и сертификатов. Изменен поиск иконки (вощзвращает теерь с размером)
 | 
				
			||||||
 | 
					  *  Новая чборка
 | 
				
			||||||
 | 
					  *  Реализован двухпанельный режим работы (вертиикальное разделение)
 | 
				
			||||||
 | 
					  *  Test
 | 
				
			||||||
 | 
					  *  Тесты
 | 
				
			||||||
 | 
					  *  TEsting drone build
 | 
				
			||||||
 | 
					  *  ДОбавил сборку в drone
 | 
				
			||||||
 | 
					  *  Исправлена  ошибка при открытии ansible.cfg
 | 
				
			||||||
 | 
					  *  Добавил деактивацию кнопки 'Создать репу' если не выбран активный проект (не открыто ни одного каталога/папки)
 | 
				
			||||||
 | 
					  *  Добавлены команды git init и git config (зачаток). Изменен диалог клонирования репозитория (добавлена кнопка Создать репозиторий)
 | 
				
			||||||
 | 
					  *  Исправил ошибку git при открытии файла или каталога если репозиторий не инициализирован (нет .git  каталога внутри проекта)
 | 
				
			||||||
 | 
					  *  Переименовал файл
 | 
				
			||||||
 | 
					  *  Добавил скриты сборки rpm
 | 
				
			||||||
 | 
					  *  Добавлено обрамление выделенного текста прии нажатии '_' в markdown
 | 
				
			||||||
 | 
					  *  Исправление подсветки
 | 
				
			||||||
 | 
					  *  Добавлена поддержка markdown (подсветка
 | 
				
			||||||
 | 
					  *  Обновил описание
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Исправлена ошибка с закрытием файлов в редакторе при закрытии папки
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Переделана процедура определения активного проекта. Исправлено определение ветки git. Теперь можно нормально работать в двух и более открытых проектах (каталогах/папках)
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Доделан вид диалога поиска по файлам
 | 
				
			||||||
 | 
					  *  Исправлен поиск имени функции
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Добавлен диалог клонирования репозитория
 | 
				
			||||||
 | 
					  *  Добавил разделитель
 | 
				
			||||||
 | 
					  *  Исправлено переключение вкладок при закрытии
 | 
				
			||||||
 | 
					  *  Исправлено закрытиие вкладки Git  по нажатию соотв. кнопки в панели инструментов
 | 
				
			||||||
 | 
					  *  Добавлен пункт 'Закрыть всё'
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Исправлено соответствие открытого файла в редакторе и выделение этого файла в дереве
 | 
				
			||||||
 | 
					  *  Исправлено переключение отображения панели (лево/право) в без перезапуска программы.
 | 
				
			||||||
 | 
					  *  Украшательства интерфейса - Реакция на нажатие кнопки в панели инструментов теперь зависит от контекста
 | 
				
			||||||
 | 
					  *  Добавлено включение отключение отображения Меню
 | 
				
			||||||
 | 
					  *  Добавлено копирование текущей строки в буфер по Atl+Y
 | 
				
			||||||
 | 
					  *  Исправлена ошибка с отображением файловой панели
 | 
				
			||||||
 | 
					  *  Добавлены и исправлены функции отображения меню
 | 
				
			||||||
 | 
					  *  Фикс
 | 
				
			||||||
 | 
					  *  Добавлен параметр statusBarShow - показ строки статуса
 | 
				
			||||||
 | 
					  *  Добавлены переводы
 | 
				
			||||||
 | 
					  *  Добавлена проверка параметров вызова файл или просто строка
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Добавлен вывод сообщений об ошибке в диалоге
 | 
				
			||||||
 | 
					  *  Добавлено обновления списка файлов в дереве
 | 
				
			||||||
 | 
					  *  Добавлена процедура вывода информационного сообщения
 | 
				
			||||||
 | 
					  *  Добавлена команда Git::Reset (git reset _file_) на кнопке в диалоге. Для отмены 'git add'
 | 
				
			||||||
 | 
					  *  Добавлена кнопка Обновление в диалог работы с Git
 | 
				
			||||||
 | 
					  *  Исправление процедуры поиска наименования функции
 | 
				
			||||||
 | 
					  *  Фиксы диалога работы с Git (работа с выделенными файлами в списках)
 | 
				
			||||||
 | 
					  *  Test
 | 
				
			||||||
 | 
					  *  Фиксы и тесты работы с git
 | 
				
			||||||
 | 
					  *  test
 | 
				
			||||||
 | 
					  *  Исправление выборанескольких файлов в диалоге Git
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Украшательства
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Исправление рег. выражения чтения файлов командой git status
 | 
				
			||||||
 | 
					  *  Настройки темы
 | 
				
			||||||
 | 
					  *  Исправлено рег. выпражение определения mime типа файла
 | 
				
			||||||
 | 
					  *  Ntvs
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Добавил очистку текстовых полей при добавлении файлов в коммит
 | 
				
			||||||
 | 
					  *  Исправрелдение Git::Commit (индексация всех файлов в проекте)
 | 
				
			||||||
 | 
					  *  Изменения
 | 
				
			||||||
 | 
					  *  Фиксы
 | 
				
			||||||
 | 
					  *  Test
 | 
				
			||||||
 | 
					  *  Исправления глюков
 | 
				
			||||||
 | 
					  *  Украшательства строки статуса
 | 
				
			||||||
 | 
					  *  Добавлен просмотрщик изображений
 | 
				
			||||||
 | 
					  *  Добавил рамку кону ввода номера
 | 
				
			||||||
 | 
					  *  Добавлен диалог перехода по номеру строки Ctrl-G
 | 
				
			||||||
 | 
					  *  Добавлено определение типа файла
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Добавил удаление артефактов сборки пакета
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Fix
 | 
				
			||||||
 | 
					  *  Добавлена подсветка имен файлов в выводе git show
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Допилдивание процедуры автоввода имен переменных
 | 
				
			||||||
 | 
					  *  Небольшие правки в подсказках по переменным
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Исправлена подсветка SHELL переменных а YAML файлах (ansible
 | 
				
			||||||
 | 
					  *  Fix
 | 
				
			||||||
 | 
					  *  Новая сборка. Добавлена подсказка по переменным при вводе.
 | 
				
			||||||
 | 
					  *  Добавлено определение символа переменной
 | 
				
			||||||
 | 
					  *  fackup
 | 
				
			||||||
 | 
					  *  Определение коррректного положения встроенного окна
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Добавлен вывод подсказки при вводе переменных
 | 
				
			||||||
 | 
					  *  Добавлены опции для включсения полджсказок по переменным и процедурам
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Исправления гуя
 | 
				
			||||||
 | 
					  *  Fix
 | 
				
			||||||
 | 
					  *  Фикс
 | 
				
			||||||
 | 
					  *  Добавил диалог создания и переключения git-веток
 | 
				
			||||||
 | 
					  *  Создание ветки
 | 
				
			||||||
 | 
					  *  Фикс
 | 
				
			||||||
 | 
					  *  Новые иконки
 | 
				
			||||||
 | 
					  *  Косметические изменения
 | 
				
			||||||
 | 
					  *  Ченю push
 | 
				
			||||||
 | 
					  *  Ченю push
 | 
				
			||||||
 | 
					  *  Починил push
 | 
				
			||||||
 | 
					  *  Добавлены новые иконки
 | 
				
			||||||
 | 
					  *  Обработка ошибок
 | 
				
			||||||
 | 
					  *  Обработка ошибок
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Исправлена ошибка при клике на списке с файлами
 | 
				
			||||||
 | 
					  *  New build
 | 
				
			||||||
 | 
					  *  Сделал просмотр изменений из истории
 | 
				
			||||||
 | 
					  *  Добавлено обновление лога изменений
 | 
				
			||||||
 | 
					  *  Новый билд
 | 
				
			||||||
 | 
					  *  Исправление обновления диалога
 | 
				
			||||||
 | 
					  *  Fix
 | 
				
			||||||
 | 
					  *  Добавлен перевод
 | 
				
			||||||
 | 
					  *  git reflog
 | 
				
			||||||
 | 
					  *  Добавлен интерфейс работы с Git
 | 
				
			||||||
 | 
					  *  Новый релиз
 | 
				
			||||||
 | 
					  *  Исправил ошибку если нет изменений
 | 
				
			||||||
 | 
					  *  Начало работ по поддержке git
 | 
				
			||||||
 | 
					  *  New build
 | 
				
			||||||
 | 
					  *  Bug fix
 | 
				
			||||||
 | 
					  *  Добавлен диалог поиска строки в файлах в текущем каталоге. Используется 'grep -r'.
 | 
				
			||||||
 | 
					  *  Добавлены настройки для системной команды поиска в фвайлах
 | 
				
			||||||
 | 
					  *  Добавлено рекурсивное чтение каталога при открытии. Диалог поиска теперь работает раздельно при разделении окна. Диалог навигации по функци так-же работает раздельно
 | 
				
			||||||
 | 
					  *  Добавлены ключевые слова для подстветки питона
 | 
				
			||||||
 | 
					  *  Добавлена проверка на отсутствие файла и удаление из дерева
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <svk@nuk-svk.ru>  Sun, 18 Sep 2022 10:46:59 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa7) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Добавлен поиск переменной в тексте после открытия файла где она указана
 | 
				
			||||||
 | 
					  *  Исправлена ошибка при запуске
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Sergey Kalinin <svkalinin@samsonpost.ru>  Fri, 16 Sep 2022 16:37:17 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa6) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Исправил сохранение открытого каталога в настройках
 | 
				
			||||||
 | 
					  *  Рефакторинг
 | 
				
			||||||
 | 
					  *  Переделал дилог навигации по переменным
 | 
				
			||||||
 | 
					  *  Исправил ошибку
 | 
				
			||||||
 | 
					  *  Добавлен еще один каталог с переменными - default
 | 
				
			||||||
 | 
					  *  Добавлено сохранение состояния редактора (открытые каталоги
 | 
				
			||||||
 | 
					  *  Изменения в диалоге поиска
 | 
				
			||||||
 | 
					  *  Изменения в диалоге поиска
 | 
				
			||||||
 | 
					  *  Отображение горизонтальной полосы прокрутки в зависимости от переноса строк в редакторе
 | 
				
			||||||
 | 
					  *  Установка фокуса на текст в редакторе при щелчке на заголовок вкладки
 | 
				
			||||||
 | 
					  *  Сделал перемещение курсора в такуюже позицию в тексте при разделении окна редактора
 | 
				
			||||||
 | 
					  *  Добавлено горизонтальное разделение окна редактора. Исправлено удаление строки по Alt+R - реперь строка удаляется полностью вместе с символами переноса. Исправлено сохранение нового файла (untitled) но всеравно как-то криво.
 | 
				
			||||||
 | 
					  *  Изменения по чтению и отображению переменных по файлам. Причесал диалог
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <svk@nuk-svk.ru>  Fri,  2 Sep 2022 21:42:40 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa5) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Добавил поддержку ruby
 | 
				
			||||||
 | 
					  *  Исправлен выход окна со списком функций за пределы экрана. Поиск и замена теперь работает. Добавлены некоторые иконки для файлов
 | 
				
			||||||
 | 
					  *  Начало реализации процедуры поиска и замены (поиск криво но работает)
 | 
				
			||||||
 | 
					  *  Fix
 | 
				
			||||||
 | 
					  *  Исправлено закерытие вкладки по щелчку мыши. Добавлена настройка переноса строк в редакторе. Добавлены сочетания клавиш ctrl+pgup cntrl+pgdown  для переключения  между вкладками редактора. Добавлен диалог закрытия папки (каталога)
 | 
				
			||||||
 | 
					  *  Укоротил имя корневого каталога в дереве
 | 
				
			||||||
 | 
					  *  Добавлены ключиевые слова GO
 | 
				
			||||||
 | 
					  *  Исправлена подсветка ключевых слов tcl  и добавлены виджеты
 | 
				
			||||||
 | 
					  *  Исправлена некорректная установка иконки на каталог
 | 
				
			||||||
 | 
					  *  Добавлены горячие клавиши для удаления слова
 | 
				
			||||||
 | 
					  *  Добавлены сочетания клавиш для удаления слова
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <svk@nuk-svk.ru>  Fri, 26 Aug 2022 12:36:14 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa4) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Добавлена поддержка python. Обновлена библиотека иконок.
 | 
				
			||||||
 | 
					  *  Исправлена установка фокуса на окно диалога GotoFunctionDialog и обратно на текст. Переделан механизм чтения структуры файла и добавлены команды для sh (bash)
 | 
				
			||||||
 | 
					  *  Добавлены настройки темы для диалога навигации по функциям
 | 
				
			||||||
 | 
					  *  Добавлена иконка shell (*.sh)
 | 
				
			||||||
 | 
					  *  Исправлено комментирование строк
 | 
				
			||||||
 | 
					  *  Добавлен диалог навигации по структуре (процедурам) по Ctrl+F. Исправлена ошибка при закрытии файлов (функции из дерева теперь удаляются).
 | 
				
			||||||
 | 
					  *  Добавил цвет фона для панели с номерами строк
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <svk@nuk-svk.ru>  Wed, 17 Aug 2022 21:37:06 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa3) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Убрал доки по tcl
 | 
				
			||||||
 | 
					  *  Слегка поменял стиль оформления
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Sergey Kalinin <svkalinin@samsonpost.ru>  Wed, 17 Aug 2022 16:52:22 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa2) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Добавлен выбор расположения боковой панели
 | 
				
			||||||
 | 
					  *  Добавлено выделение всех слов в тексте по двойному щелчку мышой на любом слове
 | 
				
			||||||
 | 
					  *  Исправлено чтение структуры GO файлов: корректное отображение в дереве функций возвращающих значения разных типов
 | 
				
			||||||
 | 
					  *  Добавлена подсветка скобок
 | 
				
			||||||
 | 
					  *  Новая сборка
 | 
				
			||||||
 | 
					  *  Исправлены процедуры comment/uncomment
 | 
				
			||||||
 | 
					  *  Изменены имена переенных
 | 
				
			||||||
 | 
					  *  Изменены имена переменных
 | 
				
			||||||
 | 
					  *  Добавлена запись номера сборки (build) в исходник
 | 
				
			||||||
 | 
					  *  Добавлено меню Помощь -> О программе. Добавлено окно 'О программе'
 | 
				
			||||||
 | 
					  *  Исправлен поиск процедуры в тексте по клику в дереве
 | 
				
			||||||
 | 
					  *  Исправлен поиск процедуры в тексте по клику в дереве. Исправлено отображение позиции курсора в строке статуса
 | 
				
			||||||
 | 
					  *  ДОбавлены иконки для некоторых типов файлов
 | 
				
			||||||
 | 
					  *  Добавлено отображение структуры исходника в дереве (функции (go) и процедуры (tcl))
 | 
				
			||||||
 | 
					  *  Добавлено кодирование изображения в base64 и вставка в редактируемый текст
 | 
				
			||||||
 | 
					  *  Добавлены шрифт и цвет шриыта для общего интерфейса
 | 
				
			||||||
 | 
					  *  Исправлено комментирование выделенного фрагмента (последняя строка) Исправлено закрытие untitled вкладок
 | 
				
			||||||
 | 
					  *  Исправлено комментирование выделенных строк
 | 
				
			||||||
 | 
					  *  Добавлена подсветка для GO
 | 
				
			||||||
 | 
					  *  Добавлена подстка для GO
 | 
				
			||||||
 | 
					  *  Исправлено подключение требуемой процедуры подсветки
 | 
				
			||||||
 | 
					  *  Убрал вставку закрывающихся кавычек в пустой строке. Ибо пока глючит.
 | 
				
			||||||
 | 
					  *  Добавлен диалог сохранения файла при закрытии вкладки редактора и при выходе из программы если есть несохраненные файлы
 | 
				
			||||||
 | 
					  *  Исправлен рабочий каталог
 | 
				
			||||||
 | 
					  *  Добавлены переводы для диалога
 | 
				
			||||||
 | 
					  *  Исправлен скрипт сборки пакета для Debian
 | 
				
			||||||
 | 
					  *  Убрал лишнее
 | 
				
			||||||
 | 
					  *  Исправил скрипт сборки пакета. Добавил .gitignore
 | 
				
			||||||
 | 
					  *  Исправил скрипт сборки пакета. Добавил .gitignore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <svk@nuk-svk.ru>  Thu, 21 Jul 2022 12:18:29 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa1) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Изменил(а) на 'README.md'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svk <svkalinin@samsonpost.ru>  Thu, 21 Jul 2022 12:15:19 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					projman (2.0.0-alfa0) stable; urgency=medium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *  Change readme
 | 
				
			||||||
 | 
					  *  Added Dark theme
 | 
				
			||||||
 | 
					  *  New version of ProjMan
 | 
				
			||||||
 | 
					  *  New version of ProjMan
 | 
				
			||||||
 | 
					  *  Some changes into GUI (tabs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- svkalinin <banzaj28@yandex.ru>  Thu,  5 Jul 2018 08:41:18 +0300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  * Initial release
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 -- Sergey Kalinin <svk@nuk-svk.ru>  Wed, 20 Jul 2022 16:56:31 +0300
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								debian/install
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/install
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,5 @@
 | 
				
			|||||||
projman		/usr/bin/
 | 
					projman		/usr/bin/
 | 
				
			||||||
 | 
					changelog-gen		/usr/bin/
 | 
				
			||||||
lib/*.tcl	/usr/share/projman/lib
 | 
					lib/*.tcl	/usr/share/projman/lib
 | 
				
			||||||
lib/msgs/*	/usr/share/projman/lib/msgs
 | 
					lib/msgs/*	/usr/share/projman/lib/msgs
 | 
				
			||||||
theme	/usr/share/projman/
 | 
					theme	/usr/share/projman/
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ set ::configDefault "\[General\]
 | 
				
			|||||||
cfgModifyDate=''
 | 
					cfgModifyDate=''
 | 
				
			||||||
searchCommand=/usr/bin/grep
 | 
					searchCommand=/usr/bin/grep
 | 
				
			||||||
searchCommandOptions=-r -n -H
 | 
					searchCommandOptions=-r -n -H
 | 
				
			||||||
gitCommand=/usr/bin/git
 | 
					gitCommand=
 | 
				
			||||||
# must return a mime type of file
 | 
					# must return a mime type of file
 | 
				
			||||||
fileTypeCommand=/usr/bin/file
 | 
					fileTypeCommand=/usr/bin/file
 | 
				
			||||||
fileTypeCommandOptions=-i -b
 | 
					fileTypeCommandOptions=-i -b
 | 
				
			||||||
@@ -37,7 +37,7 @@ menuShow=true
 | 
				
			|||||||
statusBarShow=true
 | 
					statusBarShow=true
 | 
				
			||||||
filesPanelShow=true
 | 
					filesPanelShow=true
 | 
				
			||||||
filesPanelPlace=left
 | 
					filesPanelPlace=left
 | 
				
			||||||
geometry=1024x768
 | 
					geometry=800x600
 | 
				
			||||||
guiFont={Droid Sans Mono} 9
 | 
					guiFont={Droid Sans Mono} 9
 | 
				
			||||||
guiFontBold={Droid Sans Mono} 9 bold
 | 
					guiFontBold={Droid Sans Mono} 9 bold
 | 
				
			||||||
guiFG=#cccccc
 | 
					guiFG=#cccccc
 | 
				
			||||||
@@ -64,6 +64,7 @@ multilineComments=true
 | 
				
			|||||||
\[UserSession\]
 | 
					\[UserSession\]
 | 
				
			||||||
opened=
 | 
					opened=
 | 
				
			||||||
editedFiles=
 | 
					editedFiles=
 | 
				
			||||||
 | 
					recentFolder=
 | 
				
			||||||
"
 | 
					"
 | 
				
			||||||
proc Config::create {dir} {
 | 
					proc Config::create {dir} {
 | 
				
			||||||
    set cfgFile [open [file join $dir projman.ini]  "w+"]
 | 
					    set cfgFile [open [file join $dir projman.ini]  "w+"]
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										146
									
								
								lib/editor.tcl
									
									
									
									
									
								
							
							
						
						
									
										146
									
								
								lib/editor.tcl
									
									
									
									
									
								
							@@ -94,7 +94,7 @@ namespace eval Editor {
 | 
				
			|||||||
        # }
 | 
					        # }
 | 
				
			||||||
        set commentProcedure "GetComment"
 | 
					        set commentProcedure "GetComment"
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        puts "$fileType, $commentProcedure"
 | 
					        # puts "$fileType, $commentProcedure"
 | 
				
			||||||
        if {$selIndex != ""} {
 | 
					        if {$selIndex != ""} {
 | 
				
			||||||
            set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
 | 
					            set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
 | 
				
			||||||
            set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
 | 
					            set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
 | 
				
			||||||
@@ -140,10 +140,10 @@ namespace eval Editor {
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        set cmd "regexp -nocase -indices -- {(^|\s+)\\s*($symbol\\s*)(.*)} {$str} match v1 v2 v3"
 | 
					        set cmd "regexp -nocase -indices -- {(^|\s+)\\s*($symbol\\s*)(.*)} {$str} match v1 v2 v3"
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        puts $cmd
 | 
					        # puts $cmd
 | 
				
			||||||
        # puts [eval $cmd]
 | 
					        # puts [eval $cmd]
 | 
				
			||||||
        if [eval $cmd] {
 | 
					        if [eval $cmd] {
 | 
				
			||||||
            puts "$match, $v2, $v3"
 | 
					            # puts "$match, $v2, $v3"
 | 
				
			||||||
            return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
 | 
					            return [list [lindex [split $v2] 0] [lindex [split $v3] 0]]
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            return 0
 | 
					            return 0
 | 
				
			||||||
@@ -253,7 +253,7 @@ namespace eval Editor {
 | 
				
			|||||||
            $txt highlight $lineBegin.0 $lineEnd.end
 | 
					            $txt highlight $lineBegin.0 $lineEnd.end
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            set str [$txt get $lineNum.0 $lineNum.end]
 | 
					            set str [$txt get $lineNum.0 $lineNum.end]
 | 
				
			||||||
            puts ">>>>> $str"
 | 
					            # puts ">>>>> $str"
 | 
				
			||||||
            if {[regexp -nocase -indices -- {(^\s*)(.*?)} $str match v1]} {
 | 
					            if {[regexp -nocase -indices -- {(^\s*)(.*?)} $str match v1]} {
 | 
				
			||||||
                    set posBegin [lindex [split $v1] 0]
 | 
					                    set posBegin [lindex [split $v1] 0]
 | 
				
			||||||
                    set posEnd [lindex [split $v1] 1]
 | 
					                    set posEnd [lindex [split $v1] 1]
 | 
				
			||||||
@@ -277,7 +277,7 @@ namespace eval Editor {
 | 
				
			|||||||
        set pos [$txt index insert]
 | 
					        set pos [$txt index insert]
 | 
				
			||||||
        set lineNum [lindex [split $pos "."] 0]
 | 
					        set lineNum [lindex [split $pos "."] 0]
 | 
				
			||||||
        set posNum [lindex [split $pos "."] 1]
 | 
					        set posNum [lindex [split $pos "."] 1]
 | 
				
			||||||
        puts "$pos"
 | 
					        # puts "$pos"
 | 
				
			||||||
        if {$lineNum > 1} {
 | 
					        if {$lineNum > 1} {
 | 
				
			||||||
            # get current text
 | 
					            # get current text
 | 
				
			||||||
            set curText [$txt get $lineNum.0 "$lineNum.0 lineend"]
 | 
					            set curText [$txt get $lineNum.0 "$lineNum.0 lineend"]
 | 
				
			||||||
@@ -398,7 +398,7 @@ namespace eval Editor {
 | 
				
			|||||||
        set win .varhelper
 | 
					        set win .varhelper
 | 
				
			||||||
        # if { [winfo exists $win] == 0 	} { return }
 | 
					        # if { [winfo exists $win] == 0 	} { return }
 | 
				
			||||||
        set ind [$win.lBox curselection]
 | 
					        set ind [$win.lBox curselection]
 | 
				
			||||||
        puts ">>>>>>>>>>>> VarHelperBind <<<<<<<<<<<<<<<<"
 | 
					        # puts ">>>>>>>>>>>> VarHelperBind <<<<<<<<<<<<<<<<"
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        switch -- $K {
 | 
					        switch -- $K {
 | 
				
			||||||
            Prior   {
 | 
					            Prior   {
 | 
				
			||||||
@@ -443,7 +443,7 @@ namespace eval Editor {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    } ;# proc auto_completition_key
 | 
					    } ;# proc auto_completition_key
 | 
				
			||||||
    proc VarHelperEscape {w} {
 | 
					    proc VarHelperEscape {w} {
 | 
				
			||||||
        puts ">>>>>>>>>>>> VarHelperEscape <<<<<<<<<<<<<<<<"
 | 
					        # puts ">>>>>>>>>>>> VarHelperEscape <<<<<<<<<<<<<<<<"
 | 
				
			||||||
        # bindtags $w [list [winfo parent $w] $w Text sysAfter all]
 | 
					        # bindtags $w [list [winfo parent $w] $w Text sysAfter all]
 | 
				
			||||||
        bindtags $w [list [winfo toplevel $w] $w Ctext sysAfter all]
 | 
					        bindtags $w [list [winfo toplevel $w] $w Ctext sysAfter all]
 | 
				
			||||||
        catch { destroy .varhelper }
 | 
					        catch { destroy .varhelper }
 | 
				
			||||||
@@ -459,7 +459,12 @@ namespace eval Editor {
 | 
				
			|||||||
        # блокировка открытия диалога если запущен другой
 | 
					        # блокировка открытия диалога если запущен другой
 | 
				
			||||||
        set txt $w
 | 
					        set txt $w
 | 
				
			||||||
        # set win .varhelper
 | 
					        # set win .varhelper
 | 
				
			||||||
        puts "$x $y $w $word $wordType"
 | 
					        # Проверяем если есть выделение то блокировать появление диалога
 | 
				
			||||||
 | 
					        if {[$txt tag ranges sel] != ""} {
 | 
				
			||||||
 | 
					            puts "You have selected text [$txt tag ranges sel]"
 | 
				
			||||||
 | 
					            return            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        # puts "$x $y $w $word $wordType"
 | 
				
			||||||
        set fileType [dict get $editors $txt fileType]
 | 
					        set fileType [dict get $editors $txt fileType]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if {[dict exists $editors $txt variableList] != 0} {
 | 
					        if {[dict exists $editors $txt variableList] != 0} {
 | 
				
			||||||
@@ -575,6 +580,8 @@ namespace eval Editor {
 | 
				
			|||||||
        if { [set height [llength $findedVars]] > 10 } { set height 10 }
 | 
					        if { [set height [llength $findedVars]] > 10 } { set height 10 }
 | 
				
			||||||
        $win.lBox configure -height $height
 | 
					        $win.lBox configure -height $height
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # focus $win.lBox
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        bind $win <Escape> {
 | 
					        bind $win <Escape> {
 | 
				
			||||||
            destroy $Editor::win
 | 
					            destroy $Editor::win
 | 
				
			||||||
            focus -force $Editor::txt.t
 | 
					            focus -force $Editor::txt.t
 | 
				
			||||||
@@ -612,7 +619,7 @@ namespace eval Editor {
 | 
				
			|||||||
            set y [expr $y - $winGeomY]
 | 
					            set y [expr $y - $winGeomY]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        wm geom $win +$x+$y
 | 
					        wm geom $win +$x+$y 
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    proc ReleaseKey {k txt fileType} {
 | 
					    proc ReleaseKey {k txt fileType} {
 | 
				
			||||||
@@ -755,7 +762,7 @@ namespace eval Editor {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    ## GET KEYS CODE ##
 | 
					    ## GET KEYS CODE ##
 | 
				
			||||||
    proc Key {key str} {
 | 
					    proc Key {key str} {
 | 
				
			||||||
        puts "Pressed key code: $key, $str"
 | 
					        # puts "Pressed key code: $key, $str"
 | 
				
			||||||
        if {$key >= 10 && $key <= 22} {return "true"}
 | 
					        if {$key >= 10 && $key <= 22} {return "true"}
 | 
				
			||||||
        if {$key >= 24 && $key <= 36} {return "true"}
 | 
					        if {$key >= 24 && $key <= 36} {return "true"}
 | 
				
			||||||
        if {$key >= 38 && $key <= 50} {return "true"}
 | 
					        if {$key >= 38 && $key <= 50} {return "true"}
 | 
				
			||||||
@@ -779,8 +786,11 @@ namespace eval Editor {
 | 
				
			|||||||
        bind $txt <Control-eacute> Quit
 | 
					        bind $txt <Control-eacute> Quit
 | 
				
			||||||
        bind $txt <Control-igrave> "Editor::SelectionPaste $txt"
 | 
					        bind $txt <Control-igrave> "Editor::SelectionPaste $txt"
 | 
				
			||||||
        bind $txt <Control-v> "Editor::SelectionPaste $txt"
 | 
					        bind $txt <Control-v> "Editor::SelectionPaste $txt"
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_em> "Editor::SelectionPaste $txt"
 | 
				
			||||||
        bind $txt <Control-l> "SearchVariable $txt; break"
 | 
					        bind $txt <Control-l> "SearchVariable $txt; break"
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_de> "SearchVariable $txt; break"
 | 
				
			||||||
        bind $txt <Control-i> "ImageBase64Encode $txt"
 | 
					        bind $txt <Control-i> "ImageBase64Encode $txt"
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_sha> "ImageBase64Encode $txt"
 | 
				
			||||||
        bind $txt <Control-bracketleft> "Editor::InsertTabular $txt"
 | 
					        bind $txt <Control-bracketleft> "Editor::InsertTabular $txt"
 | 
				
			||||||
        bind $txt <Control-bracketright> "Editor::DeleteTabular $txt"
 | 
					        bind $txt <Control-bracketright> "Editor::DeleteTabular $txt"
 | 
				
			||||||
        bind $txt <Control-comma> "Editor::Comment $txt $fileType"
 | 
					        bind $txt <Control-comma> "Editor::Comment $txt $fileType"
 | 
				
			||||||
@@ -790,25 +800,35 @@ namespace eval Editor {
 | 
				
			|||||||
        bind $txt <ButtonRelease-1> "Editor::SearchBrackets $txt"
 | 
					        bind $txt <ButtonRelease-1> "Editor::SearchBrackets $txt"
 | 
				
			||||||
        bind $txt <Button-1><ButtonRelease-1> "Editor::SelectionHighlight $txt"
 | 
					        bind $txt <Button-1><ButtonRelease-1> "Editor::SelectionHighlight $txt"
 | 
				
			||||||
        bind $txt <<Modified>> "SetModifiedFlag $w $nb"
 | 
					        bind $txt <<Modified>> "SetModifiedFlag $w $nb"
 | 
				
			||||||
        bind $txt <Control-i> ImageBase64Encode
 | 
					 | 
				
			||||||
        bind $txt <Control-u> "Editor::SearchBrackets %W"
 | 
					        bind $txt <Control-u> "Editor::SearchBrackets %W"
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_ghe> "Editor::SearchBrackets %W"
 | 
				
			||||||
        bind $txt <Control-J> "catch {Editor::GoToFunction $txt}"
 | 
					        bind $txt <Control-J> "catch {Editor::GoToFunction $txt}"
 | 
				
			||||||
        bind $txt <Control-j> "catch {Editor::GoToFunction $txt}; break"
 | 
					        bind $txt <Control-j> "catch {Editor::GoToFunction $txt}; break"
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_o> "catch {Editor::GoToFunction $txt}; break"
 | 
				
			||||||
        bind $txt <Alt-w>           "$txt delete {insert wordstart} {insert wordend}"
 | 
					        bind $txt <Alt-w>           "$txt delete {insert wordstart} {insert wordend}"
 | 
				
			||||||
        bind $txt <Alt-odiaeresis>  "$txt delete {insert wordstart} {insert wordend}"
 | 
					        bind $txt <Alt-odiaeresis>  "$txt delete {insert wordstart} {insert wordend}"
 | 
				
			||||||
 | 
					        bind $txt <Alt-Cyrillic_tse> "$txt delete {insert wordstart} {insert wordend}"
 | 
				
			||||||
        bind $txt <Alt-r>           "$txt delete {insert linestart} {insert lineend + 1char}"
 | 
					        bind $txt <Alt-r>           "$txt delete {insert linestart} {insert lineend + 1char}"
 | 
				
			||||||
        bind $txt <Alt-ecircumflex> "$txt delete {insert linestart} {insert lineend + 1char}"
 | 
					        bind $txt <Alt-ecircumflex> "$txt delete {insert linestart} {insert lineend + 1char}"
 | 
				
			||||||
 | 
					        bind $txt <Alt-Cyrillic_er> "$txt delete {insert linestart} {insert lineend + 1char}"
 | 
				
			||||||
        bind $txt <Alt-b> "$txt delete {insert linestart} insert"
 | 
					        bind $txt <Alt-b> "$txt delete {insert linestart} insert"
 | 
				
			||||||
 | 
					        bind $txt <Alt-Cyrillic_i> "$txt delete {insert linestart} insert"
 | 
				
			||||||
        bind $txt <Alt-e> "$txt delete insert {insert lineend}"
 | 
					        bind $txt <Alt-e> "$txt delete insert {insert lineend}"
 | 
				
			||||||
 | 
					        bind $txt <Alt-Cyrillic_u> "$txt delete insert {insert lineend}"
 | 
				
			||||||
        bind $txt <Alt-s>           "Editor::SplitEditorH $w $fileType"
 | 
					        bind $txt <Alt-s>           "Editor::SplitEditorH $w $fileType"
 | 
				
			||||||
        bind $txt <Alt-ucircumflex> "Editor::SplitEditorH $w $fileType"
 | 
					        bind $txt <Alt-ucircumflex> "Editor::SplitEditorH $w $fileType"
 | 
				
			||||||
 | 
					        bind $txt <Alt-Cyrillic_hardsign> "Editor::SplitEditorH $w $fileType"
 | 
				
			||||||
        bind $txt <Alt-y> "Editor::TextCopy $txt"
 | 
					        bind $txt <Alt-y> "Editor::TextCopy $txt"
 | 
				
			||||||
 | 
					        bind $txt <Alt-Cyrillic_en> "Editor::TextCopy $txt"
 | 
				
			||||||
        bind $txt <Control-g> "Editor::GoToLineNumberDialog $txt"
 | 
					        bind $txt <Control-g> "Editor::GoToLineNumberDialog $txt"
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_pe> "Editor::GoToLineNumberDialog $txt"
 | 
				
			||||||
        bind $txt <Control-agrave> "Editor::FindDialog $w"
 | 
					        bind $txt <Control-agrave> "Editor::FindDialog $w"
 | 
				
			||||||
        bind $txt <Control-f> "Editor::FindDialog $txt"
 | 
					        bind $txt <Control-f> "Editor::FindDialog $txt"
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_a> "Editor::FindDialog $txt"
 | 
				
			||||||
        bind $txt <Control-F> "Editor::FindDialog $txt"
 | 
					        bind $txt <Control-F> "Editor::FindDialog $txt"
 | 
				
			||||||
        bind $txt <Control-odiaeresis> FileOper::Close
 | 
					        bind $txt <Control-odiaeresis> FileOper::Close
 | 
				
			||||||
        bind $txt <Control-w> FileOper::Close
 | 
					        bind $txt <Control-w> FileOper::Close
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_tse> FileOper::Close
 | 
				
			||||||
        bind $txt <Control-o> {
 | 
					        bind $txt <Control-o> {
 | 
				
			||||||
            set filePath [FileOper::OpenDialog]
 | 
					            set filePath [FileOper::OpenDialog]
 | 
				
			||||||
            if {$filePath != ""} {
 | 
					            if {$filePath != ""} {
 | 
				
			||||||
@@ -823,6 +843,16 @@ namespace eval Editor {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_shcha> {
 | 
				
			||||||
 | 
					            set filePath [FileOper::OpenDialog]
 | 
				
			||||||
 | 
					            if {$filePath != ""} {
 | 
				
			||||||
 | 
					                FileOper::Edit $filePath
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        bind $txt <Control-r> "Editor::SplitEditorForExecute $w $fileType $nb "
 | 
				
			||||||
 | 
					        bind $txt <Control-Cyrillic_ka> "Editor::SplitEditorForExecute $w $fileType $nb "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # bind $txt.t <KeyRelease> "Editor::ReleaseKey %K $txt.t $fileType"
 | 
					        # bind $txt.t <KeyRelease> "Editor::ReleaseKey %K $txt.t $fileType"
 | 
				
			||||||
        # bind $txt.t <KeyPress> "Editor::PressKey %K $txt.t"
 | 
					        # bind $txt.t <KeyPress> "Editor::PressKey %K $txt.t"
 | 
				
			||||||
        # bind $txt <KeyRelease> "Editor::Key %k %K" 
 | 
					        # bind $txt <KeyRelease> "Editor::Key %k %K" 
 | 
				
			||||||
@@ -883,20 +913,31 @@ namespace eval Editor {
 | 
				
			|||||||
        set lineNum [lindex [split $pos "."] 0]
 | 
					        set lineNum [lindex [split $pos "."] 0]
 | 
				
			||||||
        set posNum [lindex [split $pos "."] 1]
 | 
					        set posNum [lindex [split $pos "."] 1]
 | 
				
			||||||
        set symbol [string trim [string trimleft $symbol "\\"]]
 | 
					        set symbol [string trim [string trimleft $symbol "\\"]]
 | 
				
			||||||
        # puts "Selindex : $selIndex, cursor position: $pos"
 | 
					        # puts "Selindex : $selIndex, cursor position: $pos, Symbol: $symbol"
 | 
				
			||||||
        if {$selIndex != ""} {
 | 
					        if {$selIndex != ""} {
 | 
				
			||||||
            set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
 | 
					            set lineBegin [lindex [split [lindex $selIndex 0] "."] 0]
 | 
				
			||||||
            set posBegin [lindex [split [lindex $selIndex 0] "."] 1]
 | 
					            set posBegin [lindex [split [lindex $selIndex 0] "."] 1]
 | 
				
			||||||
            set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
 | 
					            set lineEnd [lindex [split [lindex $selIndex 1] "."] 0]
 | 
				
			||||||
            set posEnd [lindex [split [lindex $selIndex 1] "."] 1]
 | 
					            set posEnd [lindex [split [lindex $selIndex 1] "."] 1]
 | 
				
			||||||
            # set selText [$txt get $lineBegin.$posBegin $lineEnd.$posEnd]
 | 
					            set selText [$txt get $lineBegin.$posBegin $lineEnd.$posEnd]
 | 
				
			||||||
            set selText $selectionText
 | 
					            # set selText $selectionText
 | 
				
			||||||
            # puts "Selected text: $selText, pos: $pos, lineBegin: $lineBegin, posBegin: $posBegin, pos end: $posEnd"
 | 
					            # puts "Selected text: $selText, pos: $pos, lineBegin: $lineBegin, posBegin: $posBegin, pos end: $posEnd"
 | 
				
			||||||
            if {$posNum == $posEnd} {
 | 
					            if {$posNum == $posEnd} {
 | 
				
			||||||
                $txt insert $lineBegin.$posBegin "$symbol"
 | 
					                $txt insert $lineBegin.$posBegin "$symbol"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if {$posNum == $posBegin} {
 | 
					            if {$posNum == $posBegin} {
 | 
				
			||||||
                $txt insert $lineBegin.$posEnd "$symbol"
 | 
					               if {$symbol == {"} || $symbol == {_}} {
 | 
				
			||||||
 | 
					                    $txt insert $lineEnd.$posEnd "$selText$symbol"
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    $txt insert $lineEnd.$posEnd "$symbol"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if {$symbol == "'"} {
 | 
				
			||||||
 | 
					                if {$posBegin == 0} {
 | 
				
			||||||
 | 
					                    $txt insert $pos "$symbol"
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    $txt insert "$pos + 1 chars" "$symbol"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            $txt highlight $lineBegin.$posBegin $lineEnd.end
 | 
					            $txt highlight $lineBegin.$posBegin $lineEnd.end
 | 
				
			||||||
            # $txt insert $lineBegin.[expr $posBegin + 1] "$symbol"
 | 
					            # $txt insert $lineBegin.[expr $posBegin + 1] "$symbol"
 | 
				
			||||||
@@ -921,10 +962,11 @@ namespace eval Editor {
 | 
				
			|||||||
        # set fileName untitled-$untitledNumber
 | 
					        # set fileName untitled-$untitledNumber
 | 
				
			||||||
        set fileFullPath untitled-$untitledNumber
 | 
					        set fileFullPath untitled-$untitledNumber
 | 
				
			||||||
        #puts [Tree::InsertItem $tree {} $fileFullPath "file" $fileName]
 | 
					        #puts [Tree::InsertItem $tree {} $fileFullPath "file" $fileName]
 | 
				
			||||||
        set nbEditorItem [NB::InsertItem $nbEditor  $fileFullPath "file"]
 | 
					        set nbEditorItem [NB::InsertItem $nbEditor $fileFullPath "file"]
 | 
				
			||||||
        # puts "$nbEditorItem, $nbEditor"
 | 
					        # puts "$nbEditorItem, $nbEditor"
 | 
				
			||||||
        Editor $fileFullPath $nbEditor $nbEditorItem
 | 
					        Editor $fileFullPath $nbEditor $nbEditorItem
 | 
				
			||||||
        SetModifiedFlag $nbEditorItem
 | 
					        SetModifiedFlag $nbEditorItem $nbEditor
 | 
				
			||||||
 | 
					        focus -force $nbEditorItem.frmText.t.t
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    proc ReadStructure {txt treeItemName} {
 | 
					    proc ReadStructure {txt treeItemName} {
 | 
				
			||||||
@@ -941,7 +983,7 @@ namespace eval Editor {
 | 
				
			|||||||
                if {[eval [dict get $lexers $fileType procRegexpCommand]]} {
 | 
					                if {[eval [dict get $lexers $fileType procRegexpCommand]]} {
 | 
				
			||||||
                    set procName_ [string trim $procName]
 | 
					                    set procName_ [string trim $procName]
 | 
				
			||||||
                    if {$treeItemName ne ""} {
 | 
					                    if {$treeItemName ne ""} {
 | 
				
			||||||
                        puts [Tree::InsertItem $tree $treeItemName $procName_  "procedure" "$procName_ ($params)"]
 | 
					                        Tree::InsertItem $tree $treeItemName $procName_  "procedure" "$procName_ ($params)"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    lappend procList [list $procName_ $params]
 | 
					                    lappend procList [list $procName_ $params]
 | 
				
			||||||
                    unset procName_
 | 
					                    unset procName_
 | 
				
			||||||
@@ -965,7 +1007,7 @@ namespace eval Editor {
 | 
				
			|||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        set varType ""
 | 
					                        set varType ""
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    puts "variable: $varName, value: $varValue, type: $varType"
 | 
					                    # puts "variable: $varName, value: $varValue, type: $varType"
 | 
				
			||||||
                    lappend varList [list $varName $varValue]
 | 
					                    lappend varList [list $varName $varValue]
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -975,7 +1017,7 @@ namespace eval Editor {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    proc FindFunction {txt findString} {
 | 
					    proc FindFunction {txt findString} {
 | 
				
			||||||
        puts "txt: $txt, $findString"
 | 
					        # puts "txt: $txt, $findString"
 | 
				
			||||||
        set pos "0.0"
 | 
					        set pos "0.0"
 | 
				
			||||||
        $txt see $pos
 | 
					        $txt see $pos
 | 
				
			||||||
        set line [lindex [split $pos "."] 0]
 | 
					        set line [lindex [split $pos "."] 0]
 | 
				
			||||||
@@ -1042,7 +1084,7 @@ namespace eval Editor {
 | 
				
			|||||||
    # Вызов диалога со списком процедур или функций присутствующих в тексте
 | 
					    # Вызов диалога со списком процедур или функций присутствующих в тексте
 | 
				
			||||||
    proc GoToFunction { w } {
 | 
					    proc GoToFunction { w } {
 | 
				
			||||||
        global tree editors
 | 
					        global tree editors
 | 
				
			||||||
        puts $w
 | 
					        # puts $w
 | 
				
			||||||
        # set txt $w.frmText.t
 | 
					        # set txt $w.frmText.t
 | 
				
			||||||
        set txt $w
 | 
					        set txt $w
 | 
				
			||||||
        set box        [$txt bbox insert]
 | 
					        set box        [$txt bbox insert]
 | 
				
			||||||
@@ -1052,7 +1094,7 @@ namespace eval Editor {
 | 
				
			|||||||
        # puts "--$txt"
 | 
					        # puts "--$txt"
 | 
				
			||||||
        # puts $editors($txt)
 | 
					        # puts $editors($txt)
 | 
				
			||||||
        foreach item [dict get $editors $txt procedureList] {
 | 
					        foreach item [dict get $editors $txt procedureList] {
 | 
				
			||||||
            puts $item
 | 
					            # puts $item
 | 
				
			||||||
            lappend l [lindex $item 0]
 | 
					            lappend l [lindex $item 0]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if {$l ne ""} {
 | 
					        if {$l ne ""} {
 | 
				
			||||||
@@ -1144,7 +1186,7 @@ namespace eval Editor {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    proc FindReplaceText {txt findString replaceString regexp} {
 | 
					    proc FindReplaceText {txt findString replaceString regexp} {
 | 
				
			||||||
        global nbEditor
 | 
					        global nbEditor
 | 
				
			||||||
        puts [focus]
 | 
					        # puts [focus]
 | 
				
			||||||
        # set txt [$nbEditor select].frmText.t
 | 
					        # set txt [$nbEditor select].frmText.t
 | 
				
			||||||
        $txt tag remove sel 1.0 end
 | 
					        $txt tag remove sel 1.0 end
 | 
				
			||||||
        # $txt see $pos
 | 
					        # $txt see $pos
 | 
				
			||||||
@@ -1176,8 +1218,13 @@ namespace eval Editor {
 | 
				
			|||||||
        # puts $lstFindIndex
 | 
					        # puts $lstFindIndex
 | 
				
			||||||
        # puts $matchIndexPair
 | 
					        # puts $matchIndexPair
 | 
				
			||||||
        # set lstFindIndex [$txt search -all "$selectionText" 0.0]
 | 
					        # set lstFindIndex [$txt search -all "$selectionText" 0.0]
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        # Найдем разницу в длине строк для установки правильного
 | 
				
			||||||
 | 
					        # индекса для выделения текста после вставки
 | 
				
			||||||
 | 
					        set stringLengthDiff [expr [string length $findString] - [string length $replaceString]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        set i 0
 | 
					        set i 0
 | 
				
			||||||
        foreach ind $lstFindIndex {
 | 
					        foreach ind [lsort -dictionary -decreasing $lstFindIndex] {
 | 
				
			||||||
            set selFindLine [lindex [split $ind "."] 0]
 | 
					            set selFindLine [lindex [split $ind "."] 0]
 | 
				
			||||||
            set selFindRow [lindex [split $ind "."] 1]
 | 
					            set selFindRow [lindex [split $ind "."] 1]
 | 
				
			||||||
            # set endInd "$selFindLine.[expr $selFindRow + $symNumbers]"
 | 
					            # set endInd "$selFindLine.[expr $selFindRow + $symNumbers]"
 | 
				
			||||||
@@ -1185,8 +1232,15 @@ namespace eval Editor {
 | 
				
			|||||||
            # puts "$ind; $selFindLine, $selFindRow; $endInd "
 | 
					            # puts "$ind; $selFindLine, $selFindRow; $endInd "
 | 
				
			||||||
            if {$replaceString ne ""} {
 | 
					            if {$replaceString ne ""} {
 | 
				
			||||||
                $txt replace $ind $endInd $replaceString
 | 
					                $txt replace $ind $endInd $replaceString
 | 
				
			||||||
 | 
					                # Вычисляем индекс вхождения строки после замены для выделения в тексте
 | 
				
			||||||
 | 
					                if {$stringLengthDiff > 0} {
 | 
				
			||||||
 | 
					                    $txt tag add sel $ind "$endInd - [expr [tcl::mathfunc::abs $stringLengthDiff]] chars"
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    $txt tag add sel $ind "$endInd + [expr [tcl::mathfunc::abs $stringLengthDiff]] chars"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                $txt tag add sel $ind $endInd
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            $txt tag add sel $ind $endInd
 | 
					 | 
				
			||||||
            incr i
 | 
					            incr i
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        .finddialog.lblCounter configure -text "[::msgcat::mc "Finded"]: $i"
 | 
					        .finddialog.lblCounter configure -text "[::msgcat::mc "Finded"]: $i"
 | 
				
			||||||
@@ -1228,7 +1282,7 @@ namespace eval Editor {
 | 
				
			|||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            if {[$nbEditor select] ne ""} {
 | 
					            if {[$nbEditor select] ne ""} {
 | 
				
			||||||
                set txt [$nbEditor select].frmText.t
 | 
					                set txt [$nbEditor select].frmText.t
 | 
				
			||||||
                puts $txt
 | 
					                # puts $txt
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                return
 | 
					                return
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -1316,7 +1370,7 @@ namespace eval Editor {
 | 
				
			|||||||
    # Horizontal split the Editor text widget
 | 
					    # Horizontal split the Editor text widget
 | 
				
			||||||
    proc SplitEditorH {w fileType nb} {
 | 
					    proc SplitEditorH {w fileType nb} {
 | 
				
			||||||
        global cfgVariables
 | 
					        global cfgVariables
 | 
				
			||||||
        puts [$w.panelTxt panes]
 | 
					        # puts [$w.panelTxt panes]
 | 
				
			||||||
        if [winfo exists $w.frmText2] {
 | 
					        if [winfo exists $w.frmText2] {
 | 
				
			||||||
            $w.panelTxt forget $w.frmText2
 | 
					            $w.panelTxt forget $w.frmText2
 | 
				
			||||||
            destroy $w.frmText2
 | 
					            destroy $w.frmText2
 | 
				
			||||||
@@ -1336,7 +1390,7 @@ namespace eval Editor {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    proc SplitEditorV {fileFullPath} {
 | 
					    proc SplitEditorV {fileFullPath} {
 | 
				
			||||||
        global cfgVariables
 | 
					        global cfgVariables
 | 
				
			||||||
        regsub -all {\.|/|\\|\s} $fileFullPath "_" itemName
 | 
					        regsub -all {\.|/|\\|\s|:} $fileFullPath "_" itemName
 | 
				
			||||||
        set itemName ".frmWork.nbEditor2.$itemName"
 | 
					        set itemName ".frmWork.nbEditor2.$itemName"
 | 
				
			||||||
        # puts $itemName
 | 
					        # puts $itemName
 | 
				
			||||||
        if {[winfo exists $itemName] == 1} {
 | 
					        if {[winfo exists $itemName] == 1} {
 | 
				
			||||||
@@ -1359,8 +1413,6 @@ namespace eval Editor {
 | 
				
			|||||||
        # grid rowconfigure .frmWork .frmWork.nbEditor2 -weight 1
 | 
					        # grid rowconfigure .frmWork .frmWork.nbEditor2 -weight 1
 | 
				
			||||||
        .frmWork.panelNB add .frmWork.nbEditor2 -weight 0
 | 
					        .frmWork.panelNB add .frmWork.nbEditor2 -weight 0
 | 
				
			||||||
        puts [FileOper::Edit $fileFullPath .frmWork.nbEditor2]
 | 
					        puts [FileOper::Edit $fileFullPath .frmWork.nbEditor2]
 | 
				
			||||||
        
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    proc GoToLineNumber {text lineNumber} {
 | 
					    proc GoToLineNumber {text lineNumber} {
 | 
				
			||||||
@@ -1458,8 +1510,8 @@ namespace eval Editor {
 | 
				
			|||||||
        dict set editors $txt fileType $fileType
 | 
					        dict set editors $txt fileType $fileType
 | 
				
			||||||
        dict set editors $txt procedureList [list]
 | 
					        dict set editors $txt procedureList [list]
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        puts ">>[dict get $editors $txt fileType]"
 | 
					        # puts ">>[dict get $editors $txt fileType]"
 | 
				
			||||||
        puts ">>[dict get $editors $txt procedureList]"
 | 
					        # puts ">>[dict get $editors $txt procedureList]"
 | 
				
			||||||
		# puts ">>>>> $editors"
 | 
							# puts ">>>>> $editors"
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if {[info procs ::Highlight::$fileType] ne ""} {
 | 
					        if {[info procs ::Highlight::$fileType] ne ""} {
 | 
				
			||||||
@@ -1484,6 +1536,7 @@ namespace eval Editor {
 | 
				
			|||||||
            ICO
 | 
					            ICO
 | 
				
			||||||
            XPM
 | 
					            XPM
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        # puts "$itemName"
 | 
				
			||||||
        set fr $itemName
 | 
					        set fr $itemName
 | 
				
			||||||
        if ![string match "*untitled*" $itemName] {
 | 
					        if ![string match "*untitled*" $itemName] {
 | 
				
			||||||
             set lblText $fileFullPath
 | 
					             set lblText $fileFullPath
 | 
				
			||||||
@@ -1505,9 +1558,13 @@ namespace eval Editor {
 | 
				
			|||||||
            -command "Editor::SplitEditorH $fr $fileType $nb"
 | 
					            -command "Editor::SplitEditorH $fr $fileType $nb"
 | 
				
			||||||
        ttk::button $fr.header.$btnSplitV -image split_vertical_11x11 \
 | 
					        ttk::button $fr.header.$btnSplitV -image split_vertical_11x11 \
 | 
				
			||||||
            -command "Editor::SplitEditorV $fileFullPath"
 | 
					            -command "Editor::SplitEditorV $fileFullPath"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        set btnSplitExecute "btnSplitExec[string range $itemName [expr [string last "." $itemName] +1] end]"
 | 
				
			||||||
 | 
					        ttk::button $fr.header.$btnSplitExecute -image execute_11x11 \
 | 
				
			||||||
 | 
					            -command "Editor::SplitEditorForExecute $fr $fileType $nb $fileFullPath"
 | 
				
			||||||
        # pack $fr.$btnSplitH $fr.$btnSplitV  -side right  -anchor e
 | 
					        # pack $fr.$btnSplitH $fr.$btnSplitV  -side right  -anchor e
 | 
				
			||||||
        pack $fr.header.$lblName -side left -expand true -fill x
 | 
					        pack $fr.header.$lblName -side left -expand true -fill x
 | 
				
			||||||
        pack $fr.header.$btnSplitV $fr.header.$btnSplitH -side right
 | 
					        pack $fr.header.$btnSplitV $fr.header.$btnSplitH $fr.header.$btnSplitExecute -side right
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        pack $fr.header -side top -fill x
 | 
					        pack $fr.header -side top -fill x
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -1525,4 +1582,27 @@ namespace eval Editor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return $fr
 | 
					        return $fr
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    proc SplitEditorForExecute {w fileType nb {fileFullPath ""}} {
 | 
				
			||||||
 | 
					        global cfgVariables tree
 | 
				
			||||||
 | 
					        if {$fileFullPath eq ""} {
 | 
				
			||||||
 | 
					            set treeItem "file::[string range $w [expr [string last "." $w] +1] end ]"
 | 
				
			||||||
 | 
					            set fileFullPath [Tree::GetItemID $tree $treeItem]
 | 
				
			||||||
 | 
					            puts $fileFullPath
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        # puts [$w.panelTxt panes]
 | 
				
			||||||
 | 
					        puts "$w $fileType $nb $fileFullPath"
 | 
				
			||||||
 | 
					        if [winfo exists $w.frmText2] {
 | 
				
			||||||
 | 
					            $w.panelTxt forget $w.frmText2
 | 
				
			||||||
 | 
					            destroy $w.frmText2
 | 
				
			||||||
 | 
					            focus -force $w.frmText.t.t
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        set frmText [ttk::frame $w.frmText2 -border 1]
 | 
				
			||||||
 | 
					        $w.panelTxt add $frmText -weight 1
 | 
				
			||||||
 | 
					        # focus -force $frmText.t.t
 | 
				
			||||||
 | 
					        Execute $fileFullPath $frmText $w
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										174
									
								
								lib/files.tcl
									
									
									
									
									
								
							
							
						
						
									
										174
									
								
								lib/files.tcl
									
									
									
									
									
								
							@@ -9,12 +9,42 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace eval FileOper {
 | 
					namespace eval FileOper {
 | 
				
			||||||
    variable  types
 | 
					    global packages
 | 
				
			||||||
 | 
					    variable types
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    set ::types {
 | 
					    set ::types {
 | 
				
			||||||
        {"All files" *}
 | 
					        {"All files" *}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    #  Проверка поддерживаемых типов изображений
 | 
				
			||||||
 | 
					    # в зависимости устновлен пакет или нет
 | 
				
			||||||
 | 
					    proc SupportImageType {type} {
 | 
				
			||||||
 | 
					        if {[PackagePresent Img] eq "true"} { 
 | 
				
			||||||
 | 
					            switch $type {
 | 
				
			||||||
 | 
					                jpeg { return true }
 | 
				
			||||||
 | 
					                png { return true }
 | 
				
			||||||
 | 
					                gif { return true }
 | 
				
			||||||
 | 
					                bmp { return true }
 | 
				
			||||||
 | 
					                svg { return true }
 | 
				
			||||||
 | 
					                ppm { return true }
 | 
				
			||||||
 | 
					                pgm { return true }
 | 
				
			||||||
 | 
					                tiff { return true }
 | 
				
			||||||
 | 
					                xbm { return true }
 | 
				
			||||||
 | 
					                xpm { return true }
 | 
				
			||||||
 | 
					                default { return false}
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            switch $type {
 | 
				
			||||||
 | 
					                png { return true }
 | 
				
			||||||
 | 
					                gif { return true }
 | 
				
			||||||
 | 
					                bmp { return true }
 | 
				
			||||||
 | 
					                svg { return true }
 | 
				
			||||||
 | 
					                ppm { return true }
 | 
				
			||||||
 | 
					                pgm { return true }
 | 
				
			||||||
 | 
					                default { return false}
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    proc GetFileMimeType {fileFullPath {opt ""}} {
 | 
					    proc GetFileMimeType {fileFullPath {opt ""}} {
 | 
				
			||||||
        global cfgVariables
 | 
					        global cfgVariables
 | 
				
			||||||
        # Проверям наличие программы в системе, если есть то добавляем опции
 | 
					        # Проверям наличие программы в системе, если есть то добавляем опции
 | 
				
			||||||
@@ -31,7 +61,8 @@ namespace eval FileOper {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        # lappend cmd $activeProject
 | 
					        # lappend cmd $activeProject
 | 
				
			||||||
        lappend cmd $fileFullPath
 | 
					        lappend cmd $fileFullPath
 | 
				
			||||||
        catch $cmd pipe 
 | 
					        # puts $cmd
 | 
				
			||||||
 | 
					        catch $cmd pipe
 | 
				
			||||||
        # puts $pipe
 | 
					        # puts $pipe
 | 
				
			||||||
        if [regexp -nocase -- {(\w+)/([\w\-_\.]+); charset=([[:alnum:]-]+)} $pipe m fType fExt fCharset] {
 | 
					        if [regexp -nocase -- {(\w+)/([\w\-_\.]+); charset=([[:alnum:]-]+)} $pipe m fType fExt fCharset] {
 | 
				
			||||||
            puts "$fType $fExt $fCharset"
 | 
					            puts "$fType $fExt $fCharset"
 | 
				
			||||||
@@ -43,17 +74,74 @@ namespace eval FileOper {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        # линуксовый file не всегда корректно определяет тип файла
 | 
				
			||||||
 | 
					        # используем пакет из tcl
 | 
				
			||||||
 | 
					        lassign [::fileutil::fileType $fileFullPath] fType fBinaryType fBinaryInterp
 | 
				
			||||||
 | 
					        puts "File type is $fType, $fBinaryType, $fBinaryInterp"
 | 
				
			||||||
 | 
					        set ext [string tolower [file extension $fileFullPath]]
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        # Установка корректного типа для svg
 | 
				
			||||||
 | 
					        # Но для новых версий tcl
 | 
				
			||||||
 | 
					        switch $ext {
 | 
				
			||||||
 | 
					            ".svg" {
 | 
				
			||||||
 | 
					                set fType "binary"
 | 
				
			||||||
 | 
					                set fBinaryInterp "svg"
 | 
				
			||||||
 | 
					                set fBinaryType "graphic"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ".torrent" {
 | 
				
			||||||
 | 
					                set fType "binary"
 | 
				
			||||||
 | 
					                set fBinaryInterp "torrent"
 | 
				
			||||||
 | 
					                set fBinaryType "x-bittorrent"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ".pdf" {
 | 
				
			||||||
 | 
					                set fType "binary"
 | 
				
			||||||
 | 
					                set fBinaryInterp "pdf"
 | 
				
			||||||
 | 
					                set fBinaryType "binary"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        puts "File type is $fType, $fBinaryType, $fBinaryInterp, $ext"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch $fType {
 | 
					        switch $fType {
 | 
				
			||||||
            "application" {
 | 
					            "binary" {
 | 
				
			||||||
                if {$fExt ne "json"} {
 | 
					                if {$fBinaryType ne ""} {
 | 
				
			||||||
                    return false
 | 
					                    switch $fBinaryType {
 | 
				
			||||||
 | 
					                        "graphic" {
 | 
				
			||||||
 | 
					                            if {[SupportImageType $fBinaryInterp] eq "true"} {
 | 
				
			||||||
 | 
					                                return image
 | 
				
			||||||
 | 
					                            } else {
 | 
				
			||||||
 | 
					                                set answer [tk_messageBox -message [::msgcat::mc "The file looks like a image. Support not implemented yet."] -icon question -type ok]
 | 
				
			||||||
 | 
					                                switch $answer {
 | 
				
			||||||
 | 
					                                    ok {
 | 
				
			||||||
 | 
					                                        return false
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        default {
 | 
				
			||||||
 | 
					                            return binary
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    return binary
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            "text" {
 | 
					            "text" {
 | 
				
			||||||
                return text
 | 
					                return text
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            "image" {
 | 
					            "image" {
 | 
				
			||||||
                return false
 | 
					                if {[SupportImageType $fBinaryInterp] eq "true"} {
 | 
				
			||||||
 | 
					                    return image
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    set answer [tk_messageBox -message [::msgcat::mc "The file looks like a image. Support not implemented yet."] -icon question -type ok]
 | 
				
			||||||
 | 
					                    switch $answer {
 | 
				
			||||||
 | 
					                        ok {
 | 
				
			||||||
 | 
					                            return false
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            "empty" {
 | 
				
			||||||
 | 
					                return text
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            default {
 | 
					            default {
 | 
				
			||||||
                return false
 | 
					                return false
 | 
				
			||||||
@@ -145,6 +233,7 @@ namespace eval FileOper {
 | 
				
			|||||||
        # }
 | 
					        # }
 | 
				
			||||||
        # .frmStatus.lblGitLogo configure -image git_logo_20x20
 | 
					        # .frmStatus.lblGitLogo configure -image git_logo_20x20
 | 
				
			||||||
        # .frmStatus.lblGit configure -text "[::msgcat::mc "Branch"]: [Git::Branches current]"
 | 
					        # .frmStatus.lblGit configure -text "[::msgcat::mc "Branch"]: [Git::Branches current]"
 | 
				
			||||||
 | 
					        AddRecentEditedFolder $fullPath
 | 
				
			||||||
        return $fullPath
 | 
					        return $fullPath
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -201,11 +290,10 @@ namespace eval FileOper {
 | 
				
			|||||||
        if {[lsearch -exact [.frmWork.panelNB panes] .frmWork.nbEditor2] != -1} {
 | 
					        if {[lsearch -exact [.frmWork.panelNB panes] .frmWork.nbEditor2] != -1} {
 | 
				
			||||||
            .frmWork.panelNB forget .frmWork.nbEditor2
 | 
					            .frmWork.panelNB forget .frmWork.nbEditor2
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        foreach nbItem [array names modified] {
 | 
					        foreach nbItem [$nbEditor tabs] {
 | 
				
			||||||
            if {[info exists modified($nbItem)] == 1 && $modified($nbItem) eq "true"} {
 | 
					            catch {$nbEditor select $nbItem}
 | 
				
			||||||
                catch {$nbEditor select $nbItem}
 | 
					            if {[Close] eq "cancel"} {
 | 
				
			||||||
                # puts "close tab $nbItem"
 | 
					                return "cancel"
 | 
				
			||||||
                if {[Close] eq "cancel"} {return "cancel"}
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -255,18 +343,18 @@ namespace eval FileOper {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    proc Save {} {
 | 
					    proc Save {} {
 | 
				
			||||||
        global nbEditor tree env activeProject
 | 
					        global nbEditor tree env activeProject dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if [info exists activeProject] {
 | 
					        if [info exists activeProject] {
 | 
				
			||||||
            set dir $activeProject
 | 
					            set dirProject $activeProject
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            set dir $env(HOME)
 | 
					            set dirProject $env(HOME)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        set nbEditorItem [$nbEditor select]
 | 
					        set nbEditorItem [$nbEditor select]
 | 
				
			||||||
        puts "Saved editor text: $nbEditorItem"
 | 
					        # puts "Saved editor text: $nbEditorItem"
 | 
				
			||||||
        if [string match "*untitled*" $nbEditorItem] {
 | 
					        if [string match "*untitled*" $nbEditorItem] {
 | 
				
			||||||
            set filePath [tk_getSaveFile -initialdir $dir -filetypes $::types -parent .]
 | 
					            set filePath [tk_getSaveFile -initialdir $dirProject -filetypes $::types -parent .]
 | 
				
			||||||
            if {$filePath eq ""} {
 | 
					            if {$filePath eq ""} {
 | 
				
			||||||
                return
 | 
					                return
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -283,9 +371,12 @@ namespace eval FileOper {
 | 
				
			|||||||
        set editedText [$nbEditorItem.frmText.t get 0.0 end]
 | 
					        set editedText [$nbEditorItem.frmText.t get 0.0 end]
 | 
				
			||||||
        set f [open $filePath "w+"]
 | 
					        set f [open $filePath "w+"]
 | 
				
			||||||
        puts -nonewline $f $editedText
 | 
					        puts -nonewline $f $editedText
 | 
				
			||||||
        puts "$f was saved"
 | 
					        # puts "$f was saved"
 | 
				
			||||||
        close $f
 | 
					        close $f
 | 
				
			||||||
        ResetModifiedFlag $nbEditorItem $nbEditor
 | 
					        ResetModifiedFlag $nbEditorItem $nbEditor
 | 
				
			||||||
 | 
					        if {[file tail $filePath] eq "projman.ini"} {
 | 
				
			||||||
 | 
					            Config::read $dir(cfg)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    proc SaveAll {} {
 | 
					    proc SaveAll {} {
 | 
				
			||||||
@@ -312,7 +403,7 @@ namespace eval FileOper {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    proc ReadFolder {directory {parent ""}} {
 | 
					    proc ReadFolder {directory {parent ""}} {
 | 
				
			||||||
        global tree dir lexers  project
 | 
					        global tree dir lexers  project
 | 
				
			||||||
        puts "Read the folder $directory"
 | 
					        # puts "Read the folder $directory"
 | 
				
			||||||
        set rList ""
 | 
					        set rList ""
 | 
				
			||||||
        if {[catch {cd $directory}] != 0} {
 | 
					        if {[catch {cd $directory}] != 0} {
 | 
				
			||||||
            return ""
 | 
					            return ""
 | 
				
			||||||
@@ -384,33 +475,58 @@ namespace eval FileOper {
 | 
				
			|||||||
        # Delete emty last line
 | 
					        # Delete emty last line
 | 
				
			||||||
        if {[$txt get {end-1 line} end] eq "\n" || [$txt get {end-1 line} end] eq "\r\n"} {
 | 
					        if {[$txt get {end-1 line} end] eq "\n" || [$txt get {end-1 line} end] eq "\r\n"} {
 | 
				
			||||||
            $txt delete {end-1 line} end
 | 
					            $txt delete {end-1 line} end
 | 
				
			||||||
            puts ">[$txt get {end-1 line} end]<"
 | 
					            # puts ">[$txt get {end-1 line} end]<"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        $txt see 1.0
 | 
					        $txt see 1.0
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    proc Edit {fileFullPath {nbEditor .frmWork.nbEditor}} {
 | 
					    proc Edit {fileFullPath {nbEditor .frmWork.nbEditor}} {
 | 
				
			||||||
        global tree
 | 
					        global tree
 | 
				
			||||||
 | 
					        puts "$fileFullPath"
 | 
				
			||||||
        if {[file exists $fileFullPath] == 0} {
 | 
					        if {[file exists $fileFullPath] == 0} {
 | 
				
			||||||
            return false
 | 
					            return false
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            # puts [::fileutil::magic::filetype $fileFullPath]
 | 
					            # puts "$fileFullPath File type [::fileutil::magic::filetype $fileFullPath]"
 | 
				
			||||||
            set fileType [FileOper::GetFileMimeType $fileFullPath]
 | 
					            set fileType [FileOper::GetFileMimeType $fileFullPath]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # puts "$fileType <<<<<<<<<<<"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch $fileType {
 | 
					        switch $fileType {
 | 
				
			||||||
            "text" {
 | 
					            "text" {
 | 
				
			||||||
                # return text
 | 
					                # return text
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            "image" {
 | 
					            "image" {
 | 
				
			||||||
                # return image
 | 
					            }
 | 
				
			||||||
 | 
					            "binary" {
 | 
				
			||||||
 | 
					                 set answer [tk_messageBox -message [::msgcat::mc "The file looks like a binary file. Open anyway?"] \
 | 
				
			||||||
 | 
					                    -icon question -type yesno]
 | 
				
			||||||
 | 
					                switch $answer {
 | 
				
			||||||
 | 
					                    yes {}
 | 
				
			||||||
 | 
					                    no {return}
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            false {
 | 
					            false {
 | 
				
			||||||
                return
 | 
					                return
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        # Проверяем размер файла и если он больше 1мб вывести предупреждение
 | 
				
			||||||
 | 
					        # puts " File size = [file size $fileFullPath]"
 | 
				
			||||||
 | 
					        if {[file size $fileFullPath] > 1000000} {
 | 
				
			||||||
 | 
					             set answer [tk_messageBox -message [::msgcat::mc "The file size to big. Open anyway?"] \
 | 
				
			||||||
 | 
					                -detail [GetFileAttr $fileFullPath "size"] \
 | 
				
			||||||
 | 
					                -icon question -type yesno]
 | 
				
			||||||
 | 
					            switch $answer {
 | 
				
			||||||
 | 
					                yes {}
 | 
				
			||||||
 | 
					                no {return}
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        set filePath [file dirname $fileFullPath]
 | 
					        set filePath [file dirname $fileFullPath]
 | 
				
			||||||
        set fileName [file tail $fileFullPath]
 | 
					        set fileName [file tail $fileFullPath]
 | 
				
			||||||
        regsub -all {\.|/|\\|\s} $fileFullPath "_" itemName
 | 
					        
 | 
				
			||||||
 | 
					        regsub -all {\.|/|\\|\s|:} $fileFullPath "_" itemName
 | 
				
			||||||
 | 
					        set itemName [string tolower $itemName]
 | 
				
			||||||
        set itemName "$nbEditor.$itemName"
 | 
					        set itemName "$nbEditor.$itemName"
 | 
				
			||||||
        set treeItemName [Tree::InsertItem $tree {} $fileFullPath "file" $fileName]
 | 
					        set treeItemName [Tree::InsertItem $tree {} $fileFullPath "file" $fileName]
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -419,6 +535,11 @@ namespace eval FileOper {
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        if {[winfo exists $itemName] == 0} {
 | 
					        if {[winfo exists $itemName] == 0} {
 | 
				
			||||||
            NB::InsertItem $nbEditor $fileFullPath "file"
 | 
					            NB::InsertItem $nbEditor $fileFullPath "file"
 | 
				
			||||||
 | 
					            if {$fileType eq "image"} {
 | 
				
			||||||
 | 
					                ImageViewer $fileFullPath $itemName $itemName
 | 
				
			||||||
 | 
					                return $itemName
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
            Editor::Editor $fileFullPath $nbEditor $itemName
 | 
					            Editor::Editor $fileFullPath $nbEditor $itemName
 | 
				
			||||||
            ReadFile $fileFullPath $itemName
 | 
					            ReadFile $fileFullPath $itemName
 | 
				
			||||||
            $itemName.frmText.t highlight 1.0 end
 | 
					            $itemName.frmText.t highlight 1.0 end
 | 
				
			||||||
@@ -426,6 +547,11 @@ namespace eval FileOper {
 | 
				
			|||||||
            $itemName.frmText.t see 1.1
 | 
					            $itemName.frmText.t see 1.1
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        $nbEditor select $itemName
 | 
					        $nbEditor select $itemName
 | 
				
			||||||
 | 
					        focus -force $itemName
 | 
				
			||||||
 | 
					        if {$fileType eq "image"} {
 | 
				
			||||||
 | 
					            # ImageViewer $fileFullPath $itemName $itemName
 | 
				
			||||||
 | 
					            return $itemName
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        Editor::ReadStructure $itemName.frmText.t $treeItemName
 | 
					        Editor::ReadStructure $itemName.frmText.t $treeItemName
 | 
				
			||||||
        GetVariablesFromFile $fileFullPath
 | 
					        GetVariablesFromFile $fileFullPath
 | 
				
			||||||
        $itemName.frmText.t.t mark set insert 1.0
 | 
					        $itemName.frmText.t.t mark set insert 1.0
 | 
				
			||||||
@@ -433,6 +559,8 @@ namespace eval FileOper {
 | 
				
			|||||||
        focus -force $itemName.frmText.t.t
 | 
					        focus -force $itemName.frmText.t.t
 | 
				
			||||||
        .frmStatus.lblSize configure -text [GetFileAttr $fileFullPath "size"]
 | 
					        .frmStatus.lblSize configure -text [GetFileAttr $fileFullPath "size"]
 | 
				
			||||||
        .frmStatus.lblEncoding configure -text [GetFileMimeType $fileFullPath "charset"]
 | 
					        .frmStatus.lblEncoding configure -text [GetFileMimeType $fileFullPath "charset"]
 | 
				
			||||||
 | 
					        # puts ">> $itemName"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return $itemName
 | 
					        return $itemName
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										50
									
								
								lib/git.tcl
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								lib/git.tcl
									
									
									
									
									
								
							@@ -11,7 +11,29 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace eval Git {
 | 
					namespace eval Git {
 | 
				
			||||||
    variable gitCommand
 | 
					    variable gitCommand
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
 | 
					    # Определим путь до команды git в зависимсти от платформы
 | 
				
			||||||
 | 
					    proc CommandPathSetting {} {
 | 
				
			||||||
 | 
					        global cfgVariables tcl_platform
 | 
				
			||||||
 | 
					        if {$cfgVariables(gitCommand) == ""} {
 | 
				
			||||||
 | 
					            if {$tcl_platform(platform) eq "windows"} {
 | 
				
			||||||
 | 
					                set cmd {where git}
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                set cmd {which git}
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if {[catch {exec {*}$cmd} git_path]} {
 | 
				
			||||||
 | 
					                puts "Git не найден в системе"
 | 
				
			||||||
 | 
					                set cfgVariables(gitCommand) "Git not found"
 | 
				
			||||||
 | 
					                return
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            set git_path [string trim $git_path]
 | 
				
			||||||
 | 
					            set first_path [lindex [split $git_path "\n"] 0]
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            # puts "Git найден: $first_path"
 | 
				
			||||||
 | 
					            set cfgVariables(gitCommand) $first_path
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    proc GetConfig {option} {
 | 
					    proc GetConfig {option} {
 | 
				
			||||||
        global activeProject cfgVariables
 | 
					        global activeProject cfgVariables
 | 
				
			||||||
        set confOptions {
 | 
					        set confOptions {
 | 
				
			||||||
@@ -69,8 +91,8 @@ namespace eval Git {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        catch $cmd pipe
 | 
					        catch $cmd pipe
 | 
				
			||||||
        puts $cmd
 | 
					        # puts $cmd
 | 
				
			||||||
        puts $pipe
 | 
					        # puts $pipe
 | 
				
			||||||
        if [regexp -nocase -- {^error:} $pipe match] {
 | 
					        if [regexp -nocase -- {^error:} $pipe match] {
 | 
				
			||||||
            ShowMessage "Command: '$cmd' error" $pipe
 | 
					            ShowMessage "Command: '$cmd' error" $pipe
 | 
				
			||||||
            return 
 | 
					            return 
 | 
				
			||||||
@@ -100,7 +122,7 @@ namespace eval Git {
 | 
				
			|||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            return ""
 | 
					            return ""
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        puts $activeProject
 | 
					        # puts $activeProject
 | 
				
			||||||
        lappend cmd $cfgVariables(gitCommand)
 | 
					        lappend cmd $cfgVariables(gitCommand)
 | 
				
			||||||
        lappend cmd "branch"
 | 
					        lappend cmd "branch"
 | 
				
			||||||
        # lappend cmd "-s"
 | 
					        # lappend cmd "-s"
 | 
				
			||||||
@@ -145,7 +167,7 @@ namespace eval Git {
 | 
				
			|||||||
        lappend cmd "--"
 | 
					        lappend cmd "--"
 | 
				
			||||||
        lappend cmd $activeProject
 | 
					        lappend cmd $activeProject
 | 
				
			||||||
        catch $cmd pipe
 | 
					        catch $cmd pipe
 | 
				
			||||||
        puts $cmd
 | 
					        # puts $cmd
 | 
				
			||||||
        if [regexp -nocase -- {^fatal:} $pipe match] {
 | 
					        if [regexp -nocase -- {^fatal:} $pipe match] {
 | 
				
			||||||
            ShowMessage "Command: '$cmd' error" $pipe
 | 
					            ShowMessage "Command: '$cmd' error" $pipe
 | 
				
			||||||
            return 
 | 
					            return 
 | 
				
			||||||
@@ -167,7 +189,7 @@ namespace eval Git {
 | 
				
			|||||||
        lappend cmd "--"
 | 
					        lappend cmd "--"
 | 
				
			||||||
        lappend cmd [file join $activeProject [string trimleft $f "../"]]
 | 
					        lappend cmd [file join $activeProject [string trimleft $f "../"]]
 | 
				
			||||||
        catch $cmd pipe
 | 
					        catch $cmd pipe
 | 
				
			||||||
        puts $cmd
 | 
					        # puts $cmd
 | 
				
			||||||
        if [regexp -nocase -- {^fatal:} $pipe match] {
 | 
					        if [regexp -nocase -- {^fatal:} $pipe match] {
 | 
				
			||||||
            ShowMessage "Command: '$cmd' error" $pipe
 | 
					            ShowMessage "Command: '$cmd' error" $pipe
 | 
				
			||||||
            return 
 | 
					            return 
 | 
				
			||||||
@@ -228,7 +250,7 @@ namespace eval Git {
 | 
				
			|||||||
        # set cmd exec
 | 
					        # set cmd exec
 | 
				
			||||||
        cd $activeProject
 | 
					        cd $activeProject
 | 
				
			||||||
        set url [Git::GetConfig remote.origin.url]
 | 
					        set url [Git::GetConfig remote.origin.url]
 | 
				
			||||||
        puts $url
 | 
					        # puts $url
 | 
				
			||||||
        if [regexp -nocase -all -- {^(http|https)://(.+)} $url match proto address] {
 | 
					        if [regexp -nocase -all -- {^(http|https)://(.+)} $url match proto address] {
 | 
				
			||||||
            Git::AuthorizationDialog "[::msgcat::mc "Authorization required"] [::msgcat::mc "for"] Git" $url
 | 
					            Git::AuthorizationDialog "[::msgcat::mc "Authorization required"] [::msgcat::mc "for"] Git" $url
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
@@ -248,7 +270,7 @@ namespace eval Git {
 | 
				
			|||||||
        # lappend cmd "$activeProject"
 | 
					        # lappend cmd "$activeProject"
 | 
				
			||||||
        # puts "$cmd"
 | 
					        # puts "$cmd"
 | 
				
			||||||
        catch $cmd pipe
 | 
					        catch $cmd pipe
 | 
				
			||||||
        puts $pipe
 | 
					        # puts $pipe
 | 
				
			||||||
        if [regexp -nocase -- {^fatal:} $pipe match] {
 | 
					        if [regexp -nocase -- {^fatal:} $pipe match] {
 | 
				
			||||||
            ShowMessage "Command: '$cmd' error" $pipe
 | 
					            ShowMessage "Command: '$cmd' error" $pipe
 | 
				
			||||||
            return 
 | 
					            return 
 | 
				
			||||||
@@ -301,7 +323,7 @@ namespace eval Git {
 | 
				
			|||||||
            $w.body.lCommit delete $itemNumber
 | 
					            $w.body.lCommit delete $itemNumber
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        catch $cmd pipe
 | 
					        catch $cmd pipe
 | 
				
			||||||
        puts $cmd
 | 
					        # puts $cmd
 | 
				
			||||||
        $w.body.t delete 1.0 end
 | 
					        $w.body.t delete 1.0 end
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -357,7 +379,7 @@ namespace eval Git {
 | 
				
			|||||||
        $w.body.t delete 1.0 end
 | 
					        $w.body.t delete 1.0 end
 | 
				
			||||||
        set i 0
 | 
					        set i 0
 | 
				
			||||||
        foreach line [Git::Diff $fileName] {
 | 
					        foreach line [Git::Diff $fileName] {
 | 
				
			||||||
            puts $line
 | 
					            # puts $line
 | 
				
			||||||
            if {$i > 3} {
 | 
					            if {$i > 3} {
 | 
				
			||||||
                $w.body.t inser end "$line\n"
 | 
					                $w.body.t inser end "$line\n"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -381,7 +403,7 @@ namespace eval Git {
 | 
				
			|||||||
            $w.body.lBox delete $itemNumber
 | 
					            $w.body.lBox delete $itemNumber
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        catch $cmd pipe
 | 
					        catch $cmd pipe
 | 
				
			||||||
        puts $cmd
 | 
					        # puts $cmd
 | 
				
			||||||
        $w.body.t delete 1.0 end
 | 
					        $w.body.t delete 1.0 end
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -396,7 +418,7 @@ namespace eval Git {
 | 
				
			|||||||
        puts $cmd
 | 
					        puts $cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        catch $cmd pipe
 | 
					        catch $cmd pipe
 | 
				
			||||||
        puts $pipe
 | 
					        # puts $pipe
 | 
				
			||||||
        return
 | 
					        return
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    proc Config {repo user email} {
 | 
					    proc Config {repo user email} {
 | 
				
			||||||
@@ -407,7 +429,7 @@ namespace eval Git {
 | 
				
			|||||||
        lappend cmd "config"
 | 
					        lappend cmd "config"
 | 
				
			||||||
        lappend cmd $repo
 | 
					        lappend cmd $repo
 | 
				
			||||||
        lappend cmd $dir
 | 
					        lappend cmd $dir
 | 
				
			||||||
        puts $cmd
 | 
					        # puts $cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # catch $cmd pipe
 | 
					        # catch $cmd pipe
 | 
				
			||||||
        # puts $pipe
 | 
					        # puts $pipe
 | 
				
			||||||
@@ -425,7 +447,7 @@ namespace eval Git {
 | 
				
			|||||||
        lappend cmd $cfgVariables(gitCommand)
 | 
					        lappend cmd $cfgVariables(gitCommand)
 | 
				
			||||||
        lappend cmd "init"
 | 
					        lappend cmd "init"
 | 
				
			||||||
        lappend cmd $activeProject
 | 
					        lappend cmd $activeProject
 | 
				
			||||||
        puts $cmd
 | 
					        # puts $cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        catch $cmd pipe
 | 
					        catch $cmd pipe
 | 
				
			||||||
        if [regexp -nocase -- {^fatal:} $pipe match] {
 | 
					        if [regexp -nocase -- {^fatal:} $pipe match] {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								lib/gui.tcl
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								lib/gui.tcl
									
									
									
									
									
								
							@@ -23,12 +23,14 @@ wm overrideredirect . 0
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
bind . <Control-q> Quit
 | 
					bind . <Control-q> Quit
 | 
				
			||||||
bind . <Control-Q> Quit
 | 
					bind . <Control-Q> Quit
 | 
				
			||||||
 | 
					bind . <Control-Cyrillic_shorti> Quit
 | 
				
			||||||
bind . <Control-eacute> Quit
 | 
					bind . <Control-eacute> Quit
 | 
				
			||||||
bind . <Insert> Add
 | 
					bind . <Insert> Add
 | 
				
			||||||
bind . <Delete> Del
 | 
					bind . <Delete> Del
 | 
				
			||||||
bind . <F1> ShowHelpDialog
 | 
					bind . <F1> ShowHelpDialog
 | 
				
			||||||
bind . <Control-n> Editor::New
 | 
					bind . <Control-n> Editor::New
 | 
				
			||||||
bind . <Control-N> Editor::New
 | 
					bind . <Control-N> Editor::New
 | 
				
			||||||
 | 
					bind . <Control-Cyrillic_te> Editor::New
 | 
				
			||||||
bind . <Control-o> {
 | 
					bind . <Control-o> {
 | 
				
			||||||
    set filePath [FileOper::OpenDialog]
 | 
					    set filePath [FileOper::OpenDialog]
 | 
				
			||||||
    if {$filePath != ""} {
 | 
					    if {$filePath != ""} {
 | 
				
			||||||
@@ -41,21 +43,30 @@ bind . <Control-O> {
 | 
				
			|||||||
        FileOper::Edit $filePath
 | 
					        FileOper::Edit $filePath
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
bind . <Control-k> {
 | 
					bind . <Alt-k> {
 | 
				
			||||||
    set folderPath [FileOper::OpenFolderDialog]
 | 
					    set folderPath [FileOper::OpenFolderDialog]
 | 
				
			||||||
    if {$folderPath != ""} {
 | 
					    if {$folderPath != ""} {
 | 
				
			||||||
        FileOper::ReadFolder $folderPath
 | 
					        FileOper::ReadFolder $folderPath
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
bind . <Control-K> {
 | 
					bind . <Alt-K> {
 | 
				
			||||||
    set folderPath [FileOper::OpenFolderDialog]
 | 
					    set folderPath [FileOper::OpenFolderDialog]
 | 
				
			||||||
    if {$folderPath != ""} {
 | 
					    if {$folderPath != ""} {
 | 
				
			||||||
        FileOper::ReadFolder $folderPath
 | 
					        FileOper::ReadFolder $folderPath
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					bind . <Alt-Cyrillic_el> {
 | 
				
			||||||
 | 
					    set folderPath [FileOper::OpenFolderDialog]
 | 
				
			||||||
 | 
					    if {$folderPath != ""} {
 | 
				
			||||||
 | 
					        FileOper::ReadFolder $folderPath
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bind . <Control-s> {FileOper::Save}
 | 
					bind . <Control-s> {FileOper::Save}
 | 
				
			||||||
bind . <Control-S> {FileOper::Save}
 | 
					bind . <Control-S> {FileOper::Save}
 | 
				
			||||||
 | 
					bind . <Control-Cyrillic_hardsign> {FileOper::Save}
 | 
				
			||||||
bind . <Alt-p> {ViewFilesTree true}
 | 
					bind . <Alt-p> {ViewFilesTree true}
 | 
				
			||||||
 | 
					bind . <Alt-Cyrillic_ze> {ViewFilesTree true}
 | 
				
			||||||
bind . <Button-3> {catch [PopupMenu %X %Y]}
 | 
					bind . <Button-3> {catch [PopupMenu %X %Y]}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ttk::style configure TPanedwindow -background blue
 | 
					#ttk::style configure TPanedwindow -background blue
 | 
				
			||||||
@@ -134,11 +145,15 @@ grid .frmBody.panel -row 0 -column 1 -sticky nesw
 | 
				
			|||||||
grid columnconfigure .frmBody .frmBody.panel -weight 1
 | 
					grid columnconfigure .frmBody .frmBody.panel -weight 1
 | 
				
			||||||
grid rowconfigure .frmBody .frmBody.panel -weight 1
 | 
					grid rowconfigure .frmBody .frmBody.panel -weight 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Панель инстурментов
 | 
				
			||||||
ttk::button $frmTool.btn_tree  -command ToolBtnTreePress -image tree_24x24
 | 
					ttk::button $frmTool.btn_tree  -command ToolBtnTreePress -image tree_24x24
 | 
				
			||||||
ttk::button $frmTool.btn_search  -command FileOper::FindInFiles -image search_24x24
 | 
					ttk::button $frmTool.btn_search  -command FileOper::FindInFiles -image search_24x24
 | 
				
			||||||
ttk::button $frmTool.btn_git -command Git::Dialog -image git_24x24
 | 
					ttk::button $frmTool.btn_git -command Git::Dialog -image git_24x24
 | 
				
			||||||
 | 
					ttk::button $frmTool.btn_settings -command Settings -image settings_24x24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pack $frmTool.btn_tree $frmTool.btn_search $frmTool.btn_git -side top -padx 1 -pady 1
 | 
					pack $frmTool.btn_tree $frmTool.btn_search $frmTool.btn_git -side top -padx 1 -pady 1
 | 
				
			||||||
 | 
					pack $frmTool.btn_settings -side bottom -padx 1 -pady 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# #label $frmTool.lbl_logo -image tcl
 | 
					# #label $frmTool.lbl_logo -image tcl
 | 
				
			||||||
# pack $frmTool.btn_quit -side bottom -padx 5 -pady 5
 | 
					# pack $frmTool.btn_quit -side bottom -padx 5 -pady 5
 | 
				
			||||||
# #pack $frmTool.lbl_logo -side bottom -padx 5 -pady 5
 | 
					# #pack $frmTool.lbl_logo -side bottom -padx 5 -pady 5
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -190,5 +190,25 @@ namespace eval Highlight {} {
 | 
				
			|||||||
        ctext::addHighlightClassForRegexp $txt namespaces #0093ff {->|\+\+|::}
 | 
					        ctext::addHighlightClassForRegexp $txt namespaces #0093ff {->|\+\+|::}
 | 
				
			||||||
        ctext::addHighlightClass $txt bool #3e803b {null false true}
 | 
					        ctext::addHighlightClass $txt bool #3e803b {null false true}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    proc ExecuteColorized {txt} {
 | 
				
			||||||
 | 
					        # ctext::addHighlightClassForRegexp $txt flags orange {\s-[a-zA-Z]+}
 | 
				
			||||||
 | 
					        # ctext::addHighlightClass $txt stackControl #19a2a6 [info commands]
 | 
				
			||||||
 | 
					        # ctext::addHighlightClass $txt widgets #9d468d [list canvas ctext button entry label text labelframe frame toplevel scrollbar checkbutton canvas listbox menu menubar menubutton  radiobutton scale entry message tk_chooseDir tk_getSaveFile  tk_getOpenFile tk_chooseColor tk_optionMenu ttk::button ttk::checkbutton ttk::combobox ttk::entry ttk::frame ttk::intro ttk::label ttk::labelframe ttk::menubutton ttk::treeview ttk::notebook ttk::panedwindow ttk::progressbar ttk::radiobutton ttk::scale ttk::scrollbar ttk::separator ttk::sizegrip ttk::spinbox ]
 | 
				
			||||||
 | 
					        # ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\$"
 | 
				
			||||||
 | 
					        # ctext::addHighlightClass $txt variable_funcs gold {set global variable unset}
 | 
				
			||||||
 | 
					        # # ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()}
 | 
				
			||||||
 | 
					        # ctext::addHighlightClassForRegexp $txt namespaces #4f64ff {::}
 | 
				
			||||||
 | 
					        # ctext::addHighlightClassForRegexp $txt qoute #b84a0c {("|'|`).+("|'|`)}
 | 
				
			||||||
 | 
					        # ctext::addHighlightClassForRegexp $txt colors #68ceff {(#)(\w)+?(\s|$)} 
 | 
				
			||||||
 | 
					        # ctext::addHighlightClassForRegexp $txt comments #666666 {(^|;)\s*(#)[^\n\r]*}
 | 
				
			||||||
 | 
					        # ctext::addHighlightClass $txt bool #3e803b {null false true}
 | 
				
			||||||
 | 
					        # ctext::addHighlightClassForRegexp $txt paths lightblue {(\s)([\w]+)(=)}
 | 
				
			||||||
 | 
					        # ctext::addHighlightClassForSpecialChars $txt tags lightgreen {<>/}
 | 
				
			||||||
 | 
					        # ctext::addHighlightClassForRegexp $txt tags #199100 {/.+\s}
 | 
				
			||||||
 | 
					        ctext::addHighlightClassForRegexp $txt gopaths lightblue {(.+?):(\d+):(\d+):}
 | 
				
			||||||
 | 
					        ctext::addHighlightClassForRegexp $txt paths lightblue {(\\|/|\.|^)((\w)|(\.)|(/)|([\.\w]))+?\s}
 | 
				
			||||||
 | 
					        ctext::addHighlightClass $txt compile_errors #ff5050 {error Error ERROR invalid undefined cannot}
 | 
				
			||||||
 | 
					        ctext::addHighlightClassForRegexp $txt url lightblue {\w+://\w.+\w+}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -596,6 +596,22 @@ image create photo debian_16x12 -data {
 | 
				
			|||||||
    rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO
 | 
					    rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO
 | 
				
			||||||
    RK5CYII=
 | 
					    RK5CYII=
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					image create photo deb_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
				
			||||||
 | 
					    kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
 | 
				
			||||||
 | 
					    4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC
 | 
				
			||||||
 | 
					    5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM
 | 
				
			||||||
 | 
					    qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF
 | 
				
			||||||
 | 
					    FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03
 | 
				
			||||||
 | 
					    T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP
 | 
				
			||||||
 | 
					    0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw
 | 
				
			||||||
 | 
					    SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgYBD440/mcAAADnSURBVCjPlZIxbsIwGIU/O6Ei
 | 
				
			||||||
 | 
					    CEGkzukJOkRi4A7sCIYuPQlcgx2J0FNwBNQVpogVRKuqCQhsFixZjkHwNj89f37/LwtuKCPV9vmE
 | 
				
			||||||
 | 
					    Sj743rg54RpTuq2Qww+QA2/G17AV8DpkKW4CJnRqbc5HgII4+mRR+hrZkNAGmMsmMOM9EYS58dyx
 | 
				
			||||||
 | 
					    KgBbX/QDxSo3sDFIX65iFsQRgGJ1Mt4Y5Ai0D1Bp8MI2AsoWf/VfmmVGqiVRY07x787vbRAQ7AB6
 | 
				
			||||||
 | 
					    rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO
 | 
				
			||||||
 | 
					    RK5CYII=
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
image create photo redhat_16x12 -data {
 | 
					image create photo redhat_16x12 -data {
 | 
				
			||||||
    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
					    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
				
			||||||
    kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
 | 
					    kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
 | 
				
			||||||
@@ -615,6 +631,26 @@ image create photo redhat_16x12 -data {
 | 
				
			|||||||
    09XnzifcAaBGuUTHS9CB0kq/EeiqEzh36yeGZvgH5pLddZ5feAf2OYwxhVgpYDyx5dANP+pfyyXc
 | 
					    09XnzifcAaBGuUTHS9CB0kq/EeiqEzh36yeGZvgH5pLddZ5feAf2OYwxhVgpYDyx5dANP+pfyyXc
 | 
				
			||||||
    JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B
 | 
					    JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B
 | 
				
			||||||
    fWB7/vyA9Yr/YLa1I25OKGgYfz6Rjbv9EqdKrq/6GWz7DaI/0EnQtYARAAAAAElFTkSuQmCC
 | 
					    fWB7/vyA9Yr/YLa1I25OKGgYfz6Rjbv9EqdKrq/6GWz7DaI/0EnQtYARAAAAAElFTkSuQmCC
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo rpm_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
				
			||||||
 | 
					    kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC
 | 
				
			||||||
 | 
					    4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC
 | 
				
			||||||
 | 
					    5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM
 | 
				
			||||||
 | 
					    qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF
 | 
				
			||||||
 | 
					    FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03
 | 
				
			||||||
 | 
					    T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP
 | 
				
			||||||
 | 
					    0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw
 | 
				
			||||||
 | 
					    SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgYbDKcQVQYAAAH8SURBVCjPhZJNSJMBGMd//3dr
 | 
				
			||||||
 | 
					    01KpQGdqRUF1CsrNBq1IXwnxYFFRl255jKhDhzp2qGvXAqFLFBL0YUWg6aSCIB3aoUsUpYFsM0kL
 | 
				
			||||||
 | 
					    rc33fZ8ObrSE6A8PPP/ni+dLrMKn9vaqdT+cHmRdJqcFgMCmJQ0uzEce7/jwrFAZr0qSS3ScMLgu
 | 
				
			||||||
 | 
					    tLnC/Ksk64Epw843jqcflZ1OWcnH3Uuge0JNwmltsIVItFDc6Cm8EyMt4zKwVehBrs29+FcH+bh7
 | 
				
			||||||
 | 
					    0kT/CtckZjeRtpsFk42Z9B0rxyXc10ASMEzHY5nhh5qJ96wNsfge0QzMI4a0FJyxKicWy4x8rBwx
 | 
				
			||||||
 | 
					    m+jsFdZXotNLNcEuJ+QsHUNEzQlvj42PbJBZQLX6JO2dTaVqKwuYXxyooFuqF0NHHcy6gMgaFZcB
 | 
				
			||||||
 | 
					    fN87ZzBv2K2gEM3m2tz95YxIJBQ1gt3IzgIeZl3KJtxRwSFgGseOxN6k3wLMJbvrPK/oOgTL9Zn0
 | 
				
			||||||
 | 
					    09XnzifcAaBGuUTHS9CB0kq/EeiqEzh36yeGZvgH5pLddZ5feAf2OYwxhVgpYDyx5dANP+pfyyXc
 | 
				
			||||||
 | 
					    JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B
 | 
				
			||||||
 | 
					    fWB7/vyA9Yr/YLa1I25OKGgYfz6Rjbv9EqdKrq/6GWz7DaI/0EnQtYARAAAAAElFTkSuQmCC
 | 
				
			||||||
}	
 | 
					}	
 | 
				
			||||||
image create photo spec_16x12 -data {
 | 
					image create photo spec_16x12 -data {
 | 
				
			||||||
    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
					    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
				
			||||||
@@ -1447,6 +1483,40 @@ image create photo csr_16x12 -data {
 | 
				
			|||||||
    kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
 | 
					    kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
 | 
				
			||||||
    VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
 | 
					    VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					image create photo sig_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
				
			||||||
 | 
					    kT1Iw0AcxV9TS0UqDnYQcchQxcGCX4ijVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
 | 
				
			||||||
 | 
					    BD9AHJ2cFF2kxP8lhRYxHhz34929x907QKiXmWZ1jAKabpvpZELM5lbE8CsiCCGMMQzLzDJmJSkF
 | 
				
			||||||
 | 
					    3/F1jwBf7+I8y//cn6NbzVsMCIjEM8wwbeJ14qlN2+C8TxxlJVklPiceMemCxI9cVzx+41x0WeCZ
 | 
				
			||||||
 | 
					    UTOTniOOEovFNlbamJVMjXiSOKZqOuULWY9VzluctXKVNe/JXxjJ68tLXKc5gCQWsAgJIhRUsYEy
 | 
				
			||||||
 | 
					    bMRp1UmxkKb9hI+/3/VL5FLItQFGjnlUoEF2/eB/8LtbqzAx7iVFEkDoxXE+BoHwLtCoOc73seM0
 | 
				
			||||||
 | 
					    ToDgM3Clt/yVOjD9SXqtpcWOgJ5t4OK6pSl7wOUO0PdkyKbsSkGaQqEAvJ/RN+WA3luga9XrrbmP
 | 
				
			||||||
 | 
					    0wcgQ12lboCDQ2CoSNlrPu/ubO/t3zPN/n4AiVZysDNUkngAAAAGYktHRAD/AP8A/6C9p5MAAAAJ
 | 
				
			||||||
 | 
					    cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmDAUHMwbmoJmMAAABRklEQVQoz32SPyyDURTFf+fr
 | 
				
			||||||
 | 
					    V50kVEzWRjSYasPS1aoMJmnzBqZiE5FIjP6EtMNLulmwskksRmKqzhiJiAVJ22spqZbvbPfe807e
 | 
				
			||||||
 | 
					    +90nWioUCtOSNiT1ASFQBda99w9ESADOuRmgGIbhYrlcfmz1psxsJx6Pz373/lKQy+ViwGaj0Zhr
 | 
				
			||||||
 | 
					    N3rvrySt1uv17agbBMlkckxStVKpvHQOvfdXwGhkgKR+M7v/z2Bmb1EBYbPZXACyzrnJfzzDkQHA
 | 
				
			||||||
 | 
					    qPc+BRhAPp9PxWKxV+/9M8Dh9ch4yaVvDXoktpYzteNfTzCzz47DR2Z2/mNAG8CQ4B2zgy4G7UUi
 | 
				
			||||||
 | 
					    kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
 | 
				
			||||||
 | 
					    VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo gpg_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
				
			||||||
 | 
					    kT1Iw0AcxV9TS0UqDnYQcchQxcGCX4ijVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
 | 
				
			||||||
 | 
					    BD9AHJ2cFF2kxP8lhRYxHhz34929x907QKiXmWZ1jAKabpvpZELM5lbE8CsiCCGMMQzLzDJmJSkF
 | 
				
			||||||
 | 
					    3/F1jwBf7+I8y//cn6NbzVsMCIjEM8wwbeJ14qlN2+C8TxxlJVklPiceMemCxI9cVzx+41x0WeCZ
 | 
				
			||||||
 | 
					    UTOTniOOEovFNlbamJVMjXiSOKZqOuULWY9VzluctXKVNe/JXxjJ68tLXKc5gCQWsAgJIhRUsYEy
 | 
				
			||||||
 | 
					    bMRp1UmxkKb9hI+/3/VL5FLItQFGjnlUoEF2/eB/8LtbqzAx7iVFEkDoxXE+BoHwLtCoOc73seM0
 | 
				
			||||||
 | 
					    ToDgM3Clt/yVOjD9SXqtpcWOgJ5t4OK6pSl7wOUO0PdkyKbsSkGaQqEAvJ/RN+WA3luga9XrrbmP
 | 
				
			||||||
 | 
					    0wcgQ12lboCDQ2CoSNlrPu/ubO/t3zPN/n4AiVZysDNUkngAAAAGYktHRAD/AP8A/6C9p5MAAAAJ
 | 
				
			||||||
 | 
					    cEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmDAUHMwbmoJmMAAABRklEQVQoz32SPyyDURTFf+fr
 | 
				
			||||||
 | 
					    V50kVEzWRjSYasPS1aoMJmnzBqZiE5FIjP6EtMNLulmwskksRmKqzhiJiAVJ22spqZbvbPfe807e
 | 
				
			||||||
 | 
					    +90nWioUCtOSNiT1ASFQBda99w9ESADOuRmgGIbhYrlcfmz1psxsJx6Pz373/lKQy+ViwGaj0Zhr
 | 
				
			||||||
 | 
					    N3rvrySt1uv17agbBMlkckxStVKpvHQOvfdXwGhkgKR+M7v/z2Bmb1EBYbPZXACyzrnJfzzDkQHA
 | 
				
			||||||
 | 
					    qPc+BRhAPp9PxWKxV+/9M8Dh9ch4yaVvDXoktpYzteNfTzCzz47DR2Z2/mNAG8CQ4B2zgy4G7UUi
 | 
				
			||||||
 | 
					    kfgEeiV9/DDABoBBIAN6igxorfE0CIJNgNJNelcoC7oETqyp+S4GkvTrZ0lnwEPpJr2LUUTsLWfu
 | 
				
			||||||
 | 
					    VqIgPjvnLr45mBnAGkZRxv7SRG0lagtfFWR2IQ04e8UAAAAASUVORK5CYII=
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
image create photo git_16x12 -data {
 | 
					image create photo git_16x12 -data {
 | 
				
			||||||
    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
					    iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
				
			||||||
    kT1Iw0AcxV9TS0UqDnYQcchQnSz4hYiTVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
 | 
					    kT1Iw0AcxV9TS0UqDnYQcchQnSz4hYiTVqEIFUKt0KqDyaUfQpOGJMXFUXAtOPixWHVwcdbVwVUQ
 | 
				
			||||||
@@ -1728,4 +1798,152 @@ image create photo lua_16x12 -data {
 | 
				
			|||||||
    KsJM1JtVIPsjy4BTYBLwSdgymUwHwKN+kh9aBtk+uXSKbGoJ1OVZO58jD1iPHNnn3oEysAcgT6vl
 | 
					    KsJM1JtVIPsjy4BTYBLwSdgymUwHwKN+kh9aBtk+uXSKbGoJ1OVZO58jD1iPHNnn3oEysAcgT6vl
 | 
				
			||||||
    A8TB5iOAVKQWCjQFtgqIx94M0I6D3lzlAY0B2wO+qesqyc4jCVHdcX1x64AeZX6JGOpYJgj6DlhL
 | 
					    A8TB5iOAVKQWCjQFtgqIx94M0I6D3lzlAY0B2wO+qesqyc4jCVHdcX1x64AeZX6JGOpYJgj6DlhL
 | 
				
			||||||
    nyEr/QEd077c+0K/7XAFjyKwCIyCrjA7IJc6ct9yegcG+1TkMUCBoAAAAABJRU5ErkJggg==
 | 
					    nyEr/QEd077c+0K/7XAFjyKwCIyCrjA7IJc6ct9yegcG+1TkMUCBoAAAAABJRU5ErkJggg==
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo gz_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAASpJREFUKJGFjb9Kw0AAxr+73F0S
 | 
				
			||||||
 | 
					    wU6tUMWAOigIBcVNJ7ciTgo+gIuzq66CvoEPoXQWBHERih0EUbu0UGiCrdVaY5qaJncuRjEZ+o2/
 | 
				
			||||||
 | 
					    7x/ZO912lFJ5/IiADgURxcjU7pBQTlKPDQI/zzUBRlnMed/1LptlB3Mrs+A6BwCEMsSzDDts6EXY
 | 
				
			||||||
 | 
					    3zqAYOJ3qVy5gSOaKK5vwtBNAEAQBjg5P8ySo9KOopT8u65WHOgmh7WQhab9eVIq0GQYAGYWc+i9
 | 
				
			||||||
 | 
					    9kESFqUENBnutj1cnT3C/wxwe1FLjaUKrUYPuakMCqsW7Pp7qsCSQCmF+n0bTq0LGcnRDwBQWLOw
 | 
				
			||||||
 | 
					    sbsErmujC8Jg8Nwv+G4ALtJ7zK69HQudTcZgLGNojWpn+br0ND49P/Hw0vxoxV4wCO1vTFFpmeaA
 | 
				
			||||||
 | 
					    16IAAAAASUVORK5CYII=
 | 
				
			||||||
}	
 | 
					}	
 | 
				
			||||||
 | 
					image create photo tgz_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAASpJREFUKJGFjb9Kw0AAxr+73F0S
 | 
				
			||||||
 | 
					    wU6tUMWAOigIBcVNJ7ciTgo+gIuzq66CvoEPoXQWBHERih0EUbu0UGiCrdVaY5qaJncuRjEZ+o2/
 | 
				
			||||||
 | 
					    7x/ZO912lFJ5/IiADgURxcjU7pBQTlKPDQI/zzUBRlnMed/1LptlB3Mrs+A6BwCEMsSzDDts6EXY
 | 
				
			||||||
 | 
					    3zqAYOJ3qVy5gSOaKK5vwtBNAEAQBjg5P8ySo9KOopT8u65WHOgmh7WQhab9eVIq0GQYAGYWc+i9
 | 
				
			||||||
 | 
					    9kESFqUENBnutj1cnT3C/wxwe1FLjaUKrUYPuakMCqsW7Pp7qsCSQCmF+n0bTq0LGcnRDwBQWLOw
 | 
				
			||||||
 | 
					    sbsErmujC8Jg8Nwv+G4ALtJ7zK69HQudTcZgLGNojWpn+br0ND49P/Hw0vxoxV4wCO1vTFFpmeaA
 | 
				
			||||||
 | 
					    16IAAAAASUVORK5CYII=
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo zip_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAACXBIWXMAAAeJAAAHiQH5c1i9AAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAUVJREFUKJGNkTtLA0EUhc9MZrNL
 | 
				
			||||||
 | 
					    IokBFZUY340IgqSw10K0srGy08LaRvAf2NpYpUmrhZ2N/oCAYCUILhJjDJE8NjGJyc7M7thodJMV
 | 
				
			||||||
 | 
					    PeX5+Obey5DZ0+2cIu4EfoSCpMz9sz38EjJysql6Sw1UhCzbZs+WZicn2x4B5IWptkRq7RBzsXgX
 | 
				
			||||||
 | 
					    lCuv2vlFWtvYOUAiMaN/9aaVx+7V8SBJprfU1PAoCEhXctoc9dscWMRAZPH7MQWFbKkIFo7qKHHL
 | 
				
			||||||
 | 
					    s54SEpzYoBTo8KqHhaM6qN+hMt+AMCsQZhWqI/t4vyRdvF8/IrQ+DxrRYd8U/pZc7kC1BMR9GTL3
 | 
				
			||||||
 | 
					    Brcl/jHpM06TQ0nHl/lKgZiB0Oo0jJW4HwYFlOdzic6gOhJOsQnxVAcdCPYoSrHaXemIhYPjnnph
 | 
				
			||||||
 | 
					    KN64fFgiBqsHlscyzWyte5hs8cIHuFR/UISQs+8AAAAASUVORK5CYII=
 | 
				
			||||||
 | 
					}	
 | 
				
			||||||
 | 
					image create photo xz_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAcPAAAHDwFcQ5C1AAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAShJREFUKJGFkDtLA0EUhb+Z3Vl3
 | 
				
			||||||
 | 
					    jFpZGCsJiI0gRqtAOonYSvJPBP+Aoo29IBZ2giA2WimIVkqQgAgptFBxUfEVk2g2+7IxgWSLnPLc
 | 
				
			||||||
 | 
					    8+KK1GbeiaIoyT8E0jOFtSC1UaILI6Gsm7Xmb9I2LCxptnhlVevH8sKB2RT0KQC80Och9N9M5Up2
 | 
				
			||||||
 | 
					    C6vYptVOKl6e8awfmZtfxLY1AA2/SWFveVhk73YiqVRHtXt0jhjoR2WmEGa7mdDzkN1iACubJnBe
 | 
				
			||||||
 | 
					    EUJ08FIpZLc4uHeorW8Tfn7zs7UfC4sZ/OtbzIkxdD6HVyrHDGaMIcI9LeJdlcEPejcA6EKOoY0l
 | 
				
			||||||
 | 
					    hLZ7G0RCE75/EX5UEDr+EDFzuLJmJPRoe5DbNIKDk3RYqQ4amekbY3L8pXXz6o2nPwWnYSj7tbJx
 | 
				
			||||||
 | 
					    AAAAAElFTkSuQmCC
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo iso_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAACXBIWXMAAAWIAAAFiAG/L38eAAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAVJJREFUKJGFjz1IQgEUhc99vvd8
 | 
				
			||||||
 | 
					    JgolDf2OQkhb0RD249LaKESDOEUQtQRtNbQVTkE05JJLDUGQRJPQUCQVrSJIv5IZmFK8/9v0XmJC
 | 
				
			||||||
 | 
					    d7qccz7uPcTMQfw/DSJiABCJqN7sGJnYhMXWhizSGECkmvbd55exCeAUAKg5rGcm5yVRSAPwtFzg
 | 
				
			||||||
 | 
					    p6q6Orh4ueUCfBjrY5uLRFDa/cSAmS/VRkRHUA07oYikAIAmhd7qkaUj2etXfffbcVkt9xMg9gSU
 | 
				
			||||||
 | 
					    BRdgm4edD797Z666w9E1AJZlxDtxm0oCgF8Rh1zAZjacXbIaPgABAIZHq/kd3bRYdwHTxAW8mAOA
 | 
				
			||||||
 | 
					    jtfzqH6NfUmSdZSy007RSkPL/5ZOTym6zAVZFAbalTYs+33loDAqOAIlcupjRZvVTbv8J2zyx3G+
 | 
				
			||||||
 | 
					    mtzJlh+o1Txbj3SFQ8HlgCKMg0io1o2bvdzLburkuQgAP0z8hJue1kBeAAAAAElFTkSuQmCC
 | 
				
			||||||
 | 
					}		
 | 
				
			||||||
 | 
					image create photo pdf_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAKYAAACmAE200ffAAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAMpJREFUGJWNz69OgnEYxfHv+RVF
 | 
				
			||||||
 | 
					    xsBAdHODzcbLrARfLgADjWggMgKXYHDzArgAA4F7IKAm/wTsNgMj6eZGYHAIBoWX4fvEs8/OngNb
 | 
				
			||||||
 | 
					    53o0dFzpbucAIZGYImiaDqM5+CQl5glYpMQu4dD8FzuunoIOCZ74IuokHtzA9WofewBfL1B4BD9j
 | 
				
			||||||
 | 
					    ZkhHsHrVb+t5GZb3wB1GBL0D33h1BeETnNdPY+US6xa7rfHbQ2JF7SxH9iAjx1EP3MAaaTy53jXs
 | 
				
			||||||
 | 
					    z0C1QB/o+GYfBFgDj+E74z7GkTEAAAAASUVORK5CYII=
 | 
				
			||||||
 | 
					}			
 | 
				
			||||||
 | 
					image create photo bz2_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAdDAAAHQwF4FVqrAAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAARhJREFUGJV9jrFKw1AYRk9ublI0
 | 
				
			||||||
 | 
					    oYPSYnEREXEQ6eIiFhFB3MVBcPEpiqN06OAiLrq6+Aa+gIuDUEShhYK6iZbWlDQVE5t7HcSEFuo3
 | 
				
			||||||
 | 
					    nv/wfb8xf3H6qjUF0ihLikNhi2tGIoMoKmRMk4ww/5iwgt6lbN7D3BJ6eua3AY00w5Cr3X0c204a
 | 
				
			||||||
 | 
					    GvUaTXPA2voOuXw6apSe7rSwrKG56PYG9dHB3thCuNmEi1ERwCquQviFEQ2GuBgVVadNcFxGeR79
 | 
				
			||||||
 | 
					    syrE8Xh50Gwgcnkm9g5Qvo9qvY+XDa35fqjRq5RRrTc0arwMYG9ukz05Ry4s/v8zrovuemjfR/c/
 | 
				
			||||||
 | 
					    MRw3OUn/sV61nMnZVJ4i1qz0Kkc5sVx8CdvdZ9pdAH4AuSFg6ttQQTAAAAAASUVORK5CYII=
 | 
				
			||||||
 | 
					}	
 | 
				
			||||||
 | 
					image create photo csv_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAAoAAAAMCAYAAABbayygAAAACXBIWXMAAAvPAAALzwFI68pfAAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAPJJREFUGJWFkaFLA3EcxT/ve8cs
 | 
				
			||||||
 | 
					    M6uIiOl2GBZsVqOyf8B+ghyr2z+xoqdgMNoMqzaTaSaR28BiEFYHC+rm72sTxRt76YUPj/d4KnO/
 | 
				
			||||||
 | 
					    BXYA578UAoe7lxrHOBvphfYqIMq27xv0R5kfGapMAiA90wPQDTX6tgj6gQvdA+j51OsWkwCEOaPf
 | 
				
			||||||
 | 
					    vhaxFma8z42JRUaTwDWBzGISvrghkCG2Z9DzmHZkNA1AcJcWOpGYLqrwp+PKhFcijoF1oC5ny6EB
 | 
				
			||||||
 | 
					    fJjE1OGgzH3wuUpC4ArYFIwR5w5PjUIDhrm3li0f5t4ydzrLQHc6MeKtzP2R6gsB5OLlG1VzU07m
 | 
				
			||||||
 | 
					    mn0VAAAAAElFTkSuQmCC
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo exe_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAA8AAAAMCAYAAAC9QufkAAAACXBIWXMAAAMnAAADJwEZpzWLAAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAaxJREFUKJFtkEFIlHEQxX/z3083
 | 
				
			||||||
 | 
					    IoONdQ3qYrcFdQ0hhTrU2k3XCjS6dZBiO3SRorotJJQSXQtMOiUKxrYmQgZiHjRJ3FoxPVgUgkSt
 | 
				
			||||||
 | 
					    UatY0H7/6dB+CO33TjPDezNvnlCCguTbTqUQOSMQVSiIMm7V3opMTH/BB+IV+fb4MWC+nKIXu/v3
 | 
				
			||||||
 | 
					    78PleaY+sw6Q0pTJLeeadsWJ+F2UG/+t/nMnuef0h9rKV//MsYlSQIgAC87uAc6W25LJj0eCCVQ9
 | 
				
			||||||
 | 
					    l2GEMICqDhuA720n64AwMInyElgDcB15qlYv+LxbNEWTdgBuH78W+hyqGXWN0wxUIsx2vxm6+aJr
 | 
				
			||||||
 | 
					    5QfCYR/xVDqW/hoAqDl/PaNi2oGDQDUQyx6qj9z/OT62EA7MblcELLADLAetPokWzL2ZwdW8kxh4
 | 
				
			||||||
 | 
					    V4u1jWUZw7OgymBf9lcUfi+CbijsFbjqFu3jXsARazt9bGlSRpaAWKlt8RID5kJXpj8BGIFzCt+A
 | 
				
			||||||
 | 
					    98BmSfz6BPOtPktRlRGvdtTY5Nilppw36Hjw9qgRewAY8NHaCldHvUZ8CABsPYp3qUqPoA2qFBGy
 | 
				
			||||||
 | 
					    ogxXXZ566HH+Asc0nIyxyMyyAAAAAElFTkSuQmCC
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo txt_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAAkAAAAMCAYAAACwXJejAAAACXBIWXMAAALEAAACxAFbkZ0LAAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAXVJREFUGJVjZICCT2f+i9x98XjO
 | 
				
			||||||
 | 
					    43fPXorziUrKyihFSJkwfmNgYGBgPLz62uYXH998EOMX1unbMmvRxoUT+ytrJic7atkUfPz2+QIH
 | 
				
			||||||
 | 
					    Kxsf04sPr16HptjF3nt+/0CYhZ/s0ul7+3SktbQvPri6LzTFLvbHrx9vWRgYGBhubn4s/Z75R70I
 | 
				
			||||||
 | 
					    M7fq339/mBgYGBgYFFQZbLfd5nv89CkDCwMDA8PG68cUnr158E5OSN7mz78/nDB3Pvvw9Iu1qjlE
 | 
				
			||||||
 | 
					    kZ2a0ftHomLvlQRkH375/5MVpujxa7kPDAz/IIoOXj7+//7bpxy3RO4x/vz5mx2m6P371xz2+rYQ
 | 
				
			||||||
 | 
					    RU7q5rxX3z/5pSkiK/b9/0+4ogdvXzExMDBAFK0+s+vJlfvX/8lIyVz4/fcXN0zRy5evvia6hUEU
 | 
				
			||||||
 | 
					    eZk4aGtJyD9TlVX1/P3vDxvcpKf3X8JNKp/fcZKFlf3//z8/5v9nYYI7nImB7WWBbxwD45aFJ05/
 | 
				
			||||||
 | 
					    //3rBgMO8P3ndy0A+c+fqfnp2TAAAAAASUVORK5CYII=
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo j2_16x12 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA
 | 
				
			||||||
 | 
					    GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAjxJREFUKJGNzT9oE1EcwPHfu3u5
 | 
				
			||||||
 | 
					    yzWXyyUx1/xpKtZWaytJkVbQoUMpiqP/gtJSJ8FNxEEoWpUKgghKUSGTYNHBwalrDDgIIk1oG/oH
 | 
				
			||||||
 | 
					    o1IoTZu2SS7/XnLv7p6To+B3/sAXMcbgfzp663ZfOTZ42VEuxVBw+sEUVf2AzXblLzCB91iK22+L
 | 
				
			||||||
 | 
					    gs924JAlumKG3xe3eezwrK6ksO12D1UHBm5SRZH/deGMNgjlyq6yuvxwd+Z+EjHGQHv+IkG08Jjp
 | 
				
			||||||
 | 
					    ks5L29sLrVBo1EZIVrOL082e3qeBdGrWUN2/Owwjt5FM7nMAAFytRsCiiPFYtpziECJEwc1mB/X7
 | 
				
			||||||
 | 
					    plua1rk7fu5O+ezoI75edwEAYAAAqVhYcdBWtR7uHtZSn++KP9d/EEKa+XyeeufefAknX4/lcjkD
 | 
				
			||||||
 | 
					    rl8FAAB8ZGJiqDpy5plnaWkWgl2MRKMnq7HBK4zj+jstu1E7FPC2To3c8L98ddG7+O1Jfn7+K3br
 | 
				
			||||||
 | 
					    +mbF6ezX4/F7hqZ1NUzzmilJBdxulyxBjFNFjZZGTk8xhELRra0MAAC3vLBQxhU9e/zjhylcq9vq
 | 
				
			||||||
 | 
					    +tocE8SiJYlryLLe8qRRYoj/hBv11XQ63QIA4PomJxVbwOqv8QuXqCzL9UhkGDAf5A1TxqTRjQxK
 | 
				
			||||||
 | 
					    waYDtkPwRhMJCQAAcy6XQBVVAwTH2sGQ25vNaAwYtjCvkcjhE5Ysd1Cwe/gmifh0nQMAwBvJ5H54
 | 
				
			||||||
 | 
					    5nEG7+28M9SARyoW37c7A72MxzFpr/Dd1sUKRxpZbJg7joMDAwDgDzlS9ta5m7mUAAAAAElFTkSu
 | 
				
			||||||
 | 
					    QmCC
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo execute_11x11 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAABg2lDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
				
			||||||
 | 
					    kT1Iw1AUhU9TpVIqDnYQUclQneyiIo5ahSJUCLVCqw4mL/2DJg1Jiouj4Fpw8Gex6uDirKuDqyAI
 | 
				
			||||||
 | 
					    /oC4C06KLlLifUmhRYwPLu/jvHcO990HCI0K06yuWUDTbTOdTIjZ3KoYekUYw1QjiMrMMuYkKQXf
 | 
				
			||||||
 | 
					    9XWPAN/v4jzL/96fq1fNWwwIiMSzzDBt4g3i6U3b4LxPHGUlWSU+Jx43qUHiR64rHr9xLros8Myo
 | 
				
			||||||
 | 
					    mUnPE0eJxWIHKx3MSqZGPEUcUzWd8oWsxyrnLc5apcZaffIXRvL6yjLXqYaQxCKWIEGEghrKqMBG
 | 
				
			||||||
 | 
					    nHadFAtpOk/4+Addv0QuhVxlMHIsoAoNsusH/4Pfs7UKkxNeUiQBdL84zscoENoFmnXH+T52nOYJ
 | 
				
			||||||
 | 
					    EHwGrvS2v9oAZj5Jr7e12BHQtw1cXLc1ZQ+43AEGngzZlF0pSCUUCsD7GX1TDui/BcJr3txa5zh9
 | 
				
			||||||
 | 
					    ADI0q9QNcHAIjBUpe93n3T2dc/v3Tmt+P5frcrXBnzRwAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
 | 
				
			||||||
 | 
					    WXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH6QodCiMdxWTpZwAAABl0RVh0Q29tbWVudABDcmVhdGVk
 | 
				
			||||||
 | 
					    IHdpdGggR0lNUFeBDhcAAABHSURBVBjTjY/BDQAwCAKNUzleux1b2Y+PxgiRJ7kjalYBkADSRLwX
 | 
				
			||||||
 | 
					    SvCpZIKzlUlwdWMXJFw5Kzgi7mr5A/XyBI4wA9kzFHrskxvBNKQinAAAAABJRU5ErkJggg==
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					image create photo settings_24x24 -data {
 | 
				
			||||||
 | 
					    iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABg2lDQ1BJQ0MgcHJvZmlsZQAAKJF9
 | 
				
			||||||
 | 
					    kT1Iw1AUhU9TpVIqDnYQUclQneyiIo5ahSJUCLVCqw4mL/2DJg1Jiouj4Fpw8Gex6uDirKuDqyAI
 | 
				
			||||||
 | 
					    /oC4C06KLlLifUmhRYwPLu/jvHcO990HCI0K06yuWUDTbTOdTIjZ3KoYekUYw1QjiMrMMuYkKQXf
 | 
				
			||||||
 | 
					    9XWPAN/v4jzL/96fq1fNWwwIiMSzzDBt4g3i6U3b4LxPHGUlWSU+Jx43qUHiR64rHr9xLros8Myo
 | 
				
			||||||
 | 
					    mUnPE0eJxWIHKx3MSqZGPEUcUzWd8oWsxyrnLc5apcZaffIXRvL6yjLXqYaQxCKWIEGEghrKqMBG
 | 
				
			||||||
 | 
					    nHadFAtpOk/4+Addv0QuhVxlMHIsoAoNsusH/4Pfs7UKkxNeUiQBdL84zscoENoFmnXH+T52nOYJ
 | 
				
			||||||
 | 
					    EHwGrvS2v9oAZj5Jr7e12BHQtw1cXLc1ZQ+43AEGngzZlF0pSCUUCsD7GX1TDui/BcJr3txa5zh9
 | 
				
			||||||
 | 
					    ADI0q9QNcHAIjBUpe93n3T2dc/v3Tmt+P5frcrXBnzRwAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
 | 
				
			||||||
 | 
					    WXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH6QodESQY6jzHvgAAABl0RVh0Q29tbWVudABDcmVhdGVk
 | 
				
			||||||
 | 
					    IHdpdGggR0lNUFeBDhcAAAHySURBVEjHrZZPSFVREMZ/iomaBm1SApFHIEoL+6e7ROHTFkEbaWNb
 | 
				
			||||||
 | 
					    95YgSFiLyECIoJXtIkEXZqSrIoYwQiEScVOCguQylCzKpyFBm3PjvcO5f8L3wV3cufPNnHNmvjO3
 | 
				
			||||||
 | 
					    jAwws06gxTN/lTSfxq0gGx4BFz3bAVCdRizPmOBswFZlZg1HTmBm9UBVzOczafwyL9groAGYAJ4D
 | 
				
			||||||
 | 
					    bcDDwPFE+AKMADPAdWAAaATOSfpdlMDM+oDZAvJPoC7jEf4CagveRySN/0tgZtXAKtBMabAH5CRt
 | 
				
			||||||
 | 
					    RzUYyhj80D1pOA48KCzyQArhE9AlqVJSJXAeeJvC6TezY1GCXmAtxnEd6JD0LjJIWnWchRjOFtAj
 | 
				
			||||||
 | 
					    6bDcETaAS8DLgPNdSXnfKOkPMBzw/wC0S1oq0oEL8jpAWIw7A0nLAfOypO3/UfKJBBGG+AdBJZtZ
 | 
				
			||||||
 | 
					    DhgMEK4mJL8WsN0ws8tFSnYimwRqAoQfQJukLW/1jcB7oClmF7ckPYkSbAK5hJXmXV9HNWoH7gCn
 | 
				
			||||||
 | 
					    U9R9KrquR4GpBOca4L57smJM0n7UptNuu6XCOvDY76KbntMC8C1DsDzwxrPdlrTv62AFuOeu6lZJ
 | 
				
			||||||
 | 
					    3W5MPksIPgdckHTF1XAMeCrpRXAexPT6yYSddEj6eKSJJmk3IcFGqWby51AbSvpeqr+KPjcKC7GT
 | 
				
			||||||
 | 
					    hfgXbteIc85F7RUAAAAASUVORK5CYII=
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,9 @@
 | 
				
			|||||||
proc ImageViewer {f w node} {
 | 
					proc ImageViewer {f w node} {
 | 
				
			||||||
 | 
					    global factor cfgVariables
 | 
				
			||||||
    set factor($node) 1.0
 | 
					    set factor($node) 1.0
 | 
				
			||||||
    ttk::frame $w.f
 | 
					    ttk::frame $w.f
 | 
				
			||||||
    pack $w.f -side left -fill both -expand true
 | 
					    pack $w.f -side left -fill both -expand true
 | 
				
			||||||
    canvas $w.f.c -xscrollcommand "$w.f.x set" -yscrollcommand "$w.y set"
 | 
					    canvas $w.f.c -xscrollcommand "$w.f.x set" -yscrollcommand "$w.y set" -bg $cfgVariables(backGround)
 | 
				
			||||||
    ttk::scrollbar $w.f.x -ori hori -command "$w.f.c xview"
 | 
					    ttk::scrollbar $w.f.x -ori hori -command "$w.f.c xview"
 | 
				
			||||||
    ttk::scrollbar $w.y -ori vert -command "$w.f.c yview"
 | 
					    ttk::scrollbar $w.y -ori vert -command "$w.f.c yview"
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -20,15 +21,15 @@ proc ImageViewer {f w node} {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
proc openImg {fn w node} {
 | 
					proc openImg {fn w node} {
 | 
				
			||||||
    global im1
 | 
					    global im1 factor
 | 
				
			||||||
    set im1 [image create photo -file $fn]
 | 
					    set im1 [image create photo -file $fn]
 | 
				
			||||||
    #scale $w
 | 
					    scale $w  $factor($node) $node
 | 
				
			||||||
    list [file size $fn] bytes, [image width $im1]x[image height $im1]
 | 
					    list [file size $fn] bytes, [image width $im1]x[image height $im1]
 | 
				
			||||||
    $w create image 1 1 -image $im1 -anchor nw -tag img
 | 
					    $w create image 1 1 -image $im1 -anchor nw -tag img
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
proc scale {w {n 1} node} {
 | 
					proc scale {w {n 1} node} {
 | 
				
			||||||
    global im1 im2 factor noteBook tab_label
 | 
					    global im1 im2 factor tab_label
 | 
				
			||||||
    set factor($node) [expr {$factor($node) * $n}]
 | 
					    set factor($node) [expr {$factor($node) * $n}]
 | 
				
			||||||
    $w delete img
 | 
					    $w delete img
 | 
				
			||||||
    catch {image delete $im2}
 | 
					    catch {image delete $im2}
 | 
				
			||||||
@@ -41,7 +42,8 @@ proc scale {w {n 1} node} {
 | 
				
			|||||||
        $im2 copy $im1 -subsample $f $f
 | 
					        $im2 copy $im1 -subsample $f $f
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    $w create image 1 1 -image $im2 -anchor nw -tag img
 | 
					    $w create image 1 1 -image $im2 -anchor nw -tag img
 | 
				
			||||||
    $noteBook itemconfigure $node -text "$tab_label (size x$factor($node))"
 | 
					    set noteBook [file extension $node]
 | 
				
			||||||
 | 
					    # $noteBook itemconfigure $node -text "(size x$factor($node))"
 | 
				
			||||||
    $w config -scrollregion [$w bbox all]
 | 
					    $w config -scrollregion [$w bbox all]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,6 +54,7 @@ proc ImageBase64Encode {text} {
 | 
				
			|||||||
        {"GIF" {.gif}}
 | 
					        {"GIF" {.gif}}
 | 
				
			||||||
        {"JPEG" {.jpg}}
 | 
					        {"JPEG" {.jpg}}
 | 
				
			||||||
        {"BMP" {.bmp}}
 | 
					        {"BMP" {.bmp}}
 | 
				
			||||||
 | 
					        {"SVG" {.svg}}
 | 
				
			||||||
        {"All files" *}
 | 
					        {"All files" *}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    set img [tk_getOpenFile -initialdir $env(HOME) -filetypes $types -parent .]
 | 
					    set img [tk_getOpenFile -initialdir $env(HOME) -filetypes $types -parent .]
 | 
				
			||||||
@@ -65,5 +68,3 @@ proc ImageBase64Encode {text} {
 | 
				
			|||||||
        $text insert [Position] "image create photo $name -data {\n$data\n}"
 | 
					        $text insert [Position] "image create photo $name -data {\n$data\n}"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ dict set lexers GO commentMultilineSymbolEnd {*/}
 | 
				
			|||||||
dict set lexers GO procFindString {func.*?PROCNAME}
 | 
					dict set lexers GO procFindString {func.*?PROCNAME}
 | 
				
			||||||
dict set lexers GO procRegexpCommand {regexp -nocase -all -- {\s*?func\s*?(\(\w+\s*?\**?\w+\)|)\s*?(\w+)\((.*?)\)\s+?([a-zA-Z0-9\{\}\[\]\(\)-_.]*?|)\s*?\{} $line match linkName procName params returns}
 | 
					dict set lexers GO procRegexpCommand {regexp -nocase -all -- {\s*?func\s*?(\(\w+\s*?\**?\w+\)|)\s*?(\w+)\((.*?)\)\s+?([a-zA-Z0-9\{\}\[\]\(\)-_.]*?|)\s*?\{} $line match linkName procName params returns}
 | 
				
			||||||
dict set lexers GO varRegexpCommand {regexp -nocase -all -line -- {^\s*?var\s+([a-zA-Z0-9\-_$]+)\s+(.+?)(\s*$)} $line match varName varType lineEnd}
 | 
					dict set lexers GO varRegexpCommand {regexp -nocase -all -line -- {^\s*?var\s+([a-zA-Z0-9\-_$]+)\s+(.+?)(\s*$)} $line match varName varType lineEnd}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#--------------------------------------------------
 | 
					#--------------------------------------------------
 | 
				
			||||||
# SHELL (Bash)
 | 
					# SHELL (Bash)
 | 
				
			||||||
dict set lexers SH commentSymbol {#}
 | 
					dict set lexers SH commentSymbol {#}
 | 
				
			||||||
@@ -43,6 +44,7 @@ dict set lexers RB tabSize 2
 | 
				
			|||||||
dict set lexers RB procFindString {(def |class )\s*?PROCNAME}
 | 
					dict set lexers RB procFindString {(def |class )\s*?PROCNAME}
 | 
				
			||||||
dict set lexers RB procRegexpCommand {regexp -nocase -all -- {^\s*?(def|class)\s([a-zA-Z0-9\-_:\?]+?)($|\s|\(.+?\))} $line match keyWord procName params}
 | 
					dict set lexers RB procRegexpCommand {regexp -nocase -all -- {^\s*?(def|class)\s([a-zA-Z0-9\-_:\?]+?)($|\s|\(.+?\))} $line match keyWord procName params}
 | 
				
			||||||
dict set lexers RB varRegexpCommand {regexp -nocase -all -line -- {^\s*?(\w+)\s*=\s*(.+)($)} $line match varName varValue lineEnd}
 | 
					dict set lexers RB varRegexpCommand {regexp -nocase -all -line -- {^\s*?(\w+)\s*=\s*(.+)($)} $line match varName varValue lineEnd}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#--------------------------------------------------
 | 
					#--------------------------------------------------
 | 
				
			||||||
# YAML (ansible)
 | 
					# YAML (ansible)
 | 
				
			||||||
dict set lexers YML commentSymbol {#}
 | 
					dict set lexers YML commentSymbol {#}
 | 
				
			||||||
@@ -95,6 +97,8 @@ dict set lexers HTM tabSize 4
 | 
				
			|||||||
dict set lexers HTM procFindString {<h[0-9]>(<.+>|)PROCNAME(</.+>|)</h[0-9]>}
 | 
					dict set lexers HTM procFindString {<h[0-9]>(<.+>|)PROCNAME(</.+>|)</h[0-9]>}
 | 
				
			||||||
dict set lexers HTM procRegexpCommand {regexp -nocase -all -- {<h[0-9]>(<.+>|)(.+?)(</.+>|)</h[0-9]>} $line match v1 procName v2}
 | 
					dict set lexers HTM procRegexpCommand {regexp -nocase -all -- {<h[0-9]>(<.+>|)(.+?)(</.+>|)</h[0-9]>} $line match v1 procName v2}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#--------------------------------------------------
 | 
				
			||||||
 | 
					# LUA
 | 
				
			||||||
dict set lexers LUA commentSymbol {--}
 | 
					dict set lexers LUA commentSymbol {--}
 | 
				
			||||||
dict set lexers LUA procFindString {function\s*?PROCNAME}
 | 
					dict set lexers LUA procFindString {function\s*?PROCNAME}
 | 
				
			||||||
dict set lexers LUA procRegexpCommand {regexp -nocase -all -- {^(local|)\s*?(function)\s([a-zA-Z0-9\-_:]+?)\s+\((.+?)\)} $line match v1 keyWord procName params}
 | 
					dict set lexers LUA procRegexpCommand {regexp -nocase -all -- {^(local|)\s*?(function)\s([a-zA-Z0-9\-_:]+?)\s+\((.+?)\)} $line match v1 keyWord procName params}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								lib/menu.tcl
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								lib/menu.tcl
									
									
									
									
									
								
							@@ -9,7 +9,7 @@
 | 
				
			|||||||
######################################################
 | 
					######################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
proc GetFileMenu {m} {
 | 
					proc GetFileMenu {m} {
 | 
				
			||||||
    global activeProject
 | 
					    global activeProject cfgVariables
 | 
				
			||||||
    $m add command -label [::msgcat::mc "New file"] -command Editor::New\
 | 
					    $m add command -label [::msgcat::mc "New file"] -command Editor::New\
 | 
				
			||||||
    -accelerator "Ctrl+N"
 | 
					    -accelerator "Ctrl+N"
 | 
				
			||||||
    $m add command -label [::msgcat::mc "Open file"] -accelerator "Ctrl+O" -command {
 | 
					    $m add command -label [::msgcat::mc "Open file"] -accelerator "Ctrl+O" -command {
 | 
				
			||||||
@@ -25,8 +25,15 @@ proc GetFileMenu {m} {
 | 
				
			|||||||
    $m add command -label [::msgcat::mc "Close all"] -command {FileOper::CloseAll}
 | 
					    $m add command -label [::msgcat::mc "Close all"] -command {FileOper::CloseAll}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $m add separator
 | 
					    $m add separator
 | 
				
			||||||
 | 
					    menu $m.openRecent
 | 
				
			||||||
 | 
					    $m add cascade -label [::msgcat::mc "Open recent"] -menu $m.openRecent
 | 
				
			||||||
 | 
					    foreach item $cfgVariables(recentFolder) {
 | 
				
			||||||
 | 
					        $m.openRecent add command -label $item -command [list OpenRecentProject $item]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $m add command -label [::msgcat::mc "Open folder"] -accelerator "Ctrl+K" -command {
 | 
					    $m add separator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $m add command -label [::msgcat::mc "Open folder"] -accelerator "Alt+K" -command {
 | 
				
			||||||
        set folderPath [FileOper::OpenFolderDialog]
 | 
					        set folderPath [FileOper::OpenFolderDialog]
 | 
				
			||||||
        if {$folderPath != ""} {
 | 
					        if {$folderPath != ""} {
 | 
				
			||||||
            # set activeProject $folderPath
 | 
					            # set activeProject $folderPath
 | 
				
			||||||
@@ -69,7 +76,8 @@ proc GetEditMenu {m} {
 | 
				
			|||||||
    $m add separator
 | 
					    $m add separator
 | 
				
			||||||
    $m add command -label [::msgcat::mc "Insert image"] -accelerator "Ctrl+I"\
 | 
					    $m add command -label [::msgcat::mc "Insert image"] -accelerator "Ctrl+I"\
 | 
				
			||||||
        -command ImageBase64Encode
 | 
					        -command ImageBase64Encode
 | 
				
			||||||
    
 | 
					    $m add separator
 | 
				
			||||||
 | 
					    $m add command -label [::msgcat::mc "Settings"] -command Settings
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
proc GetViewMenu {m} {
 | 
					proc GetViewMenu {m} {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,8 +7,8 @@
 | 
				
			|||||||
# Author: Roman Schaller <r.schaller@gmx.ch>              #
 | 
					# Author: Roman Schaller <r.schaller@gmx.ch>              #
 | 
				
			||||||
###########################################################
 | 
					###########################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
::msgcat::mcset de "About ..." "<EFBFBD>ber ..."
 | 
					::msgcat::mcset de "About ..." "Über ..."
 | 
				
			||||||
::msgcat::mcset de "Add to project" "Zu Projekt hinzuf<EFBFBD>gen"
 | 
					::msgcat::mcset de "Add to project" "Zu Projekt hinzufügen"
 | 
				
			||||||
::msgcat::mcset de "Author" "Autor"
 | 
					::msgcat::mcset de "Author" "Autor"
 | 
				
			||||||
::msgcat::mcset de "Text autoformat" "Text autoformat"
 | 
					::msgcat::mcset de "Text autoformat" "Text autoformat"
 | 
				
			||||||
::msgcat::mcset de "Cancel" "Abbrechen"
 | 
					::msgcat::mcset de "Cancel" "Abbrechen"
 | 
				
			||||||
@@ -29,9 +29,9 @@
 | 
				
			|||||||
::msgcat::mcset de "Cut into clipboard" "In Zwischenablage ausschneiden"
 | 
					::msgcat::mcset de "Cut into clipboard" "In Zwischenablage ausschneiden"
 | 
				
			||||||
::msgcat::mcset de "CVS commit"
 | 
					::msgcat::mcset de "CVS commit"
 | 
				
			||||||
::msgcat::mcset de "CVS update"
 | 
					::msgcat::mcset de "CVS update"
 | 
				
			||||||
::msgcat::mcset de "Delete" "L<EFBFBD>schen"
 | 
					::msgcat::mcset de "Delete" "Löschen"
 | 
				
			||||||
::msgcat::mcset de "Delete backup files" "Backup-Dateien l<EFBFBD>schen"
 | 
					::msgcat::mcset de "Delete backup files" "Backup-Dateien löschen"
 | 
				
			||||||
::msgcat::mcset de "Delete project" "Projekt l<EFBFBD>schen"
 | 
					::msgcat::mcset de "Delete project" "Projekt löschen"
 | 
				
			||||||
::msgcat::mcset de "Delete from project" "Von Projekt entfernen"
 | 
					::msgcat::mcset de "Delete from project" "Von Projekt entfernen"
 | 
				
			||||||
::msgcat::mcset de "Docs dir" "Dok Verzeichnis"
 | 
					::msgcat::mcset de "Docs dir" "Dok Verzeichnis"
 | 
				
			||||||
::msgcat::mcset de "Don't selected file"
 | 
					::msgcat::mcset de "Don't selected file"
 | 
				
			||||||
@@ -42,10 +42,10 @@
 | 
				
			|||||||
::msgcat::mcset de "Error open URL"
 | 
					::msgcat::mcset de "Error open URL"
 | 
				
			||||||
::msgcat::mcset de "Exit" "Beenden"
 | 
					::msgcat::mcset de "Exit" "Beenden"
 | 
				
			||||||
::msgcat::mcset de "File" "Datei"
 | 
					::msgcat::mcset de "File" "Datei"
 | 
				
			||||||
::msgcat::mcset de "File already exists. Overwrite?" "Datei besteht bereits. <EFBFBD>berschreiben?"
 | 
					::msgcat::mcset de "File already exists. Overwrite?" "Datei besteht bereits. Überschreiben?"
 | 
				
			||||||
::msgcat::mcset de "File modify" "Datei bearbeiten"
 | 
					::msgcat::mcset de "File modify" "Datei bearbeiten"
 | 
				
			||||||
::msgcat::mcset de "File was modifyed. Close?" "Datei wurde ge<EFBFBD>ndert. Trotzdem schliessen?"
 | 
					::msgcat::mcset de "File was modifyed. Close?" "Datei wurde geändert. Trotzdem schliessen?"
 | 
				
			||||||
::msgcat::mcset de "File was modifyed. Save?" "Datei wurde ge<EFBFBD>ndert. Jetzt speichern?"
 | 
					::msgcat::mcset de "File was modifyed. Save?" "Datei wurde geändert. Jetzt speichern?"
 | 
				
			||||||
::msgcat::mcset de "File saved" "Datei gespeichert"
 | 
					::msgcat::mcset de "File saved" "Datei gespeichert"
 | 
				
			||||||
::msgcat::mcset de "Find" "Suchen"
 | 
					::msgcat::mcset de "Find" "Suchen"
 | 
				
			||||||
::msgcat::mcset de "Font normal" "Schrift normal"
 | 
					::msgcat::mcset de "Font normal" "Schrift normal"
 | 
				
			||||||
@@ -55,15 +55,15 @@
 | 
				
			|||||||
::msgcat::mcset de "Home dir" "Home Verzeichnis"
 | 
					::msgcat::mcset de "Home dir" "Home Verzeichnis"
 | 
				
			||||||
::msgcat::mcset de "Home page" "Homepage"
 | 
					::msgcat::mcset de "Home page" "Homepage"
 | 
				
			||||||
::msgcat::mcset de "Image dir" "Image Verzeichnis"
 | 
					::msgcat::mcset de "Image dir" "Image Verzeichnis"
 | 
				
			||||||
::msgcat::mcset de "Insert" "Einf<EFBFBD>gen"
 | 
					::msgcat::mcset de "Insert" "Einfügen"
 | 
				
			||||||
::msgcat::mcset de "Interface language" "Interface Sprache"
 | 
					::msgcat::mcset de "Interface language" "Interface Sprache"
 | 
				
			||||||
::msgcat::mcset de "Install Tcl/Tk Project Manager" "Tcl/Tk Project Manager installieren"
 | 
					::msgcat::mcset de "Install Tcl/Tk Project Manager" "Tcl/Tk Project Manager installieren"
 | 
				
			||||||
::msgcat::mcset de "Line number" "Zeilennummer"
 | 
					::msgcat::mcset de "Line number" "Zeilennummer"
 | 
				
			||||||
::msgcat::mcset de "Make RPM" "RPM erstellen"
 | 
					::msgcat::mcset de "Make RPM" "RPM erstellen"
 | 
				
			||||||
::msgcat::mcset de "Make archive" "Archiv erstellen"
 | 
					::msgcat::mcset de "Make archive" "Archiv erstellen"
 | 
				
			||||||
::msgcat::mcset de "Make backup files" "Backup-Dateien erstellen"
 | 
					::msgcat::mcset de "Make backup files" "Backup-Dateien erstellen"
 | 
				
			||||||
::msgcat::mcset de "Must be one file select!" "Eine Datei muss ausgew<EFBFBD>hlt sein!"
 | 
					::msgcat::mcset de "Must be one file select!" "Eine Datei muss ausgewählt sein!"
 | 
				
			||||||
::msgcat::mcset de "Must be one or two file select!" "Eine oder zwei Dateien m<EFBFBD>ssen ausgew<EFBFBD>hlt sein!"
 | 
					::msgcat::mcset de "Must be one or two file select!" "Eine oder zwei Dateien müssen ausgewählt sein!"
 | 
				
			||||||
::msgcat::mcset de "Modifying the Registry..."
 | 
					::msgcat::mcset de "Modifying the Registry..."
 | 
				
			||||||
::msgcat::mcset de "Modules" "Module"
 | 
					::msgcat::mcset de "Modules" "Module"
 | 
				
			||||||
::msgcat::mcset de "New" "Neu"
 | 
					::msgcat::mcset de "New" "Neu"
 | 
				
			||||||
@@ -71,19 +71,19 @@
 | 
				
			|||||||
::msgcat::mcset de "New project" "Neues Projekt"
 | 
					::msgcat::mcset de "New project" "Neues Projekt"
 | 
				
			||||||
::msgcat::mcset de "Not implemented yet" "Noch nicht implementiert"
 | 
					::msgcat::mcset de "Not implemented yet" "Noch nicht implementiert"
 | 
				
			||||||
::msgcat::mcset de "Not found active project" "Kein aktives Projekt gefunden"
 | 
					::msgcat::mcset de "Not found active project" "Kein aktives Projekt gefunden"
 | 
				
			||||||
::msgcat::mcset de "Open" "<EFBFBD>ffnen"
 | 
					::msgcat::mcset de "Open" "Öffnen"
 | 
				
			||||||
::msgcat::mcset de "Open file" "Datei <EFBFBD>ffnen"
 | 
					::msgcat::mcset de "Open file" "Datei öffnen"
 | 
				
			||||||
::msgcat::mcset de "Open project" "Projekt <EFBFBD>ffnen"
 | 
					::msgcat::mcset de "Open project" "Projekt öffnen"
 | 
				
			||||||
::msgcat::mcset de "Opened file in progress" "Ge<EFBFBD>ffnete Datei in Bearbeitung"
 | 
					::msgcat::mcset de "Opened file in progress" "Geöffnete Datei in Bearbeitung"
 | 
				
			||||||
::msgcat::mcset de "Overwrite" "<EFBFBD>berschreiben"
 | 
					::msgcat::mcset de "Overwrite" "Überschreiben"
 | 
				
			||||||
::msgcat::mcset de "Paste" "Einf<EFBFBD>gen"
 | 
					::msgcat::mcset de "Paste" "Einfügen"
 | 
				
			||||||
::msgcat::mcset de "Paste from clipboard" "Von Zwischenablage einf<EFBFBD>gen"
 | 
					::msgcat::mcset de "Paste from clipboard" "Von Zwischenablage einfügen"
 | 
				
			||||||
::msgcat::mcset de "Print ..." "Drucken ..."
 | 
					::msgcat::mcset de "Print ..." "Drucken ..."
 | 
				
			||||||
::msgcat::mcset de "Print" "Drucken"
 | 
					::msgcat::mcset de "Print" "Drucken"
 | 
				
			||||||
::msgcat::mcset de "Print command" "Druck-Befehl"
 | 
					::msgcat::mcset de "Print command" "Druck-Befehl"
 | 
				
			||||||
::msgcat::mcset de "Print selected text" "Markierter Text drucken"
 | 
					::msgcat::mcset de "Print selected text" "Markierter Text drucken"
 | 
				
			||||||
::msgcat::mcset de "Program finished successfully" "Programm wurde erfolgreich beendet"
 | 
					::msgcat::mcset de "Program finished successfully" "Programm wurde erfolgreich beendet"
 | 
				
			||||||
::msgcat::mcset de "Program failed" "Ausf<EFBFBD>hrung fehlgeschlagen"
 | 
					::msgcat::mcset de "Program failed" "Ausführung fehlgeschlagen"
 | 
				
			||||||
::msgcat::mcset de "Programm output" "Programm Ausgabe"
 | 
					::msgcat::mcset de "Programm output" "Programm Ausgabe"
 | 
				
			||||||
::msgcat::mcset de "Project" "Projekt"
 | 
					::msgcat::mcset de "Project" "Projekt"
 | 
				
			||||||
::msgcat::mcset de "Projects" "Projekte"
 | 
					::msgcat::mcset de "Projects" "Projekte"
 | 
				
			||||||
@@ -101,8 +101,8 @@
 | 
				
			|||||||
::msgcat::mcset de "Release"
 | 
					::msgcat::mcset de "Release"
 | 
				
			||||||
::msgcat::mcset de "RPM dir" "RPM Verzeichnis"
 | 
					::msgcat::mcset de "RPM dir" "RPM Verzeichnis"
 | 
				
			||||||
::msgcat::mcset de "RPM file mask" "RPM Datei Maske"
 | 
					::msgcat::mcset de "RPM file mask" "RPM Datei Maske"
 | 
				
			||||||
::msgcat::mcset de "Run" "Ausf<EFBFBD>hren"
 | 
					::msgcat::mcset de "Run" "Ausführen"
 | 
				
			||||||
::msgcat::mcset de "Running project" "Projekt ausf<EFBFBD>hren"
 | 
					::msgcat::mcset de "Running project" "Projekt ausführen"
 | 
				
			||||||
::msgcat::mcset de "Running file"
 | 
					::msgcat::mcset de "Running file"
 | 
				
			||||||
::msgcat::mcset de "Save" "Speichern"
 | 
					::msgcat::mcset de "Save" "Speichern"
 | 
				
			||||||
::msgcat::mcset de "Save as" "Speichern unter"
 | 
					::msgcat::mcset de "Save as" "Speichern unter"
 | 
				
			||||||
@@ -110,9 +110,9 @@
 | 
				
			|||||||
::msgcat::mcset de "Save file as" "Datei speichern unter"
 | 
					::msgcat::mcset de "Save file as" "Datei speichern unter"
 | 
				
			||||||
::msgcat::mcset de "Save all" "Alles speichern"
 | 
					::msgcat::mcset de "Save all" "Alles speichern"
 | 
				
			||||||
::msgcat::mcset de "Search" "Suchen"
 | 
					::msgcat::mcset de "Search" "Suchen"
 | 
				
			||||||
::msgcat::mcset de "Select" "Ausw<EFBFBD>hlen"
 | 
					::msgcat::mcset de "Select" "Auswählen"
 | 
				
			||||||
::msgcat::mcset de "Select directory" "Verzeichnis ausw<EFBFBD>hlen"
 | 
					::msgcat::mcset de "Select directory" "Verzeichnis auswählen"
 | 
				
			||||||
::msgcat::mcset de "Selected directory" "Ausgew<EFBFBD>hltes Verzeichnis"
 | 
					::msgcat::mcset de "Selected directory" "Ausgewähltes Verzeichnis"
 | 
				
			||||||
::msgcat::mcset de "Settings" "Einstellungen"
 | 
					::msgcat::mcset de "Settings" "Einstellungen"
 | 
				
			||||||
::msgcat::mcset de "Show backup files" "Backup-Dateien anzeigen"
 | 
					::msgcat::mcset de "Show backup files" "Backup-Dateien anzeigen"
 | 
				
			||||||
::msgcat::mcset de "Interpretator" "Interpreter"
 | 
					::msgcat::mcset de "Interpretator" "Interpreter"
 | 
				
			||||||
@@ -120,7 +120,7 @@
 | 
				
			|||||||
::msgcat::mcset de "TGZ file mask" "TGZ Datei Maske"
 | 
					::msgcat::mcset de "TGZ file mask" "TGZ Datei Maske"
 | 
				
			||||||
::msgcat::mcset de "Thanks" "Danksagung"
 | 
					::msgcat::mcset de "Thanks" "Danksagung"
 | 
				
			||||||
::msgcat::mcset de "Toolbar" "Symbolleiste"
 | 
					::msgcat::mcset de "Toolbar" "Symbolleiste"
 | 
				
			||||||
::msgcat::mcset de "Undo" "R<EFBFBD>ckg<EFBFBD>ngig"
 | 
					::msgcat::mcset de "Undo" "Rückgängig"
 | 
				
			||||||
::msgcat::mcset de "Update"
 | 
					::msgcat::mcset de "Update"
 | 
				
			||||||
::msgcat::mcset de "Version"
 | 
					::msgcat::mcset de "Version"
 | 
				
			||||||
::msgcat::mcset de "View" "Ansicht"
 | 
					::msgcat::mcset de "View" "Ansicht"
 | 
				
			||||||
@@ -130,4 +130,3 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,12 +59,16 @@
 | 
				
			|||||||
::msgcat::mcset en "Editor font bold"
 | 
					::msgcat::mcset en "Editor font bold"
 | 
				
			||||||
::msgcat::mcset en "Error open URL"
 | 
					::msgcat::mcset en "Error open URL"
 | 
				
			||||||
::msgcat::mcset en "Editor settings"
 | 
					::msgcat::mcset en "Editor settings"
 | 
				
			||||||
 | 
					::msgcat::mcset en "Enter command for execute file"
 | 
				
			||||||
::msgcat::mcset en "Exit"
 | 
					::msgcat::mcset en "Exit"
 | 
				
			||||||
::msgcat::mcset en "File"
 | 
					::msgcat::mcset en "File"
 | 
				
			||||||
::msgcat::mcset en "File already exists. Overwrite?"
 | 
					::msgcat::mcset en "File already exists. Overwrite?"
 | 
				
			||||||
::msgcat::mcset en "File modify"
 | 
					::msgcat::mcset en "File modify"
 | 
				
			||||||
::msgcat::mcset en "File was modifyed. Close?"
 | 
					::msgcat::mcset en "File was modifyed. Close?"
 | 
				
			||||||
::msgcat::mcset en "File was modifyed. Save?"
 | 
					::msgcat::mcset en "File was modifyed. Save?"
 | 
				
			||||||
 | 
					::msgcat::mcset en "The file looks like a binary file. Open anyway?"
 | 
				
			||||||
 | 
					::msgcat::mcset en "The file looks like a image. Support not implemented yet."
 | 
				
			||||||
 | 
					::msgcat::mcset en "The file size to big. Open anyway?"
 | 
				
			||||||
::msgcat::mcset en "File saved"
 | 
					::msgcat::mcset en "File saved"
 | 
				
			||||||
::msgcat::mcset en "Files"
 | 
					::msgcat::mcset en "Files"
 | 
				
			||||||
::msgcat::mcset en "Find"
 | 
					::msgcat::mcset en "Find"
 | 
				
			||||||
@@ -108,6 +112,7 @@
 | 
				
			|||||||
::msgcat::mcset en "Open file"
 | 
					::msgcat::mcset en "Open file"
 | 
				
			||||||
::msgcat::mcset en "Open project"
 | 
					::msgcat::mcset en "Open project"
 | 
				
			||||||
::msgcat::mcset en "Opened file in progress" 
 | 
					::msgcat::mcset en "Opened file in progress" 
 | 
				
			||||||
 | 
					::msgcat::mcset en "Open recent"
 | 
				
			||||||
::msgcat::mcset en "Operators"
 | 
					::msgcat::mcset en "Operators"
 | 
				
			||||||
::msgcat::mcset en "Overwrite"
 | 
					::msgcat::mcset en "Overwrite"
 | 
				
			||||||
::msgcat::mcset en "Parameters"
 | 
					::msgcat::mcset en "Parameters"
 | 
				
			||||||
@@ -181,7 +186,3 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,7 @@
 | 
				
			|||||||
::msgcat::mcset ru "Close" "Закрыть"
 | 
					::msgcat::mcset ru "Close" "Закрыть"
 | 
				
			||||||
::msgcat::mcset ru "Close all" "Закрыть все"
 | 
					::msgcat::mcset ru "Close all" "Закрыть все"
 | 
				
			||||||
::msgcat::mcset ru "Close file" "Закрыть файл"
 | 
					::msgcat::mcset ru "Close file" "Закрыть файл"
 | 
				
			||||||
::msgcat::mcset ru "Close folder" "Закрыть папку"
 | 
					::msgcat::mcset ru "Close folder" "Закрыть каталог"
 | 
				
			||||||
::msgcat::mcset ru "Close Project Manager?" "Выйти из программы?"
 | 
					::msgcat::mcset ru "Close Project Manager?" "Выйти из программы?"
 | 
				
			||||||
::msgcat::mcset ru "Comments" "Коментарии"
 | 
					::msgcat::mcset ru "Comments" "Коментарии"
 | 
				
			||||||
::msgcat::mcset ru "Comment selected" "Закоментировать"
 | 
					::msgcat::mcset ru "Comment selected" "Закоментировать"
 | 
				
			||||||
@@ -77,6 +77,7 @@
 | 
				
			|||||||
::msgcat::mcset ru "Editor settings" "Настройки редактора"
 | 
					::msgcat::mcset ru "Editor settings" "Настройки редактора"
 | 
				
			||||||
::msgcat::mcset ru "Editor helpers" "Подсказки при вводе"
 | 
					::msgcat::mcset ru "Editor helpers" "Подсказки при вводе"
 | 
				
			||||||
::msgcat::mcset ru "Encode" "Перекодировка"
 | 
					::msgcat::mcset ru "Encode" "Перекодировка"
 | 
				
			||||||
 | 
					::msgcat::mcset ru "Enter command for execute file" "Введите команду для запуска текущего файла"
 | 
				
			||||||
::msgcat::mcset ru "Authorisation required" "Требуется авторизация"
 | 
					::msgcat::mcset ru "Authorisation required" "Требуется авторизация"
 | 
				
			||||||
::msgcat::mcset ru "Error open URL" "Ошибка открытия URL"
 | 
					::msgcat::mcset ru "Error open URL" "Ошибка открытия URL"
 | 
				
			||||||
::msgcat::mcset ru "Exit" "Выход"
 | 
					::msgcat::mcset ru "Exit" "Выход"
 | 
				
			||||||
@@ -88,6 +89,9 @@
 | 
				
			|||||||
::msgcat::mcset ru "File was modifyed" "Файл был изменен"
 | 
					::msgcat::mcset ru "File was modifyed" "Файл был изменен"
 | 
				
			||||||
::msgcat::mcset ru "File modify" "Файл изменен"
 | 
					::msgcat::mcset ru "File modify" "Файл изменен"
 | 
				
			||||||
::msgcat::mcset ru "File saved" "Файл сохранен"
 | 
					::msgcat::mcset ru "File saved" "Файл сохранен"
 | 
				
			||||||
 | 
					::msgcat::mcset ru "The file looks like a binary file. Open anyway?" "Файл похож на двоичный. Открыть все равно?"
 | 
				
			||||||
 | 
					::msgcat::mcset ru "The file looks like a image. Support not implemented yet." "Файл выглядит как изображение. Поддержка пока не реализована."
 | 
				
			||||||
 | 
					::msgcat::mcset ru "The file size to big. Open anyway?" "Файл большого размера. Открыть все равно?"
 | 
				
			||||||
::msgcat::mcset ru "Find" "Найти"
 | 
					::msgcat::mcset ru "Find" "Найти"
 | 
				
			||||||
::msgcat::mcset ru "Found" "Найдено"
 | 
					::msgcat::mcset ru "Found" "Найдено"
 | 
				
			||||||
::msgcat::mcset ru "Find in files" "Найти  в файлах"
 | 
					::msgcat::mcset ru "Find in files" "Найти  в файлах"
 | 
				
			||||||
@@ -138,9 +142,10 @@
 | 
				
			|||||||
::msgcat::mcset ru "No" "Нет"
 | 
					::msgcat::mcset ru "No" "Нет"
 | 
				
			||||||
::msgcat::mcset ru "Open" "Открыть"
 | 
					::msgcat::mcset ru "Open" "Открыть"
 | 
				
			||||||
::msgcat::mcset ru "Open file" "Открыть файл"
 | 
					::msgcat::mcset ru "Open file" "Открыть файл"
 | 
				
			||||||
::msgcat::mcset ru "Open folder" "Открыть папку"
 | 
					::msgcat::mcset ru "Open folder" "Открыть каталог"
 | 
				
			||||||
::msgcat::mcset ru "Open project" "Открыть проект"
 | 
					::msgcat::mcset ru "Open project" "Открыть проект"
 | 
				
			||||||
::msgcat::mcset ru "Opened file in progress" "Открытие файла"
 | 
					::msgcat::mcset ru "Opened file in progress" "Открытие файла"
 | 
				
			||||||
 | 
					::msgcat::mcset ru "Open recent" "Открыть недавнее"
 | 
				
			||||||
::msgcat::mcset ru "Operators" "Операторы"
 | 
					::msgcat::mcset ru "Operators" "Операторы"
 | 
				
			||||||
::msgcat::mcset ru "Overwrite" "Замена"
 | 
					::msgcat::mcset ru "Overwrite" "Замена"
 | 
				
			||||||
::msgcat::mcset ru "Parameters" "Параметры"
 | 
					::msgcat::mcset ru "Parameters" "Параметры"
 | 
				
			||||||
@@ -195,7 +200,7 @@
 | 
				
			|||||||
::msgcat::mcset ru "Select directory" "Выбор директории"
 | 
					::msgcat::mcset ru "Select directory" "Выбор директории"
 | 
				
			||||||
::msgcat::mcset ru "Selected directory" "Директория"
 | 
					::msgcat::mcset ru "Selected directory" "Директория"
 | 
				
			||||||
::msgcat::mcset ru "Selection color" "Цвет выделения"
 | 
					::msgcat::mcset ru "Selection color" "Цвет выделения"
 | 
				
			||||||
::msgcat::mcset ru "Settings" "Установки"
 | 
					::msgcat::mcset ru "Settings" "Настройки"
 | 
				
			||||||
::msgcat::mcset ru "Statusbar" "Строка статуса"
 | 
					::msgcat::mcset ru "Statusbar" "Строка статуса"
 | 
				
			||||||
::msgcat::mcset ru "Show backup files" "Показывать временные файлы"
 | 
					::msgcat::mcset ru "Show backup files" "Показывать временные файлы"
 | 
				
			||||||
::msgcat::mcset ru "Show the Menu" "Показывать меню"
 | 
					::msgcat::mcset ru "Show the Menu" "Показывать меню"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,9 @@ namespace eval NB {
 | 
				
			|||||||
    proc InsertItem {nb item type} {
 | 
					    proc InsertItem {nb item type} {
 | 
				
			||||||
        switch $type {
 | 
					        switch $type {
 | 
				
			||||||
            file {
 | 
					            file {
 | 
				
			||||||
                regsub -all {\.|/|\\|\s} $item "_" itemName
 | 
					                set item [string tolower $item]
 | 
				
			||||||
 | 
					                regsub -all {\.|/|\\|\s|:} $item "_" itemName
 | 
				
			||||||
 | 
					                # puts "$item -> $itemName"
 | 
				
			||||||
                if [winfo exists $nb.$itemName] {
 | 
					                if [winfo exists $nb.$itemName] {
 | 
				
			||||||
                    set fm $nb.$itemName
 | 
					                    set fm $nb.$itemName
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -239,6 +239,7 @@ proc FindImage {ext} {
 | 
				
			|||||||
        JP2
 | 
					        JP2
 | 
				
			||||||
        ICO
 | 
					        ICO
 | 
				
			||||||
        XPM
 | 
					        XPM
 | 
				
			||||||
 | 
					        SVG
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    foreach img [image names] {
 | 
					    foreach img [image names] {
 | 
				
			||||||
        if [regexp -nocase -all -- "^($ext)(_16x12)" $img match v1 v2] {
 | 
					        if [regexp -nocase -all -- "^($ext)(_16x12)" $img match v1 v2] {
 | 
				
			||||||
@@ -276,17 +277,17 @@ namespace eval Help {
 | 
				
			|||||||
proc SearchVariable {txt} {
 | 
					proc SearchVariable {txt} {
 | 
				
			||||||
    global fileStructure project variables
 | 
					    global fileStructure project variables
 | 
				
			||||||
    set varName [$txt get {insert wordstart} {insert wordend}]
 | 
					    set varName [$txt get {insert wordstart} {insert wordend}]
 | 
				
			||||||
    puts ">>>$varName<<<"
 | 
					    # puts ">>>$varName<<<"
 | 
				
			||||||
    if {[info exists project] == 0} {return}
 | 
					    if {[info exists project] == 0} {return}
 | 
				
			||||||
    foreach f [array names project] {
 | 
					    foreach f [array names project] {
 | 
				
			||||||
        puts "--$f"
 | 
					        # puts "--$f"
 | 
				
			||||||
        puts "----"
 | 
					        # puts "----"
 | 
				
			||||||
        foreach a $project($f) {
 | 
					        foreach a $project($f) {
 | 
				
			||||||
            puts "-----$variables($a)"
 | 
					            # puts "-----$variables($a)"
 | 
				
			||||||
            foreach b $variables($a) {
 | 
					            foreach b $variables($a) {
 | 
				
			||||||
                puts "------$b -- [lindex $b 0]"
 | 
					                # puts "------$b -- [lindex $b 0]"
 | 
				
			||||||
                if {$varName eq [lindex $b 0]} {
 | 
					                if {$varName eq [lindex $b 0]} {
 | 
				
			||||||
                    puts "УРААААААА $varName = $b в файле $a \n\t [lindex $b 0]"
 | 
					                    # puts "УРААААААА $varName = $b в файле $a \n\t [lindex $b 0]"
 | 
				
			||||||
                    # FindVariablesDialog $txt "$varName: \[...\][file tail $a]"
 | 
					                    # FindVariablesDialog $txt "$varName: \[...\][file tail $a]"
 | 
				
			||||||
                    lappend l [list $varName [lindex $b 1] $a]
 | 
					                    lappend l [list $varName [lindex $b 1] $a]
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -354,7 +355,7 @@ proc FindVariablesDialog {txt args} {
 | 
				
			|||||||
    foreach { word } $args {
 | 
					    foreach { word } $args {
 | 
				
			||||||
        foreach lst $word {
 | 
					        foreach lst $word {
 | 
				
			||||||
            # set l [split $lst " "]
 | 
					            # set l [split $lst " "]
 | 
				
			||||||
            puts "[lindex $lst 0] -[lindex $lst 1] -[lindex $lst 2]"
 | 
					            # puts "[lindex $lst 0] -[lindex $lst 1] -[lindex $lst 2]"
 | 
				
			||||||
            # lappend l2 [lindex $l 0] [lindex $l 1] [file tail [lindex $l 2]]
 | 
					            # lappend l2 [lindex $l 0] [lindex $l 1] [file tail [lindex $l 2]]
 | 
				
			||||||
            # $win.lBox insert {} end -values $lst -text {1 2 3}
 | 
					            # $win.lBox insert {} end -values $lst -text {1 2 3}
 | 
				
			||||||
            $win.lBox insert end "[lindex $lst 0] > [lindex $lst 1] > [lindex $lst 2]\n"
 | 
					            $win.lBox insert end "[lindex $lst 0] > [lindex $lst 1] > [lindex $lst 2]\n"
 | 
				
			||||||
@@ -440,7 +441,7 @@ proc SearchStringInFolder {str} {
 | 
				
			|||||||
    if {$tcl_platform(platform) == "windows"} {
 | 
					    if {$tcl_platform(platform) == "windows"} {
 | 
				
			||||||
    } elseif {$tcl_platform(platform) == "mac"} {
 | 
					    } elseif {$tcl_platform(platform) == "mac"} {
 | 
				
			||||||
    } elseif {$tcl_platform(platform) == "unix"} {
 | 
					    } elseif {$tcl_platform(platform) == "unix"} {
 | 
				
			||||||
        puts "$cfgVariables(searchCommand) $cfgVariables(searchCommandOptions) $str $activeProject"
 | 
					        # puts "$cfgVariables(searchCommand) $cfgVariables(searchCommandOptions) $str $activeProject"
 | 
				
			||||||
        # Составляем строку (точнее список) для запуска команды
 | 
					        # Составляем строку (точнее список) для запуска команды
 | 
				
			||||||
        set cmd exec
 | 
					        set cmd exec
 | 
				
			||||||
        regsub -all {\[} $str {\\[} str
 | 
					        regsub -all {\[} $str {\\[} str
 | 
				
			||||||
@@ -682,3 +683,297 @@ proc SetActiveProject {path} {
 | 
				
			|||||||
    .frmStatus.lblGitLogo configure -image git_logo_20x20
 | 
					    .frmStatus.lblGitLogo configure -image git_logo_20x20
 | 
				
			||||||
    .frmStatus.lblGit configure -text "[::msgcat::mc "Branch"]: [Git::Branches current]"
 | 
					    .frmStatus.lblGit configure -text "[::msgcat::mc "Branch"]: [Git::Branches current]"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Added recently opened folder into menu "File"->"Open recent"
 | 
				
			||||||
 | 
					proc OpenRecentProject {path} {
 | 
				
			||||||
 | 
					    SetActiveProject $path
 | 
				
			||||||
 | 
					    FileOper::ReadFolder $path
 | 
				
			||||||
 | 
					    ReadFilesFromDirectory $path $path
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc AddRecentEditedFolder {path} {
 | 
				
			||||||
 | 
					    global cfgVariables
 | 
				
			||||||
 | 
					    if {$path == ""} {
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if {[info exists cfgVariables(recentFolder)] == 0} {
 | 
				
			||||||
 | 
					        set cfgVariables(recentFolder) [list $path]
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        # check if path already in a list
 | 
				
			||||||
 | 
					        foreach item $cfgVariables(recentFolder) {
 | 
				
			||||||
 | 
					            if {$item == $path} {
 | 
				
			||||||
 | 
					                return
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        # check list length, and remove 0 element if length is 10
 | 
				
			||||||
 | 
					        if {[llength $cfgVariables(recentFolder)] == 10} {
 | 
				
			||||||
 | 
					            # lremove $cfgVariables(recentFolder) 0; # tcl 8.7
 | 
				
			||||||
 | 
					            set cfgVariables(recentFolder) [lrange $cfgVariables(recentFolder) 1 end]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        lappend cfgVariables(recentFolder) $path
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .frmMenu.mnuFile.m.openRecent add command -label $path -command [list OpenRecentProject $path]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ================== OLD ====================
 | 
				
			||||||
 | 
					proc launchBrowser {url} {
 | 
				
			||||||
 | 
					    global tcl_platform
 | 
				
			||||||
 | 
					    if {$tcl_platform(platform) eq "windows"} {
 | 
				
			||||||
 | 
					        set command [list {*}[auto_execok start] {}]
 | 
				
			||||||
 | 
					        if {[file isdirectory $url]} {
 | 
				
			||||||
 | 
					            set url [file nativename [file join $url .]]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } elseif {$tcl_platform(os) eq "Darwin"} {
 | 
				
			||||||
 | 
					        set command [list open]
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        set command [list xdg-open]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    exec {*}$command $url &
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					## EXEC EXTERNAL BROWSER AND GOTO URL ##
 | 
				
			||||||
 | 
					proc GoToURL {url} {
 | 
				
			||||||
 | 
					    global env tcl_platform
 | 
				
			||||||
 | 
					    if {$tcl_platform(platform) == "windows"} {
 | 
				
			||||||
 | 
					        set pipe [open "|iexplore $url" "r"]
 | 
				
			||||||
 | 
					    } elseif {$tcl_platform(platform) == "mac"} {
 | 
				
			||||||
 | 
					        set pipe [open "|iexplore $url" "r"]
 | 
				
			||||||
 | 
					    } elseif {$tcl_platform(platform) == "unix"} {
 | 
				
			||||||
 | 
					        #$env(BROWSER)
 | 
				
			||||||
 | 
					        #set pipe [open "|$env(BROWSER) $url" "r"]
 | 
				
			||||||
 | 
					        launchBrowser $url
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    fileevent $pipe readable
 | 
				
			||||||
 | 
					    fconfigure $pipe -buffering none -blocking no
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					## MAKING TAR ARCHIVE ##
 | 
				
			||||||
 | 
					proc MakeTGZ {} {
 | 
				
			||||||
 | 
					    global activeProject tgzDir tgzNamed workDir projDir env tcl_platform
 | 
				
			||||||
 | 
					    if {$activeProject == ""} {
 | 
				
			||||||
 | 
					        set answer [tk_messageBox\
 | 
				
			||||||
 | 
					                -message [::msgcat::mc "Not found active project"]\
 | 
				
			||||||
 | 
					                -type ok -icon warning\
 | 
				
			||||||
 | 
					                -title [::msgcat::mc "Warning"]]
 | 
				
			||||||
 | 
					        case $answer {
 | 
				
			||||||
 | 
					            ok {return 0}
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    FileDialog tree save_all
 | 
				
			||||||
 | 
					    set file [open [file join $workDir $activeProject.proj] r]
 | 
				
			||||||
 | 
					    while {[gets $file line]>=0} {
 | 
				
			||||||
 | 
					        scan $line "%s" keyWord
 | 
				
			||||||
 | 
					        set string [string range $line [string first "\"" $line] [string last "\"" $line]]
 | 
				
			||||||
 | 
					        set string [string trim $string "\""]
 | 
				
			||||||
 | 
					        if {$keyWord == "ProjectDirName"} {
 | 
				
			||||||
 | 
					            set dir "$string"
 | 
				
			||||||
 | 
					        }  
 | 
				
			||||||
 | 
					        if {$keyWord == "ProjectVersion"} {
 | 
				
			||||||
 | 
					            set version "$string"
 | 
				
			||||||
 | 
					        }  
 | 
				
			||||||
 | 
					        if {$keyWord == "ProjectRelease"} {
 | 
				
			||||||
 | 
					            set release "$string"
 | 
				
			||||||
 | 
					        }  
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    close $file
 | 
				
			||||||
 | 
					    set res [split $tgzNamed "-"]
 | 
				
			||||||
 | 
					    set name [lindex $res 0]
 | 
				
			||||||
 | 
					    set ver [lindex $res 1]
 | 
				
			||||||
 | 
					    set rel [lindex $res 2]
 | 
				
			||||||
 | 
					    if {$name == "projectName"} {
 | 
				
			||||||
 | 
					        set name $activeProject
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if {$ver == "version"} {
 | 
				
			||||||
 | 
					        append name "-$version"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if {$rel == "release"} {
 | 
				
			||||||
 | 
					        append name "-$release"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    # multiplatform featuring #
 | 
				
			||||||
 | 
					    if {$tcl_platform(platform) == "windows"} {
 | 
				
			||||||
 | 
					        append name ".zip"
 | 
				
			||||||
 | 
					    } elseif {$tcl_platform(platform) == "mac"} {
 | 
				
			||||||
 | 
					        append name ".zip"
 | 
				
			||||||
 | 
					    } elseif {$tcl_platform(platform) == "unix"} {
 | 
				
			||||||
 | 
					        append name ".tar.gz"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    catch {cd $projDir} res
 | 
				
			||||||
 | 
					    if {[file exists [file join $tgzDir $name]] == 1} {
 | 
				
			||||||
 | 
					        set answer [tk_messageBox\
 | 
				
			||||||
 | 
					                -message "[::msgcat::mc "File already exists. Overwrite?"] \"$name\" ?"\
 | 
				
			||||||
 | 
					                -type yesno -icon question -default yes\
 | 
				
			||||||
 | 
					                -title [::msgcat::mc "Question"]]
 | 
				
			||||||
 | 
					        case $answer {
 | 
				
			||||||
 | 
					            yes {file delete [file join $tgzDir $name]}
 | 
				
			||||||
 | 
					            no {return 0}
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    # multiplatform featuring #
 | 
				
			||||||
 | 
					    if {$tcl_platform(platform) == "windows"} {
 | 
				
			||||||
 | 
					        catch [exec pkzip -r -p [file join $tgzDir $name] [file join $activeProject *]] err
 | 
				
			||||||
 | 
					    } elseif {$tcl_platform(platform) == "mac"} {
 | 
				
			||||||
 | 
					        catch [exec zip -c [file join $tgzDir $name] $activeProject] err
 | 
				
			||||||
 | 
					    } elseif {$tcl_platform(platform) == "unix"} {
 | 
				
			||||||
 | 
					        catch [exec tar -czvf [file join $tgzDir $name] $activeProject] err
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    # message dialog #
 | 
				
			||||||
 | 
					    set msg "[::msgcat::mc "Archive created in"] [file join $tgzDir $name]"
 | 
				
			||||||
 | 
					    set icon info
 | 
				
			||||||
 | 
					    set answer [tk_messageBox\
 | 
				
			||||||
 | 
					            -message "$msg"\
 | 
				
			||||||
 | 
					            -type ok -icon $icon]
 | 
				
			||||||
 | 
					            case $answer {
 | 
				
			||||||
 | 
					        ok {return 0}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## MAKE PROJ PROCEDURE (RUNNING PROJECT) ##
 | 
				
			||||||
 | 
					proc Execute {filePath w activeEditor} {
 | 
				
			||||||
 | 
					    global activeProject cfgVariables
 | 
				
			||||||
 | 
					    if {$activeProject == ""} {
 | 
				
			||||||
 | 
					        set answer [tk_messageBox\
 | 
				
			||||||
 | 
					        -message "[::msgcat::mc "Not found active project"]"\
 | 
				
			||||||
 | 
					        -type ok -icon warning\
 | 
				
			||||||
 | 
					        -title [::msgcat::mc "Warning"]]
 | 
				
			||||||
 | 
					        case $answer {
 | 
				
			||||||
 | 
					            ok {return 0}
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    FileOper::Save
 | 
				
			||||||
 | 
					    set file $filePath
 | 
				
			||||||
 | 
					    set action run
 | 
				
			||||||
 | 
					    # create array with file names #
 | 
				
			||||||
 | 
					    frame $w.frame -borderwidth 2 -relief ridge -background $cfgVariables(backGround)
 | 
				
			||||||
 | 
					    pack $w.frame -side top -fill both -expand true
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    ctext $w.frame.text -yscrollcommand "$w.frame.yscroll set" \
 | 
				
			||||||
 | 
					    -bg $cfgVariables(backGround) -fg $cfgVariables(foreground) \
 | 
				
			||||||
 | 
					    -relief sunken -wrap word -highlightthickness 0 -font $cfgVariables(font)\
 | 
				
			||||||
 | 
					    -selectborderwidth 0 -selectbackground $cfgVariables(selectbg) -width 10 -height 10
 | 
				
			||||||
 | 
					    scrollbar $w.frame.yscroll -relief sunken -borderwidth {1} -width {10} -takefocus 0 \
 | 
				
			||||||
 | 
					    -command "$w.frame.text yview" -background $cfgVariables(backGround)
 | 
				
			||||||
 | 
					    Highlight::ExecuteColorized $w.frame.text
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pack $w.frame.text -side left -fill both -expand true
 | 
				
			||||||
 | 
					    pack $w.frame.yscroll -side left -fill y 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    bind $w.frame.text <Return> [list Run $w $filePath]
 | 
				
			||||||
 | 
					    bind $w.frame.text <Control-r> [list CloseExecuteDialog $w $activeEditor]
 | 
				
			||||||
 | 
					    bind $w.frame.text <Control-Cyrillic_er> [list CloseExecuteDialog $w $activeEditor]
 | 
				
			||||||
 | 
					    # focus -force $w.frmBtn.btnOk
 | 
				
			||||||
 | 
					    # $noteBook raise $node
 | 
				
			||||||
 | 
					    # insert debug data into text widget #
 | 
				
			||||||
 | 
					    $w.frame.text tag configure bold -font $cfgVariables(fontBold)
 | 
				
			||||||
 | 
					    $w.frame.text tag configure error -font $cfgVariables(fontBold) -foreground red
 | 
				
			||||||
 | 
					    $w.frame.text tag add bold 0.0 0.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $w.frame.text insert end "[::msgcat::mc "Enter command for execute file"] $filePath >\n"
 | 
				
			||||||
 | 
					    set pos [$w.frame.text index insert]
 | 
				
			||||||
 | 
					    set lineNum [lindex [split $pos "."] 0]
 | 
				
			||||||
 | 
					    $w.frame.text insert 0.0 "======================================================================================\n"
 | 
				
			||||||
 | 
					    $w.frame.text tag add bold $lineNum.0 $lineNum.end
 | 
				
			||||||
 | 
					    Highlight::ExecuteColorized $w.frame.text
 | 
				
			||||||
 | 
					    # focus -force $w.frame.text
 | 
				
			||||||
 | 
					    focus -force $w.frame.text.t
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc CloseExecuteDialog {w activeEditor} {
 | 
				
			||||||
 | 
					    destroy $w
 | 
				
			||||||
 | 
					    focus $activeEditor.frmText.t.t
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc Run {w filePath} {
 | 
				
			||||||
 | 
					    # Получаем индекс конца последней строки
 | 
				
			||||||
 | 
					    set endIndex [$w.frame.text index "end-1c"];  # или "end-1l lineend"
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Получаем индекс начала последней строки  
 | 
				
			||||||
 | 
					    set startIndex [$w.frame.text index "end-1l linestart"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    set command [$w.frame.text get $startIndex $endIndex end]
 | 
				
			||||||
 | 
					    # Заменяем знак %f  на имя текущего файла
 | 
				
			||||||
 | 
					    regsub -all "%f" $command "$filePath" fullCommand
 | 
				
			||||||
 | 
					    $w.frame.text replace $startIndex $endIndex $fullCommand
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # $w.frame.text insert "end-4l linestart"
 | 
				
			||||||
 | 
					    cd [file dirname $filePath]
 | 
				
			||||||
 | 
					    set pipe [open "|$fullCommand 2> [file join [file dirname $filePath] errors]" "r"]
 | 
				
			||||||
 | 
					    set f [open [file join [file dirname $filePath] errors] "r"]
 | 
				
			||||||
 | 
					    set processPID [pid $pipe]
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    bind $w.frame.text <Control-c> [list SendSignal $processPID "SIGINT"]
 | 
				
			||||||
 | 
					    bind $w.frame.text <Control-z> [list SendSignal $processPID "SIGTSTP"]
 | 
				
			||||||
 | 
					    bind $w.frame.text <Control-d> [list SendSignal $processPID "SIGKILL"]
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					    # set pipe [open "|$command $filePath" "r"]
 | 
				
			||||||
 | 
					    # set f [open [file join ~ tmp errors] "r"]
 | 
				
			||||||
 | 
					    fileevent $pipe readable [list DebugInfo $w.frame.text $pipe $f]
 | 
				
			||||||
 | 
					    fconfigure $pipe -buffering none -blocking no
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## INSERT DEBUG INFORMATION INTO TEXT WIDGET ##
 | 
				
			||||||
 | 
					proc DebugInfo {widget file f} {
 | 
				
			||||||
 | 
					    $widget configure -state normal
 | 
				
			||||||
 | 
					    if {[eof $file]} {
 | 
				
			||||||
 | 
					        catch [close $file] msg
 | 
				
			||||||
 | 
					        if {$msg != ""} {
 | 
				
			||||||
 | 
					            puts $msg
 | 
				
			||||||
 | 
					            $widget insert "end-4l linestart" "[::msgcat::mc "Program failed"]: $msg\n";
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            # Highlight::ExecuteColorized $widget
 | 
				
			||||||
 | 
					            puts $msg
 | 
				
			||||||
 | 
					            $widget see "end-1l lineend"
 | 
				
			||||||
 | 
					            $widget delete "end-1l lineend" end
 | 
				
			||||||
 | 
					          #  $widget insert end "\n-------------------------------------------------\n"
 | 
				
			||||||
 | 
					           # $widget insert end "[::msgcat::mc "Program finished successfully"]\n"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        Highlight::ExecuteColorized $widget
 | 
				
			||||||
 | 
					        # close $f
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        # Highlight::ExecuteColorized $widget
 | 
				
			||||||
 | 
					        $widget insert "end-4l linestart" "[read $file]"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    while {[gets $f line]>=0} {
 | 
				
			||||||
 | 
					        Highlight::ExecuteColorized $widget
 | 
				
			||||||
 | 
					        $widget insert "end-4l linestart" "$line\n"
 | 
				
			||||||
 | 
					        # puts $line
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    # close $f
 | 
				
			||||||
 | 
					    $widget see end
 | 
				
			||||||
 | 
					    $widget tag add error 0.0 0.end
 | 
				
			||||||
 | 
					    # $widget configure -state disabled
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Функция для отправки сигнала процессу
 | 
				
			||||||
 | 
					proc SendSignal {pid signal} {
 | 
				
			||||||
 | 
					    global tcl_platform
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if {$tcl_platform(platform) eq "unix"} {
 | 
				
			||||||
 | 
					        # На Unix-системах
 | 
				
			||||||
 | 
					        switch -- $signal {
 | 
				
			||||||
 | 
					            "SIGINT" { exec kill -INT $pid }  ; # Ctrl+C
 | 
				
			||||||
 | 
					            "SIGTERM" { exec kill -TERM $pid } ; # Завершение
 | 
				
			||||||
 | 
					            "SIGTSTP" { exec kill -TSTP $pid } ; # Ctrl+Z (приостановка)
 | 
				
			||||||
 | 
					            "SIGKILL" { exec kill -KILL $pid } ; # Принудительное завершение
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        # На Windows
 | 
				
			||||||
 | 
					        switch -- $signal {
 | 
				
			||||||
 | 
					            "SIGINT" - "SIGTERM" { 
 | 
				
			||||||
 | 
					                # Используем taskkill для завершения
 | 
				
			||||||
 | 
					                catch {exec taskkill /PID $pid /T} 
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            "SIGKILL" { 
 | 
				
			||||||
 | 
					                # Принудительное завершение на Windows
 | 
				
			||||||
 | 
					                catch {exec taskkill /PID $pid /T /F} 
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Правка файла настроек
 | 
				
			||||||
 | 
					proc Settings {} {
 | 
				
			||||||
 | 
					    global dir
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    FileOper::Edit [file join $dir(cfg) projman.ini]
 | 
				
			||||||
 | 
					    # Config::read $dir(cfg)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
# 
 | 
					# 
 | 
				
			||||||
######################################################
 | 
					######################################################
 | 
				
			||||||
package require fileutil
 | 
					package require fileutil
 | 
				
			||||||
package require Thread
 | 
					# package require Thread
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TCL procedure
 | 
					# TCL procedure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -20,7 +20,7 @@ proc GetVariablesFromFile {fileName} {
 | 
				
			|||||||
    set varList ""
 | 
					    set varList ""
 | 
				
			||||||
    set params ""
 | 
					    set params ""
 | 
				
			||||||
    set varsBegin false
 | 
					    set varsBegin false
 | 
				
			||||||
    puts $fileName
 | 
					    # puts $fileName
 | 
				
			||||||
    set f [open "$fileName" r]
 | 
					    set f [open "$fileName" r]
 | 
				
			||||||
    if {[dict exists $lexers $fileType] == 0} {return}
 | 
					    if {[dict exists $lexers $fileType] == 0} {return}
 | 
				
			||||||
    while {[gets $f line] >=0 } {
 | 
					    while {[gets $f line] >=0 } {
 | 
				
			||||||
@@ -32,7 +32,7 @@ proc GetVariablesFromFile {fileName} {
 | 
				
			|||||||
                    set indentSize 0
 | 
					                    set indentSize 0
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                set varsBegin true
 | 
					                set varsBegin true
 | 
				
			||||||
                puts "====== $varsBegin $indentSize"
 | 
					                # puts "$varsBegin $indentSize"
 | 
				
			||||||
                continue
 | 
					                continue
 | 
				
			||||||
                # lappend varList [list $varName $varValue]
 | 
					                # lappend varList [list $varName $varValue]
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -41,13 +41,13 @@ proc GetVariablesFromFile {fileName} {
 | 
				
			|||||||
            set l [GetVarFromLine $line $fileType]
 | 
					            set l [GetVarFromLine $line $fileType]
 | 
				
			||||||
            if {$line eq ""} {
 | 
					            if {$line eq ""} {
 | 
				
			||||||
               set varsBegin false
 | 
					               set varsBegin false
 | 
				
			||||||
               puts "====== $varsBegin $indentSize [lindex $l 3]"
 | 
					               # puts "$varsBegin $indentSize [lindex $l 3]"
 | 
				
			||||||
               continue
 | 
					               continue
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if {[lindex $l 3] ne ""} {
 | 
					            if {[lindex $l 3] ne ""} {
 | 
				
			||||||
                if [expr [lindex $l 3] <= $indentSize] {
 | 
					                if [expr [lindex $l 3] <= $indentSize] {
 | 
				
			||||||
                   set varsBegin false
 | 
					                   set varsBegin false
 | 
				
			||||||
                   puts "====== $varsBegin $indentSize >[lindex $l 3]<"
 | 
					                   # puts "$varsBegin $indentSize >[lindex $l 3]<"
 | 
				
			||||||
                   continue
 | 
					                   continue
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -79,7 +79,7 @@ proc GetVarFromLine {line fileType} {
 | 
				
			|||||||
                set varType ""
 | 
					                set varType ""
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            set indentLength  [string length $indent]
 | 
					            set indentLength  [string length $indent]
 | 
				
			||||||
            puts "variable: $varName, value: $varValue, type: $varType, indent: >$indent< $indentLength"
 | 
					            # puts "variable: $varName, value: $varValue, type: $varType, indent: >$indent< $indentLength"
 | 
				
			||||||
            return [list $varName $varValue $varType $indentLength]
 | 
					            return [list $varName $varValue $varType $indentLength]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -90,7 +90,7 @@ proc GetVariablesFromVarFile {fileName} {
 | 
				
			|||||||
    set procList ""
 | 
					    set procList ""
 | 
				
			||||||
    set varList ""
 | 
					    set varList ""
 | 
				
			||||||
    set params ""
 | 
					    set params ""
 | 
				
			||||||
    puts $fileName
 | 
					    # puts $fileName
 | 
				
			||||||
    set f [open "$fileName" r]
 | 
					    set f [open "$fileName" r]
 | 
				
			||||||
    if {[dict exists $lexers $fileType] == 0} {return}
 | 
					    if {[dict exists $lexers $fileType] == 0} {return}
 | 
				
			||||||
    while {[gets $f line] >=0 } {
 | 
					    while {[gets $f line] >=0 } {
 | 
				
			||||||
@@ -122,7 +122,7 @@ proc ReadFilesFromDirectory {directory root {type ""}} {
 | 
				
			|||||||
        return ""
 | 
					        return ""
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    foreach fileName [glob -nocomplain *] {
 | 
					    foreach fileName [glob -nocomplain *] {
 | 
				
			||||||
        puts "Find file: $fileName [lsearch -exact -nocase $l $fileName]"
 | 
					        # puts "Find file: $fileName [lsearch -exact -nocase $l $fileName]"
 | 
				
			||||||
        if {[lsearch -exact $l $fileName] != -1 && [file isdirectory [file join $root $directory $fileName]] == 1} {
 | 
					        if {[lsearch -exact $l $fileName] != -1 && [file isdirectory [file join $root $directory $fileName]] == 1} {
 | 
				
			||||||
            # puts "--- $root $fileName"
 | 
					            # puts "--- $root $fileName"
 | 
				
			||||||
            ReadFilesFromDirectory [file join $directory $fileName] $root "var"
 | 
					            ReadFilesFromDirectory [file join $directory $fileName] $root "var"
 | 
				
			||||||
@@ -179,8 +179,8 @@ proc ReadFilesFromDirectory {directory root {type ""}} {
 | 
				
			|||||||
# 
 | 
					# 
 | 
				
			||||||
proc Accept { dirLib directory } {
 | 
					proc Accept { dirLib directory } {
 | 
				
			||||||
    global dir
 | 
					    global dir
 | 
				
			||||||
    puts $dir(lib)
 | 
					    # puts $dir(lib)
 | 
				
			||||||
   puts $dirLib
 | 
					    # puts $dirLib
 | 
				
			||||||
  # переменная с указанием ваших действия перед порождением потока
 | 
					  # переменная с указанием ваших действия перед порождением потока
 | 
				
			||||||
    set threadinit {
 | 
					    set threadinit {
 | 
				
			||||||
        # если необходимо, загружаем исходный tcl код, расположенный в других файлах
 | 
					        # если необходимо, загружаем исходный tcl код, расположенный в других файлах
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,8 @@ namespace eval Tree {
 | 
				
			|||||||
        # puts "$tree $parent $item $type $text"
 | 
					        # puts "$tree $parent $item $type $text"
 | 
				
			||||||
        switch $type  {
 | 
					        switch $type  {
 | 
				
			||||||
            file {
 | 
					            file {
 | 
				
			||||||
                regsub -all {\.|/|\\|\s} $item "_" subNode
 | 
					                regsub -all {\.|/|\\|\s|:} $item "_" subNode
 | 
				
			||||||
 | 
					                set subNode [string tolower $subNode]
 | 
				
			||||||
                # puts "Inserted tree node: $subNode"
 | 
					                # puts "Inserted tree node: $subNode"
 | 
				
			||||||
                set fileExt [string trimleft [file extension $text] "."]
 | 
					                set fileExt [string trimleft [file extension $text] "."]
 | 
				
			||||||
                #set fileName [string trimleft [file extension $text] "."]
 | 
					                #set fileName [string trimleft [file extension $text] "."]
 | 
				
			||||||
@@ -41,7 +42,8 @@ namespace eval Tree {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            directory {
 | 
					            directory {
 | 
				
			||||||
                regsub -all {\.|/|\\|\s} $item "_" subNode
 | 
					                regsub -all {\.|/|\\|\s|:} $item "_" subNode
 | 
				
			||||||
 | 
					                set subNode [string tolower $subNode]
 | 
				
			||||||
                # puts $subNode
 | 
					                # puts $subNode
 | 
				
			||||||
                if {[string match {*debian*} [string tolower [file tail $item]]]} {
 | 
					                if {[string match {*debian*} [string tolower [file tail $item]]]} {
 | 
				
			||||||
                    set image [::FindImage debian]
 | 
					                    set image [::FindImage debian]
 | 
				
			||||||
@@ -104,7 +106,7 @@ namespace eval Tree {
 | 
				
			|||||||
        set key [lindex [split $id "::"] 0]
 | 
					        set key [lindex [split $id "::"] 0]
 | 
				
			||||||
        if {$values eq "" || $key eq ""} {return}
 | 
					        if {$values eq "" || $key eq ""} {return}
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        # puts "$key $tree $values"
 | 
					        puts "$key $tree $values"
 | 
				
			||||||
        switch -regexp $key {
 | 
					        switch -regexp $key {
 | 
				
			||||||
            directory {
 | 
					            directory {
 | 
				
			||||||
                FileOper::ReadFolder  $values
 | 
					                FileOper::ReadFolder  $values
 | 
				
			||||||
@@ -112,6 +114,7 @@ namespace eval Tree {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            file {
 | 
					            file {
 | 
				
			||||||
                set v [FileOper::Edit $values $nbEditor]
 | 
					                set v [FileOper::Edit $values $nbEditor]
 | 
				
			||||||
 | 
					                puts $v
 | 
				
			||||||
                if {$v eq false} {
 | 
					                if {$v eq false} {
 | 
				
			||||||
                    $tree delete $id
 | 
					                    $tree delete $id
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										56
									
								
								projman.tcl
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								projman.tcl
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
# Tcl ignores the next line -*- tcl -*- \
 | 
					# Tcl ignores the next line -*- tcl -*- \
 | 
				
			||||||
exec wish "$0" -- "$@"
 | 
					exec wish9.0 "$0" -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
######################################################
 | 
					######################################################
 | 
				
			||||||
#        Tcl/Tk Project manager 2.0
 | 
					#        Tcl/Tk Project manager 2.0
 | 
				
			||||||
@@ -9,8 +9,8 @@ exec wish "$0" -- "$@"
 | 
				
			|||||||
# Home page: https://nuk-svk.ru
 | 
					# Home page: https://nuk-svk.ru
 | 
				
			||||||
######################################################
 | 
					######################################################
 | 
				
			||||||
# Version: 2.0.0
 | 
					# Version: 2.0.0
 | 
				
			||||||
# Release: alpha
 | 
					# Release: alpha19
 | 
				
			||||||
# Build: 19122022152600
 | 
					# Build: 30102025145246
 | 
				
			||||||
######################################################
 | 
					######################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# определим текущую версию, релиз и т.д.
 | 
					# определим текущую версию, релиз и т.д.
 | 
				
			||||||
@@ -34,6 +34,38 @@ while {[gets $f line] >=0} {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
close $f
 | 
					close $f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package require msgcat
 | 
				
			||||||
 | 
					package require inifile
 | 
				
			||||||
 | 
					package require ctext
 | 
				
			||||||
 | 
					package require base64
 | 
				
			||||||
 | 
					package require fileutil
 | 
				
			||||||
 | 
					# package require Thread
 | 
				
			||||||
 | 
					package require fileutil::magic::filetype
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Определим установлен ли пакет Img для расширенной поддержки изображений
 | 
				
			||||||
 | 
					proc PackagePresent {pkg} {
 | 
				
			||||||
 | 
					    # puts $pkg
 | 
				
			||||||
 | 
					    foreach item [package names] {
 | 
				
			||||||
 | 
					        # puts [string match -nocase Img $item]
 | 
				
			||||||
 | 
					        if {[string match -nocase Img $item] == 1} {
 | 
				
			||||||
 | 
					            puts "The $pkg package was found"
 | 
				
			||||||
 | 
					            return true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if {[PackagePresent "Img"] eq "true"} {
 | 
				
			||||||
 | 
					    package require Img
 | 
				
			||||||
 | 
					} else {
 | 
				
			||||||
 | 
					    puts "Img not present"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Устанавливаем текущий каталог
 | 
				
			||||||
 | 
					set dir(root) [pwd]
 | 
				
			||||||
 | 
					set dir(doc) [file join $dir(root) doc]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ДОбавляем в список файлы (каталоги) из командной строки
 | 
				
			||||||
if { $::argc > 0 } {
 | 
					if { $::argc > 0 } {
 | 
				
			||||||
    foreach arg $::argv {
 | 
					    foreach arg $::argv {
 | 
				
			||||||
        lappend opened $arg
 | 
					        lappend opened $arg
 | 
				
			||||||
@@ -41,17 +73,6 @@ if { $::argc > 0 } {
 | 
				
			|||||||
    puts $opened
 | 
					    puts $opened
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package require msgcat
 | 
					 | 
				
			||||||
package require inifile
 | 
					 | 
				
			||||||
package require ctext
 | 
					 | 
				
			||||||
package require base64
 | 
					 | 
				
			||||||
package require fileutil
 | 
					 | 
				
			||||||
package require Thread
 | 
					 | 
				
			||||||
package require fileutil::magic::filetype
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Устанавливаем текущий каталог
 | 
					 | 
				
			||||||
set dir(root) [pwd]
 | 
					 | 
				
			||||||
set dir(doc) [file join $dir(root) doc]
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Устанавливаем рабочий каталог, если его нет то создаём.
 | 
					# Устанавливаем рабочий каталог, если его нет то создаём.
 | 
				
			||||||
# Согласно спецификации XDG проверяем наличие переменных и каталогов
 | 
					# Согласно спецификации XDG проверяем наличие переменных и каталогов
 | 
				
			||||||
@@ -109,13 +130,14 @@ puts "Setting the locale... [::msgcat::mclocale]"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
source [file join $dir(lib) gui.tcl]
 | 
					source [file join $dir(lib) gui.tcl]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Git::CommandPathSetting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Open the PATH if command line argument has been setting
 | 
					# Open the PATH if command line argument has been setting
 | 
				
			||||||
if [info exists opened] {
 | 
					if [info exists opened] {
 | 
				
			||||||
    # puts ">$opened"
 | 
					 | 
				
			||||||
    foreach path $opened {
 | 
					    foreach path $opened {
 | 
				
			||||||
 | 
					        # Приводим путь к полному виду
 | 
				
			||||||
        if {[file pathtype $path] ne "absolute"} {
 | 
					        if {[file pathtype $path] ne "absolute"} {
 | 
				
			||||||
            puts "\n\t[::msgcat::mc "Specify the absolute path to the directory or file"]: $path\n"
 | 
					            set path [file normalize $path]
 | 
				
			||||||
            exit
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if [file isdirectory $path] {
 | 
					        if [file isdirectory $path] {
 | 
				
			||||||
            # set activeProject $path
 | 
					            # set activeProject $path
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										149
									
								
								theme/black.tcl
									
									
									
									
									
								
							
							
						
						
									
										149
									
								
								theme/black.tcl
									
									
									
									
									
								
							@@ -6,8 +6,8 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# $Id: black.tcl,v 1.2 2009/10/25 19:21:30 oberdorfer Exp $
 | 
					# $Id: black.tcl,v 1.2 2009/10/25 19:21:30 oberdorfer Exp $
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package require Tk 8.4;                 # minimum version for Tile
 | 
					package require Tk;                 # minimum version for Tile
 | 
				
			||||||
package require tile 0.8;               # depends upon tile
 | 
					package require tile;               # depends upon tile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace eval ttk {
 | 
					namespace eval ttk {
 | 
				
			||||||
@@ -39,6 +39,7 @@ namespace eval ttk::theme::black {
 | 
				
			|||||||
    -lightest 	"#ffffff"
 | 
					    -lightest 	"#ffffff"
 | 
				
			||||||
    -selectbg	"#4a6984"
 | 
					    -selectbg	"#4a6984"
 | 
				
			||||||
    -selectfg	"#ffffff"
 | 
					    -selectfg	"#ffffff"
 | 
				
			||||||
 | 
					    -font "#c8c8c8"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if {[info commands ::ttk::style] ne ""} {
 | 
					  if {[info commands ::ttk::style] ne ""} {
 | 
				
			||||||
    set styleCmd ttk::style
 | 
					    set styleCmd ttk::style
 | 
				
			||||||
@@ -46,77 +47,83 @@ namespace eval ttk::theme::black {
 | 
				
			|||||||
    set styleCmd style
 | 
					    set styleCmd style
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  $styleCmd theme create black -parent clam -settings {
 | 
					    $styleCmd theme create black -parent clam -settings {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # -----------------------------------------------------------------
 | 
					        # -----------------------------------------------------------------
 | 
				
			||||||
    # Theme defaults
 | 
					        # Theme defaults
 | 
				
			||||||
    #
 | 
					        #
 | 
				
			||||||
    $styleCmd configure "." \
 | 
					        $styleCmd configure "." \
 | 
				
			||||||
        -background $colors(-frame) \
 | 
					            -background $colors(-frame) \
 | 
				
			||||||
        -foreground white \
 | 
					            -foreground white \
 | 
				
			||||||
        -bordercolor $colors(-darkest) \
 | 
					            -bordercolor $colors(-darkest) \
 | 
				
			||||||
        -darkcolor $colors(-dark) \
 | 
					            -darkcolor $colors(-dark) \
 | 
				
			||||||
        -lightcolor $colors(-lighter) \
 | 
					            -lightcolor $colors(-lighter) \
 | 
				
			||||||
        -troughcolor $colors(-darker) \
 | 
					            -troughcolor $colors(-darker) \
 | 
				
			||||||
        -selectbackground $colors(-selectbg) \
 | 
					            -selectbackground $colors(-selectbg) \
 | 
				
			||||||
        -selectforeground $colors(-selectfg) \
 | 
					            -selectforeground $colors(-selectfg) \
 | 
				
			||||||
        -selectborderwidth 0 \
 | 
					            -selectborderwidth 0 \
 | 
				
			||||||
        -font "{Droid Sans Mono} 9" \
 | 
					            -font "{Droid Sans Mono} 9" \
 | 
				
			||||||
        ;
 | 
					            ;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        $styleCmd map "." \
 | 
				
			||||||
 | 
					            -background [list disabled $colors(-frame) \
 | 
				
			||||||
 | 
					            active $colors(-lighter)] \
 | 
				
			||||||
 | 
					            -foreground [list disabled $colors(-disabledfg)] \
 | 
				
			||||||
 | 
					            -selectbackground [list  !focus $colors(-darkest)] \
 | 
				
			||||||
 | 
					            -selectforeground [list  !focus white] \
 | 
				
			||||||
 | 
					            ;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        # ttk widgets.
 | 
				
			||||||
 | 
					        $styleCmd configure TButton \
 | 
				
			||||||
 | 
					            -width -8 -padding {5 1} -relief link
 | 
				
			||||||
 | 
					        $styleCmd configure TMenubutton \
 | 
				
			||||||
 | 
					            -relief flat -arrowsize 0 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        $styleCmd configure TCheckbutton \
 | 
				
			||||||
 | 
					            -indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
 | 
				
			||||||
 | 
					        $styleCmd configure TRadiobutton \
 | 
				
			||||||
 | 
					            -indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        $styleCmd configure TEntry \
 | 
				
			||||||
 | 
					            -fieldbackground gray20 -foreground $colors(-font) \
 | 
				
			||||||
 | 
					            -padding {2 0} -border -1
 | 
				
			||||||
 | 
					        $styleCmd configure TCombobox \
 | 
				
			||||||
 | 
					            -fieldbackground white -foreground  $colors(-font)\
 | 
				
			||||||
 | 
					            -padding {2 0}
 | 
				
			||||||
 | 
					        $styleCmd configure TSpinbox \
 | 
				
			||||||
 | 
					            -fieldbackground white -foreground $colors(-font) \
 | 
				
			||||||
 | 
					            -padding {2 0}
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        $styleCmd configure TNotebook \
 | 
				
			||||||
 | 
					            -border -1
 | 
				
			||||||
 | 
					        $styleCmd configure TNotebook.Tab \
 | 
				
			||||||
 | 
					            -padding {6 2 6 2} \
 | 
				
			||||||
 | 
					            -border -1
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        $styleCmd map TNotebook.Tab -background [list \
 | 
				
			||||||
 | 
					            selected $colors(-lighter)]
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        # tk widgets.
 | 
				
			||||||
 | 
					        $styleCmd map Menu \
 | 
				
			||||||
 | 
					            -background [list active $colors(-dark)] \
 | 
				
			||||||
 | 
					            -foreground [list disabled $colors(-lightest)] \
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        $styleCmd configure TreeCtrl \
 | 
				
			||||||
 | 
					            -background gray30 -itembackground {gray60 gray50} \
 | 
				
			||||||
 | 
					            -itemfill white -itemaccentfill yellow -border -1
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        $styleCmd map Treeview\
 | 
				
			||||||
 | 
					            -background [list selected $colors(-lighter)] \
 | 
				
			||||||
 | 
					            -foreground [list selected $colors(-selectfg)]
 | 
				
			||||||
 | 
					            # -background [list selected $colors(-selectbg)] \
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        $styleCmd configure Treeview -fieldbackground gray25
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $styleCmd map "." \
 | 
					        $styleCmd map Canvas \
 | 
				
			||||||
        -background [list disabled $colors(-frame) \
 | 
					            -background [list selected $colors(-lighter)] \
 | 
				
			||||||
        active $colors(-lighter)] \
 | 
					            -foreground [list selected $colors(-selectfg)] \
 | 
				
			||||||
        -foreground [list disabled $colors(-disabledfg)] \
 | 
					            -highlightbackground [list selected $colors(-lighter)]
 | 
				
			||||||
        -selectbackground [list  !focus $colors(-darkest)] \
 | 
					    }
 | 
				
			||||||
        -selectforeground [list  !focus white] \
 | 
					 | 
				
			||||||
        ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # ttk widgets.
 | 
					 | 
				
			||||||
    $styleCmd configure TButton \
 | 
					 | 
				
			||||||
        -width -8 -padding {5 1} -relief link
 | 
					 | 
				
			||||||
    $styleCmd configure TMenubutton\
 | 
					 | 
				
			||||||
        -relief flat -arrowsize 0
 | 
					 | 
				
			||||||
    $styleCmd configure TCheckbutton \
 | 
					 | 
				
			||||||
        -indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
 | 
					 | 
				
			||||||
    $styleCmd configure TRadiobutton \
 | 
					 | 
				
			||||||
        -indicatorbackground $colors(-lighter) -indicatormargin {1 1 4 1}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $styleCmd configure TEntry \
 | 
					 | 
				
			||||||
        -fieldbackground gray20 -foreground black \
 | 
					 | 
				
			||||||
        -padding {2 0} -border -1
 | 
					 | 
				
			||||||
    $styleCmd configure TCombobox \
 | 
					 | 
				
			||||||
        -fieldbackground white -foreground black \
 | 
					 | 
				
			||||||
        -padding {2 0}
 | 
					 | 
				
			||||||
    $styleCmd configure TSpinbox \
 | 
					 | 
				
			||||||
        -fieldbackground white -foreground black \
 | 
					 | 
				
			||||||
        -padding {2 0}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $styleCmd configure TNotebook \
 | 
					 | 
				
			||||||
        -border -1
 | 
					 | 
				
			||||||
    $styleCmd configure TNotebook.Tab \
 | 
					 | 
				
			||||||
        -padding {6 2 6 2} \
 | 
					 | 
				
			||||||
        -border -1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $styleCmd map TNotebook.Tab -background [list \
 | 
					 | 
				
			||||||
        selected $colors(-lighter)]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # tk widgets.
 | 
					 | 
				
			||||||
    $styleCmd map Menu \
 | 
					 | 
				
			||||||
        -background [list active $colors(-lighter)] \
 | 
					 | 
				
			||||||
        -foreground [list disabled $colors(-disabledfg)]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $styleCmd configure TreeCtrl \
 | 
					 | 
				
			||||||
        -background gray30 -itembackground {gray60 gray50} \
 | 
					 | 
				
			||||||
        -itemfill white -itemaccentfill yellow -border -1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $styleCmd map Treeview\
 | 
					 | 
				
			||||||
        -background [list selected $colors(-lighter)] \
 | 
					 | 
				
			||||||
        -foreground [list selected $colors(-selectfg)]
 | 
					 | 
				
			||||||
        # -background [list selected $colors(-selectbg)] \
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $styleCmd configure Treeview -fieldbackground gray25
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  puts [ttk::style element names]
 | 
					  puts [ttk::style element names]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
#!/bin/sh  
 | 
					#!/bin/sh  
 | 
				
			||||||
#-*-tcl-*-  
 | 
					#-*-tcl-*-  
 | 
				
			||||||
# the next line restarts using wish \
 | 
					# the next line restarts using wish \
 | 
				
			||||||
exec wish "$0" -- ${1+"$@"}
 | 
					exec wish8.6 "$0" -- ${1+"$@"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set version 3.0
 | 
					set version 3.0
 | 
				
			||||||
@@ -1365,6 +1365,3 @@ proc make-regexp::make-regexp {words} {
 | 
				
			|||||||
        set regexp
 | 
					        set regexp
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#==============================================================================================
 | 
					#==============================================================================================
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user