Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 15.05.05 07:52
Оценка: 310 (25)
Выложил в Public Domain свою/свой Harmonia GUI Framework.

Harmonia это GUI для D language — моя попытка сделать
нечто унифицированное для D как была\есть AWT для Java. Harmonia
пытается следовать духу AWT (простота использования и прозрачность)

Основные фичи Harmonia:
1) это так называемый "windowless" framework т.к. не использует системные child controls.
2) в связи с этим higly portable - наряду с основной win32 версией начаты работы
над портами Linux/Unix (pure X11) и MacOSX.
3) имеет встроенный простой и шустрый HTML engine. HTML используется в Harmonia
во многих местах. Например Dialog параметризиуется html.
В Harmonia html "компилируется" в нечто типа DOM bytecode array. Поэтому
html стало возможно использовать именно как средство построения thin clients
и highly interactive UI.
4) Harmonia единственный из мне известных GUI frameworks использущий
capture/bubbling event propagation схему впервые введенную в HTML event model
( здесь ). Данный
механизм позволил в разы сократить объем кода framework и повысить
его понятность смею думать соответсвенно.
5) Harmonia это themed UI - т.е. поддерживает механизм сменных UI стилей на лету.

Отдельной строкой:
Из всех мне известных языков D самый удобный для GUI
строения и изготовления всего чего работает на клиенте. Самодостаточный,
garbage collectible и не требует никакого runtime.

В дистрибуции находится smile.dsw — файл проекта для компилляции и отладки
под MS VS 6 самой Harmonia и samples.

Вот как выглядит Hello World:

module samples.hello1;

// HTML Hello World.

import harmonia.ui.application;
import harmonia.ui.window;
import harmonia.html.view;

// HTML behavior can be attached to any container
// This time to the window.
alias HtmlPanelT!(Window) HtmlWindow; 

void HelloWorldStart()
{
  HtmlWindow w = new HtmlWindow;
  w.html = 
     "<HTML back-color='edit info' 
            text-align=center 
            vertical-align=middle>Hello World!</HTML>";
  w.state = Window.STATE.SHOWN;
}

static this() 
{
  Application.onStart = &HelloWorldStart;
}


Вот скриншоты демо:



Вот демы на "пошшупать":
http://www.terrainformatica.com/harmonia/HarmoniaDemo.zip (470кб)

Загрузить Harmonia можно с моего SVN
http://www.terrainformatica.com/harmonia — урл на странице слева.

Harmonia class map здесь.

Больше доков пока нет но будут.

В проект приглашаются все желающие профессионалы.
Например создание IDE для D может получиться серьезным
проектом (в том числе коммерческим, буде на то желание).

Вот пока примерно все.

23.12.06 02:28: Перенесено модератором из 'Пользовательский интерфейс: проектирование, usability' — Кодт
Re: Harmonia GUI Framework
От: Conr Россия  
Дата: 15.05.05 16:38
Оценка: 18 (1)
Здравствуйте, c-smile, Вы писали:

CS>Выложил в Public Domain свою/свой Harmonia GUI Framework.

Будем посмотреть

Только вот пока сразу два недочета заметил —
— если активен какой-нибудь Edit (каретка мигает) и при этом раскрыть главное меню, то каретка не прибивается если перейти на другую вкладку — чтобы ее скрыть нужно снова щелкнуть по Edit.

— При закрытии диалогов. Если закрывать нажатием на кнопушку в заголовке, то перерисовывается все окно демки. В других случаях этого не происходит.

А вообще здоровская вещь эта Harmonia
Re[2]: Harmonia GUI Framework
От: Conr Россия  
Дата: 15.05.05 16:43
Оценка:
Здравствуйте, Conr, Вы писали:

Да, и еще в догонку — при нажатом Space или Enter можно пользоваться Tab\Shift+Tab, что порождает "веселые" эффекты на Button, Check Box & Radio — они остаются подсвеченными, а реально на них фокуса уже нет.
Re[2]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 15.05.05 18:50
Оценка:
Здравствуйте, Conr, Вы писали:

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


CS>>Выложил в Public Domain свою/свой Harmonia GUI Framework.

C>Будем посмотреть

C>Только вот пока сразу два недочета заметил —

C>- если активен какой-нибудь Edit (каретка мигает) и при этом раскрыть главное меню, то каретка не прибивается если перейти на другую вкладку — чтобы ее скрыть нужно снова щелкнуть по Edit.

Есть такое дело... Я пытаюсь использовать системную каретку
(TabletPC support requirement) но по всей видимости
с ней больше хлопот чем бенифитов. Будем чинить.

C>- При закрытии диалогов. Если закрывать нажатием на кнопушку в заголовке, то перерисовывается все окно демки. В других случаях этого не происходит.


Угу. Модальные циклы делаю руками поэтому пока возможны несуразицы.
( Також menu и другие popup тоже руками сделаны поэтому там тоже
не все гладко пока ).

C>А вообще здоровская вещь эта Harmonia


Ага. Спасибо. и D тоже рулез. И быстро работает.
Я думаю demo позволяет оценить скорость.

Никто не хочет Гармоничный Янус написать?
Re: Harmonia GUI Framework
От: Spidola Россия http://www.usametrics.ru
Дата: 16.05.05 09:24
Оценка: +1
Здравствуйте, c-smile, Вы писали:

CS>Выложил в Public Domain свою/свой Harmonia GUI Framework.


Ещё не разбирался, но ведь какие красивые скриншоты! Белая зависть.

P.S. А знак с тенью просто срубил наповал!
RSDN@Home : silent
Re[2]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 16.05.05 20:02
Оценка:
Здравствуйте, Spidola, Вы писали:


S>P.S. А знак с тенью просто срубил наповал!


Угу. На самом деле наличие возможности создания такого рода
эффектов есть прямое следствие наличия windowless архитектуры.

windowless архитектура позволяет делать эффективную отрисовку
всего дерева UI компонент на форме за один проход.

Помимо всего прочего это тоже я думаю была одна из серьезных мотиваций
разработчиков Avalon/XAML по уходу от стандартных HWND.
Re: Harmonia GUI Framework
От: WinterMute Россия http://yarrr.ru
Дата: 17.05.05 09:08
Оценка: +1
Выглядит отлично и контролы работают, как я заметил, правильнее чем в предыдущих версиях.

Планируется ли поддержка Native-skin'ов? Понятно что возня, в частности, с Win ThemeApi не из приятных, но пользователю будет комфортнее в узнаваемом окружении.
Re[2]: Harmonia GUI Framework
От: Зверёк Харьковский  
Дата: 17.05.05 09:30
Оценка:
Здравствуйте, WinterMute, Вы писали:

WM>Выглядит отлично и контролы работают, как я заметил, правильнее чем в предыдущих версиях.


WM>Планируется ли поддержка Native-skin'ов? Понятно что возня, в частности, с Win ThemeApi не из приятных, но пользователю будет комфортнее в узнаваемом окружении.


У c-smile в Канаде сейчас ночь, поэтому отвечу я: да, планируется, в самое наиближайшее время.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
FAQ — це мiй ай-кью!
Re[3]: Harmonia GUI Framework
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.05.05 11:23
Оценка: +1
Здравствуйте, c-smile, Вы писали:

CS>Помимо всего прочего это тоже я думаю была одна из серьезных мотиваций

CS>разработчиков Avalon/XAML по уходу от стандартных HWND.

Да нет, там все намного банальнее. Во-первых hwnd это очень дорого, во-вторых со всякими непрямоугольными окошками тоже все очень непросто.
... << RSDN@Home 1.1.4 beta 7 rev. 455>>
AVK Blog
Re[3]: Harmonia GUI Framework
От: WolfHound  
Дата: 17.05.05 13:04
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Помимо всего прочего это тоже я думаю была одна из серьезных мотиваций разработчиков Avalon/XAML по уходу от стандартных HWND.

Там накручего столько и тАкого что старичку HWND и не снилось.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 17.05.05 17:34
Оценка:
Здравствуйте, WinterMute, Вы писали:

WM>Планируется ли поддержка Native-skin'ов? Понятно что возня, в частности, с Win ThemeApi не из приятных, но пользователю будет комфортнее в узнаваемом окружении.


module harmonia.themes.theme;
задумывался с поддержкой system rendering тоже.
Будет сделано.
В принципе прицепить uxtheme.dll и сделать новую тему
на основе её функций это один два дня.
Если кто-то захочет себя попробовать себя в D — это хороший прожект.
И "людЯм" полезный.
Re[4]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 17.05.05 18:27
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Там накручего столько и тАкого что старичку HWND и не снилось.


Вопрос имею: что *реально* нужно накручивать базовым
элементам контроля и UI вообще?
С ними должно быть 1) удобно управлять и настраивать (customization)
2) рисовать по всякому и 3) система событий должна быть
гибкой чтобы можно было собирать из мелких кубиков
более сложные агрегаты. А что еще собственно?
Re: Зачем в Harmonia HTML?
От: c-smile Канада http://terrainformatica.com
Дата: 17.05.05 19:38
Оценка:
Здравствуйте, Кодёнок, Вы писали:

(вопрос из ветки "Почему D?")

Кё>Андрей, а почему ты придерживаешься HTML в GUI?


Хороший вопрос. Но непонятно как на него отвечать.

Прежде всего зачем язык разметки в GUI?:
HTML выполняет три базовых функции: 1) layout manager
( в Harmonia нет layout managers в чистом виде вообще кроме HTML )
и 2) renderer всякой текстовой информации и оформления и
3) удобное средсво локализации

смотри имеем две версии:

<P>Please input amount of money: <INPUT id=amount /> and select currency <INPUT type=select /></P>

и
<P>Пожалуйста введите сумму денюжек: <INPUT id=amount /> и выберите тип валюты <INPUT type=select /></P>


Понятно что форма/диалог настраиваемая таким образом в разы лучше чем то что нам предлагает resource editor.

Почему именно HTML?

1) Зачем изобретать велосипед (XAML/XUL) когда уже все (почти) есть ? (XAML/XUL это нечто более чем просто разметка, но это мы опускаем пока)
2) Short learning curve.
3) Набор готовых средств для его создания.
4) Прверенность временем и много еще всякого.

В Harmonia HTML это скорее XHTML так как допускает только well-formed XML.
И еще одно "но" и принципиальное весьма — Проценты.
Проценты здесь это "проценты от свободного места" т.е. скажем нам надо
чтобы фраза
<P>Please input amount of money: <INPUT id=amount width=70% /> and select currency <INPUT type=select width=30%/></P>

занимала всю строку и размеры input устанавливались исходя из соотношения 7/3 — так и пишем (width attribute).
В живую как это "пружинится" можно посмотерть в Demo (закладка Basic Control Test — первые два edit box)

То же справедливо и для вертикальных контейнеров типа DIV.

Ну и потом HTML позволяет хорошо и естесвенно разделить оформительскую часть
от собсвенно логики UI.

Вот примерно так.

Да, еще...я не стал нагружать HTML функциями обработки событий как в XUL/XAML потому как
так считаю эти функции больше кода приложения чем деклараций. В коде оброботку событий
и логику *всегда* делать удобнее и эффективнее.
Но ничего не мешает приделать к Harmonia тот же DMDScript или LUA если задача того требует...
Re: Harmonia GUI Framework
От: Mamut Швеция http://dmitriid.com
Дата: 17.05.05 20:09
Оценка:
Гложет меня вопрос насчет Harmonia. Есть ли в Harmonia возможность реализовать виртуальные списки
Автор: Mamut
Дата: 27.04.05
?


dmitriid.comGitHubLinkedIn
Re[2]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 17.05.05 20:35
Оценка: 14 (1)
Здравствуйте, Mamut, Вы писали:

M>Гложет меня вопрос насчет Harmonia. Есть ли в Harmonia возможность реализовать виртуальные списки
Автор: Mamut
Дата: 27.04.05
?


Вот смотри Abstract List:


//|
//| Abstract list widget, base of ListBoxT(T) and TreeBoxT(T)
//|

module harmonia.ui.controls.alist;

class AList: Scrollable!(Widgets)
{
  
public:
    this(uint scrollbars) {  _scrollbars = scrollbars;}
    
    abstract int     count();
    abstract void    drawItem(Graphics g, int itemNo, rect itemRc, bool isCurrent);
    abstract int    itemHeight();
        ...
}


Для организации любого списка тебе надо определить свои три метода (помечены abstract)
и все собственно.
Re[3]: Harmonia GUI Framework
От: Mamut Швеция http://dmitriid.com
Дата: 18.05.05 10:16
Оценка: +2 :))) :)
CS>Для организации любого списка тебе надо определить свои три метода (помечены abstract)
CS>и все собственно.


Хых. Теперь я знаю, с каим инструментарием в зубах я буду в очередной раз переписывать свой проект с нуля
... << RSDN@Home 1.1.4 beta 7 rev. 447>> ... <<Winamp is playing "Silence">> ...


dmitriid.comGitHubLinkedIn
Re[3]: Harmonia GUI Framework
От: WinterMute Россия http://yarrr.ru
Дата: 18.05.05 12:03
Оценка:
CS>module harmonia.themes.theme;
CS>задумывался с поддержкой system rendering тоже.
CS>Будет сделано.
CS>В принципе прицепить uxtheme.dll и сделать новую тему
CS>на основе её функций это один два дня.
CS>Если кто-то захочет себя попробовать себя в D — это хороший прожект.
CS>И "людЯм" полезный.

Не знаю, получится ли у меня "за один два дня", на D я совсем ничего не писал, но мне это интерестно. В общем, если моё участие поможет, то буду рад внести "свои пять копеек". Почта у меня в профайле.
Re: Harmonia GUI Framework
От: WinterMute Россия http://yarrr.ru
Дата: 18.05.05 13:25
Оценка: +2
Еще пару слов по поводу стандартных контролов: лично я уже привык что двайной клик в edit-box'е приводит к выделению слова, в Harmonia, сейчас, просто перемещается каретка на место клика. И возможность плавной прокрутки была бы заметным плюсом.
Re[2]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 18.05.05 19:00
Оценка:
Здравствуйте, WinterMute, Вы писали:

WM>Еще пару слов по поводу стандартных контролов: лично я уже привык что двайной клик в edit-box'е приводит к выделению слова, в Harmonia, сейчас, просто перемещается каретка на место клика. И возможность плавной прокрутки была бы заметным плюсом.


Согласен двумя руками.

Line Edit behavior — ( harmonia.ui.controls.behavior ) немного не доделан
в этом плане — например не хватает многих стандартных keyboard shortcuts и пр.

К слову сказать в Harmonia LineEdit behavior — это специальный драйвер (сам по себе не widget)
прямоугольной редактируемой области текста. Этот драйвер может цепляться
к любому widget. В т.ч. динамически.
Используется сейчас в EditBox и будет использоваться
в ComboBox, ListBox, TreeBox.

По поводу анимаций. У меня есть сейчас идея и кажется здравая. Но я её еще думаю.
Должно получиться просто и красиво.
Re: Harmonia GUI Framework
От: okurietz Россия  
Дата: 20.05.05 05:51
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Выложил в Public Domain свою/свой Harmonia GUI Framework.

...
CS>Загрузить Harmonia можно с моего SVN
CS>http://www.terrainformatica.com/harmonia — урл на странице слева.

CS>Harmonia class map здесь.


CS>Больше доков пока нет но будут.


CS>В проект приглашаются все желающие профессионалы.

CS>Например создание IDE для D может получиться серьезным
CS>проектом (в том числе коммерческим, буде на то желание).

CS>Вот пока примерно все.


А может кто-нить выложить все это добро куда-нить?
Re[2]: Harmonia GUI Framework
От: Зверёк Харьковский  
Дата: 20.05.05 06:03
Оценка:
Здравствуйте, okurietz, Вы писали:

O>А может кто-нить выложить все это добро куда-нить?

В смысле? Лежит вроде все на terrainformatica. Что не устраивает?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
FAQ — це мiй ай-кью!
Re[3]: Harmonia GUI Framework
От: okurietz Россия  
Дата: 20.05.05 06:40
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Здравствуйте, okurietz, Вы писали:


O>>А может кто-нить выложить все это добро куда-нить?

ЗХ>В смысле? Лежит вроде все на terrainformatica. Что не устраивает?
subversion'ом пользоваться не могу...
Re[4]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 20.05.05 07:34
Оценка:
Здравствуйте, okurietz, Вы писали:

O>Здравствуйте, Зверёк Харьковский, Вы писали:


ЗХ>>Здравствуйте, okurietz, Вы писали:


O>>>А может кто-нить выложить все это добро куда-нить?

ЗХ>>В смысле? Лежит вроде все на terrainformatica. Что не устраивает?
O>subversion'ом пользоваться не могу...

Почему? (мне действительно интересны причины)

Если не хочется ничего лишнего ставить то вот в командной строке набрать:
svn.exe checkout svn://harmonia.dyndns.org c:/mydprojects
Re[5]: Harmonia GUI Framework
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.05.05 08:01
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Почему? (мне действительно интересны причины)


