Пакет (Binding) Ada2012 Unicode NCURSES под Windows.
Этот проект является UNICODE реализацией библиотеки привязки ADA2012 к пакету NCURSES 6.0
(WIDEC-вариант) под Windows (MINGW). За основу проекта взят пакет Ada95 Ncurses из
дистрибутива NCURSES 6.0. Исходные тексты и инструкции по построению и установке пакетов в архиве
ADANCURSESN.zip.
Это новая редакция проекта (старая находится здесь).
Главным отличием от старой редакции является то, что WIDEC-вариант пакета ncurses 6.0 преобразован
из проекта autoconf/automake в агрегатный проект ncursesw.gpr. Это устранило конфликты с
установкой ASCII-варианта пакета ncurses 6.0, а, самое главное, это дало возможность для модификации
самого пакета ncursesw и для разработок ADA или C NCURSES-приложений использовать
возможности мощного IDE “GPS” корпорации AdaCore. Как и в старой редакции в новой редакции
я не реализовывал поддержку C++ кодов. Побочным эффектом того, что пакет ncursesw сформирован из
сконфигурированного WIDEC-варианта пакета ncurses 6.0 является то, что в заголовочном файле
include\ncurses_cfg.h определены макросы для пути к базе данных TERMINFO для моей системы
(C:/MinGW64/6.3.1/mingw/share/terminfo) и перед построением пакета нужно заменить эти пути на актуальные
для вашей системы. Хотя это не должно быть важным, потому что функции пакета ncursesw не должны
обращаться к этой базе данных (в системе MINGW, в отличии от системы CYGWIN, поддерживается
только один тип терминала, а именно «консоль-MINGW»).
В набор пакетов
ncursesw внесены следующие изменения:
-
Функция initscr теперь игнорирует значение переменной окружения TERM. Как указывалось
выше, в системе MINGW поддерживается только один тип терминала, но IDE “GPS” устанавливает
значение переменной окружения TERM равным “dumb” (в комментариях поясняется,
что это dummy-терминал) и это мешало отлаживать NCURSESW-приложения в оболочке “GPS”.
-
Для реализации возможности изменения размера основного окна NCURSESW-приложения я снова возвратился
к стратегии перехвата событий типа «WINDOW_BUFFER_SIZE_EVENT» на уровне драйвера MINGW-консоли.
Если правильной перерисовки экрана при изменении размера окна NCURSESW-приложения не происходит на
уровне драйвера MINGW-консоли (это может например случится, когда размер окна уменьшается, а размер
выходного буфера экрана не изменяется (появляются вертикальные и (или) горизонтальные полосы
прокрутки), то события типа «WINDOW_BUFFER_SIZE_EVENT» вообще не происходит и, соответственно,
не происходит никакой перерисовки экрана), тогда можно вызвать функцию resizeterm
непосредственно из приложения, и для этого предусмотреть в NCURSESW-приложении соответствующую
команду (в файловом менеджере FAR для этого нужно один или два раза ввести комбинацию
ALT-F9). В связи с новой стратегией, ранее введённая в библиотеку libncursesw, функция
_nc_mingw_reset_window_position стала бесполезной и была удалена из библиотеки.
-
В исходном пакете ncurses 6.0 для реализации функциональности полей форм типа
«регулярное выражение» вызывались функции 8-разрядной (7-разрядной?) библиотеки libgnurx.
В новой редакции пакета я заменил вызовы этих функций на вызовы соответствующих функций из 16-разрядной
библиотеки libpcre2-16, но правильность функционирования полей данного типа я не проверял.
Если кто-то способен и имеет желание провести тесты данной функциональности, пусть сделает это и
пришлёт мне результаты теста и соответствующие рекомендации по исправлению ошибок. Заранее благодарен
за проявленные интерес, внимание и понимание.
В библиотеке AdaCursesW удалена процедура, вызывающая функцию
_nc_mingw_reset_window_position.
В пакете AdaNCursesW изменены исходники приложения tour.exe в соответствии с новой
стратегией перерисовки экрана при изменении размера окна приложения, а в качестве команды
принудительной перерисовки экрана определён ключ CTRL-S.
Это все изменения новой редакции проекта.
Инструкции по сборке и установке пакетов:
-
Распаковать архив ADANCURSESN.zip на жёсткий диск
(желательно в корневую директорию диска C:, тогда не придется менять конфигурационные файлы).
-
Согласно списку команд в файле ADAPROJECTS\Unicode_Console\build.txt собрать и
установить пакет Unicode_Console.
-
Согласно списку команд в файле ADAPROJECTS\NCURSESW\build\build.txt, сначала собрать и
установить пакет pcre2-10.31, затем собрать и установить пакет NCURSESW, и далее
собрать и установить пакет AdaCursesW.
-
Теперь можно открыть в GPS проект ADAPROJECTS\Minimal_Console\Minimal_Console.gpr
и построить консольное приложение Minimal_Console.exe. Запустив его, можно протестировать
консольный UNICODE ввод/вывод.
-
Далее открываем в GPS проект ADAPROJECTS\AdaNCursesW\adancursesw.gpr и строим
набор примеров NCURSESW-приложений, запускаем их, чтобы проверить их функционирование, исследуем
исходные коды этих приложений, чтобы научиться строить свои собственные NCURSESW-приложения на
языке Ada. Инсталлятор пакета AdaCursesW помещает в директорию
share/doc/AdaCursesW/html полную документацию по NCURSES. Но я эту документацию
не редактировал, так что не всё в ней соответствует действительности.
Ну вот пока и всё. Наслаждайтесь жизнью в мире GNAT Ada!
Уважаемые посетители страницы! Оставляйте, по возможности, свои отзывы!
Сергей Дюков.
Таблица загрузок проекта:
| Ссылка |
Описание |
|
ADANCURSESN.zip
|
Упакованная папка проекта «Ada2012_Unicode_NCURSES»
|
|
ADANCURSESN
|
Папка проекта «Ada2012_Unicode_NCURSES»
|