GUI либа для SPF ?

classic Classic list List threaded Threaded
17 messages Options
Reply | Threaded
Open this post in threaded view
|

GUI либа для SPF ?

Абдрахимов Илья-2

Привет Форт общественность !

Собственно почему до сих пор нет  в Дистрибутиве «стандартной GUI либы» ! Пример: win32forth

Собственно есть предложение «узаконить» одну из либ:

1)       ~ac ( насколько я понимаю базис, даже Андрей не использует)

2)       ~yz (- были (есть?) маленькие багги, + хорошая документация)

3)       ~day (работает , но автор молчит)

4)       ~nn ( - нет документации, - требуется адаптация к СПФ4 (я для себя решил эту проблему), + легко расширяема (движок ООП), + я несколько приложений сделал www.forth.org.ru/~ilya

 

Прошу высказываться !

Bye!

Илья

 

Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Andrey Cherezov
Добрый день, Абдрахимов Илья!

Ваше сообщение от 29.10.2006 23:23:

Собственно почему до сих пор нет  в Дистрибутиве «стандартной GUI либы» ! Пример: win32forth

Собственно есть предложение «узаконить» одну из либ:

1)       ~ac ( насколько я понимаю базис, даже Андрей не использует)

2)       ~yz (- были (есть?) маленькие багги, + хорошая документация)

3)       ~day (работает , но автор молчит)

4)       ~nn ( - нет документации, - требуется адаптация к СПФ4 (я для себя решил эту проблему), + легко расширяема (движок ООП), + я несколько приложений сделал www.forth.org.ru/~ilya

 

Прошу высказываться !

Верно, я на SPF делал только один сколько-нибудь сложный GUI - это был интерфейс деловара в 96м году,
он же потом стал интерфейсом Eserv/2 в 98м году (добавлением классов элементов и заменой дерева элементов).
И все. Указанные ~ac/...windows.f я делал уже позже 96 го года - начинал переработку
и выделение в либы интерфейсных элементов Eserv/2, но не доделал, т.к. мне стало
окончательно ясно, что будущее [моих программ] в веб-интерфейсах и веб-API.
Даже написал соотв.статью на эту тему (Компьютера опубликовала где-то в 97м).

За прошедшие годы я только еще больше укрепился в этом мнении, поэтому к GUI-либам не возвращался,
не считая очень мелких правок в Юриных Xmenu и SnmpMonitor (http://www.eserv.ru/SnmpMonitor).
При этом серверная часть всегда пишется на форте (под acWEB), а клиентская на DHTML. Вся логика
остается на сервере, поэтому особых знаний JS такое разделение ролей от меня не требует.
Примеры интерфейсов пары программ, написанных в фоне в сентябре-октябре сего года:
eChat (XMPP-клиент) - специализированный чат для одной местной домовой сети (150 юзеров),
Sklad - сетевой склад для одной дружественной фирмы :) http://www.forth.org.ru/~ac/webUI/
Весной в том же стиле написал интерфейс для спам-вирус-фильтра AAG для Агавы.
В eChat'е в отличие от львиной доли веб-чатов не производится постоянный опрос сервера
на предмет новых сообщений. Там вся работа в одном http-коннекте - сервер просто посылает
текстовые команды (в виде <script>functionName()</script>) браузеру - "пришло такое-то сообщение",
"у такого-то юзера изменилось состояние", и браузер выполняет отрисовку. С точки зрения Форта
совершенно без разницы, как реализовать слово CreateWindow - вызовом функции WinAPI или
выводом текста в сокет браузеру, поэтому предлагаю считать браузер GUI-библиотекой для Форта! :)
Или, если хотите, разновидностью X-Window-сервера (X11), который реализован в той же модели,
что и браузер, разве что на более низком уровне.

