Часто Задаваемые Вопросы по XUL
Оглавление
- У меня есть дополнение/поправка к этому FAQ. К кому мне обратиться?
- Информация для разработчиков
- Где в интернете можно узнать поподробнее про XUL и про проект Gecko/Mozilla?
- Русскоязычные ресурсы, связанные с Mozilla, XUL
- Существуют ли какие-нибудь community или RSS-feeds в LiveJournal, которые посвящены Mozilla?
- Кто использует Mozilla и Gecko в качестве платформы для своих приложений?
- Есть ли какие-нибудь книги про XUL, которые можно почитать?
- Первые шаги
- Среда разработки
- Неразобраные ссылки
- Как организовать сортировку дерева (tree)?
- TODO: Как работать с preferences Мозиллы? (about:config)
- TODO: Как работать с данными в формате RDF
- TODO: Если кратко, то что такое XUL, XBL, XPCOM и RDF, как они связаны и с чего из них мне начать?
У меня есть дополнение/поправка к этому FAQ. К кому мне обратиться?
Вы можете внести свои изменения прямо здесь. Зарегистрируйтесь на Xpoint (если вы этого еще не сделали) и нажмите на ссылку "редактировать" внизу этой страницы.
Информация для разработчиков
Где в интернете можно узнать поподробнее про XUL и про проект Gecko/Mozilla?
Основные ссылки на англоязычные материалы в интернете:
- http://www.mozilla.org/ — проект Mozilla
- http://www.mozdev.org/ — расширения к Mozilla (и другим Gecko браузерам) и standalone приложения написаные на XUL
- http://www.xulplanet.com/ — самый лучший и актуальный на данный момент набор информации по XUL и смежным технологиям
- http://xulplanet.com/ndeakin/ — информативный и актуальный журнал Нила Дикина (Neil Deakin), одного из авторов проекта XULPlanet
- http://www.mozillazine.org/ — новостной ресурс из мира Mozilla
- http://www.mozilla.org/projects/xpcom/ — страница на сайте Mozilla, посвященная XPCOM
- http://developer.mozilla.org/ — Mozilla Developer Center, сайт для разработчиков
- http://www.eightlines.com/neil/mozskin/ — туториал по созданию скинов/тем для Mozilla
Обратите также внимание на полезные ссылки форума.
Русскоязычные ресурсы, связанные с Mozilla, XUL
- http://www.mozilla.ru/ — русский сайт о Mozilla, поддерживеамый ALT Linux Team
- http://sidebar.ru/ — сайт посвященный sidebar-ам.
- http://nnberg.narod.ru/doc/xul-quickref/ — "Шпаргалка по XUL". Рускоязычный интерфейс к справочнику на xulplanet.com
- http://melenki.ru/ragnaar/mozskin/ — сайт, посвящённый созданию скинов для Mozilla. Обучение на примерах.
- http://xul.ru/ — Сайт о XUL и Mozilla - на русском языке (Yegor Turin).
Существуют ли какие-нибудь community или RSS-feeds в LiveJournal, которые посвящены Mozilla?
- http://www.livejournal.com/community/mozilla/ — активное англоязычное сообщество посвященное Mozilla
- http://www.livejournal.com/users/mozillazine/ — поток новостей журнала MozillaZine
- http://www.livejournal.com/users/mozillatips/ — приемы работы с Mozilla
- http://www.livejournal.com/users/neil_deakin/ — журнал Нила Дикина (Neil Deakin) экспортированый в LiveJournal при помощи RSS-feed
- http://www.livejournal.com/users/blogzilla/ — блог http://www.deftone.com/blogzilla/
Кто использует Mozilla и Gecko в качестве платформы для своих приложений?
Кроме расширений к имеющимся браузерам и интерфейсов к отдельным сайтам (например, sidebar для форума XPoint), существует достаточно много приложений использующих Mozilla и Gecko как платформу для разработки совершенно отдельных приложений, например, это среда разработки ActiveState Komodo или CAD/CAM система EngineerPRO/Wildfire. Более полный список поддерживается на сайте Mozilla.
Есть ли какие-нибудь книги про XUL, которые можно почитать?
Книг пока что не так много, но можно почитать следующее:
XUL
- Creating Applications with Mozilla (полная on-line версия)
- Rapid Application Development with Mozilla (свежая (ноябрь 2003), очень подробная(700 страниц), свободно-распространяемая, PDF)
- Creating XPCOM Components (HTML/PDF)
RDF
Первые шаги
Как написать программу "Hello, World!" на XUL?
Все очень просто — для того, чтобы начать программировать на XUL, достаточно открыть свой любимый текстовый редактор. Скопируйте туда следующий код:
<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window id="hello-world-window" title="Hello, World!" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <hbox> <button id="hello-world-button" label="Hello, World!" onclick="alert('Hello, World!')"/> </hbox> </window>
Запишите это все под именем hello_world.xul и откройте в одном из браузеров, использующих движок Gecko.
Среда разработки
Какими программами можно воспользоваться при создании и отладке XUL-приложений?
- http://www.jan-winkler.de/dev/e_rdfe.htm — редактор RDF
- http://www.w3.org/RDF/Validator/ — валидатор RDF
- http://www.hacksrus.com/~ginda/cview/ — показывает scriptable компоненты и интерфейсы XPCOM в вашей системе
Как отключить кеширование на протоколе chrome://?
По умолчанию все файлы (в первую очередь XUL-файлы), которые открываются через протокол chrome://, кешируются в профиле пользователя и при изменении на диске не читаются заново — приходится перезапускать браузер. Для разработки часто бывает полезно добавить в about:config новый ключ типа boolean с названием nglayout.debug.disable_xul_cache и значением true. После этого можно будет менять файлы и сразу же проверять результат, не перезапуская браузер.
Как отключить кеширование удаленных RDF-файлов?
RDFService всегда кеширует удаленные RDF-файлы. Отключить кеширование невозможно, но можно заставить RDF-файл обновиться. Для этого нужно привести его к интерфейсу nsIRDFRemoteDataSource и вызвать метод Refresh().
Как вывести дебаговую информацию, не мешая нормальной работе приложения?
alert() открывает новое модальное окно и поэтому плохо годится для отладки. Вместо него для вывода текстовых данных можно использовать метод window.dump(). По умолчанию этот метод ничего не делает, поэтому его вызов можно даже оставить в готовой программе. Разработчики могут поменять значение ключа browser.dom.window.dump.enabled в about:config на true, тогда window.dump() будет печатать текст в консольное окно. Если консольного окна по умолчанию нет (под Windows в частности), браузер можно запустить с параметром командной строки -console. Альтернативно можно в коммандной строке перенаправить вывод браузера в файл:
firefox.exe > dump_output
Неразобраные ссылки
- http://www.oreillynet.com/mozilla/ — Oreilly Mozilla <nop>DevCenter
- http://www.mozilla.org/roadmap.html — планы развития проекта Mozilla
- http://www.mozdev.org/notes/transition.html — переход от пакетов Mozilla к расширениям Firebird (FAQ)
- http://www.mozilla.org/university/resource_map.html — Mozilla University
Как организовать сортировку дерева (tree)?
Для динамической сортировки дерева
Нужно:
- Указать в тэге дерева,
tree, атрибутflags="dont-build-content". Это означает, что будет использоваться специальный конструктор для дерева. - В каждом тэге заголовка,
treecol, по которому желательно выполнять сортировку, указать атрибутsort="rdf:namespace#field_name".
Можно:
- Для наглядности в
treecolможно добавить атрибутclass="sortDirectionIndicator". Он добавляет значок в заголовке колонки, который будет индицировать текущий вид сортировки (ascending, descending, natural). - Для задания сортировки по умолчанию в соответствующей колонке указать атрибуты
sortDirection="ascending|descending|natural"иsortActive="true".
Пример:
<tree id="zoo_tree" flex="1" width="200" height="200" datasources="animals.rdf" ref="urn:animals:data" flags="dont-build-content"> <treecols> <treecol id="name" label="Name" flex="1" sort="rdf:zoo/rdf#name" class="sortDirectionIndicator"/> <treecol id="species" label="Species" primary="true" flex="5" sort="rdf:zoo/rdf#species" class="sortDirectionIndicator" sortDirection="ascending" sortActive="true"/> <treecol id="class" label="Class" flex="2" sort="rdf:zoo/rdf#class" class="sortDirectionIndicator"/> </treecols> <template> <treechildren> <treeitem uri="rdf:*"> <treerow> <treecell label="rdf:zoo/rdf#name"/> <treecell label="rdf:zoo/rdf#species"/> <treecell label="rdf:zoo/rdf#class"/> </treerow> </treeitem> </treechildren> </template> </tree>
![[logo]](/site/images/logo.jpg)