Category: литература

Идеальная GUI-библиотека

Нижеследующее -- тезисно, краткий результат многолетних метаний на тему "дайте мне интерфейсную библиотеку, с которой было бы просто и прикольно!". Замечу, что идеала (пока?) так и не нашлось, но имеющееся у меня решение Good Enough. Вроде бы.

В моем видении, интерфейс описывается как набор вложенных областей -- и ими все и заканчивается (никакого выделенного понятия "это контрол, а это просто контейнер" -- нет). У области есть размеры (в т.ч. отступы внутренние и внешние), есть стиль (цвет и толщина границ, фон, шрифты и проч и проч), есть логика раскладывания внутренних областей (по вертикали, по горизонтали, "в строчку с переносами" и т.п.). 

Далее: у любой области может быть поведение -- реакция на события пользовательского ввода и вторичные события, сгенерированные поведением внутренних областей (пример первого: "внутри меня ткнули мышкой", пример второго "внутри меня нажали на кнопку").

К этому -- богатые графические возможности ("сделать этот элемент чуть темнее при наведении мыши" или "плавно увеличить этот элемент", "градиентики", рисование и т.п.) -- см. мои рассуждения об использовании современной графики для эффективного представления информации (там в конце крик души на эту тему).

Вообще-то говоря, концептуально -- это всё :) Для того, чтобы писать интерфейс с помощью такой библиотеки было удобно (мне), нужна максимальная немногословность и декларативность. В том числе: декларативное описание расположений и стилей элементов, декларативное же задание разных стилей для разных состояний, декларативное связывание событий с обработчиками и т.п.


Collapse )
Выводы из проделанной работы

* концепция проработана, и она рулит
* Ruby рулит; хотелось бы верить что YARV или Rubinius что-то таки сделают с его скоростью
* HTMLayout во многом рулит, но в некоторых (важных) местах является over- или under- kill'ом. Я не вполне уверене, что сохраню ему верность на длительной перспективе.

Сборка-разборка на время: WikidPad

Потенциально постоянная рубрика о "любимых программах", точнее, рефлексии на тему "правильно" и "неправильно" сделанных фич.

Итак, WikidPad -- комбинация персональной вики и аутлайнера-записной книжки. Как человек глубоко текстоцентричный, без записной книжки обойтись не могу. Почему же именно это? (Еще раз: цель этого текста -- не доказательство того, что "моя любимая программа -- самая лучшая", а исключительно анализ.)

Collapse )

Такой способ визуализации "wiki-контекста" делает его естественной частью самой вики, позволяя использовать для этих ссылок "в разные стороны" те же навыки, что и для прочей навигации по вики, выгодно отличаясь здесь от инструментов вроде Pathaway скриншот, которые так и остаются "интересным дополнительным инструментом анализа". (Чтоб два раза не вставать, todo: написать про использование Википедии с "моментальными аналитическими инструментами")

Все, умаялся. Ну, должно быть уже понятно и так