Представить себе форт-GUI-компоненты, которые были бы удобнее имеющихся DHTML-компонентов,
могу с трудом. Начнем с того, что все программы становятся сетевыми автоматически, и большинство
из них не требует установки на клиенте ничего кроме браузера. Или взять конкретные TreeView, ListView-
контролы: они берут данные откуда угодно по сети, в т.ч. подгружая по частям из разных мест,
легко стилизуются by CSS, готовая поддержка drag'n'drop, editable, автоматическое позиционирование
и масштабирование. Хоть кино вставляй в каждую ячейку, и все "бесплатно". Если дотягивать форт-либы
до этого уровня, то просто получится еще один веб-браузер. Но я не такой герой как Азамат (profiT),
и за такую работу не возьмусь. А для IE и FF мне не хватало только иконки в трее - этот пробел легко
ликвидируется ~yz Xmenu.

Веб-интерфейсы - мэйнстрим не только для сети, но уже и для локальных приложений. Все
новые интерфейсные разработки идут в этом русле - все эти XUL'ы, XAML'ы, WPF, а также десктопные
гаджеты различных производителей - все сидят на DHTML-движках. USER32 и GDI32 надежно забыты.

Где-то с год назад убедил в преимуществах веб-интерфейсов разработчиков прокси UserGate,
в результате UserGate тоже заменили обычный Winapi-GUI веб-интерфейсом, и на мой взгляд удачно.

Единственная область, где я могу понять использование не-html-интерфейсов - это трехмерные
игры. В остальных областях - себе дороже, imho.
Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Илья Абдрахимов

<кусь>

Андрей, насчёт Веб-интерфейса интересно ! А можно маленький пример ?

Bye!

Илья

Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Andrey Cherezov
Добрый день, Абдрахмов Илья!

Ваше сообщение от 31.10.2006 0:33:

<кусь>

Андрей, насчёт Веб-интерфейса интересно ! А можно маленький пример ?

Во. А разве не ты только что в чате этот вопрос задавал? :)
Reply | Threaded
Open this post in threaded view
|

Re[2]: GUI ÌÉÂÁ ÄÌÑ SPF ?

Yuriy Zhilovets
In reply to this post by Andrey Cherezov
Добрый день, Андрей!

