Catalog · How the catalog works
delphi-gui-generator
- ★ 1 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
Генератор UI форм на Delphi
Программа создает пользовательские интерфейсы на основе JSON-шаблонов и делает их скриншоты для использования в датасетах машинного обучения.
Описание работы
Программа выполняет следующие шаги:
- Загружает конфигурационные файлы:
atomic_widget_descr.json- описание атомарных элементов (кнопки, метки и т.д.)comp_widget_descr.json- описание составных элементовcont_widget_descr.json- описание контейнеров
- Загружает шаблон UI из файла
tree2.json, который описывает структуру интерфейса. Имя шаблона может быть изменено в строкеJSONObject := FileToJSONObject('tree2.json');файла программыProject18.dpr - Создает форму и размещает на ней элементы управления согласно шаблону
- Делает скриншот созданной формы и сохраняет его в PNG формате
Формат входных данных
Программа использует 4 типа JSON файлов:
- atomic_widget_descr.json - описывает базовые элементы:
- name: имя элемента (Label, Button и т.д.)
- prob: вероятность появления
- style: стили оформления
- comp_widget_descr.json - описывает составные элементы:
- name: имя композита
- content: вложенные элементы с координатами размещения
- group: группы взаимозаменяемых элементов
- cont_widget_descr.json - описывает контейнеры:
- name: имя контейнера
- children: допустимые дочерние элементы
- direction: направление размещения элементов (вертикальное/горизонтальное)
- tree2.json - конкретный шаблон интерфейса:
- root: корневой элемент
- children: вложенные элементы
Запуск программы
- Убедитесь что в папке
Win32\Debugнаходятся все необходимые JSON файлы - Запустите
Project18.exe - Программа:
- Создаст форму по шаблону
- Отобразит её на экране
- Сделает скриншот
- Сохранит скриншот в PNG формате с именем вида
img-YYYYMMDD-HHMMSS.png - Сохранит разметку формы в JSON формате с именем вида
markup-YYYYMMDD-HHMMSS.json
Формат файла разметки
Файл разметки содержит информацию о всех элементах формы в формате JSON. Пример структуры:
{
"Form1": {
"type": "TForm1",
"left": 0,
"top": 0,
"width": 800,
"height": 600,
"widget_type": "container",
"widget_name": "Window",
"Panel1": {
"type": "TPanel",
"left": 10,
"top": 10,
"width": 780,
"height": 580,
"widget_type": "container",
"widget_name": "LWindow",
"Label1": {
"type": "TLabel",
"left": 20,
"top": 20,
"width": 100,
"height": 20,
"widget_type": "atomic",
"widget_name": "Label"
}
}
}
}Пример использования
Созданные скриншоты могут использоваться:
- Для обучения нейронных сетей распознаванию элементов интерфейса
- В качестве тестовых данных для проверки алгоритмов анализа UI
- Для документирования шаблонов интерфейсов
Архитектура приложения
Программа состоит из следующих основных модулей:
- Основные модули:
Project18.dpr- главный исполняемый файл программыUnit1.pas- основной модуль формы, отвечает за создание и отображение UIStuff.pas- вспомогательные функции и процедуры
- Модули виджетов:
BasicWidget.pas- базовый класс для всех виджетовAtomicWidget.pas- атомарные элементы (кнопки, метки и т.д.)CompositeWidget.pas- составные элементыContainerWidget.pas- контейнеры для размещения других виджетов
- Вспомогательные модули:
FilesStuff.pas- работа с файлами и JSONTypesStuff.pas- пользовательские типы данныхPosition.pas- позиционирование элементов
Сборка проекта
Для сборки проекта требуется:
- Установить Embarcadero Delphi (версия 10.3 или выше)
- Установить необходимые компоненты:
- VCL
- JSON Framework
- Открыть проект
Project18.dprojв Delphi - В меню выбрать Project -> Build Project18
- Скомпилированный файл будет создан в папке
Win32\Debug
Требования
- Операционная система Windows
- Установленный Embarcadero Delphi
- Наличие всех необходимых JSON файлов в папке Win32\Debug
- Установленные компоненты VCL и JSON Framework

