Друзья, осень для нашей команды - время, когда мы готовимся к очередному релизу библиотеки контролов EMX Controls для Avalonia UI. Наша команда развивает этот продукт уже почти 5 лет, предоставляя вам многофункциональные визуальные компоненты для разработки графических интерфейсов под Windows, macOS, российские и зарубежные Linux, а также WebAssembly.

В новом релизе мы добавили одну из самых востребованных функций в контролах Data Grid и Tree List, расширили визуальные темы, включили сервисы для работы с окнами и диалогами и многое другое.

На днях мы выпустим версию 1.5. Ну а пока обновление библиотеки доступно в версии preview. Приглашаем вас всех протестировать библиотеку контролов. Самый простой способ - это скачать и запустить Демо-приложение.

Наши предыдущие статьи:

ИТОГИ (Summary) в контролах Data Grid и Tree List

Контролы Data Grid и Tree List позволяют отображать и редактировать табличные данные (плоские и иерархические многоколоночные списки). Но с помощью них пользователь может выполнять и простой визуальный анализ данных (в частности, за счет функций сортировки, группировки и фильтрации). Начиная с версии 1.5, к этим инструментам анализа добавилась возможность вычисления Итогов (Summary). Теперь можно просто вычислить Итоги по любой колонке. Причем можно показать несколько итогов одновременно для любой конкретной колонки.

article-v15-total-summaries
  • Типы Итогов "из коробки": Сумма, Мин, Макс, Среднее и Количество

  • Ваш собственный алгоритм для вычисления Итогов — Событие CustomSummary позволяет задать свою функцию.

  • Несколько Итогов в одной колонке — Для каждой колонки можно вычислить любое число Итогов.

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

Отдельно следует упомянуть возможности для пользователя управлять Итогами в рантайме.

  • Пользователи могут добавлять Итоги через кнопку Σ, которая открывает выпадающий список:

article-v15-total-summaries-sigma
  • Для дополнительного управления итогами (изменение порядка и отображение в другой колонке) мы реализовали простой редактор:

article-v15-total-summaries-summary-dialog

В текущей preview версии доступно вычисление Итогов по всем записям. Но буквально в ближайшее время мы добавим и вычисление Итогов по группам строк (в режиме группировки) в контроле Data Grid.

article-v15-group-summaries

Палитры для визуальной темы

Как и большинство тем в Авалонии, визуальная тема для EMX Controls, поддерживает светлый и темный варианты. В новой версии библиотеки мы расширили нашу визуальную тему, добавив к базовой палитре еще 9. Все 10 палитр поддерживают светлый и темный варианты, в результате пользователь имеет возможность выбрать одну из 20 схем.

article-v15-color-palettes2

При переключении палитры обновляются цвета элементов интерфейса:

  • Фон окон, панелей и контейнеров.

  • Фон редакторов в разных состояниях.

  • Фон строк и ячеек в табличных контролах.

  • Цвета выделения, подсветки элементов под курсором и акцентов у фокусированных объектов.

  • И многое другое.

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

article-v15-color-palette-selector

Плотность пользовательского интерфейса

Часто возникают сценарии, когда в окне приложения надо разместить как можно больше информации за счет уменьшения отступов и изменения размера шрифта визуальных элементов. В версии 1.5 мы добавили настройку плотности UI для темы оформления DeltaDesign. Теперь разработчики могут выбирать один из трех предустановленных режимов: Compact, Standard и Spacious.

article-v15-density2

Сервисы приложения

В новой версии EMX Controls появились Application Services для MVVM-приложений. Это набор сервисов, которые позволяют работать с окнами, диалогами и настройками тем оформления прямо из ViewModel, не обращаясь к типам Avalonia напрямую.

Что такое сервис

Сервис - это объект с определенным интерфейсом, через который ViewModel обращается к сервису, чтобы выполнить некое действие: показать диалог, открыть окно, спросить подтверждение, и т.д. При этом ViewModel не имеет ссылок на типы окон, диалогов и другие специфичные объекты. Сервис выполняет всю эту работу при обращении к нему через интерфейс.

article-v15-appservices-dialogs

