UniversalView

Основная идея UniversalView - обеспечить простую, объектно-ориентированную, легко развиваемую спецификацию оконного пользовательского интерфейса (UI) прикладной программы и реализовать универсальную и иерархическую модель Document-View.

UniversalView

Основная идея UniversalView - обеспечить простую, объектно-ориентированную, легко развиваемую спецификацию оконного пользовательского интерфейса (UI) прикладной программы и реализовать универсальную и иерархическую модель Document-View.

Основная идея UniversalView - обеспечить простую, объектно-ориентированную, легко развиваемую спецификацию оконного пользовательского интерфейса (UI) прикладной программы и реализовать универсальную и иерархическую модель Document-View. Использование простых атомарных контролов UI, их атрибутов и гибкие механизмы автоматического и ручного расположения окон направлены на ликвидацию досадного порога возрастания сложности приложения и количества хаков в нем, при реализации оригинальных UI, характерного для движков, предоставляющих сложные встроенные конструкции UI с ограниченными механизмами расширения.

Отличительные особенности UniversalView
Объектная ориентированность, локальность и инкапсуляция UI

Для любого окна или управляющего элемента его

  • класс
  • атрибуты
  • обработчики сообщений
  • привязка к иерархии родительских окон
  • привязка к иерархии родительских окон
  • дочерние окна

задаются компактно только в одном месте в программе.

Таким образом, полное описание управляющего элемента (его внешнего вида и поведения) локально инкапсулировано в исходном тексте. Нет необходимости отдельно, в разных местах, с помощью разных средств создавать шаблоны форм, отдельно связывать их с объектами программы, где-то еще программировать обработчики сообщений, и еще отдельно реализовывать логику, связывающую окна в иерархии и View с Documentами.

Универсальная концепция Document-View

Любой объект данных в программе может интерпретироваться как "Document" с точки зрения UI и любое окно есть "View" для своего Document. Таким образом Document и View в прикладной программе образуют две четко взаимосвязанные иерархии с очевидным разделением функций.

Краткость и ясность

Синтаксис описания окон оптимизирован для предельной компактности, читабельности и простоты документирования и совместим с IntelliSense для С++.

Гибкость

UniversalView включает только минимальный набор управляющих элементов. Сложные конструкции (как списки, деревья, файловые диалоги и т.д.) естественным образом составляются из элементарных управляющих элементов что снимает искусственные структурные и функциональные ограничения накладываемые параметрическим способом задания управляющих элементов.

Code reuse

Повторное использование идентичного кода упрощается (a) за счет простоты создания управляющих элементов (панелей элементов) имеющих общие свойства но гибко параметризованных в разных контекстах и (b) за счет тривиальности копирования исходного текста определяющего UI т.к. все, что нужно компактно описано на языке высокого уровня и не привязано к редакторам ресурсов, wizard'ам и проч.

Прикладная ориентированность

UniversalView максимально скрывает от прикладной программы системные аспекты своего функционирования, как, например, сложные механизмы передачи сообщений и связывания родительских и дочерних окон.

Оконные классы в прикладной программе создаются только для удобства структурирования проекта и для наиболее ясного выражения прикладного назначения окон.

UniversalView не требует по любому поводу наследовать библиотечные классы для вмешательства в их внутреннее поведение, или программирования сложных взаимосвязей межу ними, засоряя и раздувая тем самым код прикладной программы рутинным, повторным и запутанным решением низкоуровневых системных проблем.

Встроенный Layout engine

UniversalView по умолчанию обеспечивает автоматическое расположение окон, и вычисление их оптимальных размеров. Иерархия вложенных панелей управляющих элементов позволяет создавать как простые последовательные формы и toolbar'ы так и описывать сложное содержимое главного окна прикладной программы или структуру элементов распечатки. Динамическая модификация

Структура и состав окон, их размеры, расположение, содержимое могут динамически обновляться по ходу работы программы в зависимости от изменения представляемых данных, от фазы алгоритма работы приложения, выполняемых настроек и проч.

Контекстная независимость

Описание окна интерпретируется UniversalView по разному в разных контекстах, например на экране, на принтере (в просмотре печати), в экспортированном в Word метафайле, в help'е, или при воспроизведении Demo и проч. окно будет автоматически адаптировано под заданный контекст.

Адаптируемость

При переключении языка UI, настройке параметров шрифта, размеров окон, разрешения, цветов и проч. универсально описанный управляющий элемент адаптируется автоматически без необходимости засорения прикладной программы низкоуровневым программированием или многократным повторным выполнением одной и той же работы (как составление диалоговых форм для разных языков).

Дружественный интерфейс

UniversalView не полагается на стандартный UI ОС и, самостоятельно реализуя всю свою оконную систему, дает возможность создания оригинальных интерфейсов, в том числе и нестандартной структуры, учитывающих любые причуды заказчика, прикладные особенности проекта, уровень квалификации пользователя и проч. факторы.

Скины

Объектно ориентированный механизм применения разных стилей оформления UI. См. Скины и их объектно-ориентированный аспект.

Приоритет на оригинальный дизайн при сохраненнии привычной юзабилити

Необходимость простоты создания эффектного, привлекательного "фирменного" визуального оформления коммерческих программ без низкоуровневого программирования и раздувания кода приложений хаками в стремлении вырваться из ограничений, навязываемых движками UI, была одной из основных причин разработки UniversalView.

UniversalView RTF subscripts and superscripts.png
UniversalView RTF subscripts and superscripts.png

