Systémové otváranie externých súborov v OpenOffice.org

Július Pastierik  /  15. 12. 2010, 09:02

Potrebujete v makrách OpenOffice.org otvárať externé súbory pomocou aplikácií, ktoré sú s nimi asociované? Ukážme si jednoduché makro, pomocou ktorých dokážete otvárať odkazy na internetové stránky v internetovom prehliadači.

Pri niektorých makrách požadujeme, aby sme v nich dokázali otvoriť súbor v tej aplikácii, pre ktorú je určený. Ako typický príklad môžeme uviesť html stránky či mailové adresy, ktoré chceme otvárať v internetovom prehliadači či poštovom klientovi. Na takéto účely stačí, ak si naprogramujeme jednoduché makro, ktoré spustí systémového správcu súborov, ktorý to už potom urobí za nás.

A aby sme si uviedli praktický príklad viacnásobného využitia, ukážeme si toto makro v rozšírení, pomocou ktorého dokážeme z prostredia OpenOffice.org pristupovať na stránky OpenOffice.czOpenOffice.org Extensions. Pravdaže, pre praktické použitie je najvhodnejšie, ak si jednotlivé funkcie zakomponujete napr. do menu OpenOffice.org.

A, aby sme ukázali širšie možnosti, medzi funkciami budú aj funkcie pre vyhľadávanie na príslušných internetových stránkach a, samozrejme, pokiaľ budú tieto funkcie spustené z prostredia OpenOffice.org Writer, automaticky doplníme aj vyhľadávaný text.

REM Procedúra pre "systémové" otvorenie súboru (spustí sa príslušný editor), internetovej stránky (spustí sa prehliadač) ...

sub OtvorSubor(subor as string)

 dim oSpusti as object

 oSpusti=createUnoService("com.sun.star.system.SystemShellExecute")

 oSpusti.execute(subor, "", 0)

end sub



REM Funkcia, ktorá vráti označený reťazec alebo slovo, na ktorom sa nachádzame (pokiaľ sme v textovom dokumente)

function DajRetazec as string

 dim sRetazec as string

 dim oViditelnyKurzor, oAktualnyText, oAktualnyKurzor

 sRetazec=""



 if ThisComponent.supportsService("com.sun.star.text.TextDocument") then ' Ak sme v textovom dokumente

  vyber=ThisComponent.getCurrentSelection() ' aktualny vyber

  if vyber.getCount() > 0 then

   sRetazec= trim(vyber.getByIndex(0).getString()) ' riadok z vyberu

  endif

  if sRetazec="" then ' Ak je reťazec prázdny, vyberieme slovo, na ktorom sa nachádzame

   oViditelnyKurzor=ThisComponent.getCurrentController().getViewCursor() ' Viditeľný kurzor

   oAktualnyText=ThisComponent.getText() ' Aktuálny text

   oAktualnyKurzor=oAktualnyText.createTextCursorByRange(oViditelnyKurzor.getStart()) ' Vytvoríme nový kurzor (s pozíciou na viditeľnom kurzore), aby sme neoznačovali "viditeľne"

   if not oAktualnyKurzor.isStartOfWord then oAktualnyKurzor.gotoStartOfWord(false) ' Ak nie sme, tak skočíme na začiatok slova

   oAktualnyKurzor.gotoEndOfWord(true) ' Označíme aktuálne slovo

   sRetazec=oAktualnyKurzor.string

   oAktualnyKurzor.collapseToEnd() ' Zrušíme označenie

  endif

 endif

 DajRetazec=sRetazec

end function



REM Vlastné funkcie pre otváranie príslušných stránok



REM Odkazy na OpenOffice.cz

sub ooo_ooo

 OtvorSubor("http://www.openoffice.cz/")

end sub



sub ooo_ooo_Hladaj

 OtvorSubor("http://www.openoffice.cz/search.php?action=results&query=" & DajRetazec & "&x=7&y=9")

end sub



REM Odkazy na návody OpenOffice.cz

sub ooo_navody

 OtvorSubor("http://www.openoffice.cz/navody")

end sub



sub ooo_navody_Writer

 OtvorSubor("http://www.openoffice.cz/navody/writer")

end sub



sub ooo_navody_Calc

 OtvorSubor("http://www.openoffice.cz/navody/calc")

end sub



sub ooo_navody_Impress

 OtvorSubor("http://www.openoffice.cz/navody/impress")

end sub



sub ooo_navody_Draw

 OtvorSubor("http://www.openoffice.cz/navody/draw")

end sub



sub ooo_navody_Base

 OtvorSubor("http://www.openoffice.cz/navody/base")

end sub



sub ooo_navody_Serialy

 OtvorSubor("http://www.openoffice.cz/navody/serialy")

end sub



sub ooo_navody_Nastaveni

 OtvorSubor("http://www.openoffice.cz/navody/nastaveni")

end sub



REM Odkazy na wiki OpenOffice.cz

sub ooo_wiki

 OtvorSubor("http://wiki.openoffice.cz/")

end sub



sub ooo_wiki_Writer

 OtvorSubor("http://wiki.openoffice.cz/wiki/Kategorie:Writer")

end sub



sub ooo_wiki_Calc

 OtvorSubor("http://wiki.openoffice.cz/wiki/Kategorie:Calc")

end sub



sub ooo_wiki_Impress

 OtvorSubor("http://wiki.openoffice.cz/wiki/Kategorie:Impress")

end sub



sub ooo_wiki_Draw

 OtvorSubor("http://wiki.openoffice.cz/wiki/Kategorie:Draw")

end sub



sub ooo_wiki_Base

 OtvorSubor("http://wiki.openoffice.cz/wiki/Kategorie:Base")

end sub



sub ooo_wiki_Tipy

 OtvorSubor("http://wiki.openoffice.cz/wiki/Kategorie:Tipy_a_triky")

end sub



sub ooo_wiki_Hladaj

 OtvorSubor("http://wiki.openoffice.cz/wiki/Speci%C3%A1ln%C3%AD:Search?search=" & DajRetazec & "&fulltext=Hledat")

end sub



REM Odkazy na fórum OpenOffice.cz

sub ooo_forum

 OtvorSubor("http://forum.openoffice.cz/")

end sub



sub ooo_forum_Writer

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=3")

end sub



sub ooo_forum_Calc

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=4")

end sub



sub ooo_forum_Impress

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=6")

end sub



sub ooo_forum_Draw

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=7")

end sub



sub ooo_forum_Base

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=5")

end sub



sub ooo_forum_Dalsi

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=8")

end sub



sub ooo_forum_Slovniky

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=15")

end sub



sub ooo_forum_Ziskat

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=14")

end sub



sub ooo_forum_Instalace

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=16")

end sub



sub ooo_forum_Pripomienky

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=9")

end sub



sub ooo_forum_Chyba

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=10")

end sub



sub ooo_forum_Propagovat

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=11")

end sub



sub ooo_forum_Ine

 OtvorSubor("http://forum.openoffice.cz/viewforum.php?id=12")

end sub



sub ooo_forum_Hladaj

 dim spom as string

 spom=DajRetazec

 if spom="" then

  OtvorSubor("http://forum.openoffice.cz/search.php")

 else

  OtvorSubor("http://forum.openoffice.cz/search.php?action=search&keywords=" & spom & "&author=&forum=-1&search_in=all&sort_by=0&sort_dir=DESC&show_as=topics&search=Odeslat")

 endif

end sub



REM Odkazy na doplnky OpenOffice.cz

sub ooo_doplnky

 OtvorSubor("http://www.openoffice.cz/doplnky")

end sub



sub ooo_doplnky_Writer

 OtvorSubor("http://www.openoffice.cz/doplnky/writer")

end sub



sub ooo_doplnky_Calc

 OtvorSubor("http://www.openoffice.cz/doplnky/calc-1")

end sub



sub ooo_doplnky_Impress

 OtvorSubor("http://www.openoffice.cz/doplnky/impress")

end sub



sub ooo_doplnky_Draw

 OtvorSubor("http://www.openoffice.cz/doplnky/draw")

end sub



sub ooo_doplnky_Base

' OtvorSubor("http://www.openoffice.cz/doplnky/base")

end sub



sub ooo_doplnky_Ostatni

 OtvorSubor("http://www.openoffice.cz/doplnky/ostatni")

end sub



sub ooo_doplnky_Materialy

 OtvorSubor("http://www.openoffice.cz/doplnky/propagacni-materialy")

end sub



Rem Odkazy na extensions.services.openoffice.org

sub extensions_extensions

 OtvorSubor("http://extensions.services.openoffice.org/")

end sub



sub extensions_writer

 OtvorSubor("http://extensions.services.openoffice.org/en/taxonomy/term/49")

end sub



sub extensions_calc

 OtvorSubor("http://extensions.services.openoffice.org/en/taxonomy/term/64")

end sub



sub extensions_impress

 OtvorSubor("http://extensions.services.openoffice.org/en/taxonomy/term/43")

end sub



sub extensions_draw

 OtvorSubor("http://extensions.services.openoffice.org/en/taxonomy/term/230")

end sub



sub extensions_base

 OtvorSubor("http://extensions.services.openoffice.org/en/taxonomy/term/308")

end sub



sub extensions_dictionary

 OtvorSubor("http://extensions.services.openoffice.org/en/dictionary")

end sub



sub extensions_dictionary_czech

 OtvorSubor("http://extensions.services.openoffice.org/project/dict-cs")

end sub



sub extensions_dictionary_slovak

 OtvorSubor("http://extensions.services.openoffice.org/project/dict-sk")

end sub



sub extensions_hladaj

 OtvorSubor("http://extensions.services.openoffice.org/en/search/node/" & DajRetazec)

end sub



REM Odkazy na FAQ OpenOffice.cz

sub ooo_FAQ

 OtvorSubor("http://www.openoffice.cz/faq")

end sub



REM Odkazy na stiahnutie OpenOffice.cz

sub ooo_stiahnut

 OtvorSubor("http://www.openoffice.cz/stahnout")

end sub



REM Odkaz na "O tomto doplňku"

sub about_ooo_menu

 OtvorSubor("http://www.openoffice.cz/doplnky/openoffice-cz")

end sub

Neprehliadnite: