Добрый день!
Идея сменных панелек - реализаций UI разными способами - мне понравилать. Не уверен, что делать это на лету будет так уж легко и просто и удасться во всех случаях жизни, однако рассматриваемый подход даёт все необходимые предпосылки.
Одна из полезных идей - разделение реализации UI от реализации программы.
Изначально предполагалось создать некоторый язык, позволяющий формально описать грань между этими двумя элементами программы.
С точки зрения программы язык должен описывать:
- компоненты UI, их свойства (но не структуру виджетов, состав подпрограмм обратного вызова и т.п.) и операции над ними (в самом общем виде, ни в коем разе не "переместить окно на пять пикселей вправо)
- фабрики для создания компонент.
С точки зрения UI язык должен описывать:
- импортируемые из программы типы данных, их операции (доступные для использования в реализации UI);
- импортируемые из программы подпрограммы, вызов которых допускается из реализации (можно сказать, что это своеобразные callback-и).
По этому описанию и должны строиться базовые спецификации Ada модулей.
Поскольку создание такого языка и его компилятора достаточно сложная задача, то мы пошли по пути её некоторого упрощения - использования в качестве спецификации UI настраиваемого Ada пакета. Он может содержать тип данных для компонента (в моём предложении это просто умный указатель), подпрограммы над этип типом (это будут доступные приложению операции и свойства). Типы данных и подпрограммы (доступные для использования из реализации UI) передаются как параметры generic.
Обрабатывать такую спецификацию можно с помощью ASIS программы, по результатам генерировать необходимую реализацию.
-- Vadim Godunko
Technoserv A/S
Rostov-on-Don, Russia
Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти