GUI программирование с помощью CSS - PullRequest
1 голос
/ 13 апреля 2009

Я собираюсь написать простую систему разметки для игрового графического интерфейса. Я подумал о различных системах компоновки, используемых в GUI, таких как абсолютное позиционирование, менеджеры компоновки Java, пружины и распорки и тому подобное. В конце концов я обнаружил, что предпочитаю макет с точки зрения CSS - отступы, поля, плавающие элементы, блоки, встроенные элементы и т. Д. Вы когда-нибудь видели, чтобы графический интерфейс приложения выполнялся подобным образом? Не веб-приложение, а «настоящее» приложение, где система макетов CSS должна быть написана с нуля. Считаете ли вы возможным получить работающую и выразительную CSS-подобную систему верстки, пусть даже очень простую, с приличным количеством кода?


Обновление: Я не хочу создавать графический интерфейс из внешней таблицы стилей. Я был бы счастлив с интерфейсом времени выполнения, т.е. как то так:

Widget *container = [Container withWidth:100 height:100];
Widget *button1 = [Button withText:@"Foo"];
Widget *button2 = [Button withText:@"Bar"];
button1.floating = button2.floating = YES;
[container addObjects: button1, button2, nil];

Должен был сказать это раньше, извините.

Ответы [ 3 ]

3 голосов
/ 13 апреля 2009

Я не уверен, что это действительно лучший способ сделать это, но я не вижу никаких проблем, которые бы помешали вам сделать это. Для создания GUI из таблицы стилей вам понадобится какой-то CSS-анализатор, но я думаю, это выполнимо. Уже есть куча CSS-парсеров, которые вам, вероятно, придется просто немного оценить, чтобы соответствовать вашим конкретным потребностям в графическом интерфейсе.

1 голос
/ 13 апреля 2009

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

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

Я не смог найти много полезных ресурсов по этому поводу, кроме самой спецификации CSS, поскольку она уже содержит правила синтаксиса flex и bison.


Редактировать: в этом случае вы можете посмотреть, как WebKit и Mozilla реализовали свои механизмы компоновки в качестве ссылки.

0 голосов
/ 13 апреля 2009

Нет, я никогда не видел, чтобы приложение создавалось на основе схемы именования CSS.

Да, я думаю, что вполне возможно создать такую ​​систему, программисты могут программно перемещать кнопки и другие поля вокруг. Как правило, используя функции и параметры по умолчанию, которые существуют для виджетов, если бы вы использовали эти виджеты и просто производные от них, вы могли бы выполнить то, что вы хотели.

Я не уверен, почему вы хотели бы сделать это, но ответ - да, это возможно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...