HTMLayout, версия "Pandorra".
От: c-smile Канада http://terrainformatica.com
Дата: 13.10.05 18:40
Оценка: 115 (6)
Нахожусь в процессе доводки новой версии 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
Re: HTMLayout, версия "Pandorra".
От: Mamut Швеция http://dmitriid.com
Дата: 14.10.05 06:35
Оценка:
CS>Вот такие вот идеи. А?

Что можно сказать. Вах!

Уже можно использовать в production environment?


dmitriid.comGitHubLinkedIn
Re: HTMLayout, версия "Pandorra".
От: IPv6 Россия http://www.lumarnia.com/
Дата: 14.10.05 06:47
Оценка:
Здравствуйте, c-smile, Вы писали:


CS>Нахожусь в процессе доводки новой версии HTMLayout.

CS>Кратко о новой версии: основная фича — набор встроенных input behaviors —
а как узнать когда она перейдет в релиз? версия новая эта
Re[2]: HTMLayout, версия "Pandorra".
От: c-smile Канада http://terrainformatica.com
Дата: 14.10.05 16:06
Оценка:
Здравствуйте, IPv6, Вы писали:

IP>Здравствуйте, c-smile, Вы писали:



CS>>Нахожусь в процессе доводки новой версии HTMLayout.

CS>>Кратко о новой версии: основная фича — набор встроенных input behaviors —
IP>а как узнать когда она перейдет в релиз? версия новая эта

Там у меня RSS линк есть. Он в том числе сообщает обо все новых
билдах и версиях на сайте. Реально я хочу в черне закончить эту версию
к поненедельнику. Но это будет еще бета.


Мучаюсь вопросом:
В принципе несложно нарисовать нечто типа grid/list view
— scrollable table with headers. Но надо ли?

Честно говоря с точки зрения usability мне grid не нравится.
Гораздо симпатичнее что-ли выглядит список в "Add or Remove Programs"
(кстати тоже windowless Direct UI).
Но такую конструкцию уже можно и сейчас достаточно легко
воспроизвести в HTML.

Что скажет народ по поводу grid? Нужен ли он?
Re[3]: HTMLayout, версия "Pandorra".
От: Mamut Швеция http://dmitriid.com
Дата: 15.10.05 07:13
Оценка:
CS>Что скажет народ по поводу grid? Нужен ли он?

Нууу, табличную инормацию иногда выводить все же приходится... Наверное, все же нужен, ИМХО


dmitriid.comGitHubLinkedIn
Re[4]: HTMLayout, версия "Pandorra".
От: c-smile Канада http://terrainformatica.com
Дата: 15.10.05 17:03
Оценка:
Здравствуйте, Mamut, Вы писали:

CS>>Что скажет народ по поводу grid? Нужен ли он?


M>Нууу, табличную инормацию иногда выводить все же приходится... Наверное, все же нужен, ИМХО


Для того чтобы выводить достаточно <table>.

И еще: посмотри на add/remove programs. Это в принципе <table>.
Единственное отличие от grid — нет horizontal scrollbar — что
я считаю есть неоспоримое достоинство.

Если представить некий броузер "лохматых" записей в таблице БД то
гораздо удобнее для пользователя видеть запись в multiline виде
всю сразу чем прокручивать горизонтально столбцы забывая при том
а что же было в первом? Я так думаю.

А для упорядочивания (как правило это единсвенная полезная функция list view header)
гораздо лучше поставить где-то рядом группу option box'ов — вельми как хорошо-то будет.
Re[5]: HTMLayout, версия "Pandorra".
От: pongo  
Дата: 17.10.05 00:34
Оценка:
Здорово! Жду бету. А оно будет работать на c#, да?
Re: Вопрос имею... и еще кульные :) скриншоты
От: c-smile Канада http://terrainformatica.com
Дата: 17.10.05 03:48
Оценка: 39 (2)
Здравствуйте, c-smile, Вы писали:

Ага, привет. Где-то я тебя видел....


Вопрос имею:

В стандартном combobox в выпадающем списке скроллбары не подсвечиваются по mouse over.
Интересно это так задумано или просто не доделали?

Как вам вот такой combobox?
Re[6]: HTMLayout, версия "Pandorra".
От: c-smile Канада http://terrainformatica.com
Дата: 17.10.05 03:55
Оценка:
Здравствуйте, pongo, Вы писали:

P>Здорово! Жду бету. А оно будет работать на c#, да?


Есть некий Eriq в Германии который делает HTMLayout.NET.
Я его не знаю. Исходников не видел но судя по составу вопросов должно получится
нечто серьезное.
Re[5]: HTMLayout, версия "Pandorra".
От: Mamut Швеция http://dmitriid.com
Дата: 17.10.05 06:23
Оценка:
CS>А для упорядочивания (как правило это единсвенная полезная функция list view header)
CS>гораздо лучше поставить где-то рядом группу option box'ов — вельми как хорошо-то будет.

Хммм.. Не знаю, не знаю. List view header — хорошая штука. Правда, я думаю, енто дело можно будет эмулировать. Перерисовка/перестройка части документа ведь возможна, так?

Кстати, еще у меня возник вопрос. Насколько я понял, все контролы сейчас переписываются на custom windowless controls. Насколько их функциональность будет соответствовать дефолтной виндовой?


dmitriid.comGitHubLinkedIn
Re[6]: HTMLayout, версия "Pandorra".
От: c-smile Канада http://terrainformatica.com
Дата: 17.10.05 06:31
Оценка: 7 (1)
Здравствуйте, Mamut, Вы писали:

CS>>А для упорядочивания (как правило это единсвенная полезная функция list view header)

CS>>гораздо лучше поставить где-то рядом группу option box'ов — вельми как хорошо-то будет.

M>Хммм.. Не знаю, не знаю. List view header — хорошая штука. Правда, я думаю, енто дело можно будет эмулировать.

А например? Из набора стандартных программ Windows, где тебе нужны headers?
Ну или нестандартных. Мне действительно интересно.

M>Перерисовка/перестройка части документа ведь возможна, так?

Да конечно. Как черз DOM так и загрузкой HTML в отдельные элементы.

M>Кстати, еще у меня возник вопрос. Насколько я понял, все контролы сейчас переписываются на custom windowless controls. Насколько их функциональность будет соответствовать дефолтной виндовой?


Во всяком случае стандартный behavior стандартных контролов IE один в один.
Tree view — тоже — очень близко — те нюансы что я знаю — имплементирую.
А там дальше жизнь покажет. Намерение — имплементировать все разумное и доброе.
Re[7]: HTMLayout, версия "Pandorra".
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.10.05 07:49
Оценка: +1
Здравствуйте, c-smile, Вы писали:

CS>Во всяком случае стандартный behavior стандартных контролов IE один в один.

CS>Tree view — тоже — очень близко — те нюансы что я знаю — имплементирую.
Не забудь сделать клавиатурные шорткаты.
Для тривью важна звездочка — expand all below selection
Кстати, сама по себе эта звездочка должна как-то разумно рулиться.
Иногда она зело удобна. Но во многих случаях ее применение — это выстрел себе в голову. Например, встав в RegEdit на рут-ноду и нажав *, можно надооолго отправить машинку в даун. Хотелось бы "smart *" — т.е. распахнуть всех детей до определенного уровня, либо иметь возможность нажать esc в процессе и прекратить безобразие (это даже лучше).

Для листвью (если он вообще жизнеспособен) shift-ctrl-grey+ — autoadjust all columns
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Вопрос имею... и еще кульные :) скриншоты
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.10.05 07:49
Оценка: +2
Здравствуйте, c-smile, Вы писали:
CS>В стандартном combobox в выпадающем списке скроллбары не подсвечиваются по mouse over.
CS>Интересно это так задумано или просто не доделали?
Наверное, не доделали.
CS>Как вам вот такой combobox?
Мега!
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: HTMLayout, версия "Pandorra".
От: Mamut Швеция http://dmitriid.com
Дата: 17.10.05 09:45
Оценка:
CS>>>А для упорядочивания (как правило это единсвенная полезная функция list view header)
CS>>>гораздо лучше поставить где-то рядом группу option box'ов — вельми как хорошо-то будет.

