Rough idea
От: Зверёк Харьковский  
Дата: 01.06.06 23:03
Оценка: 2 (1) -1
Есть unix. В нем есть философия toolbox (каждая программа выполняет одну и только одну задачу, выход одной программы может быть подан на вход другой; что позволяет строит длинные эффективные цепочки программ). На мой вкус, идеология чудо как хороша. Проблема в том, что ее до сих пор никто не смог перенести на современные, двумерные программы, которые а) таки двумерны и б) не запускаются-отрабатывают-выключаются, а запускаются и работают, получают пользовательский ввод, что-то пользователю отображают, короче — continuous.

Ниже описана очень сырая идея, как это могло бы быть реализована. Точнее, даже не описана (руки не доходят), а просто приведен пример, как можно было бы реализовать простейший интернет-браузер на основе такой идеологии. Элемент такого 2d-тулбокса я называю (surprise! surprise!) виджетом. Роль средства для их объединения (которую в unix выполняет shell), пусть выполняет нечто html-подобное. Итак, пример (некоторые пояснения ниже).


файл browser.htmr:
<htmr>
    <widget src='line-input-autocomplete.htmr' id='address'>
    <widget src='html-render.htmr' id='page'>
    <widget src='http-client.htmr' id='http'>
    <widget src='browser-user-settings.htmr' id='options'>
    
    <script role ='links'>
        options.last_urls => address.autocomplete_source
        address.text => http.url
        address.text => options.input_url
        http.body => page.source
        page.link => http.url
    </script>
</htmr>




Пояснения
Есть файлы:
* line-input-autocomplete.htmr
* html-renderer.htmr
* http-client.htmr
* browser-user-setting.htmr
* browser.htmr

Роли их таковы:

line-input-autocomplete.htmr
* описана строка ввода с автокомплитом
* определен вход autocomplete_source, на который можно передать список строк или курсор БД для выборки такого списка, а контрол сам решит, чего показать в кач-ве autocomplete
* определен выход text, на который по нажатию Enter посылается текущее значение строки ввода

html-renderer.htmr
* описана отображалка html
* определен вход source, на который можно передать собственно html (В виде строки, или resource handle из которого можно прочитать эту строку)
* определен выход link на который при нажатии на гиперссылку подается ее адрес

http-client.htmr
* невизуальный виджет, инкапсулирует HTTP client
* описан вход url
* описаны различные выходы, в т.ч. выход body, на который подается тело http-ответа

browser-user-setting.htmr
* невизуальный виджет, инкапслуриует различные опции, какие могут быть у браузера
* в частности определен выход last_urls, на который подается список последних введеных юзером url
* определен также вход input_url, на который можно передать очередной введеный пользователем url для сохранения его в списке last_urls

browser.htmr
* подключены все эти виджеты (может быть также задан их размер, стили, расположение и т.п.
* установлены следующие связи между виджетами:
** выход options.last_urls связан со входом address.autocomplete_source. теперь адресная строка может показать последние введенные урлы и предложить их для автокомплита
** выход address.text соединен со входом http.url. теперь при нажатии enter в адресной строке HTTP-клиент начнет грузить страничку с этого урла
** выход address.text соединен со входом options.input_url. теперь при нажатии enter в адресной строке введенный url будет сохранен в списке последних
** выход http.body связан со входом page.html. теперь по загрузке какой-то части страницы она будет немедленно отображена
** выход page.link связан со входом http.url. теперь при нажатии на гиперссылку HTTP-клиент начнет грузить страничку с этого урла



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

Спасибо за внимание.
FAQ — це мiй ай-кью!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.