У серверного решения есть только один недостаток - надо таскать за собой
браузер и сервер. А они довольно тяжелы. Если проект маленький, то слишком
большая нагрузка получается. Отдельных библиотек пока еще не придумали :-(

Вот недавно столкнулся с задачей - банальная программа, в основном один интерфейс,
НО должна работать с CD без установки :-(
Все браузеры сразу пролетают.

И кстати, в порядке критики. ForthScript уже жутко перегружен функциями ad
hoc. По-хорошему, из него надо выделять ядро, а все остальное подгружать
модулями.

Ю. Жиловец, /~yz



Reply | Threaded
Open this post in threaded view
|

Re[2]: GUI ÌÉÂÁ ÄÌÑ SPF ?

Yuriy Zhilovets
In reply to this post by Andrey Cherezov
Добрый день, Андрей!

В качестве еще одного преимущества использования браузеров упомяну
возможность автоматической генерации интерфейса по данным (например, из XML
с помощью XSLT в XUL или HTML)

Ю. Жиловец, /~yz



Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Ruvim Pinka
In reply to this post by Yuriy Zhilovets
Привет!
Почему же пролетают? Например Mozilla + плагин к ней — будут работать
с диска и без сети. (и преимущество web-based UI остается).

On 10/31/06, Yuriy Zhilovets <[hidden email]> wrote:
> Вот недавно столкнулся с задачей - банальная программа, в основном один интерфейс,
> НО должна работать с CD без установки :-(
> Все браузеры сразу пролетают.

--
Ruvim
Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Илья Абдрахимов
In reply to this post by Yuriy Zhilovets
Кстати Юрий ! А ты не собирался ввести поддержку ActiveX в winlib.f ?
Bye!
Илья
Reply | Threaded
Open this post in threaded view
|

Re[2]: GUI ÌÉÂÁ ÄÌÑ SPF ?

Yuriy Zhilovets
Привет, Илья!

АИ> Кстати Юрий ! А ты не собирался ввести поддержку ActiveX в winlib.f ?
Собирался когда-то, но понял, что это нереально.
Те, кто придумывал COM, OLE и ActiveX должны быть торжественно расстреляны
перед строем. Усложнить банальные вещи до полной непостижимости надо уметь.

Ю. Жиловец




Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Andrey Cherezov
In reply to this post by Ruvim Pinka
Добрый день, Ruvim Pinka!

Ваше сообщение от 31.10.2006 11:28:
> Почему же пролетают? Например Mozilla + плагин к ней — будут работать
> с диска и без сети. (и преимущество web-based UI остается).
>
> On 10/31/06, Yuriy Zhilovets <[hidden email]> wrote:
>  
>> Вот недавно столкнулся с задачей - банальная программа, в основном один интерфейс,
>> НО должна работать с CD без установки :-(
>> Все браузеры сразу пролетают.
>>    
К тому же где сейчас найдешь компьютер без браузера? Даже со старым
браузером
трудно найти. Я специально несколько лет тщательно берег IE55 на одном из
компьютеров, но и он не выжил. Через пару лет и IE6 станет редкостью.




Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Andrey Cherezov
In reply to this post by Yuriy Zhilovets
Добрый день, Yuriy Zhilovets!

Ваше сообщение от 31.10.2006 10:20:
> У серверного решения есть только один недостаток - надо таскать за собой
> браузер и сервер. А они довольно тяжелы. Если проект маленький, то слишком
> большая нагрузка получается. Отдельных библиотек пока еще не придумали :-(
>  
Да же в случае такой "большой" программы как eChat (около 50kb
форт-текста, не считая
xMenu) дистрибутив получается всего около 400кб.
> И кстати, в порядке критики. ForthScript уже жутко перегружен функциями ad
> hoc. По-хорошему, из него надо выделять ядро, а все остальное подгружать
> модулями.
>  
Если ты про тот ForthScript, который на sf.net, и который в интерфейсе
Eserv/3 (fs.exe),
то критика принимается, он устарел. Поэтому давно не используется (и
вообще CGI).
Во всех новых программах используется встроенный в acWEB форт
непосредственно.


Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Andrey Cherezov
In reply to this post by Yuriy Zhilovets
Добрый день, Yuriy Zhilovets!

Ваше сообщение от 31.10.2006 12:47:
> АИ> Кстати Юрий ! А ты не собирался ввести поддержку ActiveX в winlib.f ?
> Собирался когда-то, но понял, что это нереально.
> Те, кто придумывал COM, OLE и ActiveX должны быть торжественно расстреляны
> перед строем. Усложнить банальные вещи до полной непостижимости надо уметь.
>  
Вещи сложные, но постижимые. Ты что, уже забыл, что сам являешься
автором двух
реализаций COM/ActiveX-библиотек для SPF? :)


Reply | Threaded
Open this post in threaded view
|

Re[2]: GUI ÌÉÂÁ ÄÌÑ SPF ?

Yuriy Zhilovets
Добрый день, Андрей!

AC> Вещи сложные, но постижимые. Ты что, уже забыл, что сам являешься
AC> автором двух реализаций COM/ActiveX-библиотек для SPF? :)
Вот именно. Но до конца модель COM я так и не понял :-(

Ю. Жиловец, /~yz



Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

yGREK Heretix
In reply to this post by Yuriy Zhilovets
Greetings,

> И кстати, в порядке критики. ForthScript уже жутко перегружен функциями ad
> hoc. По-хорошему, из него надо выделять ядро, а все остальное подгружать
> модулями.

А кстати. Где этот ForthScript брать? Это тот что на
forth-script.sf.net? Там последнее обновление в 2004 году было,  и он
не компилится. Наверное где-то более новая версия есть?

---------
With best regards,
 ygrek   http://ygrek.org.ua

attachment0 (183 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Andrey Cherezov
Добрый день, ygrek!

Ваше сообщение от 31.10.2006 15:30:
> А кстати. Где этот ForthScript брать? Это тот что на
> forth-script.sf.net? Там последнее обновление в 2004 году было,  и он
> не компилится. Наверное где-то более новая версия есть?
>  
Да, есть немножко новее. Брать из Eserv/3.
На днях Костя собирал в компилябельную версию.
Сделать то же самое для CVS никак руки не дойдут. Добавлений там после 2004
немного - включены мои либы поддержки libxml2, sqlite3 (которые на spf
cvs есть)
и plugin записи логов из Eserv/3.


Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

azekeprofit
Administrator
In reply to this post by Andrey Cherezov
К вопросу о том что браузер может работать как GUI для Форта.

Конечно может. Собственно в последней выложенной версии "браузера"  
(http://www.forth.org.ru/~profit/) к этому даже есть зачатки:

<a onClick='2 2 * .'>Press</a>

Как я сейчас вижу, это единственное оправданное применение этой программе.


Reply | Threaded
Open this post in threaded view
|

Re: GUI либа для SPF ?

Dmitry Yakimov-2
In reply to this post by Andrey Cherezov
Привет,

Да, за web gui будущее и настоящее.

Так как я писал GUI на чистом портабельном форте, можно посмотреть
здесь:
http://www.activekitten.com/trac/spf/wiki/%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8SPF

А также много писал GUI на с++, то показалось интересным расколоть этот
орешек. И вот, готовится к выпуску forth gui библиотека, вкупе с новым
ОО движком от меня :), проверка концепции так сказать, сочетание разных
идей из разных gui библиотек разных языков.

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

Но я не изобретаю велосипеда, то есть это не vcl/mfc с введение еще
удного уровня абсракции на winapi - это обертка над winapi и довольно
удобная. Это близко к atl/wtl. Я смешал форт слова и win сообщения.

Пример кнопки в цвете примерно такой:

( Example of subclassed button )

CButton SUBCLASS CColorButton

VAR captured
/PS DEFS-ARRAY ps

: captureCursor
1 captured !
SUPER hWnd@ SetCapture DROP
0 0 SUPER hWnd@ InvalidateRect DROP
;

W: WM_LBUTTONDBLCLK
captureCursor
2DROP 2DROP 0
;

W: WM_LBUTTONDOWN
captureCursor
2DROP 2DROP 0
;

W: WM_MOUSEMOVE
2DROP 2DROP 0
;

W: WM_CAPTURECHANGED
0 captured !
0 0 SUPER hWnd@ InvalidateRect DROP
2DROP 2DROP 0
;

W: WM_LBUTTONUP
ReleaseCapture DROP
2DROP 2DROP 0
;

: getBrush ( -- br )
captured @
IF 0 0 0xFF
ELSE 0xFF 0 0
THEN
rgb
CreateSolidBrush DUP
SUPER -wthrow
;

: drawText ( hdc )
DUP TRANSPARENT SWAP SetBkMode DROP

DT_VCENTER DT_CENTER OR
SUPER getClientRect RECT-RP!
ROT ( hdc )
S" Subclassed button!" SWAP
ROT
DrawTextA DROP
4 RFREE
;

W: WM_PAINT
NIP NIP NIP
ps SWAP BeginPaint DUP ( hdc )

getBrush
SUPER getClientRect RECT-RP!
ROT FillRect SUPER -wthrow

drawText

4 RFREE
ps SUPER hWnd@ EndPaint DROP

0
;

;CLASS

Ну а обработка этой кнопки

C: BUTTON_ID ( code -- )
BN_CLICKED =
IF
S" трям!" SUPER showMessage
THEN
;

Не знаю - войдет это в 4.18 или нет. Хочу в фоне отточить концепт.

Andrey Cherezov wrote:

> Добрый день, Абдрахимов Илья!
>
> Ваше сообщение от 29.10.2006 23:23:
>>
>> Собственно почему до сих пор нет в Дистрибутиве «стандартной GUI
>> либы» ! Пример: win32forth
>>
>> Собственно есть предложение «узаконить» одну из либ:
>>
>> 1) ~ac ( насколько я понимаю базис, даже Андрей не использует)
>>
>> 2) ~yz (- были (есть?) маленькие багги, + хорошая документация)
>>
>> 3) ~day (работает , но автор молчит)
>>
>> 4) ~nn ( - нет документации, - требуется адаптация к СПФ4 (я для себя
>> решил эту проблему), + легко расширяема (движок ООП), + я несколько
>> приложений сделал www.forth.org.ru/~ilya
>> <http://www.forth.org.ru/%7Eilya>
>>
>> Прошу высказываться !
>>
> Верно, я на SPF делал только один сколько-нибудь сложный GUI - это был
> интерфейс деловара в 96м году,
> он же потом стал интерфейсом Eserv/2 в 98м году (добавлением классов
> элементов и заменой дерева элементов).
> И все. Указанные ~ac/...windows.f я делал уже позже 96 го года -
> начинал переработку
> и выделение в либы интерфейсных элементов Eserv/2, но не доделал, т.к.
> мне стало
> окончательно ясно, что будущее [моих программ] в веб-интерфейсах и
> веб-API.
> Даже написал соотв.статью на эту тему (Компьютера опубликовала где-то
> в 97м).
>
> За прошедшие годы я только еще больше укрепился в этом мнении, поэтому
> к GUI-либам не возвращался,
> не считая очень мелких правок в Юриных Xmenu и SnmpMonitor
> (http://www.eserv.ru/SnmpMonitor).
> При этом серверная часть всегда пишется на форте (под acWEB), а
> клиентская на DHTML. Вся логика
> остается на сервере, поэтому особых знаний JS такое разделение ролей
> от меня не требует.
> Примеры интерфейсов пары программ, написанных в фоне в
> сентябре-октябре сего года:
> eChat (XMPP-клиент) - специализированный чат для одной местной домовой
> сети (150 юзеров),
> Sklad - сетевой склад для одной дружественной фирмы :)
> http://www.forth.org.ru/~ac/webUI/
> Весной в том же стиле написал интерфейс для спам-вирус-фильтра AAG для
> Агавы.
> В eChat'е в отличие от львиной доли веб-чатов не производится
> постоянный опрос сервера
> на предмет новых сообщений. Там вся работа в одном http-коннекте -
> сервер просто посылает
> текстовые команды (в виде <script>functionName()</script>) браузеру -
> "пришло такое-то сообщение",
> "у такого-то юзера изменилось состояние", и браузер выполняет
> отрисовку. С точки зрения Форта
> совершенно без разницы, как реализовать слово CreateWindow - вызовом
> функции WinAPI или
> выводом текста в сокет браузеру, поэтому предлагаю считать браузер
> GUI-библиотекой для Форта! :)
> Или, если хотите, разновидностью X-Window-сервера (X11), который
> реализован в той же модели,
> что и браузер, разве что на более низком уровне.
>
> Представить себе форт-GUI-компоненты, которые были бы удобнее
> имеющихся DHTML-компонентов,
> могу с трудом. Начнем с того, что все программы становятся сетевыми
> автоматически, и большинство
> из них не требует установки на клиенте ничего кроме браузера. Или
> взять конкретные TreeView, ListView-
> контролы: они берут данные откуда угодно по сети, в т.ч. подгружая по
> частям из разных мест,
> легко стилизуются by CSS, готовая поддержка drag'n'drop, editable,
> автоматическое позиционирование
> и масштабирование. Хоть кино вставляй в каждую ячейку, и все
> "бесплатно". Если дотягивать форт-либы
> до этого уровня, то просто получится еще один веб-браузер. Но я не
> такой герой как Азамат (profiT),
> и за такую работу не возьмусь. А для IE и FF мне не хватало только
> иконки в трее - этот пробел легко
> ликвидируется ~yz Xmenu.
>
> Веб-интерфейсы - мэйнстрим не только для сети, но уже и для локальных
> приложений. Все
> новые интерфейсные разработки идут в этом русле - все эти XUL'ы,
> XAML'ы, WPF, а также десктопные
> гаджеты различных производителей - все сидят на DHTML-движках. USER32
> и GDI32 надежно забыты.
>
> Где-то с год назад убедил в преимуществах веб-интерфейсов
> разработчиков прокси UserGate,
> в результате UserGate тоже заменили обычный Winapi-GUI
> веб-интерфейсом, и на мой взгляд удачно.
>
> Единственная область, где я могу понять использование
> не-html-интерфейсов - это трехмерные
> игры. В остальных областях - себе дороже, imho.
> !DSPAM:4546056f175021804284693!
> ------------------------------------------------------------------------
Best Regards,
Dmitry Yakimov