M>>Хммм.. Не знаю, не знаю. List view header — хорошая штука. Правда, я думаю, енто дело можно будет эмулировать.

CS>А например? Из набора стандартных программ Windows, где тебе нужны headers?
CS>Ну или нестандартных. Мне действительно интересно.

Ну, например Outlook — сортировка по From или дате. У нас тут народ активно пользуется. Или есть тут написанная задней ногой (моей ) програмка для составления резерваций отелям. Список резерваций сортируется по дате, статусу (pending, confirmed, cancelled) или оплаченности.

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

M>>Перерисовка/перестройка части документа ведь возможна, так?

CS>Да конечно. Как черз DOM так и загрузкой HTML в отдельные элементы.

Ну, DOMа мы не боимся

M>>Кстати, еще у меня возник вопрос. Насколько я понял, все контролы сейчас переписываются на custom windowless controls. Насколько их функциональность будет соответствовать дефолтной виндовой?


CS>Во всяком случае стандартный behavior стандартных контролов IE один в один.

CS>Tree view — тоже — очень близко — те нюансы что я знаю — имплементирую.
CS>А там дальше жизнь покажет. Намерение — имплементировать все разумное и доброе.

Этого более, чем достаточно (тем более, что и tab order уже починен ). Эхх, надо постепенно начинать руководство подгатавливать к расходам на лицензию Потому что слюнки текут давно и обильно.


dmitriid.comGitHubLinkedIn
Re[2]: Вопрос имею... и еще кульные :) скриншоты
От: Mamut Швеция http://dmitriid.com
Дата: 17.10.05 10:29
Оценка: +1
CS>Вопрос имею:

CS>В стандартном combobox в выпадающем списке скроллбары не подсвечиваются по mouse over.

CS>Интересно это так задумано или просто не доделали?

Скорее, не доделали.

CS>Как вам вот такой combobox?


*drools*

Краткое выражение чувств (4 буквы): хоцю

Пояснение: Нестандартные комбобоксы (combo box with complex layout в Вашей терминологии) — это тема отдельных, зачастую весьма развернутых туториалов и каждый раз разных для разных фреймворков. Реализация редко тривиальна, но иногда позарез нужна. Например, DateTimePicker — это частный случай такого комбобокса, но при этом всегда выделяется в отдельный, да еще и немодифицируемый, компонент (или, например, вот) А иногда ведь хочется чего-нибудь такого, странного

В общем, вещь разумная, добрая и вечная


dmitriid.comGitHubLinkedIn
Re[3]: Вопрос имею... и еще кульные :) скриншоты
От: Зверёк Харьковский  
Дата: 17.10.05 11:23
Оценка: +1
Здравствуйте, Mamut, Вы писали:

M>Пояснение: Нестандартные комбобоксы (combo box with complex layout в Вашей терминологии) — это тема отдельных, зачастую весьма развернутых туториалов и каждый раз разных для разных фреймворков. Реализация редко тривиальна, но иногда позарез нужна. Например, DateTimePicker — это частный случай такого комбобокса, но при этом всегда выделяется в отдельный, да еще и немодифицируемый, компонент (или, например, вот) А иногда ведь хочется чего-нибудь такого, странного


M>В общем, вещь разумная, добрая и вечная


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

PS. Пришлось написать свою, совсем другую Если кому интересно, как-нито поделюсь заложенными принципами. Кажется, так еще никто не делал
FAQ — це мiй ай-кью!
Re[4]: Вопрос имею... и еще кульные :) скриншоты
От: Mamut Швеция http://dmitriid.com
Дата: 17.10.05 15:16
Оценка:
ЗХ>К слову сказать, о нестандартных контролах вообще. На мой вкус, любая библиотека контролов должны в первую очередь проектироваться с расчетом на создание новых контролов. Для большинства существующих библиотек это, к сожалению, не так.

Вот за что я люблю Qt — за простор и неограниченный полет фантазии.

ЗХ>PS. Пришлось написать свою, совсем другую Если кому интересно, как-нито поделюсь заложенными принципами. Кажется, так еще никто не делал


Колись


