Biblioteka ScriptForge je w Basic kaž tež w Python k dispoziciji. Najwjace słužbow, metodow a kajkosćow we woběmaj programowanskimaj rěčomaj identisce funguje. Ale rozdźělow we funkciskim wašnju dla dyrbja wužiwarjo ScriptForge někotre wosebitosće biblioteki znać, hdyž Python wužiwaja:
Mjena metodow a kajkosćow W Python dadźa so wšě metody a kajkosće w małych pismikach, kapitelkach abo w nutřkownych majusklach wužiwać.
Argumenty: Wšě argumenty klučowych słowow, kotrež so metodam přepodawaja, so w małych pismikach pisaja.
Datumy: Wšě datumowe objekty so jako natiwny objekty Python datetime.datetime přepodawaja a wróćeja.
Matriksy: Jednodimensionalne matriksy so jako tupele přepodawaja a wróćeja (kotrež su njezměnite objekty). Dwudimensionalne matriksy so jako tupele tupelow přepodawaja a wróćeja.
None: Klučowe słowo Python None je ekwiwalent klučowych słowow Basic Null, Empty abo Nothing.
Objekty UNO: Wšě struktury UNO so bjez změnow mjez Basic a Python wuměnjeja.
Debugging: Hdyž zmylk w skriptach Python wustupuje, kotrež ScriptForge wužiwaja, pokazuje zmylkowa zdźělenka, kotraž so přez staplowe wuwjedźenje k dispoziciji staja, kodowu linku, kotraž je zmylk wuwabiła. W zmylkowych zdźělenkach Basic tute informacije njepokazuja.
Zapodawanske pokiwy Python – nastupajo zjawne metody a kajkosće słužbow ScriptForge – móžeće wot IDE dóstać, kotrež tajku funkciju podpěruja. Wizuelnje, mjeztym wužiwarski skript wobdźěłujeće:
Hdyž myšku nad objektowu instancu, metodu abo kajkosć pohibujeće, so podrobne wopisanje pokazuje.
"." za objektowej instancu wuběranske polo pokazuje, kotrež wšě tykački nalistuja, kotrež su k dispoziciji.
Spinki za mjenom metody wudospołnjenje koda startuja, hdyž jeho argumenty pokazuja.
Zapodawanske pokiwy so pokazuja, hdyž so metody a kajkosće z wulkimi a małymi pismikami wobdźěłuja.
Skripty Python w %PRODUCTNANE wuwjesć
Wotwisujo wot toho, što chceće docpěć, móžeće jedne ze slědowacych postupowanjow wubrać, zo byšće skripty Python w LibreOfficeDev wuwjedł.
Skripty w aktualnym procesu LibreOfficeDev wuwjesć: Skripty Python so z procesa LibreOfficeDev wuwjedu, hdyž meni Nastroje – Makra – Makro wuwjesć… abo rozšěrjenje APSO wužiwaće, zo byšće wužiwarske skripty wuwołał, kotrež su w rjadowaku skriptow Python składowane. Móžeće tež shell APSO Python wužiwać, zo byšće skripty Python interaktiwnje wuwjedł.
Skripty separatnje wot procesa LibreOfficeDev wuwjesć: Skripty Python so z eksterneho procesa wuwjedu, kotryž so z běžnym procesom LibreOfficeDev z pomocu pipe abo socket zwjazuje.
Jeli chceće skripty znutřka procesa LibreOfficeDev wuwjesć, poruča so, rozšěrjenje APSO (Alternative Script Organizer for Python) instalować. Ale, zo byšće skripty Python zwonka LibreOfficeDev wuwiwał, móžeće swoju preferowanu IDE wubrać.
Skripty znutřka procesa LibreOfficeDev wuwjesć
Rozšěrjenje APSO wužiwać
Najlóša móžnosć, zo byšće z wutworjenjom skriptow w LibreOfficeDev započał, je instalowanje rozšěrjenja APSO. Wočińće po instalaciji komponentu LibreOfficeDev a dźiće k Nastroje – Makra – Makra rjadować – Python… (rozšěrjenje APSO do serbskeju rěčow přełožene njeje, tohodla so jendźelski znamješkowy rjećazk pokazuje)
Dźiće we hłownym woknje APSO k Menu – Python shell
Abo wočinjeće APSO z pomocu standardneje tastoweje skrótšenki Alt + ⇧ + F11.
Nětko móžeće započeć přikazy Python zapodawać a shell wotpowědne wudaće wudawa, po tym zo je so kóžda kodowa linka wuwjedła.
Zo byšće biblioteku ScriptForge wužiwał, dyrbiće metodu CreateScriptService importować, z kotrejž móžeće přistup k słužbam dóstać, kotrež biblioteka k dispoziciji staja. Slědowacy přikład słužbu Basic wužiwa, zo by zdźělenske polo pokazał.
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello!")
Zo byšće přikład horjeka wuwjedł, zapodajće kóždu linku jednu po druhej do shella Python, a tłóčće tastu Enter, po tym zo sće kóždu kodowu linku zapodał.
Nětko móžeće započeć přikazy Python z pomocu słužbow ScriptForge wuwjesć. Slědowaca kodowa šlipka na přikład słužbu UI wužiwa, zo by prózdny dokument Writer wutworiła.
Móžeće swójske dataje Python wutworić a je ze swojim preferowanym tekstowym editorom wobdźěłać. Pozdźišo móžeće je w komponenće LibreOfficeDev wuwołać.
Nětko móžeće tekstowu dataju w rjadowaku swojich wužiwarskich skriptow Python wutworić, na přikład mój_skript.py a započńće swoje skripty pisać.
Přichodny je jednory přikład, kotryž sej numerisku hódnotu z cele Calc wobstaruje a ju wo 1 powyšuje. Zapodajće prosće slědowacy 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, )
Tutón přikład funkciju increment_cell wutworja. Dźiwajće na to, zo g_exportedScript je tupel, kotryž zdźěla, kotre funkcije so w LibreOfficeDev jako wužiwarske skripty pokazuja.
Zo byšće tutón skript z dokumenta Calc wuwjedł:
Wutworće abo wočińće dataju Calc.
Zapodajće někajku numerisku hódnotu do cele "A1" w aktualnej tabeli.
Dźiće k Nastroje – Makra – Makra wuwjesć….
Wubjerće Moje makra – mój_skript w selektorje biblioteki. Wubjerće funkciju increment_cell pod lisćinu Mjeno makra.
Klikńće na Wuwjesć. Dźiwajće na to, zo je so hódnota w celi "A1" wo 1 powyšiła.
Móžeće tež APSO wužiwać, zo byšće skripty Python na podobne wašnje wuwjedł:
Dźiće najprjedy k Nastroje – Makra – Organize Python Scripts, zo byšće APSO wočinił.
Nawigěrujće w lisćinje makrow do Moje makra – mój_skript – increment_cell.
Klikńće na Execute.
Skripty separatnje wot procesa LibreOfficeDev wuwjesć
Instalacisku šćežku postajić
Prěni krok, zo bychu so skripty ze separatneho procesa wuwjedli, je, rjadowak namakać, hdźež LibreOfficeDev je instalowany. Su wjacore móžnosće, zo byšće to činił, ale ScriptForge spěšnu móžnosć k dispoziciji staja, zo by instalacisku šćežku identifikował. Wočińće za to shell Python APSO a zapodajće:
Wudaće koda horjeka je bazowy zapis, hdźež LibreOfficeDev je instalowany. Nětko dyrbiće rezultowacej šćežce podrjadowak "program" přidać. To je bazowy rjadowak, z kotrehož skripty Python ze separatneho procesa wuwjedźeće.
Připušćmy na přikład, zo /usr/lib/libreoffice/ jako wuslědk wuwjedźenja hornjeho koda dóstawaće. Potom dyrbiće /usr/lib/libreoffice/program jako šćežku wužiwać, zo byšće swoje skripty Python wuwjedł.
LibreOfficeDev z nastajenjemi pipe abo socket startować
Zo byšće skripty Python ze separatneho procesa wuwjedł, dyrbiće LibreOfficeDev z mało přidatnymi nastajenjemi startować, kotrež mjeno datoweho kanala abo hostmjeno a port podawaja, přez kotrež eksterny proces z komponentowym procesom LibreOfficeDev komunikuje.
Wočińće přikazowu linku swojeho dźěłoweho systema, nawigěrujće k programowemu rjadowakej swojeho instalaciskeho zapisa a zapodajće:
flatpak run org.libreOffice.LibreOffice accept='socket,host=localhost,port=2021;urp;'
Jedyn z přikazow horjeka budźe LibreOfficeDev z wočinjenym komunikaciskim kanalom startować, zo bychu druhe procesy powěsće z nim wuměnić móhli.
Dźiwajće na to, zo předchadn přikład startowy centrum LibreOfficeDev wočinja. Jeli chceće wěstu komponentu wočinić, na přikład Writer, móžeće přikazej značku --writer přidać:
Dźiwajće na parametry mjeno abo host a port, kotrež su w tutym přikładźe aPipeName abo localhost resp. 2021.
Eksterny shell Python wuwjesć
Startujće powjerch Python z programoweho rjadowaka w swojej instalaciskej šćežce LibreOfficeDev. Slědujće krokam horjeka, zo byšće zhonił, kak móžeće swoju instalacisku šćež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 wočini a nětko móžeće započeć přikazy zapodawać, kotrež so přez LibreOfficeDev wuwjedu. Ale najprjedy dyrbiće zwisk pipe abo socket konfigurować. Instrukcija ScriptForge() deleka dyrbi so před prěnim wuwołanjom CreateScriptService() wuwjesć.
Wuwjedźće jedyn ze slědowaceju kodow:
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(pipe='aPipeName')
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(hostname='localhost', port=2021)
Čitajće wotrězk PYTHONPATH nastajić deleka, jeli su zmylki při importowanju scriptforge.py abo uno.py.
Druha kodowa linka horjeka nastajenja pipe abo host a port definuje, zo by shell Python móhł z běžnym procesom LibreOfficeDev komunikować, kotryž je so ze samsnymi nastajenjemi pipe abo socket wočinił.
Nětko móžeće druhe přikazy Python wuwjesć a móža z procesom LibreOfficeDev komunikować. Na přikład:
ui = CreateScriptService("UI")
bas = CreateScriptService("Basic")
doc = ui.OpenDocument("~/Documents/myFile.ods")
bas.MsgBox(doc.DocumentType)
PYTHONPATH nastajić
Wotwisujo wot konfiguracije wašeho dźěłoweho systema dyrbiće wokolinowu wariablu PYTHONPATH stajić, zo byšće biblioteku scriptforge.py importował, kotraž sej ze swojeje strony import biblioteki uno.py wužaduje.
Wužiwajće datajowy pytanski nastroj swojeho dźěłoweho systema, zo byšće zapis zwěsćił, hdźež tutej wobě dataji stej.
Při instalaciji Ubuntu na přikład móžetej wobě dataji tule być: