Недавно команда авторов этого блога решила обуздать одну из мощных библиотек для построения графического интерфейса (жаль, что она только под Windows) — D Form Library 2 (или если сокращенно, DFL2), с которой у нас изначально никак не клеилось…
С одной стороны, мы уже начали работать с DGui, так зачем нам совершенно другая графическая библиотека со своими законами и своим кодом?
Как ни странно, но все наши мучения с DFL2 уже окупились потому что, несмотря на то, что DFL2 довольно тяжело установить (с учетом того, что это еще весьма сырой продукт) есть огромный плюс — DFL2 является реинкарнацией довольно старой библиотеки DFL, под которую существует весьма неплохой дизайнер форм, служащий по совместительству компактной IDE под D. Также, DFL2 гораздо более мощная библиотека по сравнению с DGui, и в ней отсутствуют присущие DGui глюки с событиями на некоторых компонентах: более того, стоит отметить, что переход с DGui на DFL2 потребует минимум усилий, в связи с тем, что многие вещи в обоих библиотеках выглядят одинаково.
Для начала, необходимо скачать DFL2 отсюда и разместить папку с библиотекой в удобном для вас месте. Следующим штрихом, необходимо в папке DFL2 найти файл socket.d (располагается он здесь: <папка с DFL2>/source/dfl/) и убрать в этом файле следующие ключевые слова у всех имеющихся там функций и конструкторов класса (перечисляю каждую конструкцию для удаления с новой строки):
@nogc
nothrow
@safe
@trusted
pure
После чего, переходим в папку с DFL2 и запускаем скрипт dubbuild.bat (предполагается, что dub уже установлен, если же нет — нужно его установить, взяв его отсюда) — и все. После завершения компиляции необходимо перейти в папку <папка с DFL2>/debug/ и скопировать файл dfl_debug.lib в папку библиотек DMD (находится эта папка примерно тут: C:\D\dmd2\windows\lib\).
На этом установка DFL2 не заканчивается… Папку dfl, находящуюся здесь: <папка с DFL2>/source/dfl/ нужно скопировать в папку C:\D\dmd2\windows\import (если папка import по этому пути не существует, необходимо ее создать и скопировать папку dfl в нее).
Таким образом, когда все необходимые приготовления закончены, мы получили уже функционирующую библиотеку, однако, компилятор dmd еще не готов к работе с DFL2 и ему нужно явно указать, откуда будут импортированы файлы библиотеки для вашего проекта. Для того, чтобы дать компилятору явное указание, требуется открыть файл C:\D\dmd2\windows\bin\sc.ini и добавить в строку DFLAGS следующее:
«-I%@P%\..\import\»
На этом установка DFL2 закончена.
Для небольшого тестирования библиотеки возьмем какой-нибудь пример из коллекции примеров под DFL2, которую можно скачать тут и попробуем его скомпилировать. Команда компиляции выглядит следующим образом:
dmd -de -w -property -release -O -m32 -IC:\D\dmd2\windows\import dfl_debug.lib ole32.lib oleAut32.lib gdi32.lib Comctl32.lib Comdlg32.lib advapi32.lib uuid.lib ws2_32.lib -L/SUBSYSTEM:WINDOWS <имя_файла.d>
Естественно, перед компиляцией, в командной строке необходимо перейти в папку с лежащим в ней файлом исходного кода. Согласен, что команда компиляции выглядит достаточно жестоко, но посмотрите результат сборки одной из утилит для облегчения этой самой сборки:
Не дурно выглядит, а ?
В одной из следующих статей блога я покажу, как работать с графическим дизайнером под DFL2 и заодно немного расскажу о такой вещи, как редактирование ресурсов.