Makrá v OpenOffice.org 6/X. – Zdroje informácií

Július Pastierik  /  17. 10. 2007, 00:00

Chcete si naprogramovať nejaké makro, potrebujete zistiť premenné metódy, ktoré používa OpenOffice.org a neviete ako na to? Dnes si ukážeme niekoľko možností, ako to dokážete zistiť.

V predchádzajúcich 62 dieloch (áno, bolo ich presne 62) seriálu o programovaní makier sme si ukazovali rôzne makrá, pričom sme používali najrôznejšie premenné a metódy, ktoré nám ponúka OpenOffice.org. Samozrejme, mnohým už prišla na um otázka, ako a kde sa dajú získať podrobnejšie informácie.

Analýza premenných

Pokiaľ poznáme premennú, ktorú potrebujeme iba preskúmať, ponúka nám nástroj priamo jazyk StarOffice Basic. Objekty majú totiž v sebe zabudované aj dva reťazce, ktoré obsahujú základné informácie:

DBG_properties – reťazec, ktorý obsahuje všetky vlastnosti objektu
DBG_methods – reťazec, ktorý obsahuje všetky metódy objektu

Väčšina objektov má zabudovaný aj tretí reťazec DBG_supportedInterfaces, ktorý obsahuje informácie o rozhraniach, ktoré objekt používa.

Zoznam vlastností

Napríklad pomocou nasledujúceho makra dokážeme zistiť potrebné údaje pre objekt „ThisComponent.CurrentController.Frame“:



sub metody
 dim premenna as object
 premenna=ThisComponent.CurrentController.Frame

 msgbox premenna.DBG_properties
 msgbox premenna.DBG_methods
 msgbox premenna.DBG_supportedInterfaces
end sub

Nevýhoda tohto riešenia je taká, že chýba akýkoľvek bližší popis a preto mnohokrát nezostáva nič iné, iba metódou pokusov a omylov zisťovať, na čo sa ktorá vlastnosť alebo metóda používa.



Zoznam metód

Zoznam rozhraníAko vhodnejší spôsob sa javí použiť už hotové makro XrayTool, ktoré nielenže dokáže vypisovať tieto údaje, ale ich vypisuje aj v omnoho prehľadnejšej forme. Makro je možné stiahnuť v češtine zo stránok Tomáša Bílka, autora minule predstaveného makra TypoJTB. Jeho inštaláciu si schválne nebudeme uvádzať, pretože už musíme predpokladať, že čitatelia tohto seriálu to dokážu vykonať sami.

Po jeho nainštalovaní je potrebné ešte naprogramovať dve malé procedúry. V prvej budeme inicializovať makro XrayTool a v druhej zisťovať údaje o konkrétnej premennej. Osobne mám naprogramované tieto procedúry v nasledujúcej podobe (pre spúšťanie makra používam procedúru ZistiMetody):



XrayTool
sub LoadingLibrariesXrayTool
 BasicLibraries.LoadLibrary("XrayTool")
End Sub

sub ZistiMetody
 LoadingLibrariesXrayTool
 dim premenna as object

 REM Nastav podľa potreby
 premenna=ThisComponent

 xray premenna
end sub

Prechádzanie po štruktúre

Pri takomto nastavení dokážeme zistiť údaje o všetkých premenných, pretože makro XrayTool umožňuje prechádzať po štruktúre. Pokiaľ sa presunieme na nejakú vlastnosť alebo metódu (stačí kliknúť na príslušnom riadku), pomocou tlačidla „Prozkoumat vlastnost/metodu“ sa nám zobrazia buď jej obsah, alebo vnútorná štruktúra, ktorú môžeme skúmať ďalej. Pravdaže, nájdeme tu aj už spomínané premenné DBG_properties, DBG_methods a DBG_supportedInterfaces.

Popis vlastností

Pri vlastnom skúmaní máme možnosť prepínať medzi štyrmi údajmi – vlastnosťami, metódami, službami a rozhraním. Pokiaľ prechádzame po vnútornej štruktúre, príslušné premenné sa pamätajú v zozname zobrazených objektov, takže sa môžeme kedykoľvek medzi nimi rýchlo presúvať.

Zoznam zobrazených objektov

Dokumentácia

To, čo je však na makre XrayTool najzaujímavejšie, je spolupráca s „Software Development Kit (SDK)“. Pokiaľ si stiahneme a nainštalujeme túto dokumentáciu napr. zo servera ftp.linux.cz (žiaľ, je iba v angličtine), potom nám makro po stlačení tlačidla „SDK dokumentace (anglicky)“ dokáže zobraziť v nastavenom internetovom prehliadači informácie o príslušnej časti, pokiaľ sú k dispozícii (nie všetko sa v tejto dokumentácii nachádza). Nastavenie príslušných ciest (ako k inštalovanej dokumentácii, tak aj k internetovému prehliadaču) vykonáme cez tlačidlo „Nastavení“.

