Показаны сообщения с ярлыком Python. Показать все сообщения
Показаны сообщения с ярлыком Python. Показать все сообщения

среда, 8 апреля 2026 г.

Макросы на Python теперь можно создавать напрямую из LibreOffice

Долгие годы, фактически наверное с тех времён, когда LibreOffice был ещё OpenOffice.org, в его интерфейсе нельзя было нажатием кнопки создать макрос на Python. Макрос на Basic - можно и редактировать его можно, а на Python было нельзя, кнопки просто неактивные были (потому что за ними не было кода).

И вот Neil Roberts, новый TDF разработчик, сегодня исправил эту проблему (патч и патч). 

Теперь при нажатии кнопки "Создать", вы задаёте имя файлу, жмёте "ОК" и файл создается в некоем месте в каталоге LibreOffice, там где офис этот скрипт потом сможет найти и показать юзеру. Затем нажимаете кнопку "Правка" и файл откроется в стандартном редакторе вашей операционной системы, то есть ПОКА править скрипт придётся во внешнем редакторе.

Вариантов дальнейшего улучшения ситуации я вижу два:

  1. Интегрировать какую-то простую IDE для Python в сам LibreOffice и я предлагал в свое время на эту роль Thonny.
  2. Сделать настройку, чтобы можно было указать, в каком именно внешнем редакторе надо открыть файл Python.

По какому пути решит пойти Neil я пока не знаю, но я веду активную пропагандистскую работу в сторону того, чтобы макросы на Python можно было писать в LibreOffice "из коробки", не устанавливая отдельно APSO или внешнюю IDE.

суббота, 22 апреля 2023 г.

Замена старого генератора MSI установщика на новый скрипт на Pyhton

Внезапно оказалось, что для формирования MSI установщика (из которого LibreOffice можно установить на ОС Windows), у нас использовались скрипты на Perl! Да, оно работало, и вроде не плохо. Но вот решили ребята, что Perl нынче никто не знает, что-то править там  - это тухлый номер, и решили осовременить этот механизм, заменив скрипты на Perl на один скрипт написанный на Pyhton.

Вообще идея-то хорошая, мы реально избавляемся от гремучего Perl и должны заиметь намного более короткий и простой скрипт на Python.

Патч долго обсасывали, долго полировали, наконец сегодня его замержили. И тут же вылезла ошибка, которая не позволяет MSI формировать=)))

Единственно, я не понял, почему они Python скрипт добавили, а старый код не выкинули в одном патче.

А ещё мне очень не нравится, что такие вещи не освещаются никак. Не было никакой статьи, ни баг-репорта с предложением, ничего. Я случайно это увидел в нашем gerrit.

среда, 2 января 2019 г.

Макросы на Python в LibreOffice

Не все знают, что в LibreOffice можно использовать Python для написания макросов вместо Basic. Преимуществом будет в разы бОльшая производительность макроса. Недостатком - невозможность нормального написания и отладки макроса в IDE, встроенной в LibreOffice.
Самое первое, что нужно сделать, если вы захотите использовать Python для написания своих макросов (помимо знания самого Python'a) - это установить расширение APSO для возможности нормально управлять макросами, написанными на Python.
Второе - осилить вот эти статьи (на английском, к сожалению) и все ссылки с них на другие статьи: https://wiki.documentfoundation.org/Macros/Design_Guide, https://wiki.openoffice.org/wiki/Python.
Ах да, учитывайте, что LibreOffice таскает в своей поставке свой Python, уж не знаю какой версии. Однако, есть возможность использовать и внешний Python. Другое дело, что в этом случае будет возможность напороться на то, что ваш макрос на другом компьютере работать не будет из-за несовместимостей в версиях Python (я про 2.7 vs. 3.x).
По-хорошему, следовало бы развивать эту замечательную возможность в LibreOffice, начиная от приведения во вменяемый вид диалогов управления и организации макросов и внедрением в базовую поставку какой-нить простенькой IDE для Python, и заканчивая написанием полного хорошего руководства по написанию макросов на Python. Однако, к сожалению и как всегда, этим просто некому заниматься =(.
Update: иностранные товарищи подсказали мне, что внезапно они пишут справку по макросам на Python. Вот ссылка https://help.libreoffice.org/6.3/en-US/text/sbasic/python/main0000.html.