Skip Navigation Links
Проект "Real Time Systems DD"
Пакет (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 внесены следующие изменения:
  1. Функция initscr теперь игнорирует значение переменной окружения TERM. Как указывалось выше, в системе MINGW поддерживается только один тип терминала, но IDE “GPS” устанавливает значение переменной окружения TERM равным “dumb” (в комментариях поясняется, что это dummy-терминал) и это мешало отлаживать NCURSESW-приложения в оболочке “GPS”.
  2. Для реализации возможности изменения размера основного окна NCURSESW-приложения я снова возвратился к стратегии перехвата событий типа «WINDOW_BUFFER_SIZE_EVENT» на уровне драйвера MINGW-консоли. Если правильной перерисовки экрана при изменении размера окна NCURSESW-приложения не происходит на уровне драйвера MINGW-консоли (это может например случится, когда размер окна уменьшается, а размер выходного буфера экрана не изменяется (появляются вертикальные и (или) горизонтальные полосы прокрутки), то события типа «WINDOW_BUFFER_SIZE_EVENT» вообще не происходит и, соответственно, не происходит никакой перерисовки экрана), тогда можно вызвать функцию resizeterm непосредственно из приложения, и для этого предусмотреть в NCURSESW-приложении соответствующую команду (в файловом менеджере FAR для этого нужно один или два раза ввести комбинацию ALT-F9). В связи с новой стратегией, ранее введённая в библиотеку libncursesw, функция _nc_mingw_reset_window_position стала бесполезной и была удалена из библиотеки.
  3. В исходном пакете ncurses 6.0 для реализации функциональности полей форм типа «регулярное выражение» вызывались функции 8-разрядной (7-разрядной?) библиотеки libgnurx. В новой редакции пакета я заменил вызовы этих функций на вызовы соответствующих функций из 16-разрядной библиотеки libpcre2-16, но правильность функционирования полей данного типа я не проверял. Если кто-то способен и имеет желание провести тесты данной функциональности, пусть сделает это и пришлёт мне результаты теста и соответствующие рекомендации по исправлению ошибок. Заранее благодарен за проявленные интерес, внимание и понимание.
В библиотеке AdaCursesW удалена процедура, вызывающая функцию _nc_mingw_reset_window_position.
В пакете AdaNCursesW изменены исходники приложения tour.exe в соответствии с новой стратегией перерисовки экрана при изменении размера окна приложения, а в качестве команды принудительной перерисовки экрана определён ключ CTRL-S.
Это все изменения новой редакции проекта.

Инструкции по сборке и установке пакетов:
  1. Распаковать архив ADANCURSESN.zip на жёсткий диск (желательно в корневую директорию диска C:, тогда не придется менять конфигурационные файлы).
  2. Согласно списку команд в файле ADAPROJECTS\Unicode_Console\build.txt собрать и установить пакет Unicode_Console.
  3. Согласно списку команд в файле ADAPROJECTS\NCURSESW\build\build.txt, сначала собрать и установить пакет pcre2-10.31, затем собрать и установить пакет NCURSESW, и далее собрать и установить пакет AdaCursesW.
  4. Теперь можно открыть в GPS проект ADAPROJECTS\Minimal_Console\Minimal_Console.gpr и построить консольное приложение Minimal_Console.exe. Запустив его, можно протестировать консольный UNICODE ввод/вывод.
  5. Далее открываем в 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»

Таблица комментариев и пожеланий:
Добавте новый комментарий или пожелание:
Имя создателя комментария:   
Адрес электронной почты создателя комментария:   
Текст комментария:   
   
«RTSDD Web-Site» v 1.0.0000.0001 β Системы Реального Времени DD © 2019
Главный архитектор систем Сергей Дюков
Готово Статус исполнения