Макрос Python для перечисления только выбранных формул в документе LibreOffice WriterPython

Программы на Python
Ответить
Anonymous
 Макрос Python для перечисления только выбранных формул в документе LibreOffice Writer

Сообщение Anonymous »

Я написал этот макрос Python для LibreOffice, который печатает (в терминале ASPO) внутренний код каждой «формулы» (т. е. элемента LibreOffice Math, включенного в содержимое LibreOffice Writer) моего документа LibreOffice Writer.
Как я могу изменить его, чтобы вместо этого получать тот же результат только для формул в текущем выборе? Мне удалось получить все фигуры на странице, но как узнать, находится ли данная фигура в текущем выделении?
Я использую LibreOffice 24.2.7.2 в Linux Mint 22.2.

Код: Выделить всё

import uno

def explore_objects_in_selection():
doc = XSCRIPTCONTEXT.getDocument()

selection = doc.getCurrentSelection()
# Useless variable in this code for now, equivalent to
#selection = doc.CurrentController.getSelection()

shapes = []
for draw_page in doc.getDrawPages():
# Maybe testing here if shape is in selection, but how?
for shape in draw_page:
shapes.append(shape)

for shape in shapes:
#if hasattr(shape, 'ShapeType'):
# In my doc, shape.ShapeType or shape.getShapeType()
# is 'FrameShape'
assert hasattr(shape.getEmbeddedObject(), 'Formula')
# Inner code of each formula in my doc
print(shape.getEmbeddedObject().Formula)
Как я уже говорил выше, на данный момент, даже если я выберу только часть документа Writer, все формулы будут напечатаны. Моя цель — напечатать только те, которые включены в выбранную область.


Подробнее здесь: https://stackoverflow.com/questions/798 ... writer-doc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»