Обычно это происходит по причине наличия присутствия прокси.
... << RSDN@Home 1.1.4 beta 7 rev. 456>>
AVK Blog
Re[6]: Harmonia GUI Framework
От: okurietz Россия  
Дата: 20.05.05 08:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


CS>>Почему? (мне действительно интересны причины)


AVK>Обычно это происходит по причине наличия присутствия прокси.

Ага, верно.
Re[7]: Harmonia GUI Framework
От: FreshMeat Россия http://www.rsdn.org
Дата: 20.05.05 12:55
Оценка: 3 (1)
Здравствуйте, okurietz, Вы писали:

O>А может кто-нить выложить все это добро куда-нить?

версия от 18 мая
Хорошо там, где мы есть! :)
Re[8]: Harmonia GUI Framework
От: okurietz Россия  
Дата: 20.05.05 13:39
Оценка:
Здравствуйте, FreshMeat, Вы писали:

FM>Здравствуйте, okurietz, Вы писали:


O>>А может кто-нить выложить все это добро куда-нить?

FM>версия от 18 мая
Спасибо!
Re[5]: Harmonia GUI Framework
От: okurietz Россия  
Дата: 20.05.05 13:55
Оценка:
Здравствуйте, c-smile, Вы писали:

Подскажите где грабли.
Пытаюсь скомпилировать hello1.d:
dmd hello1.d

output:
C:\progs\D\dmd\bin\..\..\dm\bin\link.exe hello1,,,user32+kernel32/noi;

OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 — 2001 All Rights Reserved

OPTLINK : Warning 23: No Stack
hello1.obj(hello1)
Error 42: Symbol Undefined _D9invariant12_d_invariantFC6ObjectZv
hello1.obj(hello1)
Error 42: Symbol Undefined __Class_8harmonia4html6parser6Parser
...
...
Re: Harmonia GUI Framework
От: Кирилл Осенков Украина
Дата: 20.05.05 14:51
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>4) Harmonia единственный из мне известных GUI frameworks использущий

CS>capture/bubbling event propagation схему впервые введенную в HTML event model
CS>( здесь ). Данный
CS>механизм позволил в разы сократить объем кода framework и повысить
CS>его понятность смею думать соответсвенно.
Можешь пожалуйста вкратце поделиться, чем именно "пузырькование" оказалось удобнее? Было бы очень интересно. Сенкс.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[6]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 20.05.05 15:36
Оценка:
Здравствуйте, okurietz, Вы писали:

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


O>Подскажите где грабли.

O>Пытаюсь скомпилировать hello1.d:
O>dmd hello1.d

O>output:

O>C:\progs\D\dmd\bin\..\..\dm\bin\link.exe hello1,,,user32+kernel32/noi;

O>OPTLINK (R) for Win32 Release 7.50B1

O>Copyright (C) Digital Mars 1989 — 2001 All Rights Reserved

O>OPTLINK : Warning 23: No Stack

O>hello1.obj(hello1)
O> Error 42: Symbol Undefined _D9invariant12_d_invariantFC6ObjectZv
O>hello1.obj(hello1)
O> Error 42: Symbol Undefined __Class_8harmonia4html6parser6Parser
O>...
O>...

Если развернуть D compiler в директории
c:/dmd/....
и тулзы в
c:/dm/
то smile.dsw — проект для VS 6 — позволяет
скомпилировать и отлаживать как есть без всяких
дополнительных настроек.
У Зверя есть аналогичный файл но для 7 студии.
Я сегодня гляну как еще можно этот проце автоматизировать.

Вот может оказаться полезным:
http://reverie.xrea.jp/wiki/VSpluginD.html
Re[2]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 20.05.05 17:16
Оценка: 19 (3)
Здравствуйте, Кирилл Осенков, Вы писали:

КО>Можешь пожалуйста вкратце поделиться, чем именно "пузырькование" оказалось удобнее? Было бы очень интересно. Сенкс.


Если совсем коротко то "пузырькование" позволяет собирать инетрфейс из более мелких кубиков и получать
более компактный код. При этом не требуется неуклюжий и жутко неэффективный механизм listenters.

Представим себе что скажем ComboBox это

class ComboBox: Widgets // container of widgets
{
  Button  button; // dropdown button
  EditBox edit;   // editbox
  // Popup window is also here
}


Скажем Button и EditBox полностью накрывают видимую область ComboBox.

Рассмотрим задачи:
1) по mouse down в любом месте этого combobox нужно поставить на него фокус.
2) Если EditBox пассивный (read-only) то по mouse down нужно спрятать показать popup окно.

В Harmonia имплементация выглядит так:

class ComboBox: Widgets 
{
  ....
  override  bool on(EventPointer evt)
  {
      switch(evt.type)
      {
          case EventPointer.DOWN | Event.SINKING: // processing before children
              if(!setFocus()) return false;
              break;
          case EventPointer.DOWN: // no one child handled it, do toggle
              togglePopup();
              return true; // done, we have handled it. stop its propagation (true).
          default:
              break;
      }
      return false; // It is not our event, propagate it further.
  }
}


В случае же стандартных подходов пришлось бы делать нотификацию
парента в Button и EditBox.

Т.е. в Harmonia все эти WM_COMMAND, WM_PARENTNOTIFY, WM_NOTIFY просто не нужны.
Все события всегда проходят по цепочке container-child и кому нужно тот и обрабатывает.

Например сработала тема меню SelectAll.
Harmonia генеририрует EventCommand и посылает его текущему фокус элементу.
Но событие опять же проходит сначала от окна к фокусу с модификатором Event.SINKING
а потом в нормальном виде (без Event.SINKING) идет обратно.
Таким образом то кто умеет обрабатывать SelectAll тот его и выполнит.
Re[7]: Harmonia GUI Framework
От: okurietz Россия  
Дата: 23.05.05 07:33
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, okurietz, Вы писали:


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


O>>Подскажите где грабли.

O>>Пытаюсь скомпилировать hello1.d:
O>>dmd hello1.d
...
CS>Если развернуть D compiler в директории
CS>c:/dmd/....
CS>и тулзы в
CS>c:/dm/
CS>то smile.dsw — проект для VS 6 — позволяет
CS>скомпилировать и отлаживать как есть без всяких
CS>дополнительных настроек.
CS>У Зверя есть аналогичный файл но для 7 студии.
CS>Я сегодня гляну как еще можно этот проце автоматизировать.

CS>Вот может оказаться полезным:

CS>http://reverie.xrea.jp/wiki/VSpluginD.html

Да, я это понял.
Просто студии никакой нет.
Попробую сделать make file...
Re: Harmonia GUI Framework
От: FreshMeat Россия http://www.rsdn.org
Дата: 23.05.05 11:02
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Выложил в Public Domain свою/свой Harmonia GUI Framework.


А существует откытый баг-трекер или issue-list? Забивать достаточно однообразными сообщениями форум не хочется...
Хорошо там, где мы есть! :)
Re[2]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 24.05.05 15:33
Оценка:
Здравствуйте, FreshMeat, Вы писали:

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


CS>>Выложил в Public Domain свою/свой Harmonia GUI Framework.


FM>А существует откытый баг-трекер или issue-list? Забивать достаточно однообразными сообщениями форум не хочется...


Я постраюсь сегодня завтра сгененрирвать Wiki для Harmonia.
Re[3]: Harmonia GUI Framework
От: FreshMeat Россия http://www.rsdn.org
Дата: 24.05.05 16:00
Оценка:
Здравствуйте, c-smile, Вы писали:

FM>>А существует откытый баг-трекер или issue-list? Забивать достаточно однообразными сообщениями форум не хочется...


CS>Я постраюсь сегодня завтра сгененрирвать Wiki для Harmonia.


Будет здорово
Хорошо там, где мы есть! :)
Re[4]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 27.05.05 07:06
Оценка:
Здравствуйте, FreshMeat, Вы писали:

FM>>>А существует откытый баг-трекер или issue-list? Забивать достаточно однообразными сообщениями форум не хочется...


CS>>Я постраюсь сегодня завтра сгененрирвать Wiki для Harmonia.

FM>
FM>Будет здорово

Не скоро сказка сказывается....
Короче здесь

Только не фулюганьте плиз, времени совсем нет вычищать.
Можно писать по русски, хорошо бы если бы при этом аннотация
была бы хоть какая по аглицки. Но нет так нет. "Хай воно им буде гирше".

Вот.
Re[3]: Harmonia GUI Framework
От: Good Украина  
Дата: 31.05.05 21:31
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

O>>А может кто-нить выложить все это добро куда-нить?

ЗХ>В смысле? Лежит вроде все на terrainformatica. Что не устраивает?
Поставил TortoiseSVN и делаю import по указанному урлу, спрашивает login и пароль, что вводить нужно?
Спсибо.
Re[8]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 02.06.05 03:44
Оценка:
Здравствуйте, okurietz, Вы писали:

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


CS>>Здравствуйте, okurietz, Вы писали:


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


O>>>Подскажите где грабли.

O>>>Пытаюсь скомпилировать hello1.d:
O>>>dmd hello1.d
O>...
CS>>Если развернуть D compiler в директории
CS>>c:/dmd/....
CS>>и тулзы в
CS>>c:/dm/
CS>>то smile.dsw — проект для VS 6 — позволяет
CS>>скомпилировать и отлаживать как есть без всяких
CS>>дополнительных настроек.
CS>>У Зверя есть аналогичный файл но для 7 студии.
CS>>Я сегодня гляну как еще можно этот проце автоматизировать.

CS>>Вот может оказаться полезным:

CS>>http://reverie.xrea.jp/wiki/VSpluginD.html

O>Да, я это понял.

O>Просто студии никакой нет.
O>Попробую сделать make file...

Я сделал. build.bat запусти и больше ничего не надо.
Re[4]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 02.06.05 03:45
Оценка:
Здравствуйте, Good, Вы писали:

G>Здравствуйте, Зверёк Харьковский, Вы писали:


O>>>А может кто-нить выложить все это добро куда-нить?

ЗХ>>В смысле? Лежит вроде все на terrainformatica. Что не устраивает?
G>Поставил TortoiseSVN и делаю import по указанному урлу, спрашивает login и пароль, что вводить нужно?
G>Спсибо.

Странно. Ничего не должен спрашивать.
Re[5]: Harmonia GUI Framework
От: Good Украина  
Дата: 02.06.05 07:57
Оценка:
Здравствуйте, c-smile, Вы писали:

G>>Поставил TortoiseSVN и делаю import по указанному урлу, спрашивает login и пароль, что вводить нужно?

G>>Спсибо.

CS>Странно. Ничего не должен спрашивать.


Моя ошибка, я просто с SVN никогда не работал, только с SourceSafe, посему немного не допонял, мне нужно было CheckOut или Export делать, а я import
Все забралось, буду посмотреть
Re: Добавил Animation
От: c-smile Канада http://terrainformatica.com
Дата: 03.06.05 06:50
Оценка:
Здравствуйте, c-smile, Вы писали:

Собственно ничего выдающегося пока.

Анимация в стиле Opera. Пока только кнопки и toolbar.
testbed.exe в
http://www.terrainformatica.com/harmonia/HarmoniaDemo.zip

Harmonia Wiki
http://www.terrainformatica.com/wiki/pmwiki.php?pagename=Harmonia.Harmonia
Re[2]: Добавил Animation
От: Mamut Швеция http://dmitriid.com
Дата: 03.06.05 07:16
Оценка:
CS>Анимация в стиле Opera. Пока только кнопки и toolbar.
CS>testbed.exe в
CS>http://www.terrainformatica.com/harmonia/HarmoniaDemo.zip

В пакете нет HTMLEffects.html, требуемого для testbed->html effects test. Дополнительно возникает access violation при тестировании диалога ask
... << RSDN@Home 1.1.4 beta 7 rev. 447>> ... <<Winamp is playing "Silence">> ...


dmitriid.comGitHubLinkedIn
Re: Harmonia GUI Framework
От: WinterMute Россия http://yarrr.ru
Дата: 03.06.05 12:20
Оценка: 1 (1)
Заметил багу (под XP SP2): Если поводить поверх окна каким-нибудь TopMost окном (например Windows Task Manager), то окно Harmonia не перерисовывается.
Re[3]: Добавил Animation
От: c-smile Канада http://terrainformatica.com
Дата: 04.06.05 17:56
Оценка:
Здравствуйте, Mamut, Вы писали:

CS>>Анимация в стиле Opera. Пока только кнопки и toolbar.

CS>>testbed.exe в
CS>>http://www.terrainformatica.com/harmonia/HarmoniaDemo.zip

M>В пакете нет HTMLEffects.html, требуемого для testbed->html effects test. Дополнительно возникает access violation при тестировании диалога ask


Ага, спасибо. Починил access violation.
Заодно приделал более вразумительное сообщение об ошибках.

HTMLEffects.html я не положил пока сознательно.
Re[2]: Добавил Animation
От: Кодт Россия  
Дата: 04.06.05 19:10
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>testbed.exe в

CS>http://www.terrainformatica.com/harmonia/HarmoniaDemo.zip

В dialogs, dialog ask — иногда, если очень быстро мышкой махнуть, прилетает кнопка с исходного окна:

Один раз мне даже удалось вызвать AV — кликнул по ней, что ли? Не понял, что именно сделал. Воспроизвести не смог.
Перекуём баги на фичи!
Re[3]: Добавил Animation
От: c-smile Канада http://terrainformatica.com
Дата: 04.06.05 19:47
Оценка:
Здравствуйте, Кодт, Вы писали:

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


CS>>testbed.exe в

CS>>http://www.terrainformatica.com/harmonia/HarmoniaDemo.zip

К>В dialogs, dialog ask — иногда, если очень быстро мышкой махнуть, прилетает кнопка с исходного окна:

К>
К>Один раз мне даже удалось вызвать AV — кликнул по ней, что ли? Не понял, что именно сделал. Воспроизвести не смог.

Кул Спасибо.
Re: Harmonia/C++
От: c-smile Канада http://terrainformatica.com
Дата: 04.06.05 19:59
Оценка: 34 (2)
Здравствуйте, c-smile, Вы писали:

FYI: Начал перевод Harmonia на C++.

По причинам сугубо практическим.
Есть три проекта требующих оного.

Плюс неопределенность с самим D.
Там есть пара мест где пока в дизайне
сияют большие дыры:
1) отсуствие const references как факта.
т.е. нельзя сказать const char[] str например
что делает например наличие хорошего механизма slicing
в общем-то бессмысленным/pointless.
Особенно для библиотек и больших проектов.
2) Отсуствие возможности переопределить
operator =. Т.е. ownership patterns имплементировать
невозможно пока.

По этим пунктам Вальтер глухо молчит и не комментирует.
Соотвесвенно решение на сейчас принято о портировании
Harmonia/D -> Harmonia/C++
Re: Harmonia GUI Framework
От: Mazay Россия  
Дата: 07.06.05 08:30
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Выложил в Public Domain свою/свой Harmonia GUI Framework.


Project Harmony
Главное гармония ...
Re[2]: Harmonia/C++
От: korzhik Россия  
Дата: 02.07.05 13:45
Оценка:
Здравствуйте, c-smile, Вы писали:

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


CS>FYI: Начал перевод Harmonia на C++.


Супер! Буду с нетерпением ждать.
Re[3]: Harmonia/C++
От: c-smile Канада http://terrainformatica.com
Дата: 04.07.05 20:06
Оценка: 1 (1)
Здравствуйте, korzhik, Вы писали:...

Кстати в Harmonia/C++ пытаюсь построить систему в которой внешний вид
всех widgets определяется с помощью CSS.

Т.е. theme это внешний CSS файл или ресурс в котором сказано например так:


editbox 
{
  border: 1px solid black;
  background-color: white;
}

editbox:focus
{
  background-color: yellow;
}


Плюс если widget hosted in html container его стиль можно переопределять и в HTML.

So far so good — из имплементации базового набора код рисования и стилирования вынесен
практически полностью в отдельный style engine.
Re: Harmonia GUI Framework
От: Александр Сергеевич Россия  
Дата: 04.07.05 21:17
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Выложил в Public Domain свою/свой Harmonia GUI Framework.


CS>Harmonia это GUI для D language — моя попытка сделать

CS>нечто унифицированное для D как была\есть AWT для Java. Harmonia
CS>пытается следовать духу AWT (простота использования и прозрачность)

А что для D нет стандартных GUI-библиотек? Или нет ТАКИХ библиотек? Как я понял язык этот молодой. Меня впечатлил. Ээххх как будет время, присмотрюсь к нему...
А Вам большой респект за Ваше правое дело =)
<<Winamp играет: 'Twin Peaks' soundtrack — Andrey's Dance>>
Re[2]: Harmonia GUI Framework
От: c-smile Канада http://terrainformatica.com
Дата: 05.07.05 03:00
Оценка:
Здравствуйте, Александр Сергеевич, Вы писали:

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


CS>>Выложил в Public Domain свою/свой Harmonia GUI Framework.


CS>>Harmonia это GUI для D language — моя попытка сделать

