UniFM v1.3 и более новые
Рассмотрим процесс добавления модулей на примере модуля VIArt. Этот модуль содержится в полной версии UniFM, в его состав входит:
- VectorModule - класс, отвечающий за открытие существующих векторных изображений
- VectorFileSource - класс, отвечающий за создание новых векторных изображений
- OptionsEditor - класс, отвечающий за хранение и редактирование настроек модуля
- Прочие классы модуля
- Папка lang - содержит файлы с локализованными строками, используемыми модулем
- Папка img - содержит значок модуля и векторную заставку
Модуль целиком находится в папке viart, всю эту папку нужно поместить в JAR с программой. Куда именно - зависит от разработчика модуля (для удобства лучше размещать все модули в папке modules). Эту операцию можно выполнить с помощью любого ZIP архиватора, например, с помощью самого UniFM.
Далее нужно добавить модуль в конфигурационные файлы, чтобы его можно было использовать. Начать лучше с добавления языковых файлов модуля в список языков и указания смещения для номеров строк. Это делается в файле lang/lang.ini в архиве программы. Это обычный INI файл, который содержит три секции:
- [List] - список языков в формате код_локали = Название_языка
- [Custom] - список дополнительных файлов, из которых будут загружаться списки строк, в формате путь/к/файлу/файл_со_строками = смещение
- Смещение прибавляется ко всем номерам строк, определенных в файле. То есть, если файл содержит строки с номерами от 0 до 100 и смещение равно 500, то эти строки будут загружены с номерами от 500 до 600.
- Последовательность %L заменяется на код локали, установленной в программе. То есть, если в программе установлен русский язык, имя strings_%L.ini превратится в strings_ru.ini.
- [Offset] - список смещений для строк, используемых классами программы, в формате маска_имен_классов = смещение
- Маска может содержать *, которые при сравнении обозначают любой набор символов. Для сравнения используются полные имена классов. Например, маске modules.viart.* соответствуют все классы модуля VIArt.
- Смещение прибавляется ко всем номерам строк, используемых классами, попадающими под маску. Например, если класс использует строки с номерами от 0 до 100 и смещение равно 500, то класс будет использовать строки с номерами от 500 до 600.
В случае с модулем VIArt в файл lang.ini нужно добавить следующее:
- в секции [Custom] - modules/viart/lang/strings_%L.ini = 500
- в секции [Offset] - modules.viart.* = 500
Смещение, в данном случае 500, можно выбирать произвольно, единственное, за чем следует следить - чтобы списки строк разных модулей не перекрывались, иначе можно получить на экране абракадабру.
Дальнейшие действия будут происходить в папке config.
Для того, чтобы модуль появился в списке модулей, его нужно добавить в файл modules.ini. За открытие файлов отвечают модули в секции [Application], за создание новых файлов - в секции [FileSource]. Все записи имеют формат имя.пакета.ИмяКласса = <имя_модуля | #номер_строки_с_именем_модуля> [, файл_значка [@ x, y, ширина, высота]]. При указании имени в виде номера строки его следует указывать без учета смещений - они учитываются позднее самой программой. При указани значка возможны варианты:
- icon.png - в качестве значка модуля будет использован файл img/icon.png целиком
- /modules/viart/img/icon.png - то же самое, только указан полный путь к файлу значка, вместо стандартной папки img
- icons.png @ 32, 0, 16, 16 - значок размером 16x16 будет вырезан из файла img/icons.png в точке (32, 0)
- /modules/icons.png @ 32, 0, 16, 16 - то же самое, только с указанием полного пути
Порядок следования модулей в этом файле сохраняется при выведении на экран списка модулей.
В случае с модулем VIArt в файл modules.ini нужно добавить следующее:
- в секции [Application] - modules.viart.VectorModule = # 133, icons.png @ 32, 0, 16, 16
- в секции [FileSource] - modules.viart.VectorFileSource = # 134, /modules/viart/img/icon.png
Для того, чтобы настройки модуля сохранялись при закрытии программы, а также для редактирования этих настроек, необходимо добавить в файл options.ini хранилище настроек модуля. Формат этого файла аналогичен файлу modules.ini, за тем исключением, что здесь не указываются значки. Для модуля VIArt добавляем modules.viart.OptionsEditor = # 133. Порядок следования модулей в этом файле также сохраняется при выведении на экран списка модулей.
На этом обязательная часть заканчивается - можно устанавливать и использовать UniFM с добавленным модулем VIArt. Однако новый модуль изначально не будет связан ни с одним расширением файла, и эту связь придется задавать через меню "Модули", что не слишком удобно. Другой вариант - задать связи в файле types.ini. Данный файл содержит три секции:
- [Open] - связь расширений файлов с модулями, которые используются для открытия таких файлов. Записи имеют формат список_расширений = модуль, где список_расширений содержит расширения без точки, разделенные пробелами либо табуляцией.
- [Create] - связь модулей с расширениями файлов, которые создаются такими модулями. Записи имеют формат, зеркальный относительно секции [Open], и разрешено только одно расширение вместо списка.
- [Special] - на эту секцию можно временно не обращать внимания...
Файл types.ini используется программой только при первом запуске, в дальнейшем список типов берется из RMS.
Для модуля VIArt добавляем:
- в секции [Open] - mvi = modules.image.VectorModule
- в секции [Create] - modules.viart.VectorFileSource = mvi
Используются технологии
uCoz