Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 30, 2007 12:49:55

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Python как язык макросов для OOo

Вопрос о способах изучения сабжа.

В OOo Developer's Guide (есть такой PDF) по Python есть информация в основном только о том, что Python в OOo есть :). Английский, к сожалению, знаю из рук вон плохо, поэтому часто бывает очень трудно найти в инете нужную инфу.

Например, методом тыка написал макрос для Writer'а, который получает выделенный в настоящий момент текст и вставляет его в конец документа:

def GetSelection(arg):
    """Получает выделенный текст..."""
    model = XSCRIPTCONTEXT.getDocument()
    selection = model.getCurrentController().getSelection().getByIndex(0).getString()
    model.Text.End.String = selection
    return None
Вопрос: как быстро найти (например, на http://api.openoffice.org/) описание свойств и методов нужного объекта?

Например. Хочу понять, что же я получил у себя в переменной “selection”. Ищу XSCRIPTCONTEXT, получаю:
http://api.openoffice.org/docs/common/ref/com/sun/star/script/provider/XScriptContext.html
Очень хорошо. Перехожу по ссылке getDocument(), получаю объект XModel:
http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XModel.html
Очень хорошо. Перехожу по ссылке getCurrentController(), получаю объект XController:
http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XController.html
Очень хорошо. Однако метода getSelection() не наблюдаю вообще, т.е. приехали. Т.е. смотрю я не туда и ищу не то.

Чего я не понимаю, что делаю не правильно?
Какую информацию об объектах в данном случае можно получить в коде, программно?



Офлайн

#2 Окт. 1, 2007 08:40:56

RDX
От:
Зарегистрирован: 2007-06-25
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Python как язык макросов для OOo

Соболезную ибо сам в похожем положении..
от деволоперсгайд'а я вообще в шоке.
посмотри эти ссылки может поможет что..

http://kosh.datateamsys.com/~danny/OOo/
http://www.script-coding.info/Python/OOo_Macro.html

я многие вещи нашел тупым перебором…



Офлайн

#3 Окт. 1, 2007 12:18:06

umup
От:
Зарегистрирован: 2007-07-14
Сообщения: 53
Репутация: +  0  -
Профиль   Отправить e-mail  

Python как язык макросов для OOo

где можно найти простой пример : запустить Writer, открыть doc/rtf файл и записать в формате pdf. GUI открывать не обязательно. и чтобы работало в win/linux. или отдельно ООО конвертер в pdf. пробовал другие, но этот вроде лучше конвертирует. нужно пакетное конвертирование.



Отредактировано (Окт. 1, 2007 12:20:09)

Офлайн

#4 Окт. 1, 2007 16:29:09

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Python как язык макросов для OOo

RDX
Ясно :). Кстати, как исследовать уже полученные объекты в готовых примерах, я вроде бы понял. Если такой объект превратить в строку функцией str(), то все интерфейсы, которые он поддерживает, вроде видны. А зная названия этих интерфейсов, можно довольно быстро найти их на http://api.openoffice.org/.
Другой вопрос - как быстро найти способ реализации какой-то своей конкретной задачи ;).

umup
Видимо, нужно запускать ООо в режиме “слушания” из командной строки, а затем подключаться к нему, как описано по ссылке http://www.script-coding.info/Python/OOo_Macro.html. Так что без окрывания GUI наверное не получится. Как дать команду “Save As” из Питона, к сожалению, без понятия…



Офлайн

#5 Окт. 2, 2007 13:05:25

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Python как язык макросов для OOo

umup
где можно найти простой пример : запустить Writer, открыть doc/rtf файл и записать в формате pdf. GUI открывать не обязательно. и чтобы работало в win/linux. или отдельно ООО конвертер в pdf. пробовал другие, но этот вроде лучше конвертирует. нужно пакетное конвертирование.
Я пару месяцев назад писал скрипт, который сохраняет текст из writer в html и отправляет его в качестве тела письма через thunderbird. Посмотри, может найдешь что полезное :) В pdf, думаю, сохраняется аналогичным образом.
from com.sun.star.beans import PropertyValue
from com.sun.star.io import XOutputStream
from unohelper import Base
tmp_html = '/tmp/ooomsg.html'
class OutputStream( Base, XOutputStream ):
    def __init__( self ):
        self.closed = 0
    def closeOutput(self):
        self.closed = 1
    def writeBytes( self, seq ):
        sys.stdout.write( seq.value )
    def flush( self ):
        pass
def toHtml():
    filterName = "HTML (StarWriter)"
    outProps = (
        PropertyValue( "FilterName" , 0, filterName , 0 ),
        PropertyValue( "Overwrite" , 0, True , 0 ),
        PropertyValue( "OutputStream", 0, OutputStream(), 0)
    )
    doc = XSCRIPTCONTEXT.getDocument()
    doc.storeToURL(u'file://' + tmp_html, outProps)
    os.system("thunderbird -compose body='%s'" % open(tmp_html, 'r').read())
    return None



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version