CS>>нечто унифицированное для D как была\есть AWT для Java. Harmonia
CS>>пытается следовать духу AWT (простота использования и прозрачность)

АС>А что для D нет стандартных GUI-библиотек? Или нет ТАКИХ библиотек? Как я понял язык этот молодой. Меня впечатлил. Ээххх как будет время, присмотрюсь к нему...


http://www.prowiki.org/wiki4d/wiki.cgi?AvailableGuiLibraries

Стандартных нет и хорошо.
В том смысле что у Java например есть и это в общем-то мало
помогает. Библиотек должно быть несколько — на разные ситуации.
Наверное. Или одна, но хорошо расширяемая на разные классы задач —
фактически позволяющая делать суббиблиотеки.

АС>А Вам большой респект за Ваше правое дело =)

Угу. Спасибо. "Ничего не нада"
Re[2]: Добавил Animation
От: adontz Грузия http://adontz.wordpress.com/
Дата: 05.07.05 20:05
Оценка: -1
Здравствуйте, c-smile, Вы писали:

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

файлы 1.html и 2.html
Browser.exe
  1. Вылетает на файле 1.html с сообщением acces violation
  2. Вылетает на файле 2.html вообще без сообщений
TestBed.exe
  1. Баг указанный Кодт'ом подтверждаю. Надо открыть несколько диалогов одновременно, потом закрыть, потом снова открыть несколько и т.д. артефакты не только в диалогах, но и в основном окне между кнопками.
  2. Если, когда мышь над кнопкой, нажать левую клавишу мыши, то кнопка прижмётся. Если потом вывести мышь за пределы кнопки, не отпуская клавиши, то она отожмётся. Если потом ввести мышь обратно, то кнопка не прижмётся, хотя должна.
  3. Если водить поверху окном то перерисовка выполняется некорректно (содержимое кона при перетаскивании показывается).
  4. Табуляция не циклична. Tab на последнем контрле и Shift+Tab на первом не работают.

МЫСЛИ:
Насчёт HWND-less — не нравится мне всё это. Никаких катастрофических тормозов в отрисовке с использованием HWND нет, если конечно грамотно пользоваться. Свои контролы, когда это кнопка, то конечно забавно, когда editbox — я против.
Многие стандартные вещи и вещи расчитанные на стандартные вещи перестают работать. Как пример IME или программа для людей с ослабленным зрением Narator или Onscreen Keyboard.
Более того, несмотря на правильные системные настройки ввести русские буквы мне так и не удалось. На размера системного шрифта контролы не реагируют, да и вообще не поддерживают Accessibility.
Глюки отрисовки конечно можно исправить, но не думаю что удастся повторять поведение стандартных контролов хоть на сколько нибудь приемлемом уровне.
Далее если бы мне нужен был HTML, то я скорее внедрю WebBrowser control и получу всю мощь DHTML, чем буду связыватся с неизвестной библиотекой которая не известно что поддерживает, а что нет.
Кучу диалогов (выбор цвета, настрока принтера, запись файла) тоже сам руками будешь делать?
Плюс ко всему, зачем мне ещё один рендерер? Harmonia это layout manager, но что насчёт реакции на события? Как мне реагировать на собития? Опять message maps?
Тогда уж лучше взять MFC, для неё есть куча расширений, она уже хорошо изучена, а скорость отрисовки в 99% случаев страдать не будет.
То что ты показал в testbed.exe это замечательно, но однооконно! Где же dockable toolbars (с окошечком настройки кстати говоря), dockable child windows, MDI наконец?
И есть ещё куча вопросов на которые HWND-less библиотека ответит однозначным отказом!
Переливы бежевого это конечно замечательно, но знакомое поведение контрола для пользователя ИМХО важнее. Особенно когда делается приложение со сложным и интенсивно используемым интерфейсом, где возможность заменить клик мыши нажатием кнопки это экономия часов рабочего времени.

ВЫВОДЫ:
Я не вижу причин использовать Harmonia в серьёзных проектах. Её текущие недостатки и, что важнее, недостатки вызванные архитектурой системы не позволяют её использовать. Инородный вид и, что самое главное, поведение будут вызывать больше проблем, чем можно чебе позволить.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Добавил Animation
От: WinterMute Россия http://yarrr.ru
Дата: 06.07.05 09:05
Оценка:
A>Я буду ругать, но ты не обижайся Я уважаю твой огромный труд, хотя и считаю его малополезным.

Можно я тут влезу в ваш разговор? Если нельзя, то не читай дальше

A>файлы 1.html и 2.html


На сколько я знаю, Harmoniа понимает XHTML, точнее его разновидность, т.е. твой документ должен быть как минимум валидным XML документом.

A>Баг указанный Кодт'ом подтверждаю. Надо открыть несколько диалогов одновременно, потом закрыть, потом снова открыть несколько и т.д. артефакты не только в диалогах, но и в основном окне между кнопками.

A>Если, когда мышь над кнопкой, нажать левую клавишу мыши, то кнопка прижмётся. Если потом вывести мышь за пределы кнопки, не отпуская клавиши, то она отожмётся. Если потом ввести мышь обратно, то кнопка не прижмётся, хотя должна.
A>Если водить поверху окном то перерисовка выполняется некорректно (содержимое кона при перетаскивании показывается).
A>Табуляция не циклична. Tab на последнем контрле и Shift+Tab на первом не работают.

Баги есть. А где их нет? Это ведь не релиз.

A>МЫСЛИ:

A>Насчёт HWND-less — не нравится мне всё это. Никаких катастрофических тормозов в отрисовке с использованием HWND нет, если конечно грамотно пользоваться. Свои контролы, когда это кнопка, то конечно забавно, когда editbox — я против.
Заметные тормоза есть, особенно, если попытаться подвигать контролы по форме.
Едитбокс себя весьма прилично ведёт. Как раз сегодня я добавил перемещение по тексту с клавишой Ctrl, выделение по дабл клику ещё не работает, но это вопрос времени.

A>Многие стандартные вещи и вещи расчитанные на стандартные вещи перестают работать. Как пример IME или программа для людей с ослабленным зрением Narator или Onscreen Keyboard.

Трудно это прокомментировать, большая часть названий незнакома Думаю всё-же можно извратится и заставить это работать. Лучше день потерять, зато потом за пять минут долететь.

A>Более того, несмотря на правильные системные настройки ввести русские буквы мне так и не удалось. На размера системного шрифта контролы не реагируют, да и вообще не поддерживают Accessibility.

Заметил правильно, но это поправимо.

A>Глюки отрисовки конечно можно исправить, но не думаю что удастся повторять поведение стандартных контролов хоть на сколько нибудь приемлемом уровне.

Каких например? Честно говоря борьба со стандартеыми контролами за их приличное поведение порой сложнее чем написание своего контрола который будет выглядеть как стандартный. Пример? Хотябы ListView, который не прокручивается колёсиком если у него нет фокуса, опять же ListView и TreeView, custom-draw для которых очень плохо реализован. Не побоюсь сказать: дизайн WinApi это образец ректального паттерна проектирования.

A>Далее если бы мне нужен был HTML, то я скорее внедрю WebBrowser control и получу всю мощь DHTML, чем буду связыватся с неизвестной библиотекой которая не известно что поддерживает, а что нет.

Это далеко не то. Во-первых, заметно тормозит. Во-вторых, ты не знаешь какая версия IE у пользователя, а это может вызвать проблемы. И в-третьих гибкость совсем не та.

A>Кучу диалогов (выбор цвета, настрока принтера, запись файла) тоже сам руками будешь делать?

Диалоги, скорее всего, будут стандартными.

A>Плюс ко всему, зачем мне ещё один рендерер? Harmonia это layout manager, но что насчёт реакции на события? Как мне реагировать на собития? Опять message maps?

A>Тогда уж лучше взять MFC, для неё есть куча расширений, она уже хорошо изучена, а скорость отрисовки в 99% случаев страдать не будет.
Реакция на события есть, и она организована лучше чем в MFC, об этом c-smile писал.

A>То что ты показал в testbed.exe это замечательно, но однооконно! Где же dockable toolbars (с окошечком настройки кстати говоря), dockable child windows, MDI наконец?

A>И есть ещё куча вопросов на которые HWND-less библиотека ответит однозначным отказом!
Так, на вскидку, что мешает создать несколько окон в каждом из которых будет жить Harmonia. (звучит-то как!)

A>Переливы бежевого это конечно замечательно, но знакомое поведение контрола для пользователя ИМХО важнее. Особенно когда делается приложение со сложным и интенсивно используемым интерфейсом, где возможность заменить клик мыши нажатием кнопки это экономия часов рабочего времени.


Знакомое поведение это не проблема. В чём смысл заменять "клик мыши нажатием кнопки" я не понял

Вкратце, зачем, по-моему, нужна harmonia: HTML позволяет созавать хороший и красивый интерфейс быстро. HTML'у не хватает гибкости, у Harmonia гибкости выше крыши, начиная от самостоятельной прорисовки элементов, заканчивая возможностью вводить новые элементы управления.
Re[4]: Добавил Animation
От: adontz Грузия http://adontz.wordpress.com/
Дата: 06.07.05 11:22
Оценка:
Здравствуйте, WinterMute, Вы писали:

WM>Можно я тут влезу в ваш разговор? Если нельзя, то не читай дальше


Пожалуйста

A>>файлы 1.html и 2.html

WM>На сколько я знаю, Harmoniа понимает XHTML, точнее его разновидность, т.е. твой документ должен быть как минимум валидным XML документом.

Понимает это одно, зачем вылетает?

WM>Баги есть. А где их нет? Это ведь не релиз.


c-smile я так понял просил найти баги, я что смог нашёл.

WM>Заметные тормоза есть, особенно, если попытаться подвигать контролы по форме.


В смысле когда окно меняет размеры и некоторые контролы следуют за правой и/или нижней границей? Вот сейчас открыл окно VisualStudio и мигала только страничка Start которая HTML.

WM>Едитбокс себя весьма прилично ведёт. Как раз сегодня я добавил перемещение по тексту с клавишой Ctrl, выделение по дабл клику ещё не работает, но это вопрос времени.


Вопрос в том, когда же вы закончите? В Windows несколько десятков стандартных контролов, сколько времени займёт вылизать все аналоги? Да и стоит ли?

A>>Многие стандартные вещи и вещи расчитанные на стандартные вещи перестают работать. Как пример IME или программа для людей с ослабленным зрением Narator или Onscreen Keyboard.


WM>Трудно это прокомментировать, большая часть названий незнакома Думаю всё-же можно извратится и заставить это работать. Лучше день потерять, зато потом за пять минут долететь.


Это серсисы для инвалидов. Программы должны их поддерживать, что бы получить некоторые очень важные сертификаты (в частности правительственные заказы, заказы ВУЗов и некоторые коммерческие заказы без них не получить). Чтобы узнать о них нажми Win+U

A>>Более того, несмотря на правильные системные настройки ввести русские буквы мне так и не удалось. На размера системного шрифта контролы не реагируют, да и вообще не поддерживают Accessibility.

WM>Заметил правильно, но это поправимо.

Поддержка Accessibility (сервисы для инвалидов) в HWND-less окружении практически не реазилуема. Для меня это может означать значительный спад продаж конечного продукта или судебные иски к заказчику, со сторны конечных пользователей. Простой пример программа поиска и просмотра оцифрованных книг в публичной библиотеке, которой человек с ослабленным зрением не сможет воспользоваться.
c-smile из своей Канады, должен был это понимать

A>>Глюки отрисовки конечно можно исправить, но не думаю что удастся повторять поведение стандартных контролов хоть на сколько нибудь приемлемом уровне.


WM>Каких например? Честно говоря борьба со стандартеыми контролами за их приличное поведение порой сложнее чем написание своего контрола который будет выглядеть как стандартный. Пример? Хотябы ListView, который не прокручивается колёсиком если у него нет фокуса, опять же ListView и TreeView, custom-draw для которых очень плохо реализован. Не побоюсь сказать: дизайн WinApi это образец ректального паттерна проектирования.


Непрокручиваемость ListView в некоторых случаях не такой недостаток, чтобы вообще от него отказываться. Ругать WinAPI можно долго, но это целостная среда, а вы из неё выделяетесь. Когда что-то добавят в Windows все программы использующие стандартные контролы получат исправления бесплатно Добавили, например, Visual Styles, чтобы их подключить надо было просто разместить XML файл, а что делать с Harmonia? Правильно, скачать новую версию и перекомпилировать

A>>Далее если бы мне нужен был HTML, то я скорее внедрю WebBrowser control и получу всю мощь DHTML, чем буду связыватся с неизвестной библиотекой которая не известно что поддерживает, а что нет.

WM>Это далеко не то. Во-первых, заметно тормозит. Во-вторых, ты не знаешь какая версия IE у пользователя, а это может вызвать проблемы. И в-третьих гибкость совсем не та.

Нужную версию, если это так важно, можно ставить при инсталляции программы. Да и Mozilla ActiveX тоже никто не отменял.

Ведь по сути у вас What You See Is Something Like What You Get. В чём редактировать HTML для диалогов и в чём его предпросматривать? У вас уже width="%" обрабатывается как-то по-особенному, дальше больше...

A>>Кучу диалогов (выбор цвета, настрока принтера, запись файла) тоже сам руками будешь делать?


WM>Диалоги, скорее всего, будут стандартными.


То есть будут очень инородно выглядеть отношению к основному приложению.

A>>Плюс ко всему, зачем мне ещё один рендерер? Harmonia это layout manager, но что насчёт реакции на события? Как мне реагировать на собития? Опять message maps?

A>>Тогда уж лучше взять MFC, для неё есть куча расширений, она уже хорошо изучена, а скорость отрисовки в 99% случаев страдать не будет.

WM>Реакция на события есть, и она организована лучше чем в MFC, об этом c-smile писал.


Нет, ты не понял. Я например, если уж и браться за что-то новое, хочу действительно удобного метода Если кроме самого обработчика сообщения мне надо ещё что-то описать, то это уже плохо.

A>>То что ты показал в testbed.exe это замечательно, но однооконно! Где же dockable toolbars (с окошечком настройки кстати говоря), dockable child windows, MDI наконец?

A>>И есть ещё куча вопросов на которые HWND-less библиотека ответит однозначным отказом!

WM>Так, на вскидку, что мешает создать несколько окон в каждом из которых будет жить Harmonia. (звучит-то как!)


Конечно ничено не мешает, но они должны активно взаимодействовать!

A>>Переливы бежевого это конечно замечательно, но знакомое поведение контрола для пользователя ИМХО важнее. Особенно когда делается приложение со сложным и интенсивно используемым интерфейсом, где возможность заменить клик мыши нажатием кнопки это экономия часов рабочего времени.


WM>Знакомое поведение это не проблема. В чём смысл заменять "клик мыши нажатием кнопки" я не понял


Простой пример — когда я плачу в банке за газ, электричество, воду и сборку мусора оператор вводит мои имя, фамилию, номера какие-то в одной программе ни разу не коснувшись мыши. Клавиатура так и щёлкает. Чеки печатаются дольше, чем оформляются, хотя принтер у них не плохой Заставь опреатора щёлкнуть мышью 1 раз и как результат оформление затормозиться в 2-3 раза, это очереди и огромные убытки (люди пойдут платить в другое место и банк не получит свои проценты).

Ещё не прочувствовал? Отключи себе клавишу Tab на сутки

WM>Вкратце, зачем, по-моему, нужна harmonia: HTML позволяет созавать хороший и красивый интерфейс быстро. HTML'у не хватает гибкости, у Harmonia гибкости выше крыши, начиная от самостоятельной прорисовки элементов, заканчивая возможностью вводить новые элементы управления.


То есть мелкие приложения, которые берут не функциональностью, а красотой
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[5]: Добавил Animation
От: WinterMute Россия http://yarrr.ru
Дата: 06.07.05 13:57
Оценка: 1 (1)
A>>>файлы 1.html и 2.html
WM>>На сколько я знаю, Harmoniа понимает XHTML, точнее его разновидность, т.е. твой документ должен быть как минимум валидным XML документом.

A>Понимает это одно, зачем вылетает?


Чтобы и ты понял! Это плохо, да, но не критично. HTML для этого движка почти тоже, что исходный код, можно ведь написать код который будет гробить программу, а почему HTML не может? Может! Здесь HTML может всё! Если серьёзно, не думаю, что такая большая проблема это поправить, но есть другие задачи.

WM>>Заметные тормоза есть, особенно, если попытаться подвигать контролы по форме.


A>В смысле когда окно меняет размеры и некоторые контролы следуют за правой и/или нижней границей? Вот сейчас открыл окно VisualStudio и мигала только страничка Start которая HTML.


Это потомучто IE тормозит, но он не один. Можно ради эксперемента написать програмку которая будет двигать штек десять кнопок по форме и посмотреть загркзку процессора.

A>Вопрос в том, когда же вы закончите? В Windows несколько десятков стандартных контролов, сколько времени займёт вылизать все аналоги? Да и стоит ли?


