metaclass (metaclass) wrote,
metaclass
metaclass

Автоматический layout гуя типичной опердени

Как известно, в оперденях большое количество кода реализует один типичный класс операций - ввод первичных данных.
Безотносительно к тому, что оно все херово обобщаемое даже на уровне работы с сугубо данными (нетривиальные зависимости, которые без sum types плохо моделировать, валидация из разряда "юзеры, умершие 15 нисана получают дополнительную жизнь, если в поле father написано God" и прочее такое) есть еще одна проблема, решения которой, отличного от "специально назначенные женщины-программисты рисуют гуй руками" я не видел.

А именно - layout интерфейса. Обычно оные окна ввода выглядят как 10-20-50 контролов вида "имя поля, данные поля, дополнительные данные вычисляемые из поля (подпись из справочника), кнопочька для вызова справочника или календаря". И если это чюдо не выровнять аккуратно - интерфейс начинает выглядеть как говно. При этом, если интерфейс используется для разных языков - то оно должно быть выравнено еще и для разных длин строк. А еще, желательно, чтобы окно можно было ресайзить и чтобы поля интерфейса ресайзились соответственно, да еще и с учетом допустимых значений (например, целочисленное поле нету смысла ресайзить больше чем 11 символов*ширину символа+хрен пойми какой отступ, зависящий от темы, версии ос, DPI и хрен знает чего, аналогично для дат и прочего).
В итоге, получается, что даже в простейшем случае "вертикально расположены 10 полей ввода" - нужно выровнять их подписи согласно их реальному размеру, учесть идиотизм с отступами, ClientSize, Margin, Padding и прочей чернью, затем выровнять сами поля ввода, выровнять зависимые поля, выровнять кнопочьки справочников и прочую чернягу, сделать минимальный размер окна таким, чтобы это все влазило и было читабельным, проверить на разных dpi, языках, темах UI и версиях виндов, включая модифицированные zvercd-cool-fucked-up-ui-edition и все это очень сильно огорчает.
Простейшие случаи я как-то автоматизировал, но радости все равно не возникает, малейшее дополнение в требованиях, типа "вместо одной кнопки справочника - две для разных действий" и вся генерация гуя ломается. А писать/рисовать гуй вручную, особенно в проклятых дизайнерах - это унижение для разумных существ.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 34 comments