Сервисы для взаимодействия с пользователем:

  • IMessageBoxService — Показывает стандартные окна сообщений с фиксированным набором кнопок (Ok, Yes/No, Yes/No/Cancel и т. д.);

  • IDialogService — Показывает модальные диалоги, содержимое и кнопки которых задаются во ViewModel;

  • IChoiceDialogService — Показывает диалог с произвольным набором кнопок и возвращает результат нажатой кнопки;

  • IWindowService — Открывает немодальные окна, заданные с помощью дополнительных ViewModel.

Сервисы для работы с файлами:

  • IOpenFileDialogService — Показывает (синхронно или асинхронно) системный диалог открытия файла;

  • ISaveFileDialogService — Показывает (синхронно или асинхронно) системный диалог сохранения файла.

Инфраструктурные сервисы:

  • IWindowsManager — Отслеживает активное окно приложения. Другие сервисы автоматически обращаются к IWindowsManager, чтобы определить владельца для показываемых сообщений, диалогов и окон;

  • IAppearanceService — Управляет настройками текущей визуальной темы: переключение цветовой палитры, выбор между светлым и темным вариантом, а также выставление плотности интерфейса.

Графики

В контролы для визуализации графиков (CartesianChart - декартовы координаты, PolarChart - полярные координаты и SmithChart - диаграмма Смита) мы добавили опции для тонкой настройки линий. Теперь можно легко задать толщину линии, шаблон (например, штрихи), форму концов линии и др.

article-v15-chart-linestyle

Docking UI

Компонент DockManager получил новое событие CustomizeDockGuide, которое позволяет управлять dock-подсказками во время перетаскивания панелей. С его помощью можно динамически скрывать отдельные dock-подсказки и таким образом запрещать определенные операции стыковки панелей.

article-v15-dockguides

Другие улучшения

  • Data Grid и Tree List — В окне выбора колонок (Column Chooser) появилась команда (Select All), которая позволяет выбрать или снять выделение со всех колонок сразу:

article-v15-cholumnchooesr-selectall
  • Data Grid и Tree List — Теперь можно подписаться на событие DragOver, чтобы добавить возможность перетаскивания строк на пустую область (ниже всех строк). При перетаскивании в эту область строки будут добавлены в конец списка.

  • SpinEditor — Новое свойство AllowRoundOutOfRangeValue автоматически округляет введенное значение до ближайшего допустимого, если оно выходит за пределы диапазона.

  • Graphics3DControl — Аппаратный рендеринг через Apple Metal на macOS

    В новой версии Graphics3DControl перешел на аппаратный рендеринг, используя Apple Metal API. Раньше применялся программный рендер, теперь же отрисовка выполняется силами GPU.

Новые шаблоны проектов для dotnet new

У нас появилось несколько новых шаблонов, в том числе шаблон приложения с сервисами (Application Services). Для удобства мы сократили короткие имена шаблонов. Теперь они начинаются с emx.

article-v15-new-templates
  • Eremex Avalonia .NET App (emx.app) — Базовое Avalonia-приложение с подключенной библиотекой EMX Controls.

  • Eremex Avalonia .NET MVVM App (emx.mvvm) — Базовое MVVM-приложение, в котором UI и бизнес-логика разделены на слои View и ViewModel.

  • Eremex Avalonia .NET App with Application Services (emx.services) — MVVM-приложение, в котором ViewModel использует сервисы для показа диалогов, выбора файлов и управления темой оформления.

  • Eremex Avalonia .NET MDI App (emx.mdi) — Приложение с многооконным интерфейсом (MDI), построенным на основе библиотеки Docking UI (компонент DockManager).

  • Eremex Avalonia Window (emx.window) — Пустое окно MxWindow (окно с поддержкой визуальных тем Eremex).

Чтобы установить шаблоны из preview-версии, выполните команду:

dotnet new install Eremex.Avalonia.Templates@1.5.53-preview3

После этого новый проект создаётся одной командой, например:

dotnet new emx.services -n MyApp

Автоматизированное тестирование