Мне недавно понадобилось сделать контрол который бы вел себя как радиокнопка, но выглядел иначе. Я подумал -- фигня! Возьму радиокнопку, определю код отрисовки и будет мне счастье. Ага. установка стиля ownerDraw затёрла информацию о типе контрола, т.е. теперь Windows даже не догадывался что это радиокнопка и мне пришлось всю ее функциональность реализовывать заново. Извини за технические подробности.

Стоит ли заморочится чтобы избежать таких проблем в будующем? По-моему да.

A>>>Многие стандартные вещи и вещи расчитанные на стандартные вещи перестают работать. Как пример IME или программа для людей с ослабленным зрением Narator или Onscreen Keyboard.


WM>>Трудно это прокомментировать...


A>Это серсисы для инвалидов. Программы должны их поддерживать, что бы получить некоторые очень важные сертификаты (в частности правительственные заказы, заказы ВУЗов и некоторые коммерческие заказы без них не получить). Чтобы узнать о них нажми Win+U


A>Поддержка Accessibility (сервисы для инвалидов) в HWND-less окружении практически не реазилуема. Для меня это может означать значительный спад продаж конечного продукта или судебные иски к заказчику, со сторны конечных пользователей. Простой пример программа поиска и просмотра оцифрованных книг в публичной библиотеке, которой человек с ослабленным зрением не сможет воспользоваться.

A>c-smile из своей Канады, должен был это понимать

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

Есть большой класс программ, из-за отсутствия этих фишек не пострадают. VS например.

A>>>Более того, несмотря на правильные системные настройки ввести русские буквы мне так и не удалось. На размера системного шрифта контролы не реагируют, да и вообще не поддерживают Accessibility.

WM>>Заметил правильно, но это поправимо.

A>Непрокручиваемость ListView в некоторых случаях не такой недостаток, чтобы вообще от него отказываться. Ругать WinAPI можно долго, но это целостная среда, а вы из неё выделяетесь. Когда что-то добавят в Windows все программы использующие стандартные контролы получат исправления бесплатно Добавили, например, Visual Styles, чтобы их подключить надо было просто разместить XML файл, а что делать с Harmonia? Правильно, скачать новую версию и перекомпилировать


Если программа маленькая, то скачают новую версию. Если большая, то никто не рыпнется, как например это происходит с VS MS Office и другими продуктами MS -- у них там в половине мест окошки без визуальных стилей вываливаются, в половине нет -- они иногда забывали положить манифест.

"Бесплатного" нового интерфейса с появлением ThemeApi тоже не появилось, чтобы он включился, нужно положить манифест, а для большинства пользователей самим манифест это всё равно что скачать новую версию.

A>>>Далее если бы мне нужен был HTML, то я скорее внедрю WebBrowser control и получу всю мощь DHTML, чем буду связыватся с неизвестной библиотекой которая не известно что поддерживает, а что нет.

WM>>Это далеко не то. Во-первых, заметно тормозит. Во-вторых, ты не знаешь какая версия IE у пользователя, а это может вызвать проблемы. И в-третьих гибкость совсем не та.

A>Нужную версию, если это так важно, можно ставить при инсталляции программы. Да и Mozilla ActiveX тоже никто не отменял.


Её размер тоже никто не отменял.

A>Ведь по сути у вас What You See Is Something Like What You Get. В чём редактировать HTML для диалогов и в чём его предпросматривать? У вас уже width="%" обрабатывается как-то по-особенному, дальше больше...


"width%%", если быть точнее. HTML это сложно?

A>>>Кучу диалогов (выбор цвета, настрока принтера, запись файла) тоже сам руками будешь делать?

WM>>Диалоги, скорее всего, будут стандартными.
A>То есть будут очень инородно выглядеть отношению к основному приложению.

Почему, у приложения может быть дефолтовая схема. Это раз. И, если видел Оперу: она поддерживает скины, диалоги стандартные, инородно не выглядят. Т.е. мне пофиг как они выглядят, они появляются на короткое время для конкретной цели, которая важнее чем их разглядывание.

WM>>Знакомое поведение это не проблема. В чём смысл заменять "клик мыши нажатием кнопки" я не понял


A>Простой пример — когда я плачу в банке за газ, электричество, воду и сборку мусора оператор вводит мои имя, фамилию, номера какие-то в одной программе ни разу не коснувшись мыши. Клавиатура так и щёлкает. Чеки печатаются дольше, чем оформляются, хотя принтер у них не плохой Заставь опреатора щёлкнуть мышью 1 раз и как результат оформление затормозиться в 2-3 раза, это очереди и огромные убытки (люди пойдут платить в другое место и банк не получит свои проценты).


A>Ещё не прочувствовал? Отключи себе клавишу Tab на сутки


Т.е., думаешь клавиатура не поддерживается?

WM>>Вкратце, зачем, по-моему, нужна harmonia: HTML позволяет созавать хороший и красивый интерфейс быстро. HTML'у не хватает гибкости, у Harmonia гибкости выше крыши, начиная от самостоятельной прорисовки элементов, заканчивая возможностью вводить новые элементы управления.


A>То есть мелкие приложения, которые берут не функциональностью, а красотой


Не столько красотой, сколько эргономичностью. Аккуратно поданная информация лучше воспринимается.
Re[6]: Добавил Animation
От: adontz Грузия http://adontz.wordpress.com/
Дата: 06.07.05 15:32
Оценка:
Здравствуйте, WinterMute, Вы писали:


WM>Это потомучто IE тормозит, но он не один. Можно ради эксперемента написать програмку которая будет двигать штек десять кнопок по форме и посмотреть загркзку процессора.


60 говоришь? Пожалуйста! Тест на 60 кнопок У меня всё ок

A>>Вопрос в том, когда же вы закончите? В Windows несколько десятков стандартных контролов, сколько времени займёт вылизать все аналоги? Да и стоит ли?

WM>Мне недавно понадобилось сделать контрол который бы вел себя как радиокнопка, но выглядел иначе. Я подумал -- фигня! Возьму радиокнопку, определю код отрисовки и будет мне счастье. Ага. установка стиля ownerDraw затёрла информацию о типе контрола, т.е. теперь Windows даже не догадывался что это радиокнопка и мне пришлось всю ее функциональность реализовывать заново. Извини за технические подробности.

Ну и что? Каким образом это аргумент против стандартной (не custom draw) радиокнопки?

WM>Стоит ли заморочится чтобы избежать таких проблем в будующем? По-моему да.


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

A>>Это серсисы для инвалидов. Программы должны их поддерживать, что бы получить некоторые очень важные сертификаты (в частности правительственные заказы, заказы ВУЗов и некоторые коммерческие заказы без них не получить). Чтобы узнать о них нажми Win+U


WM>Да, это недостаток, но какой процент программ расчитан на инвалидов.


Все программы, которые используют только стандартные контролы, поддерживают Accessibility. Более того Accessibility поддерживают не только Windows Forms контролы от Microsoft, но и контролы третьих фирм:
Infragistics
Section 508 Compliance
Section 508 Accessibility
DevExpress


WM>Есть большой класс программ, из-за отсутствия этих фишек не пострадают. VS например.

Плохой пример VS поддерживает Accessibility так же как и MS Office, хотя конечно набирать программы на слух не очень удобно.

WM>"Бесплатного" нового интерфейса с появлением ThemeApi тоже не появилось, чтобы он включился, нужно положить манифест, а для большинства пользователей самим манифест это всё равно что скачать новую версию.


Одно дело добавить манифест — другое переписывать уже существующий код.

A>>Ведь по сути у вас What You See Is Something Like What You Get. В чём редактировать HTML для диалогов и в чём его предпросматривать? У вас уже width="%" обрабатывается как-то по-особенному, дальше больше...

WM>"width%%", если быть точнее. HTML это сложно?

HTML как таковой не сложно. Сложно то, что его усложнили HTML диалог открытый в браузере и показанный программой выглядят по разному. Это плохо.

WM>Почему, у приложения может быть дефолтовая схема. Это раз.


Приложение должно свою схему брать из настроек.

WM>И, если видел Оперу: она поддерживает скины, диалоги стандартные, инородно не выглядят.


Да ну? По-моему просто отвратитеььно выглядят даже родные диалоги.


WM>Т.е., думаешь клавиатура не поддерживается?


Т.е. думаю, что не совсем.

WM>Не столько красотой, сколько эргономичностью. Аккуратно поданная информация лучше воспринимается.


Аккуратно можно и без Harmonia Harmonia нужна именно для красоты.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Добавил Animation
От: c-smile Канада http://terrainformatica.com
Дата: 06.07.05 23:55
Оценка:
Здравствуйте, adontz, Вы писали:

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


A>Я буду ругать, но ты не обижайся Я уважаю твой огромный труд, хотя и считаю его малополезным.


Ну что тебе сказать? Спаибо это во первых.

Ну а во вторых поехали по пунктам:


A>файлы 1.html и 2.html

A>Browser.exe
A>

    A>
  1. Вылетает на файле 1.html с сообщением acces violation
    A>
  2. Вылетает на файле 2.html вообще без сообщений
    A>

Есть такое дело. Загрузи те же файлы в мой же HTMLayout.

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


A>TestBed.exe

A>

    A>
  1. Баг указанный Кодт'ом подтверждаю. Надо открыть несколько диалогов одновременно, потом закрыть, потом снова открыть несколько и т.д. артефакты не только в диалогах, но и в основном окне между кнопками.

    Бага, согласен.

    A>
  2. Если, когда мышь над кнопкой, нажать левую клавишу мыши, то кнопка прижмётся. Если потом вывести мышь за пределы кнопки, не отпуская клавиши, то она отожмётся. Если потом ввести мышь обратно, то кнопка не прижмётся, хотя должна.

    Кто сказал? А если серьезно то я не считаю что это бага.
    Это уже не click на кнопку а чего-то другое.

    A>
  3. Если водить поверху окном то перерисовка выполняется некорректно (содержимое кона при перетаскивании показывается).

    Бага. Согласен.

    A>
  4. Табуляция не циклична. Tab на последнем контрле и Shift+Tab на первом не работают.
    A>

А должна? Может лучше нужно "бибикать" в конце?.


A>МЫСЛИ:

A>Насчёт HWND-less — не нравится мне всё это. Никаких катастрофических тормозов в отрисовке с использованием HWND нет, если конечно грамотно пользоваться. Свои контролы, когда это кнопка, то конечно забавно, когда editbox — я против.

Возьми такое вот приложение: http://www.evernote.com/en/
Я бы не сказал что там какой-то супер UI по сложности.
Он выполнен на HWND — на морде лица стандартные HWND только tree view
и один edit box — все остальное — свое и делается windowless "с полпинка".
Поизменяй размеры окна и скажи стоят ли преимущества использования
этих двух окон полученного результата или нет.

A>Многие стандартные вещи и вещи расчитанные на стандартные вещи перестают работать. Как пример IME или программа для людей с ослабленным зрением Narator или Onscreen Keyboard.


IME должна работать. Onscreen Keyboard — тоже. Если не работает — то баг.
И только Narrator нужно писать свой layer.

A>Более того, несмотря на правильные системные настройки ввести русские буквы мне так и не удалось. На размера системного шрифта контролы не реагируют, да и вообще не поддерживают Accessibility.


"системного шрифта контролы не реагируют" надо проверить — я использую DEFAULT_GUI_FONT — должно работать.

Кстати: Сейчас Дмитрий Давыдов пишет поддержку системных тем — в частности — Windows XP Themes support.

По поводу accessibility вообще. Harmonia в своей основе гораздо лучше это поддерживает.
Напимер импелементация Zoom в случае HTML форм это просто устанвка другого базового размера шрифта.
HTML все остальное сделает сам.

accessibility... Если ты написал программу которая использует только системные controls (очень редкий случай) это не значит что она сразу 100% accessible. Для того чтобы *реально* поддерживать людей
с ограниченным зрением или двигательной активностью нужен отдельный подход и голова на плечах.


A>Глюки отрисовки конечно можно исправить, но не думаю что удастся повторять поведение стандартных контролов хоть на сколько нибудь приемлемом уровне.


Нет там ничего сильно волшебного в стандартных контролах. В смысле вообще ничего нет.

A>Далее если бы мне нужен был HTML, то я скорее внедрю WebBrowser control и получу всю мощь DHTML, чем буду связыватся с неизвестной библиотекой которая не известно что поддерживает, а что нет.


Ты не понял для чего нужен HTML (нечто бликое к HTML) там.
Понятие декларативный UI и пр. XAML тот же вельми показателен.
Только в Harmonia HTML engine не снаружи а внутри.

A>Кучу диалогов (выбор цвета, настрока принтера, запись файла) тоже сам руками будешь делать?


OpenFile/SaveFile/PrinterSelect ипользуются из Shell —
стандартные. Все остальное из common dialogs в том виде что есть никому не нужно
включая этот "выбор цвета" .

Сама MS их не использует.

A>Плюс ко всему, зачем мне ещё один рендерер? Harmonia это layout manager, но что насчёт реакции на события? Как мне реагировать на собития? Опять message maps?


Какие message maps? Нет их там и не нужны они там.

A>Тогда уж лучше взять MFC, для неё есть куча расширений, она уже хорошо изучена, а скорость отрисовки в 99% случаев страдать не будет.


Вопросов нет про MFC. Смотря для чего.
Сылку что я дал глянь, там вообще на WTL все —
"Ну тай хиба жь це ёму допомогло?"

A>То что ты показал в testbed.exe это замечательно, но однооконно! Где же dockable toolbars (с окошечком настройки кстати говоря), dockable child windows, MDI наконец?


MDI не будет точно. MDI это usability disaster. Все остальное будет.

A>И есть ещё куча вопросов на которые HWND-less библиотека ответит однозначным отказом!


"Когда ваша жена начинает фразу со слов: Ты всегда... или Ты никогда... — знайте за этим последует неправда". А если серьезно то Harmonia родилась не от хорошей жизни. Именно из-за того что
система HWND уже ответила однозначным отказом.
См. ссылку верху.

A>Переливы бежевого это конечно замечательно, но знакомое поведение контрола для пользователя ИМХО важнее. Особенно когда делается приложение со сложным и интенсивно используемым интерфейсом, где возможность заменить клик мыши нажатием кнопки это экономия часов рабочего времени.


Соглачен. А какие проблемы?

A>ВЫВОДЫ:

A>Я не вижу причин использовать Harmonia в серьёзных проектах. Её текущие недостатки и, что важнее, недостатки вызванные архитектурой системы не позволяют её использовать. Инородный вид и, что самое главное, поведение будут вызывать больше проблем, чем можно чебе позволить.

Ну как тебе сказать... По всей видимости у нас с тобой
разные оценки серьезности. (Что естественно и нормально).
Поверь мне — очень серьезные вещи делаются сейчас на Harmonia прототипе.
Re[4]: Добавил Animation
От: GarryIV  
Дата: 07.07.05 00:09
Оценка: +1
Hello, c-smile!

