Нахожусь в процессе доводки новой версии HTMLayout.
Кратко о новой версии: основная фича — набор встроенных input behaviors —
Проще всего объяснить на примере, вот как описана кнопка в т.н. master style sheet:
/* text button */
input[type="button"]
{
padding:0.5em 1em;
white-space; no-wrap;
display: inline-block;
behavior:input-button;
background-repeat:stretch;
background-image:url(theme:button-normal); }
input[type="button"]:hover
{
background-image:url(theme:button-hover);
}
input[type="button"]:hover:active
{
background-image:url(theme:button-pressed);
}
input[type="button"][disabled]
{
background-image:url(theme:button-disabled);
}
Принципиальные вещи
выделены.
behavior:input-button — описывает поведение. этот (как и любой другой) behavior может быть назначен любому элементу. В данном случае назаначение behavior — послать нотификацию button_click хосту.
background-image:url(
theme:button-normal); — этот чудный url означает что рендеринг делегируется операционной системе — на WinXP это например uxtheme.dll. Полный список включает практически полный набор из tmschema.h
Т.к. все элементы контроля и их содержимое есть элементы DOM то становится возможным стилировать их по всякому вплоть до конкретного суб элемента контрола.
Например вот как выглядит <select> (list box) теперь:
Концепт декларативного описания стиля состояний оказался очень сильным и гибким.
API позволяет писать свои собcтвенные behaviors в коде host applications — в том числе и рисовать.
HTMLayout как UI платформа предлагает использовать унифицированный HELEMENT вместо HWND, HLVITEM и иже с ними.
Так как такой UI это HTML то в любом месте работает контекстная команда copy — т.е. можно например скопировать tree view item в клипбоард и "выгрузить" его в MS Word.
Вот такие вот идеи. А?
16.12.06 17:08: Перенесено модератором из 'Пользовательский интерфейс: проектирование, usability' — Odi$$ey