Pomoc za LibreOfficeDev 26.8
Wótwisujucy wót togo, co cośo dojśpiś, móžośo jadno ze slědujucych póstupowanjow wubraś, aby skripty Python w LibreOfficeDev wuwjadł.
Skripty w aktualnem procesu LibreOfficeDev wuwjasć: Skripty Python se z procesa LibreOfficeDev wuwjedu,gaž meni abo rozšyrjenje APSO wužywaśo, aby wužywaŕske skripty wuwołał, kótarež su w zarědniku skriptow Python skłaźone. Móžośo teke shell APSO Python wužywaś, aby skripty Python interaktiwnje wuwjadł.
Skripty separatnje wót procesa LibreOfficeDev wuwjasć: Skripty Python se z eksternego procesa wuwjedu, kótaryž se z běžnym procesom LibreOfficeDev z pomocu pipe abo socket zwězujo.
Jolic cośo skripty w procesu LibreOfficeDev wuwjasć, pórucujo se, rozšyrjenje APSO (Alternative Script Organizer for Python) instalěrowaś. Ale, aby skripty Python zwenka LibreOfficeDev wuwijał, móžośo swóju preferěrowanu IDE wubraś.
Nejlažčejša móžnosć, aby z napóranim skriptow w LibreOfficeDev zachopił, jo instalěrowanje rozšyrjenja APSO. Wócyńśo pó instalaciji komponentu LibreOfficeDev a źiśo k (rozšyrjenje APSO njejo pśełožone do serbskeju rěcowu, togodla se engelski znamjenjowy rjeśazk pokazujo)
Źiśo w głownem woknje APSO k
Abo wócynjaśo APSO z pomocu standardneje tastoweje skrotconki Alt + ⇧ + F11.
Něnto móžośo zachopiś pśikaze Python zapódawaś a shell wótpowědne wudaśe wudawa, za tym až jo se kužda kodowa smužka wuwjadła.
Aby biblioteku ScriptForge wužywał, musyśo metodu CreateScriptService importěrowaś, z kótarejuž móžośo pśistup k słužbam dostaś, kótarež biblioteka k dispoziciji staja. Slědujucy pśikład słužbu Basic wužywa, aby pólo powěźeńki pokazał.
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello!")
Aby pśikład górjejce wuwjadł, zapódajśo kuždu smužku jadnu pó drugej do pówjercha Python a tłocćo tastu Enter, za tym až sćo kuždu kodowu smužku zapódał.
Něnto móžośo zachopiś, pśikaze Python z pomocu słužbow ScriptForge wuwjasć. Slědujuca kodowy kusk na pśikład słužbu UI wužywa, aby prozny dokument Writer napórał.
ui = CreateScriptService("UI")
doc = ui.CreateDocument("Writer")
Móžośo swójske dataje Python napóraś a je ze swójim preferěrowanym tekstowym editorom wobźěłaś. Pózdźej móžośo je w komponenśe LibreOfficeDev wuwołaś.
Prědny kšac jo wuslěźiś, źož su se waše wužywaŕske skripty składli. Lej za to bok pomocy Organizacija a městno skriptow Python.
Něnto móžośo tekstowu dataju w zarědniku swójich wužywaŕskich skriptow Python napóraś, na pśikład mój_skript.py a zachopśo swóje skripty pisaś.
Pśiducy jo jadnory pśikład, kótaryž se numerisku gódnotu z cele Calc wobstarujo a ju wó 1 pówušujo. Zapódajśo jadnorje slědujucy kod do dataje mój_skript.py.
from scriptforge import CreateScriptService
doc = CreateScriptService("Calc")
def increment_cell(args=None):
value = doc.GetValue("A1")
value += 1
doc.SetValue("A1", value)
g_exportedScripts = (increment_cell, )
Toś ten pśikład funkciju increment_cell napórajo. Źiwajśo na to, až g_exportedScript jo tupel, kótaryž k wěsći da, kótare funkcije se w LibreOfficeDev ako wužywaŕske skripty pokazuju.
Aby toś ten skript z dokumenta Calc wuwjadł:
Napórajśo abo wócyńśo dataju Calc.
Zapódajśo někaku numerisku gódnotu do cele "A1" w aktualnej tabeli.
Źiśo k .
Wubjeŕśo Móje makra – mój_skript w selektorje biblioteki. Wubjeŕśo funkciju increment_cell pód lisćinu .
Klikniśo na Wuwjasć. Źiwajśo na to, až jo se gódnota w celi "A1" wó 1 pówušyła.
Móžośo teke APSO wužywaś, aby skripty Python na pódobnu wašnju wuwjadł:
Źiśo nejpjerwjej k , aby APSO wócynił.
Nawigěrujśo w lisćinje makrow do .
Klikniśo na .
Prědny kšac, aby se skripty ze separatnego procesa wuwjadli, jo, zarědnik namakaś, źož LibreOfficeDev jo instalěrowany. Daju někotare móžnosći, aby wy to cynił, ale ScriptForge malsnu móžnosć k dispoziciji staja, aby instalacisku sćažku identificěrował. Wócyńśo za to shell Python APSO a zapódajśo:
from scriptforge import CreateScriptService
fs = CreateScriptService("FileSystem")
fs.FileNaming = "SYS"
inst_dir = fs.InstallFolder
print(inst_dir)
Wudaśe koda górjejce jo bazowy zapis, źož LibreOfficeDev jo instalěrowany. Něnto musyśo rezultěrowacej sćažce pódzarědnik "program" pśidaś. To jo bazowy zarědnik, z kótaregož skripty Python ze separatnego procesa wuwjeźośo.
Wujźmy na přikład z togo, až /usr/lib/libreoffice/ ako wuslědk wuwjeźenja górnego koda dostawaśo. Pótom musyśo /usr/lib/libreoffice/program ako sćažku wužywaś, aby swóje skripty Python wuwjadł.
Aby skripty Python ze separatnego procesa wuwjadł, musyśo LibreOfficeDev z mało pśidatnymi nastajenjami startowaś, kótarež mě datowego kanala abo hostmě a port pódawaju, pśez kótarež eksterny proces z komponentowym procesom LibreOfficeDev komunicěrujo.
Wócyńśo pśikazowu smužku swójogo źěłowego systema, nawigěrujśo k programowemu zarědnikoju swójogo instalaciskego zapisa a zapódajśo:
Na Linux / Mac OS:
libreoffice --accept='pipe,name=aPipeName;urp;'
Na Windows:
soffice.exe --accept='socket,host=localhost,port=2021;urp;'
ako flatpak:
flatpak run org.libreOffice.LibreOffice accept='socket,host=localhost,port=2021;urp;'
Jaden z pśikazow górjejce buźo LibreOfficeDev z wócynjonym komunikaciskim kanalom startowaś, aby druge procese powěsći z nim wuměniś mógli.
Źiwajśo na to, až pjerwjejšny pśikład startowy centrum LibreOfficeDev wócynja. Jolic cośo wěstu komponentu wócyniś, na pśikład Writer, móžośo pśikazoju wobznamjenje --writer pśidaś:
./soffice --writer --accept='socket,host=localhost,port=2021;urp;'
Źiwajśo na parametry mě abo host a port, kótarež su w toś tom pśikłaźe aPipeName abo localhost resp. 2021.
Startujśo pówjerch Python z programowego zarědnika w swójej instalaciskej sćažce LibreOfficeDev. Slědujśo kšacam górjejce, aby zgónił, kak móžośo swóju instalacisku sćažku namakaś.
Na Linux / Mac OS:
$ cd /usr/lib/libreoffice/program
$ python
Na Windows:
$ cd C:\\Program Files\\LibreOffice\\program\
$ python.exe
To shell Python wócynijo a něnto móžośo zachopiś pśikaze zapódawaś, kótarež se pśez LibreOfficeDev wuwjedu. Ale nejpjerwjej musyśo zwisk pipe abo socket konfigurěrowaś. Instrukcija ScriptForge() dołojce musy se pśed prědnym wuwołanim CreateScriptService() wuwjasć.
Wuwjeźćo jaden ze slědujuceju kodowu:
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(pipe='aPipeName')
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(hostname='localhost', port=2021)
Cytajśo wótrězk PYTHONPATH nastajiś dołojce, jolic daju zmólki pśi importěrowanju scriptforge.py abo uno.py.
Druga kodowa smužka górjejce nastajenja pipe abo host a port definěrujo, aby shell Python mógał z běžnym procesom LibreOfficeDev komunicěrowaś, kótaryž jo se ze samskimi nastajenjami pipe abo socket wócynił.
Něnto móžośo druge pśikaze Python wuwjasć a mógu z procesom LibreOfficeDev komunicěrowaś. Na pśikład:
ui = CreateScriptService("UI")
bas = CreateScriptService("Basic")
doc = ui.OpenDocument("~/Documents/myFile.ods")
bas.MsgBox(doc.DocumentType)
Wótwisujucy wót konfiguracije wašogo źěłowego systema musyśo wokolinowu wariablu PYTHONPATH stajiś, aby biblioteku scriptforge.py importěrował, kótaraž se ze swójogo boka import biblioteki uno.py pomina.
Wužywajśo datajowy pytański rěd swójogo źěłowego systema, aby zapis zwěsćił, źož toś tej wobej dataji stej.
Pśi instalaciji Ubuntu na pśikład móžotej wobej dataji how byś:
scriptforge.py: Jo w /usr/lib/libreoffice/program
uno.py: Jo w /usr/lib/python3/dist-packages
Stajśo w toś tom paźe wokolinowu wariablu PYTHONPATH kaž slědujo, nježli až interpreter Python startujośo:
export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages
Městno toś teju datajow jo za kuždy źěłowy system a instalacisku metodu LibreOfficeDev rozdźělne.