Nastavenie XrayTool

Okrem uvedených možností, môžeme pri programovaní použiť aj ďalšie dokumentácie, ktoré si môžeme stiahnuť z internetu. Okrem toho nám ako inšpirácia môžu poslúžiť aj iné makrá, kde nájdeme ukrytých nielen veľa dobrých myšlienok, ale aj praktické použitie niektorých metód.

Väzba na SDK

Na tomto mieste preto nesmieme zabudnúť na makrá od Andrewa Pitonyaka (www.pitonyak.org), ktoré sú naozaj na veľmi vysokej úrovni. Všetkým záujemcom odporúčam, aby si stiahli jeho dokumentáciu „Useful Macro Information For OpenOffice“, ktorá je viac než len malá programátorská príručka. Osobne som z tejto dokumentácie čerpal inšpiráciu pre on-line dopĺňanie nezalomiteľných medzier.

Ďalej nesmieme zabudnúť ani na základnú dokumentáciu k jazyku StarOffice Basic, ktorú na svojich stránkach docs.sun.com/app/docs/doc ponúka priamo firma SUN. Z osobných skúseností vám odporúčam stiahnuť si dokumentáciu pre StarOffice Basic od verzie 6 až po verziu 8. Prečo všetky tri? Preto, lebo počas vývoja OpenOffice.org už došlo k situácii, keď najprv platili veci, ktoré boli popísané v príručke pre „sedmičkovú“ verziu a potom sa vrátili k verzii „šestkovej“ (konkrétne sa jednalo o niektoré rozhrania pre dokumenty OpenOffice.org Calc).

Všetkým používateľom OpenOffice.org (t.j. nielen programátorom) odporúčam stránky wiki.services.openoffice.org/wiki/Documentation, kde nájdu podrobnú on-line dokumentáciu tohto produktu. Samozrejme, na svoje si prídu aj programátori, pretože časť „BASIC Guide“ je venovaná výhradne pre nich.

Týmto sme ukončili prvú veľkú časť seriálu o programovaní makier pre OpenOffice.org, v ktorej sme sa venovali predovšetkým modulu Writer. Nastal čas pre krátku dovolenku, aby si čitatelia mohli v pokoji stiahnuť a preštudovať odporučenú dokumentáciu a aby sme mohli načerpať nové inšpirácie pre pripravovanú druhú časť, ktorú budeme venovať ostatným modulom OpenOffice.org. Je pravda, že sme ani v rámci modulu Writer nespomenuli množstvo vecí (napr. makrá pre prácu s tabuľkami, makrá pre prácu so súbormi…), ale naozaj nie je možné uviesť všetko naraz.

Na úplný záver si však neodpustíme ešte jedno makro – a to makro, pomocou ktorého dokážeme spúšťať iné makro, ktorého názov mu odovzdáme ako parameter. Využitie tohto makra už ponecháme na láskavých čitateľov, ktorí si určite budú vedieť predstaviť napr. tabuľku, kde v jednej bunke zadajú názov a v druhej budú volať príslušné makro.

sub spusti_makro(nazov as string)
 dim document as object
 dim dispatcher as object

 document = ThisComponent.CurrentController.Frame
 dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

 dispatcher.executeDispatch(document, "vnd.sun.star.script:"+nazov+"?language=Basic&location=application", "", 0, Array())

end sub


Ako konkrétny príklad použitia si uvedieme volanie makra pre počítanie znakov:

sub volanie_ineho_makra
 spusti_makro("Vlastne_makra.Pocitanie_znakov.Pocitanie_znakov")
end sub

Internet
XrayTool – www.volny.cz/macrojtb/index.html

Software Development Kit (SDK) pre verziu OpenOffice.org 2.3.0 (OS Windows) – OOo-SDK_2.3_windows_install_en-US.exe

Dokumentácia Adrewa Pitonyaka – www.pitonyak.org/AndrewMacro.odt

Dokumentácia SUN StarOffice:
Basic Programmer's Guide StarOffice. 6.0 – 817-1826-10.pdf
StarOffice 7 Office Suite Basic Programmer's Guide – 817-1826.pdf
StarOffice 8 Programming Guide for BASIC – 819-0439.pdf

On-line dokumentácia OpenOffice.org – wiki.services.openoffice.org/wiki/Documentation
On-line dokumentácia OpenOffice.org Basic – wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide

PDF verzia šiestej časti seriálu o makrách v OpenOffice.org: makra_v_ooo_6.pdf
(MD5 súčet: E54BE4C31C860F7F6C02B2CBF97AFC4B)

Neprehliadnite: