Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

delphi-gui-generator

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Генератор UI форм на Delphi

Программа создает пользовательские интерфейсы на основе JSON-шаблонов и делает их скриншоты для использования в датасетах машинного обучения.

Описание работы

Программа выполняет следующие шаги:

  1. Загружает конфигурационные файлы:
    • atomic_widget_descr.json - описание атомарных элементов (кнопки, метки и т.д.)
    • comp_widget_descr.json - описание составных элементов
    • cont_widget_descr.json - описание контейнеров
  2. Загружает шаблон UI из файла tree2.json, который описывает структуру интерфейса. Имя шаблона может быть изменено в строке JSONObject := FileToJSONObject('tree2.json'); файла программы Project18.dpr
  3. Создает форму и размещает на ней элементы управления согласно шаблону
  4. Делает скриншот созданной формы и сохраняет его в PNG формате

Формат входных данных

Программа использует 4 типа JSON файлов:

  1. atomic_widget_descr.json - описывает базовые элементы:
    • name: имя элемента (Label, Button и т.д.)
    • prob: вероятность появления
    • style: стили оформления
  2. comp_widget_descr.json - описывает составные элементы:
    • name: имя композита
    • content: вложенные элементы с координатами размещения
    • group: группы взаимозаменяемых элементов
  3. cont_widget_descr.json - описывает контейнеры:
    • name: имя контейнера
    • children: допустимые дочерние элементы
    • direction: направление размещения элементов (вертикальное/горизонтальное)
  4. tree2.json - конкретный шаблон интерфейса:
    • root: корневой элемент
    • children: вложенные элементы

Запуск программы

  1. Убедитесь что в папке Win32\Debug находятся все необходимые JSON файлы
  2. Запустите Project18.exe
  3. Программа:
    • Создаст форму по шаблону
    • Отобразит её на экране
    • Сделает скриншот
    • Сохранит скриншот в PNG формате с именем вида img-YYYYMMDD-HHMMSS.png
    • Сохранит разметку формы в JSON формате с именем вида markup-YYYYMMDD-HHMMSS.json

Формат файла разметки

Файл разметки содержит информацию о всех элементах формы в формате 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
  • Для документирования шаблонов интерфейсов

Архитектура приложения

Программа состоит из следующих основных модулей:

  1. Основные модули:
    • Project18.dpr - главный исполняемый файл программы
    • Unit1.pas - основной модуль формы, отвечает за создание и отображение UI
    • Stuff.pas - вспомогательные функции и процедуры
  2. Модули виджетов:
    • BasicWidget.pas - базовый класс для всех виджетов
    • AtomicWidget.pas - атомарные элементы (кнопки, метки и т.д.)
    • CompositeWidget.pas - составные элементы
    • ContainerWidget.pas - контейнеры для размещения других виджетов
  3. Вспомогательные модули:
    • FilesStuff.pas - работа с файлами и JSON
    • TypesStuff.pas - пользовательские типы данных
    • Position.pas - позиционирование элементов

Сборка проекта

Для сборки проекта требуется:

  1. Установить Embarcadero Delphi (версия 10.3 или выше)
  2. Установить необходимые компоненты:
    • VCL
    • JSON Framework
  3. Открыть проект Project18.dproj в Delphi
  4. В меню выбрать Project -> Build Project18
  5. Скомпилированный файл будет создан в папке Win32\Debug

Требования

  • Операционная система Windows
  • Установленный Embarcadero Delphi
  • Наличие всех необходимых JSON файлов в папке Win32\Debug
  • Установленные компоненты VCL и JSON Framework