Также мы серьёзно переработали автоматизированное тестирование EMX Controls. Сейчас количество тестов у нас превышает количество тестов в самой Avalonia UI. Мы перешли на MTP (Microsoft Testing Platform), благодаря чему добавили в CI ещё две платформы — macOS и WASM. Таким образом, каждый коммит теперь проверяется на Windows 10, Windows 11, Linux, macOS и WASM.

article-v15-ci-pipeline
Пайплайн CI для одного merge request: 9 джобов, 43 909 тестов, около 21 минуты.

Документация для людей и для LLM

MCP-сервер

Всё больше разработчиков пишут код вместе с AI-ассистентами. Чтобы ассистент знал наши контролы, мы развернули собственный MCP-сервер. Помимо документации, примеров и API Reference, он содержит информацию из публичных тикетов нашего центра поддержки. Подключите его к своему ассистенту, и он будет отвечать на вопросы по EMX Controls с опорой на актуальные данные.

Кроме MCP, мы постарались сделать сайт eremexcontrols.net удобным не только для людей, но и для больших языковых моделей: добавили специальные индексы и сделали так, чтобы у всех статей были md-версии.

API Reference

У нас появился API Reference в документации.

article-v15-api-reference

Документация в открытом репозитории

По просьбам пользователей мы выложили документацию в публичный репозиторий: github.com/Eremex/controls-doc. Её можно развернуть у себя, в том числе в закрытом контуре без доступа в интернет.

Демо-приложение

Напоминаем, что у нас есть демо-приложение, которое предоставляет один из лучших способов познакомиться с библиотекой EMX Controls. Новые и обновленные примеры помечены специальными значками:

article-v15-demo-app

Мы подготовили отдельную сборку демо-приложения под macOS, которую вы можете скачать из https://github.com/Eremex/controls-demo/releases и запустить.

article-v15-3d-metal-macos
Демо-приложение на MacBook Air: пример Graphics3D Control работает сразу после запуска, без дополнительных настроек.

Как создать новый проект

Если вы еще не работали с EMX Controls, создать новый проект можно легко из шаблона. Пакеты на nuget.org — это полностью рабочие подписанные сборки. Используйте следующий код, чтобы создать проект из шаблона с использованием этих сборок:

dotnet new install Eremex.Avalonia.Templates@1.5.53-preview3
dotnet new emx.mvvm -n MyApp

Триал

Триальный период (60 дней) дает вам возможность детально ознакомиться с библиотекой EMX Controls. До покупки лицензии все контролы и возможности библиотеки работают в полном объёме — единственное отличие от лицензированной версии состоит в небольшой триальной плашке, которая отображается в правом нижнем углу приложения. Никаких других ограничений нет.

Открытый код

Сборки EMX Controls подписаны и намеренно не обфусцированы, поэтому детали реализации в любой момент можно изучить в ILSpy. Пакеты с nuget.org без проблем переносятся в закрытый контур и там работают в полном объёме — лицензия разработчика активируется офлайн. А если проекту требуются исходники, например для сертификации во ФСТЭК, мы готовы их предоставить.

Бесплатные лицензии для open-source проектов

Хотим напомнить, что, если вы разрабатываете проект с открытым исходным кодом, то можно получить бесплатную некоммерческую лицензию на EMX Controls. Оформите заявку через сервис лицензирования open-source проектов. Условия простые:

  • Проект размещён на GitHub и содержит README со ссылкой на eremexcontrols.net

  • Проект использует EMX Controls и распространяется под одной из лицензий MIT, Apache 2.0, BSD 2-Clause, BSD 3-Clause, ISC или MSPL.

Лицензия привязывается к имени проекта и мажорной версии библиотеки (при их смене нужно получить новую). Поддержка для бесплатных лицензий может быть ограничена. Подробности — в разделе «Licensing».

Полезные ссылки

Заключение

Приглашаем всех протестировать новую версию 1.5 библиотеки EMX Controls, которая уже доступна на сайте nuget.org. Мы, как всегда, ждём ваших отзывов и предложений. Обратная связь помогает нам выбирать приоритеты и развивать наш продукт. Оставайтесь с нами.

Комментарии (0)