Здравствуйте. Написание макросов не является моей основной деятельностью и никогда не станет ей. Макрос потребовался в качестве дополнительного инструмента для организации, в которой я работаю. Решил запаковать его для удобного распространения и обновления. Написал небольшую инструкцию по компиляции простого расширения на Python. Используйте её, если будет уместно.
Для компиляции необходимо проделать следующие действия:
1. Скачиваем последнюю версию Extension Compiler на странице
https://wiki.openoffice.org/wiki/Extensions_PackagerПо сути это шаблон нового документа со встроенными макросами на Basic
2. Запускаем файл двойным щелчком мыши. OpenOffice предложит сохранить новый документ. Если вместо этого выскочило сообщение о том, что макросы заблокированы, потребуется разрешить их выполнение в Сервис->Параметры->Безопасность->Безопасность максросов указываем папку, в которой разрешаем выполнение макросов и запускаем файл из неё.
3. Сохраняем документ в папке с файлами будущего расширения использую имя приложения.
4. Запускаем сохраненный файл и отрываем макросы документа в Сервис->Максросы->Управление макросами-> LibreOffice Basic.. раскрываем список совпадающий с именем файлов и вложенный в него список Standard. Выбираем макрос Module1, нажимаем "Правка". Этот макрос должен содержать ваши инструкции для компиляции на языке Basic. Заменяем код на свой и сохраняем.
5. Запускаем компиляцию. Сам документ есть ничто иное как документация к Extension Compiler на английском языке. Помимо прочего она содержит в пункте 2.3 3 формы запуска компиляции. Выбираем форму по потребностям. У меня не получилось указать необходимую минимальную версию офисного пакета в форме компиляции под Openoffice и LibreOffice. При компиляции вылетала ошибка о некорректно указанной минимальной версии. Поэтому я использовал форму LibreOffice only. Указал минимальную версию 4.0(потому что нужна кнопка в панели расширений) и нажал кнопку Compile to LibreOffice only. Форма также может не сработать из-за некорректных настроек безопасностию При необходимости исправьте по аналогии с пунктом 2.
После нажатия кнопки мой документ перелистнулся в самое начало. Если у вас случилось то же самое, отмотайте его назад к форме и посмотрите на информацию в блоке "Compilation results". В случае успеха в блоке будет указано, какие файлы созданы в папке расширения. Иначе будет указана ошибка. Если причина ошибки неочевидна, убирайте из макроса компиляции инструкции, которые подозреваете в ошибке и пробуйте скомпилировать расширение повторно, пока компиляция не завершится без ошибок.
Ниже указал свой код с инструкциями для компиляции.
REM ***** BASIC *****
Option Explicit
Sub myExtension
'Блок описания: полное название расширения в рекомендованном документацией формате: org.openoffice.autor_name.extention_name
beginDescription("org.openoffice.ivanov42.MyFirstExtention", "1.0.0")
'Полное имя автора и ссылка на страницу с контактной информацией
setPublisherName("en", "Ivan Ivanov", "http://ivanov.ru/")
'Информация для автоматического обновления: путь, по которому будут храниться все версии приложения и информация для обновления
'После компиляции получаем 2 файла: .oxt(само расширение) и .xml(информация для автоматического обновления). Оба файла должны быть доступны по указанному пути.
'При выпуске новой версии, заливаем на сервер новый файл .oxt и заменяем файл .xml
beginUpdateInformation("direct", "direct")
setUpdateSource("http://ivanov.ru/upload/MyFirstExtention/", "http://ivanov.ru/upload/MyFirstExtention/")
endUpdateInformation
endDescription
'Блок подключения дополнительных библиотек. Я не использовал дополнительных библиотек, но чтобы расширение видело мой код,
'пришлось закинуть единственный файл с кодом в отдельную папку и подключить как внешнюю библиотеку
beginAnnexes
useLibrary("Python", "scripts/")
endAnnexes
'Блок элементов управления. Моё расширение имеет однуединственную функцию, которая должна запускаться с кнопки на панели инструментов в OpenOffice Writer
beginAddonUI
beginOfficeToolbar
beginButton
'Указал, что кнопка требуется только для текстовых документов
beginTitles("Writer")
setTitle("Format", "en")
endTitles
'Указал имя файла и название функции, которую нужно запустить по кнопке
setURL("Python", "scripts/common.py", "Main")
'В папку images положил 4 изображения: image518_16.bmp, image518_16h.bmp, image518_26.bmp, image518_26h.bmp размером 16x16px и 26x26px, соответственно
'Согласно документации достаточно одного изображения _16 в формате bmp или png
setImage("images/image518")
endButton
endOfficeToolbar
endAddonUI
End Sub
После установки расширения и перезапуска OpenOffice Writer на панели инструментов появится плавающая область с кнопкой расширения. Её нужно переместить в удобное место. Если вместо этого закрыть эту область, то кнопку будет нельзя восстановить даже повторной установкой расширения. Потребуется сбрасывать профиль пользователя OpenOffice.