dmitriid.comGitHubLinkedIn
Re[2]: Вопрос имею... и еще кульные :) скриншоты
От: _FRED_ Черногория
Дата: 17.10.05 15:27
Оценка: 20 (1)
Здравствуйте, c-smile, Вы писали:

CS>Как вам вот такой combobox?

CS>

А если "выпадающий список" (или как его назвать ) можно полупрозрачным сделать —
Клавиатура на нём работает? ([Alt+]LeftArrow-RightArrow-TopArrow-BottomArrow, Enter, Escape)?
<< RSDN@Home 1.2.0 alpha rev. 616 >> =07:26= [Windows 2003 — 5.2.3790.65536]
under «*none*»
Help will always be given at Hogwarts to those who ask for it.
Re[5]: Вопрос имею... и еще кульные :) скриншоты
От: Зверёк Харьковский  
Дата: 17.10.05 15:44
Оценка: 4 (1)
Здравствуйте, Mamut, Вы писали:

ЗХ>>К слову сказать, о нестандартных контролах вообще. На мой вкус, любая библиотека контролов должны в первую очередь проектироваться с расчетом на создание новых контролов. Для большинства существующих библиотек это, к сожалению, не так.


M>Вот за что я люблю Qt — за простор и неограниченный полет фантазии.


ЗХ>>PS. Пришлось написать свою, совсем другую Если кому интересно, как-нито поделюсь заложенными принципами. Кажется, так еще никто не делал


M>Колись


Ну, грубо говоря, у меня каждый виджет каждый раз собирается из кусочков-"концепций".
Чтобы понятно было, сразу пример. Если кто-то еще помнит мой навигатор
Автор: Зверёк Харьковский
Дата: 19.07.05
, то описываться он будет (точнее, не "будет", а уже описывается) вот так (псевдокод):
Поведение = поведение::Список<файл> + поведение::Фокус + поведение::Мультиселект + поведение::Прокрутка + поведение::Навигация;
Стиль = стиль::ДеревоПуть + стиль::Скроллбар + стиль::СписокФайлов + стиль::Выделение + стиль::Фокус;
Навигатор = Виджет(Поведение, Стиль);


Поведение определяет изменение состояния по событию. Стиль определяет отрисовку в зависимости от состояния. Все стили и поведения — в общем, просто выглядящие классы, создать свой, новый — дело 5 минут. К примеру, когда мне захотелось, чтобы в навигаторе рядом с каждым файлом была кнопка "Анализировать", мне пришлось написать следующие, условно говоря классы:
class AnalyzeButton: Behavior
{
    bool onLClick(Area _area)
    {
        if(_area.name == "button") //кликнули именно по кнопке
        {
            file = state["list-items"][_area.number];  //узнаем, какому файлу соответствует кликнутая область
            ...
            return true;
        }
        return false;
    }
}

class InListButton: Style
{
    void setup()
    {
        areas.push("button");//определяет, что в виджете есть область по имени "button"
    }
    rect doLayout(rect _place)
    {
        //Получает место внутри которого надо расположиться, откусывает себе кусок, возвращает остаток
    }
    void doDraw  ()
    {
        //отрисовывает себя в заданном месте
    }
}


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

Вот так и живем...
FAQ — це мiй ай-кью!
Re[8]: HTMLayout, версия "Pandorra".
От: c-smile Канада http://terrainformatica.com
Дата: 17.10.05 16:10
Оценка: +1
Здравствуйте, Mamut, Вы писали:

M>>>Хммм.. Не знаю, не знаю. List view header — хорошая штука. Правда, я думаю, енто дело можно будет эмулировать.

CS>>А например? Из набора стандартных программ Windows, где тебе нужны headers?
CS>>Ну или нестандартных. Мне действительно интересно.

M>Ну, например Outlook — сортировка по From или дате. У нас тут народ активно пользуется. Или есть тут написанная задней ногой (моей ) програмка для составления резерваций отелям. Список резерваций сортируется по дате, статусу (pending, confirmed, cancelled) или оплаченности.


Например я хочу сортировать по нескольким колонкакм — headers тут не помогают — только один.

Вот смотри например:
http://www.newsgator.com/images/ss_autoprev.gif
Это уже не column headers а нечто другое совсем...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.