Xpoint
   [напомнить пароль]

Часто Задаваемые Вопросы по XUL

Оглавление

У меня есть дополнение/поправка к этому FAQ. К кому мне обратиться?

Вы можете внести свои изменения прямо здесь. Зарегистрируйтесь на Xpoint (если вы этого еще не сделали) и нажмите на ссылку "редактировать" внизу этой страницы.

Информация для разработчиков

Где в интернете можно узнать поподробнее про XUL и про проект Gecko/Mozilla?

Основные ссылки на англоязычные материалы в интернете:

Обратите также внимание на полезные ссылки форума.

Русскоязычные ресурсы, связанные с Mozilla, XUL

Существуют ли какие-нибудь community или RSS-feeds в LiveJournal, которые посвящены Mozilla?

Кто использует Mozilla и Gecko в качестве платформы для своих приложений?

Кроме расширений к имеющимся браузерам и интерфейсов к отдельным сайтам (например, sidebar для форума XPoint), существует достаточно много приложений использующих Mozilla и Gecko как платформу для разработки совершенно отдельных приложений, например, это среда разработки ActiveState Komodo или CAD/CAM система EngineerPRO/Wildfire. Более полный список поддерживается на сайте Mozilla.

Есть ли какие-нибудь книги про XUL, которые можно почитать?

Книг пока что не так много, но можно почитать следующее:

XUL

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-приложений?

Как отключить кеширование на протоколе 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

Неразобраные ссылки

Как организовать сортировку дерева (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>

TODO: Как работать с preferences Мозиллы? (about:config)

TODO: Как работать с данными в формате RDF

TODO: Если кратко, то что такое XUL, XBL, XPCOM и RDF, как они связаны и с чего из них мне начать?

Комментарии

2005-10-28 18:01:31 [обр] Сергей Чернышев[досье]
А что случилось с XPFE? почему остался один XUL?
спустя 1 час 9 минут [обр] Владимир Палант[досье]
XPFE изначально должен был означать набор инструментов, которые использовались для создания Mozilla Suite (что-то в этом роде, точное значение по-моему никто не знает). Термин не прижился, а сейчас и вовсе исчез — Mozilla Suite больше нет. Аналогичный набор инструментов в Firefox/Thunderbird обычно называют toolkit, но это название для внутреннего использования. Для разработчиков важнее термины Gecko и XULRunner, ими обозначают платформу. А в FAQ надо бы разобраться с терминологией...
Powered by POEM™ Engine Copyright © 2002-2005