<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=XUL%2F%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82</id>
	<title>XUL/Первый проект - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=XUL%2F%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82"/>
	<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=XUL/%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82&amp;action=history"/>
	<updated>2026-10-12T23:39:42Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=XUL/%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82&amp;diff=241&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=XUL/%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82&amp;diff=241&amp;oldid=prev"/>
		<updated>2023-02-27T18:39:16Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 21:39, 27 февраля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=XUL/%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82&amp;diff=240&amp;oldid=prev</id>
		<title>lor&gt;Cetjs2: файл потерялся, эх ЕЩЕ С СОРРИМАКОВСКОЙ ЛОРВИКИ, НАВЕРНОЕ</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=XUL/%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82&amp;diff=240&amp;oldid=prev"/>
		<updated>2018-10-25T13:07:31Z</updated>

		<summary type="html">&lt;p&gt;файл потерялся, эх ЕЩЕ С СОРРИМАКОВСКОЙ ЛОРВИКИ, НАВЕРНОЕ&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Создадим каталог «'''example1'''» с типовой структурой XUL проекта, и разберёмся, что означает каждый файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
example1&lt;br /&gt;
       |-- application.ini&lt;br /&gt;
       |-- chrome&lt;br /&gt;
       |   |-- chrome.manifest&lt;br /&gt;
       |   |-- content&lt;br /&gt;
       |   |   `-- example1.xul&lt;br /&gt;
       |   `-- locale&lt;br /&gt;
       |       |-- en-US&lt;br /&gt;
       |       |   `-- example1.dtd&lt;br /&gt;
       |       `-- ru-RU&lt;br /&gt;
       |           `-- example1.dtd&lt;br /&gt;
       |-- components&lt;br /&gt;
       `-- defaults&lt;br /&gt;
           `-- preferences&lt;br /&gt;
               `-- prefs.js&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==application.ini==&lt;br /&gt;