A>>
  • Табуляция не циклична. Tab на последнем контрле и Shift+Tab на
    A>> первом не работают. [/list]

    c> А должна? Может лучше нужно "бибикать" в конце?.


    Должна. Хотя бы потому что к этому все привыкли.
    Posted via RSDN NNTP Server 1.9
  • WBR, Igor Evgrafov
    Re[4]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.07.05 00:39
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>Кто сказал? А если серьезно то я не считаю что это бага.

    CS>Это уже не click на кнопку а чего-то другое.

    Это то что делает кнопка в Windows и работая под Windows я ожидаю такого же поведения от всех кнопок.

    A>>
  • Табуляция не циклична. Tab на последнем контрле и Shift+Tab на первом не работают.
    A>>[/list]
    CS>А должна? Может лучше нужно "бибикать" в конце?.

    нет, лучше если она будет циклична

    CS>Возьми такое вот приложение: http://www.evernote.com/en/

    CS>Я бы не сказал что там какой-то супер UI по сложности.
    CS>Он выполнен на HWND — на морде лица стандартные HWND только tree view и один edit box — все остальное — свое и делается windowless "с полпинка".
    CS>Поизменяй размеры окна и скажи стоят ли преимущества использования этих двух окон полученного результата или нет.

    ИМХО обе части смотряться плохо и вот почему. Custom Draw TreeView не кеширует (просто не может этого делать) многие вещи и рисует всё заново, а основная программа тоже ничего не кеширует (потому как не догадались), оттого всё и мигает. HWND-less часть просто напросто рисуется раз в секунду, с большим запаздыванием из-за чего у меня возникает чувство что она вообще медленнее рисуется.
    Выводы: Custom Draw для TreeView плохо реализован, HWND-less тормозит сам по себе.

    A>>Многие стандартные вещи и вещи расчитанные на стандартные вещи перестают работать. Как пример IME или программа для людей с ослабленным зрением Narator или Onscreen Keyboard.


    CS>IME должна работать. Onscreen Keyboard — тоже. Если не работает — то баг.

    CS>И только Narrator нужно писать свой layer.

    У меня Onscreen Keyboard по чёрному глючит, клавиши глотаются.

    CS>"системного шрифта контролы не реагируют" надо проверить — я использую DEFAULT_GUI_FONT — должно работать.


    Тут пример: http://www.rsdn.ru/File/2053/1259843-fontsize.gif

    CS>Кстати: Сейчас Дмитрий Давыдов пишет поддержку системных тем — в частности — Windows XP Themes support.


    Это хорошо — одобрям

    CS>По поводу accessibility вообще. Harmonia в своей основе гораздо лучше это поддерживает.

    CS>Напимер импелементация Zoom в случае HTML форм это просто устанвка другого базового размера шрифта.

    Без поддержки Наратора это всё капля в море.

    CS>accessibility... Если ты написал программу которая использует только системные controls (очень редкий случай) это не значит что она сразу 100% accessible. Для того чтобы *реально* поддерживать людей с ограниченным зрением или двигательной активностью нужен отдельный подход и голова на плечах.


    Не спорю кое-что бывает надо и самому сделать, но 99% уже сделали за тебя.

    CS>Нет там ничего сильно волшебного в стандартных контролах. В смысле вообще ничего нет.


    Та же табуляция например. Кстати активные контрол очень трудно визуально найти. Пунктирная рамка на кнопках куда как лучше.

    CS>Ты не понял для чего нужен HTML (нечто бликое к HTML) там. Понятие декларативный UI и пр. XAML тот же вельми показателен. Только в Harmonia HTML engine не снаружи а внутри.


    HTML насколько я понял нужен для разметки (причём такой умной, чтобы задавать не координаты, а взаимное расположение).

    CS>OpenFile/SaveFile/PrinterSelect ипользуются из Shell — стандартные. Все остальное из common dialogs в том виде что есть никому не нужно включая этот "выбор цвета"


    Кроме Open/Save/Printer Select так же часто используются: ChooseFont, FindText, ReplaceText, PageSetupDlg

    CS>Сама MS их не использует.


    А Paint/WordPad?

    A>>Плюс ко всему, зачем мне ещё один рендерер? Harmonia это layout manager, но что насчёт реакции на события? Как мне реагировать на собития? Опять message maps?


    CS>Какие message maps? Нет их там и не нужны они там.


    Message maps это mapping of message to handler в любом виде.

    A>>То что ты показал в testbed.exe это замечательно, но однооконно! Где же dockable toolbars (с окошечком настройки кстати говоря), dockable child windows, MDI наконец?


    CS>MDI не будет точно. MDI это usability disaster. Все остальное будет.


    MDI это распространённая оконная модель от которой в некоторых случаях трудно отказаться. Не надо это рассмотривать именно как Multiple Document Interface. Нередко MDI используется как Multiple View.

    CS>А если серьезно то Harmonia родилась не от хорошей жизни. Именно из-за того что система HWND уже ответила однозначным отказом.

    CS>См. ссылку верху.

    То есть гармонию начали писать когда не смогли сделать нормальный custom draw для treeview? Да даже если бы это было невозможно, сколько раз в процессе использования программы её окно меняет размеры? Короче странная причина, что называется не верю! Давай другие

    CS>Соглачен. А какие проблемы?


    Проблемы с кнопками. Вон у вас переход по таб не циклический
  • A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[5]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.07.05 00:51
    Оценка:
    A>Тут пример: http://www.rsdn.ru/File/2053/1259843-fontsize.gif
    Кстати есть глюк на верхней картинке.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[5]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 07.07.05 04:11
    Оценка:
    Здравствуйте, GarryIV, Вы писали:

    GIV>Hello, c-smile!


    A>>>
  • Табуляция не циклична. Tab на последнем контрле и Shift+Tab на
    A>>> первом не работают. [/list]

    c>> А должна? Может лучше нужно "бибикать" в конце?.


    GIV>Должна. Хотя бы потому что к этому все привыкли.


    А я не привык и меня раздражает когда по очередному Tab
    оно улетает неведомо куда.

    На самом деле ничего не мешает замкнуть кольцо tab.
    Для диалогов это имеет больший смысл, для frame меньший.

    Имплементировать это легко:
    достаточно определить нечто типа:

    Window.on(EventWidget evt)
    {
    if (evt.type == NEXT_TAB)
    setFocus...
    }

    Так как последний tab никто не обработает
    (некуда переходить) то это событие всплывет (bubble)
    к окну. Там его можно и замкнуть на первый элемент.

    Главное чтобы была альтернатива и удобный event routing.
    А то как сейчас обработка Tab сделана в Windows —
    тут читай , тут не читай, тут рыбу заворачивали, а
    вот здесь у нас вообще ActiveX контейнер и начинаем
    плясать через message pretranslate.
  • Re[6]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.07.05 04:20
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>Главное чтобы была альтернатива и удобный event routing.


    Альтернатива тут нужна как телеге пятое колесо. Есть устоявшееся поведение. Либо оно копируется, либо имеем отклонение от привычного, которое выглядит как глюк. Ты же ведь не предлагаешь двигаться в другом направлении. Ты предлагаешь вообще не двигаться.

    CS>А то как сейчас обработка Tab сделана в Windows — тут читай , тут не читай, тут рыбу заворачивали, а вот здесь у нас вообще ActiveX контейнер и начинаем плясать через message pretranslate.


    Ну и замечательно всё реализовано! Если каждая часть в отдельности корректна, то вся система в целом тоже корректна.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[5]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 07.07.05 05:14
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    CS>>Кто сказал? А если серьезно то я не считаю что это бага.

    CS>>Это уже не click на кнопку а чего-то другое.

    A>Это то что делает кнопка в Windows и работая под Windows я ожидаю такого же поведения от всех кнопок.


    Нет проблем. Меняется одна строка.
    Фенечка состоит в том что у сеня есть выбор.

    A>>>
  • Табуляция не циклична. Tab на последнем контрле и Shift+Tab на первом не работают.
    A>>>[/list]
    CS>>А должна? Может лучше нужно "бибикать" в конце?.

    A>нет, лучше если она будет циклична


    См. мой ответ Garry.

    CS>>Возьми такое вот приложение: http://www.evernote.com/en/

    CS>>Я бы не сказал что там какой-то супер UI по сложности.
    CS>>Он выполнен на HWND — на морде лица стандартные HWND только tree view и один edit box — все остальное — свое и делается windowless "с полпинка".
    CS>>Поизменяй размеры окна и скажи стоят ли преимущества использования этих двух окон полученного результата или нет.

    A>ИМХО обе части смотряться плохо и вот почему. Custom Draw TreeView не кеширует (просто не может этого делать) многие вещи и рисует всё заново, а основная программа тоже ничего не кеширует (потому как не догадались), оттого всё и мигает. HWND-less часть просто напросто рисуется раз в секунду, с большим запаздыванием из-за чего у меня возникает чувство что она вообще медленнее рисуется.

    A>Выводы: Custom Draw для TreeView плохо реализован, HWND-less тормозит сам по себе.

    Ты глянь-ка Spy++. Узнаешь много нового. Это во первых, а во вторых
    При Custom Draw для TreeView не работает например node collapsing animation.
    Короче или то или то а все вместе — как всегда.

    Это дерево руками написать — ну вообще ж ничего не стоит практически.
    И сколько их уде всяких написано. От хорошей жизни?


    A>>>Многие стандартные вещи и вещи расчитанные на стандартные вещи перестают работать. Как пример IME или программа для людей с ослабленным зрением Narator или Onscreen Keyboard.


    CS>>IME должна работать. Onscreen Keyboard — тоже. Если не работает — то баг.

    CS>>И только Narrator нужно писать свой layer.

    A>У меня Onscreen Keyboard по чёрному глючит, клавиши глотаются.


    Надо смотреть, не проверял, спасибо.

    CS>>"системного шрифта контролы не реагируют" надо проверить — я использую DEFAULT_GUI_FONT — должно работать.


    A>Тут пример: http://www.rsdn.ru/File/2053/1259843-fontsize.gif


    Ага, спасибо, только я беру базовый размер фонта только а
    он у тебя не поменялся.

    Собственно поддержка системных тем на это и нацелена в числе прочих задач.

    CS>>Кстати: Сейчас Дмитрий Давыдов пишет поддержку системных тем — в частности — Windows XP Themes support.


    A>Это хорошо — одобрям


    CS>>По поводу accessibility вообще. Harmonia в своей основе гораздо лучше это поддерживает.

    CS>>Напимер импелементация Zoom в случае HTML форм это просто устанвка другого базового размера шрифта.

    A>Без поддержки Наратора это всё капля в море.


    Технически это не сложно. Кто-нибудь попросит — приделаем.

    CS>>accessibility... Если ты написал программу которая использует только системные controls (очень редкий случай) это не значит что она сразу 100% accessible. Для того чтобы *реально* поддерживать людей с ограниченным зрением или двигательной активностью нужен отдельный подход и голова на плечах.


    CS>>Нет там ничего сильно волшебного в стандартных контролах. В смысле вообще ничего нет.


    A>Та же табуляция например. Кстати активные контрол очень трудно визуально найти. Пунктирная рамка на кнопках куда как лучше.


    Наверное. Для этого и придуман механизм тем. Что бы можно
    было делать всяко разно. Контрастно и нет. Выбор — это свобода.

    CS>>Ты не понял для чего нужен HTML (нечто бликое к HTML) там. Понятие декларативный UI и пр. XAML тот же вельми показателен. Только в Harmonia HTML engine не снаружи а внутри.


    A>HTML насколько я понял нужен для разметки (причём такой умной, чтобы задавать не координаты, а взаимное расположение).


    Да и это тоже. Локализация с помощью HTML делается лучше. Тот же branding.

    CS>>OpenFile/SaveFile/PrinterSelect ипользуются из Shell — стандартные. Все остальное из common dialogs в том виде что есть никому не нужно включая этот "выбор цвета"


    A>Кроме Open/Save/Printer Select так же часто используются: ChooseFont, FindText, ReplaceText, PageSetupDlg


    MS Office их использует? Если нет то почему?

    CS>>Сама MS их не использует.

    A>А Paint/WordPad?

    Ну вот и все собственно...


    A>>>Плюс ко всему, зачем мне ещё один рендерер? Harmonia это layout manager, но что насчёт реакции на события? Как мне реагировать на собития? Опять message maps?


    CS>>Какие message maps? Нет их там и не нужны они там.


    A>Message maps это mapping of message to handler в любом виде.


    Есть понятие физических (первичных) событий (мышь клавиатура)
    и логических (вторичных) (click , focus, value changed)

    Первые как правило уже обрабатываются и так
    а для вторых имеет смысл использовать delegates.

    В чистом виде в harmonia нет message maps.
    Есть event handlers — в принципе можно считать их message maps группы событий:

    on(EventPointer evt)
    on(EventKeyboard evt)
    on(EventWidget evt)



    A>>>То что ты показал в testbed.exe это замечательно, но однооконно! Где же dockable toolbars (с окошечком настройки кстати говоря), dockable child windows, MDI наконец?


    CS>>MDI не будет точно. MDI это usability disaster. Все остальное будет.


    A>MDI это распространённая оконная модель от которой в некоторых случаях трудно отказаться. Не надо это рассмотривать именно как Multiple Document Interface. Нередко MDI используется как Multiple View.


    "Нередко MDI используется как Multiple View." Это где например?

    Excel — это единственная программа где мне пришлось
    использовать Multiple View но там MDI к этому не имеет никакого
    отношения. В MFC тоже все руками сделано.


    CS>>А если серьезно то Harmonia родилась не от хорошей жизни. Именно из-за того что система HWND уже ответила однозначным отказом.

    CS>>См. ссылку верху.

    A>То есть гармонию начали писать когда не смогли сделать нормальный custom draw для treeview? Да даже если бы это было невозможно, сколько раз в процессе использования программы её окно меняет размеры? Короче странная причина, что называется не верю! Давай другие


    Внимание. Я не сотрудник evernote.corp. И никакого отношения к продукту не имею
    (там только мой engine крутится).

    Как оно внутри устроено — не ведаю. Знаю что WTL.
    Знаю одно — технически UI писали люди уровня выше которго я просто не ведаю.
    Они вытащили все что можно из HWND решения.
    Но полупрозрачноть например пришлось делать отдельными top-level окнами
    лежащими поверх. По другому в Windows — никак.
    Эти окна кстати то что ты видишь как "тормоза" при ресайзе.
    Ресайз в такого рода приложении делается часто т.к. основное место приложение — в трее.

    Вот к этому (tech lead UI group) руку приложил, да.
    http://terrainformatica.com/screenshots/windowless_java.jpg
    Это windowless UI написанный с нуля на Java.
    По мощности Harmonia превосходит этот framework в разы.
    (на этом форуме есть люди знающие оба проекта изнутри, соврать не дадут)

    Этим приложением пользуются 70% риэлторов Северной Америки.
    Продажа недвижимости — второй по объему рынок в США.
    Я думаю это достаточный уровень серьезности для того чтобы считать
    фразу "Я не вижу причин использовать Harmonia в серьёзных проектах."
    отдельным частным мнением г. adontz

    Только без обид, если я случайно чем зацепил: не хотел, не хочу и хотеть не буду — некогда.
  • Re[7]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 07.07.05 05:35
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    CS>>Главное чтобы была альтернатива и удобный event routing.


    A>Альтернатива тут нужна как телеге пятое колесо. Есть устоявшееся поведение. Либо оно копируется, либо имеем отклонение от привычного, которое выглядит как глюк. Ты же ведь не предлагаешь двигаться в другом направлении. Ты предлагаешь вообще не двигаться.


    Абсолютно верно. Если писать "морды лица к БД" силами индусского бодишопа то да — самое оно.

    Но задачи-то разные бывают. Глянь на MSN Messenger через Spy++ — много нового узнаешь. (Например что есть така штука как DirectUI — сиречь фирменный MS framework — windowless UI недоступный внешним разработчикам)
    Или вообще на всю сюиту MSN. MS Money тоже вельми интерсный прожект с точки
    зрения UI. Или тот же MS Office — там вообще все нестандартно свое. И т.д.
    Это я к тому что Продукты (с большой буквы) в рамки стандартных HWND не влазят.


    CS>>А то как сейчас обработка Tab сделана в Windows — тут читай , тут не читай, тут рыбу заворачивали, а вот здесь у нас вообще ActiveX контейнер и начинаем плясать через message pretranslate.


    A>Ну и замечательно всё реализовано! Если каждая часть в отдельности корректна, то вся система в целом тоже корректна.


    Наверное.
    Re[7]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 07.07.05 06:01
    Оценка: :))
    Здравствуйте, adontz, Вы писали:

    WM>>Не столько красотой, сколько эргономичностью. Аккуратно поданная информация лучше воспринимается.


    A>Аккуратно можно и без Harmonia Harmonia нужна именно для красоты.


    А кррасота — стрррашная сила.

    На самом деле 2006 будет интересным годом — сойдуться на рынке
    PC крррасота в виде Mac OS и .... Windows XP

    И будем посмотреть что больше нужно народу — кнопки в стиле слез
    или кнопки в стиле "сорванная танковая башня".

    Удаляюсь под музыку "А в танк ударила болванк-а-а-а...."
    Re[6]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.07.05 07:54
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    A>>Это то что делает кнопка в Windows и работая под Windows я ожидаю такого же поведения от всех кнопок.

    CS>Нет проблем. Меняется одна строка.
    CS>Фенечка состоит в том что у сеня есть выбор.

    Ну тем более поменяй по крайней мере в #ifdef _WIN32/#endif

    A>>нет, лучше если она будет циклична


    CS>При Custom Draw для TreeView не работает например node collapsing animation.


    Это что? Оно мне надо?

    CS>Короче или то или то а все вместе — как всегда.

    CS>И сколько их уже всяких написано. От хорошей жизни?

    Нет не от хорошей. Не хватает контрола TreeList.

    A>>Message maps это mapping of message to handler в любом виде.


    CS>Есть понятие физических (первичных) событий (мышь клавиатура)

    CS>и логических (вторичных) (click , focus, value changed)

    CS>Первые как правило уже обрабатываются и так

    CS>а для вторых имеет смысл использовать delegates.

    И как на них подписаться? То есть чтобы метод A и событие B как-то связать просто объявить метод A недостаточно.

    A>>MDI это распространённая оконная модель от которой в некоторых случаях трудно отказаться. Не надо это рассмотривать именно как Multiple Document Interface. Нередко MDI используется как Multiple View.

    CS>"Нередко MDI используется как Multiple View." Это где например?

    Кажися 3D Studio Max

    A>>То есть гармонию начали писать когда не смогли сделать нормальный custom draw для treeview? Да даже если бы это было невозможно, сколько раз в процессе использования программы её окно меняет размеры? Короче странная причина, что называется не верю! Давай другие


    CS>Внимание. Я не сотрудник evernote.corp. И никакого отношения к продукту не имею

    CS>(там только мой engine крутится).

    Уговорил

    CS>Только без обид, если я случайно чем зацепил: не хотел, не хочу и хотеть не буду — некогда.


    Да ладно, было бы на что А вот Зверёк чего-то надулся

    На самом деле у меня самого были мысли (в действительности уже давно не только мысли) начёт GUI Framework (вернее насчёт Framework вообще, и GUI в частности). HWND-less туда как я сейчас думаю если и вписывается, то только за счёт полной эмуляции HWND. Возникает вопрос — кто из нас не прав?
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[6]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.07.05 08:02
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    A>>ИМХО обе части смотряться плохо и вот почему. Custom Draw TreeView не кеширует (просто не может этого делать) многие вещи и рисует всё заново, а основная программа тоже ничего не кеширует (потому как не догадались), оттого всё и мигает. HWND-less часть просто напросто рисуется раз в секунду, с большим запаздыванием из-за чего у меня возникает чувство что она вообще медленнее рисуется.

    A>>Выводы: Custom Draw для TreeView плохо реализован, HWND-less тормозит сам по себе.

    CS> Ты глянь-ка Spy++. Узнаешь много нового. Это во первых, а во вторых

    CS>При Custom Draw для TreeView не работает например node collapsing animation.
    CS>Короче или то или то а все вместе — как всегда.

    OK, вот вопрос на засыпку. Почему, когда я двигаю правый край окна, дерево мигнает? Ведь оно не меняет ни свои размеры ни положение. правильный ответ — это программисты напортачили. Дерево явно перерисовывается гораздо чаще чем надо.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[7]: Добавил Animation
    От: WinterMute Россия http://yarrr.ru
    Дата: 07.07.05 12:50
    Оценка:
    A>60 говоришь? Пожалуйста! Тест на 60 кнопок У меня всё ок
    Этот пример ничего не показывает. Если активно ресайзить окно, загрузка процессора будет под 100%, как при ресайзе любого окна. Ты попробуй сделать летающие по форме кнопки. Я тут выкладывал класс Dib, для операций с dib'ами, там летало примерно 5 объектов, каждый ~ 100x100, с частотой обновления 25 кадров в секунду, загрузка проца была порядка 2%, это с альфаблендингом.

    WM>>Мне недавно понадобилось сделать контрол который бы вел себя как радиокнопка, но выглядел иначе. Я подумал -- фигня! Возьму радиокнопку, определю код отрисовки и будет мне счастье. Ага. установка стиля ownerDraw затёрла информацию о типе контрола, т.е. теперь Windows даже не догадывался что это радиокнопка и мне пришлось всю ее функциональность реализовывать заново. Извини за технические подробности.


    A>Ну и что? Каким образом это аргумент против стандартной (не custom draw) радиокнопки?


    Радиокнопку редко приходится менять, а вот навесить на кнопку иконку, это совсем не экзотика. Проблемы остаются те-же.

    WM>>Стоит ли заморочится чтобы избежать таких проблем в будующем? По-моему да.


    A>По моему заморачиватся на странных контролах не стоит, которые ведут себя как утка, но выглядят как идюк.


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

    WM>>Есть большой класс программ, из-за отсутствия этих фишек не пострадают. VS например.

    A>Плохой пример VS поддерживает Accessibility так же как и MS Office, хотя конечно набирать программы на слух не очень удобно.

    A>Одно дело добавить манифест — другое переписывать уже существующий код.

    Такое придётся делать раз в три года. Ничего ужастного по-моему.

    A>>>Ведь по сути у вас What You See Is Something Like What You Get. В чём редактировать HTML для диалогов и в чём его предпросматривать? У вас уже width="%" обрабатывается как-то по-особенному, дальше больше...

    WM>>"width%%", если быть точнее. HTML это сложно?

    A>HTML как таковой не сложно. Сложно то, что его усложнили HTML диалог открытый в браузере и показанный программой выглядят по разному. Это плохо.


    HTML, по свое природе, ограничен и не лишён некоторых недостатков. Здесь нужен язык для построения интерфейсов, нет никакого смысла делать его точной копией HTML, но базировать на HTML это разумно, чтобы облегчить изучение.

    WM>>И, если видел Оперу: она поддерживает скины, диалоги стандартные, инородно не выглядят.


    A>Да ну? По-моему просто отвратитеььно выглядят даже родные диалоги.

    A>

    "Родные", это ты имеешь ввиду дефолтную тему, опера поддерживает и нативную, но мне больше всего нравится "Sofa King". Впрочем, мы совсем не о том, я имел ввиду нативные диалоги, сохранения файла например.

    WM>>Т.е., думаешь клавиатура не поддерживается?

    A>Т.е. думаю, что не совсем.
    Это простор для деательности, а не ограничение которое не обойти. Две большие разницы.

    WM>>Не столько красотой, сколько эргономичностью. Аккуратно поданная информация лучше воспринимается.

    A>Аккуратно можно и без Harmonia Harmonia нужна именно для красоты.

    "H" обеспечивает нормальный layout, строить ресайзещиеся диалоги просто -- это удобно для пользователя.
    "H" позволяет легко форматировать текст внутри диалогов, это улучшает восприятие, -- это удобно для пользователя.
    Re[7]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 07.07.05 16:04
    Оценка:
    Здравствуйте, adontz, Вы писали:

    CS>>При Custom Draw для TreeView не работает например node collapsing animation.


    A>Это что? Оно мне надо?


    Вот и я спрашиваю. Оно тебе всегда надо?
    animation — это стандартное поведение tree view.
    И насколько мне известно не отключаемое пользователем никак.

    CS>>Короче или то или то а все вместе — как всегда.

    CS>>И сколько их уже всяких написано. От хорошей жизни?

    A>Нет не от хорошей. Не хватает контрола TreeList.


    А также не хватает новых...
    А также требуется изменить старые.....
    ... и далее по списку
    всех компонентных библиотек на рынке.

    Реально в быту в чистом виде используются 5-8 стандартных
    типов HWND. Все.


    A>>>Message maps это mapping of message to handler в любом виде.


    CS>>Есть понятие физических (первичных) событий (мышь клавиатура)

    CS>>и логических (вторичных) (click , focus, value changed)

    CS>>Первые как правило уже обрабатываются и так

    CS>>а для вторых имеет смысл использовать delegates.

    A>И как на них подписаться?

    class ClassA {
    void A() { ... }
    }
    ClassA a;
    Dialog b;

    b.buttonOk.onClick = &a.A;

    A>То есть чтобы метод A и событие B как-то связать просто объявить метод A недостаточно.


    Угу надо еще поставить знак равенства: onClick = &a.A

    A>На самом деле у меня самого были мысли (в действительности уже давно не только мысли) начёт GUI Framework (вернее насчёт Framework вообще, и GUI в частности). HWND-less туда как я сейчас думаю если и вписывается, то только за счёт полной эмуляции HWND. Возникает вопрос — кто из нас не прав?


    Я не знаю что ты имеешь ввиду под "эмуляции HWND" но основных проблем HWND системы
    две мне кажется: отсутствие прозрачности child windows в принципе и в том как сделан message routing.
    Re[7]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 07.07.05 16:13
    Оценка:
    Здравствуйте, adontz, Вы писали:

    A>OK, вот вопрос на засыпку. Почему, когда я двигаю правый край окна, дерево мигнает? Ведь оно не меняет ни свои размеры ни положение. правильный ответ — это программисты напортачили. Дерево явно перерисовывается гораздо чаще чем надо.


    Sancta simplicitas

    Там окно неквадратной формы. "Оно само" короче
    Это как раз тот случай когда "99% сделано до нас" ((с) adontz)

    Не знаю как тебе, но мне с этим ненавязчивым сервисом
    приходится бодаться в каждом проекте.
    Re[8]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.07.05 23:22
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    A>>Нет не от хорошей. Не хватает контрола TreeList.


    CS>А также не хватает новых...

    CS>А также требуется изменить старые.....
    CS>... и далее по списку
    CS>всех компонентных библиотек на рынке.

    CS>Реально в быту в чистом виде используются 5-8 стандартных

    CS>типов HWND. Все.

    Всё делается на основе ListView.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[8]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.07.05 23:45
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>Там окно неквадратной формы. "Оно само" короче

    CS>Это как раз тот случай когда "99% сделано до нас" ((с) adontz)

    Я сейчас поглядел внимально, это же не TreeView а какой-то самопальный контрол . В чём прикол?

    Более того, судя по документации TreeView вообще не поддерживает custom draw. Я его с ListView перепутал, я ладно, но твоё При Custom Draw для TreeView не работает например node collapsing animation. к чему было?
    То есть твои люди уровня выше которго я просто не ведаю написали какой-то левый жутко фликерящий контрол похожий на TreeView и это аргумент в пользу того что HWND это плохо? Ну и ну!

    Кажется ты исходишь из неправильных предпосылок внушённых тебе людьми для тебя авторитетными, но увы не совсем правыми в своих убеждениях.
    Я вот сейчас скачал новую версию Janus http://www.rsdn.ru/janus/RAHSetup1_1_4.zip
    Для отображения дерева сообщений там АФАИК используется custom draw listview написаный Владом, но ни он, ни даже Internet Explorer_Server не мигают. И ИМХО Влад подвига не совешал, просто всё более-менее грамотно сделал.
    Может дело не в ужасном мерзком HWND, а в кривых руках некоторых личностей ?

    РЕЗЮМЕ:
    Ты не только не убедил меня в преимуществах WindowsLess UI, но и привёл аргументы и факты скорее тебя компроментирующие, чем доказывающие твою правоту.
    СОВЕТ:
    Пересмотри те причины из-за которых появилась Harmonia. Возможно не все они так очевидны и неоспоримы как казалось с начала.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[9]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 08.07.05 04:54
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    CS>>Там окно неквадратной формы. "Оно само" короче

    CS>>Это как раз тот случай когда "99% сделано до нас" ((с) adontz)

    A>Я сейчас поглядел внимально, это же не TreeView а какой-то самопальный контрол . В чём прикол?


    Просто интересно в чем конкретно заключается это "внимательно"?

    Т.к. BlockNote я писал самолично то зуб
    тебе даю что слева (Project Folder) стоит TreeView. Но Spy++ тебе показывает
    нечто другое . Это subclassing называется и есть три способа установления
    истинного класса окна.

    A>Более того, судя по документации TreeView вообще не поддерживает custom draw. Я его с ListView перепутал, я ладно, но твоё При Custom Draw для TreeView не работает например node collapsing animation. к чему было?

    A>То есть твои люди уровня выше которго я просто не ведаю написали какой-то левый жутко фликерящий контрол похожий на TreeView и это аргумент в пользу того что HWND это плохо? Ну и ну!

    Чего-то ты не туда куда-то смотришь...
    Смотрим здесь

    Меня тут справедливо поправили: Custom Draw и animation работает — не работает animation при double-buffering (WS_EX_COMPOSITE) — единственный известный штатный способ устранения flickering в Tree View.

    A>Кажется ты исходишь из неправильных предпосылок внушённых тебе людьми для тебя авторитетными, но увы не совсем правыми в своих убеждениях.


    Ага. И лет мне восемь.

    A>Я вот сейчас скачал новую версию Janus http://www.rsdn.ru/janus/RAHSetup1_1_4.zip

    A>Для отображения дерева сообщений там АФАИК используется custom draw listview написаный Владом, но ни он, ни даже Internet Explorer_Server не мигают. И ИМХО Влад подвига не совешал, просто всё более-менее грамотно сделал.
    A>Может дело не в ужасном мерзком HWND, а в кривых руках некоторых личностей ?

    Ну видишь ты же сам и говоришь что свои controls — это оно.

    у меня вся Гармонь не мигает вкупе с
    HTML и alpha blending. А уж стартует и памяти кушает...

    A>РЕЗЮМЕ:

    A>Ты не только не убедил меня в преимуществах WindowsLess UI, но и привёл аргументы и факты скорее тебя компроментирующие, чем доказывающие твою правоту.
    A>СОВЕТ:
    A>Пересмотри те причины из-за которых появилась Harmonia. Возможно не все они так очевидны и неоспоримы как казалось с начала.

    ОТВЕТ: как бы это сказать помягше ...
    мне за мои GUI деньги платят — думаю не обидно будет?

    А если серьезно то я советы такого уровня аргументации выслушиваю со вниманием от
    людей показывающих пальцем на нечто и говорящих "вот этот GUI сделал я!".
    Уж не обессудь.
    Re[9]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 08.07.05 05:06
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    A>>>Нет не от хорошей. Не хватает контрола TreeList.


    CS>>А также не хватает новых...

    CS>>А также требуется изменить старые.....
    CS>>... и далее по списку
    CS>>всех компонентных библиотек на рынке.

    CS>>Реально в быту в чистом виде используются 5-8 стандартных

    CS>>типов HWND. Все.

    A>Всё делается на основе ListView.


    Везет же человеку...
    Re[9]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 08.07.05 05:20
    Оценка:
    Здравствуйте, adontz, Вы писали про то что windowless никому не нужен.

    Вот блог Raymond Chen ( отец-основатель Windows GUI и архитектор Windows Shell )
    http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx
    Re[10]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 08.07.05 05:30
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>Здравствуйте, adontz, Вы писали про то что windowless никому не нужен.


    CS>Вот блог Raymond Chen ( отец-основатель Windows GUI и архитектор Windows Shell )

    CS>http://blogs.msdn.com/oldnewthing/archive/2005/02/11/371042.aspx

    Очень рекомендую почитать комментарии к статьям.
    Там живые люди ( включая команду Оффиса ) рассказывают как оно все там устроено.
    Оченно показательно.
    Re[4]: Добавил Animation
    От: Mazay Россия  
    Дата: 08.07.05 08:05
    Оценка: 1 (1)
    Здравствуйте, c-smile, Вы писали:

    A>>
  • Табуляция не циклична. Tab на последнем контрле и Shift+Tab на первом не работают.

    CS>А должна? Может лучше нужно "бибикать" в конце?.


    Не могу промолчать!!! Обязательно должна!!! Не все помнят про Shift-Tab, потому если проскочишь контрол, то назад не вернёшься. Как-то сталкивался с таким поведением программы — хотел убить программиста.


    PS. ИМХО
    Зря вы себя в рамки HTML загоняете: всё равно выглядеть будет не как в браузере, всё равно руками интерфейс писать никто не будет — будут дизайнером пользоваться (кстати дизайнер вообще будет?), сто пудов ваш HTML со временем выродится в свой особенный диалект. MS ведь не просто так изобретает XAML.
  • Главное гармония ...
    Re[10]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 08.07.05 11:14
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS> Просто интересно в чем конкретно заключается это "внимательно"?


    Внимательно это значит раньше я просто поверил тебе на слово, что там должен быть SysTreeView32, а сейчас проверил.

    CS>Т.к. BlockNote я писал самолично то зуб тебе даю что слева (Project Folder) стоит TreeView. Но Spy++ тебе показывает нечто другое . Это subclassing называется и есть три способа установления истинного класса окна.


    Ладно верю, что там TeeView subclassing. Не верю, что TreeView Сам по себе плохой. См. ниже.

    CS>Чего-то ты не туда куда-то смотришь...

    CS>Смотрим здесь

    А, ОК. Был не прав, но тебе от этого только хуже

    CS>Меня тут справедливо поправили: Custom Draw и animation работает — не работает animation при double-buffering (WS_EX_COMPOSITE) — единственный известный штатный способ устранения flickering в Tree View.


    A>>Я вот сейчас скачал новую версию Janus http://www.rsdn.ru/janus/RAHSetup1_1_4.zip

    A>>Для отображения дерева сообщений там АФАИК используется custom draw listview написаный Владом, но ни он, ни даже Internet Explorer_Server не мигают. И ИМХО Влад подвига не совешал, просто всё более-менее грамотно сделал.
    A>>Может дело не в ужасном мерзком HWND, а в кривых руках некоторых личностей ?

    CS>Ну видишь ты же сам и говоришь что свои controls — это оно.


    Нет, не оно см. ниже.

    CS>у меня вся Гармонь не мигает вкупе с HTML и alpha blending. А уж стартует и памяти кушает...


    Стандартные контролы никогда не кушали много памяти.

    CS>ОТВЕТ: как бы это сказать помягше ... мне за мои GUI деньги платят — думаю не обидно будет?


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

    CS>А если серьезно то я советы такого уровня аргументации выслушиваю со вниманием от людей показывающих пальцем на нечто и говорящих "вот этот GUI сделал я!".

    CS>Уж не обессудь.

    Вобщем вот что я тебе скажу, друг мой. Есть большая разница мужду написанием контрола с нуля и custom draw контролом. Ниже ссылочка угадай на что... Хе-хе на custom draw tree-view который выглядит как ваш (ну не совсем так же, но очень похоже, во всяком случае рисовательная сложность та же) и не мигает. При попытке ответить на вопрос, почему я за 25 мин соорудил такую классную вешь, а твои гуру выпустили мигающий продукт, я к сожалению склоняюсь к мысли, что это тот случай, где не я такой умный, а они такие не умные.
    TreeViewCustomDrawTest
    Кстати стиль WS_EX_COMPOSITE я не нашёл. В принципе как можно убедится Spy++ даже если он и есть, он не используется

    Тут видишь ли какое дело. Когда ты ссылаешься свой авторитет, я думаю, а авторитет ли это для меня. И когда ты называешь людей которые делают фликерящие контролы очень умными, я начинаю сомневается, в том, что они действительно очень умные, тем более что их дерево просто неправильно рисуется
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[11]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 08.07.05 11:33
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>Там живые люди ( включая команду Оффиса ) рассказывают как оно все там устроено.


    Не путай тёплое с мягким. Офис как и IE это вообще говоря межплатформенные приложения. Использовать универсальную графическую библиотеку там просто необходимо. Другое дело, что какую именно и как она будет внутри устроена... CorelDRAW 12 например выходит в Win и Mac версиях, но все контролы в CorelDRAW родные. Я не думаю, что в Corel сидят ребята глупее чем в Microsoft.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[12]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 08.07.05 16:29
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    CS>>Там живые люди ( включая команду Оффиса ) рассказывают как оно все там устроено.


    A>Не путай тёплое с мягким. Офис как и IE это вообще говоря межплатформенные приложения. Использовать универсальную графическую библиотеку там просто необходимо.


    Как согласуется это твое "Использовать универсальную графическую библиотеку там просто необходимо." (Например Harmonia)
    и твое же "Народу нужны только HWND"?


    A>Другое дело, что какую именно и как она будет внутри устроена... CorelDRAW 12 например выходит в Win и Mac версиях, но все контролы в CorelDRAW родные. Я не думаю, что в Corel сидят ребята глупее чем в Microsoft.


    Просто Corel беднее. Не могут себе позволить хороших
    специалистов по UI и usability

    кстати, мое частное мнение:
    c точки зрения usability Xara в разы сильнее.
    Re[5]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 08.07.05 16:40
    Оценка:
    Здравствуйте, Mazay, Вы писали:

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


    A>>>
  • Табуляция не циклична. Tab на последнем контрле и Shift+Tab на первом не работают.

    CS>>А должна? Может лучше нужно "бибикать" в конце?.


    M>Не могу промолчать!!! Обязательно должна!!! Не все помнят про Shift-Tab, потому если проскочишь контрол, то назад не вернёшься. Как-то сталкивался с таким поведением программы — хотел убить программиста.


    Open Source проект однако. Берем и фиксим.


    M>PS. ИМХО

    M>Зря вы себя в рамки HTML загоняете: всё равно выглядеть будет не как в браузере, всё равно руками интерфейс писать никто не будет — будут дизайнером пользоваться (кстати дизайнер вообще будет?), сто пудов ваш HTML со временем выродится в свой особенный диалект. MS ведь не просто так изобретает XAML.

    А зачем отдельный дизайнер? Предполагается что Visual Studio HTML дизайнера будет достаточно на те случи когда
    дизайнер имеет смысл. На остальные случаи я думаю достаочно будет шаблонов-визардов. Типа dialog based app,
    frame/view based app. и т.д.
    Я как раз и не хочу изобретать XAML, а попытаться обойтись HTML — на самом деле как средство
    описания layout HTML/CSS очень мощная и гибкая конструкция.
    Единственное "но" — для использования на все 100 он должен быть встраиваемым.
  • Re[11]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 08.07.05 16:50
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    CS>> Просто интересно в чем конкретно заключается это "внимательно"?


    A>Внимательно это значит раньше я просто поверил тебе на слово, что там должен быть SysTreeView32, а сейчас проверил.


    CS>>Т.к. BlockNote я писал самолично то зуб тебе даю что слева (Project Folder) стоит TreeView. Но Spy++ тебе показывает нечто другое . Это subclassing называется и есть три способа установления истинного класса окна.


    A>Ладно верю, что там TeeView subclassing. Не верю, что TreeView Сам по себе плохой. См. ниже.


    CS>>Чего-то ты не туда куда-то смотришь...

    CS>>Смотрим здесь

    A>А, ОК. Был не прав, но тебе от этого только хуже


    CS>>Меня тут справедливо поправили: Custom Draw и animation работает — не работает animation при double-buffering (WS_EX_COMPOSITE) — единственный известный штатный способ устранения flickering в Tree View.


    A>>>Я вот сейчас скачал новую версию Janus http://www.rsdn.ru/janus/RAHSetup1_1_4.zip

    A>>>Для отображения дерева сообщений там АФАИК используется custom draw listview написаный Владом, но ни он, ни даже Internet Explorer_Server не мигают. И ИМХО Влад подвига не совешал, просто всё более-менее грамотно сделал.
    A>>>Может дело не в ужасном мерзком HWND, а в кривых руках некоторых личностей ?

    CS>>Ну видишь ты же сам и говоришь что свои controls — это оно.


    A>Нет, не оно см. ниже.


    CS>>у меня вся Гармонь не мигает вкупе с HTML и alpha blending. А уж стартует и памяти кушает...


    A>Стандартные контролы никогда не кушали много памяти.


    CS>>ОТВЕТ: как бы это сказать помягше ... мне за мои GUI деньги платят — думаю не обидно будет?


    A>Я же тебе не говорю брость всё. Я сказал подумай ещё. Кроме того деньги платят это факт не качества, а востребованности. Есть множетство откровенно ужаных библиотек для которых прото нет конкурентов.


    CS>>А если серьезно то я советы такого уровня аргументации выслушиваю со вниманием от людей показывающих пальцем на нечто и говорящих "вот этот GUI сделал я!".

    CS>>Уж не обессудь.

    A>Вобщем вот что я тебе скажу, друг мой. Есть большая разница мужду написанием контрола с нуля и custom draw контролом. Ниже ссылочка угадай на что... Хе-хе на custom draw tree-view который выглядит как ваш (ну не совсем так же, но очень похоже, во всяком случае рисовательная сложность та же) и не мигает. При попытке ответить на вопрос, почему я за 25 мин соорудил такую классную вешь, а твои гуру выпустили мигающий продукт, я к сожалению склоняюсь к мысли, что это тот случай, где не я такой умный, а они такие не умные.


    Слушай, ну сделай ты
    a) gradient background у дерева.
    b) поставь его на непрямоугольное окно.

    а потом уже говори "но очень похоже, во всяком случае рисовательная сложность та же"

    а так это все дилетантски как-то выглядит.

    A>TreeViewCustomDrawTest


    Спасибо: давай я тебя сведу с разрабочиками. Каску одень только. Они в Москве.
    И кстати набирали народ насколько я знаю.

    A>Кстати стиль WS_EX_COMPOSITE я не нашёл. В принципе как можно убедится Spy++ даже если он и есть, он не используется


    Я ж и говорю — он не работает.

    A>Тут видишь ли какое дело. Когда ты ссылаешься свой авторитет, я думаю, а авторитет ли это для меня. И когда ты называешь людей которые делают фликерящие контролы очень умными, я начинаю сомневается, в том, что они действительно очень умные, тем более что их дерево просто неправильно рисуется


    Конечно нет. Безымянных авторитетов не бывает.
    Re[13]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 08.07.05 16:56
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>Как согласуется это твое "Использовать универсальную графическую библиотеку там просто необходимо." (Например Harmonia) и твое же "Народу нужны только HWND"?


    Универсальная библиотека имеет один интерфейс (в смысле использования, а не вснешнего вида) на всех платформах, но конкретные реализации под платформы модет быть разная. Например под линукс нет HWND, это не повод и под Windows обходится без них.

    A>>Другое дело, что какую именно и как она будет внутри устроена... CorelDRAW 12 например выходит в Win и Mac версиях, но все контролы в CorelDRAW родные. Я не думаю, что в Corel сидят ребята глупее чем в Microsoft.


    CS>Просто Corel беднее. Не могут себе позволить хороших специалистов по UI и usability


    Интуитивно понятный интерфейс это предсказуемый интерфейс. Используя стандартные контролы я предлагаю пользователю знакомую схему. Как я понял у тебя к стандартным контролам по функциональности нет претензий. Единственное что я услышал, это то что они медленно рисуются. Со знанием дела тебе заявляю — это не так. Они рисуются быстро если их использовать правильно.

    CS>кстати, мое частное мнение: c точки зрения usability Xara в разы сильнее.


    Возможно. Но суть в том, что коменде Корел удалось создать очень сложный интерфейс на основе стандартных контролов и я не вижу никаких недостатков этого подхода. Adobe тоже бедные родственники? А Вот Adobe Reader использует стандартные контролы там где это уместно.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[14]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 08.07.05 18:36
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    CS>>Как согласуется это твое "Использовать универсальную графическую библиотеку там просто необходимо." (Например Harmonia) и твое же "Народу нужны только HWND"?


    A>Универсальная библиотека имеет один интерфейс (в смысле использования, а не вснешнего вида) на всех платформах, но конкретные реализации под платформы модет быть разная. Например под линукс нет HWND, это не повод и под Windows обходится без них.


    Microsoft в Avalon уходит от HWND. Т.е. наверное все таки он есть этот "повод и под Windows обходится без них"?


    A>>>Другое дело, что какую именно и как она будет внутри устроена... CorelDRAW 12 например выходит в Win и Mac версиях, но все контролы в CorelDRAW родные. Я не думаю, что в Corel сидят ребята глупее чем в Microsoft.


    CS>>Просто Corel беднее. Не могут себе позволить хороших специалистов по UI и usability


    A>Интуитивно понятный интерфейс это предсказуемый интерфейс. Используя стандартные контролы я предлагаю пользователю знакомую схему. Как я понял у тебя к стандартным контролам по функциональности нет претензий. Единственное что я услышал, это то что они медленно рисуются. Со знанием дела тебе заявляю — это не так. Они рисуются быстро если их использовать правильно.


    Странно ты слушаешь. Я никогда не говорил что отдельно взятый control медленно рисуется.

    Я говорил и говорю про то что комплексная система состоящая из HWND тяжела и например не расчитана на полупрозрачность child window — сиречь имеет ограничения для определнных типов UI.

    Причина совершенно прозаическая: для отрисовки 20 HWND нужно в процессе rendering создать
    и управлять 20ю HDC. Не говоря уже о всяких HFONT и пр.
    У меня rendering всего окна делается за один проход и GDI ресурсы реюзаются.

    Я никогда не говорил и не говорю что Harmonia это панацея.
    Есть "морды лица" а есть приложения типа MS Office, MSN Messenger, KlipFolio
    EverNote где это нужно и оправдано.

    Вот например Nokia LifeBlog application:




    CS>>кстати, мое частное мнение: c точки зрения usability Xara в разы сильнее.


    A>Возможно. Но суть в том, что коменде Корел удалось создать очень сложный интерфейс на основе стандартных контролов и я не вижу никаких недостатков этого подхода. Adobe тоже бедные родственники? А Вот Adobe Reader использует стандартные контролы там где это уместно.


    А где неуместно там не демонстрирует.

    Как я понимаю вопрос основной состит в определении этой самой "уместности".

    Еще раз: стандартные средства платформы никто не отменял. Но у них есть принципиальные
    ограничения. Как и принципиальные достоинсва.

    Я говорю единтсвенное — наступает такой момент или появляется такая задача где
    HWND перестают работать. Собственно эта мысл не нова и известна так как
    Microsoft уже уперся в эти ограничения по самое "не хочу".
    Avalon ставит жирный крест на попытке использования HWND в .NET (WinForms).

    Sic transit gloria mundi.
    Re[12]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 08.07.05 22:25
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>Слушай, ну сделай ты

    CS>a) gradient background у дерева.

    Вообще-то он сделан.

    CS>b) поставь его на непрямоугольное окно.


    Пожалуйста. Качать по старой ссылке. TreeViewCustomDrawTest

    CS>а потом уже говори "но очень похоже, во всяком случае рисовательная сложность та же"


    А сейчас как?
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[15]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 08.07.05 23:05
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>Microsoft в Avalon уходит от HWND. Т.е. наверное все таки он есть этот "повод и под Windows обходится без них"?


    Да, конечно уходит. Вопрос почему? Потому ли что HWND это плохо? ИМХО скорее чтобы сделать .Net Framework действительно минимально зависимым от win32.

    CS>Я говорил и говорю про то что комплексная система состоящая из HWND тяжела и например не расчитана на полупрозрачность child window — сиречь имеет ограничения для определнных типов UI.


    А я говорю, что не тяжела. Полупрозрачность это вешь тяжёлая для GDI вообще и с контролами связана мало.

    CS>Причина совершенно прозаическая: для отрисовки 20 HWND нужно в процессе rendering создать

    CS>и управлять 20ю HDC. Не говоря уже о всяких HFONT и пр.
    CS>У меня rendering всего окна делается за один проход и GDI ресурсы реюзаются.

    Ты не прав. При отрисовке окна с 20 контролами 20 HDC одновременно не требуется. Более того, если у тебя 20 кнопок то создавать для каждой HFONT тоже не метод. В приложении редко используется более десятка шрифтов.

    A>>Возможно. Но суть в том, что коменде Корел удалось создать очень сложный интерфейс на основе стандартных контролов и я не вижу никаких недостатков этого подхода. Adobe тоже бедные родственники? А Вот Adobe Reader использует стандартные контролы там где это уместно.


    CS>А где неуместно там не демонстрирует.


    А ты пройдись Spy++ по Adobe Reader. Там свои только окна где отображаются документы и верхняя панель инструментов. Все диалоги системные.

    CS>Еще раз: стандартные средства платформы никто не отменял. Но у них есть принципиальные ограничения. Как и принципиальные достоинсва.

    CS>Я говорю единтсвенное — наступает такой момент или появляется такая задача где HWND перестают работать. Собственно эта мысл не нова и известна так как Microsoft уже уперся в эти ограничения по самое "не хочу".

    OK, приведи мне задачу, где HWND действительно не справляются. Только давай без экстрима типа AVI-ролика в качестве фона для ListView. Давай задачу которую действительно нельзя сделать с помошью HWND. Пока что все твои примеры отличались глюкавостью, но при этом я не увидел никаких преимуществ. Пустой EverNote отожрал при запуске 8Мб. Это ли легковестность?

    Более того, вся эта возня вокруг custom draw кажется мне ненужным излишеством. Если пользователь захочет чтобы всё было красиво, то он просто включит темы XP и всё будет красиво. Причём красиво везде и одинаково. Зачем EverNote навязывает мне сине-жёлтую гамму? Вот я хочу красно-белую под цвет своего, а не украинского флага! Как мне это сделать? Ну скачал я тему ХР, ну применил. Но EverNote на это плевать
    Custom draw хорош, когда элемент имеет визуальное отображение, как например ComboBox со шрифтами название каждого из которых написано своей гарнитурой, но красить приложение вопреки системным настройкам ИМХО большое зло. Для тебя custom draw регулярно используемый инструмент — я же отнушусь к нему с осторожностью.

    CS>Avalon ставит жирный крест на попытке использования HWND в .NET (WinForms).


    Нет, не ставит. Более того, у них серьёзные проблемы с отрисовкой прозрачности (которая тебя спросить в windowless пара пустяков), фактически они её не поддерживают и предлагают пользоваться функциями GDI.
    http://blogs.msdn.com/nickkramer/archive/2005/06/24/432517.aspx
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[6]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 08.07.05 23:12
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>А зачем отдельный дизайнер? Предполагается что Visual Studio HTML дизайнера будет достаточно на те случи когда

    CS>дизайнер имеет смысл. На остальные случаи я думаю достаочно будет шаблонов-визардов. Типа dialog based app,
    CS>frame/view based app. и т.д.

    Как мне соблюсти эти рекомендации
    http://msdn.microsoft.com/library/en-us/dnwue/html/ch14d.asp
    http://msdn.microsoft.com/library/en-us/dnwue/html/ch14e.asp
    с помошью твоей библиотеки?
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[13]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 08.07.05 23:21
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    CS>>Слушай, ну сделай ты

    CS>>a) gradient background у дерева.

    A>Вообще-то он сделан.


    CS>>b) поставь его на непрямоугольное окно.


    A>Пожалуйста. Качать по старой ссылке. TreeViewCustomDrawTest


    CS>>а потом уже говори "но очень похоже, во всяком случае рисовательная сложность та же"


    A>А сейчас как?


    У тебя
    1) нет анимации.
    2) при ресайзе плохо себя ведет border.
    3) при collapsing тем я вижу белый background.
    4) объяви окно главное окно layered.

    И можно считать что — да это такие же входные условия.
    Re[14]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 08.07.05 23:28
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>1) нет анимации.

    У EverNote её тоже нет.

    CS>2) при ресайзе плохо себя ведет border.

    Эту часть не я рисую. Можно border просто убрать, у EverNote его всё равно тоже нету.

    CS>3) при collapsing тем я вижу белый background.

    Как это? фон рисуется всегда целиком, там дыр быть не может.

    CS>4) объяви окно главное окно layered.

    У EverNote нет этого стиля.

    CS>И можно считать что — да это такие же входные условия.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[15]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 08.07.05 23:34
    Оценка:
    Здравствуйте, adontz, Вы писали:

    CS>>1) нет анимации.

    A>У EverNote её тоже нет.

    Хотя если добавить эффект развёртывания для меню и подсказок (был выключен), то появляется и анимация во всех TreeView, в том числе у EverNote и у меня.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[7]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 09.07.05 00:15
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    CS>>А зачем отдельный дизайнер? Предполагается что Visual Studio HTML дизайнера будет достаточно на те случи когда

    CS>>дизайнер имеет смысл. На остальные случаи я думаю достаочно будет шаблонов-визардов. Типа dialog based app,
    CS>>frame/view based app. и т.д.

    A>Как мне соблюсти эти рекомендации

    A>http://msdn.microsoft.com/library/en-us/dnwue/html/ch14d.asp
    A>http://msdn.microsoft.com/library/en-us/dnwue/html/ch14e.asp
    A>с помошью твоей библиотеки?

    я использую сейчас GetStockObject(DEFAULT_GUI_FONT) как и рекомендовано.

    в будущей System theme вообще все шрифты и размеры.
    будут системно зависимые. (Если пользователь захочет выбрать системную тему)

    Еще раз повторюсь: смотря какой тип UI тебе нужен.
    Для опрделенных целей и задач VB 6 рулит по прежнему например.
    Re[16]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 09.07.05 01:06
    Оценка:
    Здравствуйте, adontz, Вы писали:

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


    CS>>Microsoft в Avalon уходит от HWND. Т.е. наверное все таки он есть этот "повод и под Windows обходится без них"?


    A>Да, конечно уходит. Вопрос почему? Потому ли что HWND это плохо? ИМХО скорее чтобы сделать .Net Framework действительно минимально зависимым от win32.


    А зачем если в win32 все и так хорошо как ты говоришь?


    CS>>Я говорил и говорю про то что комплексная система состоящая из HWND тяжела и например не расчитана на полупрозрачность child window — сиречь имеет ограничения для определнных типов UI.


    A>А я говорю, что не тяжела. Полупрозрачность это вешь тяжёлая для GDI вообще и с контролами связана мало.


    Полупрозрачность к GDI никакого отношения не имеет. См. исходники Harmonia или спроси у McSeem2,
    От GDI там нужно уметь делать BitBlt и все.

    А вот к HWND имеет и очень даже. Система rendering в HWND устроена таким образом что
    практически не позволяет рисовать просвечивающие элементы.


    CS>>Причина совершенно прозаическая: для отрисовки 20 HWND нужно в процессе rendering создать

    CS>>и управлять 20ю HDC. Не говоря уже о всяких HFONT и пр.
    CS>>У меня rendering всего окна делается за один проход и GDI ресурсы реюзаются.

    A>Ты не прав. При отрисовке окна с 20 контролами 20 HDC одновременно не требуется. Более того, если у тебя 20 кнопок то создавать для каждой HFONT тоже не метод. В приложении редко используется более десятка шрифтов.


    Все зависит от класса окон. CS_CLASSDC, CS_OWNDC и т.д.
    Прежде чем рисовать HFONT окну надо где-то взять HFONT и выбрать
    его в HDC а потом в обратном порядке. И т.д.


    A>>>Возможно. Но суть в том, что коменде Корел удалось создать очень сложный интерфейс на основе стандартных контролов и я не вижу никаких недостатков этого подхода. Adobe тоже бедные родственники? А Вот Adobe Reader использует стандартные контролы там где это уместно.


    CS>>А где неуместно там не демонстрирует.


    A>А ты пройдись Spy++ по Adobe Reader. Там свои только окна где отображаются документы и верхняя панель инструментов. Все диалоги системные.


    И чего? О чем это говорит? Adobe Reader в принципе не UI rich application.
    Я теб привел кучу примеров где все наоборот.

    CS>>Еще раз: стандартные средства платформы никто не отменял. Но у них есть принципиальные ограничения. Как и принципиальные достоинсва.

    CS>>Я говорю единтсвенное — наступает такой момент или появляется такая задача где HWND перестают работать. Собственно эта мысл не нова и известна так как Microsoft уже уперся в эти ограничения по самое "не хочу".

    A>OK, приведи мне задачу, где HWND действительно не справляются. Только давай без экстрима типа AVI-ролика в качестве фона для ListView. Давай задачу которую действительно нельзя сделать с помошью HWND. Пока что все твои примеры отличались глюкавостью, но при этом я не увидел никаких преимуществ. Пустой EverNote отожрал при запуске 8Мб. Это ли легковестность?


    MS Office и MS Forms, IE, Opera, MSN, Windows Media Player, MS Money, KlipFolio,
    Avalon в конце концов.

    A>Более того, вся эта возня вокруг custom draw кажется мне ненужным излишеством. Если пользователь захочет чтобы всё было красиво, то он просто включит темы XP и всё будет красиво. Причём красиво везде и одинаково. Зачем EverNote навязывает мне сине-жёлтую гамму? Вот я хочу красно-белую под цвет своего, а не украинского флага! Как мне это сделать? Ну скачал я тему ХР, ну применил. Но EverNote на это плевать


    1) См. список выше.
    2) "темы XP и всё будет красиво". Эх-хе-хе...

    A>Custom draw хорош, когда элемент имеет визуальное отображение, как например ComboBox со шрифтами название каждого из которых написано своей гарнитурой, но красить приложение вопреки системным настройкам ИМХО большое зло. Для тебя custom draw регулярно используемый инструмент — я же отнушусь к нему с осторожностью.


    CS>>Avalon ставит жирный крест на попытке использования HWND в .NET (WinForms).


    A>Нет, не ставит. Более того, у них серьёзные проблемы с отрисовкой прозрачности (которая тебя спросить в windowless пара пустяков), фактически они её не поддерживают и предлагают пользоваться функциями GDI.

    A>http://blogs.msdn.com/nickkramer/archive/2005/06/24/432517.aspx

    Я так понимаю что ты невнимательно прочел...

    So every Avalon Window object is an hwnd. And it has to play by the rules that hwnds play by – inside that hwnd, Avalon can do all sorts of crazy stuff, but when it comes to other hwnds on the desktop, Avalon has to play by Win32 rules.


    Абсолютно то же самое что делает Harmonia. Только последней еще к тому же и .NET не нужен.
    Re[15]: Добавил Animation
    От: c-smile Канада http://terrainformatica.com
    Дата: 09.07.05 01:19
    Оценка:
    Здравствуйте, adontz, Вы писали:

    CS>>2) при ресайзе плохо себя ведет border.

    A>Эту часть не я рисую. Можно border просто убрать, у EverNote его всё равно тоже нету.

    А если он таки нужен? Это же часть стандартнаго HWND.

    И вообще глянь на Win Explorer. И скажи что в MS програмировать не умеют.

    CS>>3) при collapsing тем я вижу белый background.

    A>Как это? фон рисуется всегда целиком, там дыр быть не может.

    Тем не менее есть. У меня видеокарта средняя. видно здорово.

    CS>>4) объяви окно главное окно layered.

    A>У EverNote нет этого стиля.

    Значит есть setwindowregion.

    CS>>И можно считать что — да это такие же входные условия.
    Re[16]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 09.07.05 09:25
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>>>3) при collapsing тем я вижу белый background.

    A>>Как это? фон рисуется всегда целиком, там дыр быть не может.
    CS>Тем не менее есть. У меня видеокарта средняя. видно здорово.

    screenshot покажи.

    CS>>>4) объяви окно главное окно layered.

    A>>У EverNote нет этого стиля.
    CS>Значит есть setwindowregion.

    Это и у меня есть.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[17]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 09.07.05 09:38
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    A>>Да, конечно уходит. Вопрос почему? Потому ли что HWND это плохо? ИМХО скорее чтобы сделать .Net Framework действительно минимально зависимым от win32.


    CS>А зачем если в win32 все и так хорошо как ты говоришь?


    Затем, что он будет работать не только на win32

    A>>А я говорю, что не тяжела. Полупрозрачность это вешь тяжёлая для GDI вообще и с контролами связана мало.

    CS>Полупрозрачность к GDI никакого отношения не имеет. См. исходники Harmonia или спроси у McSeem2,
    CS>От GDI там нужно уметь делать BitBlt и все.

    То есть полупрозрачность ты делаешь ручками? А я тебе про AlphaBlend и всётакое говорю.

    CS>А вот к HWND имеет и очень даже. Система rendering в HWND устроена таким образом что практически не позволяет рисовать просвечивающие элементы.


    А как же регионы и layered windows?

    CS>Все зависит от класса окон. CS_CLASSDC, CS_OWNDC и т.д.

    CS>Прежде чем рисовать HFONT окну надо где-то взять HFONT и выбрать
    CS>его в HDC а потом в обратном порядке. И т.д.

    HFONT берется из WM_GETFONT

    CS>И чего? О чем это говорит? Adobe Reader в принципе не UI rich application.

    CS>Я теб привел кучу примеров где все наоборот.

    Ну вот, пошли уже отмазки rich UI, не rich UI. Какая разница? Я тебе говорю что есть два подхода при создании межплатформенной библиотеки, либо всё всегда рисовать самому, либо на каждой платформе пользоватся её родными средствами. Я выбираю второй путь, как юолеее правильный.

    A>>OK, приведи мне задачу, где HWND действительно не справляются.


    CS>MS Office и MS Forms, IE, Opera, MSN, Windows Media Player, MS Money, KlipFolio,

    CS>Avalon в конце концов.

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

    CS>1) См. список выше.


    MS Office темы поддерживает, навязывает только цвет выделения, что нехорошо, но пережить можно, IE темы поддерживает, Opera MSN WMP в топку. Ты бы ещё ICQ вспомнил как пример интерфейса. Вот у Миранды — это интерфейс!

    CS>2) "темы XP и всё будет красиво". Эх-хе-хе...


    По крайней мере везде одинаково.

    A>>Нет, не ставит. Более того, у них серьёзные проблемы с отрисовкой прозрачности (которая тебя спросить в windowless пара пустяков), фактически они её не поддерживают и предлагают пользоваться функциями GDI.

    A>>http://blogs.msdn.com/nickkramer/archive/2005/06/24/432517.aspx

    CS>Я так понимаю что ты невнимательно прочел...

    CS>

    CS>So every Avalon Window object is an hwnd. And it has to play by the rules that hwnds play by – inside that hwnd, Avalon can do all sorts of crazy stuff, but when it comes to other hwnds on the desktop, Avalon has to play by Win32 rules.


    Это ты невнимательноп прочёл

    We currently have a number of timing issues – if you resize or move the window at the wrong time, you can get into the situation where the application stops painting itself. You can also get rendering turds outside of the window, where the window used to be (these can be fixed by getting the background window to repaint, but not by moving the layered window over the turd). We're working on fixing these issues, not clear we’ll be able to fix it completely for XP due to limitations in Win32, but we should be able to do it for Windows Server 2003 SP1 and Longhorn.
    We don’t really support transparency color keys or plan to, because Avalon can't guarantee we render the exact color you asked for, particularly when hardware accelerated. There’s cases, for example, where we render 0x0000001 instead of 0x000000 – human eye sees both as black, but Win32 sees them very differently.


    CS>Абсолютно то же самое что делает Harmonia. Только последней еще к тому же и .NET не нужен.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[16]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 09.07.05 09:44
    Оценка:
    Здравствуйте, c-smile, Вы писали:

    CS>И вообще глянь на Win Explorer. И скажи что в MS програмировать не умеют.


    Если двигать только его правую границу (размер дерева соответственно не меняется), то ничего не мигает. Тут дело в другом. Дерево папок это частный случай, система расшмряема и там может быть любое окно, так что перерисовывают его не от хорошей жизни, а для совместимости с глюками 3rd party extensions. Если внимательно поглядеть, то можно убедится, что его ручками заставляют перерисоваться. В MS решили, что лучше помигать, зато в статике больше глючных утилит будут работать. Решили ИМХО правильно — из двух зол...
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[17]: Добавил Animation
    От: Mamut Швеция http://dmitriid.com
    Дата: 09.07.05 10:27
    Оценка:
    CS>>>>3) при collapsing тем я вижу белый background.
    A>>>Как это? фон рисуется всегда целиком, там дыр быть не может.
    CS>>Тем не менее есть. У меня видеокарта средняя. видно здорово.

    A>screenshot покажи.


    У меня тоже появляется. Здесь ухитрился словить экстремальный момент при expanding:


    При коллапсинг скорости мышечной реакции не хватает Но белый фон виден


    dmitriid.comGitHubLinkedIn
    Re[18]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 09.07.05 12:53
    Оценка:
    Здравствуйте, Mamut, Вы писали:

    M>У меня тоже появляется. Здесь ухитрился словить экстремальный момент при expanding:

    M>

    Да, если отключены темы ХР и включена анимация, то иногда, в момент пока узел разворачивается всё заполняется белым фоном. Честно говоря из десятка раз увидел это всего 2 раза. Наверное глюк
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[19]: Добавил Animation
    От: Mamut Швеция http://dmitriid.com
    Дата: 09.07.05 13:26
    Оценка:
    M>>У меня тоже появляется. Здесь ухитрился словить экстремальный момент при expanding:
    [image skipped]
    A>Да, если отключены темы ХР и включена анимация, то иногда, в момент пока узел разворачивается всё заполняется белым фоном. Честно говоря из десятка раз увидел это всего 2 раза. Наверное глюк

    Верно, темы отключены, но эффект стабильно проявляется как при разворачивании, так и при сворачивании узлов —


    dmitriid.comGitHubLinkedIn
    Re[20]: Добавил Animation
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 09.07.05 14:05
    Оценка:
    Здравствуйте, Mamut, Вы писали:

    M>Верно, темы отключены, но эффект стабильно проявляется как при разворачивании, так и при сворачивании узлов —


    Ну вот, а у меня не стабильно, хотя иногда всё таки проявляется. Вообще в custom draw tree-view можно явно задать цвет фона (в частности вместо белого у тебя будет скажем красный). На градиентную заливку его судя по всему не расчитывали.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[2]: Harmonia/C++
    От: Аноним  
    Дата: 08.12.06 02:27
    Оценка:
    Здравствуйте, c-smile, Вы писали:

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


    CS>FYI: Начал перевод Harmonia на C++.

    А где можно увидеть сие чудо ?
    Re[4]: Harmonia GUI Framework
    От: fddima  
    Дата: 08.12.06 10:53
    Оценка:
    Здравствуйте, Mamut, Вы писали:

    M>Хых. Теперь я знаю, с каим инструментарием в зубах я буду в очередной раз переписывать свой проект с нуля

    А почему не на ырланге с тиклем
    Re[3]: Harmonia/C++
    От: c-smile Канада http://terrainformatica.com
    Дата: 09.12.06 04:24
    Оценка: :)
    Здравствуйте, Аноним, Вы писали:

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


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


    CS>>FYI: Начал перевод Harmonia на C++.

    А>А где можно увидеть сие чудо ?

    http://terrainformatica.com/htmlayout/
    Re: Harmonia GUI Framework
    От: newb  
    Дата: 12.12.06 03:43
    Оценка:
    Пытаюсь использовать сабж, но что-то плохо получается.
    Проект (скажем, каталог дисков, пример выдуманный, но структура приложения такая же) на WTL, хочется получить следущее:
    1. Слева treeview:
    содержит:
    Фильмы
    Комедии
    Боевики
    Мелодрамы
    Музыка
    Попса
    Рок
    Классика
    2. Сплиттер
    3. Собственно показываем список дисков: в две колонки, строк по 10, для каждого диска показываем картинку (можно из внешнего файла) и какую-то информацию о нем.

    Все данные будут браться из БД, т.е. необходимо все строить динамически.
    Очень желательно без внешних htm`ок. В крайнем случае брать их из ресурсов.
    Можно ли каким-нибудь образом использовать фреймы, чтобы построить treeview один раз в OnCreate, например.

    Как быть с русским языком: попробовал root.set_html("<html><head></head><body>Привет !</body></html>");
    Выдал крякозябры. Добавления чарсета не помогло.


    Подскажите, пожалуйста, в каком направлении двигаться.
    Re[2]: Harmonia GUI Framework
    От: Аноним  
    Дата: 14.12.06 09:50
    Оценка:
    Здравствуйте, newb, Вы писали:

    N>Пытаюсь использовать сабж, но что-то плохо получается.

    Ладно, видно не судьба
    Re: Harmonia GUI Framework
    От: ЯпонИц Россия www.yaponiz.com
    Дата: 24.12.06 08:29
    Оценка:
    Не получается её скомпилировать. Выдает вот такую ошибку:

    c:\dmd\bin\dmd.exe -c -O -release harmonia\string.d -ofharmonia\string.obj
    harmonia\string.d(138): Error: cannot implicitly convert expression (this.chars)
    of type wchar[] to wchar*
    harmonia\string.d(140): Error: cannot implicitly convert expression (pattern) of
    type wchar[] to wchar*


    Версия D самая последняя. Как бороться?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.