Для этого реализована поддержка произвольно управляемого расположения элементарных контролов, продвинутого форматированного (RTF) текста на всех управляющих элементах, гибко настраиваемые: пиктограммы, цвета, поля, интервалы, размеры, фоновые картинки и текстуры и прочие визуальные эффекты.

Основная идея UniversalView - обеспечить простую, объектно-ориентированную, легко развиваемую спецификацию оконного пользовательского интерфейса (UI) прикладной программы и реализовать универсальную и иерархическую модель Document-View. Использование простых атомарных контролов UI, их атрибутов и гибкие механизмы автоматического и ручного расположения окон направлены на ликвидацию досадного порога возрастания сложности приложения и количества хаков в нем, при реализации оригинальных UI, характерного для движков, предоставляющих сложные встроенные конструкции UI с ограниченными механизмами расширения.

Отличительные особенности UniversalView
Объектная ориентированность, локальность и инкапсуляция UI

Для любого окна или управляющего элемента его

  • класс
  • атрибуты
  • обработчики сообщений
  • привязка к иерархии родительских окон
  • привязка к иерархии родительских окон
  • дочерние окна

задаются компактно только в одном месте в программе.

Таким образом, полное описание управляющего элемента (его внешнего вида и поведения) локально инкапсулировано в исходном тексте. Нет необходимости отдельно, в разных местах, с помощью разных средств создавать шаблоны форм, отдельно связывать их с объектами программы, где-то еще программировать обработчики сообщений, и еще отдельно реализовывать логику, связывающую окна в иерархии и View с Documentами.

Универсальная концепция Document-View

Любой объект данных в программе может интерпретироваться как "Document" с точки зрения UI и любое окно есть "View" для своего Document. Таким образом Document и View в прикладной программе образуют две четко взаимосвязанные иерархии с очевидным разделением функций.

Краткость и ясность

Синтаксис описания окон оптимизирован для предельной компактности, читабельности и простоты документирования и совместим с IntelliSense для С++.

Гибкость

UniversalView включает только минимальный набор управляющих элементов. Сложные конструкции (как списки, деревья, файловые диалоги и т.д.) естественным образом составляются из элементарных управляющих элементов что снимает искусственные структурные и функциональные ограничения накладываемые параметрическим способом задания управляющих элементов.

Code reuse

Повторное использование идентичного кода упрощается (a) за счет простоты создания управляющих элементов (панелей элементов) имеющих общие свойства но гибко параметризованных в разных контекстах и (b) за счет тривиальности копирования исходного текста определяющего UI т.к. все, что нужно компактно описано на языке высокого уровня и не привязано к редакторам ресурсов, wizard'ам и проч.

Прикладная ориентированность

UniversalView максимально скрывает от прикладной программы системные аспекты своего функционирования, как, например, сложные механизмы передачи сообщений и связывания родительских и дочерних окон.

Оконные классы в прикладной программе создаются только для удобства структурирования проекта и для наиболее ясного выражения прикладного назначения окон.

UniversalView не требует по любому поводу наследовать библиотечные классы для вмешательства в их внутреннее поведение, или программирования сложных взаимосвязей межу ними, засоряя и раздувая тем самым код прикладной программы рутинным, повторным и запутанным решением низкоуровневых системных проблем.

Встроенный Layout engine

UniversalView по умолчанию обеспечивает автоматическое расположение окон, и вычисление их оптимальных размеров. Иерархия вложенных панелей управляющих элементов позволяет создавать как простые последовательные формы и toolbar'ы так и описывать сложное содержимое главного окна прикладной программы или структуру элементов распечатки. Динамическая модификация

Структура и состав окон, их размеры, расположение, содержимое могут динамически обновляться по ходу работы программы в зависимости от изменения представляемых данных, от фазы алгоритма работы приложения, выполняемых настроек и проч.

Контекстная независимость

Описание окна интерпретируется UniversalView по разному в разных контекстах, например на экране, на принтере (в просмотре печати), в экспортированном в Word метафайле, в help'е, или при воспроизведении Demo и проч. окно будет автоматически адаптировано под заданный контекст.

Адаптируемость

При переключении языка UI, настройке параметров шрифта, размеров окон, разрешения, цветов и проч. универсально описанный управляющий элемент адаптируется автоматически без необходимости засорения прикладной программы низкоуровневым программированием или многократным повторным выполнением одной и той же работы (как составление диалоговых форм для разных языков).

Дружественный интерфейс

UniversalView не полагается на стандартный UI ОС и, самостоятельно реализуя всю свою оконную систему, дает возможность создания оригинальных интерфейсов, в том числе и нестандартной структуры, учитывающих любые причуды заказчика, прикладные особенности проекта, уровень квалификации пользователя и проч. факторы.

Скины

Объектно ориентированный механизм применения разных стилей оформления UI. См. Скины и их объектно-ориентированный аспект.

Приоритет на оригинальный дизайн при сохраненнии привычной юзабилити

Необходимость простоты создания эффектного, привлекательного "фирменного" визуального оформления коммерческих программ без низкоуровневого программирования и раздувания кода приложений хаками в стремлении вырваться из ограничений, навязываемых движками UI, была одной из основных причин разработки UniversalView.

UniversalView RTF subscripts and superscripts.png
UniversalView RTF subscripts and superscripts.png

Для этого реализована поддержка произвольно управляемого расположения элементарных контролов, продвинутого форматированного (RTF) текста на всех управляющих элементах, гибко настраиваемые: пиктограммы, цвета, поля, интервалы, размеры, фоновые картинки и текстуры и прочие визуальные эффекты.