«'''application.ini'''» - главный файл нашего проекта, с чтения которого начинается выполнение программы. В этом файле указывается имя проекта, дата сборки, автор, минимальная и максимальная версии Gecko для исполнения данного проекта. Строки, начинающеся со знака «''';'''» считаются комментарием. Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Имя проекта. Необходимое поле.&lt;br /&gt;
Name=example1&lt;br /&gt;
;&lt;br /&gt;
; Версия проекта. Необязательное поле.&lt;br /&gt;
Version=0.1.0&lt;br /&gt;
;&lt;br /&gt;
; Временной штамп времени сборки. Необходимое поле.&lt;br /&gt;
BuildID=2008090918&lt;br /&gt;
;&lt;br /&gt;
; Краткая заметка об авторских правах. Необязательное поле.&lt;br /&gt;
Copyright=Copyright (c) 2008 Me&lt;br /&gt;
;&lt;br /&gt;
; Уникальный идентификатор проекта. В качестве значения можно&lt;br /&gt;
; использовать UUID или формат имя_проекта@имя_организации.tld.&lt;br /&gt;
; UUID может быть сгенерирован, например, утилитой uuidgen, входящей в состав&lt;br /&gt;
; пакета e2fsprogs. Необязательное поле.&lt;br /&gt;
ID={bde97359-5ff3-4823-a833-f5e07093c1f2}&lt;br /&gt;
&lt;br /&gt;
[Gecko]&lt;br /&gt;
;&lt;br /&gt;
; Минимальная версия Gecko, необходимая для запуска приложения. Необходимое поле.&lt;br /&gt;
MinVersion=1.8&lt;br /&gt;
;&lt;br /&gt;
; Максимальная версия Gecko, необходимая для запуска приложения. Необязательное поле.&lt;br /&gt;
MaxVersion=1.9.0.*&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Каталог chrome==&lt;br /&gt;
&lt;br /&gt;
В каталоге «'''chrome'''» лежит файл-описание ресурсов проекта «'''chrome.manifest'''». В этом файле описываются расположение собственно .xul файлов для запуска, локали и скинов. Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
content example1 file:content/&lt;br /&gt;
locale  example1 en-US file:locale/en-US/&lt;br /&gt;
locale  example1 ru-RU file:locale/ru-RU/&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Путь к содержимому (XUL, JS, CSS файлам), которое необходимо исполнять, задаётся директивой '''content'''. Далее следует имя проекта, и наконец путь с префиксом. Префикс '''file:''' означает обычное физическое расположение файлов на диске в каталоге '''content'''. Префикс '''jar:''' указывает на расположение ресурса в JAR архиве в формате '''&amp;lt;nowiki&amp;gt;jar:&amp;lt;имя_файла.jar&amp;gt;!/&amp;lt;путь в архиве&amp;gt;&amp;lt;/nowiki&amp;gt;''', например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
content example jar:example1.jar!/content/&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JAR файл можно создать утилитой zip.&lt;br /&gt;
&lt;br /&gt;
Очевидно, что структура с прямым доступом к файлам удобна при разработке проекта, а использование JAR файлов удобно при распространении проекта, т.к. значительно уменьшает его размер.&lt;br /&gt;
&lt;br /&gt;
Путь к локализованным строкам проекта задаётся директивой '''locale'''. Далее следует имя проекта, локаль в формате LL-CC, где LL - код языка, CC - код страны, и физическое расположение файлов локализации, аналогично предыдущему случаю с '''content'''.&lt;br /&gt;
&lt;br /&gt;
==Каталог content==&lt;br /&gt;
&lt;br /&gt;
Здесь традиционно лежат собственно файлы описания интерфейса (.xul), файлы управления (.js) и файлы определяющие внешний вид ([http://developer.mozilla.org/en/CSS .css]). Главный файл интерфейса, который и будет исполняться (аналог функции main()) должен иметь имя, описанное в файле настроек prefs.js, который мы рассмотрим далее. В нашем случае этот каталог содержит только один файл описания интерфейса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet href=&amp;quot;chrome://global/skin/&amp;quot; type=&amp;quot;text/css&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE window SYSTEM &amp;quot;chrome://example1/locale/example1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;window&lt;br /&gt;
    title=&amp;quot;Example&amp;quot;&lt;br /&gt;
    width=&amp;quot;320&amp;quot;&lt;br /&gt;
    height=&amp;quot;200&amp;quot;&lt;br /&gt;
    xmlns=&amp;quot;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;label value=&amp;quot;&amp;amp;example1.helloworld;&amp;quot; flex=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/window&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы создаём окно размером 320x200, с заголовком &amp;quot;Example&amp;quot; и текстовым полем &amp;quot;Hello, world!&amp;quot;. Рассмотрим некоторые аспекты описания XUL интерфейса:&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;nowiki&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&amp;lt;/nowiki&amp;gt;''' определяет, что это XML файл.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;nowiki&amp;gt;&amp;lt;?xml-stylesheet href=&amp;quot;chrome://global/skin/&amp;quot; type=&amp;quot;text/css&amp;quot;?&amp;gt;&amp;lt;/nowiki&amp;gt;''' импортирует глобальную таблицу стилей из пакета-исполнителя (из xulrunner, например). Каждый XUL файл должен импортировать глобальную таблицу стилей. Локальные CSS файлы импортируются аналогично:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet href=&amp;quot;chrome://global/skin/&amp;quot; type=&amp;quot;text/css&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet href=&amp;quot;css/example1.css&amp;quot; type=&amp;quot;text/css&amp;quot;?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;nowiki&amp;gt;&amp;lt;!DOCTYPE window SYSTEM &amp;quot;chrome://example1/locale/example1.dtd&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;''' указывает где искать локализованные строки (без указания подкаталога-локали).&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;nowiki&amp;gt;&amp;lt;window ...&amp;gt;&amp;lt;/nowiki&amp;gt;''' описывает окно. Все элементы интерфейса должны описываться внутри окна. Одно окно или диалог должны описываться в одном .xul файле.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;nowiki&amp;gt;xmlns=&amp;quot;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;''' задаёт пространство имён для XML тегов, указывает что мы используем теги, относящиеся именно к XUL. Теперь, чтобы использовать теги из других пространств имён, эти пространства нужно указывать принудительно (например, «&amp;lt;nowiki&amp;gt;&amp;lt;html:div&amp;gt;&amp;lt;/nowiki&amp;gt;»)&lt;br /&gt;
&lt;br /&gt;
==Каталог locale==&lt;br /&gt;
&lt;br /&gt;
Здесь хранятся переводы проекта на различные языки.&lt;br /&gt;
&lt;br /&gt;
Содержит подкаталоги, каждый подкаталог имеет имя локали в формате LL-CC, описанном выше. В каждом подкаталоге должен лежать файл с локализованными строками, использующимися в проекте. Файл локализации есть ни что иное, как DTD файл, позволяющий определять синтаксис и семантику определённого XML файла, но в данном случае используется всего лишь как хранилище XML сущностей (entities). Файлы локализации, содержащие не-ASCII символы, должны храниться в UTF-8 виде. Как правило, один .dtd файл соответствет одному .xul файлу. Формат файла:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY example1.helloworld   &amp;quot;Hello, world!&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY ...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле локализации в каждой строке пишется структура, заключённая в угловые строки, и описывающая одну сущность (entity). В начале следует директива '''!ENTITY''', далее имя сущности, и перевод. Имя сущности используется в .xul файле для задания строки текста, например, на кнопке или элементе меню. Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;label value=&amp;quot;&amp;amp;example1.helloworld;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форма использования сущности в .xul файле абсолютно идентична сущностям в HTML - это амперсанд, имя сущности, точка с запятой.&lt;br /&gt;
&lt;br /&gt;
Чтобы привязать данный .xul файл к .dtd локализации, в .xul файле необходима специальная директива, описанная выше.&lt;br /&gt;
&lt;br /&gt;
==Каталог components==&lt;br /&gt;
&lt;br /&gt;
Здесь находятся различные XPCOM компоненты, необходимые для выполнения проекта. Пока мы не используем свои XPCOM компоненты, но об этом каталоге нужно помнить.&lt;br /&gt;
&lt;br /&gt;
==Каталог defaults==&lt;br /&gt;
&lt;br /&gt;
Содержит подкаталог preferences, в котором лежит JavaScript файл prefs.js, в котором описываются настройки для движка, которые Вы бы хотели поменять (строго говоря, интерпретатор считывает ''все'' .js файлы из этого каталога, так что файлов с настройками может быть несколько). Должен содержать как минимум функцию изменения параметра '''toolkit.defaultChromeURI''', например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
pref(&amp;quot;toolkit.defaultChromeURI&amp;quot;, &amp;quot;chrome://example1/content/example1.xul&amp;quot;);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этой директивой мы указываем движку главный файл интерфейса (аналогично функции main() в Си). Можно также поменять любую настройку движка (все настройки можно просмотреть в браузере Firefox, набрав «'''about:config'''» в строке адреса, или передав этот URL элементу ''&amp;lt;nowiki&amp;gt;&amp;lt;browser&amp;gt;&amp;lt;/nowiki&amp;gt;'' в любом XUL приложении). Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
pref(&amp;quot;browser.dom.window.dump.enabled&amp;quot;, true);&lt;br /&gt;
pref(&amp;quot;javascript.options.showInConsole&amp;quot;, true);&lt;br /&gt;
pref(&amp;quot;javascript.options.strict&amp;quot;, true);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Поехали!==&lt;br /&gt;
&lt;br /&gt;
Итак, заходим в каталог example1, и запускаем наш проект на выполнение с помощью xulrunner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# xulrunner ./application.ini&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
или используя Firefox 3:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# firefox -app ./application.ini&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вы должны увидеть окошко с надписью &amp;quot;Привет, мир!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:XUL]]&lt;/div&gt;</summary>
		<author><name>lor&gt;Cetjs2</name></author>
	</entry>
</feed>